mb|IBM,预言了缓存的未来?( 三 )


这个概念是L2缓存不仅仅是L2缓存。
从表面上看,每个 L2 缓存确实是每个核心的私有缓存,而32MB是非常巨大的。但是,当需要从 L2 逐出缓存行时,无论是处理器有意还是需要腾出空间,而不是简单地消失,它会尝试在芯片上的其他地方寻找空间。如果它在不同内核的 L2 中找到一个空间,它就会坐在那里,并被标记为 L3 缓存线。
IBM 在这里实施的是存在于私有物理缓存中的共享虚拟缓存的概念。这意味着 L2 缓存和 L3 缓存成为相同的物理事物,并且缓存可以根据工作负载的需要包含来自所有不同内核的 L2 和 L3 缓存线的混合。这对于租户不需要完整 CPU 的云服务(是的,IBM 在其云中提供 IBM Z)或不能完全跨内核扩展的工作负载变得很重要。
这意味着具有 8 个私有 32 MB L2 缓存的整个芯片也可以被视为具有 256 MB 共享“虚拟”L3 缓存。在这种情况下,考虑消费领域的等效情况:AMD 的 Zen 3 小芯片具有 8 个内核和 32 MB 的 L3 缓存,每个内核只有 512 KB 的私有 L2 缓存。如果它实现了像 IBM 这样更大的 L2/虚拟 L3 方案,我们最终会得到每个核心 4.5 MB 的私有 L2 缓存,或者每个小芯片 36 MB 的共享虚拟 L3。
这种 IBM Z 方案有一个优势,如果一个核心恰好需要位于虚拟 L3 中的数据,而该虚拟 L3 线路恰好位于其私有 L2 中,那么 19 个周期的延迟比共享的低得多。物理 L3 缓存将是(~35-55 个周期)。然而,更有可能的是,所需的虚拟 L3 高速缓存线位于不同内核的 L2 高速缓存中,IBM 表示,在其具有 320 GB/s 带宽的双向环互连中,这会导致平均 12 纳秒的延迟。5.2 GHz 下的 12 纳秒约为 62 个周期,这将比物理 L3 缓存慢,但更大的 L2 应该意味着 L3 使用的压力更小。但也因为 L2 和 L3 的大小是如此灵活和大,根据工作负载,整体延迟应该更低,工作负载范围应该增加。
但IBM的设计优势远不止于此。我们必须更深入地探讨。
对于IBM Telum,我们在一个封装中有两个芯片,一个单元中有四个封装,一个系统中有四个单元,总共有32个芯片和256个内核。IBM 没有使用外部 L4 缓存芯片,而是更进一步,使每个私有 L2 缓存也可以容纳相当于虚拟 L4 的缓存。
这意味着如果一个缓存线从一个芯片上的虚拟 L3 中被逐出,它会去寻找系统中的另一个芯片来生存,并被标记为虚拟 L4 缓存线。
这意味着,从单核的角度来看,在一个 256 核的系统中,它可以访问:
32 MB 私有二级缓存(19 周期延迟)
256 MB 片上共享虚拟 L3 缓存(+12ns 延迟)
8192 MB / 8 GB 的片外共享虚拟 L4 缓存(+? 延迟)
从技术上讲,从单核的角度来看,这些数字应该是 32 MB / 224 MB / 7936 MB,因为单核不会将 L2 线驱逐到自己的 L2 中并将其标记为 L3,依此类推。
IBM 表示,使用这种虚拟缓存系统,每个内核的缓存相当于 IBM z15 的 1.5 倍,而且还改善了数据访问的平均延迟。总体而言,IBM 声称每个插槽的性能提高了 40% 以上。其他基准目前不可用。
这怎么可能?
在我看来,这就是魔法。当我第一次看到这个时,我对实际发生的事情感到有点惊讶。
在会后的问答环节中,Christian Jacobi 博士(Z 的首席架构师)表示,该系统旨在跟踪缓存未命中的数据,使用广播,并跟踪内存状态位以向外部芯片广播。这些贯穿整个系统,当数据到达时,它确保它可以被使用,并在处理数据之前确认所有其他副本都已失效。在作为活动的一部分的 slack 频道中,他还表示正在进行大量的循环计数!
说实话,像这样的事情有很多工作要做,而且可能仍然有很多考虑要向 IBM 提出关于其操作的考虑,例如有功功率,或者缓存是否在空闲状态下断电,甚至被排除在接受之外完全驱逐以保证单个内核的性能一致性。它让我思考在 x86 领域,甚至消费设备中什么是相关的和可能的。