DRAM 是怎么存下一个比特的
计算机的内存,本质上是一个巨大的 Excel 表格。每一格存一个比特——0 或 1。DRAM 的每一格由一个晶体管加一个电容组成。晶体管是开关,电容是容器。
电容的物理
写 1:打开晶体管,给电容充电。写 0:打开晶体管,让电容放电。读的时候,打开晶体管,检测电容上是否有电荷。
问题是电容会漏电。DRAM 的电容极小——现代制程下大概几十飞法。几十飞法的电容,电荷在毫秒级就漏光了。所以 DRAM 需要定期刷新——每隔几十毫秒把所有电容读一遍、重新写回。刷新期间不能正常工作。这是 DRAM 延迟的根本来源。
更大的问题:电容越做越小。制程每缩一次,电容就更小,漏电相对更快,刷新需要更频繁。存储单元本身变成了瓶颈——这也是为什么内存频率提升远慢于处理器频率。
阵列结构
DRAM 内部不是随机排列。电容排列成阵列——行和列。访问某个存储单元,先选行,把整行电容的电荷读出到行缓冲器——一个临时的 SRAM 缓冲,然后从行缓冲器选列。
关键效率来源:如果连续访问同一行的不同列,只需要第一次打开行。后面直接从行缓冲器读——延迟低得多。 这是"内存局部性"的硬件根。也是为什么顺序访问比随机访问快几十倍。
行缓冲器是所有内存优化策略的物理基础。CPU 缓存之所以有效,因为程序通常会连续访问内存地址。矩阵乘法被高度优化,因为访问模式是可预测的顺序扫描。
延迟的数字
打开一行:约 15-20 纳秒。从行缓冲读一列:约 5-10 纳秒。加上总线传输和控制器开销,一次"随机"内存访问大概 40-100 纳秒。
40 纳秒听着快——人没法感受。但处理器的时钟周期是 0.2 纳秒(5 GHz)。一次内存访问,处理器能执行 200 条指令。 这是存储墙的本质:处理器大部分时间在空转。
GPU 用海量线程来掩盖这 200 个周期的空白。当一个 warp 在等内存时,调度器切换到另一个 warp。只要有足够多的活跃线程,内存延迟被完全隐藏。但当 batch size 小到 1(实时推理),能切换的线程不够——存储墙又出来了。
为什么内存发展这么慢
DRAM 工艺和逻辑芯片工艺走在两条路上。逻辑芯片(CPU/GPU)追求开关速度和功耗。DRAM 追求电容密度和漏电控制。同样 5nm 制程,逻辑芯片和 DRAM 芯片的工艺参数完全不同。DRAM 厂不能借用台积电的逻辑工艺线——需要完全独立的研发和产线。
全世界 DRAM 市场三家公司占 95%:三星、SK 海力士、美光。三家有各自闭源的工艺和设计。进入壁垒极高——百亿美元级资本开支,十年以上技术积累。
这就是为什么 DRAM 创新速度远落后于处理器。
和 NAND 的区别
DRAM 存数据靠电容——数据在内存里只要通电就一直活着(虽然需要不断刷新)。NAND 存数据靠电子被"困"在绝缘层里——断电也不丢。但代价是 NAND 的读写速度比 DRAM 慢三个数量级。
这就是计算机用 DRAM 做运行内存、用 NAND 做存储的根本原因。一个快但易失,一个慢但持久。
DRAM 很简单。一个晶体管,一个电容,反复刷新。过去五十年没能找到替代方案——不是没尝试过,磁阻内存、相变内存、铁电内存,每一个都困在成本或良率上。DRAM 统治了半个世纪。