核心差异

SRAM(静态随机存取存储器):一个存储单元通常由 6 个晶体管组成(6T),构成一个双稳态触发器。只要供电,数据就保持不变,不需要刷新。

DRAM(动态随机存取存储器):一个存储单元是 1 个晶体管 + 1 个电容(1T1C)。电容存电荷表示数据,但会漏电,需要定期刷新。

由此产生的差异

密度

SRAM 一个单元 6 个晶体管,DRAM 只需 1 个晶体管 + 1 个电容。

DRAM 的密度远高于 SRAM——同样的芯片面积,DRAM 能存储的数据量是 SRAM 的 6 倍以上。

这就是为什么内存(DRAM)能做到几十 GB,而缓存(SRAM)只有几十 MB。

速度

SRAM 的读取是"直接读触发器的状态",速度快,访问延迟通常 1–4 个周期。

DRAM 的读取是"检测电容上的微小电荷",需要经过放大、比较,且要先选通行再选通列,速度慢得多,访问延迟通常是 SRAM 的 10 倍以上。

功耗

SRAM 不需要刷新,但晶体管持续存在漏电流。

DRAM 需要定期刷新(通常每 64ms 刷新一遍所有行),刷新操作本身消耗能量,且占用带宽。

在大容量场景下,DRAM 的整体功耗更低(因为单元结构简单)。

成本

按每比特成本计算,DRAM 远低于 SRAM。

因此形成的层次结构

  • L1/L2/L3 缓存:SRAM。需要极致的速度,容量可以牺牲;
  • 主内存:DRAM。需要大容量,速度可以慢一点;
  • 存储(SSD/硬盘):NAND Flash 或磁记录。需要更大容量、非易失、低成本,速度最慢。

这个层次结构的本质,是用成本换容量,用容量换速度的权衡。

一些细节

DRAM 的读破坏性

读取 DRAM 单元时,会把电容上的电荷"读出来",这个过程会破坏存储的数据。

因此每次读取后必须回写(Restore)——把读出的值重新写回电容。这也增加了访问延迟。

行缓冲与访问局部性

DRAM 的访问分两步:先激活(Activate)一整行,把整行数据读入行缓冲;再从行缓冲中读取特定列。

如果后续访问在同一行(行命中),速度会快得多——因为不需要重新激活。

这就是为什么"顺序访问内存"比"随机跳跃访问"快——顺序访问往往落在同一行,命中率高。这与前文提到的 CPU 缓存局部性原理叠加,共同决定了内存访问性能。

刷新对性能的影响

DRAM 需要定期刷新。在刷新期间,对应的存储体(Bank)无法访问。

虽然现代 DRAM 的刷新机制已经相当优化(如分散刷新),但仍会造成一定的带宽损失。

新型技术的尝试

业界一直在寻找"兼具 SRAM 速度和 DRAM 密度"的技术,如各类存储级内存(SCM)。

Intel 的傲腾(Optane,基于 3D XPoint)曾是最接近商业化的尝试,但该产品线已停止。

说明:本文为存储器技术的公开知识整理。