尝试在英特尔64 / IA-32中寻找这个问题的答案,但无法找到明确的答案。问题是:内存排序指令(例如SFENCE)是否仅对本地处理器有影响,还是扩散到整个缓存一致性域,例如相邻套接字上的CPU(在多插槽系统中)?
答案 0 :(得分:1)
SFENCE
会影响本地CPU存储对同一套接口和其他套接字上的其他内核或内存映射I / O全局可见的顺序。
其他核心无法判断您是否运行SFENCE
,他们可以观察到的只是内存操作的顺序。 (即sfence
的实现是内核及其存储队列。)
sfence
。那时,唯一的SMP系统是多插座的。
另请注意,它只对弱排序存储(movnt*
或存储区域写入组合存储区域有用)。正常商店已经在x86上"release" semantics了。只有mfence
(和lock
ed指令)对x86上的正常内存操作很重要,to prevent StoreLoad reordering。