一种固态硬盘的均衡方法和固态硬盘转让专利

申请号 : CN200810180172.6

文献号 : CN101441599B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 柯乔

申请人 : 成都市华为赛门铁克科技有限公司

摘要 :

本发明实施例公开了一种固态硬盘SSD的均衡方法和装置,其中,该方法包括:将SSD的存储区分为一个以上的组,所述一个以上的组中的每个组包含多于一个存储块;记录每组中每个存储块的擦写次数;根据每组的总擦写次数的数值和每组中的空白块数量,从每组中获取空白的存储块,每组的总擦写次数的数值为每组中的各存储块的擦写次数之和;将数据存储到所述获取的空白的存储块。该技术方案将SSD所有的存储块分为多个组,根据各组的总擦写次数和每组中的空白块数目,从每组中获取空白块,当有新数据要存储时,SSD将数据直接存储到获取的空白块上,提高了数据的写入速度,提高了该SSD的工作效率。

权利要求 :

1.一种固态硬盘SSD的均衡方法,其特征在于,包括:将SSD的存储区分为一个以上的组,所述一个以上的组中的每个组包含多于一个存储块;

记录每组中每个存储块的擦写次数;

根据每组的总擦写次数的数值和每组中的空白块数量,从每组中获取空白的存储块,每组的总擦写次数的数值为每组中的各存储块的擦写次数之和;

将数据存储到所述获取的空白的存储块;

其中,所述根据每组的总擦写次数的数值和每组中空白块的数量,从每组中获取空白的存储块,具体包括:统计每组的总擦写次数;

判断每组的总擦写次数是否都大于预设的最小阀值THmin,且小于预设的最大阀值THmax;

如果是,判断每组中是否至少有数值m个空白块,从判断结果为是的组中获取数值m个空白块;

当所述判断每组的总擦写次数是否都大于预设的最小阀值THmin,且小于预设的最大阀值THmax的判断结果为否定时,从总擦写次数小于等于预设的最小阀值THmin和至少包含p个空白块的组中,获取数值p个空白块,以及,从总擦写次数大于预设的最小阀值THmin,小于预设的最大阀值THmax和至少包含数值N个空白块的组中,获取N个空白块,N与该组的总擦写次数之间具有线性关系。

2.根据权利要求1所述的方法,其特征在于,所述将数据存储到所述获取的空白的存储块之后,所述方法还包括:判断是否有一组存储块中的数据已经存储满;如果是,

统计所述SSD中每组的总擦写次数;

根据总擦写次数多少的顺序,将排在前S位的组中的数据与排在后S位的组中的数据进行互换。

3.根据权利要求1所述的方法,其特征在于,所述将数据存储到所述获取的空白的存储块之后,所述方法还包括:判断是否有一组存储块中的数据已经存储满,如果是,根据存储数据已满的组中每个存储块中记录的擦写次数的多少,对所述存储数据已满的组中的存储块排序;

将排在前N位的存储块上的数据与排在后N位的存储块上的数据进行互换。

4.根据权利要求3所述的方法,其特征在于,所述将排在前N位的存储块上的数据与排在后N位的存储块上的数据进行互换之后,所述方法还包括:擦除存储数据已满的组中的无效数据;或者,

擦除所述SSD中各组中无效数据。

5.根据权利要求4所述的方法,其特征在于,所述擦除所述SSD中各组中无效数据之后,所述方法还包括:统计所述SSD中各组的总擦写次数;

根据总擦写次数多少的顺序,将排在前S位的组中的数据与排在后S位的组中的数据进行互换。

6.根据权利要求5所述的方法,其特征在于,所述统计所述SSD中各组的总擦写次数之后,所述方法还包括:判断是否有一组的总擦写次数大于或者等于预设的阀值TH,如果是,执行所述根据总擦写次数多少的顺序,将排在前S位的组中的数据与排在后S位的组中的数据进行互换。

7.根据权利要求5或者6所述的方法,其特征在于,所述将排在前S位的组中的数据与排在后S位的组中的数据进行互换,具体包括:判断要进行数据互换的组是否有空白块,如果是,将所述要进行数据互换的组中数据存储到目的组的空白块中。

8.根据权利要求7所述的方法,其特征在于,所述方法还包括:判断所述要进行数据互换的组中数据是否全部存储到目的组的空白块中;

如果否,将所述要进行数据互换的组中存储块的擦写次数为大于等于数值F的存储块上的数据与所述目的组中存储块的擦写次数为小于等于数值G的存储块上的数据进行互换;将所述要进行数据互换的组中存储块的擦写次数为小于等于数值F的存储块上的数据与所述目的组中存储块的擦写次数为大于等于数值G的存储块上的数据进行互换。

9.一种固态硬盘SSD,其特征在于,包括:

分组单元,用于将存储区分为一个以上的组,所述一个以上的组中的每个组包含多于一个存储块;

记录单元,用于记录每组中每个存储块的擦写次数;

第五判断单元,用于判断每组的总擦写次数是否都大于预设的最小阀值THmin,且小于预设的最大阀值THmax,将判断结果发送给获取空白块单元;

获取空白块单元,用于当判断出每组的总擦写次数都大于预设的最小阀值THmin,且小于预设的最大阀值THmax,且判断出组中至少有数值m个空白块,从所述组中获取数值m个空白块;当所述判断每组的总擦写次数是否都大于预设的最小阀值THmin,且小于预设的最大阀值THmax的判断结果为否定时,从总擦写次数小于等于预设的最小阀值THmin和至少包含p个空白块的组中,获取数值p个空白块,以及,从总擦写次数大于预设的最小阀值THmin,小于预设的最大阀值THmax和至少包含数值N个空白块的组中,获取N个空白块,N与该组的总擦写次数之间具有线性关系;每组的总擦写次数的数值为每组中的各存储块的擦写次数之和;

存储单元,用于将数据存储到所述获取的空白的存储块。

10.根据权利要求9所述的固态硬盘SSD,其特征在于,所述SSD还包括:第一判断单元,用于判断是否有一组存储块中的数据已经存储满;

排序单元,用于当所述第一判断单元中判断结果为是时,根据存储数据已满的组中每个存储块中记录的擦写次数的多少,对所述存储数据已满的组中的存储块排序;

组内互换单元,用于将排在前N位的存储块上的数据与排在后N位的存储块上的数据进行互换。

11.根据权利要求9或10所述的SSD,其特征在于,所述SSD还包括:擦除单元,用于擦除存储数据已满的组中的无效数据,或者擦除所述SSD中各组中无效数据。

12.根据权利要求11所述的SSD,其特征在于,所述SSD还包括:统计单元,用于统计所述SSD中各组的总擦写次数;

组间互换单元,用于根据总擦写次数多少的顺序,将排在前S位的组中的数据与排在后S位的组中的数据进行互换。

13.根据权利要求12所述的SSD,其特征在于,所述SSD还包括:第二判断单元,用于判断是否有一组的总擦写次数大于或者等于预设的阀值TH,将判断为是的结果发送给所述组间互换单元。

14.根据权利要求13所述的SSD,其特征在于,所述SSD还包括:第七判断单元,用于当所述第二判断单元中判断结果为是时,判断要进行数据互换的组是否有空白块,将判断结果发送给所述组间互换单元;

所述组间互换单元,用于当所述第七判断单元中判断结果为是时,将所述要进行数据互换的组中数据存储到目的组的空白块中。

15.根据权利要求14所述的SSD,其特征在于,所述SSD还包括:第九判断单元,用于判断所述要进行数据互换的组中数据是否全部存储到目的组的空白块中,将判断结果发送给所述组间互换单元;

所述组间互换单元,用于当所述第九判断单元中判断结果为否时,将所述要进行数据互换的组中存储块的擦写次数为大于等于数值F的存储块上的数据与所述目的组中存储块的擦写次数为小于等于数值G的存储块上的数据进行互换;将所述要进行数据互换的组中存储块的擦写次数为小于等于数值F的存储块上的数据与所述目的组中存储块的擦写次数为大于等于数值G的存储块上的数据进行互换。

16.根据权利要求9所述的SSD,其特征在于,所述SSD还包括:第一判断单元,用于判断是否有一组存储块中的数据已经存储满;

第一统计单元,用于当所述第一判断单元中的判断结果为是时,统计所述SSD中每组的总擦写次数;

第一组间互换单元,用于根据总擦写次数多少的顺序,将排在前S位的组中的数据与排在后S位的组中的数据进行互换。

说明书 :

一种固态硬盘的均衡方法和固态硬盘

技术领域

[0001] 本发明涉及计算机技术领域,具体涉及一种固态硬盘的均衡方法和固态硬盘。

背景技术

[0002] 固态硬盘(SSD,Solid State Disk)是由控制单元和存储单元组成。固态硬盘根据其存储单元的介质不同分为采用闪存Flash芯片构成的SSD,和由SDRAM作为存储介质的SSD。其中,由Flash芯片构成的SSD因为内部没有机械转动结构,所以由Flash芯片作为存储介质的SSD具有抗震能力强,电源开销小等优势,广泛应用于军事、车载,工控,视屏监控,网络终端、电力、医疗、或航空等领域中。
[0003] 由Flash芯片作为存储介质的SSD还可以分为单层式存储(SLC,SingleLevel Cell)和多层式存储(MLC,Multi level Cell),这两种SSD都存在擦写寿命问题,SLC的SSD可以擦写大约10万次,MLC的SSD大约可以擦写1万次。如何将数据均匀的写入每个可擦写的存储块,使得SSD中每个存储块的擦写次数尽可能的相似,是延长SSD使用寿命的关键技术。损耗均衡技术(Weal-Leving)用映射的方法,把数据写入擦写次数最少的存储块上,使得SSD上各存储块的擦写次数相似,达到延长Flash芯片作为存储介质的SSD的使用寿命的目的。现有技术中,损耗均衡技术主要分为静态均衡技术和动态均衡技术。
[0004] 其中,静态均衡技术在有新数据到来时,SSD将其存储块中擦写次数较少的存储块上的数据搬移到其它的数据块上,将新到来的数据写入该擦写次数较少的存储块上;或者,由于擦写次数较多的数据块上的数据可能会经常被擦写,因此,将擦写次数较多的存储块上的数据搬移到擦写次数较少的存储块上,将擦写次数较少的存储块上数据搬移到擦写次数较多的存储块上,达到均衡擦写次数,延长SSD使用寿命的目的。但是,采用静态均衡是在每次新数据写入的时候才进行的,严重影响了写入数据的速度,降低了SSD的效率。
[0005] 动态均衡技术典型的方案是对SSD中的每个存储块进行计数,根据对每个存储块的计数的多少对存储块进行排序,当有新数据要写入时,SSD根据擦写次数最少的存储块的当前情况,选择写入数据的具体方法。如果该擦写次数最少的存储块中存储有有效数据,将该有效数据搬移到其它没有数据的数据块中,将新数据写入;如果该擦写次数最少的存储块中是无效数据,将无效数据擦除,将新数据写入;如果该擦写次数最少的存储块中没有数据,则写入新数据。动态均衡技术在写操作到来时,当擦写次数最少的存储块上有数据时,还要将擦写次数最少的存储块上数据进行搬移或者擦除,影响了写入速度。

发明内容

[0006] 本发明实施例提供一种固态硬盘的均衡方法和装置,既可以高速存储数据,又可以延长SSD使用寿命。
[0007] 本发明实施例提供了一种固态硬盘SSD的均衡方法,包括:
[0008] 将SSD的存储区分为一个以上的组,所述一个以上的组中的每个组包含多于一个存储块;
[0009] 记录每组中每个存储块的擦写次数;
[0010] 根据每组的总擦写次数的数值和每组中的空白块数量,从每组中获取空白的存储块,每组的总擦写次数的数值为每组中的各存储块的擦写次数之和;
[0011] 将数据存储到所述获取的空白的存储块。
[0012] 本发明实施例还提供了一种固态硬盘SSD,包括:
[0013] 分组单元,用于将存储区分为一个以上的组,所述一个以上的组中的每个组包含多于一个存储块;
[0014] 记录单元,用于记录每组中每个存储块的擦写次数;
[0015] 获取空白块单元,用于根据每组的总擦写次数的数值,从每组中获取空白的存储块,每组的总擦写次数的数值为每组中的各存储块的擦写次数之和;
[0016] 存储单元,用于将数据存储到所述获取的空白的存储块。
[0017] 本发明实施例采用将SSD所有的存储块分为多个组,根据各组的总擦写次数和每组中的空白块数目,从每组中获取空白块,当有新数据要存储时,SSD将数据直接存储到获取的空白块上,提高了数据的写入速度,提高了该SSD的工作效率。

附图说明

[0018] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0019] 图1是本发明实施例一提供的一种固态硬盘的均衡方法的方法流程简图;
[0020] 图2是本发明实施例一提供的一种固态硬盘的均衡方法的方法流程简图;
[0021] 图3是本发明实施例一中获取空白块的具体操作的流程简图;
[0022] 图4是本发明实施例一中各组提供空白块的曲线图;
[0023] 图5是本发明实施例一中SSD维护一条空白块队列的逻辑示意图;
[0024] 图6是本发明实施例一中SSD中各组出空白块的逻辑示意图;
[0025] 图7是本发明实施例二提供的一种固态硬盘的均衡方法的方法流程简图;
[0026] 图8是本发明实施例三提供的一种固态硬盘逻辑组成图;
[0027] 图9是本发明实施例四提供的一种固态硬盘逻辑组成图。

具体实施方式

[0028] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0029] 实施例一
[0030] 本实施例提供了一种固态硬盘的均衡方法,参见图1所示,该方法包括:
[0031] 步骤1:将SSD的存储区分为一个以上的组,所述一个以上的组中的每个组包含多于一个存储块;
[0032] 步骤2:记录每组中每个存储块的擦写次数;
[0033] 步骤3:根据每组的总擦写次数的数值和每组中的空白块数量,从每组中获取空白的存储块,每组的总擦写次数的数值为每组中的各存储块的擦写次数之和;
[0034] 步骤4:将数据存储到所述获取的空白的存储块。
[0035] 通过以上对步骤1至步骤4的说明,将SSD所有的存储块分为多个组,根据各组的总擦写次数和每组中的空白块数目,从每组中获取空白块,当有新数据要存储时,SSD将数据直接存储到获取的空白块上,提高了数据的写入速度,提高了该SSD的工作效率。
[0036] 实施例二
[0037] 本实施例提供了一种固态硬盘的均衡方法,参见图2所示,该方法包括:
[0038] 步骤A1:将存储介质为Flash的SSD的存储区分组;
[0039] 其中,步骤A1中的存储介质为Flash的SSD中的存储单元是Flash芯片,将Flash芯片上可用存储区分组,具体分组可以是将Flash芯片上的存储区分为B组,每组有A个块。其中,块可以是该Flash芯片上的最小可擦除单位,通常每个块有64个页组成,该分组方式与现有技术相似。
[0040] 步骤A2:在每个组的每个块中记录该块的擦写次数;
[0041] 其中,在步骤A2中记录该块的擦写次数的区域可以是该块中的冗余区。需要说明的是,在SSD中存储数据的最小单位是存储块(即Block),在每个存储块上定义有冗余区,可以在冗余区记录每个存储块的擦写次数。
[0042] 步骤A3:根据各组中的总擦写次数的数值和各组中的空白块的数量,从各组中获取空白块;
[0043] 其中,需要理解的是,本发明实施例中所说到的空白块是指没有数据的存储块。步骤A3中根据各组中的总擦写次数的数值,从各组中获取空白的存储块的方法,参见图3所示,可以包括:
[0044] 步骤Q1:统计SSD中每组的总擦写次数;
[0045] 其中,SSD中每组的总擦写次数是指每组中的每个存储块的擦写次数的和,每组中的每个存储块是SSD中最小的存储单位。
[0046] 步骤Q2:判断每组的总擦写次数C是否都是在预设的最小阀值THmin与预设的最大阀值THmax之间,即THmin
[0047] 步骤Q3:判断每组中是否至少有数值m个空白块,如果是,从每组中各获取数值m个空白块,如果有部分组满足至少有数值m个空白块,则从可以提供m个空白块的组中,获取数值m个空白块,组中少有m个空白块的组,则不提供空白块;
[0048] 步骤Q4:判断总擦写次数C小于或者等于THmin的组中,是否至少有数值p个空白块,如果是,从至少有数值p个空白块的组中获取数值p个空白块,如果否,则组中不足p个空白块的组不提供空白块;
[0049] 其中,步骤Q3中数值的m与步骤Q4中数值p可以是相同的数值,也可以是不同数值,根据具体情况而定。m和p都为大于零的整数。
[0050] 步骤Q5:判断总擦写次数C在预设的最小阀值THmin与预设的最大阀值THmax之间的组中,即THmin
[0051] 其中,步骤Q5中线性获取空白块的方法可以具体参照公式:N=m{(c-THmax)/(THmax-THmin)},采用该公式可以在总擦写次数在预设的最小阀值THmin与预设的最大阀值THmax之间的组中,获取空白块,由于该公式表示的是一个减函数,随着每组的总擦写数的不断增大,每组获取的空白块的数量将逐渐减少。
[0052] 还需要说明的是:从总擦写次数C大于或者等于预设的阀值THmax的组中,不获取空白块,也就是说擦写次数C大于或者等于预设的阀值THmax的组不提供空白块。
[0053] 根据以上说明,如果步骤Q2中判断每组的总擦写次数C是否都是在预设的最小阀值THmin与预设的最大阀值THmax之间的判断结果为否定,执行步骤Q4到步骤Q5,则SSD从各组中获取空白块的个数为可以是图4所示,该图显示出了每组的总擦写次数与该组的出空白块的个数的关系。如图4所示,当一组存储块的总擦写次数小于THmin时,该组出空白块的数量可以是数值p个空白块,如图4中横线所示;如果一组存储块的总擦写次数C符合THmin
[0054] 从以上步骤A3中SSD根据各组中的总擦写次数的数值,从各组中获取空白块,相对于SSD在维持一条空白队列,在没有写操作到来的空闲时刻,从各组中按照一定要求获取空白块,从各组获取的空白块的要求可以是以上步骤Q1至步骤Q4中的要求。需要理解的是,事实上,该空白队列是逻辑上的空白队列,该空白队列中的空白块的位置不变,仍然在所属的各组中,维护该空白队列相当于维护SSD中空白块的地址的列表。参见图5所示,假设SSD中有N组存储区,从N组中获取空白块,维护一条空白块队列,其中,有线条的方框表示写有数据的存储块。参见图6所示,为SSD根据步骤Q1至步骤Q5所述的获取空白块的方法,从各组中获取空白块,组1的总擦写次数大于或者等于预设的阀值THmax,因此,该组不提供空白块。组2的总擦写次数在预设的最小阀值THmin与预设的最大阀值THmax之间,因此,组2线性提供空白块,提供空白块的数值根据公式:N=m{(c-THmax)/(THmax-THmin)}得出。组n的总擦写次数小于或者等于预设的最小阀值THmin,所以,该组出m块空白块,此处m等于4。
[0055] 步骤A4:将数据写入步骤A3中获取的空白块中。
[0056] 步骤A5:判断是否有一组存储区中的数据已存储满,如果是,进入步骤A6;
[0057] 步骤A6:根据存储数据已满的组中每块中记录的该块擦写次数的多少,对该组中的块进行排序;
[0058] 步骤A7:将步骤A6中擦写次数多的块中的数据与擦写次数少的块中的数据进行互换,其中,需要理解互换的意思是:将擦写次数多的块中的数据搬移到擦写次数少的块中,将擦写次数少的块中的数据搬移到擦写次数多的块中的数据中,该文件中所有关于互换的理解都应按照该解释理解;
[0059] 其中,步骤A6至步骤A7实现了存储区的组间均衡,即利用了静态均衡技术将该组内擦写次数多的块上的数据与该组内擦写次数少的块上的数据进行互换,实现组内均衡,然后将该组中的无效数据擦除,使得该组可以提供出空白的存储块。
[0060] 以上步骤A1至步骤A7的说明,实现了在SSD中将动态均衡技术与静态均衡技术结合起来,达到对存储区中每个块的擦写次数尽量相似,延长了SSD的使用寿命,同时,对SSD采用的静态均衡技术对存储块的操作,是在写操作到来之前就已经完成了,数据搬移过程不会影响写入新数据的速度,提高了对数据的处理速度。
[0061] 事实上,不仅可以在组内采用静态均衡技术,还可以在组间采用静态均衡技术,其原理是相似的,都是为了使该SSD中的存储块上的擦写次数尽量相似。因此,本发明实施例提供的方法还可以包括以下步骤:
[0062] 步骤A8:擦除SSD中其余各组中的无效数据;
[0063] 步骤A9:统计该SSD中每一组的总擦写次数;
[0064] 其中,该SSD中每一组的总擦写次数为该组中每一块的擦写次数之和,具体是SSD获取一组中每一块中的冗余区中记录的擦写次数,将该组中每一块的擦写次数相加,以此类推,得到SSD中每一组的总擦写次数。
[0065] 步骤A10:将总擦写次数最少的组中的数据与总擦写次数最多的组中的数据进行互换;
[0066] 其中,需要说明的是,步骤A10可以包括:判断要进行数据互换的组是否有空白块,如果是,将所述要进行数据互换的组中数据存储到目的组的空白块中。
[0067] 由于,进行组间均衡的两个组中具有的空白块不能为互换的数据提供足够的存储空间,因此,进行组间均衡的方法还可以包括:
[0068] 判断所述要进行数据互换的组中数据是否全部存储到目的组的空白块中;
[0069] 如果否,将所述要进行数据互换的组中存储块的擦写次数为大于数值F的存储块上的数据与所述目的组中存储块的擦写次数为小于数值G的存储块上的数据进行互换;将所述要进行数据互换的组中存储块的擦写次数为小于等于F的存储块上的数据与所述目的组中存储块的擦写次数为大于等于G的存储块上的数据进行互换
[0070] 其中,为了方便说明,假设总擦写次数最多的组为F组,总擦写次数最少的组为Y组,步骤A10是将F组中数据与Y组中的数据进行互换。互换的方法可以有不同,可以是没有任何要求的互换F组与Y组中的数据。但是,为了达到最佳的均衡效果,F组与Y组中进行的数据互换,互换的方法可以包括:
[0071] 步骤M1:判断F组和Y组是否有空白块,该空白块表示可以直接写入数据,根据判断F组和Y组是否有空白块的判断结果,可以包括以下四种情况;
[0072] 步骤M2:当判断结果为F组中有空白块、Y组中有空白块时,将F组中擦写次数按照从多到少的顺序,排在前X位的存储块上的数据搬移到Y组中的空白块上,如果Y组上有空白块不足X块,则将Y组中擦写次数由少到多的顺序,排在前几位的原先存储数据的存储块上的数据搬移到F组上,将F组中擦写次数按照从多到少的顺序,排在前X位中没有搬移到Y组上的数据搬移到Y组;相似的Y组中擦写次数由少到多的顺序排在前X为的存储上的数据也按照类似的方法搬移到F组;
[0073] 步骤M3:当判断结果为F组中有空白块、Y组中没有空白块时,Y组中没有直接可以获得的空白块,必须搬移Y中的数据才可以获取空白块,而F组则可以有直接可以用的空白块,则根据先利用空白块,空白块不足,再将数据搬移到对方组;
[0074] 步骤M4:当判断结果为F组中没有空白块、Y组中有空白块时,具体执行方法与步骤M3相似,可以参考步骤M3中的说明;
[0075] 步骤M5:当判断结果为F组中没有空白块、Y组中没有空白块时,将F组中擦写次数多的块中的数据与Y组中擦写次数少的块中的数据进行互换。
[0076] 其中,需要说明的是,在步骤M5中擦写次数少和多的判断可以根据具体的设计要有而定,例如,将一组中的块按照擦写次数多少排序,以排在最中间的为界限,一边为该组中擦写次数多的块,另一边为该组中擦写次数少的块。也可以有其它的划分方法,此处不应理解对本发明实施例的限定。且全文有关擦写次数少和多的判断都可参照此段中的说明。
[0077] 以上步骤A8至步骤A10实现了SSD中组间均衡,使得SSD中各组中的总擦写次数相似,增加的步骤A8至步骤A10使得本发明实施例提供的方法不仅实现了组内各块的擦写次数相似,而且,使得组间的总擦写次数也相似,达到使SSD中存储区中的块的擦写次数都尽量相似的目的。其中,为了使该方法更完善,可以在步骤A9与步骤A10之间增加步骤A11,其中,
[0078] 步骤A11:判断是否有一组的总擦写次数大于或者等于预设的阀值TH,如果是,进入步骤A10,如果否,不做任何处理。
[0079] 其中,增加步骤A11的作用是用来作为执行组间均衡的触发条件,当有一组的总擦写次数大于或者等于预设的阀值TH时,才进行组间均衡,而没有到达TH时,认为SSD没有必要做组间均衡。
[0080] 通过以上对本发明实施例一的说明,SSD在自身维护一条空白队列,其中,获取空白队列中的空白块的方法可以根据每组的总擦写次数而线性的获取,当有一组存储块中的数据存储已满时,擦除无效数据、回收空白块和强制搬移数据,即使用静态均衡技术。采用该方法将动态均衡技术和静态均衡技术结合起来,使得SSD中的各组中的存储块的擦写次数尽量相似,从而延长了SSD的寿命,同时,对SSD的均衡操作都是在写操作之前完成的,不影响新数据的写入速度,因此,提高了SSD的工作效率。
[0081] 实施例三
[0082] 本实施例提供了一种固态硬盘的均衡方法,该方法与实施例一提供的方法相似,其不同之处主要在于,本实施例提供的方法中SSD不进行组内均衡,SSD采用动态均衡技术和组间的静态均衡技术来实现延长SSD的使用寿命,和不影响写入数据的速度的目的。参见图8所示,包括:
[0083] 步骤B1至步骤B5与实施例一中的步骤A1至步骤A5对应相似,可以参照实施例一中的说明;
[0084] 步骤B6:擦除SSD中各组中的无效数据;
[0085] 步骤B7:与实施例一中步骤A9相似,SSD统计该SSD中每一组的总擦写次数;
[0086] 步骤B8:与实施例一中步骤A10相似,将总擦写次数最少的组中的数据与总擦写次数最多的组中的数据进行互换;
[0087] 其中,步骤B8的具体实现方法可以参考对步骤A10的说明。
[0088] 以上步骤B1至步骤B8实现了将动态均衡技术与静态均衡技术相结合,延长了SSD的使用寿命,同时,对SSD的均衡操作是在写操作到来之前进行的,因此,不影响数据写入速度,提供了SSD的工作效率。为了使实施例二提供的方法更优化,在步骤B7与步骤B8之间还可以增加步骤B9,其中,
[0089] 步骤B9:与实施例一中的步骤A11相似,判断是否有一组的总擦写次数大于或者等于预设的阀值TH,如果是,进入步骤B8,如果否,不做任何处理。
[0090] 通过以上对本发明实施例三的说明,SSD在空闲时自身维护一条空白队列,其中,获取空白队列中的空白块的方法可以根据每组的总擦写次数而线性的获取,当有一组存储块中的数据存储已满时,进行垃圾回收和强制搬移数据,即使用静态均衡技术。采用该方法将动态均衡技术和静态均衡技术结合起来,使得SSD中的各组中的存储块的擦写次数尽量相似,从而延长了SSD的寿命,同时,对SSD的均衡操作都是在写操作之前完成的,不影响新数据的写入速度,因此,提高了SSD的工作效率。
[0091] 实施例四
[0092] 本发明实施例提供了一种固态硬盘SSD,参见图9所示,包括:分组单元101、记录单元102、获取空白块单元103和存储单元104。该SSD还可以包括:第一判断单元105、排序单元106、组内互换单元107、擦除单元108、统计单元109、第二判断单元110和组间互换单元111。
[0093] 其中,分组单元101将SSD中的存储区分组,该SSD是由Flash芯片作为存储介质的情况,分组单元101将Flash芯片上的存储区分为至少一个组,在每个组中有多个块组成,其中,全文中的块可以是该Flash芯片上的最小可擦除单位,通常每个块有64个页组成,该分组方式与现有技术相似。
[0094] 记录单元102记录每个块的擦写次数,可以将擦写的次数的数值记录在块中的冗余区;
[0095] 获取空白块单元103根据各组中的总擦写次数的数值,从各组中获取空白块。为了使得SSD可以根据各组的情况获取更合理的空白块,该SSD还可以包括第五判断单元501。
[0096] 其中,第五判断单元501判断每组的总擦写次数C是否都是在预设的最小阀值THmin与预设的最大阀值THmax之间,即THmin
[0097] 存储单元104将数据存储到从获取单元103中获取的空白块中,其中,存储数据与将数据写入空白块是相同的表述。
[0098] 以上对该SSD的说明,该SSD中获取空白块单元103根据各组的总擦写次数和每组中的空白块数目,从每组中获取空白块,当有新数据要存储时,存储单元104将数据直接存储到获取的空白块上,提高了数据的写入速度,提高了该SSD的工作效率。为了使得该SSD能有更出色的表现,该SSD中的擦除单元108还可以用于擦除该SDD中其余各组中的无效数据,因此,该SSD还可以包括:第一判断单元105、排序单元106、组内互换单元107、擦除单元108、统计单元109和组间互换单元111。
[0099] 其中,第一判断单元105判断是否有一种存储区中的数据存储满,即该组中的每个存储块都已经存储数据。
[0100] 排序单元106根据根据第一判断单元105中判断为是的结果,根据存储数据已满的组中每块中记录的该块擦写次数的多少,对该组中的块进行排序;
[0101] 组内互换单元107根据排序单元106中的排序结果,将擦写次数多的块中数据与擦写次数少的块中的数据进行互换;其中此处对擦写次数的多的块和擦写次数少的块的理解,可以是认为在该组中擦写次数根据从多到少的顺序排列,排在前五位的为擦写次数多的块,拍在后五位的为擦写次数少的块,将前五位的块中的数据与后五位的块中的数据进行互换。事实上,互换的具体方法还有多种,但其基本原理为本端中的说明。因此,本段文字中的说明不应理解为本发明实施例的限制。
[0102] 擦除单元108擦除该存储数据已满的组中的无效数据,或者,擦写该SSD各组中的无效数据。因此,使得该SSD具有垃圾回收的功能,清楚无效数据后,为给SSD提供更多的空白数据以便存储新的数据。
[0103] 统计单元109统计该SSD中每一组的总擦写次数;
[0104] 组间互换单元111根据统计单元109中的统计结果,和总擦写次数按照有多到少或者由少到多的顺序排列,其中排后面的组中的数据与排在前面的组中的数据进行互换。其中,具体排在后面或者排在前面的位置是根据设计要求而预置的。
[0105] 事实上,增加的统计单元109和组间互换单元111的作用是为了使得该SSD具备组间静态均衡的功能,但是,为了使得该SSD的效率更高,该SSD还可以包括第二判断单元110,其中,该第二判断单元110判断是否有一组的总擦写次数大于或者等于预设的阀值TH,如果是,通知组间互换单元111;如果否,不做任何处理。该单元110的主要作用是判断是否进行组间均衡。
[0106] 为了使SSD进行组间静态均衡具有更好的效果,该SSD还可以包括:第七判断单元701和第九判断单元702。
[0107] 其中第七判断单元701判断进行数据互换的两组存储块中,是否有空白块;如果有空白块,则组间互换单元111将要互换的数据首先存储到空白块中;第九判断单元702判断进行数据互换的两组存储块中的数据是否全部存储到目的组中空白块中;如果否,则组间互换单元111将组中擦写次数多的块中的数据与该组的目的组中擦写次数少的块中的数据进行互换,将组中擦写次数少的块中的数据与该组的目的组中擦写次数多的块中的数据进行互换。
[0108] 通过以上对本发明实施例四的说明,SSD在空闲时自身维护一条空白队列,其中,获取空白队列中的空白块的方法可以根据每组的总擦写次数而线性的获取,当有一组存储块中的数据存储已满时,进行垃圾回收和强制搬移数据,即使用静态均衡技术。采用该方法将动态均衡技术和静态均衡技术结合起来,使得SSD中的各组中的存储块的擦写次数尽量相似,从而延长了SSD的寿命,同时,对SSD的均衡操作都是在写操作之前完成的,提高了新数据的写入速度,因此,提高了SSD的工作效率。
[0109] 实施例五
[0110] 本发明实施例提供了一种固态硬盘SSD,该SSD实施例四提供的一种SSD相似,不同之处主要在于:实施例四提供的SSD具有动态均衡功能和组内静态均衡的功能,该SSD还可以具有组间静态均衡的功能;而本实施例提供的一种SSD是具有动态均衡功能和组间静态均衡的功能,也可以具有组内静态均衡的功能。参见图10所示,包括:分组单元101、记录单元102、获取空白块单元103和存储单元104,本实施例提供的一种SSD还可以包括:第一判断单元105、第一统计单元307、第四判断单元308和第一组间互换单元309。
[0111] 其中,该实施例中的分组单元101、记录单元102、获取空白块单元103、存储单元104和第一判断单元105可以是实施例四中的对应单元,可以参照实施例四中的说明。
[0112] 本实施例中的SSD,包括分组单元101、记录单元102、获取空白块单元103和存储单元104,该SSD维护一条空白块队列,当有新数据写入时,提供了写入数据的速度,提供了SSD的工作效率。该SSD还可以包括:第一判断单元105、第一统计单元307、第四判断单元308和第一组间互换单元309。
[0113] 其中,第一判断单元105与实施例四中的该单元的描述相似,可以参照实施例三的说明。第一统计单元307和第一组间互换单元309与实施例四中统计单元109和组间互换单元111对应相似,可以参照实施例四中的说明。
[0114] 具有以上逻辑单元的SSD实现了将动态均衡技术与组间静态均衡技术相结合,使得SSD中的存储块的总擦除次数尽量相似,延长了SSD的使用寿命。为了使得该SSD的效率更高,该SSD还可以包括第四判断单元308,其中,该第四判断单元308判断是否有一组的总擦写次数大于或者等于预设的阀值TH,如果是,通知第一组间互换单元309;如果否,不做任何处理。该单元的主要作用是判断是否进行组间均衡。第四判断单元308与实施例四中的第二判断单元110相似。第一组间互换单元309根据总擦写次数多少的顺序,将排在前S位的组中的数据与排在后S位的组中的数据进行互换。
[0115] 为了使SSD进行组间静态均衡具有更好的效果,该SSD还可以包括:第六判断单元601和第八判断单元602。其中,第六判断单元601、第八判断单元602与实施例三中的第七判断单元701和第九判断单元702对应相似,可以参考实施例四中的说明。
[0116] 本实施例提供的一种SSD还可以包括第一擦除单元306,该第一擦除单元306擦除SSD中各组中的无效数据。
[0117] 通过以上对本发明实施例五的说明,SSD在空闲时自身维护一条空白队列,其中,获取空白队列中的空白块的方法可以根据每组的总擦写次数而线性的获取,当有一组存储块中的数据存储已满时,进行垃圾回收和强制搬移数据,即使用静态均衡技术。采用该方法将动态均衡技术和静态均衡技术结合起来,使得SSD中的各组中的存储块的擦写次数尽量相似,从而延长了SSD的寿命,同时,对SSD的均衡操作都是在写操作之前完成的,不影响新数据的写入速度,因此,提高了SSD的工作效率。
[0118] 本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:ROM、RAM、磁盘或光盘等。
[0119] 以上对本发明实施例所提供的一种固态硬盘的均衡方法以及固态硬盘进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。