NAND 存储单元与 3D NAND 技术探讨
从 SLC 到 QLC 的单元演进,从平面到 300+ 层的立体堆叠 —— 一份给存储选型与方案设计用的原理与选型参考 | 编制日期 2026-10-09 | 版本号 Rev 1.0
把「SLC / MLC / TLC / QLC」与「3D NAND」这两组经常被混为一谈的概念,还原成两个互相独立的维度:前者决定一个单元放几个比特,后者决定单元怎么在硅片里排布。搞清楚这一点,选型时的多数纠结会自动消失。
顺带把工程上真正会踩坑的东西讲透:为什么 TLC 的写入会掉速、为什么 QLC 的 TBW 数字看着吓人却能用、为什么「层数越高越好」是个误解、以及一颗 eMMC / UFS / SD NAND 里到底是哪一种单元。
一句话结论: 单元类型(SLC→QLC)换的是容量与成本的斜率,代价是耐久与速度; 3D 堆叠换的是密度的来源,把「靠缩小单元提密度」改成「靠加层数提密度」, 因此它同时救回了TLC 的可靠性,并让 QLC 从纸面方案变成可量产产品。 工程选型不要问「哪种单元最好」,要问「写入强度 + 容量段 + 温度等级」这三个条件落在哪个格子。
读者路径
- 想快速选型:直接跳第 10 章(选型速查)与第 11 章(误区速查);看不懂某个词再回附录 A。
- 想搞懂原理:按 1 → 2 → 3 → 4 → 5 章顺序读,这是完整的因果链。
- 做嵌入式 / 小容量:第 1、2、10 章 + 第 9 章的 FTL 与 TBW 部分。
- 做 SSD / 大容量:第 3、5、6、7、9 章,重点看 SLC Cache 与掉速机制。
- 做采购 / 供货评估:第 7 章(代际)与附录 B(厂商技术品牌对照)。
1. 从一颗浮栅晶体管讲起:NAND 的物理原点
这一章把 NAND 拆到最基本的物理层——一个会「关住电子」的晶体管。后面所有关于 SLC/MLC/TLC/QLC 与 3D 的讨论,都是在这个原点上加维度。
1.1 浮栅 MOSFET 与电荷俘获型单元
NAND 闪存的每一个存储单元,本质上都是一个被改造过的 MOSFET。改造点只有一处:在栅极绝缘层中间塞进一个能长期关住电子的「存储层」。电子一旦进去,断电也出不来,这就是非易失性的全部来源。
存储层有两种主流做法,它们的差别在 3D 时代被放大成了路线之争:
| 结构 | 存储层材料 | 电荷行为 | 主要使用时期 | 对 3D 的适配性 |
|---|---|---|---|---|
| 浮栅型(Floating Gate) | 多晶硅导体 | 电子在整个导体层内自由分布,一处漏电会拖垮整片存储层 | 2D 平面 NAND 主流 | 差:导体层难以在垂直沟道侧壁均匀形成 |
| 电荷俘获型(Charge Trap, CTF) | 氮化硅 SiN 等绝缘体中的深能级陷阱 | 电子被局域俘获在各自的陷阱里,横向不扩散 | 3D NAND 几乎全部采用 | 好:可用薄膜沉积均匀包覆垂直沟道 |
浮栅是一整块连通的导体。3D NAND 的存储层是包在垂直沟道侧壁上的一圈薄膜,如果这圈薄膜是导体,那么任意一个缺陷点就会把整根沟道上的所有单元短路成一个电荷池——数据直接丢失。电荷俘获层是绝缘体,电荷被「钉」在各自的陷阱里,天然适配垂直结构。这也是产业界从 2D 转向 3D 时几乎同步完成的一次材料切换。
1.2 阈值电压 Vt:数据到底存在哪
存储层里的电子带负电,会抵消一部分控制栅加过来的电场。电子越多,要让沟道导通所需要的控制栅电压就越高,这个「刚导通的电压」就是阈值电压 Vt。
于是数据被编码成了一件很朴素的事:Vt 高 = 存了电子 = 一种状态;Vt 低 = 没存电子 = 另一种状态。读取动作就是给控制栅加一个参考电压,看沟道导不导通。
单元里真实存在的是一个连续的 Vt 值,控制器要做的是判断这个连续值落在哪一个预先划好的电压窗口里。所谓「读出一个比特」,是把模拟量量化后的结果。后面 SLC/MLC/TLC/QLC 的全部差异,本质上就是把同一段 Vt 窗口切成几份。
1.3 擦除、编程、读取的三个物理动作
NAND 只有三个基本动作,其他一切都是它们的组合。三者施加的电压极性相反、作用尺度也不同:
| 动作 | 物理机制 | 电子流向 | 最小操作单位 | 典型耗时(3D TLC 量级) |
|---|---|---|---|---|
| 擦除 Erase | 衬底加高压,FN 隧穿 | 存储层 → 沟道 | 块 Block(数百页一起) | 3 ~ 10 ms |
| 编程 Program | 控制栅加阶梯脉冲(ISPP) | 沟道 → 存储层 | 页 Page(4 KB ~ 16 KB) | 0.5 ~ 3 ms |
| 读取 Read | 加参考电压比较导通 | 不移动电荷 | 页 Page | 30 ~ 100 µs |
编程时还有一个容易被忽略的机制:自升压禁止编程。同一条字线上挂着的单元里,只应写入被选中的那些;未被选中的位线/沟道会被抬到约 8~10 V,使隧穿氧化层两侧压差不足以发生隧穿,从而「禁止」它们被误写。这个机制在多比特单元里尤其关键,因为目标窗口很窄。
1.4 页与块:为什么只能按块擦除
擦除需要给整个 P 阱加约 20 V 的高压,而 P 阱是一片共享衬底,物理上无法只挑几百个单元单独加这个电压。所以擦除的最小单位只能是「块」——一个块通常包含数百到上千个页。
这条物理约束一路传导到系统层,决定了 NAND 的整个软件模型:
- 不能就地更新:改一个字节也要整块擦掉重写,代价太高 → FTL 采用异地更新(out-of-place update),写到新页、把旧页标为失效。
- 必须有垃圾回收:失效页积累到一定程度,要把块里还有效的数据搬走再整块擦除,这就是 GC,也是写放大的根源。
- 必须有磨损均衡:擦除次数是消耗品,FTL 要把擦写摊到所有块上。
① 数据 = 单元里的电子数量 = Vt 的高低;② 擦除只能整块、编程与读取只按页,这个不对称是 FTL 存在的根本原因;③ 3D 时代存储层几乎全部是电荷俘获型,因为导体浮栅在垂直沟道上会「一处漏电、整串失效」。
2. SLC / MLC / TLC / QLC:一个单元放几个比特
这一章回答那个最常被问的问题:SLC、MLC、TLC、QLC 到底差在哪。答案只有一句——差在把同一段 Vt 窗口切成几份,其余所有差异都是这一刀切下去的连锁反应。
2.1 比特数决定电压状态数
一个单元能表示的状态数是 2 的比特数次幂:
| 单元类型 | 每单元比特 | 需区分的电压状态数 | 电压窗口切分 | 典型 P/E 寿命 | 相对单位容量成本 |
|---|---|---|---|---|---|
| SLC | 1 bit | 2 态 | 1 刀切 2 份 | 50,000 ~ 100,000 次 | 最高(约 TLC 的 4~6 倍) |
| MLC | 2 bit | 4 态 | 再切一倍 | 3,000 ~ 10,000 次 | 高 |
| TLC | 3 bit | 8 态 | 再切一倍 | 1,000 ~ 3,000 次(3D 工艺) | 中(当前主流) |
| QLC | 4 bit | 16 态 | 再切一倍 | 数百 ~ 1,000 次 | 最低 |
注意这里的「典型 P/E 寿命」是行业经验区间,不是某个料号的规格值。同一类型在不同代际、不同厂、不同 binning 下差别很大,最终一定要以正式 datasheet 的 P/E 与 TBW 为准。另外,实际器件的状态编码不会用简单的自然二进制,而会采用优化编码(让相邻电压状态之间只差 1 个比特),这样一次误判只错 1 bit,能显著降低纠错压力。
2.2 状态数翻倍的四个代价
每往单元里多塞一个比特,都会同时付出四项代价,而且它们互相放大:
| 代价 | 物理成因 | 直接后果 | 工程上的应对 |
|---|---|---|---|
| 判别余量变小 | 同一段 Vt 窗口被切成更多份,每份更窄 | 读误码率上升,需要更强的 ECC | LDPC 纠错 + 多档读参考电压扫描 |
| 编程时间变长 | 目标窗口窄,ISPP 需要更多次小步进 | tPROG 上升,写入带宽下降 | 更精细的步进策略 + SLC 缓存 |
| 耐久性下降 | 每次擦写对隧穿氧化层的损伤累积;窗口窄意味着「损伤一点点」就失效 | P/E 次数约掉一个数量级 | 磨损均衡 + OP 预留 + pSLC 模式 |
| 数据保持变差 | 相邻状态间隔小,少量电荷泄漏就会跨过边界 | 高温下 retention 恶化明显 | 刷新/巡逻读取 + 温度补偿读 |
从 SLC 的十万次量级,到 MLC 的万次量级,到 TLC 的千次量级,到 QLC 的百次量级——这不是巧合,而是窗口被切细后「允许的损伤量」同步变小的必然结果。选型时可以用这个数量级规则做快速估算,但不要拿它当规格书。
2.3 四种单元类型横向对照
下面这张表是全文最常用的一张,建议直接记住结论列:
| 维度 | SLC | MLC | TLC | QLC |
|---|---|---|---|---|
| 每单元比特 | 1 | 2 | 3 | 4 |
| 电压状态数 | 2 | 4 | 8 | 16 |
| P/E 寿命(典型) | 50k ~ 100k | 3k ~ 10k | 1k ~ 3k | 0.1k ~ 1k |
| 读取时间 | 最短(~25 µs) | 较短 | 中等 | 最长(需多档扫描) |
| 编程时间 | 最短(~0.2 ms) | 较短 | 中等(~1 ms) | 最长(~3 ms 量级) |
| ECC 强度需求 | 1 bit 级即可 | BCH 数十 bit | LDPC 强纠错 | LDPC + 读重试 |
| 单位容量成本 | 最高 | 高 | 中 | 最低 |
| 主要战场 | 工业引导、车规、企业写缓存 | 工业与高端嵌入式 | SSD / eMMC / UFS / 存储卡 | 读密集型大容量、归档 |
| 2026 年供应状态 | 小容量段稳定供货 | 原厂逐步退出,转向 TLC/pSLC | 绝对主流 | 快速上量 |
主流原厂已陆续收缩甚至停止 MLC NAND 的出货,2026 年全球 MLC 产能预计大幅下降。如果你的项目仍在用 MLC,建议现在就开始评估高耐久 TLC 或 pSLC 模式的 TLC 两条替代路径,并锁定长期供货协议,避免后期被迫改版。
2.4 pSLC:用容量换寿命
pSLC(pseudo-SLC,伪 SLC)是工程上非常实用的一招:拿 MLC 或 TLC 的晶圆,只在里面存 1 个比特。物理单元还是那个单元,但因为只区分 2 个状态,判别余量一下回到 SLC 的水平。
| 方案 | 物理单元 | 实际使用比特 | 典型 P/E | 可用容量 | 成本位置 |
|---|---|---|---|---|---|
| 原生 SLC | SLC 晶圆 | 1 bit | 50k ~ 100k | 100% | 最高 |
| pSLC(基于 MLC) | MLC 晶圆 | 1 bit | 20k ~ 40k | 约原生 MLC 的 50% | 中高 |
| pSLC(基于 TLC) | TLC 晶圆 | 1 bit | 10k ~ 25k | 约原生 TLC 的 33% | 中 |
| 原生 TLC | TLC 晶圆 | 3 bit | 1k ~ 3k | 100% | 低 |
pSLC 拿到的寿命接近甚至部分超过原生 MLC,成本却低于 SLC,而且继承了 3D TLC 的宽温与供货优势。工业级存储卡、工业 SSD、24 小时连续写入的视频与日志设备,最常见的底层方案就是它。代价只有一个:可用容量按倍数缩水,选型时要把「标称容量」和「用户可用容量」区分清楚。
2.5 再往前一步:PLC 与新形态
四比特之后还有五比特的 PLC(Penta-Level Cell,32 态),行业预期在 2026 年前后开始落地,主打冷数据与归档场景,耐久性进一步下降。不过当前产业界的兴奋点更多在另一处:用架构而不是用「塞更多比特」来提密度。
- 更高层数 + 混合键合:继续往上堆,配合 CBA(CMOS 直接键合阵列)把外围电路与存储阵列分开加工再键合。
- HBF(High Bandwidth Flash):借鉴 HBM 的高带宽接口思路,用超大容量 NAND 做 AI 推理的读密集层,样品阶段已在推进。
- 3D 堆叠 DRAM / 存储分级:把 NAND 的角色往「容量层」推,与 DRAM、HBM 组成分层存储。
对选型工程师而言,这些新形态短期内不影响器件级决策,但会影响未来两三年的供货与价格结构,值得保持关注。
3. 多比特带来的连锁反应
这一章解释「为什么 TLC 写着写着就掉速」「为什么 QLC 需要那么强的纠错」这类工程现象。它们的根因都在第 2 章那一刀——Vt 窗口被切细了。
3.1 ISPP 阶梯脉冲编程与 tPROG
NAND 不是一次把电压加到位,而是用 ISPP(Incremental Step Pulse Programming,增量步进脉冲编程):字线电压从一个起始值开始,每次编程脉冲后抬升一个固定步进 ΔV,然后读一次做验证,看 Vt 有没有进入目标窗口;没进就再来一发,进了就停。
这套机制保证 distribution 足够紧凑,但也直接决定了编程时间:
- 目标窗口越窄 → 步进必须越小 → 循环次数越多 → tPROG 越长。
- SLC 只有 1 个编程态、窗口很宽,几百微秒量级就够了;TLC/QLC 有 7 / 15 个编程态,且每个窗口都很窄,循环次数成倍增加。
- 每个循环还要插一次验证读取,多比特单元验证时往往需要多档参考电压,进一步拉长时间。
3.2 读参考电压扫描与 Read Retry
读取时控制器给字线加一个参考电压 Vref,判断单元是否导通。但这个「合适的值」会随温度、读干扰、保持时间而漂移,所以真实器件里:QLC 的一次读取往往要在十几个参考电压档位里扫描才能定位状态。
当默认档位读出来的错误超过 ECC 能力时,控制器会启动 Read Retry(读重试):换一组偏移后的参考电压再读一次。这能救回大部分错误,但代价是读取延迟骤增。
| 单元类型 | 一次读取需要的参考电压档位 | 对读延迟的影响 | Read Retry 触发频率 |
|---|---|---|---|
| SLC | 1 档 | 最小 | 极低 |
| MLC | 3 档 | 较小 | 低 |
| TLC | 7 档 | 中等 | 中(寿命后期明显) |
| QLC | 15 档 | 较大 | 较高(尤其高温与高 P/E 后) |
3.3 ECC 演进:从 BCH 到 LDPC
闪存天生就有误码,所以每个页都带 spare 区存放纠错码。随着单元状态数增加,原始误码率(RBER)一路上升,纠错方案也跟着换代:
| 纠错方案 | 能力 | 适用单元类型 | 特点 |
|---|---|---|---|
| 汉明码 / 简单奇偶 | 1 ~ 4 bit 纠错 | SLC(早期) | 硬件简单,延迟极低 |
| BCH | 每 KB 数十 bit | SLC / MLC / 早期 TLC | 硬判决,实现成熟 |
| LDPC(硬判决) | 接近香农限 | TLC | 软硬结合,迭代译码 |
| LDPC(软判决)+ 读重试 | 最强 | QLC / 寿命末期 TLC | 延时长,但能救回高 RBER 数据 |
ECC 的纠错位数是有上限的,而 RBER 会随着 P/E 次数上升而升高。当一页的错误数逼近这个上限时,控制器会提前把数据搬走。所以 NAND 的「寿命终点」通常不是某个单元突然坏掉,而是整盘的 RBER 恶化到 ECC 兜不住之前,主控先把它淘汰。这也是为什么监控 RBER / 重读次数比监控 P/E 次数更有预警价值。
3.4 干扰项:耦合、读干扰、写干扰
除了正常的擦写,还有几类机制会悄悄把 Vt 推离原位。它们的共性是:推的绝对量差不多,但窗口越窄就越容易越界。
3.5 数据保持与温度加速
存储层里的电子会随时间缓慢泄漏,Vt 分布整体左移。温度越高,泄漏越快——工程上常用的经验规律是温度每升高约 20 ℃,保持期退化约一个数量级;反过来,擦写时的高温会加速氧化层损伤,写入时的低温则会影响编程效率。
因此规格书里的 retention 指标通常是「在 P/E 循环达到标称值之后、在某一温度下仍能保持 N 年」。选型时务必注意这个指标的前置条件,特别是:
| 条件 | 对保持期的影响 | 工程提示 |
|---|---|---|
| P/E 次数接近上限 | 氧化层损伤累积,泄漏通道增多,保持期明显缩短 | 按实际 TBW 消耗评估,不要只看「新片指标」 |
| 工作温度升高 | 泄漏速率显著加快 | 高温场景(车载、户外)要专门核对高温 retention |
| 断电存放时间 | 掉电状态下靠电荷自然保持,没有任何补偿 | 长期断电的产品要把 retention 当作硬指标 |
| 读干扰累积 | 同一块被反复读会引入额外电子 | 固件层做巡逻读取与数据搬移 |
消费者级产品通常用「40 ℃ 下 1 年」或类似口径;工业与车规料号会给出「85 ℃ 下 N 月 / N 年」的明确指标。如果你的产品断电存放时间长、且工作温度高,retention 很可能比 P/E 更早成为瓶颈,这一点在选型评审时经常被漏掉。
4. 平面 NAND 撞上物理墙
理解了多比特的代价,就更容易理解为什么行业必须转向 3D:因为「把单元做小」这条唯一的密度路径,在 1x nm 附近被堵死了。
4.1 从 50 nm 到 1x nm 的二十年
在 3D 出现之前,闪存密度的增长完全依赖平面特征尺寸的缩小:单元做小,同样面积就能放更多单元。这条路走了二十年,从微米级一路缩到 1x nm。
但缩小单元有一个致命副作用:同一段 Vt 窗口内的电子数量也在同步减少。到 2D 末期,一个单元里存储的有效电子只有几百个,丢掉几十个就足以跨过状态边界。这与第 2 章讲的「窗口切细」叠加在一起,等于双重恶化。
4.2 三堵墙:耦合、电荷量、良率
到 1x nm 节点,三个问题同时爆发,让继续缩放变得不划算:
在 2D 时代,密度和可靠性是负相关的:想要更高密度就得把单元做小,做小就更不可靠。3D 打破了这个绑定——单元尺寸反而可以做得比 2D 末期更大(更结实、电荷更多、耦合更弱),密度改由层数提供。这就是为什么 3D TLC 能比平面 TLC 可靠得多。