3

这是关于跨不同层的缓存一致性协议cache。我的理解(X86_64)L1是,它由一个核心专有,L2位于两个核心之间,L3适用于 CPU 插槽中的所有核心。我已经阅读了MESI关于存储缓冲区、无效队列、无效消息等的协议功能。我的疑问是它仅MESI适用于L1或者它也适用于L2L3。或者在 forL2L3.

4

1 回答 1

2

缓存级别的数量、每个级别相对于系统中其他处理器或内核的组织方式以及在每个缓存中实现的一致性协议由核心微架构、非核心微架构以及在某些情况下相关的引导定义定义。时间配置选项。这些设计方面因供应商和处理器代以及同一代内的型号而异。即使您仅考虑过去几年发布的处理器,也有很多不同的设计。

Intel 和 AMD 始终清楚地记录缓存层次结构的组织。然而,一致性协议并不总是清楚地记录在案。您不会在任何官方文档中找到直接告诉您缓存使用的所有协议的部分。一些硬件性能事件名称暗示了在事件应用的缓存中使用了什么一致性协议。

指令高速缓存 (L1I) 始终使用 SI 协议,因为在填充点和失效点之间永远不会修改行。因此,条目可以处于 S 或 I 状态。M 和 E 状态仅相关,并且缓存支持修改现有行。

一些微架构具有仅支持直写式写入命中策略的缓存。例如,AMD Bulldozer 中的 L1D 就是一个直写缓存。M 状态在直写缓存中没有意义。这意味着 L1D 使用 SI 或 ESI。SI 更有可能是因为每个条目只需要一个状态位。

Intel 处理器几乎总是支持所有数据和统一缓存中的回写策略。具有两级高速缓存的旧 Intel 处理器(90 年代和 2000 年代初期)使用 MESI 作为 L1D 和 L2。具有三级缓存的英特尔处理器也将 MESI 用于 L1D 和 L2。四个状态可用的事实并不一定意味着所有状态都在使用。其物理地址位于具有直写 (WT) 内存类型的区域内的高速缓存行不使用 M 状态。(有可能类型从 WB 更改为 WT,因此第一个 WT 访问可能会在 M 中命中。)因此,WT 线路的有效协议是 ESI 或 SI。

从 Nehalem-EX 开始的 Intel 处理器中的 L3 缓存使用 MESIF 协议,其中包含整个 NUMA 节点的包含目录(在命中时使用)。Nehalem-EX 还使用内存中的 2-state 目录来跟踪哪些行由外包装 IOH 拥有。内存目录协议在 Westmere-EX 中发生了更改,然后在 Xeon E5 中再次更改,在 Xeon E5/E7 v2 中再次更改,在 Xeon E5/E7 v3 中再次更改。这些处理器还支持 L3-miss 场景中的多种一致性协议,但需要权衡取舍。

我不知道还能说什么来回答你的问题。我想你可以说 MESI 或多或少适用于 L2 和 L3。

于 2021-03-22T19:14:58.447 回答