3、存储介质原理:NAND Flash特性、SLC/MLC/TLC/QLC、磨损均衡、垃圾回收与写放大

UFS 的性能上限,最终由它内部的 NAND Flash 决定。主控、协议、缓存只能优化“怎么访问”,却无法改变“介质本身怎么工作”。理解 NAND 的物理特性,是读懂 UFS 读写性能曲线、延迟抖动和寿命衰减的起点。

一、NAND Flash 的四个关键物理特性

NAND 不是磁盘,它的行为逻辑与机械硬盘、DRAM 完全不同,核心差异集中在四点:

  • 按页读写、按块擦除:读取和编程以 Page(页,常见 4KB~16KB)为单位,擦除却必须以 Block(块,通常数百页)为单位。这决定了“覆盖写”无法原地完成。
  • 先擦后写:一个 Page 被写过之后,必须整块擦除才能再次写入。更新数据只能写到新的空闲页,旧页标记为无效。
  • 有限擦写寿命:每个 Block 能承受的 P/E(Program/Erase)次数有限,SLC 约 5 万~10 万次,TLC 约 1000~3000 次,QLC 更低。
  • 读干扰与数据保持:频繁读取同一块会影响相邻单元阈值电压;长期不通电,电荷会缓慢泄漏,导致误码率上升。
NAND 的“写”本质是“找新位置写 + 旧位置作废”,而不是“原地覆盖”。这一条几乎解释了后面所有性能现象。

二、SLC / MLC / TLC / QLC:一个单元存几位

每个存储单元(Cell)能存放的比特数,决定了容量、成本、速度与寿命的权衡。存 1 位叫 SLC,2 位 MLC,3 位 TLC,4 位 QLC。位数越多,单元内需要区分的电压状态越多,写入时需要更精细的编程与校验,读回时也更容易出错。

类型每单元位数电压状态数相对寿命写入速度典型用途
SLC1 bit2最高最快企业级缓存、高耐久场景
MLC2 bit4较高较快早期高端 SSD/UFS
TLC3 bit8中等中等当前主流手机 UFS
QLC4 bit16较低较慢大容量、冷数据存储

注意:UFS 中常见“TLC 模拟 SLC 缓存”(SLC Cache)。写入初期数据落在高速 SLC 区,表现很快;缓存写满后回落到 TLC 直写,速度骤降。这就是很多 UFS 跑分高、但大文件持续写入后掉速的原因。

NAND 单元位数与电压状态分布 SLC · 1bit 0 1 2 个状态 · 判决裕度大 MLC · 2bit 4 个状态 TLC · 3bit 8 个状态 · 裕度收窄 QLC · 4bit 16 个状态 · 裕度最小 位数越多 → 容量越大、成本越低,但速度越慢、寿命越短、误码越多

三、磨损均衡:让每个块“平均出力”

如果总是往同一批物理块写数据,这些块会先被写坏,整盘寿命被最短的那块拖垮。磨损均衡(Wear Leveling)就是主控把写入压力均匀分散到所有块上的机制。

  • 动态磨损均衡:新数据优先写入擦写次数少的空闲块,只处理“正在被写”的数据。
  • 静态磨损均衡:主动搬移长期不动的冷数据,把低磨损块腾出来给热数据使用,防止冷数据“占着好块不干活”。

磨损均衡的代价是额外的数据搬移,这会消耗带宽、增加写放大。因此它不是越激进越好,而是要在寿命与性能之间取平衡。

四、垃圾回收与写放大:性能抖动的根源

由于 NAND 只能整块擦除,当空闲块不足时,主控必须执行垃圾回收(GC):挑选一个无效页比例高的块,把其中仍然有效的页搬到新块,然后擦除整块回收空间。

GC 基本流程:
1. 扫描候选块,计算无效页占比(valid page ratio)
2. 选出无效页最多的块作为 victim block
3. 将 victim block 中的有效页读出,写入新的空闲块
4. 擦除 victim block,标记为空闲块
5. 更新逻辑地址到物理地址的映射表(L2P)

写放大(Write Amplification, WA)定义为“实际写入 NAND 的数据量 ÷ 主机请求写入的数据量”。GC 搬移的有效页、映射表更新、ECC 校验等都会让 WA 大于 1。

WA 越高,意味着同样的用户写入会消耗更多 NAND 寿命和带宽。随机小写入、长期高占用率、频繁覆盖写,都会显著抬高 WA。

五、案例:一次持续写入掉速的复盘

某手机在 UFS 上写入 20GB 视频文件,前 6GB 速度约 900MB/s,之后骤降到 250MB/s 并持续波动。排查结论如下:

  1. 前段高速来自 SLC Cache,数据先写入模拟 SLC 区。
  2. SLC Cache 写满后,数据需要回迁到 TLC 区,同时触发 GC。
  3. 盘内空闲块不足,GC 频繁搬移有效页,WA 升高,可用写入带宽被挤占。
  4. 速度波动来自 GC 与主机写入争抢 NAND 通道。

优化方向:预留更多 OP(Over-Provisioning)空间、避免盘长期接近满容量、对大文件写入采用顺序大块写、在固件层优化 GC 触发阈值与 SLC Cache 回迁策略。

调优 UFS 时,不要只看峰值顺序读。真正影响体验的是:随机写 IOPS、持续写入的稳态速度、以及高占用率下的延迟抖动——这三者都与 GC 和 WA 直接相关。

六、常见误区

  • “UFS 写入就是直接覆盖”:错,覆盖写会先产生无效页,最终由 GC 回收。
  • “容量越大寿命越长”:容量大通常耐久总量更高,但 QLC 单位寿命低,需结合 P/E 次数看。
  • “跑分高就等于体验好”:跑分多在缓存内完成,稳态性能才反映真实介质能力。
  • “GC 是后台的事,与上层无关”:文件系统对齐、写入模式、TRIM/Discard 都会影响 GC 效率。

掌握 NAND 的页/块结构、单元位数差异、磨损均衡与 GC/WA 机制后,再看 UFS 的读写曲线和延迟表现,就能从“现象”追溯到“介质与固件”的根因,为后续的调优手段建立正确的判断依据。