【发布时间】:2015-01-23 08:17:16
【问题描述】:
MESI(修改、独占、共享、无效)协议用于 CPU 缓存进行通信并确保它们都使用缓存行的最新值。当一个 CPU 修改一个缓存行的值时,订阅该缓存行的所有其他 CPU 都会在缓存行发生更改时保持警报。
但是,在我阅读的所有有关 MESI 的文献中,我没有看到在协议通信时是否存在任何性能成本?这个成本是否只是 x86 LOCK 前缀成本的一部分?我相当确定即使 x86 LOCK 前缀不是,也可以使用 MESI?
NB Intel 实际上使用 MESIF 协议 - 其中 F 是附加的“转发”状态。
【问题讨论】:
-
仅在执行原子指令时才需要缓存一致性协议的假设是错误的。性能受到的影响在很大程度上取决于情况。但是一个众所周知的缓存一致性协议对性能的影响的例子是false sharing
-
这太宽泛了,你有很多类型的缓存类型(不同的参数,如包容性、WB/WT、私有/共享等),以及许多类型的 MESI 风格,有时甚至是多种类型同一个CPU。你问的是哪一个?您想检查什么替代方案作为基线?
标签: multithreading x86 cpu-architecture cpu-cache mesi