一文搞懂 RAM:随机存取存储器核心原理、SRAM/DRAM 分类与系统定位
系列:微机原理与存储器系列(第 1 篇:RAM 基础原理篇)
摘要:本文从存储器分层体系切入,讲清随机存取存储器 RAM 的本质、易失性与随机访问特性,重点对比 SRAM 的 6T 单元与 DRAM 的 1T+1C 单元,解析刷新机制、性能指标、CPU 三总线连接、地址线计算与存储器扩展。关键词:RAM、SRAM、DRAM、ROM、EPROM、微机原理、存储器。
关键词/标签:微机原理存储器RAMSRAMDRAMROMEPROM嵌入式硬件
首图建议:统一系列风格,标注“系列 01:RAM 基础原理篇”。
1. 开篇:存储器分层体系与 RAM 的系统定位
核心结论:RAM 是 CPU 与存储体系之间的可读写、易失性桥梁;在典型微机系统中,SRAM 主要担任 Cache,DRAM 主要担任主存。
现代计算机的存储器不是单一器件,而是一个分层体系。越靠近 CPU,速度越快、容量越小、成本越高;越远离 CPU,速度越慢、容量越大、单位成本越低。典型层级如下:
CPU 寄存器 ↓ 速度最快、容量极小、成本极高 Cache(SRAM,静态随机存取存储器) ↓ 主存(DRAM,动态随机存取存储器) ↓ SSD / HDD / 外存 ↓ 离线存储 / 网络存储在这个体系中,随机存取存储器(Random Access Memory,RAM)处于 CPU 与外部存储之间的关键位置。CPU 运行程序时,指令和数据通常先从外存加载到主存,再由 Cache 逐级送入 CPU。因此,RAM 不是“永久仓库”,而是“运行工作台”。
RAM 的系统定位可以概括为三点:
- 主存角色:由 DRAM 构成,存放正在运行的操作系统、进程、堆栈、全局变量和 I/O 缓冲。
- 缓存角色:由 SRAM 构成,放在 CPU 内部或附近,缓解 CPU 与主存之间的速度差距。
- 固件对照角色:只读存储器(Read-Only Memory,ROM)、可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM)以及 Flash 等非易失存储器,通常存放 BIOS、Bootloader、固件和常量参数;而 RAM 存放运行时可变数据。ROM/EPROM 也可“随机访问”,但 RAM 的核心标签是“可读写 + 易失性”。
从微机原理考点看,RAM 与 CPU 的连接离不开三组总线:地址线决定“访问哪个单元”,数据线决定“传多少位”,控制线决定“读还是写、什么时候选通”。这也是后文第 6 节的重点。
2. RAM 核心定义、分类与 SRAM/DRAM 总览
核心结论:RAM 的本质是“可读可写、随机访问、掉电易失”的半导体存储器;其两大主流分类是 SRAM 与 DRAM,分别对应速度优先和密度/成本优先。
2.1 RAM 的两个核心特性
第一,随机访问。
“随机存取”不是指数据随机,而是指访问任意存储单元所需时间与物理位置基本无关。相比之下,磁带是顺序存取,访问不同位置的时间差异很大。RAM 的地址译码机制使其能够直接定位目标单元。
第二,易失性。
RAM 依赖电力维持数据。一旦断电,SRAM 的双稳态状态和 DRAM 的电容电荷都会丢失。因此 RAM 不适合长期保存数据,只适合运行时存储。
2.2 RAM 的分类总览
按存储机理,RAM 主要分为:
| 分类 | 英文全称 | 存储单元 | 是否刷新 | 速度 | 集成度 | 成本 | 典型用途 |
|---|---|---|---|---|---|---|---|
| 静态 RAM | Static Random Access Memory,SRAM | 6T 双稳态触发器 | 不需要 | 快 | 低 | 高 | Cache、寄存器堆、小容量高速缓冲 |
| 动态 RAM | Dynamic Random Access Memory,DRAM | 1T+1C | 需要 | 较慢 | 高 | 低 | 主存、显存、大容量内存 |
SRAM 的 6T 单元由六个 MOS 晶体管组成:两个 PMOS 上拉管、两个 NMOS 下拉管构成两个交叉耦合反相器,另外两个 NMOS 作为访问管。部分资料将其描述为“2 个 PMOS + 4 个 NMOS”,其中 4 个 NMOS 包含 2 个下拉管和 2 个访问管[[1]][[2]][[3]];主流标准 6T 结构也可理解为“2 PMOS + 2 NMOS 反相器 + 2 NMOS 访问管”[[4]][[5]]。
DRAM 的 1T+1C 单元由一个晶体管和一个电容器构成,利用电容是否带电表示 0 或 1[[6]][[7]][[8]]。由于电容会漏电,DRAM 必须周期性刷新,这也是“动态”一词的来源[[9]][[10]][[11]]。
2.3 RAM 与 ROM/EPROM 的边界
| 类型 | 可读 | 可写 | 掉电保持 | 典型用途 |
|---|---|---|---|---|
| RAM | 是 | 是 | 否 | 运行变量、堆栈、主存、Cache |
| ROM | 是 | 通常否/特殊条件 | 是 | 固化程序、启动代码 |
| EPROM | 是 | 紫外线擦除后写入 | 是 | 老式固件、实验教学 |
| EEPROM/Flash | 是 | 电可擦写 | 是 | 参数存储、固件、SSD |
因此,在微机系统中常说“RAM 掉电丢失,ROM/EPROM/Flash 掉电保存”。RAM 的选择主要看速度、容量、功耗和成本;ROM/EPROM 的选择主要看非易失性和可更新性。
3. SRAM 原理:6T 存储单元、读写过程与应用
核心结论:SRAM 用交叉耦合反相器形成双稳态,不需要刷新;速度快、噪声容限设计关键,但单元面积大、成本高,因此主要用于 Cache。
3.1 6T SRAM 单元结构
标准 6T SRAM 单元由六个晶体管组成:
- P1、P2:两个 PMOS 上拉管,源极接电源 VDD。
- N1、N2:两个 NMOS 下拉管,源极接地 VSS。
- N3、N4:两个 NMOS 访问管,也称选择管或传输管,栅极接字线 WL,源极分别接位线 BL 和互补位线 BLB,漏极接存储节点 Q 和 Qb。
其中,P1 与 N1 组成第一个 CMOS 反相器,P2 与 N2 组成第二个 CMOS 反相器;两个反相器的输出与输入交叉耦合,形成双稳态锁存器。第一节点 Q 和第二节点 Qb 储存互为反相且互锁的信息[[12]]。M1~M4 构成双稳态电路,用于锁存 1 位数字信号;M5、M6 为传输管,负责在读/写操作时将存储单元与外围电路连接或断开[[13]]。
结构示意图可简化为:
VDD ┌────┴────┐ P1 P2 │ │ Q ────┤ ├──── Qb │ │ N1 N2 │ │ GND GND WL ──┬──────────────┬── WL │ │ N3 N4 │ │ BL ──┘ └── BLB该结构的关键是交叉耦合:若 Q 为高、Qb 为低,则 N2 导通、P1 导通,进一步维持 Q 高、Qb 低;反之亦然。因此只要不断电,状态可稳定保持,无需刷新。
3.2 SRAM 读操作过程
读操作大致分为四步:
- 预充电:位线 BL 和 BLB 被预充电到高电平。
- 字线选通:字线 WL 变为高电平,访问管 N3、N4 导通,存储节点与位线连接。
- 差分放电:若存储节点 Q 为低,则 BL 通过 N3 和下拉管 N1 放电,电压略微下降;BLB 保持高电平。反之则 BLB 下降。
- 感测放大:感测放大器检测 BL 与 BLB 之间的微小电压差,并放大为完整逻辑电平,输出数据。
读操作的关键稳定性问题是“读破坏”:如果访问管过强、下拉管过弱,读操作可能把存储节点拉高到反相器翻转阈值以上,导致数据意外翻转。因此设计中要保证下拉管电流大于访问管电流,即提高单元比,增强读稳定性[[14]][[15]]。
3.3 SRAM 写操作过程
写操作也分三步:
- 驱动位线:写驱动器把新数据送到 BL 和 BLB,例如写 0 时 BL 为低、BLB 为高。
- 字线选通:WL 拉高,访问管 N3、N4 导通。
- 强制翻转:强驱动的位线通过访问管改变存储节点 Q、Qb 的电平,覆盖原有状态,交叉耦合反相器随后锁定新数据。
写操作的关键是“可写性”:访问管和下拉管的总驱动能力必须强于另一侧上拉管,才能把原本为高的存储节点拉低,完成翻转。写能力与上拉比、访问管强度密切相关。
3.4 新型 6T 与读写分离思路
传统 6T SRAM 在读操作时,存储节点通过访问管直接连接位线,容易受到位线波动和噪声影响;读/写共用端口也可能降低噪声容限。对此,有研究提出读/写分开的新型 6T 结构:由 NMOS 管 M5、M6 负责读操作,NMOS 管 M1、M4 和 PMOS 管 M2、M3 完成写操作,使存储节点与读输出分离,读/写时仅一个位线参与工作,从而避免位线波动干扰存储节点,提高噪声容限和稳定性,并降低功耗[[16]]。
需要注意的是,[[17]] 仅包含书籍元数据与阅读引导,未提供可直接引用的技术正文,因此本节技术细节主要依据 [[18]][[19]]等资料。
3.5 SRAM 的应用定位
SRAM 的典型应用包括:
- CPU 一级/二级/三级 Cache;
- 寄存器堆、TLB、分支预测器;
- 微控制器内部高速 RAM;
- 网络交换芯片、FPGA 片内块 RAM;
- 小容量、高速度、低延迟缓冲。
SRAM 不需要刷新,控制逻辑相对简单,速度极快;但每个单元 6 个晶体管,面积大、集成度低、成本高,因此不适合做 GB 级主存。
4. DRAM 原理:1T+1C 存储、刷新机制与应用
核心结论:DRAM 用 1 个晶体管和 1 个电容存储 1 位数据,密度高、成本低,但电容漏电导致必须定期刷新,因此适合做主存,而不是 Cache。
4.1 1T+1C 存储单元
DRAM 的基本存储单元由 1 个晶体管(1T)和 1 个电容器(1C)组成[[20]][[21]][[22]]。晶体管作为访问开关,栅极接字线 WL,源极/漏极分别接位线 BL 和电容。电容是否带电表示 0 或 1:
- 写入 1:位线驱动高电平,晶体管导通,电容充电。
- 写入 0:位线驱动低电平,晶体管导通,电容放电。
- 读取:先预充电位线,再打开晶体管,电容与位线发生电荷分享,位线电压微小变化,感测放大器检测并放大。
当栅极施加电压时,数据电压放置在位线上并充电到存储电容器中[[23]][[24]]。这种结构只需 1T+1C,单元面积极小,因此 DRAM 集成度远高于 SRAM。
但 DRAM 读操作具有破坏性:电荷分享后电容电荷被扰动,读出后必须立即重写。此外,电容存在自然漏电,存储电荷会随时间泄漏,导致信息丢失,因此必须定期刷新[[25]][[26]][[27]]。
4.2 DRAM 刷新机制
刷新通常按行进行。刷新时,行地址被选中,整行数据被读出到刷新放大器,立即重写回原行;此时列选择信号为 0,数据不输出到总线[[28]][[29]][[30]]。刷新周期通常指“最大刷新间隔”,即所有行必须在该时间内完成一次刷新。老式 DRAM 常取 2 ms[[31]][[32]]现代 DRAM 常取 64 ms 或更长[[33]][[34]]。
三种典型刷新方式如下:
| 刷新方式 | 实现思路 | 优点 | 缺点 | 适用性 |
|---|---|---|---|---|
| 集中刷新 | 刷新周期前半段正常读写,后半段集中逐行刷新所有行 | 控制简单,正常访问时段连续 | 存在“死时间”,刷新期间 CPU 无法访问 | 很少使用[[35]][[36]][[37]] |
| 分散刷新 | 每个存取周期后立即刷新一行,存取周期被延长 | 无死时间,操作连续 | 存取周期显著延长,如 0.5 μs 变为 1 μs,高速性受损 | 较少使用[[38]][[39]][[40]] |
| 异步刷新 | 将刷新均匀分配,每隔固定时间刷新一行 | 消除死时间,又不过度延长存取周期,效率高 | 控制稍复杂 | 现代 DRAM 常用[[41]][[42]][[43]] |
举例:若 64 ms 内需刷新 4096 行,则平均刷新间隔为 64 ms / 4096 = 15.625 μs,每隔 15.625 μs 刷新一行,即可满足要求[[44]][[45]][[46]]。
需要注意一个常见争议:[[47]] 提到“分散式刷新也称异步式刷新”,这与多数资料将集中式、分散式、异步式列为三种不同方式的观点冲突[[48]][[49]][[50]]。按照主流计算机组成原理教材,分散式与异步式应视为不同策略:分散式强调“每次访问后刷新一行”,异步式强调“均匀间隔刷新一行”。
4.3 DRAM 的技术演进与应用
DRAM 从早期异步 DRAM 发展到 SDRAM、DDR SDRAM、DDR2/3/4/5、LPDDR、GDDR、HBM 等。其核心趋势是:
- 预取宽度增加;
- 双沿传输;
- Bank 并行;
- 更高频率;
- 更低电压;
- 3D 堆叠与 HBM 高带宽封装。
DRAM 的典型应用是主存、显存、FPGA 外部存储、网络包缓冲等。它容量大、成本低,但延迟高于 SRAM,且需要刷新控制。
5. RAM 性能指标、SRAM/DRAM 对比与选型
核心结论:RAM 选型本质是在速度、容量、成本、功耗之间折中;SRAM 胜在速度,DRAM 胜在密度和成本,二者不是替代关系,而是层级互补关系。
5.1 关键性能指标
| 指标 | 定义 | 关键点 |
|---|---|---|
| 存取时间(Access Time,TA) | 从发出读/写命令到数据完成读/写所需时间 | 反映单次访问延迟 |
| 存储周期(Cycle Time,TC) | 连续两次访问存储单元所需最小时间间隔 | DRAM 因恢复/刷新,TC 通常大于 TA;SRAM 中 TC 常接近 TA |
| 存储容量 | 可容纳的存储单元总数 | 常用字(Word)或字节(Byte)表示 |
| 带宽 | 单位时间存取的信息量 | 带宽 = 数据宽度 / 存储周期 × 效率 |
| 功耗 | 动态功耗、静态功耗、刷新功耗之和 | SRAM 待机功耗较高;DRAM 刷新功耗显著 |
| 集成度 | 单位面积可集成的存储单元数 | DRAM 单元面积远小于 SRAM |
| 成本 | 每 MB/GB 价格 | SRAM 昂贵,DRAM 便宜约 1/100 或更低 |
| 可靠性 | 噪声容限、软错误率、刷新稳定性 | SRAM 需读/写稳定性设计;DRAM 需刷新和 ECC |
5.2 SRAM 与 DRAM 对比
| 对比维度 | SRAM | DRAM |
|---|---|---|
| 存储单元 | 6T 双稳态触发器[[51]][[52]] | 1T+1C[[53]][[54]][[55]] |
| 是否刷新 | 不需要 | 需要,按行刷新[[56]][[57]][[58]] |
| 典型存取时间 | 1~50 ns,常见 <10 ns | 35~180 ns,具体取决于代际 |
| 存储周期 | 接近存取时间 | 大于存取时间,存在恢复/预充电 |
| 单元面积 | 大,约 140~280 F² 或 50~120 F² | 小,约 6~12 F² |
| 集成度 | 低 | 高,约为 SRAM 的 16 倍或以上 |
| 典型容量 | KB~MB 级 | GB 级 |
| 成本 | 高 | 低,约为 SRAM 的 1/100 或更低 |
| 功耗 | 待机功耗较高,读写功耗中等 | 静态功耗较低,刷新动态功耗高 |
| 典型用途 | Cache、寄存器堆 | 主存、显存 |
| 易失性 | 是 | 是 |
从表中可见,SRAM 和 DRAM 的差异并非“谁更好”,而是“谁更适合哪一层”。CPU 需要极低延迟,所以用 SRAM 做 Cache;主存需要大容量低成本,所以用 DRAM。ROM、EPROM、Flash 则负责非易失存储,形成完整层级。
5.3 选型原则
- 速度优先:选 SRAM,如 Cache、寄存器堆、小 FIFO。
- 容量/成本优先:选 DRAM,如主存、显存、大缓冲。
- 非易失优先:选 ROM、EPROM、EEPROM、Flash,如固件、启动代码、参数区。
- 低功耗嵌入式:片内 SRAM + 片内 Flash 常见;外部大容量可用 LPDDR。
- 高带宽计算:HBM、GDDR 等 DRAM 变体用于 GPU/AI 加速器。
6. 微机系统中的 RAM:CPU 连接、容量计算、扩展与总结
核心结论:CPU 通过地址线选单元、数据线传数据、控制线定操作;存储容量由地址线数量和数据线数量共同决定;存储器扩展分为位扩展、字扩展和字位同时扩展。
6.1 地址线、数据线、控制线的作用
| 总线 | 作用 | 与 RAM 的关系 |
|---|---|---|
| 地址线 | 传输地址信号,确定 CPU 访问哪个存储单元 | 地址线数量 n 决定可寻址单元数 2^n;低位接芯片地址,高位用于片选译码 |
| 数据线 | 在 CPU 与存储器之间传输数据 | 数据线数量 m 对应存储字长;若芯片位数不足,需位扩展 |
| 控制线 | 控制读写时序和芯片选通 | 包括 OE、WE、CS、MREQ、RD、WR;DRAM 还有 RAS、CAS |
典型连接逻辑:
CPU ├── 地址总线 A0..An ──┬── 低位地址 → RAM 芯片地址引脚 │ └── 高位地址 → 译码器 → 片选 CS# ├── 数据总线 D0..Dm ──── RAM 数据引脚 └── 控制总线 ├── RD# / OE# → 读使能 ├── WR# / WE# → 写使能 └── MREQ# → 存储器请求对于 DRAM,地址线常分时复用:先送行地址,RAS# 锁存;再送列地址,CAS# 锁存。因此 DRAM 引脚中常见:
A0..An : 行/列地址复用输入 RAS# : 行地址选通,低有效 CAS# : 列地址选通,低有效 WE# : 写使能,低有效 D/Q : 数据输入/输出 VDD/VSS : 电源/地SRAM 典型引脚:
A0..An : 地址输入 D0..Dm : 数据双向 CS# : 片选,低有效 OE# : 输出使能,低有效 WE# : 写使能,低有效 VDD/VSS : 电源/地具体引脚以数据手册为准,但上述命名是微机原理考题中的常见形式。
6.2 由地址线计算存储容量
核心公式:
存储单元数 = 2^地址线数量 总容量(bit) = 2^地址线数量 × 数据线数量 总容量(Byte) = (2^地址线数量 × 数据线数量) / 8例子:
若地址线 n = 10,数据线 m = 8: 存储单元数 = 2^10 = 1024 总容量 = 1024 × 8 bit = 8192 bit = 1024 Byte = 1 KB若地址线 n = 20,数据线 m = 8:
容量 = 2^20 × 8 bit = 1 M × 8 bit = 1 MB若地址线 n = 20,数据线 m = 16:
容量 = 2^20 × 16 bit = 2 MB考点速记:
- 地址线决定“有多少个单元”;
- 数据线决定“每个单元多少位”;
- 片选译码决定“用哪一片”;
- 读写控制决定“读还是写”;
- DRAM 的 RAS/CAS 决定“行地址还是列地址”。
6.3 存储器扩展的常用方法
| 扩展方式 | 目的 | 连接方法 | 例子 |
|---|---|---|---|
| 位扩展 | 增加存储字长 | 地址线、片选线、控制线并联;数据线分别接到数据总线不同位 | 2 片 1K×4 组成 1K×8 |
| 字扩展 | 增加存储单元数量 | 数据线、控制线并联;低位地址并联;高位地址经译码器产生片选 | 2 片 1K×8 组成 2K×8 |
| 字位同时扩展 | 同时增加字数和字长 | 先位扩展成目标字长,再字扩展成目标容量 | 16 片 1K×4 组成 8K×8 |
注意一个常见易错点:用 1K×4 芯片组成 8K×8 存储器,需要 8 组字扩展 × 2 组位扩展 = 16 片,而不是 8 片。因为 8 片 1K×4 只能组成 8K×4,字长仍缺 4 位。
位扩展示意:
CPU 数据线 D0..D7 │ ┌─────┴─────┐ │ │ 1K×4 芯片1 1K×4 芯片2 D0..D3 D4..D7 地址线共用,CS# 共用字扩展示意:
CPU 高位地址 → 译码器 → CS0# → 1K×8 芯片1 → CS1# → 1K×8 芯片2 数据线 D0..D7 并联 低位地址 A0..A9 并联6.4 系统连接与考点总结
在微机系统中,RAM 与 CPU 的连接可以概括为:
- 地址线连接:CPU 低位地址接所有芯片的地址输入;高位地址接译码器,译码输出接各芯片片选。
- 数据线连接:CPU 数据总线按位连接;若芯片位数不足,进行位扩展。
- 控制线连接:读信号、写信号、存储器请求信号按芯片要求连接;DRAM 还需 RAS/CAS 和刷新控制。
- 容量计算:先算地址线对应单元数,再乘数据线位数,得到总 bit 数,除以 8 得到 Byte。
- 扩展判断:字数不够做字扩展;位数不够做位扩展;两者都不够做字位同时扩展。
一个完整的系统定位图如下:
┌──────────────┐ │ CPU │ │ 寄存器/Cache │ ← SRAM └──────┬───────┘ │ 地址/数据/控制总线 ┌──────┴───────┐ │ 主存 DRAM │ ← 运行时程序与数据 └──────┬───────┘ │ ┌──────┴───────┐ │ ROM/EPROM/Flash │ ← 固件、启动代码、参数 └──────────────┘结语:RAM 是微机系统的“运行工作台”
RAM 的核心可以压缩成三句话:
- 随机访问:访问时间与物理位置基本无关。
- 易失性:掉电即丢失,适合运行时数据,不适合长期保存。
- 分层互补:SRAM 快而贵,做 Cache;DRAM 大而廉,做主存;ROM/EPROM/Flash 非易失,做固件和参数存储。
从微机原理考试角度看,必须掌握:SRAM 6T 与 DRAM 1T+1C 的结构差异;DRAM 为什么刷新、三种刷新方式的死时间/存取周期影响;地址线数量与容量计算;位扩展、字扩展、字位同时扩展的连接方法;以及 CPU 地址线、数据线、控制线在存储器接口中的作用。
下一篇预告:RAM 芯片命名解密:常见型号、参数含义与基础配置指南。
系列闭环:
- 第 1 篇:RAM 基础原理篇(本文)
- 第 2 篇:RAM 芯片命名解密:常见型号、参数含义与基础配置指南(待更新)
- 第 3 篇:ROM/EPROM/EEPROM/Flash 原理与选型(待更新)
- 第 4 篇:存储器扩展与地址译码实战(待更新)