为什么L1缓存比L2缓存快?


14

我试图理解为什么某些CPU高速缓存的内存比其他的快。将高速缓存存储器与主存储器之类的存储器进行比较时,存储器类型(SRAM与DRAM)和可能影响访问速度的局部性问题(片上存储器与必须穿越存储器总线)存在差异。但是L1和L2通常在同一芯片上,或者至少在同一芯片上,我认为它们是同一类型的存储器。那么为什么L1更快呢?


9
因为它是按这种方式构建的。
伊格纳西奥·巴斯克斯

建立相同类型的RAM有多种方法。某些方法导致的RAM比其他方法构建的RAM更快。
伊格纳西奥·巴斯克斯

为何您的DDR RAM比您的HDD更快的原因...
hassan789

1
相关:我的回答以及有关缓存大小的问题也解释了使用多级缓存的一些速度/功耗折衷原因。从根本上讲,使高速缓存超高速运行会消耗大量功率和芯片面积,以并行执行更多操作,并且与您在上一级高速缓存中所需的大尺寸/关联性不兼容。
彼得·科德斯

Answers:


24

不,即使它们在使用相同制造工艺的同一芯片上,它们也不是相同类型的RAM。

在所有高速缓存中,L1高速缓存需要具有最快的访问时间(最低的延迟),而不是其具有多少容量才能提供足够的“命中”率。因此,它是使用较大的晶体管和较宽的金属走线构建的,因此需要在空间和功率之间进行权衡。较高级的高速缓存需要具有较高的容量,但可以承受得较慢,因此它们使用更紧凑的较小晶体管。


3
这就是我想要的,谢谢。您知道任何好的资料来源,可以进一步了解这些差异吗?
ConditionRacer

不,不是随手可得的。这些空间/功耗/时间权衡的细节,以及有关缓存容量和体系结构的选择,都与制造商流程的专有细节紧密相关,因此,几乎没有(如果有的话)发表过此类文章。我只能笼统地说。
戴夫·特威德

10
L1也较小,这意味着信号在其上的传播需要较少的时钟周期:通常L1的大小被确定为1(或2)个时钟可访问的最大存储器。
Brian Drummond 2014年

6
除了Brian Drummond的观点,L1通常还使用数据标签并行访问。L2通常首先访问标签(确定命中哪种方式),然后访问数据,增加延迟,但节省能量(在更大的尺寸,更高的关联性和更高的未命中率的情况下意义重大)。(通常会确认L1未命中开始L2访问,这会增加其有效等待时间。)
Paul A. Clayton 2014年

@BrianDrummond-在导线负载和浇口深度上都较小(我认为这从您的评论中不明显)。
肖恩·霍利汉

5

L1通常用作解码指令的存储,而L2是单个内核的通用缓存。高速缓存越低,它的大小就越小,通常速度就越快。作为PC处理器的粗略经验法则:

L1缓存:2-3个时钟周期访问

L2缓存:〜10个时钟周期访问

L3缓存:〜20-30个时钟周期访问

L1高速缓存的设计应该是最大化命中率(所需指令地址或数据地址在高速缓存中的概率),同时保持尽可能低的高速缓存延迟。英特尔使用的L1缓存的延迟为3个周期。L2缓存在一个或多个L1缓存之间共享,并且通常更大得多。L1高速缓存旨在最大程度地提高命中率,而L2高速缓存旨在最大程度地降低未命中损失(发生L1未命中时产生的延迟)。对于具有L3高速缓存的芯片,其目的特定于芯片的设计。对于Intel而言,L3缓存在2002年首次出现在4路多处理器系统(奔腾4 Xeon MP处理器)中。从这种意义上讲,L3缓存大大减少了多线程环境中的延迟,并减轻了FSB的负担。当时,

引用来源这里从“Pinhedd的”回应。


1
L1通常也用于数据,但确实是L1数据和L1指令通常在L2共享时是分开的:程序员 .stackexchange.com / questions / 44731 /…(可以共享的原因之一是它有更多的方式)。
Guy Sirton 2014年

1
处理器通常在L1级别具有单独的指令和数据缓存。以后的x86和SPARC芯片当然适用。而且某些L1指令缓存不存储解码的指令。奔腾4存储了已解码的指令,但是英特尔又回到了常规I缓存,然后最近又将解码的指令缓存添加回了它们的芯片。
Craig S. Anderson

3

速度与尺寸成反比有几个原因。首先想到的是导体的物理控制,其中信号传播受光速限制。一次操作可能要花费很长的时间,这将需要一个电信号才能在内存块内和向后传播最长的距离。另一个相关原因是时钟域的分离。每个CPU都运行自己的时钟发生器,该时钟发生器使CPU可以运行在GHz以上的时钟上。级别1高速缓存在CPU时钟上运行并与CPU时钟同步,这是系统中最快的。另一方面,二级缓存必须服务多个CPU,并且运行在不同的(较慢的)时钟域中。不仅L2时钟变慢(较大的图块),而且越过时钟域边界也会增加另一个延迟。然后当然还有扇出问题(已经提到)。


1

除了固有的性能特征外,局部性也起作用(L1更靠近CPU)。根据每个程序员对内存的了解

有趣的是,对于片上L2缓存,访问时间的很大一部分(可能甚至是大部分)是由线路延迟引起的。这是一个物理限制,只会随着高速缓存大小的增加而变得更糟。只有缩小工艺(例如,从Merom的60nm到Intel的Penryn的45nm)才能改善这些数字。


我认为这主要适用于高速缓存较大的地方-并非适用于所有处理器类型(尽管线路延迟很长)。
肖恩·霍利哈内
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.