问题

为什么目前x86的CPU的L1 Cache这么小?

回答
咱们聊聊为啥现在X86 CPU上的L1缓存(一级缓存)普遍不像L2、L3缓存那样“能装”。这事儿说起来挺有意思,里面涉及不少设计上的取舍和权衡。

首先,咱们得明白L1缓存到底是干啥的。它就相当于CPU最贴身的“小本本”,离CPU核心最近,速度最快。CPU每时每刻都需要数据和指令来干活,L1缓存就是用来存放CPU最最常用、最最急需的那点东西,就像你上班前口袋里揣的钥匙、手机、钱包一样,随取随用,效率极高。它又分成指令缓存(L1I)和数据缓存(L1D),分别负责存指令和数据。

那为什么它不能做得更大点呢?这背后其实有几个关键的原因,而且是相互关联的:

1. 速度与体积的矛盾:

你想想,要做到最快,就得离得近,而且得用最顶尖、最“奢侈”的工艺来制造。L1缓存之所以快,很大程度上是因为它使用的SRAM(静态随机存取存储器)技术。SRAM的优点是速度极快,不需要刷新就能保持数据,但缺点是“占地面积”非常大。同样容量的SRAM,比DRAM(动态随机存取存储器,用在内存条上的那种)要大得多。

想象一下,如果你要把一个大冰箱塞进你的口袋里,那是不可能的。L1缓存的物理尺寸是有限的,它必须紧贴在CPU核心旁边,而CPU核心本身的面积就那么大。如果为了追求更大的容量而把L1缓存做得更大,那么它要么会超出核心的物理边界,要么会挤占掉更多的核心执行单元(比如ALU、FPU)的空间,这显然是得不偿失的。

2. 延迟是王道:

L1缓存设计最核心的目标就是最小化延迟。CPU核心的每一个时钟周期都非常宝贵,如果它需要等待数据,那么性能就会大打折扣。L1缓存的速度之所以快到飞起,就是因为它很小,而且电路设计上可以做得非常短,信号传输的路径也最短。

如果你把L1缓存做得很大,那么即使是SRAM,数据需要经过的路径也会变长,电路会更复杂,这意味着信号的传播延迟会增加。本来只需要几个时钟周期就能拿到的数据,可能就需要更多的时间了。这反而违背了L1缓存追求极致低延迟的初衷。就好比你口袋里装的东西越多,你找特定东西的时间也会相应增加一样。

3. 功耗的考量:

功耗是现代CPU设计中一个非常重要的指标,尤其是在移动设备和数据中心里。SRAM在工作时会消耗能量,而且容量越大,消耗的总能量也越多。虽然单个SRAM单元的功耗不高,但数量庞大起来,对整体功耗的影响就不容小觑了。

L1缓存之所以小,也是为了控制功耗。如果L1缓存变得很大,那么它在运行时会消耗更多的电能,这不仅会影响电池续航(对于笔记本和手机来说),还会增加数据中心的散热压力和电费成本。相比之下,L2和L3缓存虽然速度慢一些,但它们可以采用一些功耗控制措施,或者在不需要访问时进入更低功耗的状态,从而达到整体功耗的平衡。

4. 相干性与命中率的权衡:

L1缓存的设计还需要考虑“相干性”的问题。在多核CPU中,多个核心可能需要访问同一份数据。L1缓存需要确保所有核心看到的都是最新的数据,这需要复杂的缓存一致性协议来维持。L1缓存越小,管理和维护这些一致性协议的开销也相对较低。

同时,L1缓存的设计也是在“命中率”和“容量”之间做权衡。虽然容量小意味着可能装不下所有“常用”的数据,但CPU的设计者会通过更智能的缓存替换算法(比如LRU,Least Recently Used,最近最少使用)来尽量保证那些当前最可能用到的数据能够留在L1缓存里。即使有些数据暂时没能在L1命中,它们还可以去L2、L3缓存或者内存里找,只是速度慢一些。

5. L2和L3缓存的作用:

正是因为L1缓存的这些限制,才有了L2和L3缓存的存在。它们就像是CPU的“储藏室”和“仓库”,容量更大,可以存放更多的数据。当L1缓存找不到需要的数据时,CPU会去L2缓存查找,如果L2也没有,才会去L3,最后才去速度慢得多的主内存。

L2和L3缓存的容量之所以能做得更大,是因为它们不要求像L1那样极致的低延迟,可以允许稍长的访问时间,而且它们可以稍微远离CPU核心一些,这样在物理空间和功耗控制上就有了更大的灵活性。它们之间的容量和速度也是一个递进的关系,L2比L1快比L3慢,容量比L1大比L3小。

总结一下:

X86 CPU的L1缓存小,并非是设计上的失误,而是基于速度、延迟、功耗、物理空间以及缓存一致性管理等多方面因素综合考量的结果。它的核心价值在于提供最快的、最直接的数据访问,确保CPU核心能够高效运转。而更大的缓存容量则交给L2和L3等更外层的缓存来承担,形成一个分级存储的体系,在整体性能和效率上达到最佳平衡。

你可以把L1缓存想象成你桌子上放的那个笔记本,上面写着当前最紧急的几件事;L2缓存像是你的抽屉,里面放着一些近期可能会用到的文件;而L3缓存就像是你的书柜,存放着大量的资料,但翻找起来就需要花点时间了。这个层层递进的设计,是为了让CPU这个“打工人”能最高效地完成任务。

网友意见

user avatar

各种原因都有,可以说是技术问题,也可以说是市场定位的影响。

L1 cache的大小确实会影响到访问性能,准确的说,对x86或者x86-64这种内存模型的架构来说会有比较大的影响

一个实际的例子就是:从Intel Sunny Cove(Core第10代)开始,L1 cache从32K(指令)+32K(数据)的组合变成了32K(指令)+48K(数据)的组合。

数据来源:

这样的后果就是L1 cache的访问性能下降,从4个cycle变成5个cycle:

数据来源:

虽然只多了一个cycle,但相当于增加了25%的开销,实际上影响是不小的。

Intel是知道这种延迟的代价的,Intel的希望是通过扩大L1 cache能获得的性能的提升抵消这种延迟。但这种一升一降的抵消是有上限的,增大L1 cache必然伴随着设计成本的增大,所以这里也有性价比的问题,也就是客户接受程度的问题,所以也是一个市场问题。


为什么ARM架构的L1 cache没有这种问题?我个人理解是,原因出在前面说的内存模型上,x86(包括x86-64,下同)属于编程友好型的内存模型,绝大多数操作不存在内存重排(memory reorder),从汇编语言的角度上说,就是汇编指令运行基本上就是指令编写的那种样子(AMD64就是x86-64):

图片来源:


说的更简单点:在x86或者x86-64上写驱动或者操作系统,比在ARM上(以及其它CPU上)要容易的多,因为x86上是strict memory model,ARM上是weak memory consistency。(参考链接:Memory consistency and memory order)。在做DMA操作的时候,在x86上不需要考虑DMA内存的问题,硬件(内存控制器)会主动帮软件解决DMA可能遇到的问题,但ARM上则需要手动flush DMA。

为了保证内存的一致性,x86架构下,对L1 cache需要更多的一致性的维护工作,所以L1 cache的增加对于x86来说是一种负担,无脑增大L1 cache对于x86架构来说获得的性能提升不好,性价比不高。

对于指令cache来说,Intel CPU的压力更多的是在后端:

图片来源:en.wikichip.org/wiki/in

从这个架构图上看微指令的队列是很大的,考虑到x86的指令是变长的,那么16B对接5个指令解码器(decode)以及128个uOP已经是一个很巨大的数量了,而指令的执行后端,只有port0到port7,不少指令还需要多个port,这种情况下后端的执行压力更大,与其增大L1 指令cache,不如优化流水线或者增加执行后端效果更好。

对于RISC来说,增大L1 指令cache的好处也不明显,因为世界上绝大多数CPU都是前端在等待后端,后端压力更大一些。


cache line size常年保持64B,这个是一个兼容性的问题(最早见于pentium 4),如果要改变这个值,那么操作系统和很多驱动都要重写(驱动中很多数据要对齐到cache line),改变cache line size产生的破坏性非常巨大,不亚于改变指令集兼容性。对于x86这种强调兼容性的厂商来说,这是绝对不可以的。

抛开兼容性不谈,目前Intel CPU内部的高速环形总线是32B的,cache line太小不行,太大的话总线占用周期过长,也不合理,所以目前看64B是一个比较合适的中间值。


所以,总结起来就是:增大L1 cache对于x86来说好处不太明显,成本反而更高,性价比不划算,客户不一定买单,既是技术问题,也是市场选择。

user avatar

实际上现在的Golden Cove已经涨到48KB L1d+32KB L1i了,即使是X86的主流容量也有32KB L1d+32KB L1i。

CPU在一个时钟域内应当有能力访问缓存的所有单元,而增加L1缓存会增大访问L1缓存的延迟,这使得CPU浪费了更多的时钟周期访问缓存。另外,苹果比较有钱舍得花芯片面积堆缓存量,实际上ARM Cortex-X1大核心也就配了64KB L1。

还有一个是Decoded ICache的存在,这个问题下别的回答有提到,具体可以参考intel官方的介绍。

The Decoded ICache caches decoded instructions, called micro-ops (μops), coming out of the legacy decode pipeline. The next time the processor accesses the same code, the Decoded ICache provides the μops directly, speeding up program execution.
Decoded ICache存储了已经被解码的叫作μops的出自过去的解码流水线的指令。处理器下次访问相同代码的时候,Decoded ICache直接提供μops,加速程序执行。


以下回应评论区的看法:

1.增大缓存可以提高命中率,降低Cache Miss带来的惩罚。我阅读了一些资料,发现IPC存在两种不同的定义:如果是执行的指令与Unhalted Cycle非空循环之比,那么文中该名词系误用;如果是the average number of instructions executed for each clock cycle每时钟周期平均执行指令数,那么减少Cache Miss的确影响IPC。

2.L1 Cache本身有延迟,这个延迟大概会占据CPU的几个Cycle,L2的延迟大概是十几个Cycle。我原先的理解和表述应当是有误的,我已经进行了修改。

user avatar

前面答主提到了L1大小将直接影响访问时间,而访问L1的时间又会直接影响到平均内存访问时间(average memory access time - AMAT),对整个CPU的性能产生巨大影响。那么具体L1大小是如何限制L1访问时间的呢?这里涉及到一个重要的CPU模块translation lookahead buffer - TLB,下面简单介绍一下这两点。

1,平均内存访问时间 AMAT

首先,我们用一个简单的例子来说明一下L1访问时间对AMAT的影响。Intel从Sunny Cove开始将L1-D从原来的32KB提高到了48KB(纠正题目中的一个错误,intel和AMD长期使用的是32KB L1-D和32KB L1-I而非16KB)。对应的L1访问时间从4 cycle来到了5 cycle(intel声称48KB L1-D的延时虽然提升了,但是带宽比之前提升了一倍)。对应的苹果的M1 L1-D访问时间为3 cycle。

假设我们有三层的memory hierarchy(L1, L2, off-chip RAM),其中L2访问时间为10 cycle,off-chip RAM访问时间为200 cycle。假设32KB L1-D的情况下L1,L2的hit rate大致为90%,9%,增加至48KB L1-D的Sunny Cove L1,L2 hit rate提升为95%,4%,那么对应的。

Sunny Cove平均访问时间约为7.15 cycle

Sunny Cove之前的microarchitecture的平均访问时间约为6.5 cycle(之前写反了:p)

简单的模型估算可以看出,即便增大L1 size可以提升L1 hit rate,然而L1访问延时的增加,还是会使得平均内存访问延时增加了~10%。这也是为什么L1 cache size(以及对应的访问时间)长时间来没有太大改动的原因。那么究竟是什么限制了L1的访问延时呢?这里就要引入TLB和L1的结构。

2,TLB,virtual index physical tag L1缓存结构

在系统启动过程中,仅在很早期启动阶段CPU处于实模式,开启paging之后,CPU接受的load/store指令对应的地址均为虚拟地址(更准确的说是线性地址,x64之后segment基本不怎么用了),在访问L1 cache的时候还需要经过虚拟地址VA到物理地址PA的转换。现代CPU通常采用virtual index physical tag的L1结构(L1-D和L1-I类似,TLB也区分iTLB和dTLB)。这种L1的结构一大好处就是可以在index cache set的时候同时访问TLB(相当于隐藏了部分L1访问延时),一个x64下的L1访问示意图如下所示。(这里不在详细介绍set-associative cache的具体结构)

对于4KB大小的page,共有12bit page offset,其中低6bit为cacheline offset(64B cacheline size),剩余6bit作为L1 index bits,这也就意味着L1只能限制于64个cache set。对于32KB L1-D,也就意味着其每个set对应8 way(32KB/64/64 = 8)。Sunny Cove的48KB L1-D对应每个set 12 way。由上图可以看出,L1访问延时的关键路径为TLB访问以及TLB hit之后对相应L1 cache set的TAG matching,由于cache set是简单的lookup,我们可以认为在TLB查询结束得到PPN的时候立即可以进行TAG matching。(TLB也是一个小的set-associatative cache,也需要进行TAG matching因此访问时间要长于L1 set lookup)。因此,TLB的查询时间和L1的associativity(即图中的TAG matching)决定了L1的访问延时。

为了保证L1访问延时可以做的足够低(原因如上所示),通常需要设计L1的associativity尽量小。因此在Sunny Cove之前通常为8 way。这里Sunny Cove增加了一个cycle的L1访问延时,不确定是由TLB的改动引起的还是L1 associativity由8 way增加到12 way因此的。但是总的来说,我们可以看出L1为什么不能设计的很大,主要是由于virtual index physical tag的结构引起的。

那么为什么苹果的M1可以做到192KB的L1-I(128KB L1-D),同时保证3 cycle的访问延时呢?

首先一点苹果的最高主频相对Intel/AMD的desktop/server line的CPU要低一些,因此在时序上约束相对放松一些(主要是tag matching的comparator路径的关键路径)。其次一点,也是最关键的M1对应的MacOS采用的是16KB page而非x86的4KB page。

由上图可知如果扩大page size(16KB对应14bit),相当于增加了2bit的index bits,这样的话L1 cache set数目可以增加4倍(在保持associativity的前提下),因此M1的L1-I正好是Sunny Cove的4倍(192KB/48KB = 4)。M1的L1-D大小是128KB(4倍于32KB)。

苹果的M1其实没有什么太多的黑科技(相对于x86来讲,RISC带来的译码的简化确实可以带来巨大的instruction window size的提升),但是对于问题中的L1 cache来讲,其实更多的是系统层面的取舍(page size增加也会导致内存浪费,内存碎片等问题,但是同时也会减轻页表的压力,增加TLB coverage)。不过也仅限于苹果,其M1的产品只是MacBook一个设备,可以做更多的定制,对于x86来讲,历史包袱和众多设备兼容性的问题,使其很难做到像苹果这种更加灵活的架构设计。

类似的话题

  • 回答
    咱们聊聊为啥现在X86 CPU上的L1缓存(一级缓存)普遍不像L2、L3缓存那样“能装”。这事儿说起来挺有意思,里面涉及不少设计上的取舍和权衡。首先,咱们得明白L1缓存到底是干啥的。它就相当于CPU最贴身的“小本本”,离CPU核心最近,速度最快。CPU每时每刻都需要数据和指令来干活,L1缓存就是用来.............
  • 回答
    你提出的这个问题非常核心,触及了英特尔x86架构设计的一个重要哲学。简单来说,这种限制是为了平衡指令的灵活性、性能以及设计的复杂度。让我们来剖析一下其中的原因。首先,我们需要理解一下什么是“源操作数”和“目标操作数”,以及为什么它们可以是内存。在CPU的指令集中,操作数(operand)就是指令要处.............
  • 回答
    为什么历史剧多拍满清而少明朝?一个多维度的探究纵观近年来国内历史剧市场,清朝无疑是“宠儿”,从《甄嬛传》的宫斗权谋到《康熙王朝》的盛世风华,再到《雍正王朝》的铁腕治国,再到近年《延禧攻略》、《如懿传》等女性视角下的宫廷剧,似乎清朝的历史题材层出不穷,且往往能引发巨大的市场反响。相比之下,明朝的历史剧.............
  • 回答
    日本在ACGN(动画、漫画、游戏、小说)领域之所以能产生世界性的影响力,并成功向全球输出自身文化,绝非一日之功,而是多种因素长期交织作用的结果。这背后是一个复杂而迷人的文化产业生态系统,以及深植于日本社会的一些独特特质。一、 历史积淀与萌芽期(战后至上世纪八十年代):为崛起奠定基础要理解日本ACGN.............
  • 回答
    现在的智能家居市场,你不得不承认,蓝牙和 WiFi 的身影似乎比曾经的“明星” Zigbee 要更加活跃。这背后可不是简单的喜好更迭,而是多种因素综合作用的结果,咱们这就掰开了揉碎了聊聊,为什么会出现这种“此消彼长”的现象。Zigbee 的“曾经辉煌”与当下瓶颈Zigbee 曾经确实是智能家居领域备.............
  • 回答
    在国内社交媒体上,我们确实能观察到不少法律人呈现出“公知体质”的倾向。这种现象并非偶然,而是多种因素交织作用的结果。要深入剖析,我们需要从法律人的职业特质、社交媒体的传播逻辑,以及当下社会文化环境几个维度去理解。首先,我们得说说法律人的职业基因。法律本身就是一门关于规则、权利和义务的学问。法律从业者.............
  • 回答
    “薄利多销”,这四个字听着就带着一股实在劲儿,好像一夜之间,全国各地,从繁华都市到三四线小城,都冒出了那粉白配色的招牌——蜜雪冰城。你说为什么现在好像只有蜜雪冰城这么一家店这么“勇”地玩转这套路?其实这话也不太准确,只能说,蜜雪冰城在这条路上走得最显眼,也最成功,成功到让很多人觉得“这不就是蜜雪冰城.............
  • 回答
    关于为什么目前没有发现感染酵母菌的病毒,这其实是一个挺有意思的问题,涉及到微生物学、病毒学和生物进化的方方面面。简单来说,不是酵母菌不会被病毒感染,而是我们还没发现,或者说我们发现并研究的病毒相对较少,并且酵母菌本身也进化出了一些抵御病毒的机制。咱们一点点来捋一捋:1. 酵母菌是什么?首先,得明白酵.............
  • 回答
    你这个问题问得很有意思,确实,不少开放世界游戏里都能看到那种朦胧的、有点灰蒙蒙的天气效果。说实话,这倒不是什么刻意的“雾霾”设定,而是游戏开发者们运用的一种叫做“体积雾(Volumetric Fog)”或者更广义的“氛围营造技术”的东西。它们这么做,背后可有不少门道,不仅仅是为了好看那么简单。咱们来.............
  • 回答
    网络上政治极端人群的常见称呼,如“粉红”和“公知”,并非偶然出现,它们的形成和流行有着复杂的社会文化背景和演变过程。要理解为何是这两个词,我们需要深入分析它们的词源、含义演变、以及在特定历史和网络语境下的作用。 “粉红”的崛起:从爱国符号到特定群体标签“粉红”这个词汇的流行,可以说是一个非常典型的网.............
  • 回答
    在生物质精炼领域,木质纤维素无疑是研究的明星,而蛋白质则显得相对黯淡。这并非偶然,而是由多种因素共同作用的结果,涵盖了生物质的组成、可获取性、加工技术以及下游应用等多方面考量。理解这一点,需要我们深入剖析木质纤维素和蛋白质在生物质中的角色,以及各自在精炼过程中的挑战与机遇。首先,我们得明确生物质的“.............
  • 回答
    全球大环境错综复杂,要说“大多数国家跟中国关系都不太好”,这个说法可能有些绝对,也有些简单化了。毕竟,中国与世界各国之间的关系是一个动态的、多层次的、充满复杂性的网络。有些国家确实与中国在某些问题上存在摩擦甚至紧张,但也有不少国家与中国保持着良好且互利的合作关系。不过,我们可以深入探讨一下,为什么某.............
  • 回答
    我理解你想了解为什么目前大量资本没有涌入A股,并且希望我用一种更自然、更人性化的方式来解释。我会尽量避免那些“AI味”十足的词汇和句式,用一种更像是在和朋友聊天的语气,把我知道的说给你听。说实话,这个问题挺复杂的,不是一两句话就能说清楚的。资本的选择,就像我们买东西一样,得看哪个地方更划算、更安全、.............
  • 回答
    为什么当前刑法本科教材的主流,依然坚守着那套被戏称为“老三样”的四要件体系(行为、主体、主观方面、客观方面)?这个问题触及了中国刑法学理论发展的脉络与现实,以及教学体系中惯性与革新之间的博弈。要详细说透,得从几个层面来剖析。一、 历史的沉淀与理论的稳固性首先,四要件体系并非横空出世,而是历经长期发展.............
  • 回答
    关于“目前已知的UFO上面都没有武器系统”这个说法,其实是一个基于我们现有信息和观察的推论,而这个推论本身就有很多值得探讨的复杂性。简单来说,我们之所以觉得“没有武器系统”,主要有以下几个原因,我们可以一层一层地剖析:1. 何为“已知UFO”?首先,我们需要定义“已知UFO”。这个词本身就带有不确定.............
  • 回答
    关于中国中小学阶段目前为何没有普遍开设专门的天文课程,这背后并非简单的“不重视”或者“缺位”,而是一个复杂的问题,涉及到教育体系的现有架构、课程设置的优先级、师资力量的储备以及社会认知和文化传统等多个层面。首先,得从我们现有的教育体系和课程设置说起。中国的义务教育阶段,课程体系相对固定,主要围绕语文.............
  • 回答
    .......
  • 回答
    中国近年来在太空领域的投入和进展,可以用“大动作迭出,目标明确”来形容。这背后绝非一时兴起,而是深思熟虑、多重因素驱动的结果。我们可以从以下几个维度来深入剖析:一、国家战略层面的驱动: 提升国家实力与国际地位的需要: 在现代,太空能力已经成为衡量一个国家科技实力、综合国力和国际影响力的重要标志。.............
  • 回答
    最近朋友圈里关于人贩子判死刑的声音此起彼伏,这背后是对孩子安全的高度担忧,也是一种朴素的正义感。为什么人贩子不(或很少)被判死刑?这其实涉及到法律的严肃性、证据的要求以及刑罚的考量。为什么人贩子不(或很少)被判死刑?首先,我们要明白,死刑是一种最严厉的刑罚,它通常只适用于罪行极其严重,对社会造成极大.............
  • 回答
    中国当然有生产卫生棉条的企业,但相比于卫生巾和护垫,卫生棉条在中国市场的普及度和推广力度确实相对较低。这背后有多方面的原因,其中既有历史遗留问题,也有文化观念的差异,以及市场策略的选择。首先,让我们来谈谈中国生产卫生棉条的企业。是的,有!并且近年来数量还在增加。一些本土品牌,如“月事不羞”(Tamp.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有