CPU 是怎么算数的
最近 CES 2026 上,AMD 发了一个新的游戏旗舰 9850X3D。我看测评的 benchmark,它打游戏比英特尔的 Ultra 9 285K 快了 27%。这个 X3D 系列真的很牛逼,靠的不是频率有多猛,而是在 CPU 里加了一堆很大的缓存——我看了一下前一代 9950X3D,光 L3 缓存就塞了 128MB。
但大家好像都只知道有缓存这个东西,缓存到底是个啥,好像都不太清楚吧?缓存凭什么越堆越多,游戏就跑得越快啊?要说清楚这个事情,得回到最底层的一个很朴素的问题:一个电路,怎么样去记住一件事情——记住一个状态,记住一个 data。
普通的电路只看当下,记不住事
比如说家里的台灯,开关打开就亮,关上就灭。它亮不亮,只跟此刻开关有没有打开有关系,跟一秒钟之前开关是什么状态没有一毛钱关系。这种只看当下、不管过去的电路,叫组合电路。
但电脑不行。你敲下的每个字、窗口里干的每一件事情,下一步的状态都必须参考之前干了啥。一个记不住过去的电路是成不了一台电脑的,用这种记不住状态的电路是做不出电脑的。所以问题就卡在这了:怎么让电路记住一件过去发生的事情?怎么把数据存下来?
让电路自己提醒自己
Redknot 打了个特别实在的比方:两个人记性都很差,一件事只能记几秒。怎么让他俩长久记住?让他们互相提醒——第一个快忘了就告诉第二个,第二个快忘了再回头告诉第一个,这么循环下去,这件事就一直记着。当然前提是你得管饭,两个人饿死了就什么都记不住了。
放到电路里一模一样。拿两个非门(输入高就输出低、输入低就输出高),第一个的输出接到第二个的输入,第二个的输出再绕回第一个。第一个说「高」,第二个反成「低」传回来,第一个又反成「高」……信息就这么被锁在这个环里,记住了。同一个结构,既能稳定在「记住高」,也能稳定在「记住低」,两种状态刚好对应 1 和 0。这个东西叫双稳态电路。那顿「饭」就是电源——别忘了非门除了信号线还接着电源线,它不是永动机。
两个非门首尾相接互相提醒,把一个信号锁在环里,从而记住 1 或 0——双稳态电路记住一个比特的机制。
补一句,这里的非门本身就是上一篇讲的那个 MOS 管搭出来的,底层全是开关。
给它加个「写」和一道「锁」
光能记住还不够,你还得能改。在环里插两个或门,引出两根控制线,就能强行把状态扳成你要的值,写数据靠的就是它。再加一道叫 enable 的开关:拉高才准写,拉低就把外面的输入隔开、安心锁存。这套东西在计算机课本上叫「带使能的 D 锁存器」。
写的时机还得管住。计算机里有个晶振,配上电路能产出一个固定节奏的方波,叫时钟信号。它震一下,运算往前推一步,就像军队喊口令,所有部件踩着同一个节奏走,才不会乱。
一个时钟周期,只准写一次
麻烦的地方在于,D 锁存器只要 enable 是高电压,这一整段时间都开着门让你写。来个手快的,一个时钟周期里按好多下,存的值就被改好几回,后面接着的电路当场就懵了。
解法是把「整段时间都能写」改成「只在时钟跳变的那一瞬间写」。拿两个 D 锁存器,一主一从(master 和 slave),时钟信号给两边喂相反的电平,这样只有时钟从低跳到高的那一瞬间,数据才被放进来,一个周期稳稳只写一次。这就是主从触发器,也叫 D 触发器。拿 8 个排成一排,就是一个能存 8 比特的寄存器。
寄存器最快,可它也最贵
寄存器为什么快得离谱?因为它纯靠晶体管硬扛,没有任何拖泥带水的环节。代价是一个 D 触发器要十几二十个晶体管,又费面积又费钱。CPU 里要塞几兆几十兆的缓存,全用寄存器做,成本和面积直接爆炸。
所以缓存换了一个更省的方案:6 个晶体管搭一个存储单元(课本里的 6T SRAM)。读的时候有个很巧的办法:给一个单元接左右两根位线,先都充到同样的高电压再断电,然后打开单元——存「1」的那一侧几乎不放电,另一侧悄悄掉个 50 到 100 毫伏,末端的灵敏放大电路一测这点电压差,就知道存的是 0 还是 1。位线上的电压只动一点点,所以读得非常快。
就算省成这样,缓存依然是吃面积的大户。一颗 CPU 拍开看,那一大片像地毯一样规整重复的结构基本都是缓存,有的处理器 L2 加 L3 能占掉一半以上的芯片面积。
所以堆缓存,是真能堆出性能的
CPU 一个时钟周期才 0.2 纳秒,可它去内存里取一次数据要几十纳秒——这一趟的工夫,CPU 本来可以跑上百条指令。换句话说,大部分时间它都在干等内存。这就是所谓的存储墙。
缓存就是架在 CPU 和内存之间的一层快速中转站。要用的数据先搬进片上缓存,CPU 大多数时候直接从缓存里拿,不用大老远跑去内存。缓存越大,需要跑去内存取数的次数就越少。游戏这种疯狂、高频访问内存的场景,缓存一大,提升立竿见影。AMD 的 X3D 干脆把芯片做成 3D 堆叠,一层算、一层缓存,硬是把 L3 堆到 96MB(9800X3D)甚至 128MB(9950X3D),名字里那个 3D 就是这么来的。
CPU 去内存取数要干等几十纳秒,缓存作为架在中间的快速中转站,越大就越少往内存跑——堆缓存换性能的机制。
寄存器、缓存都快,但它们有个共同的软肋:一断电,存的东西全没了。要管更大的数据、还得断电不丢,就轮到内存和它下游的硬盘登场了。
本文整理自 B 站 UP 主 Redknot-乔红 的硬件科普合集。那个「俩人互相提醒」的比方就是他的原话,把抽象的双稳态讲活了。本系列只做了主题重编与文字转写,讲错的地方算我的。
