全文约 2400 字|阅读约 9 分钟
这个问题我其实很早就想写了。
去年项目里有一个 Security Erase 测试。这个测试会把 NAND 上的 Block 真正做一遍物理 Erase,本来是很正常的操作,结果测试脚本不知道怎么就连续跑了 12000 多次。
同事拿着结果来找我的时候,我和旁边的小伙伴都愣了一下。
某个 Block 的 Erase Count 已经 12000+ 了,而这款 NAND 的 Spec 里,Endurance,也就是擦写寿命,写的是 7000 P/E Cycle。
第一反应当然是:
7000 次寿命的 NAND,怎么擦了 12000 多次,氧化层没有被磨穿?
我当时还给自己找了一个听起来挺合理的解释:第一次 Erase 已经把 Floating Gate 里的电子都吸到衬底里了。后面第 2 次到第 12000 次,即使还在加高压,Floating Gate 里已经没多少电子可以往外跑了,那氧化层应该也不会再受到多少伤害。
这个解释我相信了挺久。
直到最近重新把 Floating Gate Cell 从头捋了一遍,我才发现,当年这个想法其实从“电子被吸光了”这一步就错了。
一、Erase 的时候,到底发生了什么?
还是回到 SSD42 里的那颗 Floating Gate Cell。
在经典 Floating Gate NAND 的模型里,执行 Erase 操作时,Control Gate,控制栅极保持在接近 0 V,而 Cell 下方的衬底区域,会被拉到一个很高的正电压,大约是 20 V 左右。Source 和 Drain 不是这次主动建立高压差的主要端点,通常会保持 Floating,或者跟随衬底电势变化。

这样一来,Floating Gate 和衬底之间那层很薄的隧穿氧化层(Tunnel Oxide),上下就出现了一个非常强的电场。
电场强到一定程度以后,电子就有机会穿过原本绝缘的氧化层,从 Floating Gate 跑到下面的衬底里。这个过程叫 Fowler-Nordheim Tunneling,也就是 F-N 隧穿。
这段高压并不会一直保持。一次 Erase Pulse 结束以后,衬底上的高压会被降下来,强电场消失,接下来 NAND 才会去检查:刚才到底擦得够不够。
这里有一个地方,我以前一直想得太复杂。
电子不断从 Floating Gate 里离开以后,里面的负电荷会越来越少。继续 Erase 到一定程度,Floating Gate 相对于原来的状态会越来越“偏正”,甚至可以表现出正净电荷。
这时候,即使 CG 不再额外加正电压,Floating Gate 自己产生的电场就已经可以吸引下面 Silicon 表面的电子,让 Channel 更容易形成。
所以 Erase 做下去以后,形成 Channel 所需要的 CG 电压会越来越低,也就是 Vth 越来越低。擦得足够深时,即使CG=0 V,也就是CG不加电压,只靠FG中的正电荷就足以让Channel 形成;因此,如果想让它退回“刚刚形成”的临界状态,反而需要给 CG 一个负电压。
这就是为什么经典 Floating Gate NAND 的 Erased State 可以落到负 Vth。
Erase 不是把 Floating Gate “掏空”,而是在改变它的电荷状态,最后把 Cell 的 Vth 往低处推。
二、一次 Erase,其实可能擦好几下
项目里的 12000 次,是这个 Block 被执行了 12000 多次 Erase。
但这里还有另一个“次数”。
NAND 收到一次 Erase 以后,内部并不一定只打一发高压。原因也很好理解:一个 Block 里有那么多 Cell,总有擦得快的,也有擦得慢的。第一发 Erase Pulse 打完,有些 Cell 已经到位了,有些可能还差一点。
所以真实过程其实很像:
Erase Pulse → 检查 → 不够 → 再提高一点电压 → 再 Erase
这个“检查”叫 HEV,Hard Erase Verify,硬擦除校验。

公开的典型算法里,Erase Pulse 后会立即做 HEV。如果还有 Cell 没有达到目标,就提高 Erase Voltage(擦除电压),再来一个 Pulse;某些示例的最大 Erase Pulse 数量大约是 4 次,不过具体数字当然要看 NAND。
所以我后来才意识到:
12000 次 Block Erase,和 12000 个 Erase Pulse,根本不是一回事。
三、擦到什么程度才算“干净”?
我以前还有一个直觉:既然是 Erase,那当然是电子出去得越多越好。
其实也不是。
HEV 真正关心的是 Vth。在经典 Floating Gate NAND 的一种算法中,如果还能找到 Vth 高于 0 V 的 Cell,就继续 Erase;当整个 Block 都通过以后,Erase 操作才算完成。
但问题又来了。
HEV 只能告诉 NAND:
“都已经低于目标了。”
它并不知道有些 Cell 是刚刚过线,还是已经被擦得特别深。
所以 Vth 也不是越负越好。擦得太深,Erased Distribution 会变得不好控制。
因此有些 NAND 还会做 PAE,Program After Erase,擦除后编程:刚刚费劲把电子弄出去,现在又轻轻 Program 一点回来,把那些擦得过头的 Cell 往正常位置拉一拉,让整个 Erased Distribution 更集中。

这件事第一次看到的时候,我其实觉得挺有意思。
Erase 的目标从来不是“擦得越干净越好”,而是把 Cell 放到合适的 Erased State。
甚至有些 NAND 在正式 Erase 之前还会做 PBE,Program Before Erase,擦除前编程,让一整个 Block 从比较统一的状态开始擦。也就是说,一个我们在外面看起来很简单的 Erase,内部可能比想象中折腾得多。
四、那一个已经擦空的 Block,再擦一次呢?
现在终于可以回头看我当年的解释了。
我当时把 Floating Gate 想成一个桶。
第一次 Erase:
电子倒光了。
第二次再 Erase:
桶都空了,还能倒什么?
问题是,SSD42 已经讲过,Floating Gate 根本不是这样一个空桶。它本身就是重掺杂多晶硅导体,里面一直存在大量自由电子。NAND 改变的是它的净电荷状态,不是把里面所有电子彻底清空。

更重要的是,典型 Erase Algorithm 是先执行 Erase Pulse,然后再做 HEV。它并不一定先检查一句:
“你是不是已经擦好了?”
再决定要不要加高压。
所以一个已经处于 Erased State 的 Block,再来一次真实的 Erase,仍然可能再次经历 Tunnel Oxide 上的高场。
如果 NAND 还启用了 PBE,那就更不能简单理解成“空块什么都没发生”。
Block 里没有有效数据,不等于 Cell 没有受到 Erase Stress;也不等于在这次 Erase 过程中,就没有电子穿过氧化层。
五、所以,12000 次为什么还能活着?
现在回到最开始那个数字。
首先,如果 Spec 里的 7000 指的是 P/E Endurance,它并不是“第 7000 次还能活,第 7001 次立刻死”。Endurance 本身描述的是器件能够承受的最低 P/E Cycling 能力,它不是 Cell 里面的死亡计数器。
其次,12000 次 Erase Count,也不能直接写成:
12000 Erase = 12000 P/E Cycle。
完整的 P/E Cycle 包含 Program 和 Erase 两个方向的高场与电荷转移,而这个测试主要是在重复 Erase。两种 Stress 到底如何定量换算,至少从目前这些公开资料里,我找不到一个可以直接套用的比例。
但有一件事是确定的:反复的高场和 F-N 隧穿并不是免费的。电子反复穿过 Tunnel Oxide,会逐渐产生 Trap 和界面损伤,最终影响 NAND 的 Endurance。
所以如果现在再让我回答当年那个问题,我不会再说:
“第一次已经把电子吸干净了,所以后面基本不伤。”
我会换成:
空盘反复做真实的 Physical Erase,仍然会消耗 NAND 寿命。只是 Erase Count 不能简单一比一换算成 P/E Cycle。12000 次还能继续工作,并不能证明 Erase 没有伤害,只能说明当年我把 NAND 的 Erase 想得太简单了。
这个问题在我脑子里放了很久。
最后真正把它想通,还是绕回了上一期最不起眼的那个点:
所谓“空盘”,空的是有效数据,不是 Floating Gate。Floating Gate 从来不是一个“空”的、等着装电子的盒子。
谢谢你读我的文章
支付宝
微信