内存排序指令对x86 / x86_64多个套接字的影响

时间:2016-05-18 16:38:28

标签: caching multiprocessing x86-64 memory-model

尝试在英特尔64 / IA-32中寻找这个问题的答案,但无法找到明确的答案。问题是:内存排序指令(例如SFENCE)是否仅对本地处理器有影响,还是扩散到整个缓存一致性域,例如相邻套接字上的CPU(在多插槽系统中)?

1 个答案:

答案 0 :(得分:1)

SFENCE会影响本地CPU存储对同一套接口和其他套接字上的其他内核或内存映射I / O全局可见的顺序。

其他核心无法判断您是否运行SFENCE,他们可以观察到的只是内存操作的顺序。 (即sfence的实现是内核及其存储队列。)

在第一个多核CPU之前,在PE中引入了

sfence。那时,唯一的SMP系统是多插座的。

另请注意,它只对弱排序存储(movnt*或存储区域写入组合存储区域有用)。正常商店已经在x86上"release" semantics了。只有mfence(和lock ed指令)对x86上的正常内存操作很重要,to prevent StoreLoad reordering