固态硬盘
SSD 用 Flash 芯片代替了盘片和磁头,于是磁盘的三项时间(寻道、旋转、传输)里前两项直接消失。这是它最大的优势,也是最容易一句话说完的部分。
真正需要理解的是它换来的新麻烦:Flash 写之前必须擦除,而擦除的粒度远大于写的粒度(见 3.2.2)。这一条不对称性单枪匹马地造出了 SSD 的全部复杂性——闪存翻译层、垃圾回收、写放大、磨损均衡,四个概念全部是同一个问题的连锁后果。
机制
三级粒度
- 读、写以页为单位(典型 4 KB)
- 擦除以块为单位(典型一块含 16~512 页)
- 一个页只能在被擦除之后写入一次;要改写已有内容,不能原地覆盖
“擦除单位远大于写入单位”就是那条不对称性。 若坚持原地更新,改一个 4 KB 的页要先把整块(可能几百 KB)搬走、擦掉、再写回——代价高得无法接受。
闪存翻译层:把原地更新变成异地更新
FTL(Flash Translation Layer)维护”逻辑页号 → 物理页号”的映射表,工作方式是:
- 要改写逻辑页
时,不动原物理页,而是找一个已擦除的空闲物理页 写入新内容 - 把映射改成
- 把原物理页标记为无效
于是”写”永远是顺序地写空白页,不需要擦除——擦除被推迟了。
FTL 使 SSD 在外部看来是一块普通的块设备,操作系统按逻辑块号读写,完全不知道物理页在哪。这与 页式虚拟存储器的地址映射是同一种手法。
垃圾回收与写放大
无效页越积越多,空闲页迟早耗尽,此时必须垃圾回收:挑一个无效页最多的块,把其中仍然有效的页搬到别处,再擦除整块。
搬移动作本身也是写。 用户写入 1 个页,SSD 内部实际写了不止 1 个页:
磨损均衡
Flash 的每个块擦写次数有限(万次量级)。如果某些块被反复改写,它们会先坏,而其他块还很新。
磨损均衡(Wear Leveling)让擦除次数在所有块之间尽量平均:
- 动态磨损均衡:分配空闲块时优先选擦除次数少的
- 静态磨损均衡:主动搬走那些长期不变的冷数据,把它们占的”新块”腾出来参与轮转
没有静态磨损均衡,只读的冷数据会永久霸占一批低磨损块,动态均衡对它们无能为力。
TRIM
删除文件时,文件系统只是在自己的元数据里把块标为空闲,SSD 并不知道——它仍然认为那些页有效,在垃圾回收时白白搬移它们。
TRIM 命令让操作系统主动告诉 SSD”这些逻辑块已经没用了”,SSD 于是可以直接把对应物理页标为无效。这是操作系统必须为 SSD 做的配合,也是 SSD 与磁盘在软件接口上的一个实质差别。
边界
SSD 没有寻道时间和旋转延迟,因此随机读性能远超磁盘。 但随机写受垃圾回收拖累,与顺序写差距明显——“SSD 各种访问一样快”是错的。
SSD 属于外存,不在 CPU 的地址空间里。 尽管它由半导体构成、支持随机存取,它仍然要经过 I/O 通路调入主存。
SSD 在教材分类里归入 ROM 一节,见 3.2.2——这是按非易失性分类的结果,不表示它不能写。
SSD 的”块”与文件系统的”块”不是一回事。 SSD 的块是擦除单位(几百 KB),文件系统的块是分配单位(几 KB)。同名不同物,题目里要按上下文区分。
磨损均衡缩短的是”最先坏掉的那一块”的寿命差距,不是提高总擦写次数。 说”磨损均衡使 SSD 寿命无限”是错的。
对照速查
| 磁盘(HDD) | 固态硬盘(SSD) | |
|---|---|---|
| 介质 | 磁表面 | 半导体(Flash) |
| 机械部件 | 有 | 无 |
| 寻道 / 旋转延迟 | 有 | 无 |
| 随机读 | 慢 | 快 |
| 随机写 | 慢 | 较快,受 GC 拖累 |
| 读写粒度 | 扇区 | 页(读写)/ 块(擦除) |
| 原地更新 | 可以 | 不可以 |
| 寿命限制 | 机械磨损 | 擦写次数 |
| 抗震 / 功耗 / 噪声 | 差 / 高 / 有 | 好 / 低 / 无 |
| 价格 | 低 | 高 |
| 概念 | 一句话 |
|---|---|
| FTL | 逻辑页 → 物理页的映射,把原地更新变成异地更新 |
| 垃圾回收 | 搬走有效页,擦除整块,回收空闲空间 |
| 写放大 | 实际写入量 / 请求写入量 |
| 磨损均衡 | 让擦除次数在块之间平均,分动态与静态 |
| TRIM | OS 告诉 SSD 哪些逻辑块已失效 |
考点
- 读写以页为单位,擦除以块为单位,块远大于页
- 写之前必须擦除,因此不能原地更新——这条不对称性推出后面全部概念
- FTL 做逻辑页到物理页的映射,实现异地更新
- 垃圾回收造成写放大,是随机写慢于顺序写的原因
- 磨损均衡分动态与静态,静态负责搬走冷数据
- SSD 无寻道无旋转延迟,随机读远快于磁盘
- SSD 属于外存,不在 CPU 地址空间内
- SSD 的”块”(擦除单位)≠ 文件系统的”块”(分配单位)
链接
- 🏠 返回总览:计算机组成原理第 3 章:存储系统总览
- ⬅️ 上一节:3.4.1 磁盘存储器
- ➡️ 下一节:3.5.1 程序访问的局部性原理
- 🔗 3.2.2 只读存储器(Flash 的三条特性)
- 🌐 跨科:OS 5.3.4 固态硬盘
- 📖 名词库:第 3 章名词库