过去几年,英特尔 CPU 已从大容量 L2 缓存转向大容量 L3 缓存。这在很大程度上是因为 CPU 上有更多的内核,并且希望在它们之间共享缓存(L3 优势)。
但是假设我有一个单线程应用程序,并且我想比较在两个具有相同时钟速度的不同 CPU 上运行它的速度:
6MB 的 CPUL2缓存@3.1Ghz(例如Core 2 Duo E8500)
6MB 的 CPUL3缓存@3.1Ghz(例如Core i5 2400)
不考虑涡轮增压效果和更快的 DDR 因素, 看起来第一个(较旧的)CPU 应该运行得更快(因为它更接近核心级别),不是吗?
另一个让我感兴趣的问题是,在过去,在 CPU 中 L2 缓存出现的最初几天,我似乎记得 L2 缓存的访问速度是 CPU 时钟速度的一半,现在情况仍然如此吗?L3 速度又如何呢?
答案1
视情况而定。如果内循环您的程序适合两个 CPU 的 L1 缓存,并且内存速度相同,您不会看到太大的差异。
如果内循环适合 6MB L2 缓存,但不适合具有 6MB L3 缓存的 CPU 的 L2 缓存,则该程序在具有较大 L2 缓存的旧 CPU 上的运行速度会更快。
但一般来说,程序的内循环部分非常少。
答案2
英特尔使用一种称为“智能缓存”的新缓存技术,因此我怀疑现在的型号与几年前的 CPU 之间的任何比较都不是公平的。请记住,我认为“智能缓存”只是英特尔的技术;AMD 使用一种称为“平衡智能缓存”的技术。
维基百科信息:
智能缓存是英特尔发明的用于多个执行核心的 2 级或 3 级缓存方法。它在核心(CPU 核心或 GPU)之间共享缓存。与每个核心的专用缓存相比,当并非所有核心都需要相同数量的缓存空间时,整体缓存未命中率会降低。因此,如果其他核心处于非活动状态,则单个核心可以使用完整的 2 级缓存或 3 级缓存。此外,共享缓存使不同执行核心之间共享内存的速度更快。
答案3
关于问题的第二部分,是的,在某种程度上它仍然是正确的。L1 比 L2 快,而 L3 比 L2 慢。但我不会称之为“半频”,因为 CPU 设计差异很大。
另外我猜测 Core i5 几乎总是会更快,因为缓存大小很重要,但缓存速度和未命中率以及整体 CPU 设计也很重要。