抑制逻辑页碎片产生的方法及系统的制作方法

文档序号:6524193研发日期:2013年阅读:193来源:国知局
技术简介:
本专利针对固态硬盘垃圾回收过程中逻辑页碎片化导致读取效率下降的问题,提出通过分类合并数据块的解决思路。方法在垃圾回收时对物理页中的有效逻辑页进行标识析取,按连续性与数量分类为链表,优先合并大块数据并补足物理页容量,最大限度保持逻辑页连续性,减少碎片影响,提升SSD读性能。
关键词:逻辑页碎片抑制,数据块合并
抑制逻辑页碎片产生的方法及系统的制作方法
【专利摘要】本发明适用于存储【技术领域】,提供了一种抑制逻辑页碎片产生的方法,包括:对垃圾回收时读取的物理页中的有效逻辑页进行标识并析取,每个物理页的连续有效逻辑页对应一数据块;将具有连续的有效逻辑页,且所述有效逻辑页的数目相同的数据块分为一类,将所述数据块按有效逻辑页数目大小排列为一个链表;获取所述有效逻辑页的数目最大的第一数据块,记录所述第一数据块的有效逻辑页数目M及每个物理页包含逻辑页数目P,若M小于P,则获取有效逻辑页数目为N的第二数据块,其中N是满足(M+N)的值不大于P的最大整数;将所述第一数据块和第二数据块合并为第三数据块。借此,本发明可以在垃圾回收过程中,有效地抑制碎片的产生。
【专利说明】抑制逻辑页碎片产生的方法及系统
【技术领域】
[0001]本发明涉及存储【技术领域】,尤其涉及一种抑制逻辑页碎片产生的方法及系统。
【背景技术】
[0002]目前,固态硬盘(SSD)中Host端对数据的操作单位往往比NAND的物理页要小,现行很多技术在Host和NAND之间加入了逻辑页层,如图1所示(LP,Logic Page),从而减小操作数据的粒度,降低写放大,提高了写速度和SSD的使用寿命。但逻辑页引入的同时,因减小了连续数据的最大粒度,会造成连续数据(逻辑页)的分散,如图2。分散的逻辑页直接降低了连续读的速度,因为读连续的逻辑页时,原本只需要对一个物理页的读可能会被分散到多个物理页,影响了读的并发性和效率。
[0003]逻辑页碎片产生的一个主要原因是SSD的垃圾回收。垃圾回收是SSD中操作频率很高且必需的功能,它负责整合有效的数据,从而为新数据腾出足够的空间。逻辑页被整合到物理页时,势必造成原本连续的逻辑页被分割,从而分散到不同的物理页中,形成碎片,如图3所示。
[0004]综上可知,现有的抑制逻辑页碎片产生的方法,在实际使用上显然存在不便与缺陷,所以有必要加以改进。

【发明内容】

[0005]针对上述的缺陷,本发明的目的在于提供一种抑制逻辑页碎片产生的方法及系统,可有效抑制垃圾回收时碎片的产生。
[0006]为了实现上述目的,本发明提供一种抑制逻辑页碎片产生的方法,所述方法包括:
[0007]对垃圾回收时读取的物理页中的有效逻辑页进行标识并析取,每个物理页的连续有效逻辑页对应一数据块;
[0008]按照下述规则对所述数据块进行分类:具有连续的有效逻辑页,且所述有效逻辑页的数目相同的数据块分为一类,将所述数据块按有效逻辑页数目大小排列为一个链表;
[0009]获取所述有效逻辑页的数目最大的第一数据块,记录所述第一数据块的有效逻辑页数目M及每个物理页包含逻辑页数目P,若M小于P,则获取有效逻辑页数目为N的第二数据块,其中N是满足(M+N)的值不大于P的最大整数;
[0010]将所述第一数据块和第二数据块合并为第三数据块。
[0011]根据本发明的抑制逻辑页碎片产生的方法,所述方法还包括:
[0012]若所述第三数据块的有效逻辑页的数目(M+N)的值不为P,则搜索所述链表中其它有效逻辑页数目不为P的第四数据块,并从该第四数据块拆分出一个有效逻辑页数目为(P-M-N)的第五数据块;
[0013]将所述第三数据块与第五数据块合并。
[0014]根据本发明的抑制逻辑页碎片产生的方法,所述第四数据块是所述链表中最接近链表末端的数据块。
[0015]本发明还提供一种抑制逻辑页碎片产生的系统,包括:
[0016]析取标识模块,用于对垃圾回收时读取的物理页中的有效逻辑页进行标识并析取,每个物理页的连续有效逻辑页对应一数据块;
[0017]分类模块,用于按照下述规则对所述数据块进行分类:具有连续的有效逻辑页,且所述有效逻辑页的数目相同的数据块分为一类,将所述数据块按有效逻辑页数目大小排列为一个链表;
[0018]获取模块,用于获取所述有效逻辑页的数目最大的第一数据块,记录所述第一数据块的有效逻辑页数目M及每个物理页包含逻辑页数目P,若M小于P,则获取有效逻辑页数目为N的第二数据块,其中N是满足(M+N)的值不大于P的最大整数;
[0019]合并模块,用于将所述第一数据块和第二数据块合并为第三数据块。
[0020]根据本发明的抑制逻辑页碎片产生的系统,所述获取模块进一步用于所述第三数据块的有效逻辑页的数目(M+N)的值不为P时,搜索所述链表中其它有效逻辑页数目不为P的第四数据块,并从该第四数据块拆分出一个有效逻辑页数目为(P-M-N)的第五数据块;[0021 ] 所述合并模块进一步用于将所述第三数据块与第五数据块合并。
[0022]根据本发明的抑制逻辑页碎片产生的系统,所述第四数据块是所述链表中最接近链表末端的数据块。
[0023]本发明通过对垃圾回收时的物理页进行拆分组合,具体的将有效逻辑页的数目相同的数据块作为一类,并按大小顺序排列为链表。从链表头部开始扫描,数据块的有效逻辑页数目不满物理页的大小的,则获取其它满足有效逻辑页数目的数据块进行合并,优选的,如果合并后的数据块也不满足物理页的大小,则可进一步拆分合并数据块,借此在垃圾回收过程中,尽量确保原本连续的逻辑页被整合到同一个物理页中,有效地抑制了碎片的产生。在必需分割连续逻辑页时,优先选择小块的连续页,以将碎片的影响降到最低,提高固态硬盘的读性能。
【专利附图】

【附图说明】
[0024]图1是现有技术一实施例的逻辑页映射示意图;
[0025]图2是现有技术另一实施例的逻辑页读取示意图;
[0026]图3是现有技术另一实施例的垃圾回收示意图;
[0027]图4是本发明一实施例的抑制逻辑页碎片产生的系统结构示意图;
[0028]图5A是本发明一实施例的逻辑页的析取分类示意图;
[0029]图5B是本发明一实施例的逻辑页合并示意图;
[0030]图5C是本发明一实施例的逻辑页余项拆并示意图;
[0031]图6是本发明一实施例的抑制逻辑页碎片产生的方法流程图。
【具体实施方式】
[0032]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。[0033]在固态硬盘的应用中,垃圾回收负责将数据块(Block)中分散的有效逻辑页整合到新的数据块中,从而释放旧的数据块,为新数据提供足够的空间。垃圾回收一般分批次处理数据,每一批数据先是读取块中的有效逻辑页,整合为完成的物理页后再写入NAND,而本发明则主要工作于数据整合阶段。
[0034]参见图4,本发明提供了一种抑制逻辑页碎片产生的系统,该系统100主要应用于固态硬盘的垃圾回收,其包括析取标识模块10、分类模块20、获取模块30以及合并模块40,其中:
[0035]析取标识模块10,用于对垃圾回收时读取的物理页中的有效逻辑页进行标识并析取,每个物理页的连续有效逻辑页对应一数据块。
[0036]具体的,本发明在垃圾回收读出一批物理页后,需要对其中的有效数据进行析取。结合图5A的上半部分,示意图中假定每个物理页有4个逻辑页,并把有效页进行标识(数字)。如果同一个物理页中有连续的逻辑页,则用1、2、3、4表示其连续关系。若不便区分同一个物理页中的连续逻辑页,则可以将这个物理页里的所有逻辑页假定为连续的。
[0037]分类模块20,用于按照下述规则对所述数据块进行分类:具有连续的有效逻辑页,且所述有效逻辑页的数目相同的数据块分为一类,结合图5A所示的下半部分,将所述数据块按有效逻辑页数目大小排列为一个链表。
[0038]获取模块30,用于获取所述有效逻辑页的数目最大的第一数据块,记录所述第一数据块的有效逻辑页数目M及每个物理页包含逻辑页数目P,若M小于P,则获取有效逻辑页数目为N的第二数据块,其中N是满足(M+N)的值不大于P的最大整数。
[0039]结合图5B,本实施例中假定每个物理页有8个逻辑页,即P=8。将前述排列获取的链表从左到右平摊开来。图中一个长方形代表一个数据块,数字表示该数据块由哪些连续逻辑页组成。第一行是步骤是链表刚完成时的状态,带阴影的表示该数据块与物理页一样大。获取模块30从最大的连续数据向最小的扫描,整合得到的更大的数据块根据有效逻辑页长度(LPC, Logic Page Count)挂到对应链表尾部。
[0040]具体的,从LPC为7的链表开始向右扫描。取出当前链表中的一个数据块最为当前数据块,该链表的LPC为当前LPC。从本链表向右扫描,找到LPC与当前LPC的和不超过8的最大LPC的链表,摘下该链表的一个数据块与当前块合并更新当前LPC。继续扫描直至无法找到合适的数据块,并将当前数据块挂到LPC为当前LPC的链表的尾部,并继续从当前链表重复该算法,直至右侧没有数据块。
[0041]具体的,再结合图5B,开始时先取出LPC为M=7的第一数据块31,向右找到与其和不大于8的最大数N (对应LPC为I的第二数据块32),通过合并模块40将第一数据块31和第二数据块32合并(7+1)为第三数据块33后,后挂到LPC为8的链表上,结果显示在第二行。接下来取出6,并和2合并,结果显示在第3行,以此类推,直至全部扫描完。
[0042]需要说明的是,在本发明其它实施例中,若第一数据块31和第二数据块32的PLC为其它值,且合并后的第三数据块33的LPC不为8,如图5C所示,假定该实施例中合并后第三数据块33的LPC为7,则获取模块30进一步搜索所述链表中其它有效逻辑页数目不为S(P)的第四数据块34,并从该第四数据块拆分出一个有效逻辑页数目为(P-M-N)=I的第五数据块,使其与第三数据块33合并为新的数据块35。
[0043]具体执行时,从LPC次大(7)的链表向右扫描。取出当前数据块后,计算出它补足到8所需的LPC,比如7还需要I。从LPC最小的链表的末尾取出一个数据块,比如图中的5+2。从该数据块的末端上开始拆分(图中的2=1+1)以补足当前数据块,比如图中的8=7+1。将当前数据块挂到LPC为8的链表中,然后重复之前的步骤,直至无法拆分(结果中的5+1)。
[0044]更好的,该处理过程每次都从LPC最小的链表中(链表末端)进行拆分,前述处理使得LPC小的数据块含有相对较小的连续逻辑页,而且较小的连续逻辑页如果到下一批次中也是有助于整合的。拆分时选择从数据块末端上开始,是因为上述处理保证数据块的连续逻辑页是从大到小排列的,而当前数据块所需补足LPC是逐渐增大的,借此方便逻辑页的拆分与合并。
[0045]本发明在垃圾回收过程中,最大程度的确保原本连续的逻辑页被整合到同一个物理页中,有效地抑制了碎片的产生。在必需分割连续逻辑页时,优先选择小块的连续页,以将碎片的影响降到最低。另外,本发明的处理都是线性复杂度的,即时间消耗与垃圾回收的规模成正比。因此,本发明的资源消耗是有限的,不会随着垃圾回收的规模增大而急剧膨胀。借此,本发明以有限的资源消耗(线性)实现了近似最优化的整合效果,有效地提高了SSD的读性能。
[0046]参见图6,本发明提供了一种抑制逻辑页碎片产生的方法,其可以通过如图4所示的系统100实现,该方法包括:
[0047]步骤S601,对垃圾回收时读取的物理页中的有效逻辑页进行标识并析取,每个物理页的连续有效逻辑页对应一数据块。
[0048]步骤S602,按照下述规则对所述数据块进行分类:具有连续的有效逻辑页,且所述有效逻辑页的数目相同的数据块分为一类,结合图5A所示的下半部分,将所述数据块按有效逻辑页数目大小排列为一个链表。
[0049]步骤S603,获取所述有效逻辑页的数目最大的第一数据块31,记录所述第一数据块的有效逻辑页数目M及每个物理页包含逻辑页数目P,若M小于P,则获取有效逻辑页数目为N的第二数据块32,其中N是满足(M+N)的值不大于P的最大整数。
[0050]步骤S604,将所述第一数据块和第二数据块合并为第三数据块33。
[0051]更好的,如果在执行完步骤S604后,若所述第三数据块的有效逻辑页的数目(M+N)的值不为P,则搜索所述链表中其它有效逻辑页数目不为P的第四数据块,并从该第四数据块拆分出一个有效逻辑页数目为(P-M-N)的第五数据块,并将所述第三数据块与第五数据块合并。
[0052]参见图5A,具体的,本发明在垃圾回收读出一批物理页后,需要对其中的有效数据进行析取。结合图5A的上半部分,示意图中假定每个物理页有4个逻辑页,并把有效页进行标识(数字)。如果同一个物理页中有连续的逻辑页,则用1、2、3、4表示其连续关系。若不便区分同一个物理页中的连续逻辑页,则可以将这个物理页里的所有逻辑页假定为连续的。
[0053]需要说明的,本发明所述的各项数字仅为具体实施例的应用数字,不同应用中可选取不同的数据分析处理。
[0054]结合图5B,本实施例中假定每个物理页有8个逻辑页,即P=8。将前述排列获取的链表从左到右平摊开来。图中一个长方形代表一个数据块,数字表示该数据块由哪些连续逻辑页组成。第一行是步骤是链表刚完成时的状态,带阴影的表示该数据块与物理页一样大。获取模块30从最大的连续数据向最小的扫描,整合得到的更大的数据块根据有效逻辑页长度(LPC, Logic Page Count)挂到对应链表尾部。
[0055]具体的,从LPC为7的链表开始向右扫描。取出当前链表中的一个数据块最为当前数据块,该链表的LPC为当前LPC。从本链表向右扫描,找到LPC与当前LPC的和不超过8的最大LPC的链表,摘下该链表的一个数据块与当前块合并更新当前LPC。继续扫描直至无法找到合适的数据块,并将当前数据块挂到LPC为当前LPC的链表的尾部,并继续从当前链表重复该算法,直至右侧没有数据块。
[0056]具体的,再参见图5B,开始时先取出LPC为M=7的第一数据块31,向右找到与其和不大于8的最大数N (对应LPC为I的第二数据块32),通过合并模块40将第一数据块31和第二数据块32合并(7+1)为第三数据块33后,后挂到LPC为8的链表上,结果显示在第二行。接下来取出6,并和2合并,结果显示在第3行,以此类推,直至全部扫描完。
[0057]需要说明的是,在本发明其它实施例中,若第一数据块31和第二数据块32的PLC为其它值,且合并后的第三数据块33的LPC不为8,如图5C所示,假定该实施例中合并后第三数据块33的LPC为7,则获取模块30进一步搜索所述链表中其它有效逻辑页数目不为S(P)的第四数据块34,并从该第四数据块拆分出一个有效逻辑页数目为(P-M-N)=I的第五数据块,使其与第三数据块33合并为新的数据块35。
[0058]具体执行时,从LPC次大(7)的链表向右扫描。取出当前数据块后,计算出它补足到8所需的LPC,比如7还需要I。从LPC最小的链表的末尾取出一个数据块,比如图中的5+2。从该数据块的末端上开始拆分(图中的2=1+1)以补足当前数据块,比如图中的8=7+1。将当前数据块挂到LPC为8的链表中,然后重复之前的步骤,直至无法拆分(结果中的5+1)。
[0059]更好的,该处理过程每次都从LPC最小的链表中(链表末端)进行拆分,前述处理使得LPC小的数据块含有相对较小的连续逻辑页,而且较小的连续逻辑页如果到下一批次中也是有助于整合的。拆分时选择从数据块末端上开始,是因为上述处理保证数据块的连续逻辑页是从大到小排列的,而当前数据块所需补足LPC是逐渐增大的,借此方便逻辑页的拆分与合并。
[0060]综上所述,本发明通过对垃圾回收时的物理页进行拆分组合,具体的将有效逻辑页的数目相同的数据块作为一类,并按大小顺序排列为链表。从链表头部开始扫描,数据块的有效逻辑页数目不满物理页的大小的,则获取其它满足有效逻辑页数目的数据块进行合并,优选的,如果合并后的数据块也不满足物理页的大小,则可进一步拆分合并数据块,借此在垃圾回收过程中,尽量确保原本连续的逻辑页被整合到同一个物理页中,有效地抑制了碎片的产生。在必需分割连续逻辑页时,优先选择小块的连续页,以将碎片的影响降到最低,提高固态硬盘的读性能。
[0061]当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
【权利要求】
1.一种抑制逻辑页碎片产生的方法,其特征在于,所述方法包括:对垃圾回收时读取的物理页中的有效逻辑页进行标识并析取,每个物理页的连续有效逻辑页对应一数据块;按照下述规则对所述数据块进行分类:具有连续的有效逻辑页,且所述有效逻辑页的数目相同的数据块分为一类,将所述数据块按有效逻辑页数目大小排列为一个链表;获取所述有效逻辑页的数目最大的第一数据块,记录所述第一数据块的有效逻辑页数目M及每个物理页包含逻辑页数目P,若M小于P,则获取有效逻辑页数目为N的第二数据块,其中N是满足(M+N)的值不大于P的最大整数;将所述第一数据块和第二数据块合并为第三数据块。
2.根据权利要求1所述的抑制逻辑页碎片产生的方法,其特征在于,所述方法还包括:若所述第三数据块的有效逻辑页的数目(M+N)的值不为P,则搜索所述链表中其它有效逻辑页数目不为P的第四数据块,并从该第四数据块拆分出一个有效逻辑页数目为(P-M-N)的第五数据块;将所述第三数据块与第五数据块合并。
3.根据权利要求2所述的抑制逻辑页碎片产生的方法,其特征在于,所述第四数据块是所述链表中最接近链表末端的数据块。
4.一种抑制逻辑页碎片产生的系统,其特征在于,包括:析取标识模块,用于对垃圾回收时读取的物理页中的有效逻辑页进行标识并析取,每个物理页的连续有效逻辑页对应一数据块;分类模块,用于按照下述规则对所述数据块进行分类:具有连续的有效逻辑页,且所述有效逻辑页的数目相同的数据块分为一类,将所述数据块按有效逻辑页数目大小排列为一个链表;获取模块,用于获取所述有效逻辑页的数目最大的第一数据块,记录所述第一数据块的有效逻辑页数目M及每个物理页包含逻辑页数目P,若M小于P,则获取有效逻辑页数目为N的第二数据块,其中N是满足(M+N)的值不大于P的最大整数;合并模块,用于将所述第一数据块和第二数据块合并为第三数据块。
5.根据权利要求4所述的抑制逻辑页碎片产生的系统,其特征在于,所述获取模块进一步用于所述第三数据块的有效逻辑页的数目(M+N)的值不为P时,搜索所述链表中其它有效逻辑页数目不为P的第四数据块,并从该第四数据块拆分出一个有效逻辑页数目为(P-M-N)的第五数据块;所述合并模块进一步用于将所述第三数据块与第五数据块合并。
6.根据权利要求5所述的抑制逻辑页碎片产生的系统,其特征在于,所述第四数据块是所述链表中最接近链表末端的数据块。
【文档编号】G06F3/06GK103761193SQ201310694559
【公开日】2014年4月30日 申请日期:2013年12月17日 优先权日:2013年12月17日
【发明者】卞爱华, 王猛, 徐伟华 申请人:记忆科技(深圳)有限公司
网友询问留言 留言:0条
  • 还没有人留言评论。精彩留言会获得点赞!