Intel 软件手册说clwb “将缓存行(如果已修改)写回内存,其中包含使用缓存一致性域中任何级别的缓存层次结构中的内存操作数指定的线性地址。该行可能会保留在缓存层次结构中未修改状态。 clwb 是根据对缓存行的较旧写入进行排序的“
我的问题是,在下面的伪代码中
write(A)
clwb (A)
clwb 是否负责写入存储缓冲区?或者在使用 clwb 之前,我是否需要在写入之后进行 sfence,例如
write (A)
sfence
clwb (A)
我想知道“sfence”是否真的需要?谢谢