为什么大多数处理器的L1高速缓存的大小都小于L2高速缓存的大小?
L1 与 CPU 核心紧密耦合,并且在每次内存访问时都会被访问(非常频繁)。因此,它需要非常快地返回数据(通常在一个时钟周期内)。延迟和吞吐量(带宽)对于 L1 数据缓存来说都是性能关键。 (例如,四个周期延迟,并支持 CPU 内核每个时钟周期进行两次读取和一次写入)。它需要大量的读/写端口来支持这种高访问带宽。使用这些属性构建大型缓存是不可能的。因此,设计师将其保持较小,例如目前大多数处理器为 32KB。
L2 仅在 L1 未命中时访问,因此访问频率较低(通常是 L1 的 1/20)。因此,L2 可以具有更高的延迟(例如 10 到 20 个周期)并且具有更少的端口。这使得设计师可以将其做得更大。
L1 和 L2 扮演着截然不同的角色。如果 L1 变大,则会增加 L1 访问延迟,这将大大降低性能,因为它会使所有相关加载变慢并且更难隐藏乱序执行。 L1 的大小几乎没有争议。
如果我们删除 L2,L1 未命中将不得不进入下一个级别,比如内存。这意味着大量访问将进入内存,这意味着我们需要更多的内存带宽,这已经是一个瓶颈。因此,保留 L2 是有利的。
专家通常将 L1 称为延迟过滤器(因为它使 L1 的常见情况命中速度更快),将 L2 称为带宽过滤器,因为它减少了内存带宽的使用。
注意:我假设了2级缓存层次结构 https://en.wikipedia.org/wiki/CPU_cache#Multi-level_caches在我的论点中使其变得更简单。在当今的许多多核芯片中,所有内核之间共享 L3 缓存,而每个内核都有自己的私有 L1,也许还有 L2。在这些芯片中,共享的末级缓存(L3)起着内存带宽过滤器的作用。 L2 起着片上带宽过滤器的作用,即它减少了对片上互连和 L3 的访问。这使得设计人员能够使用较低带宽的互连(如环)和慢速单端口 L3,从而使 L3 变得更大。
也许值得一提的是,端口数量是一个非常重要的设计点,因为它会影响缓存消耗的芯片面积。端口向高速缓存添加线路,这会消耗大量芯片面积和功耗。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)