具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1是本发明实施例一提供的一种NAND的存储块回收方法的流程示意图,本实施例可适用于在NAND闪存中确定待回收存储块的情况,该方法可以由NAND的存储块回收装置来执行,该装置可以通过软件和/或硬件实现,一般可集成在NAND闪存的NAND管理系统中。
如图1所示,本发明实施例一提供的一种NAND的存储块回收方法,具体包括如下步骤:
S101、根据对每个存储块的操作,对每个存储块的至少两种性能参数进行统计。
本实施例中的存储块具体可指NAND闪存中组成存储单元阵列的存储单元块。一般地,可以对NAND闪存中的存储块进行擦除、读取以及编程(相当于写)等操作,其中,擦除操作以存储块为单位进行,读取和编程操作以存储块中的一个存储页为单位进行,需要说明的是,一个存储块可以由多个存储页构成。
在本实施例中,存储块所具有的性能参数可以包括擦除时间戳、读取次数、读取位翻转次数、擦写次数、重复读取次数以及数据写入量中的两个或多个,也可以不限于上述性能参数。
其中,擦除时间戳具体可用于标记对存储块进行擦除操作的时间,读取次数具体可用于标记对存储块进行读操作的次数,读取位翻转次数具体可用于标记对存储块读操作时进行位翻转的次数,擦写次数具体可用于标记对存储块进行擦除或编程操作的次数,重复读取次数具体可用于标记存储块因读取错误发生重复读取的次数,数据写入量具体可用于标记对存储块进行编程操作时写入存储块的数据量。
具体地,可以确定NAND闪存中每个存储块当前正在进行的操作,然后根据所进行的操作对相应的性能参数进行统计。示例性地,若一个存储块正在进行擦除操作,则可相应的对该存储块的擦除时间戳以及擦写次数等进行统计;同样,若一个存储块中存在进行读操作的存储页,则可相应的对该存储块的读取次数、读取位翻次数以及重复读取次数等进行统计。
S102、根据性能参数的统计值对每个存储块进行评分。
在本实施例中,在基于步骤S101对NAND闪存中的存储块进行至少两种性能参数的统计后,可以根据性能参数的统计值对相应的存储块进行评分。本实施例可以根据设定的评分规则结合性能参数的统计值对存储块进行评分,具体地,首先可以设定评分级别以及各级别对应的分值,然后可以根据评分规则分别确定存储块各性能参数相应统计值所属的评分级别及对应的评分值,最终可以根据各性能参数的评分值确定相应存储块的评分总值。需要说明的是,本实施例可通过设定各性能参数的参数门限值来设定对应于各性能参数的评分规则。
在本实施例中,不限定其设定的评分级别个数,同样不限定每个评分级别对应的分值。示例性地,可以为各性能参数的评分设定4个评分级别,且可设置第1级别对应的分值为1,第2级别对应的分值为2,第3级别对应的分值为3以及第4级别对应的分值为4;对于一个当前进行擦除操作的存储块而言,若通过设定评分规则确定其擦除时间戳的统计值属于第2级别,以及擦写次数的统计值属于第3级别,则可认为擦除时间戳的评分为2,而擦写次数的评分值为3,此时可确定该存储块的评分总值为5。
S103、根据评分结果确定待回收的存储块。
在本实施例中,基于步骤S102可以确定每个存储块的评分结果,由此可根据设定的确定条件结合评分结果确定待回收的存储块。具体地,可根据评分值高低来设定确定条件,由此对评分结果进行排序选择符合确定条件的存储块作为待回收的存储块。需要说明的是,本实施例可以在符合回收条件时对待回收的存储块根据对应的回收机制进行回收操作。
本发明实施例一提供的一种NAND的存储块回收方法,首先根据每个存储块的操作,对每个存储块的至少两种性能参数进行统计,然后根据性能参数的统计值对每个存储块进行评分;最终可以根据评分结果确定待回收的存储块。利用该方法,解决了现有方法不能有效选择可回收存储块的问题,提高了回收存储块选择的准确性,达到了适应各存储块多方复杂性的效果,进而提升了NAND的有效使用能力。
实施例二
图2是本发明实施例二提供的一种NAND的存储块回收方法的流程示意图。本发明实施例二以上述实施例为基础进行优化,在本实施例中,在根据对每个存储块的操作,对每个存储块的至少两种性能参数进行统计之前,进一步优化增加了:将最近执行的设定数量的存储块作为待统计的存储块;采用最近最少使用算法置换当前的待统计的存储块。
进一步地,还将“根据评分结果确定待回收的存储块”具体化为:在存储块可用空间达到下限值时,产生存储块回收的触发条件;根据各存储块的评分结果选择评分最高的一个存储块;识别选择的存储块的评分所属的性能参数;根据所属的性能参数确定对应的回收机制;根据确定的回收机制对选择的存储块进行空间回收操作。
如图2所示,本发明实施例二提供的一种NAND的存储块回收方法,具体包括如下操作:
需要说明的是,可以对NAND闪存中的所有存储块基于本实施例提供的方法确定是否为待回收的存储块,只是需要耗费较长的操作时间,然而实际应用中并不会对NAND闪存的所有存储块同时进行操作,且可能还会存在一些不常用到的存储块,因此,为了提高待回收的存储块的确定效率,本实施例可优选地基于下述步骤进行操作。
S201、将最近执行的设定数量的存储块作为待统计的存储块。
在本实施例中,首先可以在NAND闪存中确定设定数量的最近经常进行操作的存储块作为待统计的存储块,以在所述待统计的存储块中确定待回收的存储块,其中,所述设定数量的值可基于历史经验设定,本实施例可将设定数量优选在6~10的范围内,即可在NAND闪存中选取该范围内任意值个最近操作频繁的存储块作为待统计的存储块,可以理解的是,对存储块的最近操作可以是擦除、编程以及读取操作中的任一项。
S202、采用最近最少使用算法置换当前的待统计的存储块。
在本实施例中,基于步骤S201确定的待统计的存储块是可以动态替换的,本实施例可以采用最近最少使用算法将当前的待统计的存储块用新的存储块置换。
具体地,采用最近最少使用算法置换当前的待统计的存储块,可表述为:首先选取设定数量的存储块作为当前的待统计的存储块,在出现新的符合待统计要求的存储块时,在当前的待统计的存储块中确定最近最少使用的存储块,然后用新的符合待统计要求的存储块替换该最近最少使用的存储块。
S203、根据对上述每个存储块的操作,对每个存储块的至少两种性能参数进行统计。
在本实施例中,可以仅对确定的设定数量的待统计的存储块进行下述操作,本实施例为了便于表述,后续将待统计的存储块简称为存储块。示例性地,首先可以确定每个存储块当前正在进行的具体操作,并基于每个存储块的具体操作对该存储块当前对应的性能参数进行统计,以确定对应性能参数的统计值。
此外,本实施例将存储块的性能参数优选为:擦除时间戳、读取次数、读取位翻转次数、擦写次数、重复读取次数以及数据写入量,但不限定于上述性能参数,还可以根据NAND闪存的特性扩展其性能参数。
进一步地,根据对每个存储块的操作,对每个存储块的至少两种性能参数进行统计包括下述至少两项:在对存储块进行擦除时,对擦除时间戳进行累计,并采用当前的累计值作为擦除时间戳,标记当前擦除的存储块;每个存储块被读取时,为该存储块累计读计数;每个存储块发生读取位翻转时,为该存储块累计读时位翻转计数;每个存储块被擦写时,为该存储块累计擦写计数;每个存储块因读取错误发生重复读取时,为该存储块累计重复读计数;在向每个存储块进行数据写入时,更新该存储块中的有效数据计数。
在本实施例中,可将性能参数中擦除时间戳的值初始化为0,之后只要对一个存储块(无论是否为同一存储块)进行一次擦除操作,就将擦除时间戳的值累计加1,由此可知,当前进行擦除操作的存储块,其擦除时间戳的统计值为累加后当前的累计值;同样,也可将其余性能参数的值初始化为0,并基于上述操作对每个存储块的性能参数进行统计。
S204、根据性能参数的统计值对上述每个存储块进行评分。
在本实施例中,基于上述步骤S203可为每个存储块确定出至少两个性能参数的统计值,由此,可以根据每个存储块至少两个性能参数的统计值确定所述至少两个性能参数分别对应的评分值,进而可以将至少两个性能参数所对应评分值的总和确定为相应存储块的评分结果。
进一步地,根据性能参数的统计值对每个存储块进行评分包括针对每个存储块执行下述至少一项:
如果当前擦除时间戳(Erase Timestamp,简称ET)与擦除时间戳平均值(ET_MeanValue)之差,大于或等于第一擦除时间戳门限值(ET_TH1),则评分为1,如果当前擦除时间戳与擦除时间戳最小值(ET_MinValue)之差,大于或等于第二擦除时间戳门限值(ET_TH2),则评分为2,如果当前擦除时间戳与擦除时间戳平均值之差小于第一擦除时间戳门限值,且当前擦除时间戳与擦除时间戳最小值之差小于所述第二擦除时间戳门限值,则评分为0。
如果存储块的当前读计数(Read Count,简称RC)小于第一读计数门限值(RC_TH1),则评分为0,如果当前读计数大于或等于第一读计数门限值且小于第二读计数门限值(RC_TH2),则评分为1,如果当前读计数大于或等于第二读计数门限值,则评分为2。
如果存储块的当前位翻转计数(Bitflips,简称BF)小于第一位翻转计数门限值(BF_TH1),则评分为0,如果当前位翻转计数大于或等于第一位翻转计数门限值且小于第二位翻转计数门限值(BF_TH2),则评分为1,如果当前位翻转计数大于或等于第二位翻转计数门限值,则评分为2。
如果存储块的当前擦写计数(PE Cycles,简称PE)与擦写计数最小值(PE_MinValue)之差小于第一擦写计数门限值(PE_TH1),则评分为0,如果当前擦写计数与擦写计数最小值之差大于或等于第一擦写计数门限值且小于第二擦写计数门限值(PE_TH2),则评分为1,如果当前擦写计数与擦写计数最小值之差大于或等于第二擦写计数门限值,则评分为2。
如果存储块的当前重复读计数(Read Retry Times,简称RRT)为0,则评分为0,如果当前重复读计数大于0且小于设定最大重复读次数(TotalTimes)的一半,则评分为1,如果当前重复读计数大于或等于设定最大重复读次数的一半且小于设定最大重复读次数,则评分为2。
如果存储块的当前有效数据计数(Valid Data Count,简称VDC)大于或等于第二有效数据计数门限值(VDC_TH2),则评分为0,如果当前有效数据计数大于或等于第一有效数据计数门限值(VDC_TH1),且小于第二有效数据计数门限值,则评分为1,如果当前有效数据计数小于第一有效数据计数门限值,则评分为2。
在本实施例中,优选的设定各性能参数的评分级别为3,并优选的设定第1级别的分值为0,第2级别的分值为1,第3级别的分值为2。各性能参数与其对应评分的设定具体如下表所示:
在本实施例中,可以将所述擦除时间戳平均值确定为所有擦除时间戳之和与当前擦除时间戳的商,其中,当前擦除时间戳具体可表示对设定数量的待统计的存储块进行擦除操作的累计次数。所述擦除时间戳最小值具体可理解为设定数量的待统计的存储块中所具有的最小擦除时间戳。此外,所述擦写计数最小值具体可理解为设定数量的待统计的存储块中所对应的最小擦写次数。
在本实施例中,所述第一擦除时间戳门限值、第二擦除时间戳门限值、第一读计数门限值、第二读计数门限值、第一位翻转计数门限值、第二位翻转计数门限值、第一擦写计数门限值、第二擦写计数门限值、最大重复读次数、第一有效数据计数门限值以及第二有效数据计数门限值均可基于历史经验值设定。
在本实施例中,通过存储块各性能参数的统计值对存储块进行评分的目的在于:1)基于擦除时间戳对存储块评分,可以选择出NAND闪存中最不经常使用的块数据(冷数据),由此可以确定出含有冷数据的待回收存储块;2)基于存储块的读取次数进行评分,可以选择出NAND闪存中最易出现读干扰(Read Disturb)的待回收存储块;3)基于存储块的读取位翻转次数进行评分,可以选择出NAND闪存中容易出现读干扰和写干扰的待回收存储块;4)基于存储块的擦写次数进行评分,可以选择出NAND闪存中负载均衡(Wear-Leveing)的待回收存储块;5)基于存储块的重复读取次数进行评分,可以选择出NAND闪存中最不稳定的待回收存储块;6)基于存储块中的数据写入量进行评分,可以选择出数据搬离数目最小的待回收数据块。
S205、在存储块可用空间达到下限值时,产生存储块回收的触发条件。
在本实施例中,可以在产生存储块回收的触发条件后,启动待回收存储块的确定操作。
S206、根据上述各存储块的评分结果选择评分最高的一个存储块。
本实施例综合考虑各性能参数在NAND闪存中的作用,因此本实施将每个存储块所对应各性能参数评分值的总和确定为相应存储块最终的评分结果。
需要说明的是,如果待统计的存储块中出现至少两个存储块的评分结果并列最高,则可以任选其中一个作为待回收的存储块,一般地,可以优选根据存储块的编号值顺序选取其中一个。
S207、识别选择的存储块的评分所属的性能参数。
在本实施例中,确定待回收的存储块后,可以查看该存储块评分结果中各评分值所属的性能参数。
S208、根据所属的性能参数确定对应的回收机制。
本实施例根据存储块的性能参数优选地设定了三个回收机制,分别为正常回收机制、擦除回收机制以及负载均衡回收机制。具体地,可在性能参数为擦除时间戳、读取次数以及数据写入量时,确定待回收的存储块对应的回收机制为正常回收机制;还可在性能参数为读取位翻转次数以及重复读取次数时,确定待回收的存储块对应的回收机制为擦除回收机制;也可在性能参数为擦写次数时,确定待回收的存储块对应的回收机制为负载均衡回收机制。
S209、根据确定的回收机制对选择的存储块进行空间回收操作。
在本实施例中,需要说明的是,如果所确定的待回收的存储块评分值所属的性能参数分布于上述至少两个回收机制中,则首先可确定分布于上述至少两个回收机制中各性能参数的评分,由此确定评分最高的性能参数所属的回收机制,将其作为待回收存储块当前的回收机制。示例性地,假设待回收的存储块评分值所属的性能参数为擦除时间戳、读取次数、读取位翻转次数以及重复读取次数,且分别对应的评分为1、1、2和1,则可确定读取位翻转次数的评分最高,属于擦除回收机制,由此可采用擦除回收机制对待回收的存储块进行空间回收操作。
此外,当分布于上述至少两个回收机制中的各性能参数对应的评分值相同时,可以基于上述三个回收机制的优先级确定优先级最高的回收机制作为待回收存储块当前的回收机制。一般地,可认为所述正常回收机制大于擦除回收机制,且所述擦除回收机制的优先级又大于负载均衡回收机制。
本发明实施例二提供的一种NAND的存储块回收方法,具体增加了待统计存储块的确定操作,由此可以更有针对性的对部分存储块进行统计和评分,有效提高待回收存储块的确定效率;同时,还具体化了待回收存储块的确定操作,由此可以根据评分所属的性能参数确定对应的回收机制,从而更有效的对存储块进行回收,达到了适应各存储块多方复杂性的效果。
实施例三
图3是本发明实施例三提供的一种NAND的存储块回收装置的结构框图。该装置可适用于在NAND闪存中确定待回收的存储块的情况,并可以通过软件和/或硬件实现,一般可集成在NAND闪存的NAND管理系统中。如图3所示,该装置包括:性能参数统计模块31、评分模块32以及回收确定模块33。
其中,性能参数统计模块31,用于根据对每个存储块的操作,对每个存储块的至少两种性能参数进行统计;
评分模块32,用于根据性能参数的统计值对每个存储块进行评分;
回收确定模块33,用于根据评分结果确定待回收的存储块。
在本实施例中,该装置首先通过性能参数统计模块31根据对每个存储块的操作,对每个存储块的至少两种性能参数进行统计;然后通过评分模块32根据性能参数的统计值对每个存储块进行评分;最后通过回收确定模块33根据评分结果确定待回收的存储块。
本发明实施例三提供的一种NAND的存储块回收装置,解决了现有方法不能有效选择可回收存储块的问题,提高了回收存储块选择的准确性,达到了适应各存储块多方复杂性的效果,进而提升了NAND的有效使用能力。
进一步地,性能参数统计模块31,具体可用于执行下述至少两项:
在对存储块进行擦除时,对擦除时间戳进行累计,并采用当前的累计值作为擦除时间戳,标记当前擦除的存储块;每个存储块被读取时,为该存储块累计读计数;每个存储块发生读取位翻转时,为该存储块累计读时位翻转计数;每个存储块被擦写时,为该存储块累计擦写计数;每个存储块被重复读取时,为该存储块累计重复读计数;在向每个存储块进行数据写入时,更新该存储块中的有效数据计数。
进一步地,评分模块32,针对每个存储块具体用于执行下述至少一项:
如果当前擦除时间戳与擦除时间戳平均值之差,大于或等于第一擦除时间戳门限值,则评分为1,如果当前擦除时间戳与擦除时间戳最小值之差,大于或等于第二擦除时间戳门限值,则评分为2,如果当前擦除时间戳与擦除时间戳平均值之差,小于第一擦除时间戳门限值且小于所述第二擦除时间戳门限值,则评分为0;如果存储块的当前读计数小于第一读计数门限值,则评分为0,如果当前读计数大于或等于第一读计数门限值且小于第二读计数门限值,则评分为1,如果当前读计数大于或等于第二读计数门限值,则评分为2;如果存储块的当前位翻转计数小于第一位翻转计数门限值,则评分为0,如果当前位翻转计数大于或等于第一位翻转计数门限值且小于第二位翻转计数门限值,则评分为1,如果当前位翻转计数大于或等于第二位翻转计数门限值,则评分为2;如果存储块的当前擦写计数与擦写计数最小值之差小于第一擦写计数门限值,则评分为0,如果当前擦写计数与擦写计数最小值之差大于或等于第一擦写计数门限值且小于第二擦写计数门限值,则评分为1,如果当前擦写计数与擦写计数最小值之差大于或等于第二擦写计数门限值,则评分为2;如果存储块的当前重复读计数为0,则评分为0,如果当前重复读计数大于0且小于设定最大重复读次数的一半,则评分为1,如果当前重复读计数大于或等于设定最大重复读次数的一半且小于设定最大重复读次数,则评分为2;如果存储块的当前有效数据计数大于或等于第二有效数据计数门限值,则评分为0,如果当前有效数据计数大于或等于第一有效数据计数门限值,且小于第二有效数据计数门限值,则评分为1,如果当前有效数据计数小于第一有效数据计数门限值,则评分为2。
在上述实施例的基础上,该装置还优化增加了:待统计确定模块34,用于:
在根据对每个存储块的操作,对每个存储块的至少两种性能参数进行统计之前,将最近执行的设定数量的存储块作为待统计的存储块;采用最近最少使用算法置换当前的待统计的存储块。
进一步地,回收确定模块33,具体可用于:
在存储块可用空间达到下限值时,产生存储块回收的触发条件;根据各存储块的评分结果选择评分最高的一个存储块;识别选择的存储块的评分所属的性能参数;根据所属的性能参数确定对应的回收机制;根据确定的回收机制对选择的存储块进行空间回收操作。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。