CN102592678A - 基于动态窗口管理的磨损均衡方法及装置 - Google Patents
基于动态窗口管理的磨损均衡方法及装置 Download PDFInfo
- Publication number
- CN102592678A CN102592678A CN2011104560884A CN201110456088A CN102592678A CN 102592678 A CN102592678 A CN 102592678A CN 2011104560884 A CN2011104560884 A CN 2011104560884A CN 201110456088 A CN201110456088 A CN 201110456088A CN 102592678 A CN102592678 A CN 102592678A
- Authority
- CN
- China
- Prior art keywords
- bunch
- data
- cold
- district
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于动态窗口管理的磨损均衡方法及装置,该方法包括:步骤1,根据管理对象中BU的最大擦除次数max_wear和可擦除次数EC_MAX计算窗口最大允许偏离数T,T=f(life_remain),并且life_remain=EC_MAX-max_wear;步骤2,依据各BU相对最小擦除次数的偏离值进行分组,将管理对象中的BU分为0到T-1共T簇,具有相同擦除偏离值的BU位于同一簇内,以M值表示冷热数据的分界值,并且M初始值位于窗口中间;步骤3,M值随着写入的数据的属性而发生变化,当窗口的移动受限制于最低端时,M值将加1,以便有更多的空间来承载热数据,当窗口的移动受制于最高端时,M值将减1,以提供更多的空间来承载冷数据。
Description
技术领域:
本发明涉及固态硬盘存储技术领域,尤其涉及固态硬盘存储技术领域中的一种基于动态窗口管理的磨损均衡方法及装置。
背景技术
在固态硬盘领域,闪存被广泛地使用。闪存物理块的擦除次数是有限的,最新工艺的MLC典型擦写次数只有3,000-5,000次。在固态存储设备使用期间,由于写入数据序列的差异,存在冷热数据,其被更新的频繁差别很大。冷数据被更新的频率很低,因此所占用的物理块被擦的次数很低;而热数据所占用的物理数据块则相反,如果不做特殊的磨损均衡处理,热数据频繁使用将提前到达擦写寿命而出现坏块,此时,系统会因为坏块的增加而导致写放大的增加,进一步加剧固态硬盘寿命的缩短。
因此,如何设计有效的磨损均衡机制来平衡冷热数据的存储,是影响固态硬盘寿命的关键因素。关于磨损均衡算法主要有两种:一种是动态磨损均衡;另一种是静态磨损均衡。基于相对/绝对的物理块擦除次数,动态磨损均衡在分配空闲物理块时总是使用擦除次数最小的物理块写入新数据,在此情形下,存在一个局限情形,例如当某部分数据写入后,由于从来没有因为被复写而成为垃圾数据,则该类块一直被占用,没有机会增加擦除次数;而静态磨损均衡在出现前述情形时,定义该类写入后一直没有变动的数据为冷数据,根据不同的触发条件,动态进行冷数据的处理,将冷数据交换到擦除次数较大的物理块上。
现有技术的磨损均衡技术对擦除次数的存储空间以及冷数据的处理策略做出了一些改进,但对于物理块的擦写次数偏离约束以及冷数据动态处理的触发时机没有做出有效的改进。常规方法一般是周期性地检查各物理块的擦除次数,在检测到最大与最小的物理块擦除次数偏离某预定的阈值时,进行冷数据的处理操作。但是对于磨损均衡算法来说,片面地追求各物理块的擦除次数均衡,必然带来很多因冷数据处理而引发的无效写操作,对于固态硬盘来说,表现为系统的写放大增加,从而降低了硬盘的写寿命。
此外,常规的冷热数据处理方式对于各物理块擦除次数偏离的约束很大程度上取决于周期性检查的频率,过高的频率对于固态硬盘的整体性能影响较大,过低的频率则会使得物理块的擦除次数偏离度远远超出预期,因此不能对物理块的擦除次数偏离作出合理、有效的控制。
因此需要一种能有效的解决现有磨损均衡方法中存在的问题的改进的磨损均衡方法及装置。
发明内容
基于上述问题,本发明引入了一种基于动态窗口管理的磨损均衡方法,能够对物理块的擦除次数偏离作出合理、有效的控制;提供自我感知型的冷数据处理触发时机,在将磨损均分到全盘的同时,降低整体的写放大,能有效提高固态硬盘的寿命。
本发明一方面提供了一种基于动态窗口管理的磨损均衡方法,包括:
步骤1,根据管理对象中BU的最大擦除次数max_wear和可擦除次数EC_MAX计算窗口最大允许偏离数T,T=f(life_remain),并且life_remain=EC_MAX-max_wear;
步骤2,依据各BU相对最小擦除次数的偏离值进行分组,将管理对象中的BU分为0到T-1共T簇,具有相同擦除偏离值的BU位于同一簇内,以M值表示冷热数据的分界值,并且M初始值位于窗口中间;
步骤3,M值随着写入的数据的属性而发生变化,当窗口的移动受限制于最低端时,M值将加1,以便有更多的空间来承载热数据,当窗口的移动受制于最高端时,M值将减1,以提供更多的空间来承载冷数据。
在一个实施方式中,步骤3包括:当簇0上的BU内的热数据沉淀成冷数据,并且Hot区的可用空白块低于第一阈值TL时,将簇0上沉淀的冷数据写入到Cold区的空白块中,同时对Hot区执行垃圾回收,并将M的值加1。
所述将簇0上沉淀的冷数据写入到Cold区的空白块中,同时对Hot区执行垃圾回收的步骤包括:
步骤61,将簇0上沉淀下来的冷数据写入到Cold区内按序从簇M到簇T-1中第一个可用的空白块上;
步骤62,将簇0上处理完之后的BU擦除,其擦除次数加1,对应的BU进入到簇1,如果簇0上仍有待处理的BU,重复步骤61,如果簇0上已无待处理的BU,则进入到步骤63;
步骤63,更新各簇号,簇N更新为簇N-1,N为从1到T-1的整数。
所述磨损均衡方法进一步包括:检查Hot区的可用空白块是否回到第一阈值TL之上,如果没有则再次从步骤61开始执行,循环直到Hot区的可用空白块回到TL上。
在另一实施方式中,步骤3包括:当簇T-1上的BU内的冷数据转变为垃圾数据,并且Cold区的可用空白块低于第二阈值TH时,将簇0上的数据写入到Hot区的空白块中,同时对Hot/Cold区执行垃圾回收,并将M的值减1。
所述将簇0上的数据写入到Hot区的空白块中,同时对Hot/Cold区执行垃圾回收的步骤包括:
步骤81,将簇0上沉淀下来的冷数据写入到Hot区内按序从簇1到簇M-1中第一个可用的空白块上;
步骤82,将簇0上处理完之后的BU擦除,其擦除次数加1,对应的BU进入到簇1,如果簇0上仍有待处理的BU,重复步骤81,如果簇0上已无待处理的BU,则进入到步骤83;
步骤83,更新各簇号,簇N更新为簇N-1,N为从1到T-1的整数;
步骤84,将簇T-2上的垃圾块擦除变成空白块,相关的BU进入到新的簇T-1。
所述的磨损均衡方法进一步包括:
步骤91,更新系统最大擦除次数max_wear为max_wear+1;
步骤92,重新计算窗口大小T;
步骤93,代入新的窗口大小值T,检查Cold区的空白块是否回到第二阈值TH之上,如果没有则再次从步骤81开始执行,循环直到Cold区的空白块回到TH上。
本发明另一方面提供了一种基于动态窗口管理的磨损均衡装置,包括:
计算模块,用于根据管理对象中BU的最大擦除次数max_wear和可擦除次数EC_MAX计算窗口最大允许偏离数T,T=f(life_remain),并且life_remain=EC_MAX-max_wear;
分组模块,用于依据各BU相对最小擦除次数的偏离值将管理对象中的BU分为0到T-1共T簇,具有相同擦除偏离值的BU位于同一簇内,以M值表示冷热数据的分界值,并且M初始值位于窗口中间;
均衡模块,用于根据写入数据的属性控制窗口的移动,当窗口的移动受限制于最低端时,M值将加1,以便有更多的空间来承载热数据,当窗口的移动受制于最高端时,M值将减1,以提供更多的空间来承载冷数据。
其中所述均衡模块包括:
检测模块,用于检测各个簇上BU内的数据的属性;
比较模块,用于比较Hot区/Cold区的可用空白块与其各自的阈值;
与所述检测模块和比较模块连接的写入模块,用于在检测到簇0上的BU内的热数据沉淀成冷数据,并且Hot区的可用空白块低于第一阈值TL时将簇0上沉淀的冷数据写入到Cold区内按序从簇M到簇T-1中第一个可用的空白块上,以及在检测到簇T-1上的BU内的冷数据转变为垃圾数据,并且Cold区的可用空白块低于第二阈值TH时将簇0上的数据写入到Hot区从簇1到簇M-1中第一个可用的空白块中;以及
垃圾回收模块,用于对Hot区/Cold区执行垃圾回收。
在一个实施方式中,所述垃圾回收模块包括:
冷数据处理模块,用于将簇0上沉淀下来的冷数据写入到Cold区内按序从簇M到簇T-1中第一个可用的空白块上;
第一擦除模块,用于将簇0上处理完之后的BU擦除,对应的BU的擦除次数加1,并且所述对应的BU进入到簇1;
簇号更新模块,用于更新各簇号,簇N更新为簇N-1,N为从1到T-1的整数。
在另一实施方式中,所述垃圾回收模块包括:
数据处理模块,用于将簇0上的数据写入到Hot区内按序从簇1到簇M-1中第一个可用的空白块上;
第一擦除模块,用于将簇0上处理完之后的BU擦除,对应的BU的擦除次数加1,并且所述对应的BU进入到簇1;
簇号更新模块,用于更新各簇号,簇N更新为簇N-1,N为从1到T-1的整数;
第二擦除模块,用于将簇T-2上的垃圾块擦除变成空白块,相关的BU进入到新的簇T-1。
应理解对本发明的前面的概括性描述和下面的详细描述都是示例性和说明性的,意在提供对要求保护的本发明的进一步说明。
附图说明
图1是根据本发明实施方式的擦除次数最大允许偏离数T的线性关系示意图;
图2是根据本发明实施方式的擦除次数最大允许偏离数T的非线性关系示意图;
图3是根据本发明的实施方式对管理对象中各BU相对最小擦除次数的偏离值进行分组的示意图;
图4是根据本发明实施方式的主机端写操作示意图;
图5是根据本发明实施方式的Hot区剩余空白块低于阈值TL,且簇0上有BU由热数据变成冷数据的静态磨损均衡方法示意图;
图6是根据本发明实施方式的Hot区静态磨损均衡方法流程图;
图7是根据本发明实施方式的Cold区剩余空白块低于阈值TH,且簇T-1上垃圾块需要擦除时的静态磨损均衡方法示意图;
图8是根据本发明实施方式的Cold区静态磨损均衡方法流程图;
图9是根据本发明实施方式的磨损均衡装置结构图。
具体实施方式
为便于说明和理解,本发明中以目前常见的闪存单个逻辑单元(LUN)为管理对象,其内包含有4096个擦除单元-物理块(BU),每个BU可以被擦除5000次(EC_MAX),每个BU内包含256个编程单元-物理页(PU),每个PU可以被独立读写,但是在其所在的BU擦除后只能写1次。
物理块的状态可分为如下四种:坏块,出厂标识或者使用过程中产生的坏块,不能继续用于数据存储;空白块,擦除后没有被写入数据的物理块;数据块,包含有至少一个有效页数据的物理块;垃圾块,所有页都是无效数据的物理块。在这四种状态的物理块中,除了坏块外其他三种物理块均是磨损均衡所要操作的对象。
在内存单元中维护管理对象中物理块的最大擦除次数max_wear,并将该擦除次数记录在掉电非易失性存储设备中,以便掉电后恢复。有物理块被擦除则检查是否是簇T-1上的BU被擦除,如果是,则更新此max_wear,其他簇上的BU被擦除不影响最大擦除次数。
在任意时间点,定义管理对象内物理块擦除次数最大允许偏离数T满足如下关系:
life_remain=EC_MAX-max_wear [1]
T=f(life_remain) [2]
其中函数f(life_remain)可以是根据需要的任一符合要求的表达式。优选地可以采用但不局限于如下的实现形式:
1、线性关系,
T=life_remain*r% [3]
其中,r为可调系数,取值为1-99,优选地可为10,如图1中所示。
2、非线性关系,
T=EC_MAX*r%*cos(∏*max_wear/(2*EC_MAX)) [4]
其中,r为可调系数,取值为1-99,优选地可为10,随着最大擦除次数的增长,窗口T的大小的下降趋势变快,从而对擦写次数的约束逐步加强,如图2所示。
如图3所示,依据各BU相对最小擦除次数的偏离值进行分组,则可分为0到T-1共T组,具有相同擦除偏离值的位于同一组内,这里定义为簇,对应地存在以下情形:所有管理对象内的BU均位于其内的任意一个簇内;某些偏离值上可能没有对应的BU;在任意一个簇上都可能存在所管理的任意类型的BU(数据块、垃圾块、空白块、坏块)。
在图3中,擦除次数偏低的BU用来存放经常被更新的热数据;擦除次数偏高的BU用来存放很少被更新的冷数据。冷热数据的判断有很多方式,优选地,最近被复写次数较多的LBA(主机端SSD的最小可访问单元)内所携带的数据为热数据,其余的数据为冷数据。
冷热数据的分界值以M表示,初始时刻M位于窗口中间(M=(T+1)/2,T为奇数;M=T/2,T为偶数),随着写入的数据序列的属性M遵循如下的规则向左或向右偏移:当窗口的移动受限制于最低端时,M值将加1,这样将有更多的空间来承载热数据;当窗口的移动受制于最高端时,M值将减1,以提供更多的空间承载冷数据。
当主机端发起新的数据写操作时,如图4中所示,主机写入的数据经过冷热数据仲裁器后,分别写入到对应区域的空白物理块中。
假设一个SSD盘总共有X个LBA,在固态硬盘内存中维护Y个(Y远小于X,具体可根据内存大小选择,例如可选择Y=X*2%)LBA链,链上每个元素记录对应的LBA以及被复写的次数,其在链中的位置代表其被复写的时间先后顺序,链首的LBA写入时间最早、链尾的LBA写入时间最新。当主机端新写入一个LBA时,如果该LBA已经在LBA链中,则将该LBA写入次数加1,同时将该LBA移动到链尾,如果该LBA不在LBA链中,并且链中元素已满,则将链首元素更新成新写入的该LBA并移动到链尾,同时设置该LBA写入次数为1,如果该LBA不在LBA链中,并且链中元素不满,则设置该LBA写入次数为1,同时将该LBA添加到链尾。完成LBA插入链表后,冷热数据仲裁器根据每个LBA的写入计数是否高于预定阈值来判定写入到该LBA的数据,计数高于预定阈值则该LBA内写入的数据为热数据、计数低于预定阈值则该LBA内写入的数据为冷数据。
冷热数据仲裁器对于冷热数据的分离仅仅作用于主机端写入数据时。随着时间的推移,冷热数据仲裁器判定的热数据因为很久没有再被复写,将转化为冷数据,需要使用静态磨损均衡来将其上的有效数据搬迁到Cold Area上的空白物理块中。
冷热数据的转化是由其被复写更新的时机所推动的,而冷热数据处理的触发时机由窗口的移动来推动,在上述实施例中,位于低端簇0上的个别BU随着时间的积累,由于一直保存有有效数据无法被擦除,代表此BU内的数据在变冷;位于高端簇T-1上的部分BU因为数据被复写,变成无效数据,代表相关数据变成了垃圾数据。在写入新数据时,需要将新数据写入到空白物理页中。随着写入的数据量越来越多,某些BU内部分PU中先前写入的数据因为被复写变成无效,对于此类BU,因为剩余有效数据的存在,不能对其直接擦除。当系统中Hot Area或Cold Area中的空白块低于各自的预定阈值后,将引发一次垃圾回收操作,即搜索有效PU数据最少的BU,将搜索到的多个BU内的有效数据合并,然后擦除所述多个BU以释放出可用空白块,垃圾回收操作将增加所述多个BU的擦除次数。
如图5所示,对于HotArea的BU,预期是其能够很快被主机端再次复写,从而使得其内的大部分PU变成无效数据,并通过上述的垃圾回收,来保证Hot Area有足够可用的空白块来承接新写入的数据。但在某些情形下,经冷热数据仲裁器识别的热数据写入到Hot区后再没有被更新过,则其内所有PU均有效,不会被垃圾回收操作选择和合并,所以此类BU一直维持不被擦除,如图5中实施例所示,簇0上的BU,此时由热数据变成了冷数据,当Hot区的可用空白物理块低于第一阈值TL时(受限于簇0上的冷数据的沉淀,也就是窗口低端没有做移动所引起),需要将簇0上的数据处理到Cold区域的空白物理块中,同时对Hot区域执行如上所述的垃圾回收,最后将M的值加1,以提供更多的空白块给Hot区使用。
此时,如图5中实施例所示,当Hot区域的剩余空白块低于阈值TL,且簇0上有BU由热数据变成冷数据时,需要依次执行如图6中所示的静态磨损均衡方法:
步骤1,将簇0上沉淀下来的冷数据写入到Cold Area内某个簇上的空白块(按序从簇M到T-1,选择第一个可用的空白物理块)上;
步骤2,将簇0上处理完之后的BU擦除,其擦除次数加1,对应的BU进入到簇1,如果簇0上仍有待处理的BU,重复步骤1),如果簇0上已无待处理的BU,则进入到步骤3;
步骤3,更新各簇号,簇1更新为簇0,簇2更新为簇1,......,簇T-1更新为簇T-2;
步骤4,检查Hot区的空白块是否回到第一阈值TL之上,如果没有则再次从步骤1开始执行,循环直到Hot区的空白块回到TL上结束本次静态磨损均衡的处理。
当Cold区的可用空白块低于第二阈值TH时,如果垃圾块处于簇M到T-2上,则将垃圾块直接擦除并移动到高一级簇,直到可用空白块回到第二阈值TH之上。
当Cold区的可用空白块低于第二阈值TH时,如果是受限于簇T-1上BU内数据转变为垃圾数据,也就是窗口高端无法移动所引起,则需要将簇0上的数据处理到Hot区的空白物理块中,同时对Hot/Cold区域分别执行如上所述的垃圾回收,最后将M的值减1,以提供更多的空白块给Cold区使用。对于Cold区,例如图7中实施例所示的簇T-1上的BU,其内的PU的数据最近刚刚被主机复写过,经过垃圾回收后这些BU成为垃圾块,如果直接对其进行擦除的话,对应BU的擦除次数加1,将导致与簇0上的擦除次数偏离大于此时的窗口大小T。
此时,如图7所示,当Cold区的剩余空白块低于第二阈值TH,且簇T-1上因为主机端复写或者垃圾回收存在垃圾块时,在对这些垃圾块进行擦除前,需要依次执行如图8中所示的静态磨损均衡方法:
步骤1,将簇0上的数据写入到Hot Area中簇1到簇M-1上的第一个可用空白块上;
步骤2,将簇0上处理完之后的BU擦除,其擦除次数加1,对应的BU进入到簇1,如果簇0上仍有待处理的BU,重复步骤1,如果簇0上已无待处理的BU,则进入到步骤3;
步骤3,更新各簇号,簇1更新为簇0,簇2更新为簇1,......,簇T-1更新为簇T-2;
步骤4,将簇T-2上的垃圾块擦除变成空白块,相关的BU进入到新的簇T-1;
步骤5,更新系统最大擦除次数max_wear为max_wear+1;
步骤6,根据公式3或4重新计算窗口大小T;
步骤7,代入新的窗口大小值T,检查Cold区的空白块是否回到第二阈值TH之上,如果没有则再次从步骤1开始执行,循环直到Cold区的空白块回到TH上结束本次静态磨损均衡处理。
基于动态窗口管理的磨损均衡装置包括:
计算模块700,用于根据管理对象中BU的最大擦除次数max_wear和可擦除次数EC_MAX计算窗口最大允许偏离数T;
分组模块710,用于依据各BU相对最小擦除次数的偏离值将管理对象中的BU分为0到T-1共T簇,具有相同擦除偏离值的BU位于同一簇内,以M值表示冷热数据的分界值,并且M初始值位于窗口中间;
均衡模块720,用于根据写入数据的属性控制窗口的移动,当窗口的移动受限制于最低端时,M值将加1,以便有更多的空间来承载热数据,当窗口的移动受制于最高端时,M值将减1,以提供更多的空间来承载冷数据。
参考图9,均衡模块包括检测模块,用于检测各个簇上BU内的数据的属性;比较模块,用于比较Hot区/Cold区的可用空白块与其各自的阈值;与所述检测模块和比较模块连接的写入模块;以及垃圾回收模块,用于对Hot/Cold区执行垃圾回收。
其中,在检测到簇0上的BU内的热数据沉淀成冷数据,并且Hot区的可用空白块低于第一阈值TL时,写入模块将簇0上沉淀的冷数据写入到Cold区内按序从簇M到簇T-1中第一个可用的空白块上。在检测到簇T-1上的BU内的冷数据转变为垃圾数据,并且Cold区的可用空白块低于第二阈值TH时,写入模块将簇0上的数据写入到Hot区的空白块中。
在本发明的一个实施方式中,垃圾回收模块可包括:冷数据处理模块,用于将簇0上沉淀下来的冷数据写入到Cold区内按序从簇M到簇T-1中第一个可用的空白块上;第一擦除模块,用于将簇0上处理完之后的BU擦除,对应的BU的擦除次数加1,并且所述对应的BU进入到簇1;簇号更新模块,用于更新各簇号,簇N更新为簇N-1,N为从1到T-1的整数。
在本发明的另一个实施方式中,垃圾回收模块可包括:数据处理模块,用于将簇0上的数据写入到Hot区内按序从簇1到簇M-1中第一个可用的空白块上;第一擦除模块,用于将簇0上处理完之后的BU擦除,对应的BU的擦除次数加1,并且所述对应的BU进入到簇1;簇号更新模块,用于更新各簇号,簇N更新为簇N-1,N为从1到T-1的整数;以及第二擦除模块,用于将簇T-2上的垃圾块擦除变成空白块,相关的BU进入到新的簇T-1。
本方案通过引入动态窗口管理的磨损均衡方法,能够对于物理块的擦除次数偏离作出合理,有效的控制;提供自我感知型的冷热数据处理触发时机,在固态硬盘的不同生命周期中采用不同的擦除次数偏离控制窗口,在固态硬盘的生命周期早期提供一种宽松的控制窗口,对外提供极好的写入速度,而在固态硬盘的生命周期末期提供严格的控制窗口,延长固态硬盘的使用寿命,在将磨损均分到全盘的同时,降低整体的写放大,有效提高了固态硬盘的寿命。
Claims (17)
1.一种基于动态窗口管理的磨损均衡方法,包括:
步骤1,根据管理对象中BU的最大擦除次数max_wear和可擦除次数EC_MAX计算窗口最大允许偏离数T,T=f(life_remain),并且life_remain=EC_MAX-max_wear;
步骤2,依据各BU相对最小擦除次数的偏离值进行分组,将管理对象中的BU分为0到T-1共T簇,具有相同擦除偏离值的BU位于同一簇内,以M值表示冷热数据的分界值,并且M初始值位于窗口中间;
步骤3,M值随着写入的数据的属性而发生变化,当窗口的移动受限制于最低端时,M值将加1,以便有更多的空间来承载热数据,当窗口的移动受制于最高端时,M值将减1,以提供更多的空间来承载冷数据。
2.根据权利要求1所述的磨损均衡方法,其特征在于,
T=life_remain*r%,r取值范围为1-99。
3.根据权利要求1所述的磨损均衡方法,其特征在于,
T=EC_MAX*r%*cos(∏*max_wear/(2*EC_MAX)),r取值范围为1-99。
4.根据权利要求1-3中任一所述的磨损均衡方法,其特征在于,步骤3包括:
当簇0上的BU内的热数据沉淀成冷数据,并且Hot区的可用空白块低于第一阈值TL时,将簇0上沉淀的冷数据写入到Cold区的空白块中,同时对Hot区执行垃圾回收,并将M的值加1。
5.根据权利要求4所述的磨损均衡方法,其特征在于,所述将簇0上沉淀的冷数据写入到Cold区的空白块中,同时对Hot区执行垃圾回收的步骤包括:
步骤61,将簇0上沉淀下来的冷数据写入到Cold区内按序从簇M到簇T-1中第一个可用的空白块上;
步骤62,将簇0上处理完之后的BU擦除,其擦除次数加1,对应的BU进入到簇1,如果簇0上仍有待处理的BU,重复步骤61,如果簇0上已无待处理的BU,则进入到步骤63;
步骤63,更新各簇号,簇N更新为簇N-1,N为从1到T-1的整数。
6.根据权利要求5所述的磨损均衡方法,其特征在于,进一步包括:
检查Hot区的可用空白块是否回到第一阈值TL之上,如果没有则再次从步骤61开始执行,循环直到Hot区的可用空白块回到TL上。
7.根据权利要求1-3中任一所述的磨损均衡方法,其特征在于,步骤3包括:
当簇T-1上的BU内的冷数据转变为垃圾数据,并且Cold区的可用空白块低于第二阈值TH时,将簇0上的数据写入到Hot区的空白块中,同时对Hot/Cold区执行垃圾回收,并将M的值减1。
8.根据权利要求7所述的磨损均衡方法,其特征在于,所述将簇0上的数据写入到Hot区的空白块中,同时对Hot/Cold区执行垃圾回收的步骤包括:
步骤81,将簇0上沉淀下来的冷数据写入到Hot区内按序从簇1到簇M-1中第一个可用的空白块上;
步骤82,将簇0上处理完之后的BU擦除,其擦除次数加1,对应的BU进入到簇1,如果簇0上仍有待处理的BU,重复步骤81,如果簇0上已无待处理的BU,则进入到步骤83;
步骤83,更新各簇号,簇N更新为簇N-1,N为从1到T-1的整数;
步骤84,将簇T-2上的垃圾块擦除变成空白块,相关的BU进入到新的簇T-1。
9.根据权利要求8所述的磨损均衡方法,其特征在于,进一步包括:
步骤91,更新系统最大擦除次数max_wear为max_wear+1;
步骤92,重新计算窗口大小T;
步骤93,代入新的窗口大小值T,检查Cold区的空白块是否回到第二阈值TH之上,如果没有则再次从步骤81开始执行,循环直到Cold区的空白块回到TH上。
10.根据权利要求2或3所述的磨损均衡方法,其特征在于,r为10。
11.一种基于动态窗口管理的磨损均衡装置,包括:
计算模块,用于根据管理对象中BU的最大擦除次数max_wear和可擦除次数EC_MAX计算窗口最大允许偏离数T,T=f(life_remain),并且life_remain=EC_MAX-max_wear;
分组模块,用于依据各BU相对最小擦除次数的偏离值将管理对象中的BU分为0到T-1共T簇,具有相同擦除偏离值的BU位于同一簇内,以M值表示冷热数据的分界值,并且M初始值位于窗口中间;
均衡模块,用于根据写入数据的属性控制窗口的移动,当窗口的移动受限制于最低端时,M值将加1,以便有更多的空间来承载热数据,当窗口的移动受制于最高端时,M值将减1,以提供更多的空间来承载冷数据。
12.根据权利要求11所述的磨损均衡装置,其特征在于,
T=life_remain*r%,r取值范围为1-99。
13.根据权利要求11所述的磨损均衡装置,其特征在于,
T=EC_MAX*r%*cos(∏*max_wear/(2*EC_MAX)),r取值范围为1-99。
14.根据权利要求12或13所述的磨损均衡装置,其特征在于,r为10。
15.根据权利要求11所述的磨损均衡装置,其特征在于,所述均衡模块包括:
检测模块,用于检测各个簇上BU内的数据的属性;
比较模块,用于比较Hot区/Cold区的可用空白块与其各自的阈值;
与所述检测模块和比较模块连接的写入模块,用于在检测到簇0上的BU内的热数据沉淀成冷数据,并且Hot区的可用空白块低于第一阈值TL时将簇0上沉淀的冷数据写入到Cold区内按序从簇M到簇T-1中第一个可用的空白块上,以及在检测到簇T-1上的BU内的冷数据转变为垃圾数据,并且Cold区的可用空白块低于第二阈值TH时将簇0上的数据写入到Hot区从簇1到簇M-1中第一个可用的空白块中;以及
垃圾回收模块,用于对Hot区/Cold区执行垃圾回收。
16.根据权利要求15所述的磨损均衡装置,其特征在于,所述垃圾回收模块包括:
冷数据处理模块,用于将簇0上沉淀下来的冷数据写入到Cold区内按序从簇M到簇T-1中第一个可用的空白块上;
第一擦除模块,用于将簇0上处理完之后的BU擦除,对应的BU的擦除次数加1,并且所述对应的BU进入到簇1;
簇号更新模块,用于更新各簇号,簇N更新为簇N-1,N为从1到T-1的整数。
17.根据权利要求15所述的磨损均衡装置,其特征在于,所述垃圾回收模块包括:
数据处理模块,用于将簇0上的数据写入到Hot区内按序从簇1到簇M-1中第一个可用的空白块上;
第一擦除模块,用于将簇0上处理完之后的BU擦除,对应的BU的擦除次数加1,并且所述对应的BU进入到簇1;
簇号更新模块,用于更新各簇号,簇N更新为簇N-1,N为从1到T-1的整数;
第二擦除模块,用于将簇T-2上的垃圾块擦除变成空白块,相关的BU进入到新的簇T-1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110456088.4A CN102592678B (zh) | 2011-12-30 | 2011-12-30 | 基于动态窗口管理的磨损均衡方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110456088.4A CN102592678B (zh) | 2011-12-30 | 2011-12-30 | 基于动态窗口管理的磨损均衡方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102592678A true CN102592678A (zh) | 2012-07-18 |
CN102592678B CN102592678B (zh) | 2014-12-03 |
Family
ID=46481187
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110456088.4A Active CN102592678B (zh) | 2011-12-30 | 2011-12-30 | 基于动态窗口管理的磨损均衡方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102592678B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104102459A (zh) * | 2014-07-03 | 2014-10-15 | 优佰特电子科技(无锡)有限公司 | 一种闪存设备的数据处理方法及闪存设备 |
CN104932988A (zh) * | 2015-06-30 | 2015-09-23 | 北京汉柏科技有限公司 | 一种优化硬盘使用的方法和系统 |
CN109542354A (zh) * | 2018-11-28 | 2019-03-29 | 广东工业大学 | 一种基于擦除上限的磨损均衡方法、装置及设备 |
CN110175385A (zh) * | 2019-05-20 | 2019-08-27 | 山东大学 | 一种基于性能磨损均衡的非易失fpga布局优化方法和系统 |
CN111522512A (zh) * | 2020-04-22 | 2020-08-11 | 深圳忆联信息系统有限公司 | 优化的冷热数据分离方法、装置、计算机设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090198882A1 (en) * | 2008-02-05 | 2009-08-06 | Skymedi Corporation | Method of wear leveling for non-volatile memory and apparatus using the same |
TW200943058A (en) * | 2008-04-07 | 2009-10-16 | Skymedi Corp | Method of wear leveling for non-volatile memory |
CN102222046A (zh) * | 2011-06-09 | 2011-10-19 | 清华大学 | 一种磨损均衡方法及装置 |
CN102289412A (zh) * | 2011-09-07 | 2011-12-21 | 上海交通大学 | 固态硬盘的静态磨损均衡方法及系统 |
-
2011
- 2011-12-30 CN CN201110456088.4A patent/CN102592678B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090198882A1 (en) * | 2008-02-05 | 2009-08-06 | Skymedi Corporation | Method of wear leveling for non-volatile memory and apparatus using the same |
TW200943058A (en) * | 2008-04-07 | 2009-10-16 | Skymedi Corp | Method of wear leveling for non-volatile memory |
CN102222046A (zh) * | 2011-06-09 | 2011-10-19 | 清华大学 | 一种磨损均衡方法及装置 |
CN102289412A (zh) * | 2011-09-07 | 2011-12-21 | 上海交通大学 | 固态硬盘的静态磨损均衡方法及系统 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104102459A (zh) * | 2014-07-03 | 2014-10-15 | 优佰特电子科技(无锡)有限公司 | 一种闪存设备的数据处理方法及闪存设备 |
CN104932988A (zh) * | 2015-06-30 | 2015-09-23 | 北京汉柏科技有限公司 | 一种优化硬盘使用的方法和系统 |
CN109542354A (zh) * | 2018-11-28 | 2019-03-29 | 广东工业大学 | 一种基于擦除上限的磨损均衡方法、装置及设备 |
CN110175385A (zh) * | 2019-05-20 | 2019-08-27 | 山东大学 | 一种基于性能磨损均衡的非易失fpga布局优化方法和系统 |
CN111522512A (zh) * | 2020-04-22 | 2020-08-11 | 深圳忆联信息系统有限公司 | 优化的冷热数据分离方法、装置、计算机设备及存储介质 |
CN111522512B (zh) * | 2020-04-22 | 2023-08-08 | 深圳忆联信息系统有限公司 | 优化的冷热数据分离方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102592678B (zh) | 2014-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103150258B (zh) | 一种固态存储系统的写入、读取及垃圾收集方法 | |
CN1900919B (zh) | 包括多个块的闪速存储器 | |
CN102508788B (zh) | Ssd及ssd垃圾回收方法和装置 | |
CN101169751B (zh) | 具有闪存设备的系统及其数据恢复方法 | |
CN100541455C (zh) | 使用请求调页技术的系统中减少页替换时间的方法和设备 | |
US8819367B1 (en) | Accelerated translation power recovery | |
CN100524249C (zh) | 使用非易失性存储器作为高速缓存器的存储设备及其方法 | |
TWI446345B (zh) | 用來進行區塊管理之方法以及記憶裝置及控制器 | |
CN103577339A (zh) | 一种数据存储方法及系统 | |
CN105493051A (zh) | 自适应高速缓冲存储器控制器 | |
CN102592678B (zh) | 基于动态窗口管理的磨损均衡方法及装置 | |
CN105242871A (zh) | 一种数据写入方法及装置 | |
KR20090017238A (ko) | 반도체 드라이브, 그것의 데이터 저장 방법, 그리고 그것을포함한 컴퓨팅 시스템 | |
CN102646069A (zh) | 一种延长固态盘使用寿命的方法 | |
CN101925884A (zh) | 增加存储器的备用空间以延长存储器的寿命 | |
CN103246696A (zh) | 高并发数据库的访问方法及应用于多服务器系统的方法 | |
US8225060B2 (en) | Data de-duplication by predicting the locations of sub-blocks within the repository | |
CN103412803A (zh) | 数据恢复的方法及装置 | |
CN106484761A (zh) | 用于改进储存日志的方法和系统 | |
CN102841850A (zh) | 减小固态硬盘写放大的方法及系统 | |
CN108121670B (zh) | 一种减少固态硬盘元数据回刷频率的映射方法 | |
US20210374035A1 (en) | Management of event log information of a memory sub-system | |
CN103019887A (zh) | 数据备份方法及装置 | |
Jin et al. | Optimizing B+-tree for hybrid storage systems | |
KR20150004949A (ko) | 플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |