SRAM 与 DRAM:原理、差异与存储层次
前言
SRAM(Static RAM,静态随机存取存储器)和 DRAM(Dynamic RAM,动态随机存取存储器)是计算机中最重要的两种易失性存储器(Volatile Memory)。
虽然它们都叫 RAM(Random Access Memory,随机访问存储器),都支持随机读写,但内部工作原理完全不同,导致它们在速度、成本、容量、功耗上有巨大差异。
可以这样理解:
SRAM = 用很多晶体管"牢牢记住"数据
DRAM = 用电容"暂时存住"数据,需要不停补电(刷新)
一、为什么会有 SRAM 和 DRAM
假设我们设计一台计算机,CPU 每秒可能执行几十亿条指令,需要不断地:
取数据 → 计算 → 再取数据 → 再计算
如果每次都去 SSD(几十~几百微秒),CPU 基本一直在等待:
CPU → SSD(几十~几百微秒)
所以必须有内存(几十纳秒):
CPU → 内存(几十纳秒)
但问题来了:如果内存做得特别快,就会特别贵。 于是工程师开始思考,能否有两种内存:
- 一种很快、很贵、容量小
- 另一种慢一点、很便宜、容量大
于是诞生了:
SRAM —— 速度最快
DRAM —— 容量最大
二、SRAM 是什么
SRAM 全称 Static Random Access Memory(静态随机访问存储器),这里最关键的是 Static(静态)。
意思不是不能写,而是:只要不断电,数据会一直保持,不用刷新。
SRAM 一个 bit 怎么保存
SRAM 一个 bit 不是电容,而是 6 个 MOS 管(晶体管),称为 6T SRAM Cell。结构上由两个反相器(Inverter)互相连接:
+-----------+
| |
▼ │
NOT NOT
▲ │
| ▼
+-----------+
形成双稳态(Bistable),只能稳定在两种状态:
Q = 1, /Q = 0 或 Q = 0, /Q = 1
为什么能一直保持
因为 NOT → NOT 形成反馈。例如:
Q = 1
NOT(Q) = 0
又反馈回来,保持 Q = 1
所以只要有电,数据一直保持,不用刷新。
SRAM 为什么叫 Static
因为不像 DRAM 那样"存进去 → 越来越弱 → 消失",SRAM 是"存进去 → 一直保持 → 直到断电",因此叫 Static。
SRAM 的读写过程
假设存的是 1,CPU 发起 Read,控制线路打开 Word Line,晶体管导通,从 Bit Line 读取。整个过程几十皮秒~几纳秒,非常快。
为什么 SRAM 贵
因为一个 bit 需要 6 个晶体管(有的设计用 8T、10T),面积非常大。例如 64GB 内存约等于 549755813888 bit,如果都用 6T,约需要 3.3 万亿个晶体管,几乎不可接受。所以 SRAM 不适合做大容量内存。
三、DRAM 是什么
DRAM 全称 Dynamic Random Access Memory,重点是 Dynamic(动态):数据不会一直保持。
DRAM 一个 bit 长什么样
非常简单,只有 一个 MOS + 一个电容,称为 1T1C(One Transistor, One Capacitor):
Bit Line
│
│
MOS
│
│
Capacitor
怎么表示 0 和 1?就是电容有没有电:有电 → 1,没电 → 0。因此面积极小。
电容为什么会漏电
现实世界没有理想电容,都会慢慢漏电。刚写进去是 █████████,过一会 ███████,再一会 ████,最后 █ ≈ 0,数据丢失。
所以必须 Refresh(刷新)
DRAM 必须隔一段时间重新充一次电,例如每 64ms 所有 Cell 重新"读一次 → 重新写回",这就是 Refresh。
为什么叫 Dynamic?因为数据必须不断刷新、动态保持。
为什么 DRAM 容量大
每个 bit 只有 1T + 1C,面积远小于 6T SRAM。同样芯片面积下,SRAM 只能做到几十 MB,而 DRAM 能做到几十 GB。
SRAM 和 DRAM 的速度差异
原因就在结构:
- SRAM:直接读触发器状态。
- DRAM:读取电容 → 放大 → 恢复电容 → 结束,多了很多步骤,因此速度慢。
四、为什么 DRAM 读后还要写回(破坏性读取)
这是 DRAM 最经典的特点。读取过程是:电容电荷流向 BitLine,结果电容没电了——读操作本身就把电荷消耗掉了。
因此:
Read → Sense Amplifier → 恢复 → Write Back
DRAM 的读取属于破坏性读取(Destructive Read),必须恢复。
五、Sense Amplifier(感应放大器)
电容非常小,例如只有几十 fF(飞法拉),里面电荷极少。读取时 BitLine 只会变化一点点,例如从 0.50000V 变成 0.50012V,CPU 根本无法识别。
于是加入 Sense Amplifier,作用是把极小变化放大成标准 0/1,同时重新充回电容。所以 Sense Amplifier 既负责读取,也负责恢复。
六、为什么 Cache 都用 SRAM
CPU 在 1ns 内就执行很多条指令。如果 Cache 还要 Refresh、Sense、恢复,CPU 会慢很多。因此:
L1、L2、L3 Cache 全部使用 SRAM
七、为什么内存都用 DRAM
主存容量需求远大于速度需求。如果 64GB 全部用 SRAM,成本高得离谱。DRAM 虽然慢、需要刷新,但容量巨大、价格便宜,所以主存(Memory)= DRAM。
八、SRAM 与 DRAM 的整体架构对比
SRAM(静态) DRAM(动态)
┌────────────────────────────┬────────────────────────────┐
│ 存储单元:6T(6个晶体管) │ 存储单元:1T1C(1晶体管+1电容) │
├────────────────────────────┼────────────────────────────┤
│ 数据保持:持续供电即可保持 │ 电容漏电,需要周期性刷新 │
├────────────────────────────┼────────────────────────────┤
│ 读取方式:直接读取触发器状态 │ 读取电容电荷,读后需恢复 │
├────────────────────────────┼────────────────────────────┤
│ 读取是否破坏数据:否 │ 是(破坏性读取) │
├────────────────────────────┼────────────────────────────┤
│ 速度:最快(纳秒级) │ 较慢(几十纳秒) │
├────────────────────────────┼────────────────────────────┤
│ 密度:低 │ 高 │
├────────────────────────────┼────────────────────────────┤
│ 成本:高 │ 低 │
├────────────────────────────┼────────────────────────────┤
│ 典型容量:KB~几十MB │ GB 级 │
├────────────────────────────┼────────────────────────────┤
│ 主要用途:CPU Cache │ 主内存(DDR、LPDDR 等) │
└────────────────────────────┴────────────────────────────┘
九、为什么现代计算机两者都不可或缺
现代计算机充分利用了两者的优势,形成存储层次结构(Memory Hierarchy):
↑ 速度越来越快
↑ 成本越来越高(每 bit)
↑ 容量越来越小
CPU 寄存器(Registers)
│
▼
L1 Cache(SRAM)
│
▼
L2 Cache(SRAM)
│
▼
L3 Cache(SRAM)
│
▼
主内存 DDR4 / DDR5(DRAM)
│
▼
SSD / HDD(非易失性存储)
↓ 容量越来越大
↓ 成本越来越低
↓ 速度越来越慢
这种分层设计的核心思想是:
- SRAM 提供极低延迟,满足 CPU 对热点数据的高速访问需求。
- DRAM 提供大容量、低成本的主存空间,存放正在运行程序的数据。
- SSD/HDD 提供持久化存储,保存操作系统、应用程序和文件。
因此,并不是 SRAM 或 DRAM 谁更先进,而是它们在整个计算机体系结构中承担着不同角色,共同在性能、容量和成本之间实现平衡。