Kam*_*ami 6 memory cpu performance cpu-architecture cpu-cache
一般来说,高速缓存是有用的,因为处理器的速度高于 ram 的速度(它们都在增加速度,但差异仍然存在)。因此,减少内存访问次数对于提高性能是可取的。
我的问题是为什么我们需要多级缓存(L1、L2、L3)而不是一个?
我知道 L1 是最快和最小的,L2 有点慢但有点大等等......但他们为什么要以这种方式创建硬件?
Pol*_*ial 15
这与芯片上的物理尺寸有关。缓存中的每一位都由一个或多个晶体管保存,因此如果您想要大量缓存,则需要大量晶体管。缓存的速度本质上与想要访问它的单元的位置成反比 - 在像这样的微型设备中,当您的信号路径变长时,通信会变慢。这部分与衬底阻抗有关,但在此级别涉及一些更复杂的物理现象。
如果我们想要包含一个大型的单一缓存,它必须同时位于 MMU、ALU 等非常短的距离内。这使得处理器的物理设计变得相当困难,因为大型缓存会占用大量空间。为了使缓存对这些子单元“本地”,您必须牺牲子单元的局部性。
通过使用小型、快速的本地缓存 (L1),我们可以最大限度地提高本地性和速度,但会损失大小。因此,我们然后使用二级缓存 (L2) 来保存大量数据,并略微牺牲局部性(以及速度)。这为我们提供了两全其美的优势——我们可以存储大量数据,但仍然有一个非常快的本地缓存供处理器子单元使用。
在多核处理器中,L3 缓存通常在内核之间共享。在这种类型的设计中,L1 和 L2 缓存内置于每个内核的芯片中,而 L3 缓存位于内核之间。这为每个核心提供了合理的局部性,但也允许非常大的缓存。
现代处理器中缓存的功能非常复杂,所以我什至不会尝试适当的描述,但一个非常简单的过程是在 L1 中查找目标地址,然后是 L2,然后是 L3,然后再求助于系统内存获取。获取完成后,它会通过缓存拉回。
归档时间: |
|
查看次数: |
16229 次 |
最近记录: |