你的电脑里有一个最擅长“忘记”的部件——内存。断电即清零,毫秒级漏电,读一次还要毁一次,可它偏偏是你程序唯一的“工作记忆”。YouTube 频道 Reducible 的经典神课《How do Computers Remember?》(计算机是怎么记住事情的?)用一集不到二十分钟的动画,把“1 bit 记忆”拆到了晶体管和电容的物理层面:为什么内存叫“动态”内存、为什么它必须不停刷新、为什么“读”本身就是一次破坏,以及这一切如何悄悄决定了你写的每一行代码的性能。本文带你完整走一遍视频的论证链条,补上它没讲透的工程细节,并给出三条可以直接落地的编程启示——没看过视频也能看懂,看过视频能多懂一层。
数据说明:因写作环境无法联网,文中播放量等动态数据为历史量级,实时数值以频道页面为准。
| 项目 | 内容 |
|---|---|
| 标题 | How do Computers Remember?(计算机是怎么记住事情的?) |
| 频道 | Reducible(主理人 Brian Yu) |
| 发布时间 | 2020 年 12 月(据频道页面) |
| 播放量 | 累计数百万量级,是该频道代表作之一(据历史数据) |
| 频道订阅 | 约百万量级(据频道页面历史信息) |
| 时长 | 约 18 分钟(据频道页面) |
| 定位 | 计算机体系结构科普:从晶体管到 DRAM 的完整记忆原理 |
Reducible 是 YouTube 上公认的“硬核科普天花板”之一,以长篇、严谨、动画精良著称,出品过讲 GPU 架构、CPU 分支预测、Git 原理等多支现象级课程。而这支《How do Computers Remember?》是它早期立身之作——没有花哨的比喻,而是老老实实回答一个孩子都会问、大多数程序员答不上的问题:机器关掉电源就全忘了,那它“记住”一件事,物理上到底发生了什么?
视频的开场不是一个答案,而是一个悖论:内存是计算机最重要的记忆部件,却是全世界最健忘的存储器——断电归零,哪怕不关机,里面的电荷也在持续泄漏。相比之下,一块硬盘、一张 SD 卡可以把你十年前的照片原样带回。
这个“缺陷”不是工程师的失误,而是一场权衡的结果:为了速度牺牲持久。视频用这个悖论吊住观众,然后提出全片的母题——要在电的世界里“记住”1 bit,你需要一种能稳定“卡住”的电路状态。接下来十八分钟,都在讲人类如何一步步逼近这个目标,以及逼近过程中付出的所有代价。
第一步是元件本身。晶体管(1947 年诞生于贝尔实验室)本质上是一个“电控开关”:给栅极通电,电流就能通过;断电,通路关闭。仅靠开关,你能做出与、或、非这样的逻辑门,能“计算”——但计算不等于记忆。一个与门的输出只取决于此刻的输入,上一毫秒发生了什么,它一无所知。
视频在这里完成了第一个漂亮的推演:把两个“非门”(反相器)首尾相接——A 的输出接给 B,B 的输出又接回 A。这时电路出现了质变:输入一旦消失,两个反相器会互相“喂养”,把 1 喂成 0、0 喂成 1,永远循环下去,电路从此卡死在某个稳定状态上不再变化。状态可以保持,这就是记忆的最小雏形——锁存器/触发器的思想。给这套结构加上控制端,你就得到了一个可以按指令写入、按指令读出的 1 bit 存储单元。
问题紧接着来了:要稳定“卡住”,这套锁存电路大约需要六个晶体管。听起来不多,但当你要造的是几十亿个 bit 的主存时,六倍的晶体管意味着六倍的面积、六倍的造价、六倍的漏电功耗。
这就是 SRAM(静态随机存取存储器)——它极快、极稳,但太贵。视频埋下伏笔:它注定不会当主存,这个结论会在结尾处回收,变成“内存层级”的关键一环。
于是全片最重要的追问出现:能不能用一个晶体管存 1 bit?
答案是能,前提是换一种“记忆哲学”。锁存器记忆的是电路的逻辑状态,这很稳妥;但状态本身也可以是电荷的存在与否——有电荷是 1,没电荷是 0。于是 Robert Dennard 在 1966 年于 IBM 提出的设计登場:一个晶体管当开关,负责把电容接上或断开;一个小电容负责存电荷。1 管 + 1 电容,1 bit 到手。这就是 DRAM(动态随机存取存储器),今天你电脑里插着的内存条,几十 GB 容量,全都是几十亿个这样的“电容+开关”排出来的阵列。
但“动态”两个字就是原罪的诏书。视频用两段关键推演,把 DRAM 的两大难题讲得淋漓尽致。
难题一:电容会漏电。 存进去的电荷撑不了多久,若不干预,1 会悄悄衰减成 0,数据无声无息地蒸发。补救方案简单粗暴——刷新(refresh):内存控制器每隔几十毫秒(业界常见规范窗口为 64ms,详见下文溯源),把每一行的数据统统读一遍、再原样写回去,给电容“续命”。所以 DRAM 叫“动态”内存:它不是存储器,它是一场必须永不停歇的续命行动。哪怕你的电脑开着却什么都没做,几十亿个电容也在背后被一次次读出、重写。
难题二:读,本身就是破坏。 这是全片物理上最精彩的一段。读一个 cell,本质是把它的电容接到位线上让外面“看一眼”。可问题在于:位线又长又宽,自身电容是 cell 里那颗小电容的许多倍——小电荷摊到大电容上,引起的电压变化微弱到几乎测不出;更糟的是,这一摊,cell 自己的电荷也变了,原数据在读的瞬间就没了。
视频的解法演示堪称教科书:读之前,先把整条位线预充电到半电压(介于 0 和 1 之间)。当 cell 接上位线,如果它存的是 1,电荷外泄,位线电压微微抬升;存的是 0,位线电压微微下降。这个“微微”小到任何仪表都嫌吵——但它够了一根感知放大器(sense amplifier)去捕捉。它像一个极其灵敏的天平,察觉到位线偏离半电压哪怕一丝丝,就立刻全力拉向 1 或 0 的满幅电压。
注意这其中的神来之笔:感知放大器把位线电压拉满的同时,等于把数据原样写回了 cell——因为 cell 正挂在位线上。所以 DRAM 的每一次“读”,物理上都是“检测微小偏差 + 放大为满幅 + 顺手重写”的三合一。破坏性读取的难题,被同一个电路优雅地消化掉了。
最后一个工程飞跃是组织方式。如果每个 cell 都单独拉一根位线、配一个感知放大器,引脚和译码电路会爆炸。真实做法是把 cell 排成巨大的二维网格:每一行共用一根“字线”(word line)负责选通,每一列挂一根位线、各配一个感知放大器。
于是“读数据”变成两步:先激活一整行——这一行的所有电容同时涌上位线,所有感知放大器同时工作,整行数据瞬间在放大器里就位;然后给出列地址,从这行里挑出你要的那几 bit。妙处在于:第二次激活之后,在同一行内访问不同列,几乎不花额外时间——整行已经躺在“行缓冲区(row buffer)”里等着了;而一旦要换一行,就得先预充电、再激活新行,慢上好几拍。
这个“换行很贵、行内白送”的特性,有个大名鼎鼎的学名——行缓冲局部性。视频在结尾把它轻轻点到,再抬手收进“内存层级”:SRAM 快但贵,做缓存;DRAM 密但慢些,做主存;局部性原理保证“绝大多数访问都命中在快的那些层级上”。几十 GB 的“动态、易失、读即破坏”的电容阵列,就这样成了你程序眼中“又快又大”的内存。
视频的每一环都对应着真实的历史与教科书体系,以下按人物与时间轴补齐视频没来得及展开的部分。
单晶体管 DRAM:Robert Dennard(1966)。 时任 IBM Thomas J. Watson 研究中心研究员的 Dennard 提出 1T1C 单元,1967 年提交专利。这项设计至今没有原理性替代者,近六十年间的所有内存条,本质都是它的工艺迭代。Dennard 还在 1974 年提出了著名的 Dennard 缩放定律(晶体管变小、功耗密度保持恒定),它和摩尔定律共同撑起了此后几十年的芯片进步,直到 2000 年代中期因漏电问题失效。一个人同时定义了“内存怎么造”和“芯片为什么越用越省电”,堪称体系结构史上被低估的名字。
局部性原理:Peter Denning(1968)。 “程序倾向于反复访问最近访问过的数据(时间局部性)、及其邻近的数据(空间局部性)”这一观察,由 Denning 在研究虚拟内存的工作集模型时系统化。它是缓存、内存层级乃至整个现代性能工程的公理。视频结尾的“行缓冲局部性”,就是空间局部性在物理层的一次直接显形。
晶体管(1947)与磁芯存储器(1950s)。 巴丁与布拉顿在贝尔实验室造出点接触晶体管,肖克利随后提出结型设计,三人共享 1956 年诺贝尔物理学奖。而在晶体管存储成熟之前,主存的位置属于磁芯存储器——用微小的磁性圆环穿线来记 1 bit,靠手工一根根穿成阵列,昂贵、笨重,但同样“断电不丢”。DRAM 取代磁芯的过程,正是 Intel 早期立足的传奇:1970 年问世的 Intel 1103(1K bit DRAM)是史上首款大规模商用的 DRAM 芯片,帮这家新公司赚到了第一桶金。
缓存思想:Maurice Wilkes 与 IBM System/360 Model 85。 1965 年,威尔克斯提出在慢速主存与 CPU 之间加一层快速“从属存储器”的思想;1968 年,IBM 在 System/360 Model 85 上首次商用实现,缓存(cache)从此成为所有现代处理器的标配——SRAM 与 DRAM 的分工由此制度化。
刷新窗口的工程细节。 "64ms"是 JEDEC(固态技术协会)规范中的常见刷新窗口;当温度超过 85°C,规范要求刷新频率加倍(窗口缩至 32ms),因为高温下漏电更快。这也是为什么高负载机器上内存子系统会悄悄多花电。此外,今天的服务器内存还带 ECC(纠错码)来对付电容阵列上的随机比特翻转——漏电之外,宇宙射线和电路噪声也是数据的敌人。
站得住的部分(主干无懈可击)。 1T1C 单元、电荷泄漏与周期刷新、电荷共享导致微弱信号、感知放大器的检测-放大-重写三合一、二维阵列与行缓冲局部性——这条主干与体系结构教科书的共识完全一致。想深入到操作系统与硬件细节层面,乌尔里希·德雷珀(Ulrich Drepper)2007 年的长文《What Every Programmer Should Know About Memory》至今仍是公认的权威延伸读物,其叙述与本视频主干完全对得上。
被教学化简化的部分。 其一,视频用理想化模型演示电荷共享,真实读取还要处理预充电时序、噪声容限、工艺偏差补偿,感知放大器是模拟电路设计的巅峰之一,远比“灵敏的天平”复杂。其二,"64ms"容易被观众当成物理常数,它其实是规范约定且随温度动态调整;其三,SRAM“六个晶体管”是典型值而非唯一答案(存在四管、八管等变体);其四,SRAM 与 DRAM 的速度差依代际从数倍到上百倍不等,视频给出的量级感受成立,但不适合背成精确倍数。
视频没讲、但观众容易误判的部分。 现代 DDR 内存的带宽,主要来自 bank、bank group、多通道的并行结构与流水化时序,而不是把刷新做得多聪明——只看视频会高估“刷新”的开销占比,低估“行未命中”(换行)对真实工作负载的杀伤力。另外,“断电丢数据”之外还有个著名的反直觉事实:电容断电后的残余电荷并非立刻消失——2008 年普林斯顿大学的研究团队正是利用这一点演示了“冷启动攻击”,从掉电后的内存中抢救出加密密钥。易失性是概率意义上的,不是瞬间归零。
一点编排上的取舍。 视频把篇幅几乎全部给了“单元级”物理,对“系统级”(内存控制器如何调度、DDR 接口如何分时复用行/列地址)只作点到为止。这是正确的取舍——单元级讲透,系统级的快慢就全部变成可推导的结论;反过来则只剩死记参数。
理解了“换行很贵、行内白送”,你就能从第一性原理推出一堆性能经验:按行优先遍历二维数组(而不是按列)能快数倍,不是因为编译器偏心,而是因为按行走的是行缓冲;把结构体里“热字段”聚在一起、冷字段拆出去,能让每次行激活带回更多你真正要的数据;大数组用平坦布局而不是指针链,让“下一次访问”大概率落在已激活的行里。写代码前问自己一句:我的访问模式,是顺着内存的行,还是在不停逼它换行?
现代分配器给你的一大块内存,物理上往往是“按需兑现”的:申请 4GB 瞬间返回,但只有你真正触碰到的那些页,才会被实际分配物理内存。这意味着性能问题常常不藏在“申请”里,而藏在“首次触碰”里;也意味着一次性读入大文件再处理,远不如流式处理对内存子系统友好。视频里那几十亿个电容漏着电、刷着新,提醒我们:内存不是一个静态仓库,而是一场持续运转的物理过程——你对它的每一次访问,都是有物理成本的。
凡是没有落盘的数据,都活在电容上。理解了这一点,很多工程仪式就从“规定动作”变成“必然结论”:数据库为什么非要写日志(WAL)再提交?因为不落盘的“已完成事务”在断电面前一文不值;为什么 fsync 不能省?因为操作系统页缓存也是易失的,你的“写入成功”可能只是电容上的成功。给自己的系统做一次演练:如果此刻断电,你愿意丢多少秒的数据?想清楚这个数字,flush 策略自然就有了答案。
flowchart TD
A[悖论开场<br/>内存最擅长忘记] --> B[母题<br/>用电造出1bit记忆]
B --> C[晶体管是电控开关]
C --> D[两个反相器首尾相接<br/>卡出稳定状态]
D --> E[锁存器雏形<br/>SRAM 6管存1bit]
E --> F[太贵<br/>追问1管行不行]
F --> G[换哲学<br/>电荷本身就是状态]
G --> H[DRAM 1管+1电容]
H --> I[原罪一<br/>电容漏电]
H --> J[原罪二<br/>读即破坏]
I --> K[补救<br/>64ms周期刷新]
J --> L[补救<br/>感知放大器<br/>检测+放大+重写]
K --> M[二维阵列组织<br/>行激活+行缓冲]
L --> M
M --> N[行缓冲局部性]
N --> O[内存层级<br/>SRAM缓存+DRAM主存]
(图:全片从“易失悖论”出发,经 SRAM 的昂贵与 DRAM 的两大原罪,最终收束到局部性原理与内存层级——每个补救方案都成为下一层结论的地基。)
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
