固态硬盘各种技术的介绍及发展

来源:本站整理 作者:U盘量产网

 固态硬盘技术之磨损均衡

 

磨损平衡,也叫磨损均衡,英文名为Wear Leveling。其实很好理解,所有的产品使用后,都会产生磨损。具体到固态硬盘闪存上,就是说对同一块闪存Block不段地读取写入数据,会造成闪存磨损。最终导致Block彻底坏掉。这在我们之前SLC/MLC/TLC闪存中介绍了相关原理。

    我们知道当硬盘出现了物理坏道后,我们能做的就是把其屏蔽掉,然后迁移数据,等待坏道增加最够多的时候,我们就无可奈何了,硬盘只好光荣退休。同样,在使用NAND闪存介质的SSD中,同样会面临坏块的影响,这也是磨损均衡这个概念的出发点。

    更是为了应对闪存磨损的问题,因此磨损均衡技术也就应运而生了。固态硬盘中均应用了Wear Leveling(均衡磨损或磨损平衡)机制,它可以尽可能地将文件平均分配到每一个区块(Block),保证对每一个闪存块的编程/擦写次数一致,避免对某一部分区块的过度地重复进行擦除操作而报废,从而有效延长了固态硬盘的写入寿命。

    磨损平衡算法一般分为静态和动态,当前所有主流的固态硬盘均支持动态磨损平衡。动态磨损平衡是指主控尽量选择那些“较新”的区块来使用,这种算法的优点是复杂度低,易用控制,不会占用太多资源,但缺点则是这种算法还不是最优。

    当然这只不过是延长固态硬盘读写次数的一个方面了,接下来我们将会说到更多延长固态硬盘寿命的技术。

Trim指令和垃圾回收

其实固态硬盘和机械硬盘都会有越用越慢的特性。只不过原理不同,传统机械硬盘主要是由于硬盘写入从外到里的写入顺序,随着数据的增多,磁头的移动和寻址时间变长。

 

     固态硬盘则是完全另外一回事。以前的固态硬盘主控和系统之间在删除数据方面缺乏交流。如果用户要删除某些数据,操作系统只会在磁盘映射表中做个标记,说明这个地址的数据被删除了。但是实际上,在没有写入新的数据之前,原来地址存放的资料仍然在原地。

 

    当需要写入新数据的时候,需要固态硬盘先删除原来的数据再开始写入新数据,这样无疑使得硬盘的性能下降。更何况,固态硬盘的最小存储单元是Page,但是最小删除单元却是Block。这需要在删除小文件时,需要先把整个 Block的文件先转移到系统缓存中,然后在找到需要删除的数据删掉,在把有用的数据写入闪存内。这无疑是很浪费时间的一个过程。

    正是针对固态硬盘的这一缺点,微软率先提出了Trim指令。TRIM是从Windows 7和Windows 2008 R2开始支持的一个ATA指令,他的作用就是由操作系统告诉固态硬盘,标记那些存有无效数据的地址,以提升后续垃圾回收的效率。有了这个功能,当删除文件时候,系统会及时通知主控,这样主控就能够在其他时间完成对数据的删除和整理,再有新数据写入的时候,就不在重复我们刚才上面提到的繁琐过程,从而让固态硬盘性能保持稳定。

 

 

垃圾回收是固态硬盘的另外一个特色功能。其实这个功能相当于机械硬盘的碎片整理。

    垃圾回收的功能是将所有Block中的有效Page合并到一个新的Block中,并将旧的Block进行擦除,这样做的好处一方面减少寻址负担,另一方面留出更多的空闲Block。所以垃圾回收对固态硬盘的性能和寿命都起到至关重要的作用。

    垃圾回收分为闲置垃圾回收和被动垃圾回收。顾名思义,前者就是在固态硬盘闲置时做垃圾回收操作,这样做的好处是不会占用额外的主控资源,能够让固态硬盘尽可能地保持较高的效能,但缺点就是会增加额外的写入放大。

    而被动垃圾回收则是在数据输入/输出的同时做垃圾回收操作,这个机制会大量占用主控资源,对有数据请求时的“响应时间”产生一定影响。这个机制也可以称为“实时垃圾回收”

    总的来说,垃圾回收操作由于将不同Block中的有效Page进行合并,有额外的擦除操作,会增加写入放大。因此过于频繁的垃圾回收会对NAND寿命产生影响,但又需要进行这样的机制来保证性能,怎样在两者之间取得一个平衡是衡量固件算法的重要指标。

OP预留空间和硬盘容量  

      有关硬盘容量,我们在机械硬盘使用过程中就遇到过这样的问题。总有人问我购买了120GB或160GB容量的硬盘为什么在系统里显示没有这么多容量?难道厂商把我黑了?又总有人出来解释,硬盘厂商的1GB=1000MB,而系统中容量的计算1GB=1024MB,因此就出现了所谓的差值。当然在固态硬盘中,有关厂商和系统的换算值不同仍将存在。固态硬盘当然也存在着同样的问题,只不过到了固态硬盘厂商使用了OP预留空间这个专有名词。凡是使用过采用SandForce主控的固态硬盘的用户可能都发现,这些硬盘的容量都是60GB/120GB/240GB/480GB等等。本章我们就说说预留空间的事!(很多采用SF主控的硬盘目前也已经允许不采用二级预留空间。)

    预留空间(Over-provisioning)是指SSD保留一部分闪存空间留做其他用途,容量大小一般是由主控决定的。预留空间可分为三级,接下来我们就分别说一下这三级空间。

    一级预留空间还是来自换算单位的不同。固态硬盘的容量本该用GiB(gibibyte)来表示容量,但是无论机械硬盘厂商还是固态硬盘厂商都不约而同的选择了使用GB(gigabyte)这个单位。1GB容量是10进制单位计算得来,等于1,000,000,000字节(bytes)。但是实际上闪存容量却是以2的n次方数来得出的。因此采用二进制计算出来1GB的容量实际是1,073,741,824 (230)。7.37% (=(230-109)/109,

    这个得出的7.37%就是采用二进制计算多出的容量。因此如果一款没有采用预留空间的固态硬盘的容量将会是128,000,000,000。这个7.73%的容量差别一般情况下不能被算做预留空间。第二季预留空间则是由厂商决定。一般情况下是按照0%,7%或者28%的比例。例如尽管都是采用了128GB容量的闪存,不同厂商可能会标示100GB或者120GB的容量。这就是分别采用28%和7%预留空间比例。这并不包括由于十进制和2进制换算而产生的7.37%容量差别。第三级预留空间测试来自终端用户。有的固态硬盘厂商允许用户自行选择额外的预留空间,以获得更长的使用寿命以及更好的性能,当然前提是牺牲了部分容量。还有一种可能是由于系统分区时候并没有完全利用可供支配的空间,那么剩余的这部分空间也会执行预留空间所执行的功能。预留空间虽然占用了一部分用户的容量,但是的确在产品使用寿命以及性能方面提升了不少。

 有关4K对齐的问题 

       4K对齐问题当然是源于磁盘扇区分配。当初的磁盘都是以每个扇区512字节管理存储文件的。但是随着硬盘容量的提升,使用512KB的扇区已经无法满足有效合理的管理文件的使命,于是乎厂商们就使用了新的4K扇区来管理文件了。4K就是4KB,每个扇区可以存储4096字节数据。

    问题就出在这里,采用了新格式的硬盘如果在遇到不知道硬盘采用新格式的程序时,在读取和写入数据时,就会性能降低。但是如果采用了4K对齐,这样的问题就能够得到解决。

    简而言之,我们还是希望采用了例如Windows 7的用户可以重新分区,以便能够实现4K对齐,从而提高硬盘性能。而其他不支持的系统,也可以使用某些软件进行操作,有兴趣的用户可以自己搜索一下,这里我们就说到这里吧。

微微一笑很倾城正版手游千年风华无限钻石版第7装甲师无限金条安卓暴击联盟千年风华tv版女神危机未和谐版武林群侠传魔与道官网最新版剑魂之刃免费gm版明星梦工厂游戏宝宝爱拼图祖玛泡泡龙皇家骑士团多牛百变方块啪啪联盟乱世神将bt版坦克大决战新版王者守卫内购无限钻石金币明星梦工厂游戏塔防西游记无限内购版汉家江湖福利版封仙之怒手机版萌菌大作战2变态版三国杀OL互通版最新航海王启航满v版牧羊人之心内购版超神三国志正版荣耀战国无限内购版美杜莎传奇最新版安卓三国萌将录无限元宝版