【发布时间】:2021-06-18 05:31:28
【问题描述】:
这是关于cache 不同层的缓存一致性协议。我对L1 的理解(X86_64)是,它由一个核心专有,L2 位于两个核心之间,L3 用于一个 CPU 插槽中的所有核心。我已经阅读了MESI 协议功能,关于存储缓冲区、无效队列、无效消息等。我的疑问是MESI 仅适用于L1,或者它适用于L2 和L3好吧。或者L2和L3之间是否有不同的缓存同步。
【问题讨论】:
-
是的,父/子缓存之间的“一致性”不同于兄弟缓存之间的“一致性”。例如在具有包容性 L3 的 Intel CPU 中,L3 标签充当“目录”来跟踪哪个内核可能具有处于共享与独占/修改状态的行的副本。 Which cache mapping technique is used in intel core i7 processor?(因此,即使在每核私有缓存之间,它也不是具有共享总线的简单经典 MESI。)
-
可能相关:what's L3$ role part in MESI protocal / What cache coherence solution do modern x86 CPUs use? / Cache coherence- MESI protocol。 (事实证明,这些主要是我的答案;我认为其他一些用户已经写了一些!)
-
MESI 实际上只是指缓存块可以处于的稳定状态,而不是协议、拓扑或实现的细节。如果您想全面了解各种配置的不同缓存控制器上可用的状态和操作,请查看A Primer on Memory Consistency and Cache Coherence, Second Edition,尤其是第 8 章。
标签: caching x86-64 cpu-architecture cpu-cache mesi