一种用于闪存的冷热数据分离方法及系统与流程

文档序号:11950048阅读:224来源:国知局
一种用于闪存的冷热数据分离方法及系统与流程

本发明涉及冷热数据分离技术领域,特别是涉及一种用于闪存的冷热数据分离方法及系统。



背景技术:

随着互联网、云计算、物联网等技术的发展,闪存NAND作为新的一代存储器,得到了广泛地应用。闪存不能覆盖写,即相同逻辑地址的用户数据写入时,会写在不同的物理页中;若不区分冷热数据,由于热数据进行更新后会产生垃圾数据,故冷热数据混合的物理块会作为回收块进行垃圾回收,而垃圾回收时需要将冷数据搬移出回收块,即增大了垃圾回收时的负担,故需要对闪存内的数据进行冷热分离。

目前的冷热分离方法为首先对用户数据的逻辑地址做冷热判断算法;然后将冷数据写入冷物理块,热数据写入热物理块中。但是,该方法需要记录数据更新次数和间隔,当冷数据更新数量大于一定值后,需要进行冷数据和热数据的转换,以及热冷数据块链表的状态变化。即现有的方法CPU负担较大、冷热分离的软件复杂度较高。

因此,如何提供一种复杂程度低的用于闪存的冷热数据分离方法及系统是本领域技术人员目前需要解决的问题。



技术实现要素:

本发明的目的是提供一种用于闪存的冷热数据分离方法及系统,不需要冷热判断算法来区分冷热数据,软件复杂程度低,且CPU的负担小。

为解决上述技术问题,本发明提供了一种用于闪存的冷热数据分离方法,包括:

步骤s101:接收待写入的用户数据的逻辑地址;

步骤s102:从所述闪存内的空闲物理链表内选择未满的物理块,以供将所述用户数据写入所述物理块内的空闲页内;

步骤s103:若所述闪存的多个物理块内预先存有与所述用户数据的逻辑地址对应的物理页,将所述物理页标记为垃圾页;

步骤s104:当所述闪存进行垃圾回收时,根据预设算法选择被回收物理块,所述被回收物理块内未被标记为垃圾页的物理页内的数据为冷数据;

步骤s105:获取可用冷数据存储块;

步骤s106:读取所述冷数据并将其写入所述可用冷数据存储块的空闲页内,擦除所述被回收物理块。

优选地,所述步骤s105的过程具体为:

获取当前内部包含有空闲页的冷数据存储块,若获取成功,则将获取的所述冷数据存储块标记为所述可用冷数据存储块;若获取失败,从所述空闲物理链表内选择空闲块标记为所述可用冷数据存储块。

优选地,所述步骤s102过程具体为:

判断所述闪存的多个物理块内是否预先包含有所述用户数据的逻辑地址与物理地址的映射,如果有,破坏所述映射,并将所述映射中的物理地址对应的物理页标记为垃圾页。

优选地,所述步骤s102后还包括:

发送用户数据写请求至Flash控制器,建立所述用户数据的逻辑地址与所述物理块内的一个空闲页之间的映射,并将所述用户数据写入所述空闲页内;

接收所述Flash控制器返回的用户数据写入完成响应后,结束用户数据写入操作。

优选地,所述读取所述冷数据并将其写入可用冷数据存储块的过程具体为:

发送冷数据写请求至所述Flash控制器,建立所述冷数据的逻辑地址与所述可用冷数据存储块内的一个空闲页之间的映射,并将所述冷数据写入所述空闲页内;

接收所述Flash控制器返回的冷数据写入完成响应后,结束冷数据写入操作。

为解决上述技术问题,本发明还提供了一种用于闪存的冷热数据分离系统,包括:

接收模块,用于接收待写入的用户数据的逻辑地址;

物理块选择模块,用于从所述闪存内的空闲物理链表内选择未满的物理块,以供将所述用户数据写入所述物理块内的空闲页内;

垃圾页标记模块,用于若所述闪存的多个物理块内预先存有与所述用户数据的逻辑地址对应的物理页,将所述物理页标记为垃圾页;

回收物理块选择模块,用于当所述闪存进行垃圾回收时,根据预设算法选择被回收物理块,所述被回收物理块内未被标记为垃圾页的物理页内的数据为冷数据;

可用冷数据存储块获取模块,用于获取可用冷数据存储块;

回收处理模块,用于读取所述冷数据并将其写入所述可用冷数据存储块的空闲页内,擦除所述被回收物理块。

本发明提供了一种用于闪存的冷热数据分离方法及系统,本发明在用户数据写入的过程不进行冷热数据分离,当闪存的多个物理块内预先已经存有与用户数据的逻辑地址对应的物理页时,表明该物理块内存有用户数据的“旧版本”,将该“旧版本”所处的物理页标记为垃圾页,并将用户数据存储在另一个空闲页内,即完成了一次更新;当闪存进行垃圾回收时,会将被回收物理块内未被标记为垃圾页的物理页内的数据作为冷数据,写入可用冷数据存储块内。即本发明在垃圾回收时,并未对冷热数据进行区分,而是将除垃圾数据以外的数据均存放在冷数据存储块中,但是,由于热数据写入频率高,会使闪存进行多次更新,故即使热数据最初被存储于冷数据存储块中,热数据进行下一次更新后即会将冷数据存储块中存储的对应的数据所处的物理页标记为垃圾页,之后垃圾回收时将其清除,即随着热数据的不断更新,冷数据存储块内的热数据会越来越少。可见,随着用户数据的不断写入,本发明能够使冷热数据逐渐分离开来,使冷数据逐渐集中于冷数据存储块中,且本发明不需要冷热判断算法算法进行区分,软件复杂程度低,且CPU的负担小。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明提供的一种用于闪存的冷热数据分离方法的过程的流程图;

图2为本发明提供的一种用于闪存的冷热数据分离系统的结构示意图。

具体实施方式

本发明的核心是提供一种用于闪存的冷热数据分离方法及系统,不需要冷热判断算法来区分冷热数据,软件复杂程度低,且CPU的负担小。

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明提供了一种用于闪存的冷热数据分离方法,参见图1所示,图1为本发明提供的一种用于闪存的冷热数据分离方法的过程的流程图;该方法包括:

步骤s101:接收待写入的用户数据的逻辑地址;

步骤s102:从闪存内的空闲物理链表内选择未满的物理块,以供将用户数据写入物理块内的空闲页内;

其中,未满的物理块指的是内部包含有空闲页的物理块。

步骤s103:若闪存的多个物理块内预先存有与用户数据的逻辑地址对应的物理页,将物理页标记为垃圾页;

可以理解的是,步骤s103为热数据写入时的更新过程,更新前的旧数据会被标记为垃圾页,在之后的垃圾回收时被擦除掉。

步骤s104:当闪存进行垃圾回收时,根据预设算法选择被回收物理块,被回收物理块内未被标记为垃圾页的物理页内的数据为冷数据;

其中,这里预设算法具体为动态和静态均衡算法。当然,本发明对此不做限定。另外,这里的选择的被回收物理块内一定包含有垃圾页。例如可以选择包含垃圾页的数量超出预设数值的物理块作为被回收物理块,当然,本发明对此不作限定。

另外,闪存是在满足一定条件时启动垃圾回收,例如在当闪存内未满的物理块的数量低于预设门限时,启动垃圾回收。当然,本发明对此不作特别限定。

步骤s105:获取可用冷数据存储块;

步骤s106:读取冷数据并将其写入可用冷数据存储块的空闲页内,擦除被回收物理块。

可以理解的是,本发明在最开始虽然未区分冷热数据,而是将除垃圾页内的垃圾数据以外的数据全部做为冷数据放入冷数据存储块中,但是随着用户数据不断写入,热数据不断更新,冷数据存储块内原本存储的那些热数据会被更新为垃圾数据,进而在垃圾回收时被擦除,使得冷数据逐渐集中,冷热数据逐渐被分离。当冷数据存储块内仅包括冷数据后,则该冷数据存储块几乎不再会被进行垃圾回收,减少了垃圾回收的负担。

其中,步骤s105的过程具体为:

获取当前内部包含有空闲页的冷数据存储块,若获取成功,则将获取的冷数据存储块标记为可用冷数据存储块;若获取失败,从空闲物理链表内选择空闲块标记为可用冷数据存储块。

这里的空闲块指的是内部没有任何数据、完全空闲的物理块。

其中,步骤s102过程具体为:

判断闪存的多个物理块内是否预先包含有用户数据的逻辑地址与物理地址的映射,如果有,破坏映射,并将映射中的物理地址对应的物理页标记为垃圾页。

作为优选地,步骤s102后还包括:

发送用户数据写请求至Flash控制器,建立用户数据的逻辑地址与物理块内的一个空闲页之间的映射,并将用户数据写入空闲页内;

接收Flash控制器返回的用户数据写入完成响应后,结束用户数据写入操作。

需要注意的是,上述步骤可位于步骤s103之前,也可位于步骤s103之后,即标记垃圾页的操作与用户数据写入操作的顺序,本发明并不限定。

作为优选地,读取冷数据并将其写入可用冷数据存储块的过程具体为:

发送冷数据写请求至Flash控制器,建立冷数据的逻辑地址与可用冷数据存储块内的一个空闲页之间的映射,并将冷数据写入空闲页内;

接收Flash控制器返回的冷数据写入完成响应后,结束冷数据写入操作。

本发明提供了一种用于闪存的冷热数据分离方法,本发明在用户数据写入的过程不进行冷热数据分离,当闪存的多个物理块内预先已经存有与用户数据的逻辑地址对应的物理页时,表明该物理块内存有用户数据的“旧版本”,将该“旧版本”所处的物理页标记为垃圾页,并将用户数据存储在另一个空闲页内,即完成了一次更新;当闪存进行垃圾回收时,会将被回收物理块内未被标记为垃圾页的物理页内的数据作为冷数据,写入可用冷数据存储块内。即本发明在垃圾回收时,并未对冷热数据进行区分,而是将除垃圾数据以外的数据均存放在冷数据存储块中,但是,由于热数据写入频率高,会使闪存进行多次更新,故即使热数据最初被存储于冷数据存储块中,热数据进行下一次更新后即会将冷数据存储块中存储的对应的数据所处的物理页标记为垃圾页,之后垃圾回收时将其清除,即随着热数据的不断更新,冷数据存储块内的热数据会越来越少。可见,随着用户数据的不断写入,本发明能够使冷热数据逐渐分离开来,使冷数据逐渐集中于冷数据存储块中,且本发明不需要冷热判断算法算法进行区分,软件复杂程度低,且CPU的负担小。

本发明还提供了一种用于闪存的冷热数据分离系统,参见图2所示,图2为本发明提供的一种用于闪存的冷热数据分离系统的结构示意图。该系统包括:

接收模块11,用于接收待写入的用户数据的逻辑地址;

物理块选择模块12,用于从闪存内的空闲物理链表内选择未满的物理块,以供将用户数据写入物理块内的空闲页内;

垃圾页标记模块13,用于若闪存的多个物理块内预先存有与用户数据的逻辑地址对应的物理页,将物理页标记为垃圾页;

回收物理块选择模块14,用于当闪存进行垃圾回收时,根据预设算法选择被回收物理块,被回收物理块内未被标记为垃圾页的物理页内的数据为冷数据;

可用冷数据存储块获取模块15,用于获取可用冷数据存储块;

回收处理模块16,用于读取冷数据并将其写入可用冷数据存储块的空闲页内,擦除被回收物理块。

其中,以上模块均位于CPU内。

另外,本发明不限定闪存的具体类型。

本发明提供了一种用于闪存的冷热数据分离系统,本发明在用户数据写入的过程不进行冷热数据分离,当闪存的多个物理块内预先已经存有与用户数据的逻辑地址对应的物理页时,表明该物理块内存有用户数据的“旧版本”,将该“旧版本”所处的物理页标记为垃圾页,并将用户数据存储在另一个空闲页内,即完成了一次更新;当闪存进行垃圾回收时,会将被回收物理块内未被标记为垃圾页的物理页内的数据作为冷数据,写入可用冷数据存储块内。即本发明在垃圾回收时,并未对冷热数据进行区分,而是将除垃圾数据以外的数据均存放在冷数据存储块中,但是,由于热数据写入频率高,会使闪存进行多次更新,故即使热数据最初被存储于冷数据存储块中,热数据进行下一次更新后即会将冷数据存储块中存储的对应的数据所处的物理页标记为垃圾页,之后垃圾回收时将其清除,即随着热数据的不断更新,冷数据存储块内的热数据会越来越少。可见,随着用户数据的不断写入,本发明能够使冷热数据逐渐分离开来,使冷数据逐渐集中于冷数据存储块中,且本发明不需要冷热判断算法算法进行区分,软件复杂程度低,且CPU的负担小。

需要说明的是,在本说明书中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1