深入理解非易失性存储的核心原理:从浮栅晶体管到 SSD,从手机存储到企业级数据中心
Flash(闪存)是一种非易失性半导体存储技术——断电后数据不丢失,且支持电气方式批量擦除,因速度"一闪"而得名。
理解 Flash 的关键,是理解浮栅晶体管如何通过隧穿效应(Fowler-Nordheim Tunneling)存储和消除电荷。
Flash 存储单元横截面示意(点击各层查看说明)
写入(Program)
控制栅加高正压 (+15~20V),衬底接地,电子通过隧穿效应从沟道注入浮栅。阈值电压升高 → 读取时认为"0"。
擦除(Erase)
衬底加高正压,控制栅接地或负压,电子从浮栅抽出回到衬底。阈值电压降低 → 读取时认为"1"(初始状态)。
读取(Read)
控制栅施加中等电压,通过检测沟道是否导通来判断电荷状态。浮栅有电子 → 高阈值 → 不导通 → "0"。
Flash 技术分为两大家族,在连接方式、性能特点和应用场景上截然不同。
🔑 关键区别记忆法
NOR = 并联 = 可随机字节寻址、可就地执行(XIP),但密度低、价格贵,适合小容量代码存储。
NAND = 串联 = 高密度、低成本、适合大容量数据存储,但只能按页读、按块擦,需要额外的控制器管理。
通过下面的模拟,直观理解 Flash "写入前必须先擦除" 这一核心约束及其原因。
内存块(8个页面,每格代表一个存储页)
操作日志
为什么必须先擦除才能写入? Flash 存储单元只能从 1 写为 0(注入电子),无法从 0 写为 1(必须通过擦除整块抽走所有电子才能恢复到全 1 状态)。这是 Flash 物理特性决定的,与半导体隧穿机制密切相关。
NAND Flash 根据每个存储单元存储的比特数,分为 SLC、MLC、TLC、QLC 四种,每多存一比特,成本降低但可靠性也随之下降。
每种类型的电压阈值区间(电压越高 = 电子越多)
| 类型 | 位/单元 | 读取速度 | 写入速度 | 擦写寿命 | 成本 | 典型用途 |
|---|---|---|---|---|---|---|
| SLC | 1 bit | 最快 | 最快 | 10万+ 次 | 最高 | 工业控制器、企业缓存 |
| MLC(pSLC) | 2 bit | 快 | 快 | 3000–10000 次 | 较高 | 企业 SSD、高端消费级 |
| TLC | 3 bit | 中等 | 中等 | 1000–3000 次 | 低 | 消费级 SSD、U 盘、手机 |
| QLC | 4 bit | 较慢 | 慢 | 100–1000 次 | 最低 | 大容量冷存储 SSD |
pSLC 模式(伪 SLC):现代 SSD 控制器会将部分 TLC/QLC 的块临时切换为 SLC 模式运行,作为 SLC 写入缓存,大幅提升突发写入性能。这就是为什么 TLC SSD 在小文件写入时能跑出接近 SLC 的速度,但持续大文件写入会"掉速"的原因。
现代 SSD 不只是堆砌 Flash 颗粒,中间有一层精密的固件层(FTL)和控制器,解决 Flash 的先天局限性。
地址映射(LBA→PBA):维护一张映射表(L2P Table),将操作系统看到的逻辑块地址(LBA)映射到实际的物理块地址(PBA)。更新数据时,FTL 将新数据写到新位置,旧位置标记为无效,映射表指向新位置——这就是"Out-of-Place Write"。
磨损均衡(Wear Leveling):Flash 每个块的擦写次数有限。FTL 会均匀分配写入负载,避免某些块过早老化。分为动态(优先写入最少擦写的块)和静态(定期将冷数据搬到磨损较少的块)两种策略。
垃圾回收(GC):随着写入积累,会产生大量"无效页"(逻辑上已更新但物理上还占用空间的旧数据)。GC 把有效数据从混合块中搬走,然后整块擦除,腾出空间。GC 会造成写放大(WAF),是 SSD 性能下降和寿命损耗的主要原因。
3D NAND 堆叠结构示意
从毫瓦级的嵌入式设备到数千瓦的数据中心,Flash 存储无处不在。
理解 Flash 的短板,是优化存储系统设计的前提。
WAF = 物理写入量 / 逻辑写入量