Ane*_*ran 9 compiler-construction processor microprocessors riscv
在浏览RISC-V ISA时,我在内存模型部分(FENCE指令)中看到了一条指令.这究竟是什么意思?
Cra*_*son 11
RISC-V ISA使用宽松的内存模型,其中一个线程执行的加载和存储的顺序在被另一个线程看到时可能不同.这样做是为了使技术能够提高内存系统性能.
例如,线程1可以执行:
但是线程2可以看到与第一个线程无关的负载和存储:
FENCE确保在围栅之后的任何操作之前观察围栏之前的所有操作.所以,如果上述内容改为:
线程1:
然后线程2将保证在存储到C之前看到A和存储到B的加载,但仍然可以在加载A之前看到存储到B.
线程2:
来源:http://riscv.org/download.html(用户级ISA Spec v2.0第19页)
小智 -1
我发现一种情况,使用 FENCE 指令是必要的。例子: