RISC-V采用的是 RISC-V Weak Memory Ordering (RVWMO)模型,对存储操作的执行顺序限制较少,为了保证一致性需要特殊的指令来规范存储操作的执行顺序。顾名思义,FENCE指令犹如一道屏障,把前面的存储操作和后面的存储操作隔离开来,前面的决不能到后面再执行,后面的决不能先于FENCE前的指令执行。FENCE指令带参数标志隔开...
简单来说,假如存在自修改指令(程序自身修改了指令的指令码),在引入icache的情况下就可能会出现icache中的数据和内存中数据不一致的情况,而fence.i指令确保了从icache中取到的值是的新值。 一个重要的点是:RISC-V允许icache中的副本在某些时刻与内存不一致:假如有自修改指令,硬件并不会直接写icache,而是会正常...