揭秘闪存芯片为什么不能执行覆盖写操作

闪存芯片不能执行覆盖写操作——你知道吗?

基于闪存的固态硬盘,底层的数据存储由闪存芯片完成。为了利用并行性来提高闪存的读写性能,闪存芯片的内部被设计为一种多层次的组织结构,一般情况下,一个芯片由外向内包括五个层次,依次是芯片(chip)、晶圆(die)、分组(plane)、块(block)、页(page)。

页的大小在2KB到16KB不等,块由几十到几百个页组成,分组则由几百到几千个块组成。不同厂商生产的芯片,结构参数往往不同。在美光生产的MT29F32G08CBACA型号的MLC芯片中,一个页的大小为4KB,一个块由256个页组成,一个分组由4096个块组成。(监控硬盘、普通硬盘、U盘、光盘、SD卡等存储设备的数据发生了丢失,使用迷你兔数据恢复软件(minitool)进行恢复找回。)

闪存芯片不能执行覆盖写操作——你知道吗?

不同于传统的磁介质,闪存芯片支持的基本操作除了读(read)、写(program)操作外,还有一个擦除(erase)操作,其中写操作也往往称为编程操作。

读、写操作的基本单位是页,擦除操作的基本单位是块。为了提高读写性能,一个分组内往往会设置一个数据寄存器,其大小与一个页的大小相同,用于暂存该分组内的某一个数据页。

由于闪存介质本身的特点,闪存在使用过程中具有以下特点:(1)读写操作不对称;(2)必须要先擦除后写入;(3)擦写次数有限。

从本质上来说,闪存利用浮栅晶体管中的阈值电压存储具体的比特信息,读取数据时,通过一系列预先设定的参考电压与存储单元的阈值电压进行比较即可检测出阈值电压的范围,确定具体的数据信息;对存储单元编程时,则需要重复一系列注入电子、检测阈值电压的步骤,直到阈值电压提高到指定的范围。

由于编程操作比读操作要经历更复杂的步骤,编程操作的执行时间会远远大于读操作的执行时间。对于SLC闪存芯片,读操作需要20us,写操作需要200us;对于MLC闪存芯片,读操作需要30us,写操作则需要300us~2ms。

闪存芯片不能执行覆盖写操作——你知道吗?

闪存在执行编程操作时,只能将每个比特位从”1″写为”0″,而不能反过来将”0″写为”1″,这就意味着闪存不能执行覆盖写操作。擦除操作的作用,是将闪存中每个位恢复为”1″的状态,因此,每个块只有先擦除,其中的页才能写入数据。

闪存在编程和擦除操作中,会通过对闪存单元施加高电压来使得电子注入或流出存储单元的浮栅,这一个过程会对浮栅晶体管造成一定的磨损,当擦写超过一定的次数,可能导致晶体管被击穿而无法正常存储数据,因此,闪存在使用时擦写次数是有限的。(迷你兔数据恢复minitool具有“删除恢复”、“格式化恢复”、“硬盘恢复”、“深度恢复”、“移动存储设备恢复”五大功能模块,恢复效率高,安全性有保障。)