Appearance
半导体随机存取存储器
2026 大纲 三(三)半导体随机存取存储器(SRAM 存储器、DRAM 存储器、Flash 存储器)。
一个存储元用几个器件,决定了后面的一切
SRAM 与 DRAM 的差别常被当成一张要背的对照表——谁快、谁贵、谁要刷新、谁集成度高。其实这张表只有一个源头:存一位用什么器件。SRAM 用 6 个晶体管搭成一个触发器,DRAM 用 1 个晶体管加 1 个电容。
从这一条往下推,每一行都是必然的:触发器只要通电就自己保持状态,所以 SRAM 不用刷新、但持续耗电;电容会漏电,所以 DRAM 必须周期性充电、但静态功耗低。6 个器件对 2 个器件,所以 SRAM 集成度低、位价高,DRAM 反之。触发器读出是电平驱动、信号强,电容读出信号微弱要经读放大,所以 SRAM 快、DRAM 慢。于是用途也就定了——SRAM 做 Cache,DRAM 做主存。
🔴 别去背这张表,记住"6 管触发器 vs 1 管 1 电容"这一句,其余每一条都能当场推出来。 判断题里出现"SRAM 需要刷新""DRAM 不需要重写"这类说法时,回到存储元就能立刻判死。
电容还带来一个不那么显然的后果:DRAM 的读出是破坏性的——读的时候电容电荷被放掉了,必须立刻写回去。这就是"存储周期大于存取时间"的来源,也是本篇第二个要分清的概念对。
先动手看一眼
一、先把"随机存取"这个词说准
本篇标题里的"随机存取"指的是访问任意存储单元的时间与该单元的物理位置无关,各单元存取时间相同。它描述的是访问方式,不是"能不能写"。所以 Flash 与各种 ROM 全都属于随机存取,而 CD-ROM 名字里带 ROM 却因为有机械寻道机构属于直接存取。四种存取方式的完整划分见 存储器的分类,这里只用到这一条。
二、SRAM 与 DRAM
| 特性 | SRAM | DRAM | 原因 |
|---|---|---|---|
| 是否需要刷新 | 否 | 是 | 电容会漏电,触发器只要通电就自持 |
| 集成度 | 低 | 高 | 6 个器件 vs 2 个器件 |
| 位价 | 高 | 低 | 同上 |
| 速度 | 快 | 慢 | 触发器读出是电平驱动;电容读出信号微弱,需要读放大 |
| 功耗 | 高 | 低 | 触发器持续耗电 |
| 存取时间与存储周期 | 几乎相等 | 存储周期 | 电容读出是破坏性的,读后需要重写恢复 |
| 典型用途 | Cache | 主存 | 速度与成本的取舍 |
最后一行那对概念要单独说清:存取时间是从发出命令到数据稳定输出的时间,存储周期是连续两次访问之间必须间隔的最小时间,两者的差就是恢复时间。DRAM 因为读后必须重写,恢复时间明显,所以存储周期显著大于存取时间;SRAM 没有这个负担,两者几乎相等。
⚠️ 刷新和重写是两回事,虽然机制相似(都是给电容充电)。 刷新是周期性的、主动的,为了对抗漏电,跟这一行有没有被访问过毫无关系;重写(恢复)是每一次读操作的固有组成部分。前者体现在"刷新开销"上,后者体现在"存储周期 > 存取时间"上。把两者混为一谈,算刷新开销时就会重复计。
顺带记一条跨章的:Cache 和 TLB 都由 SRAM 组成,不是 DRAM。它们要的是速度,而且容量都不大。
三、DRAM 的刷新
电容中的电荷会随时间泄漏,必须周期性地重新充电。三个要点先立住:刷新以"行"为单位(一次刷整行,行内所有单元一起充电);刷新周期通常是 2 ms;由存储器控制器自动完成,不需要 CPU 干预,对程序完全透明。
但"不需要 CPU 干预"不等于"没有代价"——刷新会占用存储器的时间,死区之内 CPU 若发出访存请求就得等。这与"打断程序"是两回事,答题时不要说成中断。
设存储阵列有
| 方式 | 做法 | 死区 | 代价 |
|---|---|---|---|
| 集中刷新 | 在每个刷新周期的末尾,集中一段时间把所有行逐行刷完 | 控制最简单 | |
| 分散刷新 | 把每个存储周期一分为二:前半段正常读写,后半段刷新一行 | 无死区 | 存储周期被延长为原来的 2 倍;且刷一遍只需 |
| 异步刷新 | 把刷新均匀分散到整个刷新周期内,每隔 | 被打散成很多个单存储周期 | 需定时器与刷新地址计数器;实际系统采用这种 |
三者的刷新总开销其实相同(都要刷
四、地址复用与行缓冲
DRAM 芯片把行地址和列地址分时复用同一组引脚,用
由此得到两条实用判据:引脚最少
不能一律用"总位数的一半"。设单元数为
⚠️ 数据引脚数 = 芯片位宽,这一项最容易漏算。 问"地址引脚和数据引脚总数"时,答案是
;若问引脚总数还要再加控制引脚。
引脚与刷新的两组走查:奇数指数时怎么枚举分解、三种刷新方式在同一片芯片上各是多少(想核对自己会不会把"一半"当通法时展开)
(一)
| 地址引脚数 | ||
|---|---|---|
| 1024 | 10 | |
| 128 | 7 | |
| 64 | 6 | |
| 64 | 6 | |
| 128 | 7 |
引脚最少即阵列最接近正方形。
(二)引脚总数。
(三)三种刷新方式的数字对照。 某 DRAM 有 128 行,存储周期
| 方式 | 死区 | 说明 |
|---|---|---|
| 集中刷新 | 占刷新周期的 | |
| 分散刷新 | 无 | 但存储周期从 |
| 异步刷新 | 每次 | 刷新间隔 |
(四)一道综合的。 某 DRAM 芯片容量
单元数
两者刷新的总时间相同(都是
五、Flash 存储器
Flash 的存储元是浮栅 MOS 晶体管。浮栅被绝缘层完全包围,注入进去的电荷没有泄漏通路——这就是它非易失、也不需要刷新的物理原因(对照 DRAM 的电容会漏电)。代价是充放电只能靠隧穿效应,需要高电压且耗时长,所以写比读慢一个数量级,读写是不对称的。
🔴 Flash 写之前必须先擦除。 编程只能单向把 1 变成 0;要把某一位从 0 改回 1,只能整块擦除。于是修改一页时得把该块中仍然有效的页搬到新块、再擦掉旧块,实际写入量远大于逻辑写入量,这叫写放大(SSD 的磨损均衡就是为此而设)。
由此也解释了 Flash 为什么不能拿来做主存,三条理由:写速度慢(比 DRAM 慢一到两个数量级)、不能原地更新、擦写寿命有限。第三条是 Flash 独有的约束——主存的写入频率会迅速耗尽它的寿命。
操作单位要分清:读和写(编程)按页(512 B ~ 4 KB),擦除按块(若干页)。读接近 RAM 的速度,写只能单向置 0,擦除把整块恢复成全 1、很慢。
三种半导体存储器放一起对照:
| SRAM | DRAM | Flash | |
|---|---|---|---|
| 存储元 | 6 管触发器 | 1 管 1 电容 | 浮栅 MOS 晶体管 |
| 易失性 | 易失 | 易失 | 非易失 |
| 需要刷新 | 否 | 是 | 否 |
| 读速度 | 最快 | 中 | 较快 |
| 写速度 | 最快 | 中 | 最慢(读写不对称) |
| 位价 | 最高 | 中 | 最低 |
| 擦写寿命 | 无限 | 无限 | 有限 |
| 典型用途 | Cache | 主存 | U 盘、SSD、BIOS |
Flash 属于 ROM 家族,该家族按可编程方式排列:MROM(掩模式,出厂固化不可改)→ PROM(用户可编程一次,不可擦除)→ EPROM(多次编程,紫外线整片擦除)→ EEPROM(多次编程,电擦除、字节级)→ Flash(多次编程,电擦除、块级)。EEPROM 与 Flash 的关键差别就在擦除单位:字节级更灵活但速度慢、成本高;块级速度快、密度高,适合大容量存储。
考点速记
- SRAM 用 6 管触发器、DRAM 用 1 管 1 电容,两者的全部差异由此推出,不要背表。存储周期
存取时间 恢复时间,DRAM 因破坏性读出而两者差别明显;刷新与重写机制相似但触发原因不同。 - 刷新以行为单位、周期通常 2 ms、由存储器控制器自动完成不需 CPU 干预(但会占用存储器时间);集中刷新有长死区、分散刷新无死区但存储周期翻倍、异步刷新间隔
,三者总开销相同,只是分布不同。 - 地址引脚数
(越接近方阵越少,相同则选行数少的),数据引脚数 芯片位宽;行缓冲位数 列数 位宽,是突发传送的硬件基础。Flash 靠浮栅故非易失,编程只能单向把 1 变 0 因而写前必须整块擦除,由此产生写放大,且擦写寿命有限。
这一节在真题里被考过的形式(下方「真题练习」逐题对应):
- 问某芯片的地址引脚数与数据引脚数之和:地址引脚按
取方阵算,数据引脚等于位宽,两者相加。⚠️ 漏掉数据引脚是这类题最典型的失分点。 - 问
、 取什么值能使地址引脚最少且刷新开销尽量小:先让阵列接近正方形把引脚压到最少,若有两种分解引脚数相同,选行数少的那个(刷新按行)。 - 问工作期间需要刷新的是哪种存储器:SRAM / SDRAM / ROM / Flash 里只有 SDRAM——判据是"靠电容存电荷"。
- 挑关于闪存的错误叙述:常设的错点是"读、写速度一样快"。Flash 写前要擦除,写远慢于读;而"随机访问""非易失""半导体器件"三条都成立。
- 给 I/II/III/IV 四条关于 RAM 与 ROM 的叙述问哪几条对:踩点在"都是随机存取"(对)、"都可用作 Cache"(错,ROM 不行)、"都需要刷新"(错,只有 DRAM)。
- 挑关于 TLB 与 Cache 的错误叙述:常设的错点是"都由 DRAM 组成"——两者都用 SRAM。其余"命中率都与局部性有关""缺失后都需访问主存""缺失处理都可由硬件实现"都对。
- 挑关于内存条的错误叙述:会同时踩容量换算、交叉编址、芯片地址引脚数(按
复用后的位数,不是行列位数相加)和行缓冲大小(列数 × 位宽)。
易错:把刷新和重写混为一谈。刷新是周期性主动的、与访问无关;重写是每次读的固有部分。算刷新开销时只算前者。
易错:地址引脚数用"总位数的一半"。指数是奇数时这句话不成立,要枚举分解取
最小。
易错:答"引脚数"时只给地址引脚。数据引脚
位宽,必须加上。
易错:认为刷新要 CPU 干预或会打断程序。它由存储器控制器自动完成、对程序透明,但会占用存储器时间使访存请求等待。
教材出处
- SRAM 与 DRAM 的存储元结构及由此产生的性能差异、存取时间与存储周期的定义:袁春风《计算机组成与系统结构(第 3 版)》§7.2 主存储器
- DRAM 芯片内部结构(图 7.11)、地址引脚复用与行缓冲对突发传送的支持:同上,印刷页 p216
- 刷新的三种方式与刷新周期、刷新以行为单位:同上 §7.2
- Flash 的浮栅结构、读写擦除单位与 ROM 家族的划分:同上 §7.2
相关知识
存储器的分类|DRAM 芯片与内存条|主存和 CPU 之间的连接|多模块存储器|存储器层次结构