正如我们在 x86 架构上所知道的那样,自动提供了获取-释放一致性——即所有操作自动排序,没有任何栅栏,不包括来自不同位置的第一次存储和下一次加载操作。(如第 34 页 Herb Sutter 所说:https ://onedrive.live.com/view.aspx?resid=4E86B0CF20EF15AD!24884&app=WordPdf&authkey=!AMtj_EflYn2507c )
正如我们所知,当我们通过 FSB写入远程WC 标记的内存时,CPU 使用大小为 64 字节的临时缓冲区 - WCB(写入组合缓冲区)/BIU(总线接口单元)。并且“当 WCB 最终通过 FSB 转储到外部存储器时,数据不一定按照早期程序存储的执行顺序写入内存。” 即我们没有自动获取-释放的一致性——引用自如果我们将内存标记为 WC(Write Combined),那么我们是否有任何自动一致性? 有关详细信息,请参阅第 1080 页上的“WCB FSB 事务”。
但是,如果我们通过 PCI Express写入远程WC 标记的内存会发生什么,当我们使用 MOV 或 SSE 时,我们是否会具有自动获取-释放的一致性?