在关于计算机体系结构的对话中,给出了缓存内存比主内存昂贵得多。
我知道它必须靠近处理器,因此必须更小,但是还有什么会导致高速缓存的成本?
任何人都可以解释材料\劳动\技术\制造\等的细节。缓存与主内存所需,以便我可以更好地了解成本?
在关于计算机体系结构的对话中,给出了缓存内存比主内存昂贵得多。
我知道它必须靠近处理器,因此必须更小,但是还有什么会导致高速缓存的成本?
任何人都可以解释材料\劳动\技术\制造\等的细节。缓存与主内存所需,以便我可以更好地了解成本?
Answers:
通常它们都是用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必须放置得更远。
看一下:为什么缓存的容量如此有限?
总硅面积(最大芯片尺寸)是有限的。放置更多内核或更多缓存,或更高级别的缓存是设计的权衡。
看看:L2和L3缓存差异?
通常,现代CPU核心上现在有3层缓存:
看看:https://stackoverflow.com/questions/4666728/size-of-l1-cache-and-l2-cache
L1更靠近处理器,并且在每次访问存储器时都可以访问,因此它的访问非常频繁。因此,它需要非常快速地返回数据(通常在时钟周期内)。它还需要大量的读/写端口和高访问带宽。使用这些属性构建大型缓存是不可能的。因此,设计人员在当今大多数处理器中保持较小,例如32KB。
仅在L1未命中时才访问L2,因此访问频率较低(通常是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)区分开来,动态RAM必须定期刷新。SRAM展品数据剩磁,1但它仍然是传统意义上的易失性的是,当存储器不被供电数据最终丢失。
简短回答:因为寄存器,高速缓存和主存储器以不同的方式构建,所以在快速/昂贵和慢速/更便宜之间进行权衡。
虽然寄存器将在一个周期内访问,但缓存和主存储器可能会利用允许它们共享一些低级组件的控制机制,从而使它们的构建成本更低。例如,一些存储器芯片将在队列中保存X个请求,同时它仍在搜索存储体以寻找先前请求的地址位置。
您可以在Wikipedia的Memory Hierarchy页面上阅读更多相关信息,并点击链接了解更多详情。
如果你想深入了解这个领域,Martin Thompson的演讲非常有见地,特别是关于性能神话的演讲(它直接比较了寄存器,缓存和主存)。