从FMS技术演讲解码3D NAND的编程艺术:Two Pass策略如何成为可靠性的关键屏障
在存储技术的演进历程中,NAND Flash的编程操作始终是平衡性能与可靠性的核心战场。2016年Flash Memory Summit上IBM研究员Thomas Parnell关于TLC编程的深度剖析,以及2018年YEESTOR技术专家Vic Ye对QLC技术的预见性演讲,共同揭示了一个关键技术现象:当3D NAND技术从CT结构转向FG结构时,传统的One Shot编程方式遭遇了物理极限,而Two Pass(两步走)策略则意外成为了保障数据完整性的"安全阀"。这种看似效率妥协的技术选择,实则蕴含着存储工程师在面对物理限制时的智慧结晶。
1. 3D NAND技术演进中的编程范式转变
1.1 从平面到立体:存储单元结构的革命
传统2D NAND采用平面排布的浮栅晶体管结构,电荷存储在浮栅(Floating Gate)中,通过控制栅极电压实现数据的读写。随着制程微缩逼近物理极限,3D NAND技术通过垂直堆叠存储单元实现了密度突破。早期的3D NAND采用电荷陷阱(Charge Trap,CT)结构,利用氮化硅层捕获电荷,而新一代产品则回归浮栅(Floating Gate,FG)设计,在三维空间中重建了更稳定的电荷存储环境。
两种结构的核心差异体现在电荷保持能力上:
| 特性 | CT结构 | FG结构 |
|---|---|---|
| 电荷存储介质 | 氮化硅陷阱层 | 多晶硅浮栅 |
| 单元间干扰 | 较高 | 较低 |
| 编程速度 | 快 | 较慢 |
| 数据保持能力 | 一般 | 优异 |
| 适合的编程策略 | One Shot | Two Pass |
1.2 One Shot编程的物理限制
One Shot编程(单次脉冲编程)是CT结构3D NAND的典型方案,其工作流程可简化为:
- 施加初始编程电压脉冲
- 验证单元阈值电压(Vth)
- 根据验证结果调整脉冲强度
- 重复直到达到目标Vth
这种增量步进脉冲编程(ISPP)方式在平面NAND和早期3D NAND中表现良好,但当应用于FG结构时却暴露了致命缺陷:
- 电荷注入不均匀:FG单元的三维结构导致电场分布复杂化
- 编程干扰加剧:相邻单元的耦合效应更显著
- Vth分布展宽:最终阈值电压窗口变宽,误码率上升
// 简化的One Shot编程伪代码 void oneShotProgram(Cell cell, TargetVth) { float pulse = INITIAL_PULSE; while (cell.currentVth < TargetVth) { applyVoltagePulse(cell, pulse); verifyVth(cell); pulse += STEP_INCREMENT; } }2. Two Pass编程的物理本质与实现机制
2.1 分而治之的编程哲学
Two Pass编程将传统的一次性编程过程分解为两个阶段,这种"分步走"策略在FG结构3D NAND中展现出独特优势。以TLC(3bit/cell)存储为例,典型的4-8型Two Pass操作流程为:
第一Pass(粗编程阶段):
- 将单元快速编程到中间Vth区间(如L0-L3状态)
- 容忍较高的Vth分布宽度
- 重点控制电荷注入总量
第二Pass(精编程阶段):
- 从中间状态精细调整到目标Vth(如L4-L7状态)
- 使用更小的电压步进
- 精确校准每个单元的最终状态
注意:Two Pass并非简单的时间分割,而是通过分阶段优化电荷分布形态,本质上是利用时间维度换取空间稳定性。
2.2 Vth分布优化的物理原理
Two Pass之所以能改善FG单元的可靠性,核心在于它解决了三个关键物理问题:
- 电荷弛豫效应:第一Pass后预留的"休息时间"允许注入电荷重新分布
- 电场均匀化:分阶段编程减小了瞬时电场强度变化率
- 干扰隔离:相邻单元的耦合效应被分步化解
实验数据显示,在相同工艺节点下,Two Pass可使FG单元的Vth分布宽度减少30-40%,这对QLC/PLC等高密度存储尤为重要。典型的Vth分布对比如下:
| 编程方式 | L0状态宽度(mV) | L7状态宽度(mV) | 跨温度漂移 |
|---|---|---|---|
| One Shot | 220 | 280 | ±15% |
| Two Pass | 150 | 190 | ±8% |
3. 工程实践中的权衡艺术
3.1 性能与可靠性的平衡方程
采用Two Pass策略意味着明显的性能代价:
- 编程延迟增加约40-60%
- 功耗上升20-30%
- 控制器复杂度提高
然而,在FG结构3D NAND中,这种代价换来了关键收益:
- 原始误码率(RBER)降低1-2个数量级
- 数据保持时间延长3-5倍
- 温度稳定性提升50%以上
# Two Pass编程的权衡评估模型 def evaluate_tradeoff(architecture): if architecture == 'FG_3D': reliability_gain = calc_reliability_improvement() performance_loss = calc_performance_penalty() return reliability_gain > performance_loss * weight_factor else: return False3.2 不同类型Two Pass的实现变体
根据不同的应用场景,工程师开发了多种Two Pass变体:
4-8型TLC编程(基础版本):
- 第一Pass:编程到4个中间状态
- 第二Pass:细化到8个最终状态
- 平衡点:可靠性提升与性能损失的折中
2-8型TLC编程(性能优化版):
- 第一Pass仅区分2个粗状态
- 更适合对延迟敏感的应用
8-16型QLC编程(高密度版):
- 适应更窄的Vth窗口
- 需要更精确的电压控制
4. 未来技术演进中的编程策略展望
4.1 QLC/PLC时代的挑战与创新
随着存储密度向QLC(4bit/cell)和PLC(5bit/cell)推进,Two Pass策略面临新的挑战:
- Vth窗口缩小导致状态区分度下降
- 编程次数增加带来耐久性问题
- 更复杂的纠错需求
可能的演进方向包括:
- 多阶段编程:将Two Pass扩展为Three Pass或更多阶段
- 自适应编程:根据单元特性动态调整编程策略
- 机器学习辅助:预测最优编程参数组合
4.2 新型存储架构的兼容性思考
新兴存储技术如XL-FLASH和SCM(存储级内存)对编程策略提出了新要求:
- 是否需要保持Two Pass的保守策略?
- 如何平衡超低延迟与高可靠性?
- 混合架构中的策略协同问题
在参加FMS技术研讨会时,我与多位存储架构师交流发现,实际工程中往往需要根据具体应用场景灵活选择编程策略。例如,在写入密集型场景中,可以采用动态切换策略——默认使用Two Pass保证可靠性,在性能敏感时段临时切换为优化版One Shot。