一种闪存的磨损平衡方法

文档序号:6355236阅读:517来源:国知局
专利名称:一种闪存的磨损平衡方法
技术领域
本发明属于半导体存储领域,具体涉及一种闪存的磨损平衡方法。
背景技术
闪存因为其具有高密度、大容量、较低的读写操作耗时、能耗低,非易失性等特点 而越来越广的被应用于各种领域;同时,闪存芯片自身存在的一些缺陷限制了这类存储器 的应用。其一,闪存的写入操作必须在空白区域进行,如果目标区域已经有数据,必须先擦 除后写入,闪存以块为单位进行擦除操作。其二,闪存芯片的可擦除次数是有限的,对于NOR 型闪存可擦除次数一般为十万次左右,NAND型闪存可擦除次数一般为百万次左右。然而在闪存芯片的实际使用过程中,闪存设备的实际寿命远远低于上述的理论 值。其主要原因是闪存芯片被操作的频率是不一样的。存储热数据的闪存区块由于热数据 的不断更新写入,而导致这些闪存区块不断地被擦除,写入,形成坏块,当坏块达到一定的 累积之后,闪存芯片就不能够再使用了,而存储冷数据的闪存区块由于冷数据长时间不更 新写入,而导致这些闪存区块很少被擦除,这样会造成很大的浪费。磨损平衡算法所解决的 正是如何将整个闪存介质平均地被磨损,而不是某些闪存区块不断地被磨损,其它闪存区 块则处于闲置状态。国内外有很多关于磨损平衡算法的研究,但是这些研究通常都是假设 一个很小的问题规模,例如Dual-pool Algorithm提出了这么一种思想将磨损较严重的 块存放冷数据,停止该磨损严重的物理块的进一步磨损,同时腾出原先冷数据存放的拥有 较多寿命的物理块,使得后来程序中需要使用的经常更新的数据可以利用这些寿命较长的 物理块,从而使得磨损更加趋于平衡。Dual-pool分为Hot pool和Coldpool。Hot pool队 首为已擦除次数最多(即寿命最少)的物理块,而Cold pool队首为已擦除次数最少的物 理块,若两队首物理块[已擦除次数差>阈值T],则需要用冷数据来停止Hot pool队首的 物理块被垃圾回收策略选中擦除继续磨损。这种算法的问题是已擦除次数最多的物理块不 一定是逻辑热数据块,而已擦除次数最少的物理块也不一定是逻辑冷数据块,并且这种算 法的可扩展性不够,当闪存容量进一步扩大之后,Hot pool和Cold pool的大小会随着闪 存容量的增加而增加,最后变得很大,使得操作过于复杂,管理代价过大。近年来闪存容量 在快速增长,根据摩尔定律,以后随着技术的进一步发展,闪存的容量会越来越大。在闪存 芯片的容量逐渐增大的环境下,现有的磨损平衡算法已经在遭受可扩展性的问题,严重地 影响了磨损平衡算法的收益和系统的读写性能。目前业界的公司推出来的最新产品大多是256GB和512GB的,不过随着技术的不 断更新,SSD的容量最终会突破1TB。业界对于大容量并没有准确的定义,一般认为超过ITB 即可以确定为大容量。

发明内容
本发明所解决的技术问题在于,提出一种闪存的磨损平衡方法,精确定义冷热数 据和闪存特别是大容量闪存产生的可扩展性问题,能使得在大容量闪存的情况下保证磨损平衡算法不会受到可扩展性的问题及有效地延长其寿命,并可进一步提高闪存操作速度和 降低磨损平衡算法所带来的性能损失。为实现上述目的,本发明采用如下技术方案将整个闪存(如SSD固态硬盘)的存储区域划分为以2~n(n = 0,1....)个以 plane为单位的多个存储子区域,采用两级动态/静态磨损平衡。系统查看每个物理块的磨损情况,维持磨损严重存储子区域队列,并且为每一个 存储子区域维持热数据队列,冷数据队列,空闲块队列,垃圾块队列。在实现两级动态磨损平衡算法的时候,分为存储子区域之间的动态磨损平衡算法 和存储子区域内部的动态磨损平衡算法。首先将逻辑块映射到存储子区域,然后映射到该 存储子区域的已擦除次数最小的空闲块。其中,存储子区域之间的动态磨损平衡是采用一个轮转令牌环式的方法来实现从 逻辑块到存储子区域的映射的,包括a)如果该逻辑块以前写过,则不动用令牌环上的令牌,将逻辑块映射到最后一次 写操作确定的物理块所在的存储子区域;b)如果该逻辑块以前没有写过,则判定当前令牌所在节点的存储子区域是否为磨 损严重存储子区域,若是,则将令牌传递至环上下一个节点,一直到令牌所在节点的存储子 区域不是磨损严重存储子区域,则将逻辑块映射到该存储子区域;在映射完成之后,将令牌 传递至下一个节点。其中,存储子区域内部的动态平衡算法是将逻辑块映射到该存储子区域内部已擦 除次数最小的空闲物理块。其中,磨损严重存储子区域的判定包括1.在W-timer (磨损计时器)时间段结束之后,进行磨损严重存储子区域的判定;2.依次对每一个存储子区域进行磨损度因子的判定,如果磨损度因子WEAR >磨 损度阈值,则该存储子区域被判定为磨损严重存储子区域。其中,磨损度因子WEAR的计算方法WEAR =属于该存储子区域的所有物理块的(已擦除次数/可擦除次数)的平均 值;其中,磨损度阈值WTH的计算方法WTH =所有存储子区域的磨损度因子WEAR的平均值+磨损阈值标准;其中,所有存储子区域的磨损度因子WEAR的平均值表示整个存储系统的所有存 储子区域的总体磨损程度;磨损阈值标准是预设的一个值。当磨损度因子WEAR超过磨损度 因子的平均值的超过程度大于阈值标准的时候,该存储子区域为磨损严重的存储子区域。磨损阈值标准的确定原则当用户工作负载对于磨损平衡要求不高的时候,可将 阈值标准的值设定得较为高一点,那么存储子区域就比较难判定为磨损严重存储子区域; 相反的,如果用户工作负载对于磨损平衡要求比较高的时候,可将阈值标准的值设定得较 为低一点,那么存储子区域就比较容易判定为磨损严重存储子区域。其中,在实现两级静态磨损平衡算法的时候,分为存储子区域内部的静态磨损平 衡算法和存储子区域之间的静态磨损平衡算法。其中,存储子区域内部的静态磨损平衡算法包括
1.将该存储子区域的冷数据块队列队首的逻辑冷数据块出列;2.进行冷数据迁移条件的判定,根据判定结果,将写入到该存储子区域已擦除次 数最大的空闲物理块中,以此来停止该空闲物理块的进一步磨损。其中,数据温度的判定过程包括1.当T-timer (热度计时器)时间段结束之后,进行数据温度的判定;2.依次对于每一个存储子区域进行判定,对某存储子区域进行判定的时候,依次 对映射到该存储子区域的每一个数据逻辑块进行判定;3.如果映射到某存储子区域的逻辑数据块的热度因子TEMP <下限,则该逻辑数 据块被判定为冷数据;如果热度因子TEMP >上限,则该逻辑数据块被判定为热数据;其中,热度因子TEMP的计算方法TEMP = T-timer时间段内分配给该逻辑块的物理块的数量,热度因子是衡量数据 热度的标准,表示该逻辑块对物理块的需求程度;其中,热度因子的上限和下限都是通过下列公式设定的,其中热度阈值标准可以 通过工作负载的不同具体指定。上限=存储设备所有逻辑数据块热度因子的平均值+热度阈值标准*存储设备 所有逻辑数据块热度因子的平均值;也可以表示为上限=存储设备所有逻辑数据块热度因子的平均值* (1+热度阈值标准);下限=存储设备所有逻辑数据块热度因子的平均值-热度阈值标准*存储设备 所有逻辑数据块热度因子的平均值;也可以表示为下限=存储设备所有逻辑数据块热度因子的平均值* (1-热度阈值标准);存储设备的所有逻辑数据块热度因子的平均值表示的是在该T-timer的时间段 内分配给系统所有逻辑块的所有物理块的平均值,表示当前T-timer时间段内存储设备的 数据的平均热度。热度阈值标准是可以根据工作负载对于磨损平衡的要求程度具体设定的 一个值。上下限确定原则当用户对于磨损平衡要求不高的时候,可将热度阈值标设定得 比较大一点,那么数据块就比较难被判定为冷/热数据块,那么冷热数据交换的频率也会 小一点;相反地,如果用户对于磨损平衡要求比较高的时候,可将热度阈值标准设定得比较 小一点,那么数据块就比较容易被判定为冷/热数据块,那么冷热数据交换的频率也会大 一点,磨损平衡的效果也会更好。其中,冷数据迁移条件的判断包括1.计算冷数据块逻辑块地址所映射到的物理块地址链(数据块和替代块)中各个 物理块已擦除次数的平均值Al ;2.计算该存储子区域中已擦除次数最大的空闲块的已擦除次数值Bl ;3.若Bl-Al >迁移阈值(TTH),则判定为可进行数据迁移。其中,迁移阈值(TTH)是通过预先设定的,或者根据某种工作负载类型在配置写 入阈值的情况下运行情况而经验得到的。迁移阈值(TTH)的确定原则当用户对于磨损平衡要求不高的时候,可将迁移阈值设定得比较高一点,那么数据块就比较难被判定为可迁移冷数据块,相反地,如果用户对 于磨损平衡要求比较高的时候,可将下限设定得比较低一点,那么数据块就比较容易被判 定为可迁移冷数据块。其中,存储子区域之间的静态磨损平衡算法包括1.出列磨损严重存储子区域队列的队首所在的存储子区域A2;2.找出所有存储子区域中磨损程度最轻的存储子区域B2;3.进行热数据的迁移;4.进行冷数据的迁移;其中,热数据的迁移包括a)将存储子区域A2中的热数据队列的队首逻辑块出列;b)找出存储子区域B2中的已擦除次数最少的空闲块;c)将步骤a得到的逻辑块数据写入到步骤b得到的物理块中,然后将所述队首逻 辑块映射的物理块链的所有物理块加入到步骤a的存储子区域A2的垃圾块队列中;冷数据的迁移包括a)将存储子区域B2中的冷数据队列的队首逻辑块出列;b)找出存储子区域A2中的已擦除次数最大的空闲块;c)将步骤a得到的逻辑块数据写入到步骤b得到的物理块中,然后将原先的逻辑块映射的物理块链的所有物理块加入到步骤a存储子区域B2的垃圾块队列中。本发明的磨损平衡方法适用于对闪存类型的存储设备的磨损平衡,对大容量的闪 存设备同样适用,可以不受可扩展性的问题影响,能够极大提高存储系统的读写性能和寿 命。


图1为本发明实施例存储系统的整体架构示意图;图2为本发明的实施例的数据块分配模块流程图;图3为本发明的实施例的磨损程度判定模块流程图;图4为本发明的实施例的数据热度判定模块流程图;图5为本发明的实施例的存储子区域内部静态磨损平衡执行模块流程图;图6为本发明的实施例的存储子区域之间静态磨损平衡执行模块流程具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清除、完 整的描述。本发明的一种闪存的磨损平衡方法,对闪存(如固态硬盘)采用分治的方法,具体 包括如下步骤将存储总区域分为N个存储子区域,对于存储子区域内部和存储子区域实施两级 动态/静态磨损平衡。系统维持一个已擦除次数统计表(Erase Count Table),该表记录该存储系统的 所有物理块的已擦除次数,若某物理块被擦除1次,则将该物理块对应的数据项加1。
系统通过已擦除次数统计表来查看每个物理块的磨损情况,根据磨损程度维持磨 损严重存储子区域队列,并且为每一个存储子区域维持热数据队列,冷数据队列,空闲块队 列,垃圾块队列。系统空闲块池是由整个存储系统的空闲块构成的,但是分为多个队列进行管理, 对于每一个存储子区域维持一个空闲块队列,整个存储系统的空闲块池由N个空闲块队列 组成,每个空闲块队列由该存储子区域的空闲块构成;冷数据块池是由整个存储系统的逻 辑冷数据块构成的,同样分为N个冷数据块队列,每个冷数据块队列由映射到该存储子区 域的逻辑冷数据块构成;热数据块池的构成和冷数据块池一样;垃圾块池的构成和空闲块 池的一样。这样,将存储总区域划分为N个存储子区域,将空闲块池划分为N个空闲块队列, 将冷数据块池划分为N个冷数据块队列,将将热数据块池划分为N个热数据块队列,将垃圾 块池划分为N个垃圾块队列。空闲块队列是有序队列,根据已擦除次数排序,队首为已擦除次数最小的物理空 闲块。冷数据块队列,热数据块队列和垃圾块队列都是无序的,先进先出的队列。如图1所示,不管动态磨损平衡还是静态磨损平衡首先都要进行存储子区域磨损 程度的判定和逻辑数据块热度的判定。然后根据判定结果在适当的时候采用两级动态/静 态磨损平衡。系统通过设定一个磨损计时器W-timer来确定判定存储子区域的磨损程度的时 机。在W-timer的时间段结束之后马上进行存储子区域磨损程度的统计和判定(该W-timer 的时间段可以根据需要设定)。统计存储子区域的磨损程度,并对每一个存储子区域进行 磨损程度的判定,并根据判定结果,进行相应的处理,如图3所示。其过程分为以下几个步 骤1.根据已擦除次数统计表所记录的物理块的已擦除次数的信息,计算出各个存储 子区域的磨损度因子,并根据所计算出的各个存储子区域的磨损度因子,计算出当前情况 下的磨损度上限。2.依次判定每个存储子区域的磨损度因子是否大于磨损度阈值,根据判定结果, 将对应的存储子区域加入到系统维护的磨损严重存储子区域队列中。磨损度因子的计算方法WEAR的值为属于该存储子区域的各物理块的已擦除次 数与可擦除次数之商的平均值;磨损度阈值WTH的计算方法WTH的值为所有存储子区域的磨损度因子WEAR的平 均值与磨损阈值标准之和;所有存储子区域的磨损度因子WEAR的平均值表示整个存储系统的所有存储子区 域的总体磨损程度;磨损阈值标准是可根据具体负载对磨损平衡的要求程度设定的一个 值。当磨损度因子WEAR超过磨损度因子的平均值的超过程度大于磨损阈值标准的时候,该 存储子区域为磨损严重的存储子区域。磨损阈值标准是判定磨损严重的标准。当用户工作负载对于磨损平衡要求不高的 时候,可将磨损阈值标准的值设定得较为高一点,那么存储子区域就比较难判定为磨损严 重存储子区域;相反的,如果用户工作负载对于磨损平衡要求比较高的时候,可将磨损阈值 标准的值设定得较为低一点,那么存储子区域就比较容易判定为磨损严重存储子区域。
在动态磨损平衡算法中的存储子区域之间的动态磨损平衡需要将令牌跳过磨损 严重存储子区域,如果一个存储子区域比较容易判定为磨损严重存储子区域,那么就说明 在进行物理块的分配的时候,就比较容易地将逻辑块映射到其他的磨损不严重的存储子区 域,取得比较好的磨损平衡效果。在静态磨损平衡算法中的存储子区域之间的静态磨损平衡需要将磨损严重存储 子区域的热数据迁移到磨损不严重的存储子区域,而将磨损不严重的存储子区域中的冷 数据迁移到磨损严重存储子区域,如果一个存储子区域比较容易判定为磨损严重存储子区 域,那么就说明存储子区域之间的冷热数据的迁移操作会执行得比较频繁,磨损平衡的效 果也会比较好。根据一般的磨损平衡效果,我们建议该磨损阈值标准值范围为0. 1到0. 3,一般 磨损平衡要求可设定为0. 2,如果对于磨损平衡要求不高的场合,磨损阈值标准值可设为 0. 3,对于磨损平衡要求较高的场合,磨损阈值标准值可设为0. 1。系统通过设定一个热度计时器T-timer来确定逻辑数据块热度判定的实际。在预 设的T-timer的时间段结束之后马上进行数据热度的统计和判定,该时间段可以根据实际 要求和具体情况任意设定。统计映射到该存储子区域的逻辑数据块的热度因子,并对每一 个存储子区域的每一个逻辑数据块进行热度判定,并根据判定结果,进行相应的处理。对于 单个存储子区域的数据热度的判定过程分为以下几个步骤,而对于所有的存储子区域的判 定过程只是依次对该过程的重复,如图4所示1.统计映射到存储子区域内的逻辑数据块的热度因子;热度因子TEMP的计算方法TEMP = T-timer时间段内分配给该逻辑块的物理块的数量,热度因子是衡量数据 热度的标准,表示该逻辑块对物理块的需求程度;2.依次对每一个逻辑数据块进行热度因子的判定。判定条件如下若[热度因子 >上限],则该逻辑数据块为热数据块;若[热度因子<下限],则该逻辑数据块为冷数据 块。3.对判定结果进行处理。将判定为热数据块的逻辑数据块以不重复的方式插入到 该存储子区域的热数据块队列的队尾;将判定为冷数据块的逻辑数据块以不重复的方式插 入到该存储子区域的冷数据块队列的队尾。以不重复方式指的是当该队列中已经有该逻辑 数据块的时候,就不插入队列。其中,上限的计算方式存储设备所有逻辑数据块热度因子的平均值+热度阈值 标准X存储设备所有逻辑数据块热度因子的平均值;另一种表示形式为上限=存储设备所有逻辑数据块热度因子的平均值X (1+热度阈值标准)。下限的计算方式存储设备所有逻辑数据块热度因子的平均值-热度阈值标准X 存储设备所有逻辑数据块热度因子的平均值;其另一种表示形式为下限=存储设备所有逻辑数据块热度因子的平均值X (1-热度阈值标准);存储设备的所有逻辑数据块热度因子的平均值表示的是在该T-timer的时间段 内分配给系统所有逻辑块的所有物理块的平均值,表示当前T-timer时间段内存储设备的 数据的平均热度。热度阈值标准是可以根据工作负载对于磨损平衡的要求程度具体设定的 一个值。
上下限确定原则当用户对于磨损平衡要求不高的时候,可将热度阈值标设定得 比较大一点,那么数据块就比较难被判定为冷/热数据块;相反地,如果用户对于磨损平衡 要求比较高的时候,可将热度阈值标准设定得比较小一点,那么数据块就比较容易被判定 为冷/热数据块。在静态磨损平衡算法中,在存储子区域之间的静态磨损平衡中要进行热数据的迁 移和冷数据的迁移。如果逻辑数据块越容易被判定为冷数据块或热数据块,说明这种冷数 据的迁移操作或热数据的迁移操作会执行得更加频繁,而磨损平衡的效果也会比较好。根据一般的磨损平衡效果,我们建议该热度阈值标准值范围为0. 4到1. 0,一般磨 损平衡要求可设定为0. 7,这种情况下,上限为1. 7X存储设备所有逻辑数据块热度因子 的平均值,下限为0. 3 X存储设备所有逻辑数据块热度因子的平均值。如果对于磨损平衡要求不高的场合,热度阈值标准值可设为1. 0,这种情况下,上 限为2. OX存储设备所有逻辑数据块热度因子的平均值,下限为0X存储设备所有逻辑 数据块热度因子的平均值。如果对于磨损平衡要求较高的场合,热度阈值标准值可设为0. 4。这种情况下,上 限为1. 4X存储设备所有逻辑数据块热度因子的平均值,下限为0. 6X存储设备所有逻 辑数据块热度因子的平均值。当有逻辑块需要写入或更新数据的时候执行动态磨损平衡算法,为该逻辑数据块 分配物理块。数据块分配模块包括两级动态分配,动态磨损平衡是通过动态分配来实现 的1.动态定位到存储子区域(存储子区域之间的动态磨损平衡)。如图2所示,首先判断该逻辑块以前是否写过,这样做的目的在于,如果该逻辑块 以前写过,则只要将逻辑块映射到该逻辑块最后一次更新的存储子区域即可,如果该逻辑 块以前没有写过,则需要新选择一个存储子区域进行映射。新选择一个存储子区域的过程 如下判定当前令牌所在节点的存储子区域是否为磨损严重存储子区域,若是,则将令牌传 递至环上下一个节点,一直到令牌所在节点的存储子区域不是磨损严重存储子区域,则将 逻辑块映射到该存储子区域,在映射完成之后,将令牌传递至下一个节点;如果该逻辑块以 前写过,则不动用令牌环上的令牌,将逻辑块映射到最后一次写操作确定的物理块所在的 存储子区域,并查看该存储子区域是否还有空闲块,如果没有剩余的空闲块,则按照新选择 存储子区域的方式使用轮转令牌环进行处理。2.动态定位到物理块(存储子区域内部的动态磨损平衡)在动态定位到存储子区域之后,从空闲块池中找出该存储子区域的空闲块队列, 并从该队列中找出已擦除次数最少的物理块,将该物理块分配给该逻辑数据块,建立从逻 辑块到物理块的映射关系。在系统空闲时执行存储子区域内部静态磨损平衡算法。如图5所示,当系统空闲时,系统扫描系统冷数据块池的从属于各个存储子区域 的冷数据块池队列,若冷数据队列不为空,则执行对该存储子区域的内部静态磨损平衡,若 执行完该存储子区域内部静态磨损平衡之后,系统仍空闲,则从系统扫描系统冷数据块池 开始重复执行这一操作。系统将存储子区域的冷数据块池队列中的冷数据迁移到该存储子 区域已擦除次数最大(即剩余寿命最短)的空闲块中,以此来停止该短寿命的物理块的进一步磨损,从而将磨损机会让给该存储子区域的其他寿命长的物理块,使存储子区域内部 磨损趋于平衡。对于单个存储子区域的内部磨损平衡包括以下几个步骤1.计算存储子区域的冷数据队列的队首冷数据块出列,并计算该冷数据块所映射 到物理块链中所有物理块的已擦除次数的平均值Al ;2.获得该存储子区域的空闲块队列中已擦除次数最大的空闲物理块的已擦除次 数Bl ;3.进行迁移条件的判定[A1-B1 >迁移阈值(TTH)],若判定条件成立,则说明可 以并且也需要进行迁移;若判定条件不成立,则说明该冷数据块已经存放在一个已擦除次 数大(即剩余寿命短)的物理块中,不需要并且也不可以进行迁移(因为极有可能是以前 进行冷数据迁移操作所产生的结果)。4.对判定结果的处理。当判定为可迁移的时候,将冷数据块的数据写入由步骤2 确定的空闲块中,而将原先存放冷数据块的物理块依次插入该存储子区域的垃圾块队列。对于迁移阈值(TTH)的确定可以遵循以下原则当用户对于磨损平衡要求不高 的时候,可将迁移阈值设定得比较高一点,那么数据块就比较难被判定为可迁移冷数据块, 相反地,如果用户对于磨损平衡要求比较高的时候,可将下限设定得比较低一点,那么数 据块就比较容易被判定为可迁移冷数据块。而就磨损平衡要求为一般程度而言,这个阈 值TTH可以设定为一个物理块(block)的可擦除次数的20%。如对于一个可擦出次数为 1,000,000次(理论值)的NAND-flash芯片而言,TTH值为200,000。当系统空闲时执行存储子区域之间静态磨损平衡算法。如图6所示,当系统空闲时,系统扫描磨损严重存储子区域队列,若队列不为空, 则表明当前情况下,存在磨损相对严重的存储子区域,则执行一次对于磨损严重存储子区 域队首的冷热数据交换,若交换完毕系统仍空闲,则从系统扫描磨损严重存储子区域队列 开始,重复这一过程。若队列为空,则表明当前情况下,系统所有存储子区域磨损大致平衡。 对于单次冷热数据交换包括以下几个步骤,而静态磨损平衡的执行模块也就是1.出列磨损严重存储子区域队列的队首存储子区域A2;2.找出当前情况下磨损程度最轻的存储子区域B2;3.进行热数据的迁移。热数据的迁移是将存储子区域A2中的所有热数据迁移到 存储子区域B2中,以此来减少A2中的热数据成分,减慢A2的进一步磨损,同时也加速B2 的磨损。每次都出列队首热数据块,进行一次热数据的迁移,直至队列空。一次热数据的迁 移过程如下首先将存储子区域A2中的热数据队列的队首逻辑热数据块出列;找出存储子 区域B2中的已擦除次数最少的空闲块;将逻辑热块数据写入到找出的B2中的已擦除次数 最少的空闲块中,然后将原先的逻辑块映射的物理块链的所有物理块加入到存储子区域A2 的垃圾块队列中;4.进行冷数据的迁移。冷数据的迁移是将存储子区域B2中的所有冷数据迁移到 存储子区域A2中,以此来增加A2中的冷数据成分,减慢A2的进一步磨损,同时也加速B2 的磨损。每次都出列队首冷数据块,进行一次冷数据的迁移,直至队列空。一次冷数据的迁 移过程如下首先将存储子区域B2中的冷数据队列的队首逻辑冷数据块出列;找出存储子 区域A2中的已擦除次数最大的空闲块;将逻辑冷块数据写入到找出的A2中的已擦除次数 最大的空闲块中,然后将原先的逻辑块映射的物理块链的所有物理块加入到存储子区域B2的垃圾块队列中。
权利要求
1.一种闪存的磨损平衡方法,包括如下步骤(1)将闪存存储区域分为多个存储子区域;(2)每间隔一定时间判定各存储子区域磨损程度,将磨损严重的存储子区域编号并插 入一磨损严重存储子区域队列中;(3)在逻辑块需要新分配物理块时,进行动态磨损平衡操作,实现对闪存的磨损平衡。
2.根据权利要求1所述的方法,其特征在于,所述的动态磨损平衡操作分为存储子区 域之间的动态磨损平衡步骤和存储子区域内部的动态磨损平衡步骤;其中,所述存储子区域之间的动态磨损平衡步骤实现从逻辑块到存储子区域的映射, 完成存储子区域之间动态磨损平衡,其采用轮转令牌环式的过程来实现,具体为(Al)如果待分配的逻辑块以前写过,则不动用令牌环上的令牌,将该逻辑块映射到最 后一次写操作确定的物理块所在的存储子区域;(A2)如果待分配的逻辑块以前没有写过,则判定当前令牌所在节点的存储子区域是否 为磨损严重存储子区域,若是,则将令牌传递至环上下一个节点,直至令牌所在节点的存储 子区域不是磨损严重存储子区域,将该逻辑块映射到令牌所在节点的存储子区域,并在映 射完成之后,将令牌传递至下一个节点;所述存储子区域内部的动态磨损平衡步骤具体为根据上述存储子区域之间的动态磨损平衡步骤所确定的存储子区域,将待分配的逻辑 块映射到该确定的存储子区域内部已擦除次数最小的空闲物理块。
3.根据权利要求1或2所述的方法,其特征在于,所述的磨损程度的判定具体过程为(1)计算出各存储子区域的磨损度因子,并根据所计算出的各存储子区域的磨损度因 子,计算出当前的磨损度阈值;(2)磨损度因子大于磨损度阈值的存储子区域即为磨损严重的存储子区域。
4.根据权利要求3所述的方法,其特征在于,所述存储子区域的磨损度因子WEAR等于 属于该存储子区域的各物理块的已擦除次数与可擦除次数之商的平均值,所述磨损度阈值 WTH等于所有存储子区域的磨损度因子WEAR取平均值后与磨损阈值标准之和。
5.根据权利要求1-4之一所述的方法,其特征在于,该方法还包括静态磨损平衡操作, 当闪存存储设备为空闲状态时,若所述磨损严重存储子区域队列不为空,则进行所述的静 态磨损平衡操作。
6.根据权利要求5所述的方法,其特征在于,在进行所述的静态磨损平衡操作前,还包 括对所述的逻辑数据块热度的判定,进而确定逻辑数据块为热数据块或冷数据块,其中,该 判定的具体过程为(6. 1)统计映射到存储子区域内的逻辑数据块的热度因子,其中,逻辑数据块的热度因 子指预定时间段内分配给该逻辑数据块的物理块的数量;(6. 2)依次对每一个逻辑数据块进行热度因子的判定,即若热度因子大于热度上限,则 该逻辑数据块为热数据块;若热度因子小于热度下限,则该逻辑数据块为冷数据块,并将判 定为热数据块的逻辑数据块以不重复的方式插入到该存储子区域的热数据块队列的队尾; 将判定为冷数据块的逻辑数据块以不重复的方式插入到该存储子区域的冷数据块队列的 队尾。
7.根据权利要求6所述的方法,其特征在于,所述的热度上限和热度下限通过如下公式确定热度上限=存储设备所有逻辑数据块热度因子的平均值X (1+热度阈值标准); 热度下限=存储设备所有逻辑数据块热度因子的平均值X (1-热度阈值标准)。
8.根据权利要求5-7之一所述的方法,其特征在于,所述的静态磨损平衡操作分为存 储子区域之间的静态磨损平衡步骤和存储子区域内部的静态磨损平衡步骤;其中,所述的存储子区域之间的静态磨损平衡步骤包括(Cl)出列磨损严重存储子区域队列的队首所在的存储子区域A2 ;(C2)找出所有存储子区域中磨损程度最轻的存储子区域B2 ;(C3)进行热数据的迁移,即将存储子区域A2中的所有热数据迁移到存储子区域B2中;(C4)进行冷数据的迁移,即将存储子区域B2中的所有冷数据迁移到存储子区域A2中;所述的存储子区域内部的静态磨损平衡步骤包括 (Dl)将存储子区域的冷数据块队列队首的逻辑冷数据块出列; (D2)进行冷数据迁移条件的判定,如果可进行数据迁移,则将冷数据写入到该存储子 区域已擦除次数最大的空闲块中,以此来停止该物理块的进一步磨损; 其中,所述冷数据迁移条件的判定具体为(I)计算冷数据块逻辑块地址所映射到的物理块地址链中各个物理块已擦除次数的平 均值Al ;(II)计算该存储子区域中已擦除次数最大的空闲块的已擦除次数值Bl; (II)若Bl-Al >迁移阈值(TTH),则判定为可进行数据迁移。
9.根据权利要求8所述的方法,其特征在于,所述步骤(O)中热数据的迁移具体过程为(C3. 1)将所述存储子区域A2中的热数据队列的队首逻辑块出列; (C3. 2)找出所述存储子区域B2中的已擦除次数最少的空闲块; (C3. 3)将步骤(C3. 1)得到的逻辑块数据写入到步骤(C3. 2)得到的物理块中,然后将 步骤(C3. 1)得到的逻辑块所映射的物理块链中所有物理块加入到步骤(C3. 1)的存储子区 域A2的垃圾块队列中;重复执行上述步骤(C3. 1)-(C3.3),直至(C3. 1)中的热数据队列为空。
10.根据权利要求8或9所述的方法,其特征在于,所述冷数据的迁移包括 (C4. 1)将所述存储子区域B2中的冷数据队列的队首逻辑块出列;(C4. 2)找出所述存储子区域A2中的已擦除次数最大的空闲块; (C4. 3)将步骤(C4. 1)得到的逻辑块数据写入到步骤(C4. 2)得到的物理块中,然后将 步骤(C4. 1)得到的逻辑块所映射的物理块链中所有物理块加入到步骤(C4. 1)存储子区域 B2的垃圾块队列中;重复执行上述步骤(C4. 1)_(C4.3),直至(C4. 1)中的冷数据队列为空。
全文摘要
本发明公开了一种闪存的磨损平衡方法,包括如下步骤(1)将闪存存储区域分为多个存储子区域;(2)每间隔一定时间判定各存储子区域磨损程度,将磨损严重的存储子区域编号并插入一磨损严重存储子区域队列中;(3)当逻辑块需要新分配物理块时,进行动态磨损平衡操作,实现对闪存的磨损平衡。本发明的磨损平衡方法适用于对闪存类型的存储设备的磨损平衡,不受可扩展性的问题,对大容量的闪存设备同样适用,可以极大提高存储系统的读写性能和寿命。
文档编号G06F12/02GK102081576SQ20111004893
公开日2011年6月1日 申请日期2011年3月1日 优先权日2011年3月1日
发明者冯丹, 刘景宁, 秦亦, 童薇, 胡洋, 项南 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1