如果你看过 NAND Datasheet,应该见过一个很常见的指标:P/E Cycle。
P/E,就是 Program / Erase,也就是编程和擦除。
比如一颗 NAND 标称几千次 P/E Cycle,我们很容易把它理解成一种“使用次数”:前面还能正常擦写,等次数用完以后,Cell 就坏了。
但 NAND 的 Endurance,也就是擦写寿命,并不是这样的倒计时。
从第一次 Program / Erase 开始,Cell 内部的电气特性就在慢慢变化。刚开始这种变化很小,NAND 仍然可以通过 Program、Erase 和 Verify 把 Cell 控制到正确的位置。随着 P/E Cycle 越来越多,需要面对的偏移和不确定性也越来越大。
直到有一天,Cell 已经无法再被控制回允许的工作范围,才真正进入 Endurance Failure。
所以,要理解 NAND 的擦写寿命,不能只盯着“擦写了多少次”,而要看一次次 P/E Cycle 到底改变了什么。
一、每一次 P/E 都绕不开 Tunnel Oxide
以传统 Floating-Gate NAND 为例,Floating Gate 和下面的 Channel 之间隔着一层很薄的绝缘层,叫 Tunnel Oxide,隧穿氧化层。
Program 时,需要让电子穿过 Tunnel Oxide,进入 Floating Gate;Erase 时,又需要把电荷从 Floating Gate 中移出去。
问题是,Tunnel Oxide 本身就是绝缘体。
电子正常情况下并不能自由通过它,所以 NAND 会在 Tunnel Oxide 两端建立很强的电场,让电子通过 Fowler-Nordheim Tunneling,简称 FN Tunneling 穿过这层绝缘介质。
因此一次 P/E Cycle,看起来只是完成了一次数据的写入和擦除,但从 Cell 内部来看,Tunnel Oxide 已经经历了一轮高场下的电荷传输。
而这件事在 NAND 的一生里会重复成千上万次。

二、Tunnel Oxide不会永远保持Fresh状态
如果每一次 FN Tunneling 结束以后,Tunnel Oxide 都能完全恢复成刚出厂时的状态,那么 NAND 的 P/E Cycle 理论上就不会成为一个寿命问题。
但实际不是这样。
反复承受高电场和电荷传输以后,Tunnel Oxide 会逐渐发生 Oxide Degradation,氧化层退化,其中一个重要表现就是内部不断出现新的 Trap,陷阱态。
Trap 并不是氧化层里真的出现了一个“小坑”。
可以先简单理解成:原本比较理想的绝缘介质中出现了一些新的局部缺陷状态,电子可能被这些状态捕获。
这时候 Tunnel Oxide 从外观上可能什么都没有变化,但从电学角度来说,它已经不再是原来那层“干净”的绝缘层了。
一些 Trap 被电子占据以后,还会改变 Tunnel Oxide 内部的电势分布,使后续的 tunneling current 发生变化。
因此随着 P/E Cycle 增加,同样的 Program / Erase 条件,Cell 的响应不会永远保持和 Fresh 时完全一样。
这里真正需要注意的并不是“Tunnel Oxide 被磨薄了”,而是:
反复 P/E 正在一点点改变 Tunnel Oxide 的电学特性。
三、开始老化,不代表NAND立刻不能用了
这也是 Endurance 最容易被误解的地方。
NAND 并不是发现 Cell 有了一点变化,就立即宣布这个 Cell 失效。
因为 Program 和 Erase 本身就是一个带有反馈的控制过程。
以 Program 为例,并不是给 Cell 一个脉冲以后,就假定它已经准确落到了目标 Vth。
实际过程更接近:
Program Pulse
↓
Program Verify
↓
判断 Cell 是否已经达到要求
↓
没达到则继续后续 Pulse
↓
再 Verify
Erase 也存在类似的 Pulse + Verify 过程。
因此,随着器件慢慢老化,只要这些变化仍然处在控制算法能够处理的范围内,NAND 就仍然能够把 Cell 调整到要求的位置。
这也是为什么:
Cell开始老化 ≠ Cell立即失效。
真正值得关注的是,随着 P/E Cycle 增加,这个控制过程需要面对的 Cell 已经越来越不像 Fresh Cell。

四、比效率变化更麻烦的是Vth也在漂
Trap 带来的问题不只是改变 tunneling behavior。
当电荷被困在 Tunnel Oxide 中时,它本身还会改变 Cell 的静电环境,从而产生额外的 Vth Shift,也就是阈值电压漂移。
对于最简单的 SLC NAND,我们可以粗略地把 Cell 分成两个状态:
Erased State:Vth 较低
Programmed State:Vth 较高
NAND 读取数据,本质上就是判断 Cell 的 Vth 落在哪一个范围。
因此两个状态之间必须留出足够的安全空间,也就是 Read Margin。
随着 P/E Cycle 增加,trapped charge 不断累积,Erased Cell 和 Programmed Cell 的 Vth 都可能向更高的方向发生变化。
这里尤其值得关注的是 Erased State。
正常情况下,SLC NAND 的 Erased Cell Vth 应该处在 0 V 以下。
但随着 Cycling 增加,Erased Vth 会逐渐往更高方向漂,也就是不断向 0 V 靠近。
这时候 Endurance 问题才真正开始显现出来。

五、为什么Erase State向0 V靠近这么危险?
如果只看 Vth Distribution,很容易产生一种直觉:
只要 Erased 和 Programmed 两个状态还没有重叠,数据不是仍然可以区分吗?
但 NAND 有一个非常重要的特点:
很多 Cell 是串联在一条 NAND String 上的。
所以一个 Cell 能不能正常工作,不只是看它和另一个状态能不能区分,还要看它会不会影响整条 String 的导通。
一个正常 Erase 的 Cell,Vth 足够低。当它的 Gate 处于相应读取条件时,Channel 应该能够顺利导通。
但如果经历大量 P/E Cycle 后,某个 Erased Cell 的 Vth 越来越高,甚至接近或者超过 0 V,那么它就可能不再是一个能够顺利导通的 Erased Cell。
而 NAND String 是串联结构。
只要其中有一个 Cell 把 Current 卡住,整条 String 的读取都可能受到影响。
所以:
Read Margin还存在,并不意味着这个Cell一定还能正常工作。
这也是 Endurance 和普通“两个 Vth Distribution 会不会重叠”之间非常容易被忽略的区别。
另一方面,Programmed Cell 的 Vth 也不是越高越好。如果上限不断升高,同样可能影响 String 在读取过程中的正常导通。
因此真正的工作窗口,不只是:
Erase 和 Program 两边有没有分开。
而是:
每个状态是不是仍然落在整个 NAND Array 能正常工作的电气范围之内。
六、Erase Verify其实在检查什么?
理解了前面这一点以后,Erase Verify 就很好理解了。
Erase 完成以后,并不是默认整个 Block 已经擦干净,而是要检查 Cell 的 Erased Vth 是否满足要求。
对于这里讨论的传统 SLC NAND,一个重要条件就是:
Erased Cell 的 Vth 必须低于 0 V。
Erase Verify 可以通过特定的读取条件检查整个 String。
如果相关 Wordline 处在 0 V 条件下,所有已经正确 Erase 的 Cell 都应该能够导通。
但如果其中有某一个 Cell:
Vth 仍然高于 0 V
它就可能把 String Current 阻断。
于是 Controller 就知道:
这里至少有一个 Cell 还没有被正确 Erase。
这时候并不是第一次 Verify Fail 就马上放弃,而是 Erase 流程还可以继续施加后续 Erase Pulse,再进行 Verify。
真正的问题出现在:
经过允许的 Erase Pulse + Verify 流程以后,仍然有 Cell 无法回到要求的 Erased 状态。
到了这里,算法就已经不能继续把这个 Block 拉回正常工作范围。
这才开始接近真正意义上的 Endurance Failure。
七、所以NAND到底是什么时候“寿命到了”?
现在我们可以重新理解所谓的 P/E Cycle。
整个过程并不是:
第 1 次:正常
第 1000 次:正常
第 2999 次:正常
第 3000 次:突然坏掉
它更像是:
P/E Cycle 不断增加
↓
Tunnel Oxide 反复承受高场 Stress
↓
Trap 等缺陷逐渐增加
↓
Tunneling Behavior 开始发生变化
↓
Cell 的 Vth 也逐渐漂移
↓
Program / Erase + Verify 一直在尝试把 Cell 拉回目标状态
↓
可以补偿的余量越来越小
↓
某些 Cell 最终再也无法满足 Verify 条件
↓
Endurance Failure
所以 NAND 的擦写寿命,并不是 Tunnel Oxide 在某一个瞬间突然“坏掉”了。
它真正描述的是:
随着器件不断老化,NAND 还能把这些 Cell 控制在合法工作范围里多久。
从这个角度再看 P/E Cycle,它就不只是 Datasheet 上一个简单的数字了。
一次次 Program / Erase 都在改变 Cell,而 Program / Erase / Verify 又一直在追着这些变化进行调整。
直到某一天:
Cell变化的程度,终于超过了控制机制能够补偿的范围。
这时候,NAND 的擦写寿命才真正走到了尽头。
谢谢你读我的文章
支付宝
微信