一种非易失性闪存的擦写管理方法及系统的制作方法
【专利摘要】本发明公开了一种非易失性Flash的擦写管理方法及系统,涉及Flash擦写技术。本发明公开的方法,包括:按照闪存地址将闪存划分为若干个相同大小的存储区域;根据每个存储区域的写操作次数统计各存储区域的热度权值;当收到针对某一存储区域的写请求时,确定该存储区域在所有存储区域的热度权值排序中属于预设的热数据区域范围,则将该写请求的数据写入到热数据区域范围以外的任一存储区域中,否则,将该写请求的数据直接写入到该存储区域中。本发明还公开了一种非易失性闪存的擦写管理系统。本申请技术方案采用分层机制来对Flash擦写进行管理,保证了非易失性Flash介质损耗均衡,提高了垃圾回收的效率,延长了介质的使用寿命。
【专利说明】一种非易失性闪存的擦写管理方法及系统
【技术领域】
[0001] 本发明涉及Flash擦写技术,特别涉及一种非易失性Flash的擦写管理方法及系 统。
【背景技术】
[0002] 随着手机、PAD、个人电脑、数码相机等移动电子产品的广泛使用,电子产品的智能 化需求日益增加,如备份数据信息等功能,嵌入式存储介质是必要的。Flash存储器具有非 易失性、功耗低、体积小、容量大等特点,已逐步应用到了上述电子设备中。Flash内部分为 多个块,每个块是由多个页组成的,页是写入的最小单元,块是擦除的最小单元。Flash中每 个块上的擦次数是有限制的,如果频繁擦除集中块上的数据会使得该块提前损耗,从而影 响整个存储介质的使用。因此,对Flash擦写操作管理是至关重要的。
[0003] 目前有多种Flash擦写管理方式,如普通Flash擦写管理方式,通过固定逻辑扇区 与物理扇区的映射表,然后快速读写数据。但由于每次操作都会更改映射表,使得该区会提 前损坏,造成了损耗不均衡,影响了 Flash寿命。损耗均衡管理方式是依据统一逻辑地址映 射到不同的物理地址中,然后保证了整个Flash介质遍历擦写操作,达到损耗均衡的效果。 在损耗均衡管理中损耗均衡算法有很多,如动态损耗均衡算法,静态损耗均衡算法,随机性 损耗均衡算法,确定性损耗均衡算法等。这些算法的核心思想是将新数据写到擦写次数最 小的空闲区域。因此,能够识别出热数据与冷数据是至关重要的。对于热数据的研究,有很 多识别算法,如采用两个长度固定长度的队列,分别用于候选热数据队列和热数据队列,根 据写请求的操作,更新相应队列信息。又如使用多个hash函数进行映射,记录访问次数来 标识热数据。最直接的方法是将主机下发的写I/O操作作为热数据,而将系统后台进行的 I/O请求操作作为冷数据处理,这种方式实现简单,但效率较低、准确度一般要求不高。一个 理想的热数据识别方案应该具有反应时刻冷热数据变化、消耗内存量较小、计算复杂度较 低的特性。
【发明内容】
[0004] 本发明所要解决的技术问题是,提供一种非易失性闪存的擦写管理方法及系统, 以解决非易失性Flash介质损耗失衡问题。
[0005] 为了解决上述技术问题,本发明公开了一种非易失性闪存的擦写管理方法,包 括:
[0006] 按照闪存地址将闪存划分为若干个相同大小的存储区域;
[0007] 根据每个存储区域的写操作次数统计各存储区域的热度权值,其中,存储区域的 热度权值与该存储区域的写操作次数成正比;
[0008] 当收到针对某一存储区域的写请求时,确定该存储区域在所有存储区域的热度权 值排序中属于预设的热数据区域范围,则将该写请求的数据写入到热数据区域范围以外的 任一存储区域中,若确定该存储区域在所有存储区域的热度权值排序中不属于预设的热数 据区域范围,则将该写请求的数据直接写入到该存储区域中。
[0009] 可选地,上述方法中,按照闪存地址将闪存划分为若干个相同大小的存储区域 指:
[0010] 将闪存地址按照页大小的整数倍划分为若干个相同大小的存储区域。
[0011] 可选地,上述方法中,确定该存储区域在所有存储区域的热度权值排序中属于预 设的热数据区域范围,将该写请求的数据写入到热数据区域范围以外的任一存储区域中 指:
[0012] 确定该存储区域在所有存储区域的热度权值排序中属于预设的热数据区域范围 后,查找所有存储区域的热度权值排序中热度权值最低的存储区域,将所述写请求的数据 写入所查找到的存储区域中。
[0013] 可选地,上述方法中,将所述写请求的数据写入存储区域指:
[0014] 实时统计存储区域内部各块的擦除操作次数,将所述写请求的数据写入擦除操作 次数最少的块中。
[0015] 可选地,上述方法还包括:
[0016] 在一个处理周期中,所述存储区域内某一个或多个块的擦除操作次数达到设定擦 除次数,则在此周期中禁止该块的擦除操作,并在禁止操作前,将冷数据放置到禁止擦除操 作的块中。
[0017] 可选地,上述方法中,设定的擦除次数为存储区域内所有块的擦除操作次数的平 均值。
[0018] 本发明还公开了一种非易失性闪存的擦写管理系统,包括:
[0019] 划分模块,按照闪存地址将闪存划分为若干个相同大小的存储区域;
[0020] 第一统计模块,根据每个存储区域的写操作次数统计各存储区域的热度权值,其 中,存储区域的热度权值与该存储区域的写操作次数成正比;
[0021] 数据处理模块,当收到针对某一存储区域的写请求时,确定该存储区域在所有存 储区域的热度权值排序中属于预设的热数据区域范围,则将该写请求的数据写入到热数据 区域范围以外的任一存储区域中,若确定该存储区域在所有存储区域的热度权值排序中不 属于预设的热数据区域范围,则将该写请求的数据直接写入到该存储区域中。
[0022] 可选地,上述系统中,所述划分模块按照闪存地址将闪存划分为若干个相同大小 的存储区域指:
[0023] 将闪存地址按照页大小的整数倍划分为若干个相同大小的存储区域。
[0024] 可选地,上述系统中,所述数据处理模块确定该存储区域在所有存储区域的热度 权值排序中属于预设的热数据区域范围,将该写请求的数据写入到热数据区域范围以外的 任一存储区域中指:
[0025] 确定该存储区域在所有存储区域的热度权值排序中属于预设的热数据区域范围 后,查找所有存储区域的热度权值排序中热度权值最低的存储区域,将所述写请求的数据 写入所查找到的存储区域中。
[0026] 可选地,上述系统还包括第二统计模块,其中:
[0027] 所述第二统计模块,实时统计存储区域内部各块的擦除操作次数;
[0028] 所述数据处理模块,将所述写请求的数据写入擦除操作次数最少的块中。
[0029] 可选地,上述系统还包括:
[0030] 冷数据块处理模块,在一个处理周期中,将所述存储区域内达到设定擦除次数的 一个或多个块的设置为冷数据块,在此周期中禁止冷数据块的擦除操作,并在禁止操作前, 将冷数据放置到冷数据块中。
[0031] 可选地,上述系统中,设定的擦除次数为存储区域内所有块的擦除操作次数的平 均值
[0032] 本申请技术方案提出一种非易失性Flash擦写管理方案,该方案采用分层机制来 对Flash擦写进行管理,保证了非易失性Flash介质损耗均衡,提高了垃圾回收的效率,延 长了介质的使用寿命。
【专利附图】
【附图说明】
[0033] 图1为本实施例中分层机制的非易失性Flash擦写管理流程图;
[0034] 图2为本实施例中地址区域划分图;
[0035] 图3为本实施例中队列某一时刻的状态图;
[0036] 图4为本实施例中队列某一时刻的各区域热度权值图;
[0037] 图5为本实施例中写I/O申请后的队列状态图;
[0038] 图6为本实施例中写I/O申请后队列的各区域热度权值图。
【具体实施方式】
[0039] 为使本发明的目的、技术方案和优点更加清楚明白,下文将结合附图对本发明技 术方案作进一步详细说明。需要说明的是,在不冲突的情况下,本申请的实施例和实施例中 的特征可以任意相互组合。
[0040] 实施例1
[0041] 本申请发明人提出一种分层机制,其中,第一层是根据Flash存储介质的地址进 行分区,每个区域都有唯一的标号,并根据写操作对相应区域赋予热度权值。第二层,统计 每个区域的热度权值大小,将热区域的写操作与冷区域进行均衡,以满足损耗均衡的效果。 [0042] 基于上述思想,本实施例提供一种非易失性闪存的擦写管理方法,主要包括如下 操作:
[0043] 按照闪存中地址将闪存划分为若干个相同大小的存储区域;
[0044] 根据每个存储区域的写操作次数统计各存储区域的热度权值,其中,存储区域的 热度权值与该存储区域的写操作次数成正比;
[0045] 当收到针对某一存储区域的写请求时,确定该存储区域在所有存储区域的热度权 值排序中属于预设的热数据区域范围,则将该写请求的数据写入到热数据区域范围以外的 任一存储区域中,若确定该存储区域在所有存储区域的热度权值排序中不属于预设的热数 据区域范围,则将该写请求的数据直接写入到该存储区域中。
[0046] 其中,将Flash存储介质中地址区域进行分区时,可以按照页大小的整数倍进行 分区,即将整个统一的地址空间分成若干个区域,每一个区域管理内部的页操作。需要说明 的是,分区大小的选定,要求使其所需存储空间合理。通过合理机制对擦写操作区域进行赋 予权值,并进行区域权值统计。在赋予权值方法中应该区分出刚被访问的数据和以前被访 问的数据的差别,保证热度值的可行性。
[0047] 具体地,统计每个存储区域的热度权值时,可以按照上述的存储区域的分区个数 申请一个队列,该队列指示热度权值。其中,队列长度的设置要尽量保证每个存储区域都 能被赋予权值计算,如果漏掉的权值都按照冷数据区域处理。例如,收到一个写请求时,会 将申请写操作的存储区域对应的区域号放入到队列的队尾,并更新其队列权值。本实施例 中,队列权值的赋予是按照简单的方式计算,从队头到队尾依次递增1,也就是说,如果队列 大小为n,则从队头到队尾依次赋予的队列权值是1到η。当队列满时,队头元素是被访问 间隔最长久的过时区域,因而按照FIFO原则将队头的元素剔除。最后统计在队列中的每个 存储区域的队列权值和,这个队列权值和代表着该存储区域的热度值。而本实施例中,将热 度值最高的存储区域(即最近时间段中被访问的频繁程度很高的存储区域)称为热数据区 域,将热度值最低的存储区域(即最近时间段中被访问的频繁程度很低的存储区域)称为 冷数据区域。在其他应用场景中,则可以将所有存储区域的热度值排序中最高的一个或几 个存储区域都认为是热数据区域,同理也可以将所有存储区域的热度值排序中最低的一个 或几个存储区域都认为是冷数据区域,本申请对此设置不作任何限制。
[0048] 另外,在第二层中,需要对热区域数据与冷区域进行损耗均衡时,在选定的冷数据 区域中选择合适的页进行写入是重要的,不能始终选定某一页的区域进行擦写操作,需要 实时统计存储区域内部各块的擦除操作次数,将写请求的数据写入擦除操作次数最少的块 中。
[0049] 优选地,在存储区域内部区域进行均衡写入时,在所有块的标记都为禁止擦除标 记时,进行下一轮周期的擦除,以保证区域内部均衡的数据操作。即,在一个处理周期内,在 擦除次数冷数据区域内部选中某块中的某页后,如果该页的擦写次数达到设定擦除次数, 则在此周期中禁止该块的擦除操作。例如,设定的擦除次数为存储区域内所有块的擦除操 作次数的平均值时,若选中的某块中的某页超过了本区域中擦写次数平均值,则将该块标 记flag设置成-1,禁止擦除。在这一处理周期中,不会再选择此块。当所有块都被标记 成-1即禁止擦除标记后,则将所有块标记flag都清空为1。当块集合中的都被标记过后, 作为一个处理周期的结束,然后清理所有的flag标记并开始下一轮处理。另外,在每个周 期中,需要检查是否有冷数据块集合的存在,需要随机抽查块集合中需要进行冷热块的交 换。在区域内部可以将冷数据放置在到擦除次数达到设定的擦除次数的块(即冷数据块) 中,然后标识成禁止擦除标记。在当没有空闲块可利用的时候进行垃圾收集,将所有块进行 回收。这样,可以使得每个物理块都能够达到接近的擦除次数,适合于未来大容量闪存发展 的需求,提升Flash存储介质的寿命,达到损耗均衡效果。
[0050] 下面结合附图及具体应用说明上述方法的实现过程。
[0051] 例如,一个物理容量为2GB的非易失性存储介质,页大小为4KB,每个块中有64个 页,一共有8192个块。基于上述方法对此非易失性Flash的擦写管理流程如图1所示。
[0052] 步骤100,根据Flash存储介质中地址区域进行区域划分,在区域划分中按照8个 块为一组,并给每个存储区域用一个区域号表示;
[0053] 其中,地址区域划分如图2所示。区域号是通过地址区域中某个地址对8取整得 到的,这保证了每个区域号的唯一性。
[0054] 步骤200,对每个区域号按照队列权值计算热度权值,获取热度权值最高的热区域 号和热度权值最低的冷区域号;
[0055] 每个区域中的热度权值是根据队列得到的。此队列的大小设置为4K,当有写1/ 〇请求申请时,会将其对应的地址获取的区域号放入队尾中,当队列满员时,会根据FIFO策 略将对队元素的区域号淘汰出队列即将最早被访问到的区域号淘汰出局。在队列中自动赋 予从队头到队尾的递增权值,队头的权值为1,依次递增加1到队尾。举例说明,加入队列大 小设置为5,区域号是从1到100。则按照图3所示为队列某一时刻的状态,图4为队列某 一时刻的各区域热度权值图。当接收到写I/O申请后的队列状态如图5所示,图6为写1/ 〇申请后队列的各区域热度权值。从上述的过程中可以得出热区域的号码。
[0056] 步骤300,收到热区域的写操作请求时,进行均衡处理;
[0057] 如在第一层机制中得出写操作的区域号码为热区域号码,则需要将数据操作进行 均衡处理。若进行写操作的区域在第一层机制中得出不是热区域的号码,则可以按照内部 机制进行写入即可。
[0058] 在均衡处理中,选出冷区域号码,然后将热区域中的写操作在冷区域中进行。在区 域内部中要保证数据损耗均衡。该机制是按照本区域中的随机函数选取,当选取某块后,写 入相应页中,然后统计该块中的擦写次数是否超过了本区域中擦写次数平均值,如果超过, 则将该块标记flag设置成-1即为禁止擦除标记。在本区域中所有块没有被标记成禁止擦 除标记前,不会再选择此块。直到当本区域中所有块都被标记成-1,即当块集合中的都被打 上禁止擦除标记后,作为一个处理周期的结束,则将所有块标记flag都清空为1,进入下一 轮的禁止擦除标记。在每个处理周期中,打上禁止擦除标记时会将本区域中块擦除次数最 小的数据放置在该块中,然后打上禁止擦除标记,致使在处理周期结束前不会再被选中。该 方法使得区域内部可以将冷数据放置在到擦除次数达到上限的块中,然后标识成禁止擦除 标记,保证了块的最大利用率。在当没有空闲块可利用的时候进行垃圾收集,将所有块进行 回收即可。
[0059] 实施例2
[0060] 本实施例提供一种非易失性闪存的擦写管理系统,至少包括如下各部分。
[0061] 划分模块,按照闪存地址将闪存划分为若干个相同大小的存储区域;
[0062] 其中,将Flash存储介质中地址区域进行分区时,可以按照页大小的整数倍进行 分区,即将整个统一的地址空间分成若干个区域,每一个区域管理内部的页操作。需要说明 的是,分区大小的选定,要求使其所需存储空间合理。通过合理机制对擦写操作区域进行赋 予权值,并进行区域权值统计。在赋予权值方法中应该区分出刚被访问的数据和以前被访 问的数据的差别,保证热度值的可行性。
[0063] 第一统计模块,根据每个存储区域的写操作次数统计各存储区域的热度权值,其 中,存储区域的热度权值与该存储区域的写操作次数成正比;
[0064] 具体地,第一统计模块可以按照上述的存储区域的分区个数申请一个队列,所有 存储区域按照各自的区域号排队,通过此队列指示热度权值。例如,收到一个写请求时,会 将申请写操作的存储区域对应的区域号放入到队列的队尾,并更新其队列权值。本实施例 中,队列权值的赋予是按照简单的方式计算,从队头到队尾依次递增1,也就是说,如果队列 大小为n,则从队头到队尾依次赋予的队列权值是1到η。当队列满时,队头元素是被访问 间隔最长久的过时区域,因而按照FIFO原则将队头的元素剔除。最后统计在队列中的每个 存储区域的队列权值和,这个队列权值和代表着该存储区域的热度值。
[0065] 数据处理模块,当收到针对某一存储区域的写请求时,确定该存储区域在所有存 储区域的热度权值排序中属于预设的热数据区域范围,则将该写请求的数据写入到热数据 区域范围以外的任一存储区域中,若确定该存储区域在所有存储区域的热度权值排序中不 属于预设的热数据区域范围,则将该写请求的数据直接写入到该存储区域中。
[0066] 本实施例中,将热度值最高的存储区域(即最近时间段中被访问的频繁程度很高 的存储区域)称为热数据区域,将热度值最低的存储区域(即最近时间段中被访问的频繁 程度很低的存储区域)称为冷数据区域。在其他应用场景中,则可以将所有存储区域的热 度值排序中最高的一个或几个存储区域都认为是热数据区域,同理也可以将所有存储区域 的热度值排序中最低的一个或几个存储区域都认为是冷数据区域,本申请对此设置不作任 何限制。
[0067] 优选地,数据处理模块确定该存储区域在所有存储区域的热度权值排序中属于预 设的热数据区域范围进,可以将该写请求的数据写入到热数据区域范围以外的冷数据区域 中,即所有存储区域的热度权值排序中热度权值最低的存储区域中。
[0068] 具体地,在选定的冷数据区域中选择合适的页进行写入是重要的,不能始终选定 某一页的区域进行擦写操作,需要实时统计存储区域内部各块的擦除操作次数,将写请求 的数据写入擦除操作次数最少的块中。故在上述系统构架的基础上,增加第二统计模块,用 于实时统计存储区域内部各块的擦除操作次数;此时,数据处理模块,将写请求的数据写入 擦除操作次数最少的块中即可。
[0069] 另外,上述系统还可以包括冷数据块处理模块,此模块在一个处理周期中,将存储 区域内达到设定擦除次数的一个或多个块的设置为冷数据块,在此周期中禁止冷数据块的 擦除操作,并在禁止操作前,将冷数据放置到冷数据块中。其中,设定的擦除次数可以是存 储区域内所有块的擦除操作次数的平均值。
[0070] 需要说明的是,由于上述系统可实现上述实施例1的方法,因此其具体操作可参 见上述实施例1的相应内容,在此不再赘述。
[0071] 从上述实施例可以看出,本申请技术方案采用的是基于分层机制的非易失性 Flash擦写管理的方案,该方案在第一层中采用Flash分区管理,并依据数据访问的频度赋 予相应区域一定的权值,然后根据权值信息得到热数据区域。根据区域热度信息进行数据 均衡处理,提高了 Flash寿命使用及垃圾回收效率数据访问请求,保证了数据擦写操作的 均衡处理。
[0072] 本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令 相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘 等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应 地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的 形式实现。本申请不限制于任何特定形式的硬件和软件的结合。
[0073] 以上所述,仅为本发明的较佳实例而已,并非用于限定本发明的保护范围。凡在本 发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范 围之内。
【权利要求】
1. 一种非易失性闪存的擦写管理方法,其特征在于,包括: 按照闪存地址将闪存划分为若干个相同大小的存储区域; 根据每个存储区域的写操作次数统计各存储区域的热度权值,其中,存储区域的热度 权值与该存储区域的写操作次数成正比; 当收到针对某一存储区域的写请求时,确定该存储区域在所有存储区域的热度权值排 序中属于预设的热数据区域范围,则将该写请求的数据写入到热数据区域范围以外的任一 存储区域中,若确定该存储区域在所有存储区域的热度权值排序中不属于预设的热数据区 域范围,则将该写请求的数据直接写入到该存储区域中。
2. 如权利要求1所述的方法,其特征在于,按照闪存地址将闪存划分为若干个相同大 小的存储区域指: 将闪存地址按照页大小的整数倍划分为若干个相同大小的存储区域。
3. 如权利要求1或2所述的方法,其特征在于,确定该存储区域在所有存储区域的热度 权值排序中属于预设的热数据区域范围,将该写请求的数据写入到热数据区域范围以外的 任一存储区域中指: 确定该存储区域在所有存储区域的热度权值排序中属于预设的热数据区域范围后,查 找所有存储区域的热度权值排序中热度权值最低的存储区域,将所述写请求的数据写入所 查找到的存储区域中。
4. 如权利要求3所述的方法,其特征在于,将所述写请求的数据写入存储区域指: 实时统计存储区域内部各块的擦除操作次数,将所述写请求的数据写入擦除操作次数 最少的块中。
5. 如权利要求4所述的方法,其特征在于,该方法还包括: 在一个处理周期中,所述存储区域内某一个或多个块的擦除操作次数达到设定擦除次 数,则在此周期中禁止该块的擦除操作,并在禁止操作前,将冷数据放置到禁止擦除操作的 块中。
6. 如权利要求5所述的方法,其特征在于, 设定的擦除次数为存储区域内所有块的擦除操作次数的平均值。
7. -种非易失性闪存的擦写管理系统,其特征在于,包括: 划分模块,按照闪存地址将闪存划分为若干个相同大小的存储区域; 第一统计模块,根据每个存储区域的写操作次数统计各存储区域的热度权值,其中,存 储区域的热度权值与该存储区域的写操作次数成正比; 数据处理模块,当收到针对某一存储区域的写请求时,确定该存储区域在所有存储区 域的热度权值排序中属于预设的热数据区域范围,则将该写请求的数据写入到热数据区域 范围以外的任一存储区域中,若确定该存储区域在所有存储区域的热度权值排序中不属于 预设的热数据区域范围,则将该写请求的数据直接写入到该存储区域中。
8. 如权利要求7所述的系统,其特征在于,所述划分模块按照闪存地址将闪存划分为 若干个相同大小的存储区域指: 将闪存地址按照页大小的整数倍划分为若干个相同大小的存储区域。
9. 如权利要求7或8所述的系统,其特征在于,所述数据处理模块确定该存储区域在所 有存储区域的热度权值排序中属于预设的热数据区域范围,将该写请求的数据写入到热数 据区域范围以外的任一存储区域中指: 确定该存储区域在所有存储区域的热度权值排序中属于预设的热数据区域范围后,查 找所有存储区域的热度权值排序中热度权值最低的存储区域,将所述写请求的数据写入所 查找到的存储区域中。
10. 如权利要求9所述的系统,其特征在于,还包括第二统计模块,其中: 所述第二统计模块,实时统计存储区域内部各块的擦除操作次数; 所述数据处理模块,将所述写请求的数据写入擦除操作次数最少的块中。
11. 如权利要求10所述的系统,其特征在于,还包括: 冷数据块处理模块,在一个处理周期中,将所述存储区域内达到设定擦除次数的一个 或多个块的设置为冷数据块,在此周期中禁止冷数据块的擦除操作,并在禁止操作前,将冷 数据放置到冷数据块中。
12. 如权利要求11所述的系统,其特征在于, 设定的擦除次数为存储区域内所有块的擦除操作次数的平均值。
【文档编号】G06F12/02GK104156317SQ201410390138
【公开日】2014年11月19日 申请日期:2014年8月8日 优先权日:2014年8月8日
【发明者】郭美思, 吴楠 申请人:浪潮(北京)电子信息产业有限公司