深入解析SSD中MLC与SLC的性能差异

from: http://blog.sina.com.cn/s/blog_502c8cc40100pztk.html

固态硬盘( SolidStateDisk SolidStateDrive ),也称作电子硬盘或者固态电子盘,是由控制单元和固态存储单元( DRAM FLASH 芯片)组成的硬盘。

  固态硬盘的接口规范和定义、功能及使用方法上与普通硬盘的相同,在产品外形和尺寸上也与普通硬盘一致。由于固态硬盘没有普通硬盘的旋转介质,因而抗震性极佳。其芯片的工作温度范围很宽( -40~85 摄氏度)。目前广泛应用于军事、车载、工控、视频监控、网络监控、网络终端、电力、医疗、航空等、导航设备等领域。

  本文将详细解析 SSD 固态硬盘的工作原理,并解析 SLC MLC 两种不同的固态硬盘在性能和安全性上的差异。

   SSD 工作原理

  下面是一个关于 NAND 闪盘的原理塔图。从下图我们可以看到,每一个 单元 就是由一个这样的晶体管组成的。

深入解析SSD中MLC与SLC的性能差异

在单级单元( SLC )闪存设备中,一个晶体管可容纳 1- 比特数据。您通过电子通道将数据写入单元;将足够高的电压加于两端,创造一个足够强大的电场,电子将穿透氧化物进入浮动门。消除电压,电子将继续停留在浮动门。将电压穿越通道而不施加到门上,扭转偏压,电子将向另一个方向移动。

  简单的说,这就是闪盘的工作原理 - 你有两种状态, 0 1 ,即使单元没有电了,状态也会维持住,因此对存储设备来说是非常理想的。

  编程闪存是一个反复的过程。该控制器将电压施于门(或通道)上,允许一些电子穿过并检查单元的临界电压。当临界电压已达到一些预定的值时,就开始编程并储存数据了。

   MLC SLC 的区别

  目前 SSD 硬盘使用两种形式的 NAND 闪存:单级单元( SLC )和多级单元( MLC )。两者之间的差额是每单元存储的数据量, SLC 每单元存储 1 比特而 MLC 每单元存储 2 比特。关键在于, SLC MLC 占据了相同大小的芯片面积。因此,在同样的价格下, MLC 可以有两倍容量的效果。

   STEC SLC MLC 闪存实际上使用了相同的晶体管,不同之处在于怎样读 / 写这两个闪存。 SLC 只有两个电压符,因为它只有两个状态( 0 1 )。 MLC 却有四个状态( 00 01 10 11 ),因此需要花费较长的时间来访问,因为你不想意外写入错误的数据;您已有了相同的最大、最小电压,您现在仅仅有它们两者之间更多的刻度:

深入解析SSD中MLC与SLC的性能差异


SLC(left)vs.MLC(right)

  下面是一个关于 SLC MLC 性能基本数据的表格:

深入解析SSD中MLC与SLC的性能差异

  SLC MLC 的擦除性能是一样的, MLC 闪存的读取性能需花费两倍长的时间,写入性能需花费四倍长的时间。如果您以前听说过有人抱怨 MLC 写入速度,这就是部分原因。不过一定要记住,我们在这里谈论的这些数字低得离谱 —— 甚至 900 微秒写入 MLC 闪存的速度都远远超过向普通机械硬盘的写入速度。

   SLC 的最大优势不在于它的性能好而在于它的使用寿命长。要了解闪存的耐用性,我们首先需要看看存储设备的内部构造。
  闪存层次和数据丢失

  我们已经证实了一个闪存单元可以储存一个还是两个比特取决于它是 SLC 还是 MLC 设备。把一群单元聚集到一起,就得到了一个 page page 是您可以编程(写入) NAND 闪存装置最小的结构。

  大部分 MLCNAND 闪存的每一 page 4KB 。一个 block 是由许多 page 组成的,在 STEC MLCSSD 中一个 block 包含 128pages 128pagesx4KB/page=512KB/block=0.5MB Block 是您可以擦除得最小结构。

  因此,当您写入 SSD 时,您一次可写入 4KB 数据;但是当您从 SSD 擦除数据时,您一次不得不删除 512KB 。过会儿,我会进一步探讨这个问题,但现在让我们看看当您从一个 SSD 删除数据时会发生什么事情。
深入解析SSD中MLC与SLC的性能差异


无论何时您将数据写入闪存,我们都会反复经历同样的编程过程。创建一个电场,电子穿过氧化物并储存电荷。擦除数据会导致同样的事情发生,但却向着相反的方向。问题是电子穿过氧化物的次数越多,就会变的越弱,最终将电压也不能再阻止电子的*活动了。这时候,SSD的这个单元就发生故障了。

  大约经过一万次擦除/编程周期后,MLC闪存才会最终出现那个问题。而SLC可使用十万次,这得益于它的简单设计。
  由于寿命有限,所以SSD必须非常小心地选择擦除/编程每个单元的时间和方式。请注意,您可以从一个单元里读取数据,多少次都行,这并不减少单元存储数据的能力。只有擦除/编程周期才会降低了寿命。

  此外需要注意的是,因为SSD没有擦除block这个概念,唯一擦除block的时候就是写入新数据的时候。如果您删除Windows里的一个文件而没有创建新的文件,SSD实际上并没有从闪存中移走这个数据,除非您准备好写入新的数据。
SSD如何保证使用寿命

  现在回到编程和擦除SSD数据之间方式的差异上来。您在page上编程,在block上擦除数据。假设您保存了一个8KB的文件,之后决定要删除它,这可能是您写给自己的简单便条,表示您不再需要了。

  您保存该文件时,它会以2pages的形式保存在闪存记忆体中;您将其删除时,SSD会标记pages为无效,但实际上并不会删除该block。SSD将等到block中一定比例的pages被标记为无效时,才会复制一些有效的数据到新的pages里去并擦除该block。SSD这样做是为了限制了每个block擦除的次数,从而延长驱动器寿命。

  但是并非所有的SSD都采用同样的方式来处理删除请求,因此,从硬盘原理上来说,如何处理删除请求对SSD安全性产生较大的影响。

  我们已经从概况的角度介绍了SLCSSD与MLCSSD的不同,并且阐述了一般SSD的设计者如何通过编程和算法来保证SSD的性能和安全性。希望以上的叙述能帮助读者进一步了解SSD,进而能够帮助读者准确地选择合适的SSD。