缓存大小和访问延迟之间有对应关系吗?


Answers:


5

您手中的物品比口袋中的物品要快,而口袋中的物品比橱柜中的物品要快,比Digikey的物品要快。我列出的每种连续存储类型都比前一种更大,但速度较慢。

因此,让我们两全其美,让您的手像Digikey仓库一样大!不,这是行不通的,因为现在他们不再真正地动手了。他们是一个炮弹,压倒了你。

较大的存储空间访问较慢的原因是距离。平均而言,更大的存储空间距离您更远。对于物理项目和RAM都是如此。

计算机内存占用物理空间。因此,较大的内存在物理上会更大,并且该内存中的某些位置在物理上会更远。由于速度限制,距离较远的事物需要较长的访问时间。在口袋和Digikey的情况下,速度限制是手臂的速度,也就是高速公路的速度限制。

对于RAM,速度限制是电信号的传播速度,门和驱动器的传播延迟以及同步时钟的常用用法。即使钱不是问题,并且您可以购买想要的任何可用的当今最快的RAM技术,但您将无法从中受益。如果愿意,请布置A4大小的L1高速缓存表,然后将CPU放在中间。当CPU要访问内存角处的某些内存时,字面上的请求将花费一纳秒的时间,而返回则需要一纳秒的时间。而且这还不包括通过,门和驱动器的所有传播延迟。这将严重降低3GHz CPU的速度。

由于同步逻辑的设计要比异步逻辑容易得多,因此一个“块”的RAM将以相同的时钟作为时钟源。如果要使整个内存成为L1高速缓存,则必须以慢速时钟为整个时钟计时,以应对内存中最远位置的最坏情况时序。这意味着远处的存储位置现在正在阻止本地的存储位置,这本来可以更快地计时。因此,最好的办法是对内存进行分区。高速缓存的最接近和最小的部分将使用最快的时钟。下一个最接近且最小的部分将使用稍慢的时钟等。

现在,您有了L1和L2缓存以及RAM。

这使我们想到了下一个原因,即功耗。

缓存实际上消耗了大量的功率。不仅是内存本身,还包括围绕它的所有逻辑,这些逻辑处理高速缓存行和主内存之间的映射。提高这种额外逻辑的性能可能会导致功耗增加。现在,对于某些应用程序(移动,嵌入式),您有更大的动力来保持高速缓存较小。

请参阅针对功率和性能优化的高速缓存设计折衷:案例研究(Ching-Long Su和Alvin M. Despain,1995年)。


1
+1我喜欢你的答案。击中所有相关点并进行备份。易于阅读
Gustavo Litovsky

那正确吗?答案是以光速相对于几英寸的延迟为前提的吗?
Andyz Smith

1
从总体上看,这个答案很好,但是我怀疑它不能回答最初的问题。为了认识到A4大小的缓存不切实际,不应该是uArch专家。我相信OP询问了缓存大小的合理增加,以及这种增加将如何影响缓存访问的延迟。
Vasiliy

1
@AndyzSmith-这是一个过分的夸张和过度简化,但我认为这可以理解一点,即在某些时候,L1缓存不能无限扩大。在某些时候,物理定律会出现,并使其放慢速度。
Rocketmagnet

片上信号的延迟不是光速,而是通过将网/线加上驱动栅极电容作为RLC网络来计算的更复杂的值。成为传输线还不够长。网络越长,驱动门就需要越大,或者您需要插入缓冲区作为转发器。所有这些也消耗更多的功率。
pjc50

4

撇开所有经济/性能/功耗因素,您的问题的答案是:它取决于许多微体系结构因素。

例如,请参阅此参考 -所有被测处理器的L1访问延迟测量为4个时钟周期。处理器的频率几乎相同,但是L1高速缓存的大小相差最多3倍。

在上面的测试中,跨几个不同处理器的L1持续等待时间恒定的原因在于缓存的微体系结构:缓存访问本身(从内存中获取数据)仅需要一个时钟周期。额外的三个周期用于解码访问,检查数据是否存在以及更多...在测试中的处理器之间,附加阶段的数量是相同的,因此访问延迟是相同的。

尽管有上述示例,但不能得出结论,缓存延迟与缓存的大小无关。如果有人试图实现一个非常大的L1高速缓存,那么执行高速缓存读取所需的所有操作的逻辑也会变得很大。在某些时候,通过所有这些逻辑的传播延迟将太长,并且事先仅花费单个时钟周期的操作就​​必须分成几个时钟周期。这将增加延迟。

假设所讨论的高速缓存是在SRAM中实现的,那么受高速缓存大小影响最大的模块是:行解码器和多路复用器。但是,即使是非常大的高速缓存,读出放大器也将受到影响:由于较高的电容而导致的位线上较小的电压摆幅将需要“更强”的读出放大器。据说,对逻辑速度的最严重影响将由导线互连电容增加-该电容对SRAM大小的依赖性大于线性。确切的细节是特定于实现的。

现在,L1缓存的延迟非常稳定,因为它们的性能至关重要。如果您尝试分析L2和L3缓存,则图片会变得非常复杂。

当您考虑使用多核处理器时,情况变得更加复杂-它们具有确保高速缓存一致性的其他逻辑。这导致另一个影响缓存访问延迟的因素:访问所有内核的内存的历史记录。

摘要

如您所见,您的问题绝非易事,无法完全回答。但是,如果您从经济和性能方面考虑,最好使用缓存,那么我想说它们的大小不会以任何明显的方式影响延迟。

对于感兴趣的读者:

该参考文献对现代CPU的性能因素进行了非常深入的分析。那里有很多与缓存有关的资料。需要对计算机体系结构和微体系结构原理有深入的了解(或者-要成为该领域的专业人士,必须了解的主题摘要)。


谢谢您的回答!您和@Rocketmagnet的答案几乎是互补的。希望我可以选择两者。我已经获得了引用参考的副本,并且最近对该主题非常感兴趣,因此提出了问题。
ivanmp

为什么执行读操作的逻辑取决于高速缓存的大小。为什么在特定数量的地址上存在离散跳转,它会变得“太长”。还是没有离散跳跃,访问时间与大小的公式是什么?
安迪斯·史密斯

您能否具体说明哪个组件:“那么关键的重复发生是加法器,解码器,SRAM字线,SRAM位线,读出放大器,字节控制​​多路复用器和旁路多路复用器。” 导致逻辑变大? en.wikipedia.org/wiki/Sum_addressed_decoder
Andyz史密斯

@AndyzSmith,访问时间与大小的公式只能由设计和模拟缓存的人员给出。在我发布的参考资料中,您可以看到需要4个时钟周期才能从L1获取数据,但是没有人试图估计与这些读取相关的延迟。如果没有大量其他特定于实现的信息,则寻求公式是不切实际的问题。
Vasiliy

1
@AndyzSmith,假设所讨论的缓存是在SRAM中实现的,则受缓存大小影响最大的模块是:行解码器和多路复用器。但是,对于非常大的缓存,即使是感应放大器也将受到影响:由于电容较高,位线上的电压摆幅较小->“更强”的感应放大器。据说,对逻辑速度的最严重影响将由导线互连电容增加-该电容对SRAM大小的影响不只是线性的。同样,细节是特定于实现的。
Vasiliy

3

这里的CPU缓存测试工程师-注释中的Dave Tweed具有正确的解释。高速缓存的大小可在CPU的预期价格点上最大化性能。通常,高速缓存是裸片空间的最大消耗者,因此其大小会带来巨大的经济(和性能)差异。

看看英特尔的Ivy Bridge CPU系列页面:http : //ark.intel.com/products/codename/29902/Ivy-Bridge

高端Xeon配备30MB缓存,具有12个内核,售价约2700美元。具有3MB缓存(i3-3217)的低端i3整个笔记本电脑的价格仅为500美元(我无法单独找到它)。

Xeon具有极致的性能,但制造和测试成本也更高。i3便宜得多,但需要权衡的是较小的裸片尺寸,其中缓存是最大的一部分。


2
非常有趣的答案。但是,正如我在问题中指出的那样,我不是在寻找经济的,显而易见的答案。我想了解的是与访问非常大的(> 512 MB)高速缓存有关的性能。大小会降低缓存的性能吗?
ivanmp
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.