您现在的位置:e-works > 智造书屋 > 书籍列表 > 大话存储Ⅱ——存储系统架构与底层原理极限剖析 > 固态存储介质和固态硬盘

第三章 磁盘大挪移——磁盘原理与技术 详解

第一十零节 固态存储介质和固态硬盘


 

3.10.3  向Flash芯片中写入数据的过程

    对Flash芯片的写入有一些特殊的步骤。Flash芯片要求在修改一个Cell中的位的时候,在修改之前,必须先Erase即擦除掉这个Cell。我们暂且先不在此介绍为何要先Erase再修改的原因,先说一说这个“Erase”的意思,这里有点误导之意。我们以机械磁盘为例,机械磁盘上的“数据”是永远都抹不掉的,如果你认为将扇区全部写入0就算抹掉的话,那也是有问题的,你可以说它存放的全是数字0,这也是数据。那么SSD领域却给出了这个概念,是不是SSD中存在一种介于1和0之间的第三种状态呢,比如虚无状态?有人可能会联想一下,Cell“带负电”、“带正电”、“不带电”,这不就正好对应了3种状态么?我们可以将“不带电”规定为“虚无”状态,是否将Cell从带电状态改为不带电状态就是所谓Erase呢?不是的。上文中叙述过,Cell带电表示0,不带电则表示1,Cell只能带负电荷,即电子,而不能带正电荷。所以Cell只有两种状态,而这两种状态都表示数据。
思考

    其实,这里的Erase动作其实就是将一大片连续的Cell一下子全部放电,这一片连续的Cell就是一个Block。即每次Erase只能一下擦除一整个Block或者多个Block,将其中所有的Cell变为1状态。但是却不能单独擦除某个或者某段Page,或者单个或多个Cell。这一点是造成后面将要叙述的SSD的致命缺点的一个根本原因。Erase完成之后,Cell中全为1,此时可以向其中写入数据,如果遇到待写入某个Cell的数据位恰好为1的时候,那么对应这个Cell的电路不做任何动作,其结果依然是1;如果遇到待写入某个Cell的数据位为0的时候,则电路将对应Cell的字线电压提高到足以让电子穿过绝缘体的高度,这个电压被加到Control Gate上,从而对Cell中的FG进行充电,充电之后,Cell的状态从1变为0,完成了写入,这个写0的动作又叫做“Programm”,即对这个Cell进行了Programm。

    如图3-39所示,将待写入Cell的字线电压升高到一定值,对Cell充电,充电成功,则在Cell的位线上会感应出一定的电势值,通过检测这些值来判断电荷是否已经被充入,如果位线上并没有感应出正确的电势,则表示对应这个位线的Cell串中对应的Cell可能已经损坏。SSD会以Page为单位进行写入操作,写完一个Page,再写下一个Page。
图3-39  写入Cell时的电压状态
 

图3-39  写入Cell时的电压状态

    Flash领域里,写又被称为“Programm”。由于Flash的最常见表现形式——EPRROM一般是只读的,但是一旦要将其中的程序更改,则需要重新写入新程序,即Re-Programm,所以就顺便将写入Flash的过程叫做Programm了。一块崭新的SSD上所有Cell都是已经被Erase好的,也可以使用特殊的程序对整个SSD重新整盘Erase。