本发明涉及存储技术领域,尤其涉及一种用于固态存储设备的闪存转换层控制方法。
背景技术:
随着半导体技术的进步,闪存容量越来越大,价格也却越来越便宜,固态硬盘SSD在越来越多的领域取代以磁带为媒介的传统机械硬盘(HDD)。固态硬盘与机械硬盘最大的区别在于,固态硬盘中没有任何机械部件。所以,相比传统硬盘,固态硬盘具有更低的延时和能耗,更快的数据处理速度,更好的抗震性能,更高的可靠性和耐用性。
固态硬盘的存储器件采用的是闪存,NAND型闪存具有以下几个特点:
①读写基本单位是以页(Page)为单位,擦除是以块(Block)为单位;页的大小为nKB(KB单位为1024字节),n通常等于2,4,8或16。每块包含m页,m通常为64,128或者256。
②每个物理块,必须先擦除后,才能够写入数据。
③每个块有一定的寿命,即擦除次数是有限的。举例来说,对于SLC(Single Level Cell)Flash,即单逻辑单元闪存,寿命为10,00,00次;而对于MLC(Multi-Level Cell)Flash,典型寿命为1500-3,000次。
基于闪存的上述特点,在固态硬盘中引入了闪存转换层FTL,用于对闪存进行存储控制。比如,Flash写数据只能将1写为0,擦除数据是将所有数据都写为1,因此如果在已经有数据的Flash上写入新的数据,则必须先是整块擦除(所有存储为全部为1),然后再写入新数据。这也决定了做适合读写SSD的最小单元是Page。在过去的机械硬盘时代,操作系统认为磁盘是一连串扇区(Sector,包含512Byte存储空间),这是对硬盘操作的最小单位。这一系列的物理特性的限制,要求FTL承担向下兼容的特性。FTL位于文件系统和物理介质之间,把Flash的操作习惯虚拟成以传统硬盘的512Byte扇区进行操作。操作系统就可以按照传统的扇区方式操作,而不用担心之前说的擦除/读/写问题。一切逻辑到物理的转换,都由FTL来完成,如图1所示。
FTL层负责将上层文件系统的读写请求转换成闪存物理层面的读写操作命令,同时,依据闪存的操作特点完成相应的管理。FTL算法,特别是它对应的闪存映射表FMT(Flash Mapping Table)机制,是影响固态硬盘性能高低的关键所在。
传统的数据映射方式采用块映射和页映射。随着闪存页面的增大,页映射和块映射在随机读写上的速度的不足显现出来。页映射是将逻辑页映射到Flash中的任何一个物理页(Physical Page)。如果把逻辑区块地址(Logical Block Address,LBA)切割成很多以物理页大小为单位的操作单元,该映射算法在物理页小于或等于4KB的时候,管理的灵活度高,垃圾回收负载小。但是随着工艺的提升,Flash的物理页逐渐增大,目前主流基本为16KB的物理页,并有扩大到32KB的趋势。当物理页大于4KB的时候,随机写入小文件(通常IOPS的测量是基于4KB大小的随机数据块),将会导致一个物理页只用掉4KB空间,剩余的物理页空间补充其他数据,这时候写入放大WA(Write Amplification)系数就会变大,随着物理页大小的增大这种算法的劣势会越来越大。显然,按照这样子简单的映射方法是无法满足写入速度的要求的,同时,也大大消耗了闪存的“寿命”。
故,针对目前现有技术中存在的上述缺陷,实有必要进行研究,以提供一种方案,解决现有技术中存在的缺陷。
技术实现要素:
有鉴于此,确有必要提供一种用于固态存储设备的闪存转换层控制方法,从而能够改善随机读写的速度,并提高闪存的使用寿命。
为了克服现有技术的缺陷,本发明的技术方案如下:
一种用于固态存储设备的闪存转换层控制方法,包括以下步骤:
步骤S1:在闪存转换层(FTL)中设置最小管理单元,且N个最小管理单元刚好构成一个闪存物理页的空间,其中,N为大于0的正整数;
步骤S2:逻辑地址和物理地址之间以最小管理单元来进行映射;
步骤S3:FTL为每个最小管理单元数据给予一个地址标识进行管理;
步骤S4:当主机写入数据时,等待连续写入数据达到一个完整的闪存物理页空间后,再一次性写入一个完整的空白闪存物理页。
优选地,所述步骤S3中,在闪存映射表(FMT)中为每个最小管理单元数据设置一个独立的地址码。
优选地,所述最小管理单元采用4KB存储容量。
优选地,闪存映射表(FMT)采用分段调度的方式,将当前需要用到的相关部分的闪存映射表读入内存,而其余部分闪存映射表存放在外部存储空间。
优选地,闪存映射表(FMT)存放到外部的DRAM空间。
优选地,闪存映射表(FMT)存放到闪存中。
与现有技术相比较,本发明提供的用于固态存储设备的闪存转换层控制方法,闪存转化层采用4KB数据块映射算法,从而能够有效提高随机读写速度,同时能够在有限的片上存储空间来实现越来越大的映射表。
附图说明
图1为现有技术中FTL映射图。
图2为本发明用于固态存储设备的闪存转换层控制方法的流程框图。
图3为采用页映射方式下随机写的FLASH存储分布。
图4为采用4KB映射方式下随机写的FLASH存储分布。
图5为传统页映射的PMT映射图。
图6为本发明一种优选实施方式中4KB映射的PMT映射图。
如下具体实施例将结合上述附图进一步说明本发明。
具体实施方式
以下将结合附图对本发明提供的一种用于固态存储设备的闪存转换层控制方法作进一步说明。
随着闪存物理页大小的增大,传统页映射方式将会导致写入放大WA(Write Amplification)系数变大,从而无法满足写入速度的要求的,同时,也大大消耗了闪存的“寿命”。
举一个简单的写入放大例子,假设Page大小为16KB,每次写入4KB,基本需要:
①读出此Page内不需要修改的12KB;
②寻找新的物理Page写入完整的16KB数据(包括读出的12KB、新写入的4KB)。也就是说,写入4KB,实际上需要写入16KB,写入放大系数是
为了克服上述技术缺陷,参见图2,所示为本发明一种用于固态存储设备的闪存转换层控制方法的流程框图,包括以下步骤:
步骤S1:在闪存转换层(FTL)中设置最小管理单元,且N个最小管理单元刚好构成一个闪存物理页的空间,其中,N为大于0的正整数;优选地,最小管理单元通常采用4KB存储容量,通常操作系统读写数据的以4KB为最小单位,同时,IOPS的测量也是基于4KB大小的随机数据块。
步骤S2:逻辑地址和物理地址之间以最小管理单元来进行映射;
步骤S3:FTL为每个最小管理单元数据给予一个地址标识进行管理;
步骤S4:当主机写入数据时,等待连续写入数据达到一个完整的闪存物理页空间后,再一次性写入一个完整的空白闪存物理页。
参见图3和图4,所示分别为采用页映射方式和4KB映射方式下随机写的FLASH存储分布情况。从图3可以看出,现有技术的页映射一个Page只是写入了4KB,剩余的部分用其它数据填满,16KB的空间只记录了4KB有效数据。从图4可以看出,本发明提出的4KB映射,一个Page能够存满16KB的数据。基本原理为:来自主机的写入数据,每4KB给予一个地址进行管理;连续几个4KB达到一个完整的闪存Page数据量的时候,把它们一次性写入一个完整的闪存Page。特别当Flash读写采用4KB随机读写(4KB Random R/W)时,4KB映射的写优势特别明显。由于随机读写数据的最小单元为4KB,把FTL的最小管理单元也适应性地调整为每4KB数据块为最小单元来进行映射和管理后,理性状态下,写入放大系数WA=1。使得随机写入速度,几乎接近于连续数据流的写入,大大提高了随机写入的性能。
闪存映射表(FMT)中,最重要的表为页映射表(Paging Mapping Table,PMT),PMT是算法的核心,它至少包括逻辑页到物理页映射(Logic Page To Physical Page Mapping),参见图5,所示为传统页映射的PMT映射图,内存地址表示逻辑页号,内存值表示物理页号,PMT中存储的每个物理地址信息对应一个闪存物理页,根据逻辑页号可以获取物理页号。
在一种优选实施方式中,所述步骤S3中,在闪存映射表(FMT)中为每个最小管理单元数据设置一个独立的地址码。也即在PMT中,为每个4KB空间设置一个独立的物理地址。参见图6,PMT中存储的每个物理地址信息对应闪存中的一段4KB空间。
上述技术方案中,采用4KB为单元的映射,从而大大提高了写入性能,但是由于为每个4KB空间设置一个独立的物理地址,以4KB为最小单元的映射引起了映射表存储空间的成倍增大。映射表大小参见以下公式:
假设硬盘存储空间128GB,每个映射单元的地址表征字节数为4,即用4字节地址来表示一个映射单元的地址,采用16KB Page映射,映射表格大小为32MB;而采用4KB映射,则映射表格大小为128MB。
另外,在上述技术方案中,由于为每个4KB空间设置一个独立的物理地址,读取时候的搜索就变成为每4KB就要搜索一次。而在16KB Page为单元的映射情况下,一次映射表的搜索,可以读取16KB数据,即每16KB搜索一次闪存映射表格。因此,随机写入性能的增加,一定程度上是以降低了随机读性能为折中的。但是在硬件性能大大提高的前提下,搜索速度(效能)很高,随机读速度的降低相比于随机写性能的提高,以及对于写入放大系数WA的降低(从而提高闪存使用寿命),是非常值得的。
在一种优选实施方式中,闪存映射表(FMT)采用分段调度的方式,将当前需要用到的相关部分的闪存映射表读入内存,而其余部分闪存映射表存放在外部存储空间。由于映射表需要在集成电路芯片内调度使用,芯片内的缓存一般采用SRAM来实现。超过1MB大小的SRAM空间对于当前的集成电路细芯片需要占据很大的空间,性价比不高。通过采用分段调度的方式可以解决问题。即把当前需要用到的表格部分,读入SRAM,而把其余部分存放在芯片外部空间。芯片外部空间存放的形式有两种:
存放到外部的DRAM(Dynamic Random Access Memory)空间。优点是,存取速度很快,性能优越。缺点是,需要额外的硬件资源和成本,增加了芯片的复杂度、额外的DRAM芯片的成本;在电源不稳定(包括异常掉电)情形下,很难对DRAM内的大量表格数据及时备份保护,容易引起硬盘映射表格的丢失造成硬盘损坏。适合于电源稳定、追求极致读写性能的硬盘和系统,比如,高速计算机或者服务器的第一级硬盘阵列、热数据存储。
存放到闪存(Flash Memory)中。优点是,没有额外硬件成本开支;异常电源问题的情况下,容易保护映射表不丢失,或者容易丢失后自我重建,可靠性高。缺点是,存取速度相对比较慢,引起读写性能的一定程度下降;该方法也造成额外的闪存写入负担(WA系数略略增大)。适合于追求可靠性、读写性能要求一般的硬盘和系统,比如工业设备、大型数据库的冷数据存储。
下面通过计算分析4KB映射存储管理的读写速度及性能分析。假设随机写入4个4KB的数据,Flash的页大小为16KB,以下分别计算页映射和4KB映射的速度。
随机写入4个4KB的数据时,4KB映射算法最大写速度(不更换映射表):
最小写速度(每个4KB都要更换全部的映射表):
公式(3)和公式(4)中,Tx0是指写入16KB数据过程用来通过总线搬移数据的时间;Tw是写入闪存时候的编程等待时间(体现为闪存总线总即busy时间);本文芯片内,SRAM资源用于存放4KB Mapping映射表的大小为13KB(其中8KB为直接地址映射,3KB为其他辅助信息),搬移映射表的时间为Tx1,读取闪存数的总线等待时间(体现为总线忙即busy时间)为Tr,如果两个4KB之间需要全部更新一次映射表(调用和更新当前SRAM内的映射表)的时间为Tm=Tr+Tx1。
随机写入4个4KB的数据时,页映射算法最大写速度(不更换映射表):
最小写速度(每个4KB都要更换全部的映射表):
公式(5)和公式(6)中,由于页映射(Page Mapping)每次系统对硬盘写入4KB数据时候,硬盘控制器芯片需要对另外12KB数据进行补齐,所以需要一个12KB数据的搬移时间Tp,以及一个读的延迟时间Tr(从闪存读取12KB时候的总线等待时间,体现为总线忙即BUSY时间)。
对比公式(3)和(5),(4)和(6),得知4KB映射的写速度高于页映射。
针对128GB的固态硬盘,闪存映射表(FMT表)总计32MB,按本文芯片资源给予的8KB SRAM内存,具有4M个“映射表段”(每个8KB大小),其中只有一段8KB映射表段被导入控制器芯片内存SRAM(称为“当前内存表段”),可以随时被搜索查询。因此,随机写入的4个4KB数据,有四种可能性分布对应于落入FMT中:
全部4个4KB数据落在同一个映射表段,那么此时写入数据时只有一个busy时间,概率为:
(2)全部4个4KB数据落在两个映射表段,有两个busy时间,概率为:
(3)全部4个4KB数据落在三个映射表段,有三个busy时间,概率为:
全部4个4KB数据落在四个映射表段,有四个busy时间,概率为:
当写入四个4KB数据时,平均概率为:
页映射(Page Mapping)在随机写入4个4KB数据时候,它首先传输4KB有效数据给相应地址的页(页大小为16KB),Flash读写是以页为单位的,则页内剩下的空间填充全1或全0。由于是随机写入数据,并且是页映射,那么每次随机写入4KB的地址都不同,它将会如第一个4KB数据那样写入另一个页中,每次写入16KB到Flash中,有效的数据也只有4KB,那么它的传输效率为25%。按第一章末尾分析的结果,其写入放大系数WA>4。
相比之下,基于4KB映射的方法,在随机写入4个4KB数据时,它会在16KB大小的页内等待4个4KB数据写完,再写入Flash中,也就是说这个页写入的都是需要传输的4个4KB的有效数据,所以理论值上的传输效率为100%。相应的写入放大系数WA>1而且接近于1。
基于4KB映射算法思路,本发明实现了一颗固态硬盘控制器芯片的设计。该芯片采用110nm工艺,已经在8英寸硅片上面实现了批量生产。芯片尺寸3.908mm*3.746mm,采用SATA PHY,具有3Gb/s的数据传输速率。片上集成的电源管理电路,可以把5V电源转换成为I/O电路和闪存芯片需要的3.3V电压,同时也产生芯片内部需要的1.2V电源。本发明讨论的映射表存储采用SRAM实现。
为了检验本发明描述算法的效果,这里采用市场上常见的M公司的两个NAND闪存型号来进行测试和比较,其中一个型号的闪存页面大小(Page Size)为8KB,另外一个型号的闪存页面大小为16KB,因为出自同一个公司的同系列产品,其余标称参数基本上一致,如读取等待时间为75us,编程(写入)等待时间1300us。通过测速软件来测试这两款Flash使用页映射和4KB映射的随机传输4KB数据的写速度,如表1所示。可以看出:无论页面大小是8KB还是16KB,4KB映射的平均速度明显比页映射的速度快,并且页面越大,4KB映射的速度与页映射的速度差距增大。
表1使用不同映射方式的随机写测试速度
上述讨论4KB映射方式下的随机写性能,在实际存储操作中,还需要考虑连续写性能。4KB映射方式,由于FMT更新更频繁,显然,当写入大数据时,相对于页映射方式,其写效率反而降低。
为了克服上述技术缺陷,在本发明的一种优选实施方式中,还包括获取主机写入文件大小的步骤,当文件的数据量大于单个闪存物理页的存储空间时,采用页映射进行闪存管理。而当文件的数据量小于单个闪存物理页的存储空间时,将文件的数据先以最小管理单元为单位进行分割,再以最小管理单元映射进行闪存管理。也即采用页映射和4KB映射相结合的方式,从而提高了闪存转换层的随机写性能和连续写性能。
以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。