L1/L2 缓存包含在 Intel 中
就缓存包容性而言,英特尔 x86 处理器属于以下类别之一:
- 缓存分为三级。L3 包括 L2 和 L1。L2 是L1的九个(不包含,不排除)。此类别包括以下所有处理器:(1) 实现 Core 微架构的所有客户端处理器,包括 Rocket Lake,但专为客户端细分市场设计的 Core X 和 Xeon W 处理器系列除外。这还包括面向客户端的 Xeon W-10000 系列。(2) 实现核心微架构的所有服务器处理器,包括 BDX,以及 (3) 所有 Xeon E3、Xeon E 和 Xeon W-1200 处理器。
- 有两级缓存。L2 是 L1 的九个。所有 Atom 处理器(包括 Tremont)都属于这一类。所有旧的英特尔处理器(具有两个缓存级别)也属于这里。
- 有两级缓存。L2 包括 L1D 和 L1I 的 NINE。KNL 和 KNM 处理器属于这里。KNC 和 KNF 的可用信息表明 L2 包含 L1,尽管这可能不准确,并且 L2 也可能仅包含这些处理器上的 L1D。MCDRAM 见下文。
- 缓存分为三级。L3 和 L2 都是九。此类别包括以下所有处理器:(1) 所有具有三级缓存的 Pentium 4 处理器,(2) 所有代 Xeon SP 处理器,(3) Xeon D-2100、Skylake Core X 系列处理器、Skylake Xeon W 系列处理器,它们都使用 SKX 非内核而不是 SKL 非内核,以及 (4) All Tiger Lake 处理器。
- Lakefield 处理器具有三级缓存层次结构。4 个 Tremont 内核共享一个 NINE L2,而 Sunny Cove 内核有自己的 9 个 L2。所有 5 个内核共享一个 LLC,该 LLC 可以配置为包容性或 NINE。
一些处理器具有 L4 缓存或内存端缓存。这些缓存是九个。在 KNL 和 KNM 中,如果 MCDRAM 完全或部分配置为在缓存模式下运行,它会被修改为包含 L2(因此也包含 L1),这意味着包含性仅适用于 L2 中的脏行(处于 M 一致性状态) . 在支持 Optane DIMM 的 CSL 处理器上,如果 PMEM DIMM 完全或部分配置为在缓存模式下运行,则 DRAM DIMM 的工作方式如下:
Cascade Lake 处理器使用一种新颖的缓存管理方案,结合使用包含和非包含 DRAM 缓存来减少写入的 DRAM 带宽开销,同时还消除了在从 DRAM 缓存中逐出包含行时管理处理器缓存无效的复杂性。
根据Cascade Lake:下一代英特尔至强可扩展处理器。
KNL/KNM 中的 MCDRAM 缓存和 CSL 中的 DRAM 缓存不属于三个传统包容性类别中的任何一个,即包容性、独占性和 NINE。我认为我们可以将它们描述为具有“混合包容性”。
AMD 处理器:
- 禅家:L2包容,L3是九。
- 推土机系列:L2 为 NINE,L3 为 NINE。
- 捷豹和彪马:L2 是包容性的。没有L3。
- K10 和 Fusion:L2 是独家的。没有L3。
- 山猫:我不知道L2。没有L3。
- K7(型号 3 及更高型号)和 K8:L2 是专有的。没有L3。
- K7(型号 1 和 2)及更早版本:L2 包含在内。没有L3。
现有的 AMD 处理器没有 L4 缓存或 L3 之外的内存端缓存。
威盛处理器:
- Nano C 和 Eden C:我不知道 L2。没有L3。
- 所有较旧的处理器:L2 是专有的。没有L3。
这涵盖了所有当前的威盛处理器。
而 L1 / L2 缓存是 8 路关联性,意味着在一个集合中存在 8 个不同的缓存行。
大多数英特尔处理器都是如此。唯一的例外是 NetBurst 微体系结构,其中单个 L2 方式拥有两个相邻的高速缓存行,统称为扇区。
8 的关联性是典型的,但具有不同关联性的情况并不少见。例如,Sunny Cove 中的 L1D 是 12 路关联的。请参阅:Ice Lake 的 48KiB L1 数据缓存的索引如何工作?.
缓存行作为一个整体操作,这意味着如果我想从缓存行中删除几个字节,则整个缓存行将被删除,而不仅仅是我想要删除的那些字节。我对吗 ?
是的,这是由于与每个缓存级别的每个缓存条目相关联的一致性状态的限制。高速缓存行的所有字节只有一种状态。
系统是否将该缓存行的逐出数据存储在某处(在任何缓冲区、寄存器等中),以便下次它可以从该位置加载数据以减少延迟
有几个因素会影响此决定:(1) 行是否脏,(2) 较高编号的缓存级别的包容性属性,如果有的话,(3) 是否预测该行在不久的将来会被访问, 和 (4) 如果我没记错的话,如果一行的内存类型在它驻留在缓存中时从可缓存变为不可缓存,则无论前面的因素如何,它都会被逐出并且不会缓存在任何其他级别。
因此,适用于所有处理器的懒惰答案是“也许”。