某些 CPU 上的 L4 缓存是什么?

Mat*_*Mut 6 cpu cache cpu-cache

所有现代多核 CPU 都至少有三级缓存(请参阅为什么我们需要多级缓存?)。

L1 是最快和最小的,L2 的延迟稍大但更大,L3 保存在处理器中所有内核之间共享的数据(甚至更大,甚至更慢)。一切都很好。

然而,谷歌搜索短语“L4 Cache”不会产生空结果。显然有些 CPU 确实包含 L4 缓存(显然 Intel Broadwell i7-5775C 确实有 128MB eDRAM 实现为 L4 缓存)。

有谁知道L4缓存是做什么用的?我找不到任何关于其目的和功能的文档。

Ram*_*und 9

4 级缓存(L4 缓存)是一种链接 CPU 可以访问的 3 级缓存和 CPU 和 GPU 都可以访问的 L4 缓存的方式。

英特尔从 Haswell 微架构开始引入了 4 级封装缓存。4 级缓存使用嵌入式 DRAM (eDRAM),与英特尔的集成 GPU 位于同一封装上。该缓存允许在片上 GPU 和 CPU 之间动态共享内存,并充当 CPU 的 L3 缓存的受害者缓存。

来源: 维基百科 - CPU 缓存

这是 Haswell 和 Broadwell 处理器的当前 eDRAM 表示。在这里,我们看到 eDRAM 由包含在每个内核的 LLC 中的 L4 标签存储访问,因此更像是 L3 的受害者缓存,而不是动态随机存取存储器实现。任何需要来自 eDRAM 的数据的指令或硬件都必须通过 LLC 并进行 L4 标签转换,从而限制了其潜力(尽管通过每链路 50 GB/s 的双向接口加快了某些特定工作负载的速度。

在此处输入图片说明

在 Haswell 和 Broadwell 的整个生命周期中,这种 L4 缓存一直保留在英特尔的微架构中。

在 Skylake 中,eDRAM 排列发生了变化:

在此处输入图片说明

eDRAM 不是充当伪 L4 缓存,而是成为 DRAM 缓冲区,并自动对需要 DRAM 访问的任何软件(CPU 或 IGP)透明。因此,通过系统代理(例如 PCIe 设备或来自芯片组的数据)进行通信并需要 DRAM 中的信息的其他硬件不需要通过处理器上的 L3 缓存导航。

文章补充继续指出:

虽然 eDRAM 的目的是尽可能无缝,但英特尔允许在驱动程序级别进行某种程度的控制,允许大于 L3 的纹理仅驻留在 eDRAM 中,以防止覆盖 L3 中包含的数据而不得不为其他工作负载重新缓存它。

Anandtech - 英特尔 Skylake 移动桌面启动架构