【发布时间】:2020-03-18 13:59:34
【问题描述】:
据我所知,内存屏障用于避免out-of-order execution。然而,在谈到缓存一致性时,也经常提到内存屏障。我不确定这两个概念是如何联系起来的,因为 - 根据我的发现 - 缓存一致性应该已经通过各种协议在硬件级别得到保证,例如梅西等。使用内存屏障防止乱序执行是否是另一种(手动)授予缓存一致性的方法?
【问题讨论】:
-
简单的回答,无需深入了解实现细节,就是乱序 CPU 可以按照与程序顺序不同的顺序访问缓存。缓存一致性协议无法将这些访问重新置于程序顺序中,但内存屏障可以阻止它们从一开始就脱离程序顺序。
标签: multithreading assembly cpu-architecture cpu-cache memory-barriers