闪存层次和数据丢失
我们已经证实了一个闪存单元可以储存一个还是两个比特取决于它是SLC还是MLC设备。把一群单元聚集到一起,就得到了一个page。page是您可以编程(写入)NAND闪存装置最小的结构。
大部分MLC NAND闪存的每一page是4KB。一个block是由许多page组成的,在英特尔的MLC SSD中一个block包含128 pages(128 pages x 4KB/page = 512KB/block = 0.5MB。Block是您可以擦除得最小结构。
因此,当您写入SSD时,您一次可写入4KB数据;但是当您从SSD擦除数据时,您一次不得不删除512KB。过会儿,我会进一步探讨这个问题,但现在让我们看看当您从一个SSD删除数据时会发生什么事情。
无论何时您将数据写入闪存,我们都会反复经历同样的编程过程。创建一个电场,电子穿过氧化物并储存电荷。擦除数据会导致同样的事情发生,但却向着相反的方向。问题是电子穿过氧化物的次数越多,就会变的越弱,最终将电压也不能再阻止电子的自由活动了。这时候,SSD的这个单元就发生故障了。
大约经过一万次擦除/编程周期后,MLC闪存才会最终出现那个问题。而SLC可使用十万次,这得益于它的简单设计。
由于寿命有限,所以SSD必须非常小心地选择擦除/编程每个单元的时间和方式。请注意,您可以从一个单元里读取数据,多少次都行,这并不减少单元存储数据的能力。只有擦除/编程周期才会降低了寿命。
此外需要注意的是,因为SSD没有擦除block这个概念,唯一擦除block的时候就是写入新数据的时候。如果您删除Windows里的一个文件而没有创建新的文件,SSD实际上并没有从闪存中移走这个数据,除非您准备好写入新的数据。