存储系统

中优先级
存储器的概念经常在选择题中考察,需要了解常见存储器的类型和特点,在选择题中看见相关名词能够辨识选出正确答案。

存储系统的层次结构

存储系统是计算机体系结构的核心组成部分之一,用于存储程序指令和数据,以支持处理器的运算需求。为了平衡速度、容量和成本,现代计算机采用了分层存储体系结构,从最快速但容量有限的 寄存器 到容量大但速度较慢的辅助存储设备,形成了存储层次结构。

Regs
L1 cache
(SRAM)
L2 cache
(SRAM)
L3 cache
(SRAM)
Main Memory
(DRAM)
Local secondary storage
(local disks)
Remote secondary storage
(distributed file systems, web servers)
Smaller,
faster
Larger,
slower

如上图所示,越靠近金字塔上层的容量越小但速度越快,越靠近金字塔下层的容量越大但速度越慢。计算机的存储系统包含以下层次:

  1. 寄存器(Registers)
    • 寄存器是位于处理器内部的最快速存储单元。
    • 它们提供极快的数据访问速度,但其容量非常有限。
    • 典型访问延迟:约 0.2~1 ns(通常只需 1 个 CPU 时钟周期)。
  2. 一级缓存(L1 Cache)
    • L1 缓存位于处理器内部,比寄存器空间稍大,速度比 L2 和 L3 Cache 更快。
    • 它通常分为 数据缓存(用于存储数据)和 指令缓存(用于存储指令)。
    • 典型访问延迟:约 0.5~1.5 ns(约 2~5 个 CPU 时钟周期)。
  3. 二级缓存(L2 Cache)
    • L2 缓存比 L1 缓存大,并且位于处理器和主内存之间。
    • 它的速度比 L1 慢,但比主内存快。
    • 典型访问延迟:约 2~5 ns(约 10~20 个 CPU 时钟周期)。
  4. 三级缓存(L3 Cache)
    • 在某些系统中,还有 L3 缓存,这是一种更大但速度更慢的缓存。
    • 它位于 L2 缓存和主内存之间,旨在进一步减少对主内存的访问。
    • 多个 CPU 核心通常共享同一个 L3 Cache。
    • 典型访问延迟:约 10~20 ns(约 30~70 个 CPU 时钟周期)。
  5. 主存(RAM)
    • 就是我们常说的内存,比缓存慢,但比硬盘快得多,并且容量比缓存大。
    • 主存 用于存储正在运行的程序和当前使用的数据。
    • 典型访问延迟:约 50~100 ns(约 150~300 个 CPU 时钟周期)。
  6. 辅助存储(如硬盘驱动器或固态驱动器)
    • 辅助存储设备提供大量的永久存储。
    • RAM 相比,这些设备访问速度较慢,但能够存储更多的数据,并且在断电时不会丢失数据。
    • 机械硬盘(HDD)和 固态硬盘(SSD)是常见的辅助存储设备。
    • 典型访问延迟
      • NVMe SSD:约 20~100 μs(微秒)
      • SATA SSD:约 50~200 μs
      • 机械硬盘(HDD):约 5~15 ms(毫秒)

可以发现,相邻两层存储器之间通常都存在 数倍甚至数十倍 的速度差异。例如,从 L3 Cache 访问数据只需十几纳秒,而访问 主存 往往需要几十纳秒;如果数据需要从 SSDHDD 中读取,则访问时间又会增加到微秒甚至毫秒级,相比 Cache 慢了数千到数百万倍。因此,如果 CPU 每次访问数据都直接访问主存或磁盘,将会有大量时间处于等待状态,计算能力无法得到充分发挥。

存储器层次结构的主要思想是:上一层存储器作为下一层存储器的高速缓存。当 CPU 要读取某个数据时,会优先在速度最快的存储器中查找:

  • 先访问 Cache
  • 如果 Cache 中没有(发生 Cache Miss),则访问 主存
  • 如果 主存 中也没有,则访问磁盘,此时数据会先从磁盘调入 主存,再从 主存 调入 Cache,最后供 CPU 使用。

Cache—主存层 主要解决 CPU 和主存之间巨大的速度差异问题。主存和 Cache 之间的数据调动完全由 硬件自动完成,程序员通常无需关心数据何时进入或离开 Cache

主存—辅存层 主要解决存储系统容量不足的问题。主存和 辅存 之间的数据调动由 硬件和操作系统共同完成(例如虚拟内存、分页机制),对于应用程序员来说也是透明的。程序只需按照统一的地址空间访问数据,而无需关心数据当前位于主存还是磁盘中。

RAM

半导体随机存储器的英文为 Semiconductor Random-Access MemoryRAM)。

RAM · Random-Access Memory 随机存储器半导体 · 随机访问 · 易失性 · 运行时存储内存条 (DIMM) 示意DRAMDRAMDRAMDRAMDRAMDRAM⚡ 随机访问 · 恒定时延易失 · 掉电数据丢失「随机访问」是什么?0x000x010x020x030x040x050x06直接寻址对比:磁带/磁盘 顺序访问必须按顺序逐个读取RAM 的两大分类SRAMStatic RAM · 静态随机存储器• 存储单元:4-6 个晶体管 (触发器)• 速度:• 功耗:静态低• 成本高 · 集成度低 · 容量小• 无需刷新用途CPU Cache寄存器DRAMDynamic RAM · 动态随机存储器• 存储单元:1 晶体管 + 1 电容 (1T1C)• 速度:较慢• 功耗:刷新带来动态功耗• 成本低 · 集成度高 · 容量大需周期性刷新(电容漏电)用途主内存显存

首先说明这个名称中各部分的含义:

  • 半导体:这种存储器使用硅等半导体材料制造,晶体管是构成半导体存储器的基本器件。
  • 随机访问:可以通过地址直接访问存储器中的任意位置,并且访问不同位置所需的时间基本相同。它不同于磁带等需要按照顺序查找数据的存储设备。

随机存储器主要分为 SRAMDRAM 两种。

SRAM

SRAM(Static RAM,静态随机存取存储器)使用触发器构成基本存储单元。一个 SRAM 存储单元通常由 4~6 个晶体管 组成,用于存储 1 bit 数据,如下图所示:

VDDM6M5M2M4M3M1WLBLBLQQ

只要电源持续供应,触发器的状态就可以一直保持,因此 SRAM 不需要刷新

SRAM 主要用于 CPU 的 Cache(L1/L2/L3)、寄存器文件以及嵌入式系统中的小容量高速存储器。

DRAM

DRAM(Dynamic RAM,动态随机存储器)使用 1 个晶体管(Transistor)1 个电容器(Capacitor),即 1T1C 结构,构成基本存储单元。每个存储单元存储 1 bit 数据。

WL
BL
T1
STORE
C

与 SRAM 使用触发器保存状态不同,DRAM 利用电容器中是否存有电荷表示数据。由于电容器会随着时间不断漏电,因此数据不能永久保持,必须定期进行 刷新(Refresh),重新恢复电容器中的电荷。

DRAM 具有 集成度高、成本低、容量大 等特点,因此主要用于计算机的 主存、显卡显存等大容量存储设备。

二维阵列与行列地址

DRAM 和 SRAM 在宏观上都采用 二维存储阵列 组织数据,并通过字线和位线访问存储单元。二者的主要区别在于所使用的 基本存储单元 不同。

ARASCASDataR/W

DRAM 中:

  • 每个 存储单元(Cell) 只能存储 1 bit 数据;
  • 电容器(Capacitor) 用于保存电荷:
    • 有电荷通常表示 1
    • 无电荷通常表示 0
  • 晶体管(Transistor) 相当于一个开关,由 字线(Word Line) 控制;

由于一个 Cell 只能保存 1 bit 数据,而计算机通常一次需要读写多个 bit,因此一个 可寻址地址(Addressable Location) 往往对应多个 Cell 共同组成。

例如,一个 4 bit 宽的 DRAM 芯片,每个可寻址地址对应 4 个 Cell,分别存储这 4 个 bit。为了实现这一点,DRAM 内部通常采用 多个位平面(Bit Plane) 并行工作的组织方式。

每个位平面都是一个独立的 二维 Cell 阵列,其中的每个 Cell 存储 1 bit 数据。所有位平面具有完全相同的行、列结构,并共享相同的 行地址(Row Address)列地址(Column Address)

当访问某个地址时,控制器利用相同的行地址和列地址,在所有位平面中同时选中对应位置的 Cell。每个位平面分别读出(或写入)1 bit 数据,最终组合成该地址对应的 4 bit 数据。

1位平面 0 (LSB)011位平面 3 (MSB)行地址 (Row)列地址 (Col)Cell (存储单元)物理存储的最小单位仅存储 1 bitBit Plane (位平面)独立的二维 Cell 阵列负责该地址的其中 1 bitAddressable Location (可寻址地址)同一 (行, 列) 在各位平面中的 Cell被同时选中并组合成一次访问的数据1101bit3bit2bit1bit01 个地址 → 4 bit 数据位平面 (Bit Plane)被同一 (行,列) 选中的 Cell
注意

需要区分两个概念:

  • Cell(存储单元):物理存储的最小单位,只能存储 1 bit
  • Address(可寻址地址):也可以叫做 memory location,指的是 CPU 或内存控制器访问 DRAM 的逻辑单位,一个地址可以对应多个 Cell(如 4 bit、8 bit、16 bit 等)。

DRAM 对外提供的是可寻址地址(Address)。

为了提高存储密度,DRAM 将每个 bit 的存储单元组织成二维 Cell 阵列。访问某个地址时,控制器首先将地址划分为 行地址(Row Address)列地址(Column Address),利用这两部分地址在所有 Cell 阵列中同时选中相同位置的 Cell。

假设每个 Cell 阵列共有 行、 列,则:

  • 行地址需要 位;
  • 列地址需要 位;

因此,一个可寻址地址共需要

位。

注意

这里的 行地址(Row Address)列地址(Column Address)DRAM 芯片内部 用于定位数据的位置,并不是 CPU 发出的主存地址。

CPU 访问的是整个主存空间中的 物理地址,而 内存控制器 会将该地址转换为 DRAM 内部使用的行地址和列地址,再完成数据访问。因此,教材中讨论 DRAM 时通常只关注 DRAM 内部的地址组织方式,而不涉及 CPU 地址到 DRAM 地址的映射过程。


一种典型的实现方式可以理解为由 4 个位平面(Bit Plane) 组成,每个位平面都是一个独立的 Cell 阵列,负责存储其中 1 bit 数据。

若每个位平面都组织为:

则:

  • 每个位平面共有 个 Cell;
  • 行地址需要 8 位
  • 列地址需要 8 位
  • 一个可寻址地址由 8 位行地址8 位列地址 组成,共 16 位

访问某个地址时,控制器首先根据地址得到对应的 行地址列地址,然后利用相同的行地址和列地址,同时访问 4 个位平面中对应位置的 Cell。每个位平面分别读出(或写入)1 bit 数据,最终组合成该地址对应的 4 bit 数据。

因此,对于 64K × 4 bit 的 DRAM:

  • 64K 表示共有 64K 个可寻址地址
  • 4 bit 表示每个地址对应 4 个位平面中的 4 个 Cell,共同组成该地址的数据。
行列地址复用

如果将完整地址一次性送入上述 DRAM 芯片,就需要设置 16 根地址引脚

但是,DRAM 芯片通常容量较大。如果每一位地址都使用一根独立引脚,芯片所需的引脚数量会很多,从而增加封装面积和制造成本。

为了减少地址引脚数量,DRAM 通常采用 行列地址复用(Address Multiplexing)

使用同一组地址引脚,先传送行地址,再传送列地址。

DRAM 行列地址复用 (Address Multiplexing)同一组地址引脚分两次传送:先送行地址 (RAS),再送列地址 (CAS)CPU 地址A0 ~ A1112 根地址线① RAS:行地址② CAS:列地址时序示意RASCASADDRRowColDRAM 芯片行地址锁存器Row Address Latch列地址锁存器Column Address Latch译码器列译码器 / 灵敏放大器cell位线 (Bit Line) →字线 ↓选中行A[11:0]分时复用引脚对比不复用12 行 + 12 列= 24 根地址线复用同一组地址线分时= 12 根地址线引脚数量减半降低封装成本与面积SRAM 通常不采用行列复用:容量小、追求速度,地址一次性给出直接译码。

地址访问过程如下:

  1. 内存控制器先在地址引脚上送入 行地址
  2. 通过 RAS(Row Address Strobe,行地址选通信号) 将行地址锁存到 DRAM 内部;
  3. DRAM 根据行地址激活对应的行;
  4. 内存控制器再使用同一组地址引脚送入 列地址
  5. 通过 CAS(Column Address Strobe,列地址选通信号) 将列地址锁存;
  6. DRAM 根据列地址,从已经激活的行中选择相应的数据。

因此,行地址和列地址虽然使用相同的引脚传输,但会在不同的时刻分别送入。

采用行列地址复用后,DRAM 所需的地址引脚数量约为:

当行地址位数和列地址位数相同时,只需要原来大约一半的地址引脚。

以前面的 64K × 4 bit DRAM 为例:

  • 不采用地址复用:需要 16 根地址引脚
  • 采用地址复用:只需要 8 根地址引脚
  • 这 8 根地址引脚先传输 8 位行地址,再传输 8 位列地址。
DRAM 行列复用实例

假设有一个 16M × 4 bit 的 DRAM 芯片,共有:

个可寻址位置,每个地址可以读写 4 bit 数据。

如果将这些地址组织为:

由于:

因此:

  • 行地址需要 12 位
  • 列地址需要 12 位
  • 完整地址需要 24 位

如果不采用地址复用,需要 24 根地址引脚;采用行列地址复用后,只需要 12 根地址引脚

这 12 根地址引脚首先传送行地址,随后再传送列地址。

SRAM 内部通常也会将存储单元组织成二维阵列,并使用 行译码器列选择电路 访问具体的存储单元。因此,从内部结构来看,SRAM 同样存在行、列的划分。

但是,普通 SRAM 芯片一般 不采用 DRAM 式的行列地址分时复用

SRAM 通常会在地址引脚上一次性接收完整地址:

  1. CPU 或内存控制器一次性送入完整地址;
  2. SRAM 内部将地址拆分为行地址和列地址;
  3. 行译码器和列选择电路同时完成地址译码;
  4. 直接读取或写入对应的数据。

也就是说,SRAM 和 DRAM 的区别不在于内部是否存在行列结构,而在于 外部地址的传输方式

存储器内部组织方式外部地址传输方式
DRAM二维阵列,分为行和列通常先传行地址,再使用同一组引脚传列地址
SRAM二维阵列,分为行和列通常一次性传入完整地址,由芯片内部拆分和译码

SRAM 一般不采用行列地址复用,主要有以下原因:

  • SRAM 的容量通常比 DRAM 小,所需地址引脚相对较少;
  • SRAM 更强调访问速度,一次性输入完整地址可以减少地址传输和锁存步骤;
  • SRAM 不需要 RAS、CAS 这样的行列地址锁存过程,控制方式更加直接。

因此:

DRAM 的行列地址复用主要是为了减少芯片引脚数量,但会增加地址传输步骤;SRAM 通常一次性接收完整地址,以获得更低的访问延迟。

刷新机制

由于 DRAM 使用 电容器 保存数据,而电容会不断漏电,因此即使 CPU 完全没有访问某个存储单元,其中保存的数据也会随着时间逐渐消失。

为了保证数据正确,内存控制器(Memory Controller) 必须在规定时间内,通常是几十毫秒内,保证 每一行 至少被刷新一次。

① 问题:电容漏电,数据会消失刚写入+ + +1 (满电荷)时间流逝电容漏电几十 ms 后+? (电荷不足)电荷 vs 时间0tQ阈值跌破阈值 → 无法判定 0/1② 解决:由内存控制器周期性刷新内存控制器Memory Controller发出刷新命令DRAM 阵列在规定时间内每行刷新一次刷新本质:读出一行 → 感应放大 → 写回同一行1. 读取激活字线读出微弱信号2. 感应放大Sense Amplifier恢复为 0/13. 写回重新充电到满电荷状态③ 刷新单位是"行":同一字线上的所有 Cell 一次性刷新字线Row 0Row 1Row 2Row 3 ★Row 4...Row n-2Row n-1感应放大器阵列 (Sense Amplifier Row)位线 → 每列一条为什么按行刷新?• 同一行的所有 Cell 共享一条字线• 激活一次字线,整行 Cell 全部导通• 每列的感应放大器同时读出并写回• 一次刷新 = 恢复整行电荷约束条件• 刷新周期通常为64 ms左右• 期间必须保证每一行至少刷新 1 次• 正被刷新的存储体无法响应读/写请求

所谓 刷新(Refresh),本质上是读取一行存储单元中的数据,并利用感应放大器将这些数据重新写回,从而恢复电容器中的电荷。

由于 DRAM 的存储阵列按行和列组织,同一行上的所有存储单元共享一条字线,因此刷新操作也是 按行进行的。一次刷新会恢复整行存储单元中的电荷,而不是逐个存储单元进行刷新。

刷新期间,被刷新的存储体不能正常提供读写服务,因此不同的刷新策略会直接影响 DRAM 的访问性能。

刷新方式

DRAM 常见的刷新方式包括:

  • 集中刷新(Burst Refresh):在一个刷新周期内,集中安排一段时间连续刷新所有行。控制简单,但连续刷新期间无法进行正常访问,会形成较长的停止访问时间。
  • 分散刷新(Distributed Refresh):将刷新操作分散到各个 存储周期 中,使刷新操作与正常读写操作规律地交替进行。不会形成很长的集中停顿,但会频繁占用存储周期。
  • 异步刷新(Asynchronous Refresh):在整个刷新周期内均匀安排刷新操作,每隔一定时间刷新一行。它避免了集中刷新的长时间停顿,同时又不要求每个存储周期都执行刷新,是集中刷新和分散刷新的一种折中方式。

三种刷新方式在时间轴上的 CPU 等待窗口对比如下图所示:

DRAM 三种刷新方式 · 时间轴对比CPU 访问刷新操作CPU 等待 (无法访问)① 集中刷新所有行集中在死区刷新,CPU 长时间等待集中刷新 (CPU 死区)② 分散刷新每个存取周期 = 访问 + 一次刷新,无死区但周期翻倍③ 异步刷新每 (T_ref / N行) 时间触发一次单行刷新,CPU 等待窗口最小单行刷新时间 →

它们的特点如下:

特征集中刷新分散刷新异步刷新
刷新方式在一段时间内连续刷新所有行刷新与正常访问逐周期交替每隔一定时间刷新一行
CPU 等待等待时间长,但集中出现每次等待时间短,但非常频繁等待时间短,并且均匀分布
对性能影响存在明显的停止访问时间持续占用部分存储周期通常比前两种方式更加均衡
控制复杂度较高
典型特点存在“死时间”没有长时间停顿,但刷新频繁集中刷新与分散刷新的折中

SRAM 对比 DRAM

SRAMStatic Random-Access Memory存储单元:6 晶体管触发器 (6T)WLBLBL̅数据保持:触发器闩锁,通电即稳刷新:无需刷新速度:极快(约 1–5 ns)集成度:低(每 bit ≥ 6 管)功耗:静态低,切换高成本:高典型用途:CPU Cache、寄存器DRAMDynamic Random-Access Memory存储单元:1 晶体管 + 1 电容 (1T1C)WLBLC漏电数据保持:电容存电荷,会漏电刷新:需定期刷新(毫秒级)速度:较慢(约 50–100 ns)集成度:高(每 bit 1 管 1 容)功耗:刷新+读写有持续开销成本:低典型用途:主存、显存VS
特性DRAMSRAM
存储单元1 个晶体管 + 1 个电容器(1T1C)4~6 个晶体管组成的触发器
数据保持方式使用电容器保存电荷使用触发器保持状态
是否需要刷新需要定期刷新无需刷新
内部阵列通常采用二维行列阵列通常也采用二维行列阵列
外部地址输入通常采用行列地址复用通常一次性输入完整地址
访问速度较慢更快
集成度较低
成本
容量
典型应用主存、显存CPU Cache、寄存器文件

ROM

ROM(Read-Only Memory,只读存储器)是一类 非易失性(Non-Volatile) 存储器,断电后仍能保存数据,主要用于存放系统启动程序、固件(Firmware)以及其他长期不需要频繁修改的数据。

ROM · Read-Only Memory 只读存储器非易失性 · 主要用于读取 · 存放固件与启动程序ROMBIOS / Firmware非易失性以读为主断电后数据保留断电数据仍在写入受限/不可ROM vs RAMROMRAM易失性否(持久)是(掉电丢失)读写主要只读可随机读写典型用途固件 / BIOS运行时数据容量较小较大ROM 家族 (Evolution)MMROM掩膜式出厂固化PPROM一次可编程熔丝烧写EEPROM紫外线擦除可重复编程EEEEPROM电擦写字节级可改FFlash块擦写SSD / U盘典型场景 · 开机加电后CPU 加电从 ROM 读取 BIOS硬件自检 / 引导加载操作系统至 RAM

虽然名称叫做 只读存储器(Read-Only Memory),但这里的"只读"是相对于 正常工作状态 而言的。

  • 在计算机运行过程中,CPU 可以 随机读取(Random Access) ROM 中任意地址的数据;
  • 但一般不能像 RAM 一样随时写入数据。
  • 某些现代 ROM(如 EPROM、EEPROM、Flash)虽然支持重新编程,但写入通常需要专门的硬件、电压或擦除操作,写入速度也远低于 RAM。

因此,现代教材中的 ROM 更准确地理解为 非易失性存储器,而不是绝对不能写入的存储器。

ROM 最典型的用途是存储 固件(Firmware)。固件是直接嵌入硬件中的底层程序,负责设备初始化和基本控制。例如:

  • PC 主板中的 BIOS/UEFI
  • 路由器、交换机中的启动程序
  • 各种嵌入式设备(单片机、家电、汽车 ECU)的控制程序

ROM 对比 RAM

特征RAM(随机存取存储器)ROM(只读存储器)
易失性易失性,断电后数据丢失非易失性,断电后数据仍保留
读写能力可随机读、随机写可随机读,一般不能在运行过程中随机写
数据修改可频繁修改一般很少修改,需要专门方式写入
访问速度较快通常慢于 RAM
用途存放正在运行的程序和数据存放固件、启动程序、固定数据
容量一般较大一般较小

需要注意:

RAM 和 ROM 都支持随机存取(Random Access),区别并不在于是否能够随机访问,而在于 是否能够方便地写入以及是否断电保存数据

分类

主要了解下面几种 ROM。

MROM

MROM(Mask ROM,掩膜 ROM)是在芯片制造过程中直接写入数据的 ROM。

其内容在出厂后便无法修改,因此成本低、可靠性高,适合大批量生产。

光刻掩膜(永久图案)制造时写入固定程序内容永久固定出厂后不可修改写一次,用终生成本低 · 可靠性高适合大批量生产典型应用早期游戏卡带 / 固定程序
PROM

PROM(Programmable ROM,可编程 ROM)允许用户在出厂后 写入一次数据

一旦完成编程,就无法再次修改,因此又称 一次性可编程 ROM(OTP,One-Time Programmable)

出厂时(空白)所有熔丝完好 = 全 1高压脉冲烧断熔丝编程一次后断开的熔丝 = 数据固定用户烧录出厂后再写入内容仅可写入一次OTP · One-Time Programmable写入后不可逆熔丝烧断无法恢复
EPROM

EPROM(Erasable Programmable ROM,可擦除可编程 ROM)可以通过 紫外线照射 将整个芯片中的数据全部擦除,然后重新写入。

其特点是:

  • 可以反复编程;
  • 必须取下芯片并使用紫外线擦除;
  • 擦除时间较长,操作较为繁琐;
  • 支持随机读取。

早期 PC 的 BIOS 芯片曾大量采用 EPROM。

① 紫外线照射擦除石英窗口暴露芯片② 整片擦除为空白全部恢复为 1专用编程器③ 重新写入数据加电压逐位写入紫外线擦除整片恢复为空白状态可反复编程需取下芯片,操作繁琐典型应用早期 PC BIOS 芯片
EEPROM

EEPROM(Electrically Erasable Programmable ROM,电可擦除可编程 ROM)使用 电信号 完成擦除和写入,不再需要紫外线。

相比 EPROM:

  • 不需要拆卸芯片;
  • 可以在电路板上直接更新内容;
  • 支持按字节(Byte)擦除和写入;
  • 写入速度较慢,擦写次数有限。
在电路板上原地更新配置数据无需拆卸芯片电信号按字节擦写按字节(Byte)擦除/写入改写其余字节保持不变电信号擦写不需要紫外线设备电擦除,无需紫外线支持按字节擦写局限写入较慢,擦写次数有限
Flash

Flash Memory(闪存) 是 EEPROM 的一种改进形式,也是现代最广泛使用的非易失性存储器。

Flash 存储器 · Floating-Gate 浮栅晶体管非易失性 · 电擦写 · 用于 SSD / U盘 / 手机存储浮栅晶体管 (Floating Gate MOSFET)CGControl Gate · 控制栅Floating Gate · 浮栅e⁻e⁻e⁻e⁻隧穿氧化层Source源极 (S)Drain漏极 (D)P-Substrate (硅衬底)隧穿e⁻有电荷表示 逻辑 0无电荷表示 逻辑 1三种基本操作读 Read检测阈值电压速度快⚡ 单元级写 Program注入电子到浮栅1 → 0页级写入擦 Erase抽走电子,全置 10 → 1块级擦除两大类型NAND Flash串联结构 · 密度高顺序读快 · 容量大SSD · U盘 · SD卡NOR Flash并联结构 · 可随机读支持就地执行 (XIP)BIOS · 嵌入式固件速度 / 性能定位RAM最快Flash中等(比 HDD 快得多)HDD最慢优势:非易失 · 无机械结构 · 抗震 · 低功耗 · 体积小 · 速度远超机械硬盘

与 EEPROM 相比:

  • 按块(Block)擦除,因此速度更快;
  • 存储密度更高;
  • 成本更低;
  • 擦写寿命有限(通常几千到几十万次)。

目前大量设备都采用 Flash 存储,例如:

  • SSD(固态硬盘)
  • U 盘
  • SD 卡
  • 手机存储
  • BIOS/UEFI 芯片

可以,加一个 Note,这也是很多教材容易让初学者困惑的地方。

注意

在现代计算机体系结构中,ROM(Read-Only Memory)已经不再表示"绝对不能写"的存储器,而是泛指非易失性(Non-Volatile Memory,NVM),即断电后仍能保存数据的存储器。

从历史上看,最早的 ROM 在制造完成后内容便固定,用户无法修改,因此称为 Read-Only Memory。后来出现了 PROM、EPROM、EEPROM,以及今天广泛使用的 Flash Memory,它们都能够重新写入数据,只是写入速度较慢、需要特殊的擦除操作(按字节或按块擦除),因此仍然沿用了 ROM 这一名称。

因此,Flash 在广义上属于 ROM(非易失性存储器),但它并不是严格意义上的"只读"存储器,而是一种可擦除、可重新编程的 ROM。现代 SSD、U 盘、SD 卡、手机存储以及 BIOS/UEFI 芯片,都是以 Flash 为存储介质。

CD-ROM

CD-ROM(Compact Disc Read-Only Memory,只读光盘)是一种光盘存储设备。

数据在生产过程中一次性写入,用户不能修改,只能读取,因此属于典型的只读存储介质。

激光读取头光盘介质凹坑/平面编码数据只读生产时一次写入用户不可修改非易失性断电数据不丢失容量约 700 MB激光读取数据属于外存辅助存储器,非半导体 ROM访问速度远低于半导体存储器机械旋转 + 光学读取,延迟较高

其特点包括:

  • 非易失性;
  • 容量约 700 MB
  • 使用激光读取数据;
  • 访问速度远低于半导体存储器。

需要注意,CD-ROM 属于外存(辅助存储器),而前面介绍的 MROM、PROM、EPROM、EEPROM、Flash 都属于 半导体 ROM

注意
  1. ROM 属于非易失性存储器,RAM 属于易失性存储器。
  2. ROM 和 RAM 都支持随机存取,不要把 ROM 理解成顺序访问。
  3. Flash Memory 属于 ROM,是现代应用最广泛的非易失性存储器。
  4. EPROM 使用紫外线擦除,EEPROM 使用电擦除,Flash 按块擦除。