在浏览RISC-V ISA时,我在内存模型部分看到了一条指令(FENCE指令)。它究竟意味着什么?
答案 0 :(得分:10)
RISC-V ISA使用宽松的内存模型,其中一个线程执行的加载和存储的顺序在被另一个线程看到时可能不同。这样做是为了使技术能够提高内存系统性能。
例如,线程1可以执行:
但是线程2可以看到与第一个线程无关的负载和存储:
FENCE确保在围栅之后的任何操作之前观察围栏之前的所有操作。因此,如果上述内容改为:
主题1:
然后,线程2将保证在存储到C之前看到A和存储到B的加载,但仍然可以在加载A之前看到存储到B.
主题2:
来源:http://riscv.org/download.html(用户级ISA规范v2.0第19页)
答案 1 :(得分:1)
我发现只需要一个使用FENCE指令的情况。 例如: