SSD固态盘存储原理学习
通常,对于一个存储介质需了解以下相关内容:
数字信息"1"和"0"是如何表示的;
读操作;
写操作;
删除操作;
存储信息单元;
如何编址;
信息存储可靠性;
读写性能;
使用寿命;
存储设备的体系结构;
参考网址:http://www.sandisk.com
SSD Academy:
http://www.sandisk.com/business-solutions/ssd/academy.aspx
the principles of flash operation :
http://www.sandisk.com/business-solutions/ssd/movie-3-principles-of-flash-operation---flash-technology-tutorial-.aspx
固态硬盘(Solid State Disk或Solid State Drive),也称作电子硬盘或者固态电子盘,是由控制单元和固态存储单元(DRAM或FLASH芯片)组成的硬盘。
固态硬盘的接口规范和定义、功能及使用方法上与普通硬盘的相同,在产品外形和尺寸上也与普通硬盘一致。由于固态硬盘没有普通硬盘的旋转介质,因而抗震性极佳。其芯片的工作温度范围很宽(-40~85摄氏度)。
SSD工作原理
下面是一个关于NAND闪盘的原理图。从下图我们可以看到,每一个“单元”就是由一个这样的晶体管组成的。
在单级单元(SLC,single level cell)闪存设备中,一个晶体管可容纳1比特数据。您通过电子 通道 将数据写入单元;将足够高的电压加于两端,创造一个足够强大的电场,电子将穿透氧化物进入浮动门。消除电压,电子将继续停留在浮动门。将电压穿越通道而不施加到门上,扭转偏压,电子将向另一个方向移动。
简单的说,这就是闪盘的工作原理-你有两种状态,0和1,即使单元没有电了,状态也会维持住,因此对存储设备来说是非常理想的。
编程闪存是一个反复的过程。该控制器将电压施于门(或通道)上,允许一些电子穿过并检查单元的临界电压。当临界电压已达到一些预定的值时,就开始编程并储存数据了。
MLC与SLC的区别
目前SSD硬盘使用两种形式的NAND闪存:单级单元(SLC)和多级单元(MLC)。两者之间的差别是每单元存储的数据量,SLC每单元存储1比特而MLC每单元存储2比特。关键在于,SLC和MLC占据了相同大小的芯片面积。因此,在同样的价格下,MLC可以有两倍容量的效果。
英特尔的SLC和MLC闪存实际上使用了相同的晶体管,不同之处在于怎样读/写这两个闪存。SLC只有两个电压符,因为它只有两个状态(0或1)。MLC却有四个状态(00,01,10 ,11),因此需要花费较长的时间来访问,因为你不想意外写入错误的数据;您已有了相同的最大、最小电压,您现在仅仅有它们两者之间更多的刻度:
SLC (left) vs. MLC (right)
下面是一个关于SLC和MLC性能基本数据的表格:
SLC和MLC的擦除性能是一样的,MLC闪存的读取性能需花费两倍长的时间,写入性能需花费四倍长的时间。如果您以前听说过有人抱怨MLC写入速度,这就是部分原因。不过一定要记住,我们在这里谈论的这些数字低得离谱――甚至900微秒写入MLC闪存的速度都远远超过向普通机械硬盘的写入速度。
SLC的最大优势不在于它的性能好而在于它的使用寿命长。要了解闪存的耐用性,我们首先需要看看存储设备的内部构造。
闪存层次和数据丢失
我们已经证实了一个闪存单元可以储存一个还是两个比特取决于它是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实际上并没有从闪存中移走这个数据,除非您准备好写入新的数据。
SSD如何保证使用寿命
现在回到编程和擦除SSD数据之间方式的差异上来。您在
page上编程,在block上擦除数据。假设您保存了一个8KB的文件,之后决定要删除它,这可能是您写给自己的简单便条,表示您不再需要了。
您保存该文件时,它会以2 pages的形式保存在闪存记忆体中;您将其删除时,SSD会标记pages为无效,但实际上并不会删除该block。SSD将等到block中一定比例的pages被标记为无效时,才会复制一些有效的数据到新的pages里去并擦除该block。SSD这样做是为了限制了每个block擦除的次数,从而延长驱动器寿命。
但是并非所有的SSD都采用同样的方式来处理删除请求,因此,从硬盘原理上来说,如何处理删除请求对SSD安全性产生较大的影响。
我们已经从概况的角度介绍了SLC SSD与MLC SSD的不同,并且阐述了一般SSD的设计者如何通过编程和算法来保证SSD的性能和安全性,下文我们将详细阐述Intel X-25M SSD硬盘如何应付数据丢失。