缓存内存为何这么贵?

缓存内存为何这么贵?

在有关计算机架构的讨论中,缓存比主存储器贵得多是理所当然的。

我知道它必须靠近处理器,因此必须更小,但还有什么因素会影响缓存的成本呢?

有人可以解释一下缓存与主存储器所需的材料\劳动力\技术\制造\等的详细信息,以便我更好地了解成本吗?

答案1

看一眼 :处理器缓存 L1、L2 和 L3 都是由 SRAM 制成的吗?

一般都是用SRAM实现的。

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

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

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

另一个因素是,大多数 L2 和 L3 缓存使用标签和数据的串行访问,而大多数 L1 缓存并行访问标签和数据。这是一种功率优化(L2 未命中率高于 L1 未命中率,因此数据访问更有可能是浪费的工作;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但它仍然是传统意义上的易失性存储器,当存储器断电时数据最终会丢失。

答案2

简短的回答:因为寄存器、缓存和主存储器的构建方式不同,所以存在快速/昂贵和较慢/便宜之间的权衡。

虽然寄存器可以在一个周期内被访问,但缓存和主内存可能会使用控制机制,允许它们共享一些低级组件,从而使它们的构建成本更低。例如,一些内存芯片会在队列中保存 X 个请求,同时仍在搜索内存库以查找先前请求的地址位置。

您可以在维基百科上阅读更多内容内存层次结构页面并点击链接获取更多详细信息。

如果你想深入研究这个领域,马丁·汤普森的会谈非常有见地,特别是绩效神话(其中有寄存器、缓存和主存储器的直接比较)。

相关内容