为什么高速缓存如此昂贵?

Bra*_*gan 10 memory architecture

在有关计算机体系结构的对话中,缓存内存比主内存昂贵得多。

我知道它必须靠近处理器,因此必须更小,但是还有什么会导致高速缓存的成本?

谁能解释一下材料\人工\技术\制造\等的细节。需要缓存还是主内存,以便我更好地了解成本?

小智 8

看看:处理器缓存L1、L2、L3都是用SRAM做的?

一般来说,它们都是用 SRAM 实现的。

(IBM 的 POWER 和 zArchitecture 芯片将 DRAM 内存用于 L3。这被称为嵌入式 DRAM,因为它采用与逻辑相同类型的工艺技术实现,允许将快速逻辑集成到与 DRAM 相同的芯片中。对于 POWER4,关闭芯片 L3 使用 eDRAM;POWER7 的 L3 与处理内核位于同一芯片上。)

尽管它们使用 SRAM,但它们并不都使用相同的 SRAM 设计。L2 和 L3 的 SRAM 针对尺寸进行了优化(在有限的可制造芯片尺寸的情况下增加容量或降低给定容量的成本),而 L1 的 SRAM 更有可能针对速度进行优化。

更重要的是,访问时间与存储的物理大小有关。对于二维布局,可以预期物理访问延迟大致与容量的平方根成正比。(非均匀缓存架构利用这一点以更低的延迟提供缓存子集。最近的 Intel 处理器的 L3 片具有类似的效果;本地片中的命中具有显着更低的延迟。)这种效果可以使 DRAM 缓存更快与大容量的 SRAM 缓存相比,因为 DRAM 在物理上更小。

另一个因素是大多数 L2 和 L3 缓存使用标签和数据的串行访问,而大多数 L1 缓存并行访问标签和数据。这是一个功耗优化(L2miss率比L1miss率高,所以数据访问更容易浪费工作;L2数据访问一般需要更多的能量——与容量有关——;而L2缓存通常具有更高的关联性这意味着必须推测性地读取更多数据条目)。显然,在访问数据之前必须等待标签匹配会增加检索数据所需的时间。(L2 访问通常也仅在确认 L1 未命中后才开始,因此 L1 未命中检测的延迟会添加到 L2 的总访问延迟中。)

此外,L2 缓存在物理上距离执行引擎更远。将 L1 数据缓存放置在靠近执行引擎的位置(以便 L1 命中的常见情况很快)通常意味着 L2 必须放置在更远的地方。

看一看:为什么缓存的容量这么有限?

总硅面积(最大芯片尺寸)是有限的。放置更多内核或更多缓存,或更多层次的缓存是设计的权衡。

看看:L2和L3缓存的区别?

通常,现代 CPU 内核上现在有 3 层缓存:

  • L1 缓存非常小并且与 CPU 的实际处理单元非常紧密地绑定在一起,它通常可以在 3 个 CPU 时钟滴答内完成数据请求。L1 缓存通常在 4-32KB 左右,具体取决于 CPU 架构,并分为指令缓存和数据缓存。
  • L2 缓存通常较大,但速度较慢,并且通常与 CPU 内核相关联。最近的处理器趋向于每个核心有 512KB 的缓存,这个缓存没有指令缓存和数据缓存的区别,它是一个统一的缓存。我相信缓存数据的响应时间通常低于 20 个 CPU“滴答”
  • L3 缓存往往由 CPU 上的所有内核共享,并且更大且更慢,但它仍然比进入主内存快得多。如今,L3 缓存的大小往往在 4-8MB 左右。
  • 主内存(~16 G,共享)。

看看:https : //stackoverflow.com/questions/4666728/size-of-l1-cache-and-l2-cache

L1 更靠近处理器,并且在每次内存访问时都会访问,因此它的访问非常频繁。因此,它需要非常快地返回数据(通常在时钟周期内)。它还需要大量的读/写端口和高访问带宽。使用这些属性构建大型缓存是不可能的。因此,设计人员将其保持在较小的范围内,例如在当今大多数处理器中为 32KB。

L2 仅在 L1 未命中时访问,因此访问频率较低(通常是 L1 的 1/20)。因此,L1 可能需要多个周期才能访问(通常保持在 10 个以下)并且具有更少的端口。这允许设计师将其做得更大。

他们两个扮演着截然不同的角色。如果 L1 变大,它会增加 L1 访问延迟,这将大大降低性能,因为它会使所有加载和存储变慢。因此,L1 大小几乎没有争议。

如果我们移除 L2,L1 未命中将不得不进入下一个级别,比如内存。这意味着大量访问将进入内存,这意味着我们需要更多的内存带宽,这已经是一个瓶颈。因此,保持 L2 是有利的。

专家经常将 L1 称为延迟过滤器(因为它使 L1 命中的常见情况更快),而 L2 则称为带宽过滤器,因为它减少了内存带宽使用。

注意:我在我的参数中假设了一个 2 级缓存层次结构,以使其更简单。在当今几乎所有的多核芯片中,也存在一个 L3。在这些芯片中,L3 是扮演内存带宽过滤器角色的那一个。L2 现在扮演片上带宽过滤器的角色,即它减少了对片上互连和 L3 的访问(允许设计人员放置低带宽互连,如环和慢速单端口 L3,允许他们使 L3 更大)。

或许值得一提的是,端口数量是一个非常重要的设计点,因为它决定了缓存将消耗多少芯片面积。端口将电线添加到缓存中,这会消耗大量芯片面积和功率。

看看:http : //en.wikipedia.org/wiki/Static_random-access_memory

静态随机存取存储器(SRAM 或静态 RAM)是一种使用双稳态锁存电路来存储每个位的半导体存储器。术语静态将其与必须定期刷新的动态 RAM (DRAM) 区分开来。SRAM 表现出数据残留,1但它仍然是易失性的,因为当存储器断电时数据最终会丢失。