处理器缓存 L1、L2 和 L3 是否全部由 SRAM 构成?如果是,为什么 L1 比 L2 快,而 L2 又比 L3 快?我读到这些内容时并不理解这部分。
答案1
一般来说它们都是用SRAM实现的。
(IBM 的 POWER 和 zArchitecture 芯片使用 DRAM 内存作为 L3。这被称为嵌入式 DRAM,因为它采用与逻辑相同类型的工艺技术实现,从而允许将快速逻辑集成到与 DRAM 相同的芯片中。对于 POWER4,片外 L3 使用 eDRAM;POWER7 将 L3 与处理核心放在同一芯片上。)
虽然它们使用 SRAM,但它们并不都使用相同的SRAM 设计。L2 和 L3 的 SRAM 针对以下情况进行了优化:尺寸(在有限的可制造芯片尺寸下增加容量或降低给定容量的成本)而 L1 的 SRAM 更有可能针对速度进行优化。
更重要的是,访问时间与存储的物理大小有关。在二维布局中,可以预期物理访问延迟为大致与容量的平方根成正比。(非均匀缓存架构利用这一点来提供延迟较低的缓存子集。最近的英特尔处理器的 L3 切片具有类似的效果;本地切片中的命中具有明显较低的延迟。)这种效果可以使 DRAM 缓存在高容量下比 SRAM 缓存更快,因为 DRAM 的物理尺寸更小。
另一个因素是,大多数 L2 和 L3 缓存使用标签和数据的串行访问,而大多数 L1 缓存并行访问标签和数据。这是一种功率优化(L2 未命中率高于 L1 未命中率,因此数据访问更有可能是浪费的工作;L2 数据访问通常需要更多能量(与容量有关);并且 L2 缓存通常具有更高的关联性,这意味着必须推测性地读取更多数据条目)。显然,在访问数据之前必须等待标签匹配将增加检索数据所需的时间。(L2 访问通常也仅在确认 L1 未命中后才开始,因此 L1 未命中检测的延迟被添加到全部的L2 的访问延迟。
此外,L2 缓存在物理上距离执行引擎更远。将 L1 数据缓存放置在靠近执行引擎的位置(以便 L1 命中的常见情况很快)通常意味着必须将 L2 放置在更远的位置。