NAND芯片的擦除操作有什么影响

NAND擦除的最小单位是block,中文翻译为块。这里需要特别指出的是,在存储的相关术语中,很多地方都有“块”这个概念,比如HDD的一个扇区(sector)在部分文档中叫块,文件系统(NTFS)的簇部分文章中也翻译为块,甚至在RAID中说到条带大小(chunk size)时,也可能会用“块”来代替。

因此,此块非彼块。

在NAND中,块本质上是一个物理概念,真就是NAND芯片上的一块面积。NAND的块(block)是指共用一片衬底的一组page的集合。通过前面南瓜哥的文章可知,通过给衬底施加高电压,将FG中的电子吸引出来的过程,就叫擦除(erase)过程。由于衬底共用,那么施加擦除电压必然是对该衬底上的所有FG都起作用,这就很容易明白为何block是最小的擦除单位了。

那么如果把衬底缩小到一个FG或者一个Page用一个衬底,从而使得擦除的单位是一个page行不行呢?这个理论上是可行的,但这样做的结果是在一个die中,必然会造成需要更多的走线面积,使得NAND芯片的存储密度下降,从商业角度看是得不偿失的,从技术角度看也没有这个必要,除非很特殊的场合。

擦除事件的触发条件

触发block擦除的条件,从主控层及以上来看,是比较多的,比如CG,WL,数据写入时没有空闲的block,以及剩余空间不足时,都可能触发擦除事件的发生。

CG:即垃圾回收,此时会将分散在各个block上的数据进程集中存放,从而腾挪出空闲的block来,并将空闲的block进行擦除,以供使用;

WL:及磨损均衡,系统在做静态磨损均衡时,需要通过内部的计算将长期不用的冷数据搬到热点block上,并对冷数据之前所在的block进行擦除,以提供新的写入数据使用。

缺乏空闲block或者剩余空间不足:系统会将分散在各个block上的数据进行集中存放(做了trim标记的则直接丢弃),然后将腾挪出的空闲 block进行擦除,过程类似于GC 。

从另一个角度来看,擦除分为主动擦除和被动擦除。在上面所例举的几种擦除触发条件可以看出,擦除操作均由系统后台完成,不用人为的去发送擦除命令,这种擦除方式叫做被动擦除方式。主动擦除方式是指通过人工发送擦除命令来实现,这种方式比较危险,有可能会带来灾难性后果,一般的SSD硬盘不会直接开放该命令接口,但在一些保密的情况下可能用的到,比如战时你的数据中心被敌人突袭了,数据需要马上销毁,再比如安全机构的数据需要销毁时,这时主动擦除就派上用场了。

NAND为何要做擦除操作?

说了这么多,那么NAND 为何除了读写之外,还要做擦除操作呢?

NAND需要擦除,才能写入,这是由其存储原理决定的。

我们假设一个slc-cell已经programming,此时该数据被trim标记,即数据已经过期,不再需要。如果此时需要对该cell进行再次写入,假如不先擦除的话,对于programming,就会吸引更多的电子进入FG中,超出阈值范围,对于写0,系统将不会对该cell做任何操作,但由于之前已经被programming过了,数据会仍然是1。最终的结果是,如果没有erase操作,NAND上的数据将不准确,没有任何实用价值。

(硬盘、U盘、光盘、SD卡等存储设备的数据发生了丢失,使用迷你兔数据恢复软件(minitool)进行恢复找回。)

擦除操作对NAND芯片的影响有哪些?

我们知道在HDD硬盘中,基本命令就是读和写,没有擦除。而在NAND中,却多出一个擦除的操作。正是由于这个擦除操作的存在,给NAND带来很大的影响,并派生出来一系列的问题和解决方案,而SSD硬盘的主控芯片的很大一部份工作,其实就是围绕着这个擦除操作来做的。

擦除操作对NAND芯片的影响主要有以下几个方面:

●性能影响:因擦除而引起的WA(写放大),导致一个数据的写入会引起内部多次的数据读写,从而导致写性能下降。

●寿命影响:擦除本身会导致电子在FG与衬底之间的绝缘层之间穿越,同时因擦除而导致的WA引发更多的Cell发生相同的电子穿越事件,使得NAND的寿命降低。

●可靠性影响:在FG与衬底之间的绝缘层发生电子穿越事件增加后, Cell中禁锢的电子逃逸的几率将大大增加,使得整个NAND的数据越发不可靠,当超越校验算法的阈值后,数据将会丢失。

●成本影响:擦除操作引起的一系列性能、寿命和可靠性等问题,给FTL层的开发增加了难度,研发成本加大,甚至更上层的应用不得不为此做出对应的优化,从而增加成本。

(迷你兔数据恢复minitool具有“删除恢复”、“格式化恢复”、“硬盘恢复”、“深度恢复”、“移动存储设备恢复”五大功能模块,恢复效率高,安全性有保障。)