买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】一种存储介质垃圾回收方法、存储介质和程序产品_华为技术有限公司_201880002800.3 

申请/专利权人:华为技术有限公司

申请日:2018-03-23

公开(公告)日:2021-11-19

公开(公告)号:CN109496300B

主分类号:G06F12/02(20060101)

分类号:G06F12/02(20060101)

优先权:

专利状态码:有效-授权

法律状态:2021.11.19#授权;2019.04.12#实质审查的生效;2019.03.19#公开

摘要:提供一种存储介质垃圾回收技术。存储介质例如固态硬盘,所述固态硬盘包括多个块,每个存储拥有回收参数,所述回收参数与所述块中的数据相关,每个块包括多个页:根据所述回收参数从所述多个块中选择一个组块,在该组块中任意两个块的所述回收参数的值的差值不大于预设值;把该组块中的第一有效页和第二有效页中的数据复制到同一个目的块中,以便进行垃圾回收。

主权项:1.一种存储介质垃圾回收方法,所述存储介质包括多个存储单元,每个存储单元拥有回收参数,所述回收参数包括第一回收参数,所述第一回收参数与所述存储单元中的数据相关,每个存储单元包括多个读写单元,其特征在于:根据所述第一回收参数从所述多个存储单元中选择一组存储单元,在该组存储单元中任意两个存储单元的所述第一回收参数的值差不大于预设值,该组存储单元中的每一个存储单元含有陈旧读写单元,其中,陈旧读写单元是存储有无效数据的读写单元;把该组存储单元中的第一有效读写单元和第二有效读写单元中的数据复制到同一个目的存储单元,其中,所述第一有效读写单元和所述第二有效读写单元分属于该组存储单元中的不同的存储单元,所述目的存储单元包含于所述多个存储单元。

全文数据:一种存储介质垃圾回收方法、存储介质和程序产品技术领域本发明涉及存储领域,特别涉及存储介质垃圾回收领域。背景技术固态硬盘solid-statedrives,SSD使用闪存flash作为存储介质,以其启动快、低噪音以及时延低等优点,日益受到用户的喜爱。并逐渐开始取代磁盘magneticdisk成为高端存储设备的主流存储介质。固态硬盘的内部封装中,包括通道、芯片、页page和块Block组成的结构。其中,每个block由多个页组成。在SSD中,读写数据的最小单位是页。与传统的磁盘不同的是:SSD无法覆盖写,也就是说已经写了数据的页无法通过覆盖的方式直接写入新的数据;反之,必须先对页进行“擦除”操作以后,才能写入新数据。而SSD中,对数据进行擦除是以block作为基本单位的,无法对单个页进行数据擦除。在SSD领域,当某个block中存储无效数据的页数量达到阈值时,可以将block中的有效数据复制至其他block、然后对block进行擦除,以便重新利用被无效数据占用的页,这个过程被称为垃圾回收garbagecollection,GC。垃圾回收可以把被无效数据占用的存储空间重新利用起来,然而对block进行擦除会降低block的寿命,也就是说block的擦除次数是有限的。因此,如何尽量减少垃圾回收的次数,是需要解决的问题。发明内容第一方面,提供一种存储介质垃圾回收方法,所述存储介质包括多个存储单元,每个存储单元拥有第一回收参数,所述第一回收参数与所述存储单元中的数据相关,每个存储单元包括多个读写单元,其中:根据所述第一回收参数从所述多个存储单元中选择一组存储单元,在该组存储单元中任意两个存储单元的所述第一回收参数的值差不大于预设值,该组存储单元中的每一个存储单元含有陈旧读写单元,其中,陈旧读写单元是存储有无效数据的读写单元;把该组存储单元中的第一有效读写单元和第二有效读写单元中的数据复制到同一个目的存储单元,其中,所述第一有效读写单元和所述第二有效读写单元分属于该组存储单元中的不同的存储单元,所述目的存储单元包含于所述多个存储单元。存储介质可以是闪存flash介质,或者叠瓦式磁记录SMR介质。应用该方案可以在一定程度上:把存储介质中的数据按照存在于介质中的时间长短,汇聚到不同的存储单元。更进一步的,随着该方案被执行的次数越多,汇聚的效果越明显。实现了数据按照“年龄”的分层。老龄数据所在块被垃圾回收的可能性比较低,因此老龄数据所在块未来被擦除的可能性降低,老龄数据所在的块的寿命得到了保证。而低龄数据所在块往往集中了大量陈旧页,因此被垃圾回收的可能性比较高。并且陈旧页在垃圾回收过程中不需要执行数据迁移,因此对低龄数据所在块进行垃圾回收不需要迁移太多数据,减少了因为大量数据迁移而占用存储设备的运算资源和带宽资源;此外,垃圾回收后陈旧页全部成为空白页,因此对低龄数据所在的块垃圾回收后可以获得较多的可用存储空间。并且,低龄数据和老龄数据分离到到不同的存储单元后,总体上减少了SSD中被垃圾回收的块的数量。需要说明的是,“老龄”和“低龄”只是一个相对的概念,“老龄”数据在存储介质中存在的时间早于“低龄”数据在存储介质中存在的时间。在第一方面的第一种可能实现方式中,还包括:把该组存储单元中,除所述第一有效读写单元和所述第二有效读写单元外,余下的有效读写单元中的数据复制到该组存储单元之外的存储单元;擦除该组存储单元中所有的数据。在数据迁移完成后,通过对存储单元进行擦除可以释放出存储介质中的存储空间,以供后续的数据存储。在第一方面的第二种可能实现方式中,其中:所述第一有效读写单元所在的存储单元的所述第一回收参数的值是第一参数值,所述第二有效读写单元所在的存储单元的所述第一回收参数值是第二参数值。在这种情况下,第一种可能实现方式中可以进一步包括:根据所述第一参数值、所述第二参数值以及所述目的存储单元的所述第一回收参数的原有值,把所述目的存储单元的所述第一回收参数的值配置为第三参数值。在进行数据复制后,需要对第一回收参数的值更新,该方案介绍了新的第一回收参数的值如何进行获得。在第一方面的第三种可能实现方式中,在第一方面的第二种可能实现方式的基础上,其中:所述存储介质在过去多个时间点分别执行多次垃圾回收,所述第一参数值、所述第二参数值以及所述目的存储单元的所述第一回收参数的原有值由过去执行垃圾回收的多个时间点决定。该方案在第一方面的第二种可能实现方式的基础上,进一步介绍了新的第一回收参数的值如何计算。在第一方面的第四种可能实现方式中,在第一方面的第三种可能实现方式的基础上,其中:所述第一参数值、所述第二参数值以及所述目的存储单元的所述第一回收参数的原有值分别代表所述多个时间点内三个相同或不同的时间点,所述第三参数值是由所述三个相同或不同的时间点之间的比较决定。该方案在第一方面的第三种可能实现方式的基础上,更进一步介绍了新的第一回收参数的值如何计算。在第一方面的第五种可能实现方式中,在第一方面的第三种可能实现方式的基础上,其中:该目的存储单元中的数据存储位置是依写入时间,从存储单元的首写位置开始按顺序写入,在该目的存储单元中,复制自所述第一有效读写单元的数据储存于第一位置,复制自所述第二有效读写单元的数据储存于第二位置,所述第一位置比所述第二位置更靠近该目的存储单元的首写位置。该方案在第一方面的第三种可能实现方式的基础上,更进一步介绍了主机或者其他计算机把数据写入存储介质后,数据在存储单元中的存储规律。在第一方面的第六种可能实现方式中,在第一方面的第二种可能实现方式的基础上,进一步包括:在过去多个时间点分别执行多次垃圾回收,所述第一参数值、所述第二参数值以及所述目的存储单元的所述第一回收参数的原有值由过去执行垃圾回收的次数决定。该方案介绍了所述第一回收参数的原有值的计算方法:可以由过去执行垃圾回收的次数决定。在第一方面的第七种可能实现方式中,在第一方面的第四种可能实现方式的基础上,其中:所述第三参数值是根据所述第一参数值、所述第二参数值以及所述目的存储单元的所述第一回收参数的原有值以及一个固定增量决定。该方案介绍了所述第三参数值的一种计算方法,也就是增加固定增量例如增加固定的值1,或者增加固定的值10,或者增加固定的值-0.5的方式。在第一方面的第八种可能实现方式中,在第一方面的第二种可能实现方式的基础上,还可以包括:把该组存储单元中,除所述第一有效读写单元和所述第二有效读写单元外,余下的有效读写单元中的数据复制到该组存储单元之外的存储单元,其中,该组存储单元之外的存储单元包括目标存储单元;根据所述第三参数值配置所述目标存储单元的所述第一回收参数的值;以及,擦除该组存储单元中所有的数据。该方案介绍了余下的有效读写单元例如有效页中的数据也会被复制。完成该存储单元中所有有效数据的复制。以便对整个存储单元进行擦除。在第一方面的第九种可能实现方式中,在第一方面方案的基础上还包括:按照第一回收参数选择的该组存储单元含某存储单元;把所述某存储单元中的数据单元迁移到按照磨损程度选择的存储单元之中。该方案介绍了基于垃圾回收的进一步应用:可以按照磨损程度和数据年龄进行数据迁移,实现磨损均衡的技术效果。在第一方面的第十种可能实现方式中,在第一方面方案的基础上,其中:该第一回收参数含第二回收参数,所述第一有效读写单元所在的存储单元的所述第二回收参数的值是第七参数值,所述第二有效读写单元所在的存储单元的所述第二回收参数的值是第八参数值,所述第一方面方案还包括:根据所述第七参数值、所述第八参数值以及所述目的存储单元的所述第二回收参数的原有值,把所述目的存储单元的所述第二回收参数的值配置为第九参数值;其中,所述第二回收参数的值与所述存储单元执行垃圾回收的时间点有关。该方案介绍了第二回收参数这一新的参数,以及该参数的计算原则。在第一方面的第十一种可能实现方式中,在第一方面的第十种可能实现方式的基础上,进一步还包括:按照第一回收参数和第二回收参数选择的该组存储单元含某存储单元;把所述某存储单元中的数据单元迁移到按照磨损程度选择的存储单元之中。该方案介绍了如何把第二回收参数用于磨损均衡。在第一方面的第十二种可能实现方式中,在第一方面的基础上,可以根据所述第一回收参数从所述多个存储单元中选择第一存储单元,该第一存储单元含有陈旧读写单元;把第一存储单元中有效读写单元的数据迁移到第二存储单元,所述第二此处单元有空闲读写单元。该方案介绍了单存储单元垃圾回收的数据复制,和第一方面所介绍的复制可以称为多存储单元存垃圾回收中的数据复制可以并列执行。例如在同一个存储介质中:对第一回收参数大于阈值的存储单元,执行多存储单元垃圾回收的数据复制,对第一回收参数大于阈值的存储单元,执行单存储单元垃圾回收的数据复制。在第一方面的第十三种可能实现方式中,在第一方面的第十二种可能实现方式的基础上。所述第一存储单元的所述第一回收参数的值是第四参数值,所述第二存储单元的所述第一回收参数的值是第五参数值;所述方法进一步包括:根据所述第四参数值、所述第五参数值,把所述目的存储单元的所述第一回收参数的值配置为第六参数值。该方案介绍了:在单存储单元垃圾回收的复制操作中,第一回收参数值的更新方案。第二方面,提供一种存储介质硬件,存储介质包括介质控制器和多个存储单元,每个存储单元拥有第一回收参数,所述第一回收参数与所述存储单元中的数据相关,每个存储单元包括多个读写单元,其中,所述介质控制器,可以执行上述第一方面、以及第一方面的各个可能实现。第三方面,提供一种程序产品,该程序产品例如是硬盘、U盘和光盘等。程序产品。程序产品包括程序代码,运行所述程序代码用于对存储介质进行管理。通过运行该程序产品中的程序代码,可以执行上述第一方面、以及第一方面的各个可能实现。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的图作简单地介绍,下面描述中的图仅仅是本发明的一些实施例,还可以根据这些图获得其他的图。图1是固态硬盘结构图的实施例。图2是存储介质垃圾回收的流程图实施例。图3是一个单块垃圾回收过程实施例的示意图。图4是一个多块垃圾回收过程实施例的示意图。具体实施方式下面将结合实施例中的图,对实施例的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明的一部分实施例,而不是全部的实施例。基于这些实施例所获得的所有其他实施例,都属于本说明保护的范围。例如本申请主要以SSD为例进行介绍,然而本申请的思想同样适用于其他基于闪存flash的存储介质。以及还适用于其他无法覆盖写覆盖写是指新写入的数据直接覆盖存储介质中的旧数据的存储介质,例如叠瓦式磁记录SMR介质,闪存介质中的block相当于SMR介质中的区域zone,闪存的页相当于zone中的一段存储空间。其中,block和zone统称为存储单元,页和zone中的一段存储空间,统称为读写单元。由于原理相同,为了简洁,下面仅以flash为例进行说明。在对块block进行垃圾回收garbagecollection,GC前,块中的页可能处于下面三种情况中的一种:第一种,页中存储了有效数据,对这种状态的页可以设置有效valid标签来进行标记,简称为有效页;第二种,页中存储有无效数据,无效数据是不再需要的数据是相对于有效数据而言的,或者说是被主机主机包括SSD之外,与SSD通信的计算机、服务器、存储控制器等设备“删除”的数据,这种状态的页可以通过设置陈旧stale标签来进行标记,简称为陈旧页或者“无效页”;第三种,页中没有存储数据,这种状态的页,简称为空白页,空白页可以在将来被存入新的数据,空白页通过设置clean标签或者empty标签进行标记,或者通过补设置标签进行标记。其中,在进行垃圾回收时,需要把有效数据迁移到其他块;对于陈旧页和空白页,不需要执行数据迁移。对于被执行了垃圾回收的块,所有页都成为空白页。也就是说,垃圾回收可以把无效数据占用的存储空间释放出来,重新提供给主机使用。为了方便介绍,在没有特别说明的情况下,本实施例把每个有效页中所存储的数据称为一个数据单元。如果一个数据单元在过去多次垃圾回收中都没有发生过删除对SSD来说,某个页的数据单元发生删除,意味着把存储这个数据单元的页的状态设置为陈旧,那么这个数据单元更新不频繁,在未来也被删除的可能性也比较低。更进一步的,随着这个数据单元所在的块被垃圾回收的次数越多,这个数据单元在未来被删除的可能性越低,这种情况可以形象的理解为数据单元年龄越来越“老”。与之相反,对于未经历过垃圾回收或者经历过的垃圾回收次数很少的数据单元,未来被删除的可能性相对比较高,可以认为这样的数据单元比较“年轻”。这里的“删除”实际上也包括了“修改”的情况,因为在SSD中,修改数据单元的具体做法是:删除原数据单元,把新数据单元写入新的存储位置,因此,可以把“修改”视为删除的一种特例,不做单独介绍。应用本实施例后,可以把多数数据单元按照年龄段的不同汇聚到不同的块中,按照本实施例执行的垃圾回收次数越多,汇聚的程度越明显。对于主要由年龄较老的数据单元所构成的块而言,块中的数据单元总体上比较稳定,将来出现陈旧块的几率相对较小,因此老龄数据单元集中的块发生垃圾回收的几率也变小一般情况下,SSD把陈旧块的数量大于某个预设的阈值作为触发垃圾回收的条件。相应的,在老龄数据单元汇聚后一些块中后,余下的块中就聚集了相对低龄的数据单元,对于主要由低龄的数据单元组成的块,出现大量陈旧页的可能性比较大,因此块发生垃圾回收的可能性比较大。基于本实施例的方案,数据单元按年龄段被汇聚到不同的块中。老龄数据单元所在块被垃圾回收的可能性比较低,因此老龄数据单元所在块未来被擦除的可能性降低,老龄数据单元所在的块的寿命得到了保证。而低龄数据单元所在块往往集中了大量陈旧页,因此被垃圾回收的可能性比较高。并且陈旧页在垃圾回收过程中不需要执行数据迁移,因此对低龄数据单元所在块进行垃圾回收不需要迁移太多数据单元,减少了因为大量数据单元迁移而占用存储设备的运算资源和带宽资源;此外,垃圾回收后陈旧页全部成为空白页,因此对低龄数据单元所在的块垃圾回收后可以获得较多的可用存储空间。并且,低龄数据单元和老龄数据单元分层后,总体上减少了SSD中被垃圾回收的块的数量。识别出数据单元的年龄是本实施例需要解决的问题之一。为了能识别出数据单元的年龄,本实施例给块设置回收参数,回收参数可以是一个或一组数字或符号。回收参数包括第一回收参数,通过在垃圾回收中对第一回收参数的值进行更新来近似的反映块中数据单元的年龄变化。如果块中的数据没有发生过垃圾回收,那么这个块的第一回收参数的值是初始值初始值例如是0;如果块中的数据发生过垃圾回收,在垃圾回收发生前迁出数据单元的块的第一回收参数的值,以及在垃圾回收发生前迁入数据单元的块的第一回收参数的值,共同决定了垃圾回收发生后迁入数据单元的块的第一回收参数的值。例如,把一个或多个块中的数据单元有效数据复制到另外的一个或多个块中为了方便介绍,把复制出数据单元的块称为源块,把复制入数据单元的块称为目的块。目的块的第一回收参数的值会进行更新,更新后的第一回收参数的值由:目的块的第一回收参数的原值、源块的第一回收参数的值决定。其中,一种可选的方式是:目的块的第一回收参数的原值、源块的第一回收参数的值都是正数,目的块第一回收参数的新值由其中最大值决定,例如这个最大值加上固定的正数例如1;或者,另外一种可选的方式是:目的块的第一回收参数的原值、源块的第一回收参数的值都是负数,目的块第一回收参数的新值由其中最小值加上固定的负数。当然,还可以有其他方案,例如目的块的第一回收参数的原值、源块的第一回收参数的值乘以一个常数后再加上或者减去一个固定值,作为目的块的第一回收参数的新的值。在初始值是0,固定的正数是1的情况下,一个块的第一回收参数的新的值可以被解读为:本块中所存储的有效数据中,各个有效数据对应有在过去因为垃圾回收而被迁移的次数允许有有效数据的迁移次数是0,在垃圾回收后,第一回收参数的新的值是这些次数中的最大值。需要说明的是,在SSD中,多个块的第一回收参数在统计上可以整体上反映这多个块中数据单元的年龄。但是,本实施例允许存在少数例外的情况,也就是可能存在这样的块:块的第一回收参数没有正确反映这个块中数据单元的年龄,这种例外可能会一点程度上降低本发明技术效果,但是不会阻止本发明实施例技术效果的实现。图1介绍了固态硬盘10的结构图,固态硬盘10和主机20通信。固态硬盘内部包括固态硬盘控制器11、和固态硬盘11连接的缓存12例如是随机存储存储器RAM,以及多个包package,固态硬盘控制器11通过通道和包连接,每个包拥有块block,块是最小擦除单位,块1、块2、块3、块4、块5、块6、块7和块8为固态硬盘20提供物理上的存储空间,每个块由多个页page组成,页是最小读写单位。当然,固态硬盘20中还可以有更多的包块,图1中未示出。固态硬盘控制器11内部可以有:缓存接口、处理器、闪存控制器等组件。缓存接口和缓存12通信,处理器执行计算机指令,闪存控制器对块进行控制。图2介绍了为了执行垃圾回收,在块之间进行数据迁移的过程。整个垃圾回收过程包括图2中描述的步骤在内可以由图1中的固态硬盘10执行,具体而言可以是由固态硬盘控制器11运行缓存12中的计算机指令执行。在SSD运行后,计算机指令被加载在缓存12中。在SSD运行之前,之前计算机指令可以存储在非易失性存储介质中,例如固化在主机网卡的固件firmware中。步骤21、SSD控制器获取存储介质中各个块中陈旧页的数量,陈旧页超过垃圾回收阈值的块需要执行垃圾回收。SSD由控制器和存储介质组成,控制器和存储介质通信,对存储介质进行管理,存储介质例如闪存颗粒。获取陈旧页的数量有多种方式,例如:陈旧页的数量预存在缓存中,并且定期进行更新,那么SSD控制器可以从所述缓存中直接获得陈旧页的数量;或者,由SSD控制器直接查询各个块中设置了陈旧标签的页的数量,从而获得各个块中陈旧页的数量。步骤22、对于陈旧页超过陈旧阈值的块,SSD控制器查询各个块的第一回收参数的值。第一回收参数的值可以存储在某些块中,也可以存储在SSD的缓存中。对于第一回收参数的值小于第一回收参数阈值的块,执行步骤23的单存储单元如前所述,在本实施例中存储单元是flash中的“块”垃圾回收;对于第一回收参数的值大于或者等于第一回收参数阈值的块,执行步骤24的多存储单元本实施例中的存储单元是“块”垃圾回收。需要说明的是,在步骤22和步骤21中,可以任一个步骤比另外一个步骤先执行。也可以两个步骤同时执行,即:在查询块陈旧页数量的同时查询块的第一回收参数的值。步骤23、对第一回收参数的值小于第一回收参数阈值的各个块,执行单块垃圾回收。对目的块的第一回收参数的值进行更新。如果把单块垃圾回收的源块称为第一块,目的块称为第二块。那么本步骤可以描述为:把第一存储单元中有效读写单元的数据迁移到第二存储单元,所述第一存储单元含有陈旧读写单元,所述第二此处单元有空闲读写单元。在单块垃圾回收中,以单个块作为粒度进行垃圾回收。换句话说,在一次垃圾回收操作中,不会把两个或者两个以上的源块的数据单元复制到至少一个目的块中。图3是一个单块垃圾回收过程的示意图。块1拥有5个页这里只是举例,实际情况下,一个块可以有更多的页,例如:一个块的大小是256KB,一个页的大小是4KB。块1拥有数据1和数据2两个数据单元,数据1和数据2分别存储在页1和页2;此外,块1的页2和页4存储了陈旧页,页5是空白页。SSD的控制器把数据1和数据2这两个数据单元复制到块2,数据1和数据2复制到块2后所在的页,与块2原有的数据数据3所在的页在存储介质中的位置关系相邻,并且,数据1和数据2所在的页也相邻。此外,数据1和数据2所在的页保持了在块1中的相对位置关系,也就是说,在块1中,数据1所在页的编号小于数据2所在页的编号,在块2中,保持了数据1所在页的编号小于数据2所在页的编号。复制完成后,对块1进行擦除,擦除后的块1中所有页都成为空白页。被擦除的块中没有有效数据,因此它的第一回收参数的值重置为初始值例如0。在本实施例中,作为目的块的块2中已有数据3。在其他实施方式中,可以把空白块作为目的块进行数据单元复制。页编号连续的两个页之间相邻。以图3为例,页3和页1、页2相邻。页编号的大小描述页的位置关系。例如:在迁移前,数据1所在的页页1的页编号块1,中页1的编号是1小于和数据2所在的页页3的页编号块1中,页3的编号是3;在数据1和数据2迁移到块2后,数据1所在的页页2的页编号块2中,页2的编号是2同样小于数据2所在的页页3的页编号块2中,页3的编号3。可以看出,在迁移前后,数据1所在页的页编号保持了小于数据2所在页的页编号,这一的位置关系得以保持。SSD收到主机的数据后,SSD具体如何把数据存入块的页有规律可循。例如,对同一个块而言,主机先收到的数据写入块中页编号较小的页,主机后收到的数据写入页编号较大的页;或者反之,先收到的数据写入块中页编号较大的页,后收到的数据写入页编号较小的页。这种规律和SSD厂商的制作工艺有关,因此,同一个厂商生产的SSD往往依照相同的规律。这样的话,从页编号就可以知道数据单元被写入块的时间先后顺序,如果主机先收到数据写入块中页编号较小的页,那么页编号小的页中的数据的写入时间不晚于页编号大的页中的数据。本实施例所说的顺序只是描述两个页之间的在存储介质中的前后位置关系,并不涉及到这两个页之间是否间隔有其他页。为了方便理解,我们都使用“首写位置”这一称号对块中空白页的利用顺序进行描述:向块中写入数据时,从块的首写位置开始按顺序写入数据,直至所有空闲读写单元被用完位置。靠近首写位置的块写入数据的时间点不晚于远离首写位置的块写入数据的时间点。在目的块中,数据单元的部分或者全部保持这种先后顺序,因此从数据单元所在页的排序关系,依然可以大致反映出数据单元被主机写入所述SSD的时间先后顺序。以图3为例,主机把数据1写入块1中的时间不晚于主机把数据2写入块1的时间,因此数据1所在的页的编号小于数据2所在的页的编号。在把数据1和数据2复制到块2后,数据1所在的页的编号小于数据2所在的页的编号。简言之,在图3的目的块2中继续保持这个规律:同一个块中,页编号与主机把数据写入SSD的时间顺序存在对应关系。复制完成后,擦除块1中的所有数据,擦除后,从页1到页5都是空白页。本步骤还包括对第一回收参数的值进行更新。第一回收参数的值由所述SSD中的数据单元由于垃圾回收而被复制的次数相关。具体而言,如果在垃圾回收前目的块没有有效数据,那么:目的块的第一回收参数的值可以由源块的第一回收参数的值决定;更进一步的,目的块的第一回收参数的值可以由源块的第一回收参数的值和一个固定增量决定,固定增量例如是1。例如,第一回收参数的值都是不小于0的整数,目的块的第一回收参数的值被更新的原则是“目的块的第一回收参数的值=源块的第一回收参数值+1”。块的第一回收参数的初始值例如是0当然也可以是其他数字时,表示块中的有效数据未发生过垃圾回收。在执行垃圾回收后,对第一回收参数的值加1,成为0+1=1;如果把前一次垃圾回收的扮演目的块的块作为源块,再次执行单块垃圾回收,对那么对再次执行单块垃圾回收的目的块而言,第一回收参数的值是1+1=2。另外,如果在垃圾回收前目的块存在有效数据,那么,目的块的多块垃圾回收的第一回收参数的值,由源块的第一回收参数的值以及所述目的块的多块垃圾回收第一回收参数的值共同决定,单块垃圾回收和多块垃圾回收均是如此。例如,在单块垃圾回收和多块垃圾回收中,目的块的第一回收参数的值=max源块的第一回收参数的值,目的第一回收参数的值+固定值。:例如,在垃圾回收前,源块的第一回收参数的值是5,目的块的第一回收参数的值是3;那么,在垃圾回收之后,目的块第一回收参数的值是:max5,3+1=6。因此,目的块的第一回收参数的值会被更新为6。综合来看,对垃圾回收的目的块的数据寿命进行更新具体包括两种情况。其一种情况:如果在垃圾回收后,所述目的块中所有有效页的数据单元全部来自所述源块,那么垃圾回收之后,目的块的第一回收参数的值是源块的第一回收参数的值+1。其二种情况:如果在垃圾回收后,所述目的块中的数据单元除了来源于所述源块,在所述目的块中原本存在其他数据单元。那么,目的块的新的第一回收参数的值,由源块的第一回收参数的值和目的块原第一回收参数的值确定。例如,以二者的最大值+1,作为目的块的新的第一回收参数的值。通常来说,寿命越长的块中的数据,经历过的垃圾回收次数越多,在未来被删除改写的几率越低。以第一种情况为例,第一回收参数的值还可以有其他更新方式。例如第一回收参数都是不大于0的数字,第一回收参数的值的更新原则是“目的块的第一回收参数的值=源块的第一回收参数的值-5”。那么,如果当前源块的第一回收参数的值是-6,目的块的第一回收参数的值就变为-6-5=-11。此外,还可以有更多实现方案,例如:所有第一回收参数的值都是不小于0的数,并且“目的块的第一回收参数的值=源块的第一回收参数的值*1.01+3”。步骤24、对第一回收参数的值大于第一回收参数阈值的多个块,执行多块垃圾回收。对目的块的第一回收参数的值进行更新。在多块垃圾回收中,把多个第一回收参数的值小于第一回收参数阈值的块作为一个垃圾回收组,把同一个组内的块的数据单元复制到目的块中去,同一组源块的目的块的数量可以是一个或者多个。换句话说,把两个或者两个以上的源块的有效数据共同复制到至少一个目的块中。当垃圾回收组的数量不止一个时,由于各个垃圾回收组的操作方式相同,因此在没有特别声明的情况下,下面仅以其中一组为例进行介绍。由于多块垃圾回收是跨越多个源block的垃圾回收,因此也可以称为跨块垃圾回收。当单个目的块足以容纳全部的被复制数据时,使用单个目的块来容纳被复制的数据。当单个目的块的空白页难以容纳全部的被复制数据时,使用两个或者更多个目的块来容纳被复制的数据,每当一个目的块被装满后,使用下一个目的块继续存储被复制的数据,直至所有被复制的数据都被存储到目的块中。然后,可以擦除组内的所有源块的数据。和步骤23所描述的单块垃圾回收不同的是,本步骤中,每一个组拥有的源块的数量至少是2个。需要特别强调的是,分组并不是必须的步骤,本步骤所欲描述的场景是:多个块在垃圾回收过程中,使用了相同的一个或者多个目的块。和多块垃圾回收相比,单块垃圾回收相当于每一垃圾回收组拥有的源块只有一个。为了和步骤22的单块垃圾回收进行区分,后续在没有特别说明的情况下,把单块垃圾回收的源块、目的块分别称为第一源块和第一目的块;把多块垃圾回收的源块、目的块分别称为第二源块和第二目的块,在一次多块垃圾回收中,第二源块的数量是多个。其中,多块垃圾回收可以理解为:在垃圾回收过程中后,在一个或者多个第二目的块中,存在复制自多个第二源块的数据单元。或者说,在垃圾回收过程中,把多个第二源块的数据单元复制到同一个第二目的块,这样的第二目的块可以有多个,例如本次多块垃圾回收所涉及的全部或者部分第二目的块。此外,在这一个或者多个第二目的块中,来自同一个第二源块的数据单元不完全连续。具体操作方法例如是:把至少2个第二源块中的数据单元复制到同一个第二目的块中。如果这至少2个第二源块中的数据单元逐个轮流复制到同一个第二目的块中,那么来自同一个第二源块的数据单元不连续。本实施例还提供了一种更具体的多块垃圾回收的方案:在垃圾回收过程中,把多个第二源块中有效页的数据单元轮流复制到所述至少一个第二目的块中;并且,对同一个第二源块的多个有效页,按照主机存储顺序进行复制。当然,在其他实施例中,也可以不采用轮流复制的方式,例如可以多个有效页的数据单元并行复制以提高数据单元迁移的效率,只要能够使得复制完成后的状态满足符合这样的关系即可。为了更方便理解这种实施方式,可以参照图4,图4中,块3、块4和块5是第二源块,块6是第二目的块。块3、块4、块5分别把一个未复制的有效页的数据单元复制到块6,这些数据单元分别是数据4、数据6和数据9;然后,块3、块4轮流把下一个未复制的有效页数据5和数据7复制到块6,由于块5所有的有效页的数据单元在上一轮已经完成复制,因此块5不再参与本轮复制;接着,块4把下一个未复制的数据单元也就是数据8复制到块6,由于块4和块5的所有数据单元在上一轮已经完成复制,因此块4和块5不再参与本轮复制。此外,从图4中还可以看出:同一个块中,页编号由上至下逐渐增加,数据4在数据5的上方;数据6在数据7的上方,数据7在数据8的上方;在块6中,这样的位置关系得到保留。本实施例中,主机存储顺序是先存储页编号小的页,再存储页编号大的页也就是图4中由上至下的顺序。因此,对于块3而言,先位于上方的复制数据4,后复制位于下方的数据5;类似的,对于块4而言,复制的顺序依次是数据6、数据7、数据8。对于第二目的块的数量只有一个的情况,根据各个第二源块的第一回收参数的值以及第二目的块第一回收参数的原有值,配置第二目的块的新的第一回收参数的值。例如由它们的第一回收参数的值最大值+1如前所述,可以使用公司目的块的第一回收参数的值=max源块的第一回收参数的值,目的第一回收参数的值+固定值,作为块的新的第一回收参数的值。这里第一回收参数的最大值+1只是举例,第一回收参数的值还可以有其他更新方式,具体参照步骤23。当然,如果在本次垃圾回收前第二目的块是空白块,那么可以不用考虑第一回收参数的原有值。对于第二目的块的数量不止一个的情况,被迁移的数据单元先装满一个第二目的块,再继续填充余下的第二目的块。这个首先被装满的第二目的块的第一回收参数的值的计算方法,与前述第二目的块的数量只有一个情况下所使用的计算方法相同。而余下的第二目的块中每一个第二目的块的第一回收参数的值,可以使用和这个首先被装满的第二目的块相同的计算方法进行计算;也可以不重新计算,而是保持和这个首先被装满的第二目的块的第一回收参数的值相同。为了简洁,本实施例仅以第二目的块的数量只有一个的情况为例进行介绍。以图4为例,那么更新后的块6的第一回收参数的值,由块3、块4和块5的第一回收参数的值决定。如果块6原本存在数据单元未图示,那么更新后的块6的第一回收参数的值,由块3、块4、块5的第一回收参数的值和块6原第一回收参数的值决定。例如这些第一回收参数的值中的最大值加上一个固定增量,固定增量例如是1。如果一个第二源块的所述第一回收参数的值是第一参数值,另外一个第二源块的第一回收参数值是第二参数值。所述方法进一步包括:根据所述第一参数值、所述第二参数值以及所述第二目的块的所述第一回收参数的原有值,把所述第二目的块的所述第一回收参数的值更新为第三参数值。需要注意的是,本次垃圾回收的源块可能是在过去所发生的垃圾回收单块垃圾回收或者多块垃圾回收中扮演的是目的块的角色。而在过去发生的垃圾回收中,遵循同样的规则对上一次垃圾回收的目的块的第一回收参数的值进行配置。类似的,过去发生的垃圾回收的源块,可能是在更早之前的垃圾回收单块垃圾回收或者多块垃圾回收的目的块。我们可以看出,这是一个可以不断往前追溯的过程,一直可以追溯到未发生过垃圾回收的块为止。在执行本次垃圾回收时,涉及到的块包括多个第二源块和至少一个第二目的块,对于这些块中的每一个块而言,第一回收参数的值同样可以不断往前追溯,因此,它们的第一回收参数的值均可以描述为:由所述SSD过去执行垃圾回收的多个时间点决定。基于类似的原因,这些块中的每一个块的第一回收参数的值可以描述为:由所述SSD过去执行垃圾回收的次数决定。这两种描述第一回收参数的值的方式同样适用于单块垃圾回收。在执行了多块垃圾回收后,SSD中的数据单元得到一定程度的分层:一部分块中年龄较老的数据单元比较集中,还有一部分块中年龄较年轻的数据单元比较集中。由此就具有了前述的多个技术效果,例如对少量块进行垃圾回收,就可以获得现有技术中需要对大量块进行垃圾回收同样多的可用存储空间。前述第一回收参数主要用于近似的反映块中数据单元的年龄变化。第一回收参数可以被理解为:存储单元中存储有至少一个数据单元有效数据,对每个数据单元而言,在过去因为垃圾回收而发生过复制复制的次数不为0,或者没有因为垃圾回收而发生过复制次数是0,在各个数据单元所对应的次数中,把最大的次数作为这个存储单元的第一回收参数。可选的,所述回收参数还可以进一步包括第二回收参数。第二回收参数的值可以描述块中的数据单元首次因为多存储单元垃圾回收而被迁移的时间点。在多块垃圾回收之前,第二回收参数可以没有值,或者是初始值例如0。数据单元被迁移的原因有多种,例如执行单块垃圾回收而发生的迁移,或者垃圾回收之外的原因发生的迁移,对于这些迁移不会记录第二回收参数的值。举例:第二回收参数的值的描述方式可以是2018年1月28日17:40。如果在本次多块垃圾回收之前,所述第二源块、所述第二目的块均没有发生过多块垃圾回收,那么所有所述第二目的块和所述第二目的块的第二回收参数的值是初始值初始值例如0,或者为空。举例:第二源块、第二目的块一共有4个,它们的第二回收参数的值分别是:空、空、空和空,而当前多块垃圾回收的时间点的值是2018年1月28日17:50,那么本次多块垃圾回收之后,第二目的块的第二回收参数的值更新为2018年1月28日17:50。如果在本次多块垃圾回收之前,所述第二源块、第二目的块中任意一个块的第二回收参数的值不是初始值,那么以其中最早的时间点作为第二目的块的第二回收参数的值。举例1:第二源块、第二目的块的总数量是4个,它们的第二回收参数的值分别是:空、空、空和2018年1月28日17:40,那么第二目的块的第二回收参数的值是2018年1月28日17:40。举例2:第二源块、第二目的块一共有4个,它们的第二回收参数的值分别是:2015年1月1日00:00、空、空和2018年1月28日17:40,那么第二目的块的第二回收参数的值是2015年1月1日00:00。由以上两个例子可以看出,在某次垃圾回收过程中,目的块的多块垃圾回收时间点的值,由源块的多块垃圾回收时间点的值、所述目的块的多块垃圾回收时间点的值确定。单块垃圾回收的目的块的多块垃圾回收时间点的值依照同样的方法确定。第二回收参数可以一定程度上反映块中数据单元的新旧程度。第二回收参数和第一回收参数配合使用,可以更加准确的反映块中数据单元的新旧程度。在SSD经过多长垃圾回收的积累后,在SSD中,块的数据单元的寿命规律是:“第一回收参数的值超过第一回收参数阈值,且第二回收参数的值较早”的块中的数据单元的年龄>“第一回收参数的值超过第一回收参数阈值,且第二回收参数的值较晚”的块中的数据单元的年龄>“第一回收参数的值不超过第一回收参数的阈值”的块中的数据单元的年龄。当然,正如前面所描述的,这是一个统计上的结果,至少会有一定数量的块符合这一规律,但是本实施例允许有一部分块不符合这一规律。实际上,只要有一部分块符合这一规律,那么已经一定程度上对SSD中的数据进行了更合理的分布,可以实现本发明实施例所欲达到的技术效果。需要说明的是,第二回收参数是可选的,即使没有这个参数仅仅通过对第一回收参数与第一回收参数阈值进行比较,就已经实现了对块进行分类的目的。在统计上,“第一回收参数超过第一回收参数阈值”的块的数据单元的年龄>“第一回收参数不超过第一回收参数阈值”的块的数据单元的年龄。需要特别说明的是,步骤23是可选步骤,即使不执行步骤23,仅执行步骤24同样可以获得有益的技术效果。如果不执行步骤23,那么步骤24不需要判断第一回收参数的值,直接对陈旧页数量步骤23和步骤24中涉及的源块都是陈旧页大于陈旧阈值的块超过陈旧阈值的块执行多块垃圾回收即可。步骤25,进行数据迁移。把数据单元的年龄较老的块中的数据单元迁移到磨损严重的块中;和或,把数据单元的年龄较年轻的块中的数据单元迁移到磨损轻微的块中。磨损程度的判断标准可以由系统设定,例如磨损程度可根据一个或多个相关参数决定,当磨损程度或相关参数超过某个阈值或者达到某个范围时,磨损程度可判断为严重,反之则判断为不严重或者说轻微。也就是按照第一回收参数选择存储单元,把选择的存储单元中的数据单元迁移到按照磨损程度选择的存储单元之中。下面以把年龄较老的块中的数据单元迁移到磨损严重的块中进行举例:阈值为100次,那么擦除次数超过100次的块就是磨损严重的块,擦除次数不足100次的块是磨损轻微的数据块。第一回收参数阈值例如为20,那么按照本步骤25,磨损严重擦除次数大于100的块中的数据单元,可以迁移到第一回收参数的值大于20的块中。这种实施方式中,以第一回收参数的值作为判断块的年龄的依据。可选的,在另外一种方式中,以第一回收参数和第二回收参数共同作为判断块的年龄的依据。例如:第一回收参数阈值是20、第二回收参数阈值是2018年1月13日。那么按照本步骤25,对于磨损严重第一回收参数大于20,并且擦除次数大于100的块中的数据单元,可以迁移到第二回收参数早于2018年1月13日的块中。如何判断块中数据单元的年龄,如步骤24的描述,至少有两种方式:一种是使用第一回收参数的值进行判断;另外一种是使用第一回收参数和第二回收参数这两个参数的值,例如如下规则中的一种:1第一回收参数值大的数据单元,年龄老于第一回收参数值小的数据单元;2对于第一回收参数均高于第一回收参数阈值的两个数据单元,第二回收参数早的数据单元,年龄老于第二回收参数值晚的数据单元。在一些情况下,还有规则3:第二回收参数早的数据单元,年龄老于第二回收参数值晚的数据单元。因此,一种可行的实施例方式是:1SSD控制器按照磨损程度,选择磨损严重的M个块;把这M个块中的数据单元复制到其他有空白页的数据单元,并擦除这M个块的内容;2计算出这M个块中空闲页的总数P;3按照这M个块所能提供的存储空间选择N个块,这N个块拥有的数据单元是SSD中年龄较老的数据单元,例如:从第一回收参数超过第一回收参数阈值的块中,选择第二回收参数的值比较早的N个块,这N个块中拥有Q个有效页,Q≤P;4把这Q个有效页迁入M个块中去。需要特别说明的是,在前述垃圾回收的方案中,介绍了使用规则1作为选择垃圾回收的源数据单元的标准。实际上,也可以使用第规则2作为判断标准来选择垃圾回收的源数据单元,例如把根据所述第一回收参数从所述多个存储单元中选择一组存储单元的步骤,更新为根据所述第一回收参数和所述第二回收参数,从所述多个存储单元中选择一组存储单元例如从第一回收参数高于第一回收参数阈值的多个数据单元中,选择第二回收参数同属于某一个时间段的数据单元,作为一组垃圾回收的一组源存储单元,唯为了篇幅借鉴,此处不再做具体介绍。本发明还提供一种程序产品的实施例,程序产品包括程序代码,运行所述程序代码可以对存储介质包括存储单元进行管理,所述存储介质包括多个存储单元,每个存储单元拥有第一回收参数,所述第一回收参数与所述存储单元中的数据相关,每个存储单元包括多个读写单元,所述程序产品包括至少一个组件可操作用于执行上述各个方法步骤。存储介质中的程序可以被所述存储介质例如所述介质控制器所执行;或者被与存储介质通信的计算机设备执行,对存储单元进行管理。

权利要求:1.一种存储介质垃圾回收方法,所述存储介质包括多个存储单元,每个存储单元拥有回收参数,所述回收参数包括第一回收参数,所述第一回收参数与所述存储单元中的数据相关,每个存储单元包括多个读写单元,其特征在于:根据所述第一回收参数从所述多个存储单元中选择一组存储单元,在该组存储单元中任意两个存储单元的所述第一回收参数的值差不大于预设值,该组存储单元中的每一个存储单元含有陈旧读写单元,其中,陈旧读写单元是存储有无效数据的读写单元;把该组存储单元中的第一有效读写单元和第二有效读写单元中的数据复制到同一个目的存储单元,其中,所述第一有效读写单元和所述第二有效读写单元分属于该组存储单元中的不同的存储单元,所述目的存储单元包含于所述多个存储单元。2.根据权利要求1所述的存储介质垃圾回收方法,其中:所述第一有效读写单元所在的存储单元的所述第一回收参数的值是第一参数值,所述第二有效读写单元所在的存储单元的所述第一回收参数值是第二参数值;所述方法进一步包括:根据所述第一参数值、所述第二参数值以及所述目的存储单元的所述第一回收参数的原有值,把所述目的存储单元的所述第一回收参数的值配置为第三参数值。3.根据权利要求2所述的存储介质垃圾回收方法,其中:所述存储介质在过去多个时间点分别执行多次垃圾回收,所述第一参数值、所述第二参数值以及所述目的存储单元的所述第一回收参数的原有值由过去执行垃圾回收的多个时间点决定。4.根据权利要求3所述的存储介质垃圾回收方法,其中:所述第一参数值、所述第二参数值以及所述目的存储单元的所述第一回收参数的原有值分别代表所述多个时间点内三个相同或不同的时间点,所述第三参数值是由所述三个相同或不同的时间点之间的比较决定。5.根据权利要求3所述的存储介质垃圾回收方法,其中:该目的存储单元中的数据存储位置是依写入时间,从存储单元的首写位置开始按顺序写入,在该目的存储单元中,复制自所述第一有效读写单元的数据储存于第一位置,复制自所述第二有效读写单元的数据储存于第二位置,所述第一位置比所述第二位置更靠近该目的存储单元的首写位置。6.根据权利要求2所述的存储介质垃圾回收方法,其中:在过去多个时间点分别执行多次垃圾回收,所述第一参数值、所述第二参数值以及所述目的存储单元的所述第一回收参数的原有值由过去执行垃圾回收的次数决定。7.根据权利要求4所述的存储介质垃圾回收方法,其中:所述第三参数值是根据所述第一参数值、所述第二参数值以及所述目的存储单元的所述第一回收参数的原有值以及一个固定增量决定。8.根据权利要求2所述的存储介质垃圾回收方法,其中,所述方法还包括:把该组存储单元中,除所述第一有效读写单元和所述第二有效读写单元外,余下的有效读写单元中的数据复制到该组存储单元之外的存储单元,其中,该组存储单元之外的存储单元包括目标存储单元;根据所述第三参数值配置所述目标存储单元的所述第一回收参数的值;以及擦除该组存储单元中所有的数据。9.根据权利要求1所述的存储介质垃圾回收方法,其中,根据所述第一回收参数从所述多个存储单元中选择第一存储单元,该第一存储单元含有陈旧读写单元;把第一存储单元中有效读写单元的数据迁移到第二存储单元,所述第二此处单元有空闲读写单元。10.根据权利要求9所述的存储介质垃圾回收方法,其中:所述第一存储单元的所述第一回收参数的值是第四参数值,所述第二存储单元的所述第一回收参数的值是第五参数值;所述方法进一步包括:根据所述第四参数值、所述第五参数值,把所述目的存储单元的所述第一回收参数的值配置为第六参数值。11.根据权利要求1所述的存储介质垃圾回收方法,其中,所述方法还包括:按照第一回收参数选择的该组存储单元含某存储单元;把所述某存储单元中的数据单元迁移到按照磨损程度选择的存储单元之中。12.根据权利要求1所述的存储介质垃圾回收方法,其中,该回收参数含第二回收参数,所述第一有效读写单元所在的存储单元的所述第二回收参数的值是第七参数值,所述第二有效读写单元所在的存储单元的所述第二回收参数的值是第八参数值,所述方法还包括:根据所述第七参数值、所述第八参数值以及所述目的存储单元的所述第二回收参数的原有值,把所述目的存储单元的所述第二回收参数的值配置为第九参数值;其中,所述第二回收参数的值与所述存储单元执行垃圾回收的时间点有关。13.根据权利要求11所述的存储介质垃圾回收方法,其中,按照第一回收参数和第二回收参数选择的该组存储单元含某存储单元,所述方法还包括:把所述某存储单元中的数据单元迁移到按照磨损程度选择的存储单元之中。14.根据权利要求1所述的存储介质垃圾回收方法,还包括:把该组存储单元中,除所述第一有效读写单元和所述第二有效读写单元外,余下的有效读写单元中的数据复制到该组存储单元之外的存储单元;擦除该组存储单元中所有的数据。15.一种存储介质,存储介质包括介质控制器和多个存储单元,每个存储单元拥有回收参数,所述回收参数包括第一回收参数,所述第一回收参数与所述存储单元中的数据相关,每个存储单元包括多个读写单元,其特征在于,所述介质控制器用于:根据所述第一回收参数从所述多个存储单元中选择一组存储单元,在该组存储单元中任意两个存储单元的所述第一回收参数的值差不大于预设值,该组存储单元中的每一个存储单元含有陈旧读写单元,其中,陈旧读写单元是存储有无效数据的读写单元;把该组存储单元中的第一有效读写单元和第二有效读写单元中的数据复制到同一个目的存储单元,其中,所述第一有效读写单元和所述第二有效读写单元分属于该组存储单元中的不同的存储单元,所述目的存储单元包含于所述多个存储单元。16.根据权利要求15所述的存储介质,其中:所述第一有效读写单元所在的存储单元的所述第一回收参数的值是第一参数值,所述第二有效读写单元所在的存储单元的所述第一回收参数值是第二参数值;所述介质控制器还用于:根据所述第一参数值、所述第二参数值以及所述目的存储单元的所述第一回收参数的原有值,把所述目的存储单元的所述第一回收参数的值配置为第三参数值。17.根据权利要求16所述的存储介质,其中:所述存储控制器在过去多个时间点分别执行多次垃圾回收,所述第一参数值、所述第二参数值以及所述目的存储单元的所述第一回收参数的原有值由过去执行垃圾回收的多个时间点决定。18.根据权利要求17所述的存储介质,其中:所述第一参数值、所述第二参数值以及所述目的存储单元的所述第一回收参数的原有值分别代表所述多个时间点内三个相同或不同的时间点,所述第三参数值是由所述三个相同或不同的时间点之间的比较决定。19.根据权利要求17所述的存储介质,其中,所述介质控制器用于指示:在该目的存储单元中的数据存储位置是依写入时间,从存储单元的首写位置开始按顺序写入,在该目的存储单元中,复制自所述第一有效读写单元的数据储存于第一位置,复制自所述第二有效读写单元的数据储存于第二位置,所述第一位置比所述第二位置更靠近该目的存储单元的首写位置。20.根据权利要求16所述的存储介质,其中,所述介质控制器还用于:在过去多个时间点分别执行多次垃圾回收,所述第一参数值、所述第二参数值以及所述目的存储单元的所述第一回收参数的原有值由过去执行垃圾回收的次数决定。21.根据权利要求18所述的存储介质,其中:所述第三参数值是根据所述第一参数值、所述第二参数值以及所述目的存储单元的所述第一回收参数的原有值以及一个固定增量决定。22.根据权利要求16所述的存储介质,其中,所述介质控制器还用于:把该组存储单元中,除所述第一有效读写单元和所述第二有效读写单元外,余下的有效读写单元中的数据复制到该组存储单元之外的存储单元,其中,该组存储单元之外的存储单元包括目标存储单元;根据所述第三参数值配置所述目标存储单元的所述第一回收参数的值;以及擦除该组存储单元中所有的数据。23.根据权利要求15所述的存储介质垃圾回收方法,其中,根据所述第一回收参数从所述多个存储单元中选择第一存储单元,该第一存储单元含有陈旧读写单元;把第一存储单元中有效读写单元的数据迁移到第二存储单元,所述第二此处单元有空闲读写单元。24.根据权利要求23所述的存储介质垃圾回收方法,其中:所述第一存储单元的所述第一回收参数的值是第四参数值,所述第二存储单元的所述第一回收参数的值是第五参数值;所述方法进一步包括:根据所述第四参数值、所述第五参数值,把所述目的存储单元的所述第一回收参数的值配置为第六参数值。25.根据权利要求15所述的存储介质,其中,所述介质控制器还用于:按照第一回收参数选择的该组存储单元含某存储单元;把所述某存储单元中的数据单元迁移到按照磨损程度选择的存储单元之中。26.根据权利要求15所述的存储介质,其中,该回收参数含第二回收参数,所述第一有效读写单元所在的存储单元的所述第二回收参数的值是第七参数值,所述第二有效读写单元所在的存储单元的所述第二回收参数的值是第八参数值;所述介质控制器还用于:根据所述第七参数值、所述第八参数值以及所述目的存储单元的所述第二回收参数的原有值,把所述目的存储单元的所述第二回收参数的值配置为第九参数值;其中,所述第二回收参数的值与所述存储单元执行垃圾回收的时间点有关。27.根据权利要求15所述的存储介质,其中,按照第一回收参数和第二回收参数选择的该组存储单元含某存储单元,所述介质控制器还用于:把所述某存储单元中的数据单元迁移到按照磨损程度选择的存储单元之中。28.根据权利要求15所述的存储介质,所述介质控制器还用于:把该组存储单元中,除所述第一有效读写单元和所述第二有效读写单元外,余下的有效读写单元中的数据复制到该组存储单元之外的存储单元;擦除该组存储单元中所有的数据。29.一种程序产品,包括程序代码,运行所述程序代码用于对存储介质进行管理,所述存储介质包括多个存储单元,每个存储单元拥有回收参数,所述回收参数包括第一回收参数,所述第一回收参数与所述存储单元中的数据相关,每个存储单元包括多个读写单元,所述程序产品包括至少一个组件可操作用于:根据所述第一回收参数从多个存储单元中选择一组存储单元,在该组存储单元中任意两个存储单元的所述第一回收参数的值差不大于预设值,该组存储单元中的每一个存储单元含有陈旧读写单元,其中,陈旧读写单元是存储有无效数据的读写单元;把该组存储单元中的第一有效读写单元和第二有效读写单元中的数据复制到同一个目的存储单元,其中,所述第一有效读写单元和所述第二有效读写单元分属于该组存储单元中的不同的存储单元,所述目的存储单元包含于所述多个存储单元。30.根据权利要求31所述的程序产品,其中:所述第一有效读写单元所在的存储单元的所述第一回收参数的值是第一参数值,所述第二有效读写单元所在的存储单元的所述第一回收参数值是第二参数值;所述至少一个组件进一步可操作用于:根据所述第一参数值、所述第二参数值以及所述目的存储单元的所述第一回收参数的原有值,把所述目的存储单元的所述第一回收参数的值配置为第三参数值。31.根据权利要求30所述的所述的程序产品,其中:所述存储介质在过去多个时间点分别执行多次垃圾回收,所述第一参数值、所述第二参数值以及所述目的存储单元的所述第一回收参数的原有值由过去执行垃圾回收的多个时间点决定。32.根据权利要求29所述的所述的程序产品,其中,该回收参数含第二回收参数,所述第一有效读写单元所在的存储单元的所述第二回收参数的值是第七参数值,所述第二有效读写单元所在的存储单元的所述第二回收参数的值是第八参数值,所述至少一个组件进一步可操作用于:根据所述第七参数值、所述第八参数值以及所述目的存储单元的所述第二回收参数的原有值,把所述目的存储单元的所述第二回收参数的值配置为第九参数值;其中,所述第二回收参数的值与所述存储单元执行垃圾回收的时间点有关。

百度查询: 华为技术有限公司 一种存储介质垃圾回收方法、存储介质和程序产品

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。