Fra*_*c M 6 caching x86-64 cpu-architecture cpu-cache mesi
这是关于跨不同层的缓存一致性协议cache。我的理解(X86_64)L1是,它由一个核心独占,L2介于两个核心之间,并且L3适用于一个CPU插槽中的所有核心。我已经阅读了MESI协议功能,关于存储缓冲区、无效队列、无效消息等。我的疑问是,它仅MESI适用于L1还是适用于L2并且L3也适用。L2或者 for和之间是否有不同的缓存同步L3。
高速缓存级别的数量、每个级别相对于系统中的其他处理器或内核的组织方式以及每个高速缓存中实现的一致性协议由核心微体系结构、非核心微体系结构以及在某些情况下相关的引导定义。时间配置选项。这些设计方面因供应商和处理器代数以及同一代内的型号而异。即使您只考虑过去几年发布的处理器,也有很多不同的设计。
Intel 和 AMD 始终清楚地记录了缓存层次结构的组织。然而,一致性协议并不总是有明确的记录。您不会在任何官方文档中找到直接告诉您缓存使用的所有协议的部分。某些硬件性能事件名称暗示了事件适用的缓存中使用的一致性协议。
The instruction cache (L1I) always uses the SI protocol because a line is never modified between the point of fill and the point of invalidation. So an entry can either be in the S or I state. The M and E states are only relevant and the cache supports modifying an existing line.
Some microarchitectures have caches that only support the write-through write hit policy. For example, the L1D in the AMD Bulldozer is a write-through cache. The M state doesn't make sense in a write-through cache. This means that the L1D either uses SI or ESI. SI is more likely because it requires only a single bit of state per entry.
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 状态目录来跟踪哪些行属于封装外 IOH。内存目录协议在 Westmere-EX 中发生了更改,然后在 Xeon E5 中再次更改,在 Xeon E5/E7 v2 中再次更改,在 Xeon E5/E7 v3 中再次更改。这些处理器还支持 L3 缺失场景中的多种一致性协议,并进行不同的权衡。
我不知道还能说什么来回答你的问题。我猜你可能会说MESI或多或少适用于L2和L3。
| 归档时间: |
|
| 查看次数: |
1229 次 |
| 最近记录: |