2. 坏块产生机理:出厂坏块与使用坏块、编程干扰、读取干扰、数据保持问题
大家好,我是你们的老朋友。今天我们来聊聊NAND Flash里最让人头疼的问题——坏块。说白了,坏块就是那些不能正常读写、或者数据存不住的存储单元。我做了这么多年嵌入式存储,几乎每个项目都会跟它打交道。你想想看,一块NAND Flash动不动就是几十GB,要是里面有几个坏块就报废,那成本谁也扛不住。
所以,理解坏块是怎么来的,比学会怎么修它更重要。今天我就把四种主要的坏块产生机理掰开揉碎了讲给你听。
2.1 出厂坏块:天生就有问题
先说出厂坏块。这个其实最好理解——芯片从生产线下来,本身就带着一些坏块。为什么?因为NAND Flash的制造工艺太精密了。一个晶圆上要刻几十亿个存储单元,哪怕良率做到99.99%,剩下的0.01%也是坏块。
我记得有一次,我拿到一批新的NAND Flash芯片,按照惯例先扫描坏块表。结果发现,有些芯片出厂就标记了十几个坏块。当时年轻,还以为是芯片质量不行。后来跟原厂FAE聊了才知道,这其实是行业惯例——NAND Flash允许出厂时有一定比例的坏块,只要不超过规格书标称的阈值,就是合格品。
这里有个坑,我提醒一下:不同厂商、不同型号的NAND Flash,出厂坏块比例差异很大。比如SLC的出厂坏块率通常低于2%,而TLC、QLC可能高达5%甚至更多。所以选型的时候,一定要看规格书里的“Bad Block Rate”参数。
2.2 使用坏块:用着用着就坏了
使用坏块,说白了就是芯片在正常使用过程中,因为各种原因新产生的坏块。这是我们在嵌入式系统里最需要关注的。
为什么会这样?因为NAND Flash的存储单元本质上是一个浮栅晶体管。每次擦写操作,电子都要穿过氧化层进入浮栅。时间长了,氧化层就会磨损,电子就关不住了。我习惯把这个过程叫做“电子隧道磨损”——就像你每天走同一条路,路总会踩坏。
使用坏块有几个典型特征:
- 擦除失败:擦除操作超时或返回错误状态
- 编程失败:写入数据后校验不通过
- 读取错误:读出的数据与写入的不一致,且ECC无法纠正
嗯,这里要注意:使用坏块不是突然出现的,而是逐渐累积的。我做过一个测试,一块TLC NAND在擦写3000次左右时,坏块数量开始明显增加。到了5000次,坏块率就翻倍了。所以,P/E Cycle(擦写次数)是衡量NAND寿命的核心指标。
2.3 编程干扰:写一个,坏一片
编程干扰,这个名字听起来有点吓人,但原理其实很简单。当你往一个Page里写数据时,高压脉冲不仅会影响目标单元,还会“波及”到相邻的单元。就像你在墙上钉钉子,锤子砸下去,旁边的墙皮也会震掉一块。
具体来说,编程干扰有两种:
- Word Line干扰:同一根Word Line上的相邻Page受影响
- Bit Line干扰:同一根Bit Line上的相邻Block受影响
我遇到过最典型的案例:一个客户做数据记录器,频繁往同一个Block里写数据。结果用了不到一个月,那个Block周围的几个Block全坏了。一查,就是编程干扰导致的。后来我建议他改用随机写入策略,不要连续写相邻的Block,问题就解决了。
2.4 读取干扰:读多了也会坏
读取干扰,这个很多人容易忽略。你可能会想:读操作又不擦写,怎么会产生坏块?
其实,读取操作也会施加电压。虽然电压比编程时低,但长时间、高频率的读取,同样会让电子慢慢从浮栅里跑出来。时间长了,存储单元的阈值电压就会漂移,数据就读错了。
我举个例子:一个监控系统,每天24小时不间断地从同一块NAND Flash里读取日志数据。半年后,发现有些数据读出来全是0xFF。一开始以为是硬件坏了,后来用示波器抓了读取时序才发现,是读取干扰导致存储单元的阈值电压漂移到了擦除状态。
读取干扰的典型表现:
- 同一Block被连续读取太多次(比如超过100万次),相邻Block的数据开始出错
- 读取错误是渐进式的:一开始只有几个Bit错误,ECC能纠正;后来错误越来越多,ECC就扛不住了
2.5 数据保持问题:存着存着就丢了
数据保持,说白了就是数据能存多久。NAND Flash的存储单元是靠浮栅里的电子来保存数据的。但电子不是永远待在那里的——它会慢慢泄漏。温度越高,泄漏越快。
我做过一个加速老化测试:把NAND Flash放在85°C的恒温箱里,每隔一段时间读一次数据。结果发现,SLC在85°C下能保持数据约10年,MLC约3-5年,TLC只有1-2年,QLC更短。这个数据虽然跟规格书标称的“数据保持时间”有差距,但实际工程中,温度、擦写次数、工艺偏差都会影响。
数据保持问题有几个特点:
- 与擦写次数强相关:擦写次数越多,氧化层磨损越严重,电子泄漏越快
- 与温度强相关:温度每升高10°C,数据保持时间大约减半
- 与存储密度相关:SLC > MLC > TLC > QLC
2.6 知识体系总览
说了这么多,我画了一张图,把这四种坏块产生机理的关系理清楚。你一看就明白了。
从这张图你能看到,数据保持问题其实是一个“综合症”——它受出厂坏块、使用坏块、编程干扰、读取干扰的共同影响。比如,一个Block如果已经被编程干扰过,它的氧化层就有损伤,数据保持时间就会缩短。所以,坏块管理不是孤立地处理某一种问题,而是要综合考虑。
好了,这一章的内容就到这里。坏块产生机理是NAND Flash开发的基石,理解了它,后面讲坏块管理策略、ECC纠错算法时,你就能明白为什么要有那些设计了。