减小固态硬盘写入放大的方法及装置转让专利

申请号 : CN200910246715.4

文献号 : CN101719099B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杨继涛张琴柯乔李欣

申请人 : 成都市华为赛门铁克科技有限公司

摘要 :

本发明实施例涉及固态硬盘技术,公开了一种减小固态硬盘写入放大的方法及装置。所述方法包括:当有新数据块要写入固态硬盘时,检查所述固态硬盘中是否有与所述新数据块相同的已存在数据块;如果有,则建立所述新数据块的逻辑块地址与所述已存在数据块的物理块地址的对应关系;如果没有,则将所述新数据块写入所述固态硬盘。本发明实施例可以减小固态硬盘的写入放大,提高固态硬盘的寿命和性能。

权利要求 :

1.一种减小固态硬盘写入放大的方法,其特征在于,包括:预先建立固态硬盘中数据块的Hash值表;

当有新数据块要写入所述固态硬盘时,计算所述新数据块的Hash值;

检查所述固态硬盘中是否有与所述新数据块相同的已存在数据块,如果所述Hash值表中有与所述新数据块逻辑块地址相同的数据块的Hash值,并且所述Hash值表中的该Hash值与所述新数据块的Hash值相同,则确定所述固态硬盘中有与所述新数据块相同的已存在数据块;

如果所述固态硬盘中有与所述新数据块相同的已存在数据块,则建立所述新数据块的逻辑块地址与所述已存在数据块的物理块地址的对应关系;

如果所述固态硬盘中没有与所述新数据块相同的已存在数据块,则将所述新数据块写入所述固态硬盘。

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:将所述新数据块写入所述固态硬盘后,将所述新数据块对应的Hash值添加或更新到所述Hash值表中。

3.一种减小固态硬盘写入放大的装置,其特征在于,包括:Hash值表建立单元、检查单元、映射关系建立单元、数据写入单元;

所述Hash值表建立单元,用于建立固态硬盘中数据块的Hash值表;

所述检查单元,用于当有新数据块要写入固态硬盘时,检查所述固态硬盘中是否有与所述新数据块相同的已存在数据块;所述检查单元包括:计算子单元,用于计算所述新数据块的Hash值;

比较子单元,用于检查所述Hash值表中与所述新数据块逻辑块地址相同的数据块的Hash值,如果有与所述新数据块的Hash值相同的Hash值,则确定该Hash值对应的数据块与所述新数据块相同;

所述映射关系建立单元,用于在所述检查单元检查到所述固态硬盘中有与所述新数据块相同的已存在数据块时,建立所述新数据块的逻辑块地址与所述已存在数据块的物理块地址的映射关系;

所述数据写入单元,用于在所述检查单元检查到所述固态硬盘中没有与所述新数据块相同的已存在数据块时,将所述新数据块写入所述固态硬盘。

4.根据权利要求3所述的装置,其特征在于,还包括:

Hash值表修改单元,用于在所述数据写入单元将所述新数据块写入所述固态硬盘后,将所述新数据块对应的Hash值添加或更新到所述Hash值表中。

说明书 :

减小固态硬盘写入放大的方法及装置

技术领域

[0001] 本发明涉及固态硬盘技术,具体涉及一种减小固态硬盘写入放大的方法及装置。

背景技术

[0002] Nand Flash是一种非易失存储介质,具有较高的单元密度,可以达到高存储密度,写入和擦除速度较快。
[0003] 目前主流的固态硬盘均采用Nand Flash芯片作为存储介质,也就是通常所说的SSD(Solid State Disk,固态硬盘),其特别之处在于没有机械结构,利用传统的Nand Flash特性,以区块写入和抹除的方式进行读写,因此在读写的效率上,非常依赖读写技术上的设计。与目前的传统硬盘相较,具有稳定、轻薄、存取速度快、发热量低等优点。
[0004] 由于Flash具有擦除次数有限、先擦后写的特点,会带来使用寿命有限的缺陷。写入放大(write amplification)是影响以Nand Flash为介质的存储设备的随机写入性能及寿命的一个重要因素,所谓写入放大参数可以定义为每写入一页用户数据时,实际平均写操作的页数,它始终是大于1的。
[0005] 为延长SSD预期使用寿命,现有技术中提供一种采用数据块比对方式来减少写操作,从而减小写入放大参数值。具体采用的方式是对当前需要写入的数据按照Flash块的大小进行块的界定,将Flash对应块中的数据读出并保存。对保存的数据和需要写入的数据进行比较,分块判断是否所有比特都不产生从“0”到“1”的变化,如果是,则直接将实际需要写入的数据写入块内相应位置;否则,则对需擦除的块进行数据保护后进行块擦除,再将实际需要写入的数据写入块内相应位置。
[0006] 可见,在现有技术中,对数据块的判断需要将Flash中对应的数据块完整地读出,利用Flash外部的存储空间逐个比特判断“0”到“1”的变化,这样的比对时间长并且会对Flash的传输带宽造成影响。

发明内容

[0007] 本发明实施例提供一种减小固态硬盘写入放大的方法及装置,减小固态硬盘的写入放大,提高固态硬盘的寿命和性能。
[0008] 为此,本发明实施例提供如下技术方案:
[0009] 一种减小固态硬盘写入放大的方法,包括:
[0010] 预先建立固态硬盘中数据块的Hash值表;当有新数据块要写入所述固态硬盘时,计算所述新数据块的Hash值;检查所述固态硬盘中是否有与所述新数据块相同的已存在数据块,如果所述Hash值表中有与所述新数据块逻辑块地址相同的数据块的Hash值,并且所述Hash值表中的该Hash值与所述新数据块的Hash值相同,则确定所述固态硬盘中有与所述新数据块相同的已存在数据块;如果所述固态硬盘中有与所述新数据块相同的已存在数据块,则建立所述新数据块的逻辑块地址与所述已存在数据块的物理块地址的对应关系;如果所述固态硬盘中没有与所述新数据块相同的已存在数据块,则将所述新数据块写入所述固态硬盘。
[0011] 一种减小固态硬盘写入放大的装置,包括:Hash值表建立单元、检查单元、映射关系建立单元、数据写入单元;
[0012] 所述Hash值表建立单元,用于建立固态硬盘中数据块的Hash值表;
[0013] 所述检查单元,用于当有新数据块要写入固态硬盘时,检查所述固态硬盘中是否有与所述新数据块相同的已存在数据块;所述检查单元包括:计算子单元,用于计算所述新数据块的Hash值;比较子单元,用于检查所述Hash值表中与所述新数据块逻辑块地址相同的数据块的Hash值,如果有与所述新数据块的Hash值相同的Hash值,则确定该Hash值对应的数据块与所述新数据块相同;
[0014] 所述映射关系建立单元,用于在所述检查单元检查到所述固态硬盘中有与所述新数据块相同的已存在数据块时,建立所述新数据块的逻辑块地址与所述已存在数据块的物理块地址的映射关系;
[0015] 所述数据写入单元,用于在所述检查单元检查到所述固态硬盘中没有与所述新数据块相同的已存在数据块时,将所述新数据块写入所述固态硬盘。
[0016] 本发明实施例提供的减小固态硬盘写入放大的方法及装置,针对SSD中的写入放大问题,提供了一种判断主机端写入的数据块与盘上已有数据块一致性的机制。通过该机制的判断,一部分主机的写入操作可以转化为LBA(Logical Block Address,逻辑块地址)与PBA(Physical Block Address,物理块地址)映射关系的修改,即当有新数据块要写入固态硬盘时,如果所述固态硬盘中有与所述新数据块相同的已存在数据块,则建立新数据块的逻辑块地址与已存在数据块的物理块地址的对应关系,不需要执行实际的对Flash的写入操作,从而减小SSD的写入放大,提高SSD的寿命与性能。

附图说明

[0017] 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0018] 图1是本发明实施例减小固态硬盘写入放大的方法的流程图;
[0019] 图2是本发明实施例减小固态硬盘写入放大的方法的一种具体实现流程图;
[0020] 图3是本发明实施例中Hash值按照逻辑块地址管理时固态硬盘写入的流程图;
[0021] 图4是本发明实施例中Hash值按照物理块地址管理时固态硬盘写入的流程图;
[0022] 图5是本发明实施例减小固态硬盘写入放大的装置的一种结构示意图;
[0023] 图6是本发明实施例减小固态硬盘写入放大的装置的一种具体实现结构示意图。

具体实施方式

[0024] 为了使本技术领域的人员更好地理解本发明实施例的方案,下面结合附图和实施方式对本发明实施例作进一步的详细说明。
[0025] 本发明实施例提供的减小固态硬盘写入放大的方法及装置,针对SSD中的写入放大问题,提供了一种判断主机端写入的数据块与盘上已有数据块一致性的机制。通过该机制的判断,一部分主机的写入操作可以转化为LBA与PBA映射关系的修改,不需要执行实际的对Flash的写入操作,从而减小SSD的写入放大,提高SSD的寿命与性能。
[0026] 如图1所示,是本发明实施例减小固态硬盘写入放大的方法的流程图,包括以下步骤:
[0027] 步骤101,当有新数据块要写入固态硬盘时,检查所述固态硬盘中是否有与所述新数据块相同的已存在数据块。如果是,则执行步骤102;否则执行步骤103。在此,所述数据块相同是指两个数据块内容完全一致。
[0028] 步骤102,建立所述新数据块的逻辑块地址与所述已存在数据块的物理块地址的对应关系。
[0029] 步骤103,将所述新数据块写入所述固态硬盘。
[0030] 本发明实施例减小固态硬盘写入放大的方法,通过检查所述固态硬盘中是否有与所述新数据块相同的已存在数据块,可以将部分对固态硬盘中Flash的写操作转变为映射关系的修改。因为作为一个存储介质,当写入一段数据后,当主机需要读取这段数据时,能够准确将数据返给主机即可。所述映射关系就反映了主机的逻辑地址与固态硬盘盘片的物理地址的映射关系,因此可以通过映射表来从固态硬盘读取到主机需要的数据。因此本发明实施例减小固态硬盘写入放大的方法,将对Flash的写操作转换为映射关系修改,因为映射关系修改的代价远小于一次实际的对Flash的写操作,从而减小了固态硬盘的写入放大,提高了固态硬盘的寿命和性能。
[0031] 需要说明的是,在上述步骤101中,在检查所述固态硬盘中是否有与所述新数据块相同的已存在数据块时,可以通过直接读取Flash中的已有数据块的方式来实现,当然,也可以通过其他方式来实现,比如通过Hash值表的方式,下面对此进行详细说明。
[0032] 在这种实现方式中,需要预先建立所述固态硬盘中数据块的Hash值表,而且,相对于传统的写入过程,增加了对数据块的Hash值计算。
[0033] 在本发明实施例中,所述Hash值表可以有多种具体实现方式,比如Hash值表包括:Hash值及所述Hash值对应的逻辑块地址。当然,所述Hash值表中也可以只包含Hash值,每个Hash值对应了一个默认的逻辑块地址。另外,所述Hash值表也可以包括:Hash值及所述Hash值对应的物理块地址。
[0034] 在具体应用时,Hash值的计算采用的Hash函数可根据对所述固态硬盘性能的要求以及实现的难度等因素的平衡来选择。
[0035] 参照图2,是本发明实施例减小固态硬盘写入放大的方法的一种具体实现流程图,包括以下步骤:
[0036] 步骤201,当有新数据块要写入固态硬盘时,计算所述新数据块的Hash值。
[0037] 步骤202,根据所述新数据块的Hash值及Hash值表确定所述固态硬盘中是否有与所述新数据块相同的已存在数据块。如果是,则执行步骤203;否则执行步骤204。
[0038] 步骤203,建立所述新数据块的逻辑块地址与所述已存在数据块的物理块地址的对应关系。
[0039] 步骤204,将所述新数据块写入所述固态硬盘。
[0040] 步骤205,将所述新数据块对应的Hash值添加或更新到所述Hash值表中。
[0041] 在上述步骤202中,可以检查所述Hash值表,如果所述Hash值表有与所述新数据块的Hash值相同的Hash值,则确定该Hash值对应的数据块与所述新数据块相同;为了进一步降低检查所述Hash值表的时间开销,减小对固态硬盘操作性能的影响,还可以只检查所述Hash值表中与所述新数据块逻辑块地址相同的原数据块的Hash值,如果有与所述新数据块的Hash值相同的Hash值,则确定该Hash值对应的原数据块与所述新数据块相同。
[0042] 本发明实施例减小固态硬盘写入放大的方法,通过对Hash值的判断来确定所述固态硬盘中是否有与所述新数据块相同的已存在数据块,可以将部分对固态硬盘中Flash的写操作转变为映射关系的修改,从而能够减小固态硬盘的写入放大,提高固态硬盘的寿命和性能;而且判断过程简单易实现,带来的额外开销小。
[0043] 以盘片数据按照4KB page管理为例,进一步详细说明本发明实施例减小固态硬盘写入放大的方法。
[0044] 主机数据按照4KB对齐的方式划分后,数据地址按照LBN(Logic Block Number)管理,即每个LBN对应一个4KB大小的数据。
[0045] Hash表的管理可以分为两种方式,一种按照LBN管理,另一种按照PBN(Physical Block Number)管理,所述PBN指示Flash上寻址到page的地址。
[0046] 一、Hash值按照LBN管理:
[0047] 如图3所示,其中,映射表301用于存储数据块的逻辑块地址与数据块的物理块地址的对应关系,Hash值表302中存储了Hash值与数据块的逻辑块地址的对应关系。
[0048] 将主机需要写入的数据按照4KB划分后,得到一个LBN=4的数据块,计算Hash值得到hx,假设hx=h2,则有两种情况:
[0049] I、Hash值表中有hx=h2的值,如图中带箭头的实线所示:
[0050] 311.在Hash值表中找到LBN=2的数据块;
[0051] 312.根据Hash值表的LBN=2,查找映射表得到PBN=c;
[0052] 313.查找Hash值表,得到原LBN=4的PBN为c,则无需再写入该LBN=4的数据块,只需将该对应关系即:LBN=4对应PBN=c写入映射表3中即可完成此次写操作。
[0053] II、Hash值表中没有hx=h2的值,如图中带箭头的虚线所示:
[0054] 321.将数据块写入Flash上一个新的PBN=x的块后,改写映射表LBN=4对应的PBN为x;
[0055] 322.改写Hash值表LBN=4对应的Hash为hx即可完成此次写操作。
[0056] 二、Hash值按照PBN管理
[0057] 如图4所示,其中,映射表401用于存储数据块的逻辑块地址与数据块的物理块地址的对应关系,Hash值表402中存储了Hash值与数据块的逻辑块地址的对应关系。
[0058] 将主机需要写入的数据按照4KB划分后,得到一个LBN=4的数据块,计算Hash值得到hx,假设hx=h2,则有两种情况:
[0059] I、Hash值表中有hx=h2的值,如图中带箭头的实线所示:
[0060] 411.在Hash值表中找到LBN=2的数据块,并得到对应的PBN=c;
[0061] 412.改写映射表中LBN=4最对应的PBN为c,即可完成此将写操作。
[0062] II、Hash值表中没有hx=h2的值,如图中带箭头的虚线所示:
[0063] 421.将数据块写入Flash上一个新的PBN=x的块后,改写映射表中LBN=4对应的PBN为x;
[0064] 422.将一个PBN=x,Hash=hx的对应项添加到Hash值表中,即可完成此次写操作。
[0065] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如:ROM/RAM、磁碟、光盘等。
[0066] 相应地,本发明实施例还提供一种减小固态硬盘写入放大的装置,如图5所示,是该装置的一种结构示意图。
[0067] 在该实施例中,所述装置包括:
[0068] 检查单元501,用于当有新数据块要写入固态硬盘时,检查所述固态硬盘中是否有与所述新数据块相同的已存在数据块;
[0069] 映射关系建立单元502,用于在所述检查单元501检查到所述固态硬盘中有与所述新数据块相同的已存在数据块时,建立所述新数据块的逻辑块地址与所述已存在数据块的物理块地址的映射关系;
[0070] 数据写入单元503,用于在所述检查单元501检查到所述固态硬盘中没有与所述新数据块相同的已存在数据块时,将所述新数据块写入所述固态硬盘。
[0071] 本发明实施例减小固态硬盘写入放大的装置,通过检查所述固态硬盘中是否有与所述新数据块相同的已存在数据块,可以将部分对固态硬盘中Flash的写操作转变为映射关系的修改,从而能够减小固态硬盘的写入放大,提高固态硬盘的寿命和性能。
[0072] 需要说明的是,所述检查单元501在检查所述固态硬盘中是否有与所述新数据块相同的已存在数据块时,可以通过直接读取Flash中的已有数据块的方式来实现,当然,也可以通过其他方式来实现,比如通过Hash值表的方式,下面对此进行详细说明。
[0073] 如图6所示,是本发明实施例减小固态硬盘写入放大的装置的一种具体实现结构示意图。
[0074] 与图5所示实施例不同的是,在该实施例中,所述装置不仅包括与图5所述实施例中一致的检查单元601、映射关系建立单元602和数据写入单元603,还进一步包括:
[0075] Hash值表建立单元604,用于建立所述固态硬盘中数据块的Hash值表,所述Hash值表包括:Hash值,当然,所述Hash值表也可以包括Hash值及与所述Hash值对应的逻辑块地址,具体如前面所述。
[0076] 所述检查单元601包括:
[0077] 计算子单元611,用于计算所述新数据块的Hash值;
[0078] 比较子单元612,用于根据所述新数据块的Hash值及所述Hash值表确定所述固态硬盘中是否有与所述新数据块相同的已存在数据块。
[0079] 在具体应用时,所述比较子单元612,可以检查所述Hash值表,如果所述Hash值表有与所述新数据块的Hash值相同的Hash值,则确定该Hash值对应的数据块与所述新数据块相同。当然,为了进一步降低检查所述Hash值表的时间开销,减小对固态硬盘操作性能的影响,所述比较子单元612,还可以只检查所述Hash值表中与所述新数据块逻辑块地址相同的原数据块的Hash值,如果有与所述新数据块的Hash值相同的Hash值,则确定该Hash值对应的原数据块与所述新数据块相同。
[0080] 在该实施例中,所述装置还可进一步包括:
[0081] Hash值表修改单元605,用于在所述数据写入单元603将所述新数据块写入所述固态硬盘后,将所述新数据块对应的Hash值添加或更新到所述Hash值表中。
[0082] 本发明实施例减小固态硬盘写入放大的装置,通过对Hash值的判断来确定所述固态硬盘中是否有与所述新数据块相同的已存在数据块,可以将部分对固态硬盘中Flash的写操作转变为映射关系的修改,从而能够减小固态硬盘的写入放大,提高固态硬盘的寿命和性能;而且判断过程简单易实现,带来的额外开销小。
[0083] 以上对本发明实施例进行了详细介绍,本文中应用了具体实施方式对本发明进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及设备;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。