2. SSD工作原理:NAND Flash基本结构、SLC/MLC/TLC/QLC区别、SSD内部架构

好,咱们进入正题。这一章我打算聊聊SSD到底是怎么工作的。你可能会想,不就是个硬盘吗?插上就能用。但说实话,如果你不了解它内部的那些门道,后面做寿命预测根本无从下手。

我刚开始接触SSD时,也以为它就是个黑盒子。直到有一次,一个客户的SSD在写入量不到标称值一半时就挂了。拆开一看,主控芯片烧了,闪存颗粒却还有不少寿命。嗯,从那时起我就明白——了解内部结构,是做好监测的第一步

2.1 NAND Flash基本结构

NAND Flash,说白了就是一块由无数个存储单元组成的硅片。每个单元能存几个电荷,代表几个比特的数据。

它的基本结构是这样的:

  • Page(页):读写的最小单位。一般是4KB、8KB或16KB。你写一个字节,它也得擦掉一整页。
  • Block(块):擦除的最小单位。一个块包含几十到几百个页。通常是256页或512页。
  • Plane(平面):多个块组成一个平面。一般一个Die有2个或4个平面。
  • Die(晶粒):一个独立的芯片颗粒。一个SSD里可能有8个、16个甚至更多Die。

关键点:NAND Flash不能覆盖写。你想修改一个页里的数据,得先把整个块擦除,再重新写入。这就是为什么SSD需要垃圾回收(GC)和磨损均衡(WL)。

我记得有一次调试一个掉电保护的问题,发现数据写到一半断电了,再上电时整个块都坏了。原因就是写操作没完成,电荷状态不稳定。所以,掉电保护电路不是摆设

2.2 SLC / MLC / TLC / QLC 区别

这四种闪存类型,区别就在于每个存储单元能存多少比特。你想想看,一个单元里电荷越多,精度要求就越高,寿命也就越短。

类型 每单元比特数 电压状态数 典型P/E寿命 读取速度 写入速度
SLC 1 2 约10万次 最快 最快
MLC 2 4 约3000-10000次 较快 较快
TLC 3 8 约1000-3000次 中等 中等
QLC 4 16 约500-1000次 较慢 较慢

这里我多说一句。SLC现在基本见不到了,太贵。消费级市场全是TLC和QLC。MLC偶尔在高端企业级SSD里还能看到。我个人习惯是,家用选TLC,企业级看MLC或TLC with SLC Cache

避坑指南:我曾经遇到过一款QLC SSD,标称500TBW。结果客户做视频剪辑,每天写入量超过200GB。算下来不到7年就超了。所以买QLC之前,一定算算你的写入量。

为什么会这样?因为QLC的电压状态有16种,相邻电压之间的差值极小。温度变化、读干扰、写干扰都可能导致电荷偏移,数据就错了。所以QLC需要更强的ECC纠错,比如LDPC。

2.3 SSD内部架构

一个SSD,从外面看就是个2.5寸或M.2的小板子。但拆开看,里面主要有三大件:主控、缓存、闪存

2.3.1 主控(Controller)

主控是SSD的大脑。它负责:

  • FTL(闪存转换层):把操作系统的LBA(逻辑块地址)映射到闪存的PBA(物理块地址)。这是最核心的算法。
  • 磨损均衡:让所有块被擦除的次数尽量平均,避免某些块过早报废。
  • 垃圾回收:把无效页的数据合并到新块,释放旧块。
  • ECC纠错:读取时检测并纠正数据错误。
  • 坏块管理:出厂就有坏块,使用中也会产生新坏块。主控要标记并跳过它们。

我见过一些低端主控,磨损均衡算法写得不好,导致某些块被写了几万次,别的块才写了几百次。结果就是整盘寿命大幅缩短。所以,主控比闪存更影响寿命

2.3.2 缓存(DRAM Cache)

缓存用来暂存FTL映射表和用户数据。有缓存的SSD,随机读写性能会好很多。

  • 带DRAM的SSD:映射表存在DRAM里,查找速度快。断电时数据会丢,所以需要掉电保护电容。
  • 无DRAM的SSD(HMB方案):利用主机内存的一部分做缓存。便宜,但性能受主机影响。

注意:无DRAM的SSD,如果主机内存紧张,性能会断崖式下跌。我建议系统盘至少选带DRAM的型号。

2.3.3 闪存(NAND Flash)

这个前面已经讲过了。这里补充一点:闪存颗粒的接口协议也很重要。

  • ONFI(Open NAND Flash Interface):常见于Intel、美光、海力士的颗粒。
  • Toggle:常见于三星、东芝的颗粒。

两种协议不兼容。主控必须支持对应的协议才能用。我遇到过一块SSD,主控是ONFI的,但颗粒是Toggle的,结果根本点不亮。嗯,这种低级错误现在很少见了,但采购时还是要留个心眼。

2.4 小结

这一章我们聊了NAND Flash的基本结构、四种闪存类型的区别,以及SSD内部三大件的分工。说白了,SSD就是一个主控+缓存+闪存的组合体。主控负责调度,缓存负责加速,闪存负责存储。

下一章,我们会深入SMART信息,看看怎么从这些数据里读出SSD的健康状态。到时候你会用上Python,直接解析这些底层数据。

一句话总结:了解SSD内部结构,不是为了拆盘,而是为了知道——寿命到底卡在哪个环节