3、NAND Flash 原理:存储单元结构与 SLC/MLC/TLC/QLC 选型权衡
好,咱们进入正题。NAND Flash 这东西,说白了就是黑匣子的「记忆细胞」。你想想看,飞机坠毁后,黑匣子要在烈火、深海、撞击中活下来,靠的就是它。我做了十几年存储,见过太多因为选错 Flash 类型导致数据全丢的案例。今天咱们就把它的老底翻一翻。
3.1 存储单元结构:一个晶体管的故事
NAND Flash 的核心,是一个浮栅晶体管。嗯,这里要注意,它跟普通晶体管最大的区别,就是多了一层「浮栅」。
普通晶体管,栅极加电压,沟道导通,电流流过。但浮栅晶体管呢?它在控制栅和沟道之间,夹了一层被氧化物包裹的浮栅。这层浮栅就像一个小仓库,可以存电子。
怎么存进去的?
- 编程(写操作):在控制栅加高电压,电子穿过氧化层,隧穿到浮栅里。电子进去了,晶体管的阈值电压就升高了。
- 擦除(清空):在衬底加高电压,把电子从浮栅里拉出来。阈值电压又降回去。
读的时候,我们给控制栅加一个中间电压。如果浮栅里有电子(阈值高),晶体管不导通,读出「0」;如果没电子(阈值低),晶体管导通,读出「1」。
关键点:NAND Flash 的擦除操作,是以「块」为单位的。你没法单独擦除一个字节。这是它跟 NOR Flash 最大的区别,也是很多新手踩坑的地方。
我在项目中遇到过,有人把 NAND 当 RAM 用,频繁改写单个字节。结果呢?块擦除次数暴涨,寿命直接腰斩。记住,NAND 适合大块数据顺序读写,不适合随机小数据频繁改写。
3.2 SLC / MLC / TLC / QLC:一个单元存几个 bit?
刚才说的浮栅,只能存「有电子」和「没电子」两种状态,这就是 SLC(Single-Level Cell),一个单元存 1 bit。
那能不能多存几个?当然可以。通过控制浮栅里电子的数量,我们可以划分出多个阈值电压区间。每个区间代表一个二进制值。
| 类型 | 每单元 bit 数 | 阈值电压区间数 | 典型寿命(P/E 次数) |
|---|---|---|---|
| SLC | 1 | 2 | 50,000 - 100,000 |
| MLC | 2 | 4 | 3,000 - 10,000 |
| TLC | 3 | 8 | 1,000 - 3,000 |
| QLC | 4 | 16 | 500 - 1,000 |
为什么会这样?你想想看,SLC 只有两个电压区间,区间很宽,电子跑掉一点没关系。但 QLC 有 16 个区间,每个区间窄得像刀片。电子稍微漏一点,就可能跳到隔壁区间,数据就错了。
所以,容量越大,寿命越短,速度越慢,可靠性越差。这是物理规律,谁也绕不过去。
3.3 选型权衡:黑匣子该用哪种?
好,现在问题来了:黑匣子该选哪种?
我个人习惯,先看三个指标:可靠性、寿命、温度范围。
- SLC:可靠性最高,寿命最长,能扛 -40°C 到 +85°C。但容量小,价格贵。适合黑匣子里的关键数据存储,比如飞行参数、语音记录。我见过一些老款黑匣子,还在用 SLC,就是因为「稳」。
- MLC:性价比不错,寿命和容量折中。适合消费级黑匣子,比如行车记录仪。但要注意,MLC 在高温下数据保持能力会下降。我曾经测试过,85°C 下 MLC 的数据只能保持 1 年,而 SLC 能保持 10 年。
- TLC:容量大,价格低,但寿命短,可靠性差。说实话,我不建议黑匣子用 TLC。除非你做了极强的纠错和磨损均衡,否则数据丢失风险太高。
- QLC:别想了。黑匣子不是 U 盘,数据丢了是要出人命的。QLC 的寿命和可靠性,根本扛不住黑匣子的严苛环境。
警告:黑匣子存储介质,必须满足以下最低要求:
- P/E 次数 ≥ 10,000(对应 SLC 或高端 MLC)
- 数据保持时间 ≥ 10 年(85°C 环境下)
- 支持 -40°C 到 +85°C 工作温度
- 内置 ECC 纠错,至少支持 BCH 或 LDPC
达不到这些,就别往黑匣子里放。
3.4 避坑指南:我踩过的那些坑
我曾经在一个项目里,为了省成本,选了 TLC 做黑匣子。结果呢?高温老化测试,数据全丢。嗯,从那以后,我再也不敢在关键系统里用 TLC 了。
还有一次,客户说「我们只要容量大,便宜就行」。我劝了半天没用,最后签了免责协议。半年后,黑匣子从飞机残骸里挖出来,数据读不出来。客户后悔了,但晚了。
所以,我的建议是:
- 别贪便宜:黑匣子的存储成本,在整个系统里占比很小。省那几块钱,可能赔上几千万的飞机。
- 留足余量:标称 10 万次 P/E 的 SLC,实际用到 5 万次就该换了。磨损均衡算法再强,也扛不住物理老化。
- 做好冗余:重要数据,至少存两份。一份在主存储,一份在备份。我习惯用 RAID 1 或者镜像,确保单点故障不影响数据。
- 定期测试:黑匣子不是装上去就不管了。每半年做一次全盘读写测试,检查坏块和数据保持能力。发现问题,及时更换。
小技巧:选型时,可以要求供应商提供「数据保持时间 vs 温度」的曲线图。如果他不给,或者含糊其辞,直接换一家。靠谱的供应商,这些数据都是公开的。
3.5 总结:一句话记住
黑匣子存储,SLC 是首选,MLC 是底线,TLC 和 QLC 别碰。容量不够?那就多装几片 SLC,别在可靠性上妥协。
好了,这一章就到这里。下一章咱们聊聊 NAND Flash 的坏块管理和 ECC 纠错,这可是黑匣子数据恢复的最后一道防线。