“其他处理器以一致的顺序看到两个存储区”是什么意思?

问题描述

在英特尔手册中:

部分:“ 8.2.2 P6和更新的处理器家族中的内存顺序”

除了执行存储的处理器之外,处理器会以一致的顺序查看任何两个存储

这句话是什么意思?

解决方法

这意味着不对IRIW进行重新排序(独立读者,独立作家;至少4个独立的内核,每个作者和读者至少2个)。 2位读者将永远同意在其他2个商店中执行其他核心的顺序。

较弱的内存模型不保证这一点,例如ISO C ++ 11仅对seq_cst操作而不是acq_rel或任何较弱的阶数保证。 / p>

一些硬件内存模型允许在纸上使用它,包括ARMv8之前的ARM。但是实际上,这是非常罕见的,POWER硬件实际上可以在实践中违反此规定:请参阅我的答案Will two atomic writes to different locations in different threads always be seen in the same order by other threads?,以了解可以实现这一目标的硬件机制(同一物理核心上的SMT“超线程”之间的存储转发)在全局可见之前,某些核心才可见的商店。

x86禁止这种情况,因此超线程之间的通信必须等待提交给L1d缓存,即在其他 any 之前等待存储在全局可见(感谢MESI)。核心可以看到它。 What will be used for data exchange between threads are executing on one Core with HT?