缓存大小和访问延迟之间是否存在对应关系?在所有其他条件相同的情况下,更大的缓存是否运行更慢?如果是这样,为什么?慢多少?
缓存大小和访问延迟之间是否存在对应关系?
您手中的物品比口袋里的物品更容易取用,口袋里的物品比橱柜中的物品取用更快,比 Digikey 的物品取用更快。我列出的每种连续类型的存储都比前一种更大但速度更慢。
所以,让我们两全其美,让您的双手像 Digikey 仓库一样大!不,它不起作用,因为现在它们不再是真正的手了。他们是一个让你失望的炮弹。
较大的存储访问速度较慢的原因是距离。平均而言,更大的存储空间离您更远。对于物理项目和 RAM 都是如此。
计算机内存占用物理空间。出于这个原因,更大的内存在物理上更大,并且该内存中的某些位置将在物理上更远。由于速度限制,距离较远的东西需要更长的时间才能访问。对于你的口袋和 Digikey,速度限制是你手臂的速度,以及高速公路的速度限制。
在 RAM 的情况下,速度限制是电信号的传播速度、门和驱动器的传播延迟以及同步时钟的常见使用。即使金钱不是问题,并且您可以随心所欲地购买当今可用的最快 RAM 技术,您也无法从中受益。如果您愿意,可以布置一张 A4 大小的 L1 高速缓存,并将您的 CPU 放在中间。当 CPU 想要访问位于内存角落的某个内存时,从字面上看,请求到达那里需要一纳秒,而返回则需要一纳秒。这还不包括通过门和驱动器的所有传播延迟。这将严重减慢您的 3GHz CPU。
由于同步逻辑比异步逻辑更容易设计,因此 RAM 的一个“块”将使用相同的时钟进行计时。如果想让整个内存成为 L1 缓存,那么您必须使用慢速时钟来为整个内存提供时钟,以应对内存中最远位置的最坏情况时序。这意味着远程内存位置现在阻碍了本地内存位置,而本地内存位置本来可以更快。因此,最好的办法是对内存进行分区。缓存中最近和最小的部分将使用最快的时钟。下一个最近和最小的部分将使用稍慢的时钟,等等。
现在你有了 L1 & L2 缓存和 RAM。
这给我们带来了下一个原因,功耗。
缓存实际上会消耗大量电力。不仅是内存本身,还有围绕它的所有逻辑,这些逻辑处理高速缓存行和主内存之间的映射。增加这个额外逻辑的性能会导致功耗增加。现在,对于某些应用程序(移动、嵌入式),您更有动力保持较小的缓存。
请参阅Cache Design Trade-offs for Power and Performance Optimization:A Case Study(Ching-Long Su 和 Alvin M. Despain,1995 年)。
撇开所有经济/性能/功耗因素,您的问题的答案是:它取决于许多微观架构因素。
作为示例,请参阅此参考- 所有被测处理器的测量 L1 访问延迟为 4 个时钟周期。处理器的频率几乎相同,但 L1 缓存的大小相差高达 3 倍。
在上述测试中,跨多个不同处理器的 L1 持续延迟的原因在于缓存的微架构:缓存访问本身(从内存中检索数据)只需要一个时钟周期。额外的三个周期用于解码访问,检查数据是否存在等等......附加阶段的数量在测试中的处理器之间是相同的,因此访问延迟是相同的。
尽管有上述示例,但不应得出缓存延迟与缓存大小无关的结论。如果有人试图实现一个大得离谱的 L1 缓存,那么执行缓存读取所需的所有操作的逻辑也会变得很大。在某些时候,通过所有这些逻辑的传播延迟会太长,并且之前只需要一个时钟周期的操作将不得不分成几个时钟周期。这会增加延迟。
假设所讨论的缓存是在 SRAM 中实现的,受缓存大小影响最大的模块是:行解码器和多路复用器。然而,即使是非常大的高速缓存,即使是感应放大器也会受到影响:由于较高的电容,位线上的较小电压摆幅将需要“更强”的感应放大器。据说,对逻辑速度最严重的影响将是导线互连电容——该电容对 SRAM 大小的线性依赖性不止于此。确切的细节是特定于实现的。
现在,L1 缓存的延迟非常稳定,因为它们的性能是最关键的。如果您尝试分析 L2 和 L3 缓存,情况会复杂很多。
当您考虑多核处理器时,情况会变得更加复杂——它们有额外的逻辑来确保缓存一致性。这导致了一个影响缓存访问延迟的附加因素:所有内核的内存访问历史。
概括
如您所见,您的问题远非微不足道,无法完全回答。但是,如果您考虑经济和性能更优的缓存,那么我会说它们的大小不会以任何明显的方式影响延迟。
对于感兴趣的读者:
该参考资料对现代 CPU 的性能因素进行了非常深入的分析。里面有很多缓存相关的资料。需要对计算机体系结构和微体系结构原理有深入的了解(或者 - 对成为该领域专业人士需要了解的主题进行很好的总结)。
CPU 缓存测试工程师在这里 - 评论中的 Dave Tweed 有正确的解释。高速缓存的大小可在 CPU 的预期价格点上最大限度地提高性能。缓存通常是芯片空间的最大消耗者,因此它的大小会产生很大的经济(和性能)差异。
看看英特尔的 Ivy Bridge CPU 系列页面: http ://ark.intel.com/products/codename/29902/Ivy-Bridge
高端 Xeon 配备 30MB 缓存,有 12 个内核,售价约 2700 美元。具有 3MB 缓存的低端 i3 (i3-3217) 整台笔记本电脑的成本仅为 500 美元(我无法单独找到它)。
Xeon 提供了终极性能,但制造和测试成本也更高。i3 便宜得多,但代价是芯片尺寸更小,其中缓存是最大的部分。