你的照片、APP、系统文件——所有数据最终都以电荷的形式保存在 NAND 闪存的浮栅晶体管中。这篇文章从最小的存储单元讲起,逐层拆解 NAND 的六层嵌套结构,搞清楚为什么”不能直接覆盖写入”这件事,是 GC、写放大、越用越慢等一切现象的物理根源。

最小存储单元:浮栅晶体管

NAND 闪存的基本存储单元是浮栅晶体管(Floating Gate Transistor)。可以把它理解成一个特殊的电控开关。

结构差异

普通 MOS 管有一个栅极,加电压控制电流通断。浮栅晶体管在栅极里面多塞了一个被绝缘层完全包裹的导电”口袋”——这就是浮栅(Floating Gate)。

工作原理

关键就两步:

  • 写入(Program):加高压,把电子强行注入浮栅。电子进去之后,阈值电压升高。这个状态代表逻辑 “0”
  • 擦除(Erase):加反向高压,把电子从浮栅里硬拽出来。阈值电压降回去。这个状态代表逻辑 “1”

为什么断电不丢数据

浮栅四周全是高质量的氧化物绝缘层。电子一旦注入,几乎不可能自己跑出来——断不断电都一样。这就是 NAND 实现非易失性存储的物理基础。

浮栅晶体管结构剖面图

📌 浮栅晶体管是 NAND 一切特性的起点:它决定了写入需要高压、擦除需要整块操作、以及擦除次数有限的物理约束。


六层嵌套结构:从 Cell 到 Wafer

NAND 闪存采用严格的层级组织,从小到大共六层:

层级定位关键特性
Cell(单元)最小存储单元存放 1-4 bit,SLC/MLC/TLC/QLC 的区分
Page(页)读写最小单位2KB / 4KB / 16KB,一次至少读写一个页
Block(块)擦除最小单位包含数百~数千个 Page,只能整块擦除
Plane(平面)Block 的集合独立并行操作单元,提升并发性能
Die(晶粒)独立芯片单元多个 Plane 组成,可堆叠封装
Wafer(晶圆)顶层制造单元一片晶圆切割出数百颗 Die

📌 记住这个不对称性——读写按页,擦除按块。后面所有的问题,全是从这句话衍生出来的。


为什么读/写按页,擦除偏要按块?

这是 NAND 最核心的”怪癖”,需要从物理层面理解。

读和写——页级操作

通过 Wordline 选中一页内的所有 Cell,一次性读出或写入整页数据。速度很快:

  • 读延迟大约 50 微秒
  • 写延迟大约 500 微秒

擦除——块级操作

擦除需要加高压,这个高压是加在整个 Block 的衬底上的。物理上没有办法只对一个 Page 施压——要么全擦,要么全不动。速度也很慢:

  • 擦除延迟大约 2-5 毫秒,比写慢 10 倍以上

这就像你在纸上写满了字。你可以逐行修改(读/写按页),但要把纸清空重新用?只能整张纸一起处理(擦除按块)。没有”只擦一行”的橡皮。


关键限制:不能直接覆盖写入

有了前面的基础,来看 NAND 最反直觉的设计约束。

你的直觉 vs 物理现实

你以为修改文件是这样的:找到旧数据的位置 → 原地写入新数据。逻辑上完全合理,但 NAND 做不到

为什么?因为那个 Page 里已经有电荷了(代表旧数据)。你要往里写新东西,得先把旧电荷清掉——也就是擦除。而擦除只能按块来,你不可能为改一个 Page,把整个 Block 几百个 Page 全擦了。

实际流程

控制器是这样处理的:

  1. 把新数据写入一个已擦除的空 Page
  2. 把旧数据所在的 Page 标记为 Invalid(无效)
  3. 用户看到的文件已更新,但旧 Page 还占着物理空间
  4. 当空闲 Block 不够用时,触发 GC(垃圾回收) 清理无效页

这个流程的后果

每改一次文件,就多一页”垃圾”。用得越久,垃圾越多。直到空闲 Block 快用完——系统被迫暂停正常服务,去做大扫除。这就是**“越用越慢”的物理根源**。

📌 你从买手机第一天开始写入数据,“越用越慢”的种子就已经种下了。


垃圾回收 GC:NAND 的”清洁工”

GC(Garbage Collection)说白了就是 NAND 内部的大扫除,分三步走:

第一步:选目标。 挑一个”最脏”的 Block——无效页最多的那个。

第二步:搬数据。 把这个脏 Block 里还有用的、还活着的 Page,小心翼翼地搬到一个全新的空 Block 里。

第三步:擦除。 旧 Block 整体擦除,恢复为空闲,又可以重新用了。

GC 的代价

第二步”搬有用数据”这件事,是额外产生的写入。本来主机只让你写 1MB,因为 GC 要搬数据,NAND 实际写了 2MB。这多出来的 1MB,就是写放大。而且 GC 搬数据的过程会消耗 P/E Cycle,加速磨损。

GC垃圾回收流程


写放大 WA

写放大的公式很简单:

WA = NAND 实际写入量 ÷ 主机请求写入量

这个值永远大于 1。WA 越大,相同的主机写入量对 NAND 的实际磨损就越大,寿命就越短。

场景WA 典型值说明
顺序写入大文件1.0 - 1.2×接近理想值,GC 几乎不触发
随机写入小文件1.5 - 3.0×GC 开销开始明显
盘满时随机写入3.0 - 10+×可用空间越少,GC 越频繁,每次能搬的有效数据越少

一个实用建议

不要让手机存储用到 90% 以上。留点空间,就是给 GC 留周转的余地——也是给你自己留流畅体验的余地。一旦盘满了,每次写入都触发大量 GC,WA 飙升,又慢又伤寿命,恶性循环。


P/E Cycle:擦写寿命

每个 Block 都有擦写次数上限,叫 P/E Cycle(Program/Erase Cycle)

每次擦除都是高压把电子从浮栅里硬拉出来,这个过程会缓慢损伤氧化层。次数多了,氧化层退化,电子关不住了——数据就会出错。

类型P/E Cycle定位
SLC~100,000 次企业级,最长寿
MLC~10,000 次工业级,性价比的黄金平衡点
TLC~3,000 次消费级主流,成本最低
QLC~1,000 次大容量冷数据归档

从 SLC 到 QLC,寿命差了 100 倍。这不是厂商偷工减料,而是物理规律——每个 Cell 存越多 bit,电压状态越多、间隔越小,对氧化层退化的容忍度就越低。

SLC/MLC/TLC/QLC P/E Cycle对比

📌 你的旧手机、旧 SSD 用久了丢数据、变慢,不是厂商搞”计划报废”,是氧化层物理退化到了一定程度。


完整因果链

把前文串起来,NAND 闪存的三大核心机制之间存在一条清晰的因果链:

不能直接覆写(物理限制,根因)
    ↓ 每次修改产生无效 Page
无效 Page 堆积,空闲 Block 不足
    ↓ 触发 GC 回收空间
GC 搬移有效数据(额外写入)
    ↓ 实际写入量 > 主机请求量
写放大 WA(副作用)
    ↓ 加速 P/E Cycle 消耗
寿命缩短、越用越慢

把这条链记住了,存储底层的逻辑就通了。


总结

NAND 闪存不是完美的设计——它是物理规律的妥协。

  • 优势:高密度、低成本、非易失性
  • 代价:不能直接覆写、擦除次数有限、需要 GC
  • 关键机制:不能覆写(根因)→ GC(应对)→ 写放大(副作用),一条因果链贯穿始终

理解底层机制,才是真正懂了存储——为什么”越用越慢”、为什么”跑分不等于体验”,答案全在这些物理约束里。


系列导航

集数标题内容
第 0 集存储课程总览四大模块介绍
第 1 集到底什么是存储?内存与存储的本质区别
第 2 集存储类型大盘点HDD/SSD/eMMC/UFS 全解析
第 3 集为什么存储越用越慢?碎片、GC、SLC 缓存
第 4 集三大存储介质DRAM/NOR Flash/NAND Flash
第 5 集SLC/MLC/TLC/QLC 全解析速度、寿命、成本取舍
第 6 集存储参数怎么看?顺序读写与随机读写
第 7 集UFS 凭什么全面取代 eMMC?三大核心优势
第 8 集一文看懂 UFS 进化史2.0 到 4.1 技术迭代
第 9 集UFS 内部三大核心组成控制器+NAND+DRAM
第 10 集NAND 闪存芯片深度解析👈 你在这里

下一集:主控芯片——存储的”大脑”有多重要? FTL 地址映射、磨损均衡、坏块管理、CMDQ 调度优化,一次讲透。敬请期待!