SSD固件(Firmware)就是写入EROM(可擦写只读存储器)或EEPROM(电可擦可编程只读存储器)中的程序。
固件是指设备内部保存的设备“驱动程序”,通过固件,操作系统才能按照标准的设备驱动实现特定机器的运行动作,比如SSD、U盘、光驱、刻录机等都有内部固件。
固件是担任着一个系统最基础最底层工作的软件。而在硬件设备中,固件就是硬件设备的灵魂,因为一些硬件设备除了固件以外没有其它软件组成,因此固件也就决定着硬件设备的功能及性能。
SSD固态硬盘三大参数是:主控、闪存颗粒、固件算法。SSD固态硬盘不是简易地把3D闪存颗粒堆叠在一起,成为一层一层的高楼大厦就做成了,更为重要的是还要让SSD长期稳定、快速地运行,延长寿命等等,就要研制优质的固件算法。
即使两块SDD的主控、闪存颗粒是一模一样的,这两块SSD的使用性能也可能还是有差别的,有时差别还很大。因为,这两块固态硬盘的固件算法不一样,导致运行情况可能差距很大,即速度和寿命不一样。
因此,SSD固件的算法好坏非常重要。算法优秀的固件需要让闪存和主控之间达到完美的兼容,需要掌握闪存颗粒和主控等多项先进的技术 。固件的算法越优秀,整个SSD的品质也就越好。
固件需要协作来完成复杂且同样重要的任务,即管理数据存储、维护SSD性能和使用寿命等。
一、固件算法主要有哪些?
SSD的固件是确保SSD性能的最重要组件,用于驱动控制器。主控将使用SSD中固件算法中的控制程序,去执行自动信号处理,耗损平衡,错误校正码(ECC)及坏块管理、垃圾回收算法GC、FTL算法、trim算法等等。
二、固件主要算法简介
1、磨损平衡写入算法:
SSD需要一个非常完善的平衡写入算法,让所有的颗粒都均衡消耗,不至于导致有一部分颗粒写入寿命耗尽,而其它颗粒未使用的情况。
SSD拥有磨损平衡算法,大致分为动态和静态两种。
动态的算法就是当写入新数据的时候,会自动往比较新的Block中去写,老的闪存就放在一旁歇歇。
它们都加入对Trim指令的支持。这可以让操作系统在删除逻辑表中删除逻辑扇区地址的同时通知固态硬盘某些数据已经无用了。
而静态的算法就更先进,就算没有数据写入,SSD监测到某些闪存Block比较老,会自动进行数据分配,让比较老的闪存Block承担不需要写数据的储存任务,同时让较新的闪存Block腾出空间,平日的数据读写就在比较新的Block中进行。如此一来,各个Block的寿命损耗,就都差不多了。
2、错误校正码ECC及坏块管理算法:
ECC是一种用于差错检测和修正的算法。NAND闪存在生产和使用中都会产生坏块,BBM就是坏块的管理机制。
而要有效管理坏块的首要前提,就是有可靠的坏块检测手段,ECC的能力也影响到NAND闪存的寿命和数据保存期。
3、FTL算法:
把SSD的架构虚拟成HDD的算法,叫做“FTL”。
NAND Flash是固态硬盘的基本存储单元,主要用来存储数据,相当于机械硬盘的磁盘。
SSD由闪存构成,没有盘片,也就没有扇区,这就得靠一些算法来进行转换了。
FTL算法是由SSD主控提供的,比操作系统更加底层。FTL作为一个软件中间层,可以把SSD基于Page的硬件架构映射成HDD基于扇区的硬件架构。
操作系统为SSD建立文件系统的时候,有了FTL,操作系统看到的SSD和HDD是完全相同的,就可以用传统的方法对SSD进行分区、格式化等操作。
利用FTL软件算法,SSD才能顺利接替HDD,没它SSD就无法识别。
4、垃圾回收算法GC:
SSD内部都有垃圾回收机制。功能与磁盘整理功能相当,但算法不同。
首先介绍一下SSD的页面管理机制,即闪存的硬件架构。
在固态硬盘闪存内,数据存储一般按页(Page)为最小单位存储的(典型的为4KB),而128个页组成了一个块(block),数据可以以4KB大小的页来读取和写入,但却只能以512KB(128页)的块大小来删除。
垃圾回收的基本原理是把几个Block中的有效数据集中搬到一个新的Block上面去,然后再把这几个Block擦除掉,这样就产生了新的可用Block了。
垃圾回收相当于固态硬盘的碎片整理功能,这是固态硬盘自身固件软件自动运行回收,不需要人工操作。
垃圾回收的功能是将所有Block中的有效Page合并到一个新的Block中,并将旧的Block进行擦除,这样做的好处一方面减少寻址负担,另一方面留出更多的空闲Block。所以垃圾回收对固态硬盘的性能和寿命都起到至关重要的作用。
5、Trim算法
对无用的页进行标记,这个指令本身并不去删除无用的块。它协助垃圾回收,减少删除次数,提高了垃圾回收效率。
这个trim指令是win 7以上操作系统默认开启的,不需人工开启,也不需人工去操作这条指令,固件软件会自动运行这条指令的。
对支持TRIM的系统,在用户写入数据时并没有什么不同。但是当用户删除文件的时候,因为系统支持了TRIM指令,固态硬盘立刻就把数据标记为“无用”。
垃圾回收算法等待到所有Block中的有效Page(标记为无用的页,就不会搬动了)合并到一个新的Block中,剩下的是无用的页,最后统一将旧的Block擦除干净。这样做减少了闪存删除数据的次数,节约了时间。
简言之,就是对无效数据所在的整个块,先把这块内有效数据集中起来,转移到空闲的块中,然后把“已搬迁的块连同无效数据”整个擦除。
SSD读写是按1页为单位进行的,但整理擦除是按128页即一块为单位进行的。
三、固件知名厂家
目前能够独立开发固件的SSD厂商为数不多,仅有三星、Intel、闪迪、英睿达、浦科特、东芝、OCZ等,这是大厂带来的技术优势。固件的品质越好,整个SSD就越精确,越高效。
当然,在固态硬盘固件出现BUG影响SSD正常使用时,这些SSD厂商也会很快发布新的更新固件,而小厂商一般没有后续更新,也不具备这种技术实力。当SSD制造商发布一个固件更新时,需要手动更新固件来改进和扩大SSD的功能。
原创文章,作者:大柱,如若转载,请注明出处:SSD固件Firmware主要算法介绍