写入放大

。因此,要改写数据,就需要读取闪存某些已使用的部分,更新它们,并写入到新的位置,如果新位置在之前已被使用过,还需连同先擦除;由于闪存的这种工作方式,必须擦除改写的闪存部分比新数据实际需要的大得多。此倍增效应会增加请求写入的次数,缩短SSD的寿命,从而减小SSD能可靠运行的时间。增加的写入也会消耗闪存的带宽,此主要降低SSD的随机写入性能。许多因素会影响SSD的写入放大,一些可以由用户来控制,而另一些则是数据写入和SSD使用的直接结果。

在2008年,英特尔和SiliconSystems(2009年为西部数据所收购)首先在他们的论文和出版物使用了术语“写入放大”。写入放大通常用闪存的写入与主机系统的写入之比来衡量。没有开启数据压缩时,写入放大不小于1。在使用压缩的情况下,SandForce声称他们的典型写入放大达到了0.5,而在最佳情况下,使用SF-2281控制器,此值能低至0.14。

SSD基本操作
(P/E循环)次数来表示。单层单元(SLC)闪存,通常设计为高性能和长寿命,一般能有50000到100000次循环。,设计用于低成本应用的多层单元(MLC)闪存,循环次数就大为减少,一般只有3000至5000次循环。自2013年起,已有三层单元(TLC)闪存,其编程-擦除(P/E)循环次数又降至1000。写入放大越低,则越为理想,因为与之对应的是闪存中P/E循环次数减少,所以能延长SSD的寿命。和SiliconSystems开始在他们的论文和出版物中使用它

:闪存写入的数据量 ÷ 主控写入的数据量 = 写入放大

影响因素
SSD的写入放大会受许多因素的影响。下表列出了主要因素以及它们对写入放大的影响。对于变量因素,表中注明了“正面”相关或“反面”相关。如随着预留空间的增加,写入放大将减小(反相关)。如果该因素是一个开关(“启用”或“禁用”)关系,那么它的关系或“正向”或“反向”。所有的SSD都包含不同程度的垃圾回收机制,但在执行的频率和速度上有所不同

后台垃圾回收
垃圾回收的过程包括读取并重新向闪存写入数据。这意味着,主控写入新数据时,就必须先读取整个区块,再写入区块中仍包含有效数据的部分,之后才写入新数据。这显著降低了系统的性能。有的SSD控制器实现了“后台垃圾回收”(BGC),有时也被称为“空闲垃圾回收”或“空闲时间垃圾回收”(ITGC),能让控制器在主控需要写入新的数据之前,使用空闲时间整理闪存块。这使驱动器能维持较高的性能。SandForce的SSD控制器。目前,这些厂商生产的SSD是否仍具备该功能不得而知。有报道称,如果没有正确地用MBR和NTFS格式化这些驱动器,将会出现系统数据的损坏。

预留空间
(GB),而不是gibibyte(GiB)。HDD和SSD的厂商都使用术语GB来表示“十进制”的GB,即1,000,000,000(10^9)字节。闪存(象其它大多数电子存储器一样)以二的幂组装,所以SSD的物理容量将以每二进制GB 1,073,741,824(230)字节来计算。两个值之间的差距是7.37%(=(230-109)/109 × 100%)。从而预留0%空间的128 GB SSD提供给用户的容量是128,000,000,000字节。这个初始的7.37%通常不计算在总的预留空间数量中。。

TRIM
TRIM是一个SATA命令,使得操作系统可以告诉SSD不再需要哪些之前保存过数据的区块。可能这些文件已被删除,或整个分区已被格式化。若操作系统替换了一个LBA的同时覆写了一个文件时,SSD就能知道可以标记原来的LBA为过时或无效,在垃圾回收的过程中就不用再保留那些块。如果用户或操作系统删除一个文件(不只是除去它的一部分),通常只会将该文件标记为已删除,而并未真正擦除磁盘上的实际内容。正因如此,SSD不知道可以擦除文件先前占用的LBA,所以在垃圾回收时仍会保留它们。

在有操作系统支持的情况下,TRIM命令解决了这个问题,如Windows 7及Linux >= 2.6.33。当永久删除一个文件或格式化硬盘时,操作系统依据不再包含有效数据的LBA发送TRIM命令。这可告知SSD可以擦除并重新使用哪些使用中的LBA。垃圾回收过程中需要移动的LBA因此而减少。结果是SSD将有更多的空闲空间,同时获得低写入放大及更高的性能

安全擦除
ATA安全擦除命令旨在从驱动器中删除所有用户数据。对于没有内置加密功能的固态硬盘,此命令将会把驱动器恢复至其出厂状态。刚开始,它的性能将恢复至可能的最高水平及最佳的(最低)写入放大,但只要驱动器再次开始垃圾收集,性能和写入放大就会逐渐降至先前水平。许多工具能使用ATA安全擦除命令重置驱动器,而且有用户界面。在行业中经常提到的一个免费工具是HDDErase。Gparted和Ubuntu live CD提供可启动的Linux系统,上有包含安全擦除的磁盘实用程序。

实时加密所有写入数据的驱动器可以以另一种方式实现ATA安全擦除。方法是简单地向其补零,并在每次完成安全擦除后产生一个新的随机加密密钥。这样就无法再读取旧数据,因为无法解密。内置加密的驱动器可能需要发送TRIM命令,以将其设为出厂状态。

耗损均衡
如果反复地编程和擦写某區块,而其他區块却没有写入,该區块会早于其他的區块而磨损——从而过早地结束了SSD的寿命。由于这个原因,SSD控制器使用称为耗损均衡的技术,以尽可能均匀地将写入分配到SSD的所有闪存區块上。

理想情况下,每一區块都能写入到最大次数,这样它们都能同时失效。不幸的是,耗损均衡操作會要求移动之前写入後就未改变的数据(冷数据),以使频繁变动的数据(热数据)可以写入到冷數據的區块中,讓冷數據的區塊達到均衡。数据被重定位,而主控却并没有修改它们,这增加了写入放大,而降低了闪存的寿命。关键是要找到最优算法以使两者同时达到最佳化。

静动数据分离
对SSD控制器来说,静动数据分离并不是一件简单的事。该方法需要SSD控制器将数据不断变化、需要重写(动态数据)的与数据很少改变、且不需要任何重写(静态数据)的LBA分离开来。如果数据混于同一区块,正如目前几乎所有系统所做的那样,SSD控制器在重写时,就需要垃圾回收动态数据(引起重写的原因)和静态数据(不需要任何重写)。任何对操作中未涉及数据的垃圾回收都会增加写入放大。因此分离数据将使静态数据留在原地,如果它永远不会改写,写入放大就能达到最低。。SSD通常并联使用多个闪存组件,以提高性能。如果SSD的写入放大高,控制器将不得不多次向闪存写入。主控将需要更多的时间写入数据。低写入放大的SSD不需要写那么多的数据,因此能比高写入放大的驱动器更早写入完毕。2009年4月,SandForce宣布了SF-1000 SSD处理器系列,报称其WA为0.5,似乎是借由某种形式的数据压缩而达到。在此次发布前,曾认为1.0的写入放大是SSD可以达到的最低水平。目前,只有SandForce的SSD控制器使用了压缩。

参见

  • 闪存文件系统
  • 分区对齐
  • 耗损平衡

注释
参考
外部链接
*

评论 (0)

  • 还没有评论,来抢沙发吧。