一种磨损均衡方法及装置的制作方法

文档序号:6437298阅读:162来源:国知局
专利名称:一种磨损均衡方法及装置的制作方法
技术领域
本发明涉及存储技术领域,特别涉及一种磨损均衡方法及装置。
背景技术
目前,在计算机、通讯和消费电子产品中非易失性存储器得到了广泛的应用;例如,U盘、MP3、数码相机、移动通信终端、固态硬盘等产品中都使用非易失性存储器作为存储介质。随着这些产品对存储容量的要求不断提高,非易失性存储器的工艺尺寸不断缩小,导致非易失性存储器的可靠性面临着越来越严峻的挑战,尤其是非易失性存储器擦除操作的最小单位物理块的擦除次数有限,这对非易失性存储器的使用寿命会造成严重影响。对于物理块擦除次数有限的问题,现有技术的做法是对物理块进行磨损均衡,通过对物理块的擦除进行控制,尽量平均存储器中所有物理块的擦除次数,避免某些物理块擦除次数过高, 比其它物理块提前到达擦除次数上限而失效,造成存储器在尚有很多物理块未达寿命的情况下整体失效。磨损均衡包括针对数据写入过程中通过控制写入的物理块,动态均衡所有物理块擦除次数的动态磨损均衡,以及通过调整物理块上存储的冷、热数据(经常被擦写的数据为热数据,不经常被擦写数据为冷数据)的分布,静态地均衡所有物理块擦除次数的静态磨损均衡两大类。针对这两大类磨损均衡,现有技术已经提出了很多算法,但是这些算法一直没有很好地解决磨损均衡效果和降低因为磨损均衡算法本身带来的额外磨损之间的矛盾,而且现有磨损均衡算法的实现是基于保存每一个物理块的磨损信息,随着存储器容量增加,存储器中需要进行磨损均衡的物理块的数量大增,在执行磨损均衡算法时,搜索物理块磨损信息的速度也变得越来越慢。下面以一种目前使用广泛的代表性磨损均衡算法“双池算法”为例,对现有技术加以详细说明。如图1所示,该算法是一种结合了动态磨损均衡和静态磨损均衡的综合算法,该算法对物理块设置冷池和热池属性,并定义EC为物理块的总擦除次数;EEC为物理块的冷热池属性变化后重新开始累计的擦除次数(以下称为有效擦除次数);PT为物理块的冷热池属性标记,该标记中,CP表示冷池,HP表示热池,每一个物理块需要记录的磨损信息包括 EC、EEC 禾口 PT。在该算法中,定义QeHcp , Qcpc , Glf分别表示冷池中擦除次数队列,热池
中擦除次数的队列,冷池中有效擦除次数的队列,热池中有效擦除次数的队列。定义HlQ) 分别为返回队列Q的最大值和最小值(具体物理块)的函数;EC(B)为返回物理块 B的总擦除次数的函数;EEC (B)为返回物理块B的有效擦除次数的函数。具体算法执行过程如图1所示,包括如下步骤步骤101,获取磨损信息;在执行双池算法前,需要先获取所有物理块的磨损信息,之后才能对物理块进行管理,这一获取磨损信息的步骤一般在存储器上电初始化的过程中完成,分两种情况,如果存储器非第一次使用,则磨损信息会在存储器上一次正常卸载时被记录在存储器中(如存储器中专门划分出来,用户不可见的用于保存管理信息的备份区),在存储器上电初始化时,只需要读取存储器备份区的数据即可得到磨损信息;如果存储器是第一次使用,则备份区是没有数据的,此时需要构建磨损信息,即将EC、EEC置0,并对物理块标记冷热池属性,将物理块划分到冷池或热池;将物理块划分到冷池和热池的具体方法可以是任意的,例如随机划分。步骤102,判断是否有写请求,如果是,进入步骤103,否则进入步骤117 ;步骤103,判断分配给写请求的写入块是否已经写满,若是,则进入步骤104,否则进入步骤105 ;步骤104,从预先设置的空白块队列中,按照新来新分配(FIFO)的方式(按照进入空白块队列的顺序,首先进入队列的空白块将首先分配出去),为写请求分配空白块,进入步骤105 ;步骤105,响应写请求,将数据写入分配的写入块;步骤106,判断芸))与之差是否超过设定的阈值TH,若是, 则进入步骤107,否则进入步骤111 ;步骤107,强制回收/Γ(ρ芸)物理块,即将该物理块上保存的有效数据复制到其它物理块,并擦除矿(0芸)上保存的数据。步骤108,将/τ物理块上的数据复制到孖+(ρ芸)物理块;步骤109,擦除物理块上的数据,使之变为空白块;步骤110,交换和/Γ (ρ芸)物理块的冷热池属性;因冷热池属性变化, /τ 和/τ (ρ芸)物理块各自的EEC将清零,重新开始累计。步骤ill,判断芸))和芸))之差是否超过2倍阈值τη;若是,进入步骤112,否则进入步骤113;步骤112,将芸)物理块的PT从热池调整为冷池;步骤113,判断EEci/rfef》和之差是否超过阈值TH ;若是,则进入步骤114,否则进入步骤115; 步骤114,将孖+迈广物理块的PT从冷池调整为热池;步骤115,判断存储器的可用空间是否小于预设的阈值,若是,则进入步骤116,否则返回步骤102 ;步骤116,垃圾回收,返回步骤102 ;步骤117,判断存储器是否卸载,若是,进入步骤118,否则返回步骤102 ;步骤118,保存磨损信息,结束流程。上述步骤中,步骤102 103、105是正常的数据写入过程,步骤104则是该算法的动态均衡部分,即通过空白块队列,采用FIFO方式控制空白块的分配,达到动态磨损均衡的效果。步骤106 114是该算法的静态均衡部分,通过移动/Γ(ρ芸)与上保存的冷热数据,以及交换好+(0芸)与H—的冷热池属性,使得擦除次数多的物理块因保存冷数据并进入冷池而减缓磨损,擦除次数少的物理块因保存热数据并进入热池而加快磨损, 从而达到磨损均衡的目的。
步骤115之后是存储器的垃圾回收和卸载过程;其中垃圾回收包含数据转移和擦除过程。所谓数据转移是指擦除之前必须将标记为有效的数据拷贝到其他块上;所谓的擦除过程是指将已经写有数据、但是所有数据已被标记为无效的物理块,即垃圾块进行擦除得到空白块的过程,现有的垃圾回收过程中,一般是随机选择垃圾块,双池算法的动态均衡部分并未对垃圾回收的过程进行改进。另外,卸载过程中存储器会将双池算法所需的磨损信息(如EC、EEC、PT和空白块队列)存储下来,以备下次启动存储器时使用。很明显,为了静态地均衡所有物理块擦除次数,双池算法需要挪动/τ(ρ芸)和 H—两个物理块的有效数据,并且擦除芸)和H—两个物理块。这会产生较大的系统开销,并额外增加物理块的擦除次数,即额外的磨损,这对于磨损均衡的目的(增加存储器寿命)来说,是一个反效果。另外,由于双池算法需要计算五〔(//+ !^和^^烘―(0$)),这需要遍历整个存储器的所有物理块,然后才能进一步地往下运行。然而随着存储容量的不断提高,物理块的数量也在不断地增加,搜索物理块的速度也会变得越来越慢。

发明内容
本发明实施例提供一种磨损均衡方法及装置,能够降低磨损均衡带来的额外磨损。为达到上述目的,本发明的技术方案具体是这样实现的一种磨损均衡方法,该方法包括根据每一个物理块的擦除次数,确定每一个物理块的池掩码;其中,物理块的擦除次数等于RECC的值时,确定物理块的池掩码为冷池掩码CPM ; 擦除次数大于等于RECC+TH的值时确定物理块的池掩码为热池掩码HPM ;擦除次数为其他值时确定物理块的池掩码为普通池掩码NPM ;所述RECC是参考擦除次数计数器,其值等于所有物理块中擦除次数最小的物理块的擦除次数;所述TH为预设的阈值,其取值为大于1的正整数,且随物理块的磨损情况而变化;当有物理块的池掩码从NPM变为HPM时,将任一个池掩码为CPM的物理块中的数据复制到所述池掩码为HPM的物理块上,并将所述池掩码为CPM的物理块作为垃圾块进行垃圾回收。较佳地,所述TH随物理块的磨损情况而变化包括所述TH随RECC的增加而减小。较佳地,所述TH随RECC的增加而减小,包括每当所述RECC改变时,将所述TH的值减去预设的变化量,直到TH达到预设的最小值。较佳地,所述TH随物理块的磨损情况而变化包括所述TH随所有物理块的平均擦除次数增加而减小。较佳地,所述TH随所有物理块的平均擦除次数增加而减小包括每当所有物理块的平均擦除次数增加预设的增加值,将所述TH减去预设的变化量,直到TH达到预设的最小值。
较佳地,该方法进一步包括建立用于管理空白块的空白块链表EBL,所述EBL中的空白块按照其擦除次数升序排列;当需要为写请求分配空白块时,将所述EBL中的首个空白块作为写入块分配给所述写请求。较佳地,所述EBL不允许池掩码为HPM的空白块进入。较佳地,该方法进一步包括建立用于管理垃圾块的垃圾块链表GBL,所述GBL中的垃圾块按照擦除次数值升序排列。较佳地,所述GBL不允许池掩码为HPM的垃圾块进入。较佳地,当所述EBL中的空白块数量小于预设的阈值时,进行如下所述的垃圾回收过程如果GBL非空,则擦除所述GBL中首个垃圾块的数据,使之变为空白块,并将该空白块插入EBL中;如果GBL已空,则把所有掩码为CPM和NPM的物理块中垃圾数据量最多而且擦除次数最少的物理块的有效数据写入到当前分配的写入块上,并将该垃圾数据最多且擦除次数最少的物理块插入GBL ;擦除所述GBL中首个垃圾块的数据,使之变为空白块,并将该空白块插入EBL中。较佳地,所述垃圾回收包括将池掩码为CPM和NPM的垃圾块插入GBL中。较佳地,若存储器为第一次使用,在执行所述根据每一个物理块的擦除次数,确定每一个物理块的池掩码的步骤之前,置所有物理块的当前的擦除次数为0 ;所有物理块当前的池掩码为CPM。较佳地,若存储器不是第一次使用,且上一次使用后正常卸载时,在执行所述根据每一个物理块的擦除次数,确定每一个物理块的池掩码的步骤之前,从存储器的备份区读取得到所有物理块当前的擦除次数、池掩码,以及EBL、GBL0较佳地,若存储器不是第一次使用,且上一次使用后没有正常卸载时,在执行所述根据每一个物理块的擦除次数,确定每一个物理块的池掩码的步骤之前,从存储器的备份区载入最近一次正常卸载时备份的所有物理块的擦除次数、池掩码,以及mL、GBL ;从EBL中首个物理块开始,逐个检测EBL中物理块的存储状况,如果物理块已非空白块,则从EBL中删除这个物理块;检测持续到检测到物理块为空白块或者EBL为空为止;从GBL中首个物理块开始,逐个检查GBL中物理块的存储状况,如果物理块已经为空白块,则从GBL中删除这个物理块,并将这个物理块插入EBL ;检测持续到检测到物理块为垃圾块或者GBL为空为止。较佳地,若所有物理块的池掩码均不再是CPM ;则根据当前所有物理块中擦除次数最小的物理块的擦除次数修正RECC的值,并根据修正后的RECC重新确定所有物理块的池掩码。较佳地,该方法进一步包括当存储器正常卸载时,保存所有物理块当前的擦除次数、池掩码以及当前的EBL、GBL到存储器的备份区。较佳地,每一个物理块的擦除次数还实时存储于该物理块的物理页中。一种磨损均衡装置,该装置包括池维护模块,用于根据每一个物理块的擦除次数,确定每一个物理块的池掩码;其中,对于不同擦除次数,物理块的池掩码为冷池掩码CPM、普通池掩码NPM或热池掩码HPM ; 其中包括确定单元,用于在物理块的擦除次数等于RECC的值时,确定其池掩码为CPM ;擦除次数大于等于RECC+TH的值时为HPM ;擦除次数为其他值时为NPM ;所述RECC是参考擦除次数计数器,其值等于所有物理块中擦除次数最小的物理块的擦除次数;所述TH为预设的阈值,其取值为大于1的正整数;静态均衡模块,与所述池维护模块相连,用于在当有物理块的池掩码从NPM变为 HPM时,将任一个池掩码为CPM的物理块中的数据复制到所述池掩码为HPM的物理块上;垃圾回收模块,与所述静态均衡模块相连,用于将所述池掩码为CPM的物理块作为垃圾块进行垃圾回收;变阈值模块,与所述池维护模块相连,用于令所述TH随物理块的磨损情况而变化。较佳地,所述变阈值模块包括参考值获取单元,用于获取RECC的值;阈值确定单元,与所述参考值获取单元相连,用于令所述TH随RECC的增加而减小。较佳地,阈值确定单元具体用于每当所述RECC改变时,将所述TH的值减去预设的变化量,直到TH达到预设的最小值。较佳地,所述变阈值模块包括平均擦除次数计算单元,用于计算所有物理块的平均擦除次数;阈值确定单元,与所述平均擦除次数计算单元相连,用于令所述TH随所有物理块的平均擦除次数增加而减小。较佳地,所述阈值确定单元具体用于每当所有物理块的平均擦除次数增加预设的增加值,将所述TH减去预设的变化量,直到TH达到预设的最小值。较佳地,该设备进一步包括EBL模块,维护用于管理空白块的空白块链表EBL ;将所述EBL中的空白块按照擦除次数值升序排列;当需要为写请求分配空白块时,将所述EBL中的首个空白块作为写入块分配给所述写请求。较佳地,所述EBL模块不允许池掩码为HPM的空白块进入。较佳地,该设备进一步包括GBL模块,与所述垃圾回收模块及EBL模块分别相连,维护用于管理垃圾块的垃圾块链表GBL ;将所述GBL中的垃圾块按照擦除次数值升序排列。较佳地,所述GBL模块不允许池掩码为HPM的垃圾块进入。较佳地,所述GBL模块进一步用于,当存储器中的可用空间小于预设的阈值时;
若GBL非空,则擦除所述GBL中首个垃圾块的数据,使之变为空白块;并将该空白块插入所述EBL模块维护的EBL中;若GBL已空,则先将所有池掩码为CPM和NPM的物理块中垃圾数据最多且擦除次数最少的物理块中的有效数据写入到当前分配的写入块上,并将该垃圾数据最多且擦除次数最少的物理块插入GBL ;再擦除所述GBL中首个垃圾块的数据,使之变为空白块;并将该空白块插入EBL中。 较佳地,所述垃圾回收模块具体用于将池掩码为CPM和NPM的垃圾块插入所述GBL 模块维护的GBL中。较佳地,所述池维护模块进一步包括当前值确定单元,与所述确定单元相连,用于在存储器为第一次使用时,置所有物理块的当前的擦除次数为0 ;所有物理块当前的池掩码为CPM。较佳地,所述池维护模块进一步包括当前值确定单元,与所述确定单元相连,用于在存储器不是第一次使用,且上一次使用后正常卸载时,从存储器的备份区读取得到所有物理块当前的擦除次数、池掩码,以及 EBL、GBL0较佳地,所述池维护模块进一步包括当前值确定单元,与所述确定单元相连,用于在存储器不是第一次使用,且上一次使用后没有正常卸载时,从存储器的备份区载入最近一次正常卸载时备份的所有物理块当前的擦除次数、 池掩码,以及EBL、GBL ;所述EBL模块从EBL中首个物理块开始,逐个检测EBL中物理块的存储状况,如果物理块已非空白块,则从EBL中删除这个物理块;检测持续到检测到物理块为空白块或者 EBL为空为止;所述GBL模块从GBL中首个物理块开始,逐个检查GBL中物理块的存储状况,如果物理块已经为空白块,则从GBL中删除这个物理块,并将这个物理块插入所述EBL维护的 EBL ;检测持续到检测到物理块为垃圾块或者GBL为空为止。较佳地,所述池维护模块进一步包括重建单元,与所述确定单元相连,当所有物理块的池掩码均不再是CPM时;根据当前所有物理块中擦除次数最小的物理块的擦除次数修正RECC的值,并根据修正后的RECC 重新确定所有物理块的池掩码。较佳地,该装置进一步包括备份模块,与所述池维护模块、EBL模块、GBL模块分别相连,用于当存储器正常卸载时,保存所有物理块当前的擦除次数、掩码以及当前的EBL、GBL到存储器的备份区。较佳地,所述备份模块进一步用于,将每一个物理块的擦除次数实时存储于该物理块的物理页中。由上述的技术方案可见,本发明的这种磨损均衡方法和装置,通过将物理块划分为三池,并对现有的静态均衡部分进行了改进,使本发明的磨损均衡方法只在将冷池掩码的物理块进行垃圾回收时产生一次额外的磨损,相比现有技术降低了额外的磨损。其次,通过令用于划分三池的阈值TH随物理块磨损情况而变化,从而得到了更好的磨损均衡效果。另外,本发明通过EBL、GBL链表对垃圾回收、写入块分配等的控制,磨损均衡的动态部分得到了比现有技术更好的磨损均衡效果,并进一步通过禁止具有热池掩码的物理块进入EBL、 GBL,使磨损比较多的物理块不会继续磨损,在得到更好的磨损均衡效果的同时,还减少了本发明磨损均衡方法搜索物理块时的速度,使本发明总体的执行效率和速度比现有技术也
有提高。


图1为现有磨损均衡方法流程图;图2为本发明实施例的磨损均衡方法总体流程图;图3为本发明实施例的垃圾回收方法流程图;图4为本发明实施例的磨损均衡方法中静态均衡部分的流程图;图5为本发明实施例的磨损均衡方法总体思想流程图;图6为本发明实施例的磨损均衡装置结构示意图;图7为本发明实施例的池维护模块结构示意图;图8为本发明实施例的变阈值模块结构示意图;图9为本发明另一实施例的变阈值模块结构示意图。
具体实施例方式为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。本发明主要是根据每一个物理块的擦除次数,确定每一个物理块的池掩码;其中,对于不同擦除次数,物理块的掩码可以分为冷池掩码CPM、普通池掩码NPM或热池掩码 HPM(为方便描述,后文中将具有冷池掩码的物理块称为冷池块,将具有普通池掩码的物理块称为普通池块,将具有热池掩码的物理块称为热池块);在静态均衡时,当有池掩码为 NPM的物理块的池掩码变为HPM时,将一个池掩码为CPM的物理块中的数据复制到所述池掩码变为HPM的物理块上,并将所述池掩码为CPM的物理块作为垃圾块进行垃圾回收。由于本发明对现有磨损均衡的静态均衡部分进行了改进,只产生了一次额外的磨损,即将池掩码为CPM的物理块进行垃圾回收时会产生一次擦除动作,所以相比现有技术降低了额外的磨损。而且,通过令划分三池(冷、热、普通)的阈值随物理块的磨损情况而变化,从而能够使该阈值能够更加好地适应不同磨损情况下,存储器对于均衡度和额外磨损的要求,得到更好的磨损均衡效果。另外,本发明还可以进一步改进现有磨损均衡的动态部分,根据物理块的擦除次数控制垃圾回收过程和写入块的分配过程,使热池块不参与写入块的分配和垃圾块的回收,使得所以本发明的磨损均衡方法在执行时,所需搜索物理块的范围更小,速度更快。具体地,本发明的总体实现流程如图5所示,包括如下步骤步骤501,根据每一个物理块的擦除次数,确定每一个物理块的池掩码;其中,对于不同擦除次数,物理块的池掩码可以确定为冷池掩码CPM、普通池掩码NPM或热池掩码 HPM。
在本发明的磨损均衡方法中,对于每一个需要进行磨损均衡的物理块(以下简称块),共设置冷池、普通池和热池三种块属性,并采用池掩码加以标识和区分,池掩码可以采用两位二进制码形式,例如00表示该块属于冷池,01表示该块属于普通池,11表示该块属于热池。另外,每一个块记录其擦除次数,并确定一个参考擦除次数RECC(RECC的值等于所有块中擦除次数最小的块的擦除次数)和预设的表示冷热池之间间距的阈值(TH)用于确定物理块应当对应哪个池掩码,其中,TH为大于1的整数,擦除次数等于RECC的块为冷池掩码,擦除次数大于等于RECC+TH块为热池掩码,擦除次数为其它值的块为普通池掩码。池掩码会根据物理块的擦除次数变化实时修改,具体修改方法为每次擦除次数改变以后,将改变后的擦除次数和RECC进行作差比较,如果结果为1,则修改当前池掩码为普通池掩码 NPM,如果结果为TH,则修改当前池掩码为热池掩码HPM,其他结果则保持当前池掩码不变。步骤502,当有物理块的池掩码从NPM变为HPM时,将任一个池掩码为CPM的物理块中的数据复制到所述池掩码为HPM的物理块上;并将所述池掩码为CPM的物理块作为垃圾块进行垃圾回收。本步骤是本发明磨损均衡的静态均衡部分,当有普通池块的擦除次数达到进入热池的标准,即擦除次数大于等于RECC+TH时(例如通过垃圾回收过程而被擦除数据的普通池块变为热池块时),从冷池中选择一个块,将该冷池块上的数据移动到该进入热池的块上,并回收该冷池块(垃圾回收过程可以采用现有的垃圾回收方法,也可以采用本发明改进的方法,本发明改进的垃圾回收方法在后文详述)。通过这一过程,可以使冷池块从冷数据中被释放出来,使之可以被重新写入数据而加快冷池块的磨损,达到更好的磨损均衡效果,同时,这一静态均衡过程只产生了一次额外磨损,即从冷池选出的块被擦除产生一次额外的磨损,而进入热池的块是正常垃圾回收过程的块,其数据擦除不是由本方法额外引起, 所以比较双池算法,要少一次额外磨损。进一步地,本发明还可以对现有技术的动态均衡部分进行改进,构建用于管理空白块的空白块链表EBL和用于管理垃圾块的垃圾块链表GBL,通过EBL控制为写入操作分配写入块过程中的空白块队列,通过GBL控制垃圾块回收过程中垃圾块的队列;其中,EBL 和GBL均按照擦除次数升序排列(擦除次数小的块排列靠前,反之靠后,对于擦除次数相同的块,则可以先来的靠前,也可以随意排列;)链表中元素(EBL中为空白块,GBL中为垃圾块),从而保证优先回收擦除次数少的垃圾块,以及优先将擦除次数少的空白块作为写入块分配给写请求,达到良好的磨损均衡效果;且EBL和GBL会将热池块排除在外,不会有热池块进入EBL和GBL,从而能保持热池块不继续被擦除,进一步提高磨损均衡效果,并减小所需搜索物理块的范围,提高搜索速度。下面将举一些具体的例子,来说明本发明的磨损均衡算法,下文均以同时对现有技术的动态部分和静态部分改进为例图2为本发明实施例的磨损均衡方法总体流程图,如图2所示,该方法包括如下步骤步骤201,获取磨损信息;磨损信息是指进行磨损均衡所需的信息,包括每一个物理块的擦除次数,每一个物理块的池掩码,以及EBL、GBL ;如果存储器非第一次使用,这些磨损信息的当前值可以从存储器的备份区直接读取获得,如果第一次使用,则需要先创建磨损信息,如将所有块的擦除次数置0,为所有物理块标记池掩码、建立EBL、GBL等,池掩码的确定方法上文已经详述,这里不赘;其中,第一次使用时,所有块的擦除次数为0,所以 RECC也为0,即所有块在第一次使用时均会确定为冷池掩码CPM。对于是否第一次使用,可以通过查看存储器的备份区是否有备份的数据来判断, 如果没有备份的数据,即说明是第一次使用,否则不是第一次使用。另外,需要注意的是,如果存储器第一次使用,其初始化过程中还会包括坏块的搜索和处理过程,即找出所有的初始坏块;在找坏块的同时可以检测每一个块的状态,如果有数据,由于首次使用,这些数据对用户是无效的,那么在建立GBL、EBL时,可以把该块放入 GBL等候擦除;如果没有数据,那么可以把该块放入EBL待用。其中,坏块由于不能使用,故不记入本发明中所述的所有物理块的范围内。如果存储器不是第一次使用,且在上次使用时不是正常卸载,那么在获取磨损信息时,获取到的GBL和EBL可能不正确,需要对GBL、EBL进行修正;具体地,可以从备份区载入最近一次正常卸载时备份的磨损信息,然后检查EBL中从链表头开始的EBL中每个块的存储状况,如果某个块已经非空,表明上次卸载之前这个块已经分配出去,因此应该从EBL 中删除这个块。这个检查过程持续到碰到第一个空白块或者EBL为空为止。类似地,需要检查GBL的状况,从GBL链表头开始检测GBL中每个块的存储状况,如果某个块为空白块, 表明上次卸载之前这个块已经被回收,因而应该从GBL删除并且放入EBL ;这个检查过程持续到碰到第一个非空白块或者GBL为空为止。步骤202,判断是否有写请求,若是,进入步骤203,否则进入步骤213 ;步骤203,判断写入块是否已满?若是,则进入步骤204,否则进入步骤205 ;步骤204,分配EBL链表中的首元素为写入块;步骤205,响应写请求;步骤206,判断存储器可用空间是否小于预设的阈值,若是,进入步骤207,否则返回步骤202 ;步骤207,垃圾回收,具体过程后文详述;步骤208,判断回收的垃圾块在回收前是否为冷池块,若是,则进入步骤211,否则进入步骤209 ;步骤209 ;判断回收的垃圾块在回收后是否变为热池块(垃圾块回收时会擦除原来的数据,其擦除次数会加1,若加1后擦除次数达到RECC+TH,则认为该块回收后变为热池块),若是则进入步骤210,否则返回步骤202 ;步骤210,静态均衡,进入步骤211 ;步骤211,判断冷池是否为空,若是,则进入步骤212,否则返回步骤202 ;步骤212,重构三池,返回步骤202。若冷池为空,则本发明的磨损均衡算法将无法继续,所以需要根据目前所有块中擦除次数最小的块的擦除次数值重新确定新的RECC,然后根据该新的RECC重新确定物理块的池掩码,从而维持三池的结构。步骤213,判断存储器是否卸载,若是,进入步骤214,否则返回步骤202 ;步骤214,保存磨损信息,结束流程。其中,步骤202 207是本发明的动态均衡部分,其中202、203、205和206与现有技术相同,这里不赘;步骤204中,从EBL中分配写入块的方式是从EBL链表的头元素开始顺序分配,因此能够保证擦除次数小的块可以优先分配给写请求,而步骤207则是本发明动态均衡部分的关键,通过改进了现有垃圾回收过程,使得本发明在垃圾回收过程也能产生磨损均衡效果,使本发明在动态磨损均衡的效果上大大优于现有技术;具体垃圾回收过程将在后文详述。步骤208 210为静态均衡部分,其中步骤208和209用于判定是否需要进行静态均衡,实际上本发明中静态均衡的触发是在普通池掩码的物理块的池掩码变为热池掩码时,步骤208和209分别用于判断池掩码变化的物理块在变化前的池掩码,以及变化后的池掩码,这两个步骤的先后顺序是可以交换的,不影响最终的判断结果,步骤210的静态均衡具体流程将在后文详述。步骤213和214和现有正常卸载过程相似,这里不赘,其区别只不过在存储磨损信息时,存储的是EBL和GBL以及所有块的擦除次数和SLWM的信息。另外,每一个物理块还会在其物理页中的冗余区保存该物理块的擦除次数。下面将详细描述本发明动态均衡部分的垃圾回收过程实际上垃圾回收包括两个部分,即普通垃圾回收和强制垃圾回收;普通垃圾回收是指在检测到有垃圾块产生时(如果一个数据被更新,那么它的旧版本被标记为垃圾,当一个块上的数据全部标记为垃圾时,该块为垃圾块)回收垃圾块的过程,这一过程在现有技术中是直接将垃圾块上的数据擦除并加入空白块队列末尾,而在本发明中,则不是立即擦除垃圾块上的数据,而是先将其插入GBL中待用,只在EBL中的空白块数量小于预设的阈值时,再从GBL中选择一个垃圾块,擦除数据后插入EBL中;在EBL中,元素按照擦除次数的升序排列,并在分配写入块时,始终分配头元素;GBL对垃圾块的排列和分配方法与EBL相同,从而保证擦除次数较少的块能够被优先擦除利用,而且对于标记为热池的物理块,即使其已经变为垃圾块,也不进行回收的操作,即不将该垃圾块插入GBL。普通垃圾回收中检测垃圾块的动作可以以一定的时间间隔重复执行,也可以固定在某个动作之后进行,例如在步骤205的响应写请求完成后进行。而强制垃圾回收(如步骤207)只在存储器的可用空间小于预设的阈值(非阈值TH)时进行,具体流程如图3所示,包括如下步骤步骤301,判断GBL是否非空,若是,进入步骤302,否则进入步骤303 ;步骤302,回收GBL中首元素,并进入步骤306 ;步骤303,在冷池和普通池中找出垃圾最多且擦除次数最少的块;步骤304,将该块上的有效数据写入当前分配的写入块中;步骤305,将该块插入GBL,返回步骤302。步骤306,将回收的垃圾块插入EBL,结束流程。随着上述动态均衡的进行,一些块离开了冷池,而一些块由于写入的数据为冷数据(如系统文件)长时间不更新的缘故停留在了冷池,对于这些长时间停留在冷池的块可以通过本发明的静态均衡过程来加速其磨损,从而提高磨损均衡的效果,具体的方法如图4 所示,包括下步骤步骤401,找出一个冷池块;这个冷池块可以是随机寻找到的任意一个冷池块;也可以是按照一定的规则如找出冷池块上保存的数据的最后修改时间最早的冷池块。步骤402,将该冷池块的数据复制到进入热池的垃圾块上;步骤403,将上述找出的冷池块插入GBL链表,可以插入GBL的首位置,或者按照 GBL的排列规则插入。
上述介绍的本发明磨损均衡方法的实施例只是本发明的一个较佳的实施例,如果仅实现上述静态部分,则不需要建立EBL和GBL,与EBL、GBL相关的操作也无需执行,可以仍然沿用现有的空白块队列和垃圾回收过程;但如果同时实现上述动态部分和静态部分, 除了能够加快执行算法时的物理块搜索速度外,还能够得到更好的磨损均衡效果,经过实验,本发明同时实现上述静态部分和动态部分时,可以将磨损的不均衡程度严格地控制在 TH2/4(即预设阈值TH的平方除以4的值)以内,有效地延长了非易失性存储器的使用寿命。另外,上述实施例中,预设的阈值TH是一固定值,TH越大,普通池的范围越大,热池范围越小,则被热池冻结的物理块越少,普通池中物理块进入热池的速度越慢;而TH越小,则普通池的范围越小,热池范围越大,被热池冻结的物理块越多,普通池中物理块进入热池的速度越快。而热池中的物理块越多,所有物理块的总体磨损程度也将会越平均;但是由于普通池中物理块进入热池的速度较快,而当有普通池中物理块进入热池时会触发垃圾回收过程,而垃圾回收过程会产生额外磨损,也就是说TH越小,磨损均衡度越好,但由于会更多的触发垃圾回收过程,产生的额外磨损也会更多;TH越大,则情况相反;可见,如果需要得到更好的磨损均衡度,则TH的值可以设置的小一些,而如果考虑减少额外磨损,则TH的值可以设置的大一些。从上述TH的值对于磨损均衡效果的影响分析可见,TH的值具体设置为多少,在磨损的均衡度和额外磨损之间需要进行一个平衡,对于固定的TH,无法做到两者的统一,在提高某一方面的同时,会使另一方面有所损失。那么,作为另一实施例,如果令TH为一可变的阈值,在非易失性存储器的使用过程中,随物理块物的磨损情况而变化,就可以使TH能够更加好地适应不同磨损情况下对于均衡度和额外磨损的要求。例如,一般情况下,在非易失性存储器的使用初期,由于物理块的擦除次数都较少,此时存储器的总体寿命对于磨损不均衡的容忍度较高,即对于磨损的均衡度要求不高, 而额外磨损相对来说是更加需要考虑的因素;而随着非易失性存储器的使用,物理块的擦除次数增多,因磨损不均衡而出现某个物理块的擦除次数远远超过其他物理块的情况会越来越多,此时,存储器的总体寿命对于磨损的均衡度要求会越来越高,而额外磨损相对来说就变得不那么敏感。因此,将TH的初始值设置为一个较大的值,而令其随存储器的使用,而不断减小, 相比固定的TH,能够得到更好的磨损均衡效果,具体举例如下令TH随RECC的增加而减小,RECC随着存储器的使用会不断增大,所以可以反映存储器的使用情况,也即可以反映物理块的磨损情况,因此,可以根据RECC的情况使TH随之变化;具体地,可以每当所述RECC改变时,将所述TH的值减去预设的变化量,直到TH达到预设的最小值,或者达到其取值范围的最小值即2为止。TH还可以随所有物理块的平均擦除次数增加而减小;同样的,存储器中所有物理块的平均擦除次数也是随存储器的使用而增加的,所以也可以反映存储器的使用情况,因此,也可以根据物理块的平均擦除次数,使TH随之变化;具体地,可以每当所有物理块的平均擦除次数增加预设的增加值时,将TH减去预设的变化量,直到TH达到预设的最小值,或者达到其取值范围的最小值。预设的增加值可以是一个固定值,如100,或是物理块最大擦除次数的;也可以是根据所有物理块平均擦除次数确定的一个可变值,例如增加值也可以随物理块平均擦除次数增加而变化。另外,阈值TH的变化不一定是线性的,也不一定是单调的,也可以通过检测存储器中所有物理块的具体磨损均衡情况,更加灵活智能地改变TH的值,例如检测到当前物理块的磨损状况较为平均,则可以增加TH的值,进一步减少额外磨损;反之则可以减少TH的值,通过牺牲一定的额外磨损,使得磨损的均衡度提高;具体TH值的变化策略可以根据具体的需求确定。当然,任何其他可以反映存储器中物理块磨损情况的参数都可以作为TH变化的依据,例如依据所有物理块中擦除次数最大的物理块的擦除次数、存储器使用时间、或者根据多种参数综合确定等,这里没有办法一一举例,但令TH随物理块磨损情况变化,是该实施例的核心,在本发明的双池磨损均衡算法的基础上,进一步采用该实施例的变阈值方式, 能够进一步实现对热池中冻结物理块的范围,以及冷池到普通池以及普通池到热池中物理块的转移过程速度的控制,获得更好的磨损均衡效果。更重要的是,本发明的变阈值实施例,在阈值变化的过程中,所带来的负面效果, 相比现有磨损均衡算法中引入变阈值方案,更加的微小;例如在现有双池算法中引入可变的阈值,会在阈值减小的同时导致冷池和热池中物理的数据交换过程的增加,从而大大增加了额外磨损,而阈值增大则会造成磨损均衡度得不到保证,对于提高存储器寿命的最终目的来说,往往存储器的寿命最大值对应趋向于一个最佳阈值,而在存储器使用过程中改变这一阈值往往是得不偿失的,反而可能降低存储器寿命;所以现有磨损均衡算法的完善研究都集中在确定这个最佳阈值上,而渐渐抛弃了变阈值方案。而基于本发明的三池算法, 引入变阈值方案,则由于算法本身产生的额外磨损很少,改变阈值TH不会带来过多的额外磨损,对于存储器使用寿命的正面影响超过了负面,使变阈值方案真正得以实用。另外,本发明还提供了一种磨损均衡装置,如图6所示,该装置包括池维护模块601,用于根据每一个物理块的擦除次数,确定每一个物理块的池掩码;其中,对于不同擦除次数,物理块的池掩码为冷池掩码CPM、普通池掩码NPM或热池掩码 HPM ;静态均衡模块602,与所述池维护模块601相连,用于在有物理块的池掩码从NPM 变为HPM时,将任一个池掩码为CPM的物理块中的数据复制到所述池掩码为HPM的物理块上;垃圾回收模块603,与所述静态均衡模块602相连,用于将所述池掩码为CPM的物理块作为垃圾块进行垃圾回收。其中,所述池维护模块如图7所示,包括确定单元701,用于在物理块的擦除次数等于RECC的值时,确定其池掩码为冷池掩码;擦除次数大于等于RECC+TH的值时为热池掩码;擦除次数为其他值时为普通池掩码;其中,所述RECC是参考擦除次数计数器,其值等于所有物理块中擦除次数最小的物理块的擦除次数;所述TH为预设的阈值,其取值为大于1的正整数,它表示冷池和热池的间距。
较佳地,该装置可以进一步包括EBL模块604,维护用于管理空白块的空白块链表EBL ;将所述EBL中的空白块按照擦除次数值升序排列;当需要为写请求分配空白块时,将所述EBL中的首个空白块作为写入块分配给所述写请求。另外,EBL模块604还可以进一步禁止池掩码为HPM的空白块进入,从而保护热池块不会进一步磨损。较佳地,该装置还可以进一步包括GBL模块605,与所述垃圾回收模块603及EBL模块604分别相连,维护用于管理垃圾块的垃圾块链表GBL ;将所述GBL中的垃圾块按照擦除次数值升序排列。另外,GBL模块605也可以进一步禁止池掩码为HPM的垃圾块进入,从而保护热池
块不会进一步磨损。当所述EBL模块604维护的EBL中的空白块数量小于预设的阈值时,GBL模块605 还可以进一步用于判断GBL是否非空;若GBL非空,则擦除所述GBL中首个垃圾块的数据,使之变为空白块;并将该空白块插入所述EBL模块604维护的EBL中;若GBL已空,则先将所有池掩码为冷池掩码和普通池掩码的物理块中垃圾数据最多且擦除次数最少的物理块中的有效数据写入到当前分配的写入块上,并将该垃圾数据最多且擦除次数最少的物理块插入GBL ;再擦除所述GBL中首个垃圾块的数据,使之变为空白块;并将该空白块插入EBL中。所述垃圾回收模块603具体用于将掩码为冷池掩码和普通池掩码的垃圾块插入所述GBL模块维护的GBL中。较佳地,所述池维护模块601可以进一步包括当前值确定单元702,与所述确定单元701相连,用于在存储器为第一次使用时, 置所有物理块的当前的擦除次数为0 ;所有物理块当前的池掩码为冷池掩码。或者,所述池维护模块601可以进一步包括当前值确定单元702,与所述确定单元701相连,用于在存储器不是第一次使用, 且上一次使用后正常卸载时,从存储器的备份区读取得到所有物理块当前的擦除次数、池掩码,以及EBL、GBL。或者,所述池维护模块601可以进一步包括当前值确定单元702,与所述确定单元701相连,用于在存储器不是第一次使用, 且上一次使用后没有正常卸载时,从存储器的备份区载入最近一次正常卸载时备份的所有物理块当前的擦除次数、 池掩码,以及EBL、GBL ;所述EBL模块604从EBL中首个物理块开始,逐个检测EBL中物理块的存储状况, 如果物理块已非空白块,则从EBL中删除这个物理块;检测持续到检测到物理块为空白块或者EBL为空为止;所述GBL模块605从GBL中首个物理块开始,逐个检查GBL中物理块的存储状况, 如果物理块已经为空白块,则从GBL中删除这个物理块,并将这个物理块插入所述EBL维护的EBL ;检测持续到检测到物理块为垃圾块或者GBL为空为止。
较佳地,所述池维护模块601可以进一步包括重建单元703,与所述确定单元701相连,当所有物理块的池掩码均不再是冷池掩码时;根据当前所有物理块中擦除次数最小的物理块的擦除次数修正RECC的值,并根据修正后的RECC重新确定所有物理块的池掩码。另外,该装置还可以进一步包括备份模块606,与所述池维护模块601、EBL模块604、GBL模块605分别相连,用于当存储器正常卸载时,保存所有物理块当前的擦除次数、掩码以及当前的EBL、GBL到存储器的备份区。较佳地,所述备份模块606可以进一步用于,将每一个物理块的擦除次数实时存储于该物理块的物理页中。最后,对应于方法实施例中TH为一变化阈值的实施例,该装置还可以进一步包括变阈值模块606,与所述池维护模块601相连,用于令所述TH随物理块的磨损情况而变化。具体地,所述变阈值模块606的具体结构如图8所示,包括参考值获取单元801,用于获取RECC的值;阈值确定单元802,与所述参考值获取单元801相连,用于根据所述参考值获取单元801获取的RECC的值,令所述TH随RECC的增加而减小;具体地,每当所述RECC改变时, 阈值确定单元802将所述TH的值减去预设的变化量,直到TH达到预设的最小值。作为另一实施例,所述变阈值模块606具体结构如图9所示,包括平均擦除次数计算单元901,用于计算所有物理块的平均擦除次数;阈值确定单元902,与所述平均擦除次数计算单元901相连,用于根据所述平均擦除次数计算的,所有物理块的平均擦除次,令所述TH随所有物理块的平均擦除次数增加而减小;具体地,每当所有物理块的平均擦除次数增加预设的增加值时,所述阈值确定单元 902,将所述TH减去预设的变化量,直到TH达到预设的最小值。所述变阈值模块606的其他实施方式,可以参考方法实施例,这里不再赘述。由上述的实施例可见,本发明的这种磨损均衡方法和装置,通过将物理块划分为三池,并对现有的静态均衡部分进行了改进,使本发明的磨损均衡方法只在将具有冷池掩码的物理块进行垃圾回收时产生一次额外的磨损,相比现有技术降低了额外的磨损,另外, 通过令用于划分三池的阈值TH随物理块磨损情况而变化,从而得到了更好的磨损均衡效
权利要求
1.一种磨损均衡方法,其特征在于,该方法包括根据每一个物理块的擦除次数,确定每一个物理块的池掩码; 其中,物理块的擦除次数等于RECC的值时,确定物理块的池掩码为冷池掩码CPM ;擦除次数大于等于RECC+TH的值时确定物理块的池掩码为热池掩码HPM ;擦除次数为其他值时确定物理块的池掩码为普通池掩码NPM ;所述RECC是参考擦除次数计数器,其值等于所有物理块中擦除次数最小的物理块的擦除次数;所述TH为预设的阈值,其取值为大于1的正整数,且随物理块的磨损情况而变化;当有物理块的池掩码从NPM变为HPM时,将任一个池掩码为CPM的物理块中的数据复制到所述池掩码为HPM的物理块上,并将所述池掩码为CPM的物理块作为垃圾块进行垃圾回收。
2.如权利要求1所述的磨损均衡方法,其特征在于,所述TH随物理块的磨损情况而变化包括所述TH随RECC的增加而减小。
3.如权利要求2所述的磨损均衡方法,其特征在于,所述TH随RECC的增加而减小,包括每当所述RECC改变时,将所述TH的值减去预设的变化量,直到TH达到预设的最小值。
4.如权利要求1所述的磨损均衡方法,其特征在于,所述TH随物理块的磨损情况而变化包括所述TH随所有物理块的平均擦除次数增加而减小。
5.如权利要求4所述的磨损均衡方法,其特征在于,所述TH随所有物理块的平均擦除次数增加而减小包括每当所有物理块的平均擦除次数增加预设的增加值,将所述TH减去预设的变化量,直到TH达到预设的最小值。
6.如权利要求1、2或4所述的磨损均衡方法,其特征在于,该方法进一步包括 建立用于管理空白块的空白块链表EBL,所述EBL中的空白块按照其擦除次数升序排列;当需要为写请求分配空白块时,将所述EBL中的首个空白块作为写入块分配给所述写请求。
7.如权利要求6所述的磨损均衡方法,其特征在于,所述EBL不允许池掩码为HPM的空白块进入。
8.如权利要求6所述的磨损均衡方法,其特征在于,该方法进一步包括建立用于管理垃圾块的垃圾块链表GBL,所述GBL中的垃圾块按照擦除次数值升序排列。
9.如权利要求8所述的磨损均衡方法,其特征在于,所述GBL不允许池掩码为HPM的垃圾块进入。
10.如权利要求9所述的磨损均衡方法,其特征在于,当所述EBL中的空白块数量小于预设的阈值时,进行如下所述的垃圾回收过程如果GBL非空,则擦除所述GBL中首个垃圾块的数据,使之变为空白块,并将该空白块插入^L中;如果GBL已空,则把所有掩码为CPM和NPM的物理块中垃圾数据量最多而且擦除次数最少的物理块的有效数据写入到当前分配的写入块上,并将该垃圾数据最多且擦除次数最少的物理块插入GBL;擦除所述GBL中首个垃圾块的数据,使之变为空白块,并将该空白块插入EBL中。
11.如权利要求9所述的磨损均衡方法,其特征在于,所述垃圾回收包括将池掩码为CPM和NPM的垃圾块插入GBL中。
12.如权利要求1、2或4所述的磨损均衡方法,其特征在于,若存储器为第一次使用,在执行所述根据每一个物理块的擦除次数,确定每一个物理块的池掩码的步骤之前,置所有物理块的当前的擦除次数为0 ;所有物理块当前的池掩码为CPM。
13.如权利要求8所述的磨损均衡方法,其特征在于,若存储器不是第一次使用,且上一次使用后正常卸载时,在执行所述根据每一个物理块的擦除次数,确定每一个物理块的池掩码的步骤之前,从存储器的备份区读取得到所有物理块当前的擦除次数、池掩码,以及 EBL、GBL0
14.如权利要求8所述的磨损均衡方法,其特征在于,若存储器不是第一次使用,且上一次使用后没有正常卸载时,在执行所述根据每一个物理块的擦除次数,确定每一个物理块的池掩码的步骤之前,从存储器的备份区载入最近一次正常卸载时备份的所有物理块的擦除次数、池掩码, 以及 raL、GBL ;从EBL中首个物理块开始,逐个检测EBL中物理块的存储状况,如果物理块已非空白块,则从EBL中删除这个物理块;检测持续到检测到物理块为空白块或者EBL为空为止;从GBL中首个物理块开始,逐个检查GBL中物理块的存储状况,如果物理块已经为空白块,则从GBL中删除这个物理块,并将这个物理块插入EBL ;检测持续到检测到物理块为垃圾块或者GBL为空为止。
15.如权利要求1、2或4所述的磨损均衡方法,其特征在于,若所有物理块的池掩码均不再是CPM ;则根据当前所有物理块中擦除次数最小的物理块的擦除次数修正RECC的值, 并根据修正后的RECC重新确定所有物理块的池掩码。
16.如权利要求8所述的磨损均衡方法,其特征在于,该方法进一步包括当存储器正常卸载时,保存所有物理块当前的擦除次数、池掩码以及当前的EBL、GBL到存储器的备份区。
17.如权利要求16所述的磨损均衡方法,其特征在于,每一个物理块的擦除次数还实时存储于该物理块的物理页中。
18.一种磨损均衡装置,其特征在于,该装置包括池维护模块,用于根据每一个物理块的擦除次数,确定每一个物理块的池掩码;其中, 对于不同擦除次数,物理块的池掩码为冷池掩码CPM、普通池掩码NPM或热池掩码HPM ;其中包括确定单元,用于在物理块的擦除次数等于RECC的值时,确定其池掩码为CPM ;擦除次数大于等于RECC+TH的值时为HPM ;擦除次数为其他值时为NPM ;所述RECC是参考擦除次数计数器,其值等于所有物理块中擦除次数最小的物理块的擦除次数;所述TH为预设的阈值,其取值为大于1的正整数;静态均衡模块,与所述池维护模块相连,用于在当有物理块的池掩码从NPM变为HPM 时,将任一个池掩码为CPM的物理块中的数据复制到所述池掩码为HPM的物理块上;垃圾回收模块,与所述静态均衡模块相连,用于将所述池掩码为CPM的物理块作为垃圾块进行垃圾回收;变阈值模块,与所述池维护模块相连,用于令所述TH随物理块的磨损情况而变化。
19.如权利要求18所述的磨损均衡装置,其特征在于,所述变阈值模块包括参考值获取单元,用于获取RECC的值;阈值确定单元,与所述参考值获取单元相连,用于令所述TH随RECC的增加而减小。
20.如权利要求19所述的磨损均衡方法,其特征在于,阈值确定单元具体用于每当所述RECC改变时,将所述TH的值减去预设的变化量,直到TH达到预设的最小值。
21.如权利要求18所述的磨损均衡方法,其特征在于,所述变阈值模块包括平均擦除次数计算单元,用于计算所有物理块的平均擦除次数;阈值确定单元,与所述平均擦除次数计算单元相连,用于令所述TH随所有物理块的平均擦除次数增加而减小。
22.如权利要求21所述的磨损均衡方法,其特征在于,所述阈值确定单元具体用于每当所有物理块的平均擦除次数增加预设的增加值,将所述TH减去预设的变化量,直到TH达到预设的最小值。
23.如权利要求18所述的磨损均衡装置,其特征在于,该设备进一步包括EBL模块,维护用于管理空白块的空白块链表EBL ;将所述EBL中的空白块按照擦除次数值升序排列;当需要为写请求分配空白块时,将所述EBL中的首个空白块作为写入块分配给所述写请求。
24.如权利要求23所述的磨损均衡装置,其特征在于,所述EBL模块不允许池掩码为 HPM的空白块进入。
25.如权利要求23所述的磨损均衡装置,其特征在于,该设备进一步包括GBL模块,与所述垃圾回收模块及EBL模块分别相连,维护用于管理垃圾块的垃圾块链表GBL ;将所述GBL中的垃圾块按照擦除次数值升序排列。
26.如权利要求25所述的磨损均衡装置,其特征在于,所述GBL模块不允许池掩码为 HPM的垃圾块进入。
27.如权利要求沈所述的磨损均衡装置,其特征在于,所述GBL模块进一步用于,当存储器中的可用空间小于预设的阈值时;若GBL非空,则擦除所述GBL中首个垃圾块的数据,使之变为空白块;并将该空白块插入所述EBL模块维护的EBL中;若GBL已空,则先将所有池掩码为CPM和NPM的物理块中垃圾数据最多且擦除次数最少的物理块中的有效数据写入到当前分配的写入块上,并将该垃圾数据最多且擦除次数最少的物理块插入GBL;再擦除所述GBL中首个垃圾块的数据,使之变为空白块;并将该空白块插入EBL中。
28.如权利要求25所述的磨损均衡装置,其特征在于,所述垃圾回收模块具体用于将池掩码为CPM和NPM的垃圾块插入所述GBL模块维护的GBL中。
29.如权利要求18所述的磨损均衡装置,其特征在于,所述池维护模块进一步包括当前值确定单元,与所述确定单元相连,用于在存储器为第一次使用时,置所有物理块的当前的擦除次数为0 ;所有物理块当前的池掩码为CPM。
30.如权利要求25所述的磨损均衡装置,其特征在于,所述池维护模块进一步包括 当前值确定单元,与所述确定单元相连,用于在存储器不是第一次使用,且上一次使用后正常卸载时,从存储器的备份区读取得到所有物理块当前的擦除次数、池掩码,以及EBL、 GBL。
31.如权利要求25所述的磨损均衡装置,其特征在于,所述池维护模块进一步包括 当前值确定单元,与所述确定单元相连,用于在存储器不是第一次使用,且上一次使用后没有正常卸载时,从存储器的备份区载入最近一次正常卸载时备份的所有物理块当前的擦除次数、池掩码,以及mL、GBL ;所述EBL模块从EBL中首个物理块开始,逐个检测EBL中物理块的存储状况,如果物理块已非空白块,则从EBL中删除这个物理块;检测持续到检测到物理块为空白块或者EBL为空为止;所述GBL模块从GBL中首个物理块开始,逐个检查GBL中物理块的存储状况,如果物理块已经为空白块,则从GBL中删除这个物理块,并将这个物理块插入所述EBL维护的EBL ; 检测持续到检测到物理块为垃圾块或者GBL为空为止。
32.如权利要求18所述的磨损均衡装置,其特征在于,所述池维护模块进一步包括 重建单元,与所述确定单元相连,当所有物理块的池掩码均不再是CPM时;根据当前所有物理块中擦除次数最小的物理块的擦除次数修正RECC的值,并根据修正后的RECC重新确定所有物理块的池掩码。
33.如权利要求25所述的磨损均衡装置,其特征在于,该装置进一步包括备份模块,与所述池维护模块、EBL模块、GBL模块分别相连,用于当存储器正常卸载时,保存所有物理块当前的擦除次数、掩码以及当前的EBL、GBL到存储器的备份区。
34.如权利要求33所述的磨损均衡装置,其特征在于,所述备份模块进一步用于,将每一个物理块的擦除次数实时存储于该物理块的物理页中。
全文摘要
本发明公开了一种磨损均衡方法,该方法根据每一个物理块的擦除次数,确定每一个物理块的池掩码;其中,对于不同擦除次数,物理块的池掩码确定为冷池掩码CPM、普通池掩码NPM或热池掩码HPM;当有物理块的池掩码从NPM变为HPM时,将任一个池掩码为CPM的物理块中的数据复制到所述池掩码为HPM的物理块上,并将所述池掩码为CPM的物理块作为垃圾块进行垃圾回收。其中,冷池、热池和普通池通过RECC及TH划分,所述RECC的值等于所有物理块中擦除次数最小的物理块的擦除次数;所述TH为预设的阈值,且随物理块的磨损情况而变化。本发明还公开了一种磨损均衡装置,该方法和装置能够降低磨损均衡带来的额外磨损。
文档编号G06F12/02GK102508785SQ20111034139
公开日2012年6月20日 申请日期2011年11月2日 优先权日2011年11月2日
发明者唐晨, 潘立阳 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1