本页目录
电路 V · 存储器与存储墙
层次:本科核心 + 业界核心产业 | 部分内容【前沿,核对于 2026-07】。 逻辑再快,取不到数据也没用。存储器占据现代芯片的大部分面积(处理器中缓存常占一半以上),也是半导体产业规模最大的单一品类之一。本页讲三种主流存储的原理与各自的缩放困境,最后讲那堵越来越高的墙:存储墙。
学习层:为什么一次缓存未命中,会抵消很多次算术?
1. 具体谜题:95% 命中率够不够?
考虑 \(10^6\) 次随机字访问:SRAM 缓存命中延迟 4 cycles,落到 DRAM 需要 250 cycles,片外 NAND 访问则是 \(10^5\) cycles 量级。若命中率从 95% 降到 90%,平均访问代价会增加多少?把算术单元性能翻倍,能不能补回这部分等待?
先预测:在两层 SRAM/DRAM 模型中,命中率提高 5 个百分点的收益;把所有访问直接送到 DRAM 的代价;为什么 NAND 的非易失性不能直接换成处理器缓存。
2. 先预测:快、大、便宜、非易失只能取舍
交互台会先让你选择工作负载和命中率。提交前判断:
- SRAM、DRAM、NAND 的访问延迟是否按层级单调增加?
- DRAM 单元为什么需要刷新,刷新与破坏性读是否会进入能量账本?
- NAND 每个单元从 SLC 变成 QLC 后,电平数与噪声裕量如何变化?
- 对一个固定算术量,减少一次片外搬运是否可能比增加一次乘法更重要?
3. 最小心智模型:每一层都是物理约束的折中
SRAM 用交叉耦合反相器保持双稳态,快但需要 6T 面积;DRAM 用 1T1C 保存电荷,密度高但漏电、刷新且读后回写;NAND 用绝缘层中的电荷移动阈值,非易失但只能块擦除、耐久有限。体系结构把它们串成层次,用近层命中率掩盖远层延迟。
因此“缓存优化”本质是把数据移动变少、变近、变宽或变可预测。实验不把单一延迟当成完整系统性能,还显示每次访问的能量和写入放大 proxy,让容量、延迟、能量和寿命同时进入决策。
4. 形式机制与不变量:期望代价与可靠性账本
两层缓存的平均访问时间是
其中 \(h\) 是命中率;平均搬运能量同理为 \(E[E]=he_{\mathrm{SRAM}}+(1-h)e_{\mathrm{DRAM}}\)。若有 \(M\) 次访问,总等待 cycles 为 \(ME[T]\),在时钟频率 \(f\) 下时间为 \(ME[T]/f\)。
存储单元的物理不变量也不能删掉:SRAM 必须同时满足读稳定性与写能力;DRAM 的电荷会随时间衰减,需要刷新且读后回写;NAND 的 P/E 循环有限,多比特电平数从 \(2\) 增到 \(2^b\) 后电压裕量缩小,必须由 ECC、磨损均衡和 FTL 承担系统可靠性。
5. 交互实验:让一百万次访问把存储墙显形
无 JavaScript 时的静态读法:以 \(M=10^6\) 次访问、3 GHz 时钟为例。SRAM/DRAM 两层账本取 \(T_S=4\) cycles、\(T_D=250\) cycles、\(e_S=0.2\ \mathrm{pJ}\)、\(e_D=20\ \mathrm{pJ}\)。
| 策略 | SRAM 命中率 | 平均延迟 | 总 cycles | 总时间 | 平均能量/访问 | 总能量 |
|---|---|---|---|---|---|---|
| 良好局部性 | 95% | \(.95\times4+.05\times250=16.3\) | \(1.63\times10^7\) | 5.43 ms | 1.19 pJ | 1.19 \(\mu\mathrm J\) |
| 局部性变差 | 90% | 28.6 | \(2.86\times10^7\) | 9.53 ms | 2.18 pJ | 2.18 \(\mu\mathrm J\) |
| 全 DRAM | 0% | 250 | \(2.50\times10^8\) | 83.3 ms | 20 pJ | 20 \(\mu\mathrm J\) |
脚本提供访问次数、SRAM 命中率、读写比例和目标层级控制,画出各层的延迟/能量柱形和当前工作负载的期望账本。写入 NAND 时会附加块擦除、写入放大与有限 P/E 循环的提示;它是用于架构比较的 proxy,不把 SSD 随机访问当作 DRAM 的等价替代。
6. 反例与失效边界:平均值也可能掩盖灾难
- “平均访问 16 cycles 就是每次 16 cycles”忽略长尾、并发、排队、bank conflict、预取错误和一致性协议。
- “缓存越大越好”忽略面积、漏电、访问端口、线长和 SRAM 的 \(V_{\min}\);容量增加可能拉长命中路径。
- “DRAM 只是慢 SRAM”忽略电容刷新、破坏性读、灵敏放大器和独立工艺;它们的故障与能耗机制不同。
- “QLC 只是每格多存几位”忽略电平间隔、误码率、P/E 寿命、ECC 计算和写放大,密度收益必须由系统可靠性支付。
- “算力翻倍就能掩盖存储墙”在算术强度低、数据集超出缓存或片外带宽饱和时不成立;瓶颈是数据移动而非乘法吞吐。
7. 迁移题:从一次 miss 设计数据流
对一个矩阵乘或向量搜索任务,先估算每个元素的重用次数、SRAM 容量、DRAM 带宽和片外搬运能量,再选择分块、预取、HBM、算子融合或近存计算。请明确指出:哪一项减少了访问次数,哪一项只增加了带宽,哪一项改变了存储物理本身。
一、存储层次:一个被物理逼出来的结构
没有一种存储能同时做到快、大、便宜、非易失,所以只能分层:
| 层级 | 典型容量 | 访问延迟 | 每比特成本 | 易失性 |
|---|---|---|---|---|
| 寄存器 | 数百 B | < 1 周期 | 极高 | 易失 |
| SRAM(缓存) | KB–数十 MB | 1–40 周期 | 高 | 易失 |
| DRAM(主存) | GB | ~200–400 周期 | 中 | 易失(需刷新) |
| NAND 闪存(SSD) | TB | ~10⁴–10⁵ 周期 | 低 | 非易失 |
每下一层,容量涨约三个数量级、延迟涨约两个数量级。整个计算机体系结构(缓存、预取、虚拟内存)都是为了掩盖这个层次差异而设计的(🔗 cs 站 CSAPP 存储层级、csapp-02)。本页提供那一层抽象之下的物理原因。
二、SRAM:快,但不再变小
6T 单元:两个交叉耦合的反相器构成双稳态锁存 + 两个访问管。
- 静态保持,只要供电就不丢数据,无需刷新;
- 读写快,与逻辑工艺完全兼容 → 用作片上缓存;
- 代价是面积大(6 个晶体管/比特)。
三个设计张力(全部围绕同一个矛盾):
- 读稳定性:读操作会扰动存储节点,可能翻转数据(读扰动);
- 写能力:必须能强行翻转锁存;
- 保持裕度:低压下双稳态可能失稳。
用静态噪声容限(SNM)衡量。问题在于:提高写能力要求访问管强,而提高读稳定性要求访问管弱——两者直接冲突,且在低压与大变异下同时恶化。这就是为什么 SRAM 往往是决定芯片最低工作电压(\(V_{min}\))的模块,也催生了 8T 等读写分离单元(用面积换稳定性)。
关键的产业事实:SRAM 面积缩放已显著放缓。 逻辑还在缩,SRAM 却几乎停滞——因为它对变异极其敏感(承第八页 Pelgrom:精度用面积买)。后果是缓存在芯片面积中占比越来越高,且成为先进节点成本上升的主要推手之一,这也强化了把缓存分离到单独裸片、用 3D 堆叠连接的动机(第十五页)。
三、DRAM:一个电容和它的漏电
1T1C 单元:一个晶体管 + 一个电容,用电容上有无电荷表示 1/0。
- 密度极高(1 个晶体管/比特),故做主存;
- 电容会漏电 → 必须周期性刷新(典型 64 ms 内全部刷新一遍)→ 刷新功耗,且刷新期间不能访问;
- 读取是破坏性的(电荷被读出即消耗),必须读后回写;
- 读出信号极微弱(电容仅约 10 fF 量级),依赖灵敏放大器做差分放大——这是模拟电路在存储芯片里的核心应用。
缩放困境:电容值不能随意减小(否则信号淹没在噪声里),于是电容被做成深槽或高柱的三维结构,深宽比极高(几十比一),制造难度巨大。DRAM 的缩放主要靠工艺极限突破,而非结构创新——这与逻辑器件的路径不同。
DRAM 工艺与逻辑工艺不兼容(需要特殊的电容与低漏电晶体管),所以DRAM 通常是独立芯片。这正是"存储墙"的物理起点:数据必须跨越封装、走上电路板才能到达处理器。
四、NAND 闪存:用可靠性换密度
浮栅/电荷俘获:在栅极中嵌入一个绝缘包围的电荷存储层,注入电荷改变 \(V_{th}\),从而记录信息。断电电荷仍在 → 非易失。
三个关键性质:
- 块擦除:只能按大块擦除(数百 KB–MB),不能按字节改写 → 需要 FTL(闪存转换层)做地址映射与垃圾回收(🔗 cs 站文件系统与存储);
- 有限寿命:每次擦写都损伤隧穿氧化层,P/E 循环次数有限(SLC 数万次,QLC 仅数百到数千次)→ 需要磨损均衡;
- 多比特存储:SLC/MLC/TLC/QLC,一个单元存 1/2/3/4 位。每增加一位,需要区分的电平数翻倍,裕度指数下降 → 速度、寿命、可靠性同步恶化。这是纯粹的"密度换可靠性"权衡,也是消费级 SSD 越来越便宜、但耐久度越来越低的原因。
3D NAND 是一次范式转移:平面缩放走到尽头后,改为垂直堆叠(现已达数百层),用一次刻蚀打通所有层。"不再缩小,而是堆高"——这个思路后来蔓延到了整个行业(3D 集成、Chiplet,第十五页)。NAND 是第一个成功转向三维的大宗半导体产品,具有示范意义。
纠错是必需品而非可选项:现代 NAND 的原始误码率高到无法直接使用,必须依赖强大的 ECC(LDPC 等)。存储系统的可靠性是"用编码换来的"(🔗 cs 站/数学站信息论)。
五、存储墙
处理器性能的增长长期快于存储带宽与延迟的改善,两者差距持续扩大——这就是存储墙(memory wall)。
今天的具体表现:
- 大量 AI 与数据密集型负载受限于内存带宽而非算力——加速器的计算单元大部分时间在等数据;
- 数据搬运的能耗远超计算本身。从片外 DRAM 读取一个数所消耗的能量,可比一次浮点运算高两个数量级以上。"计算是免费的,搬运是昂贵的" 是现代芯片设计的核心信条之一;
- 于是架构设计的重心从"提高算力"转向"减少数据移动"。
应对手段(后面各页展开):
- 更近:大容量片上缓存、3D 堆叠缓存;
- 更宽:HBM——把 DRAM 裸片堆叠并通过硅中介层以极宽总线连接(第十五页)。这是当前 AI 加速器的标准配置,也是先进封装最大的商业驱动力;
- 更聪明:数据流架构、算子融合、近存计算;
- 更激进:存内计算——直接在存储阵列里做运算,彻底避免搬运(第十六页)。
六、要点
- 存储层次是被物理逼出来的,不是设计偏好;
- SRAM 面积缩放放缓,成为先进节点成本与 \(V_{min}\) 的关键制约;
- DRAM 靠三维电容与刷新维持,且工艺与逻辑不兼容,这是存储墙的物理起点;
- NAND 用可靠性换密度(QLC)并率先转向 3D 堆叠,为全行业提供了范式;
- 存储墙的本质是"搬运比计算贵"——现代架构的主要矛盾。
线二结束。下一线转向制造:这些电路究竟是怎么被造出来的?从一块硅晶圆到几百亿个晶体管,中间是人类工业史上最精密的流程。