存储墙:当计算等不起内存
打开一个大型 Excel 文件,翻页卡一下。Chrome 开了三十个标签,切换时白屏半秒。训练一个神经网络,GPU 利用率飘在 60% 上下。
这些看起来不相关的卡顿,指向同一个根:处理器在等内存。
一个被摩尔定律掩盖的裂缝
过去五十年,处理器的算力增长了约 (10^{12}) 倍。DRAM 的访问延迟,降了大概 4 倍。不是笔误——万亿倍对四倍。
内存带宽每年增长约 15%。算力需求每年翻倍。这条裂缝已经裂了二十年。每次你感觉电脑"卡",十有八九是处理器在空转等数据。
1994 年,William Wulf 和 Sally McKee 写了篇论文叫 Hitting the Memory Wall。他们算了一笔账:按当时趋势,用不了几年,处理器速度会被内存带宽完全锁死。增加再多核心也没用——每个核心都在等饭吃。这篇论文快三十年了。问题不但没解决,在某些领域更严重了。
为什么内存跟不上
DRAM 的基本结构从 1970 年代就没变过。一个电容存 1 或 0,定期刷新防止漏电。读数据:给出行地址和列地址,等电容放电,放大器读出电压。
这个"等电容放电"的物理过程,是访问延迟的根。电容放电速度受物理定律约束,几十年来优化空间极小。你可以把马路扩宽(增加带宽),但车速提不起来(延迟)。
更根本性的矛盾——芯片上晶体管数量翻倍是二维平面的增长,而数据在不同芯片之间的传输是三维空间的物理限制。数据传输的能量和时间成本远远高于计算本身。
三层缓存:一个治标不治本的补丁
CPU 用 L1/L2/L3 缓存来缓解存储墙。数据预测性地从慢速 DRAM 搬到快速 SRAM 缓存里,处理器从缓存取数据。
这套机制管用了很多年——只要程序的数据访问有规律。但深度学习的计算模式恰恰打破了这个假设。神经网络每一层的权重分布在内存各处,每个 token 都需要访问全部参数。缓存预取算法预测不了注意力机制的稀疏随机访问。
GPU 的解法不同:用海量线程掩盖延迟。当一组线程在等数据时,切换到另一组。这个策略的有效前提是"有足够多的线程可以切换"——但 batch size 小到 1(实时推理)时,就失效了。
存储墙的三副面孔
带宽墙。 最常见。GPU 算 FLOPS 够快,但内存带宽决定了实际吞吐。H100 的显存带宽约 3.35 TB/s。看着很多。但 GPT-4 级别的推理,每个 token 要访问全部模型参数。带宽除参数总量——模型越大,"每秒能处理的 token 数"反而越少。
延迟墙。 更隐蔽。即使有足够的带宽,从发出数据请求到收到数据之间的等待时间,让处理器大量空转。
功耗墙。 最根本。数据传输消耗的能量是计算本身的数个量级。芯片上两个晶体管之间的数据传输,和跨芯片甚至跨板卡的数据传输,能耗差距能到 (10^3) 到 (10^4) 倍。AI 数据中心总功耗 40-60% 花在数据传输上,不是计算本身。这堵墙不是技术能打穿的——物理极限。
HBM 是怎么缓解的
HBM(High Bandwidth Memory)不是更快的内存。它把内存堆在芯片旁边——物理距离缩短数据路径。传统 DRAM 放在 PCB 上,数据走几厘米到芯片。HBM 用硅中介层(interposer)把 DRAM 堆叠在芯片旁边,数据路径缩到几毫米。更短路径 = 更宽总线 = 更高带宽。
但 HBM 巨贵。一张 H100 成本里,HBM 占比超过 50%。不是 Nvidia 贵——是 HBM 贵。
后面的文章展开:怎么造 HBM,为什么良率这么低,为什么只有 SK 海力士一家能稳定量产,以及整个产业链的博弈。
存储墙是过去二十年最被低估的技术瓶颈。每一瓦电、每一美元成本、每一个毫秒延迟,都跟这个裂缝有关。