现代 Intel CPU L3 缓存是如何组织的?

问题描述 投票:0回答:2

考虑到 CPU 现在是多核的,并且有自己的 L1/L2 缓存,我很好奇 L3 缓存是如何组织的,因为它是由多个核心共享的。我可以想象,如果我们有 4 个核心,那么 L3 缓存将包含 4 页的数据,每个页面对应于特定核心正在引用的内存区域。假设我的观点是正确的,那么就目前情况而言吗?例如,它可以将每个页面划分为子页面。这样,当多个线程在同一核心上运行时,每个线程都可以在其中一个子页面中找到其数据。我只是突然想到这个,所以我非常有兴趣了解幕后真正发生的事情。谁能分享他们的见解或为我提供一个链接来治愈我的无知?

提前非常感谢。

cpu intel cpu-cache
2个回答
9
投票

单插槽芯片中有单个(切片)L3 缓存,以及多个 L2 缓存(每个真实物理核心一个)。 L3 缓存以 64 字节大小的段(缓存行)缓存数据,并且 L3 和不同的 L2/L1 之间(以及 NUMA/ccNUMA 多插槽系统中的多个芯片之间)有特殊的“缓存一致性协议”;它跟踪哪个缓存行是实际的,哪个缓存行在多个缓存之间共享,哪个缓存行刚刚被修改(并且应该从其他缓存中失效)。一些协议(缓存行可能的状态和状态转换):https://en.wikipedia.org/wiki/MESI_protocolhttps://en.wikipedia.org/wiki/MESIF_protocolhttps:// en.wikipedia.org/wiki/MOESI_protocol 在较旧的芯片(Core 2 时代)中,缓存一致性在共享总线上被

监听

,现在在目录的帮助下进行检查。 现实生活中,L3 不只是“单个”,而是被分成多个片,每个片都有高速接入端口。有一些基于物理地址选择片的方法,允许多核系统在每个时刻进行多次访问(每次访问将通过

未记录的方法

定向到某个片;当两个核使用相同的物理地址时,它们的访问将由相同切片或将执行缓存一致性协议检查的切片提供服务)。 有关 L3 缓存切片的信息在几篇论文中被颠倒了:

    https://cmaurice.fr/pdf/raid15_maurice.pdf
  • 使用性能计数器对英特尔末级缓存复杂寻址进行逆向工程
  • https://eprint.iacr.org/2015/690.pdf
  • 英特尔处理器中缓存切片选择的系统逆向工程
  • https://arxiv.org/pdf/1508.03767.pdf
  • 破解Intel Sandy Bridge的缓存哈希函数
  • 使用最新的芯片,程序员能够在应用程序“缓存分配技术”(v4 系列)之间对 L3 缓存进行分区:
https://software.intel.com/en-us/articles/introduction-to-cache-allocation-technology

https://software.intel.com/en-us/articles/introduction-to-code-and-data-prioritization-with-usage-models https://danluu.com/intel-cat/ https://lwn.net/Articles/659161/


0
投票
并且具有包容性

。除了 Xeon-Scalable (Skylake) 及更高版本之外,它们具有 9 个(非包含非独占)L3 缓存。这对于较大的每核 L2 缓存更有意义,其总大小是 L3 的很大一部分。 另请参阅

http://www.realworldtech.com/nehalem/2/

至少从 SnB 开始,每个核心都有 L3 的一部分,并且它们位于环形总线上。因此,即使在大型 Xeon 中,L3 尺寸也与核心数量成线性比例。

另请参阅

英特尔酷睿 i7 处理器使用哪种缓存映射技术?我在那里写了一个更大、更完整的答案。

PS:AMD Zen 将 L3 缓存组织为 4 或 8 个核心组(一个核心复合体 = CCX),共享一个 L3,但在具有更多核心的系统中为单独的 CCX 提供单独的 L3。因此,就拥有多个独立的 L3 缓存而言,它就像一个多插槽系统。

根据

https://en.wikichip.org/wiki/amd/microarchitectures/zen_2#Core_Complex

-Zen 2 的 L3 缓存是 L2 驱逐的受害者缓存,并且大多数时候不包括 L2 缓存。但不严格地说:它可以挂载由多个内核或指令获取访问的数据。 (多个线程可能运行相同的指令,因此为 I-cache 未命中填充 L3 是有意义的。)我还没有检查其他 Zen 版本的详细信息。较旧的 AMD CPU 也经常使用独占缓存。

© www.soinside.com 2019 - 2024. All rights reserved.