存储系统中垃圾收集的方法和系统与流程

文档序号:16208088发布日期:2018-12-08 07:22阅读:242来源:国知局
本公开的各实施例涉及数据存储领域。
背景技术
:在存储系统中,情况常常是,为了写入一个数据块,平均一半的数据块需要移动。结果,将数据写入到存储系统在系统中引入明显的延迟,并因此降低系统的总体性能。为了管理存储系统中的数据,一般使用垃圾收集器以从不再使用的数据回收存储空间。技术实现要素:总体上,在一个方面,本发明涉及一种非暂时性计算机可读介质,包括指令,当该指令被处理器执行时执行一种方法,该方法包括:接收将数据写入到持久存储装置的第一请求;响应于第一请求,将数据写入到持久存储装置中的短寿命块,其中,数据是短寿命数据;和执行包括以下过程的改进的垃圾收集操作:选择第一块中的第一碎片页;确定第一碎片页是活动的;基于确定第一碎片页是活动的,将第一碎片页移动到持久存储装置中的长寿命块,其中,长寿命块与短寿命块不同,并且其中,长寿命块不包含任何短寿命数据。总体上,在一个方面,本发明涉及一种用于管理数据的方法。该方法包括:接收将数据写入到持久存储装置的第一请求;响应于第一请求,将数据写入到持久存储装置中的短寿命块,其中,数据是选自包含短寿命数据和未知寿命的数据的组的一个;和执行包括以下过程的改进的垃圾收集操作:选择第一块中的第一碎片页;确定第一碎片页是活动的;基于确定第一碎片页是活动的,将第一碎片页移动到持久存储装置中的长寿命块,其中,长寿命块与短寿命块不同,并且其中,长寿命块不包含任何短寿命数据。总体上,在一个方面,本发明涉及一种存储设备,该存储设备包括:持久存储装置;非暂时性计算机可读介质,其包含指令;和处理器,其被配置为执行指令,其中,当该指令被处理器执行时执行方法。该方法包括:(a)接收将数据写入到持久存储装置的第一请求;(b)响应于第一请求,将数据写入到持久存储装置中的短寿命块,其中,数据是选自包含短寿命数据和未知寿命的数据的组的一个;和(c)执行包括以下过程的改进的垃圾收集操作:选择第一块中的第一碎片页;确定第一碎片页是活动的;基于确定第一碎片页是活动的,将第一碎片页移动到持久存储装置中的长寿命块,其中,长寿命块与短寿命块不同,并且其中,长寿命块不包含任何短寿命数据,其中,与选自包含(a)和(b)的组的至少一个并行地执行改进的垃圾收集操作的至少一部分。根据以下的描述和所附的权利要求,本发明的其它方面将十分明显。附图说明图1示出根据本发明的一个或多个实施方式的系统。图2a示出根据本发明的一个或多个实施方式的固态存储器模块。图2b示出根据本发明的一个或多个实施方式的块。图2c示出根据本发明的一个或多个实施方式的碎片页。图2d示出根据本发明的一个或多个实施方式的toc页。图2e示出根据本发明的一个或多个实施方式的块的例子。图2f示出根据本发明的一个或多个实施方式的内容表(tableofcontents)(toc)条目。图3示出根据本发明的一个或多个实施方式的用于接收写入请求的流程图。图4示出根据本发明的一个或多个实施方式的改进的垃圾收集操作的流程图。图5a~6b示出根据本发明的一个或多个实施方式的各种例子。具体实施方式现在参照附图详细描述本发明的特定实施方式。在本发明的实施方式的以下详细描述中,为了使得能够更彻底地理解本发明,阐述大量的特定细节。但是,对于本领域技术人员来说,很显然可以在没有这些特定细节的情况下实施本发明。在其它的情况下,为了避免不必要地使描述复杂化,不详细描述公知的特征。在图1~6b的以下描述中,在本发明的各种实施方式中关于附图描述的任何部件可能与关于任何其它附图描述的一个或更多个类似名称的部件等同。为了简洁,不对各附图重复这些部件的描述。因此,各附图的部件的每一个实施方式作为参考被加入,并且,被假定为可选地存在于具有一个或更多个类似名称的部件的每个其它附图内。另外,根据本发明的各种实施方式,附图的部件的任何描述要被解释为任选的实施例,该任选的实施方式可结合关于任何其它附图中的相应的类似名称的部件描述的实施方式、除其以外或者作为其替代被实现。总体上,本发明的实施方式涉及使用数据的寿命以将存储设备内的或者写入到存储设备的数据分类的方法和系统。具体而言,本发明的实施方式涉及与短寿命数据分开地存储持久的数据。通过基于寿命将数据分类,根据本发明的一个或多个实施方式,可以减少存储设备中的写入幅度(writeamplitude)。在本发明的一个或多个实施方式中,写入幅度与存储设备的各写入所需要的存储设备中的数据的移动次数对应。由于编写/擦除循环的次数会缩短固态存储器模块的寿命,因此,减少写入幅度具有性能益处。图1示出根据本发明的一个实施方式的系统。如图1所示,该系统包括一个或多个客户机100和存储设备102。以下描述这些部件的每一个。在本发明的一个或多个实施方式中,客户机100是在包括向存储设备102发出读取请求和/或向存储设备发出写入请求的功能的系统上执行的任何系统或处理。在本发明的一个或多个实施方式中,每个客户机100可包括处理器(未示出)、存储器(未示出)和持久存储装置(未示出)。在本发明的一个或多个实施方式中,客户机100与存储设备102操作连接。在本发明的一个或多个实施方式中,存储设备102是包括易失性和持久存储装置并且被配置为服务来自一个或多个客户机100的读取请求和/或写入请求的系统。存储设备102进一步被配置为实施改进的垃圾收集操作,该改进的垃圾收集操作包括以与以下描述的改进的垃圾收集操作(例如,参见图4)一致的方式将任何内容表(toc)条目和碎片移动到长寿命块。存储设备102进一步被配置为以与以下描述的方法一致的方式(例如,参见图3)在存储设备中存储来自写入请求的数据。在本发明的一个或多个实施方式中,存储设备102包括处理器104、存储器106和一个或多个固态存储器模块(例如,固态存储器模块a110a、固态存储器模块b110b、固态存储器模块n110n)。在本发明的一个或多个实施方式中,存储器106可以是包括但不限于动态随机存取存储器(dram)、同步dram、sdrsdram和ddrsdram的任何易失性存储器。在本发明的一个或多个实施方式中,存储器106被配置为在将各种数据(包含用于toc条目和碎片的数据)存储于固态存储器模块(例如,110a、110b、110n)中之前暂时存储这些数据。存储器106可与处理器104操作连接。在本发明的一个或多个实施方式中,处理器104是具有被配置为执行指令的单芯或多芯的一组电子电路。处理器104被配置为执行指令以实现本发明的一个或多个实施方式,这里,该指令被存储于位于存储设备102内或者与其操作连接的非暂时性计算机可读介质(未示出)上。作为替代方案,可使用硬件实现存储设备102。在不背离本发明的情况下,可使用软件和/或硬件的任意组合实现存储设备102。在本发明的一个或多个实施方式中,存储设备102被配置为创建和更新存储器内数据结构108,这里,存储器内数据结构被存储于存储器106中。在本发明的一个或多个实施方式中,存储器内数据结构包括逻辑地址与物理地址之间的映射(直接或间接)。在本发明的一个或多个实施方式中,逻辑地址是从客户机100的观点看表现为数据存在的地址。在本发明的一个或多个实施方式中,逻辑地址是(或包括)通过向n元组应用散列函数(例如,sha-1、md-5等)产生的散列值。在本发明的一个或多个实施方式中,n元组是<对象id,偏移id>,这里,对象id限定对象(例如,文件),并且,偏移id限定相对于对象的开始地址的位置。在本发明的另一实施方式中,n元组是<对象id,偏移id,出生时间>,这里,出生时间与创建文件(通过使用对象id识别)时的时间对应。作为替代方案,逻辑地址可包括逻辑对象id和逻辑字节地址、或者逻辑对象id和逻辑地址偏移。在本发明的另一实施方式中,逻辑地址包括对象id和偏移id。本领域技术人员可以理解,多个逻辑地址可被映射到单个物理地址,并且,逻辑地址不限于以上的实施方式。在本发明的一个或多个实施方式中,物理地址可与存储器106内的位置或者固态存储器模块(例如,110a、110b、110n)内的位置对应。在本发明的一个或多个实施方式中,如果在存储设备102中存在数据的多个副本,那么存储器内数据结构可将单个散列值映射到多个物理地址。在本发明的一个或多个实施方式中,固态存储器模块(例如,110a、110b、110n)与使用固态存储器以存储持久数据的任何数据存储设备对应。在本发明的一个或多个实施方式中,固态存储器可包括但不限于nand快擦写存储器、nor快擦写存储器、磁性ram存储器(m-ram)、旋转扭矩磁性ram存储器(st-mram)、相变存储器(pcm)或定义为非暂时性存储类存储器(scm)的任何其它存储器。本领域技术人员可以理解,本发明不限于图1所示的构成。以下的讨论描述使用固态存储器设备实现的本发明的实施方式。翻到图2a,图2a示出根据本发明的一个或多个实施方式的数据存储设备(未示出)的固态存储器模块。数据存储设备(未示出)可包括多个固态存储器模块。固态存储器模块200包括一个或多个块。在本发明的一个或多个实施方式中,块是固态存储器模块200内的最小的可擦除存储单元。图2b示出根据本发明的一个或多个实施方式的块。具体而言,各块202包括一个或多个页。在本发明的一个或多个实施方式中,页是固态存储器模块中的用于读取和编写操作(包含对于页的初始写入)的最小的可寻址单元。在本发明的一个或多个实施方式中,块内的各页要么为碎片页(参见图2c)要么为toc页(参见图2d)。在本发明的一个或多个实施方式中,在块内重写页需要重写整个块。块具有有限数量的编写(例如,写入)/擦除循环,这里,编写/擦除循环包括将一个或多个页写入到块然后擦除整个块。块中的页可移动到另一块,以跨过块保持类似数量的编写/擦除循环,这称为“耗损均衡”。在本发明的一个或多个实施方式中,长寿命块是存储持久数据的块,这里,持久数据是寿命比至少一个垃圾收集循环长的数据。换句话说,如果数据与活动页相关联,那么数据被确定为持久数据(也被称为“长寿命数据”)(参见图4,414)。在本发明的一个或多个实施方式中,垃圾收集循环与通过块迭代以对存储设备中的各块执行改进的垃圾收集操作(参见图4)对应。在本发明的一个或多个实施方式中,短寿命块是存储短寿命数据或存储具有未知寿命的数据的块。根据本发明的一个或多个实施方式,具有未知寿命的数据被假定为是短寿命的。在本发明的一个或多个实施方式中,短寿命块中的短寿命数据与长寿命块中的持久数据分开地存储。在本发明的一个或多个实施方式中,短寿命块可能在垃圾收集循环结束之前过期或者过时(即,不再使用)。换句话说,短寿命数据是不大可能在改进的垃圾收集操作中移动的数据(参见图4),原因是该数据是死的(例如,过期、过时等)。作为替代方案,虽然具有未知寿命的数据被假定为是短寿命的,但数据也可能是长寿命数据(例如,具有未知寿命的数据如果在垃圾收集过程中位于活动页内则会被视为长寿命数据,例如,参见图4,步骤414)。图2c示出根据本发明的一个或多个实施方式的碎片页。在本发明的一个或多个实施方式中,碎片页204包含一个或更多个碎片。在本发明的一个或多个实施方式中,碎片与有限量的用户数据(例如,由客户机提供的用于存储在存储设备中的数据)对应。此外,给定页内的碎片可具有均匀的尺寸或不均匀的尺寸。此外,给定块内的碎片可具有均匀的尺寸或不均匀的尺寸。在本发明的一个或多个实施方式中,给定的碎片可小于页的尺寸,可以刚好为页的尺寸,或者可以为在一个或多个页上延伸。在本发明的一个或多个实施方式中,碎片页仅包含碎片。在本发明的一个或多个实施方式中,各碎片包含用户数据。图2d示出根据本发明的一个或多个实施方式的toc页。在本发明的一个或多个实施方式中,toc页206包括一个或多个toc条目,这里,每一个toc条目包括给定碎片的元数据。另外,toc页206可包括对块202中的另一toc页的引用。在本发明的一个或多个实施方式中,toc页仅包括toc条目(以及,可选地,对块中的另一toc页的引用),但不包括任何碎片。在本发明的一个或多个实施方式中,各toc条目与块202中的碎片(参见图2c)对应。toc条目仅与块内的碎片对应。换句话说,toc页与块相关联,并且,仅包括用于该块中的碎片的toc条目。在本发明的一个或多个实施方式中,每一个固态存储器模块中的各块中的没有缺陷的最后的页是toc页。图2e示出根据本发明的一个或多个实施方式的块的例子。具体而言,图2e示出包括toc页210、212、214和碎片页216、218、220、222、224、226的块208。在本发明的一个或多个实施方式中,块208在概念上从“底部”到“顶部”被填充。并且,一旦碎片页中的用于碎片的toc条目的累积尺寸等于页的尺寸,就产生和存储toc页。翻到图2e,例如,碎片页0216和碎片页1218被存储于块208中。用于碎片页0216和碎片页1218中的碎片(未示出)的相应的toc条目(未示出)具有等于块中的页的尺寸的总累积尺寸。因此,产生(使用与块中的碎片对应的toc条目)并且存储toc页214于块208中。碎片页2220随后被写入到块208。由于与碎片页2220中的碎片(未示出)对应的toc条目具有等于块中的页的尺寸的总累积尺寸,因此,在块208中创建并存储toc页212。并且,由于在块208中已存在toc页,因此,toc页212也包括对toc页214的引用。重复该处理直到在块208中仅存在一个要填充的页。此时,创建并存储toc页210于块208的最后的页中。本领域技术人员可以理解,toc页210中的toc条目的总累积尺寸可小于页的尺寸。在这些情况下,toc页可包括填充(padding)以解决toc条目的累积尺寸与页尺寸之间的差。最后,由于在块208中存在其它的toc页,因此,toc页210包括对一个其它的toc页212的引用。如图2e所示,将toc页从块的“顶部”链接到页的“底部”,使得可通过追随来自“高于”该toc页的toc页的引用,获得该toc页。例如,可使用toc页210中的引用访问toc页212。本领域技术人员可以理解,虽然块208仅包含碎片页和toc页,但是,在不背离本发明的情况下,块208可包含碎片页和toc页以外的页(例如,包含奇偶数据的页)。这种其它的页可位于块内,并且,根据其实施,在toc页与碎片页之间交错。图2f示出根据本发明的一个或多个实施方式的toc条目。在本发明的一个或多个实施方式中,各toc条目230包含用于碎片的元数据,并且,可包含以下栏(field)中的一个或多个:(i)对象id232,其识别正在被存储的对象;(ii)出生时间234,其指定与toc条目对应的碎片被写入到固态存储器模块的时间(例如,控制模块中的处理器的处理器时钟值);(iii)偏移id236,其识别相对于对象(由对象id识别)的开始的对象中的点;(iv)碎片尺寸238,其指定碎片的尺寸;(v)页id240,其识别存储碎片的块中的页;和(vi)字节242,其识别页(由页id识别)中的碎片的开始位置。在不背离本发明的情况下,toc条目230可包含其它的栏(由其它248表示)。本领域技术人员可以想到,在不背离本发明的情况下,toc条目可包含比图2f所示的栏多或少的栏。并且,在不背离本发明的情况下,可通过不同的次序配置和/或组合toc条目中的栏。另外,虽然图2f所示的toc条目中的栏表现为均具有相同的尺寸,但toc条目中的各种栏的尺寸可以是不均匀的,使得任何给定栏的尺寸基于toc条目的实施改变。翻到流程图,虽然以依次的方式给出和描述流程图中的各步骤,但本领域技术人员可以理解,可以按不同的次序执行、可以组合或者省略步骤中的一些或全部,并且,可以并行执行步骤中的一些或全部。在本发明的一个或多个实施方式中,图3和图4所示的一个或多个步骤可以与图3和图4所示的其它步骤中的一个或多个并行地执行。具体而言,在图3中接收的写入请求和图4中的改进的垃圾收集操作可并行发生。因此,根据本发明的一个或多个实施方式,基于数据的寿命在存储设备内将数据分类可导致来自写入请求的潜在合并数据(如果已知为持久数据)和来自改进的垃圾收集操作的移动数据。翻到图3,图3示出根据本发明的一个或多个实施方式的接收写入请求的流程图。在步骤302中,从客户机接收将数据写入到存储设备的写入请求。该请求可包含将被存储的数据或者可包含将被存储的数据的引用。在不背离本发明的情况下,请求可采取任何形式。在步骤304中,确定数据是否为持久数据。在本发明的一个或多个实施方式中,可通过应用编程界面(api)来确定数据是持久数据,该应用编程界面向存储设备传达数据是持久的。例如,可向写入请求或者向存储设备识别为持久的数据自身添加标签或位。在不背离本发明的情况下,向存储设备传达数据是持久的可涉及其它方法。如果确定数据是持久数据,那么方法可前进到步骤306。在步骤306中,识别长寿命块。在本发明的一个或多个实施方式中,可以选择任何自由或空块作为长寿命块。另外,或者作为替代方案,可以选择编写/擦除循环高于一定的阈值的块作为用于对块进行耗损均衡的长寿命块。在这种情况下,写入到长寿命块的持久数据具有较高的可能性保持在块中,由此减少长寿命块的编写/擦除循环。在不背离本发明的情况下,可以使用用于选择长寿命块的替代性方法。在步骤308中,数据被写入到长寿命块。在本发明的一个或多个实施方式中,数据作为碎片(一般作为碎片页的一部分)被存储于长寿命块中。对长寿命块中的碎片(一般作为toc页的一部分)产生和存储toc条目。返回到步骤304,如果确定数据不是持久数据,那么方法可前进到步骤310。在本发明的一个或多个实施方式中,如果数据不是持久数据,那么数据被称为短寿命(例如,通过api)的或者数据具有未知寿命。根据本发明的一个或多个实施方式,与长寿命块中的持久数据相分离地将数据存储在短寿命块中。换句话说,在长寿命块中的持久数据与短寿命块中的数据之间不存在重叠。在步骤310中,识别短寿命块。在本发明的一个或多个实施方式中,可以选择任何自由或空块作为短寿命块。另外,或者作为替代方案,可以选择编写/擦除循环低于一定的阈值的块作为用于对块进行耗损均衡的短寿命块。在这种情况下,写入到短寿命块的数据具有较高的可能性被擦除,由此增加短寿命块的编写/擦除循环。在不背离本发明的情况下,可以使用用于选择短寿命块的替代性方法。在步骤312中,数据被写入到短寿命块。在本发明的一个或多个实施方式中,数据作为碎片(一般作为碎片页的一部分)被存储于短寿命块中。对于短寿命块中的碎片(一般作为toc页的一部分)产生和存储toc条目。翻到图4,图4示出根据本发明的一个或多个实施方式的改进的垃圾收集操作的流程图。如上所述,改进的垃圾收集操作可与通过存储设备接收的写入请求并行地发生。在步骤402中,选择存储设备中的块。在步骤404中,选择块中的toc页。在步骤406中,选择块中的toc页中的toc条目。在步骤408中,使用toc条目中的信息产生被导出物理地址。在本发明的一个或多个实施方式中,用于碎片的被导出物理地址被定义为以下的n元组:<存储模块,信道,芯片选通,lun,面,块,页id,字节>,这里,页id和字节被存储于toc条目中,并且,可从页id和字节导出n元组中的剩余的数据。在步骤410中,通过使用toc条目中的n元组<对象id,偏移id>查找存储器内数据结构中的被存储物理地址。在本发明的一个或多个实施方式中,存储器内数据结构包含n元组(例如,<对象id,偏移id>、<对象id,偏移id,出生时间>)与碎片的被存储物理地址之间的映射。在步骤412中,确定被导出物理地址是否匹配被存储物理地址。在本发明的一个或多个实施方式中,如果与toc条目相关联的碎片是活动的(例如,到目前,处于使用中),那么被导出物理地址匹配被存储物理地址。在本发明的一个或多个实施方式中,如果与toc条目相关联的碎片是死的(例如,不再使用、过期、过时),那么被导出物理地址不匹配被存储物理地址。如果确定被导出物理地址与被存储物理地址匹配,那么方法可前进到步骤414;否则,方法可前进到步骤416。在步骤414中,与toc条目相关联的碎片被标记为活动的。例如,一个或多个位可与碎片相关联以将碎片标记为活动的。在步骤416中,与toc条目相关联的碎片被标记为死的。例如,一个或多个位可与碎片相关联以将碎片标记为死的。在步骤418中,确定在toc页中是否存在剩余的toc条目。在本发明的一个或多个实施方式中,toc页包含一个或多个toc条目。如果确定在toc页中存在剩余的toc条目,那么方法可返回到上述的步骤406;否则,方法可前进到步骤420。在步骤420中,确定在块中是否存在剩余的toc页。在本发明的一个或多个实施方式中,在块中可存在一个或多个toc页。如果确定在块中存在剩余的toc页,那么方法可返回到上述的步骤404;否则,方法可前进到步骤422。在步骤422中,确定是否块中的所有页被标记为死的。如果确定块中的所有页被标记为死,那么方法可前进到步骤424;否则,方法可前进到步骤428。在步骤424中,由于不需要数据的移动,因此,块被擦除。在步骤426中,确定在固态存储器模块中是否存在剩余的块。在本发明的一个或多个实施方式中,固态存储器模块包含一个或多个块。如果确定在固态存储器模块中存在剩余的块,那么方法可返回到上述的步骤402。在步骤428中,确定是否块中的所有页被标记为活动的。如果确定块中的所有页被标记为活动的,那么方法可前进到步骤430;否则,方法可前进到步骤432。在步骤430中,确定是否需要耗损均衡。如上所述,耗损均衡跨过固态存储器模块中的块平衡编写/擦除循环的数量。在本发明的一个或多个实施方式中,如果块具有低于阈值的编写/擦除循环值,那么需要耗损均衡。换句话说,该块可能需要编写/擦除循环以防止具有更高的编写/擦除循环的另一块增加其编写/擦除循环值。如果确定需要耗损均衡,那么方法可前进到步骤432;否则,方法可返回到步骤426。在步骤432中,各活动页被移动到长寿命块。在本发明的一个或多个实施方式中,由于各活动页比至少一个垃圾收集循环持久,因此,各活动页被视为持久数据。在本发明的一个或多个实施方式中,可以选择任何自由或空块作为长寿命块。另外,或者作为替代方案,可以选择编写/擦除循环高于一定的阈值的块作为用于对块进行耗损均衡的长寿命块。在这种情况下,写入到长寿命块的持久数据应保持在块中,从而减少长寿命块的编写/擦除循环。在不背离本发明的情况下,可以使用用于选择长寿命块的替代性方法。在本发明的一个或多个实施方式中,数据作为碎片(一般作为碎片页的一部分)在长寿命块中重写。对长寿命块中的碎片(一般作为toc页的一部分)产生和存储toc条目。然后该方法可返回到上述的步骤424。图5a~6b示出根据本发明的一个或多个实施方式的各种例子。例子不是要限制本发明的范围。图5a和图5b示出常规的服务写入请求和常规的垃圾收集操作的例子。图6a和图6b示出根据本发明的一个或多个实施方式,给定改进的垃圾收集操作时数据移动的例子。为了进行性能比较,图5a和图5b中的条件(例如,接收的写入请求的数量、写入请求的时机、某些块的内容)与图6a和图6b中的条件相同。参照图5a,考虑与接收写入请求w1、w2、w4、w5、w6、w7和w8并行地在块0、块1、块2和块3上发生垃圾收集的第一迭代的情形,这里,在w4和w8中写入的数据是持久数据。块4和块5是空的,并且,可用于写入任何移动数据或来自写入请求的数据。首先与接收写入请求w1、w2和w3并行地在块0上发生垃圾收集操作。由于块0中的各页被标记为死的,因此块0被擦除。块4被随机选择为写入来自写入请求w1、w2和w3的数据。另外,分别产生并且作为块4中的toc页4的一部分存储与w1、w2和w3相关联的toc条目。然后在块1上执行垃圾收集。块1中的仅有的需要移动的活动页是页j。对于页j的移动随机选择块4。另外,产生并且作为块4中的toc页4的一部分存储与页j相关联的toc条目。在页j的移动之后,块1被擦除。然后接收写入请求w4。块4被随机选择为写入与w4相关联的数据。另外,产生并且作为块4中的toc页4的一部分存储与w4相关联的toc条目。然后与接收写入请求w5、w6和w7并行地在块2上发生垃圾收集。页q、o和n是块2中的需要移动的活动页。页q和o和与w5、w6和w7相关联的数据被随机选择为移动到块5。另外,分别产生并且作为块5中的toc页5的一部分存储与q、o、w5、w6和w7相关联的toc条目。页n被随机选择为移动到块4。产生并且作为块4中的toc页4的一部分存储与n相关联的toc条目。在页q、o和n的移动之后,块2被擦除。最后,与接收写入请求w8并行地在块3上发生垃圾收集。在块3中所有页是活动的。不需要对块3进行耗损均衡,因此,在块3中不发生移动。w8被随机选择为写入到块5。另外,产生并且作为块5中的toc页5的一部分存储与w8相关联的toc条目。垃圾收集操作已循环通过每一个块(即,块0、块1、块2和块3),以将任何活动页移动到块4或块5。并且,与垃圾收集并行地接收的写入请求被分配给块4或块5。给定总共8个写入请求时,在第一迭代中需要4次移动。参照图5b,考虑在图5a所讨论的第一迭代之后发生垃圾收集的第二迭代的情形。与接收写入请求w9、w10、w11、w12、w13、w14和w15并行地在块2、块3、块4和块5上发生垃圾收集的第二迭代,这里,w13是长寿命或持久数据。块0和块1在图5b中在第一迭代之后被擦除并且可用于写入任何移动数据或来自写入请求的数据。与接收写入请求w9、w10、w11和w12并行地在块2上开始垃圾收集。块2在第一迭代(参见图5a)中被擦除,并且,不包含任何要移动的页。块0被随机选择为写入与写入请求w9、w10、w11和w12相关联的数据。另外,分别产生并且作为块0中的toc页6的一部分存储与w9、w10、w11和w12相关联的toc条目。然后与接收写入请求w13并行地在块3上发生垃圾收集。在第一迭代(参见图5a)中在块3中所有活动的页保持活动。如以上在图5a中讨论的那样,不需要对块3进行耗损均衡,因此再一次在块3中不发生移动。块0被随机选择为写入与w13相关联的数据。另外,产生并且作为块0中的toc页6的一部分存储与w13相关联的toc条目。然后与接收写入请求w14和w15并行地在块4上执行垃圾收集。页w6和w7是块4中的需要移动的活动页。与写入页w6和w7并行地,块1被随机选择为写入与w15相关联的数据。另外,分别产生并且作为块1中的toc页7的一部分存储与w15、w6和w7相关联的toc条目。块0被随机选择为写入与w14相关联的数据。也产生并且作为块0中的toc页6的一部分存储与w14相关联的toc条目。在页w6和w7的移动之后,擦除块4。最后,在块5上发生垃圾收集。在块5中所有页是活动的。不需要对块5进行耗损均衡,因此在块5中不发生移动。垃圾收集已循环通过每一个块(即,块2、块3、块4和块5)中,以将任何活动页移动到块0或块1。并且,与改进的垃圾收集操作并行地接收的写入请求被分配给块0或块1。给定总共7个写入请求时,在第二迭代中需要8次移动。在这两次迭代中,存在用于15次数据写入的12次移动。写入幅度然后可被计算为1次写入+(12次移动/15次写入)=1.8。换句话说,对于每次写入,需要0.8次附加写入。参照图6a,考虑与接收写入请求w1、w2、w4、w5、w6、w7和w8并行地在块0、块1、块2和块3上发生改进的垃圾收集操作的第一迭代的情形,这里,在w4和w8中写入的数据是持久数据。块4被选择为短寿命块,并且,块5被选择为长寿命块。首先与接收写入请求w1、w2和w3并行地在块0上发生改进的垃圾收集操作。由于块0中的各页被标记为死的,因此,块0被擦除。w1、w2和w3的寿命是未知的。因此,w1、w2和w3被写入到块4(短寿命块)。另外,分别产生并且作为块4(短寿命块)中的toc页4的一部分存储与w1、w2和w3相关联的toc条目。然后在块1上执行改进的垃圾收集操作。块1中的仅有的需要移动的活动页是页j。由于页j存活或者比垃圾收集持久,因此,页j可能是持久数据。页j然后移动到块5(长寿命块)。另外,产生并且作为块5(长寿命块)中的toc页5的一部分存储与页j相关联的toc条目。在页j的移动之后,块1被擦除。然后接收写入请求w4。通过应用编程界面(api)将w4传达为包含持久数据。w4然后被写入到块5(长寿命块)中而不是为具有未知寿命的写入请求保留的块4(短寿命块)中。另外,产生并且作为块5(长寿命块)中的toc页5的一部分存储与w4相关联的toc条目。然后与接收写入请求w5、w6和w7并行地在块2上发生改进的垃圾收集操作。页q、o和n是块2中的需要移动的活动页。再一次,由于当发生垃圾收集时页q、o和n是活动的,因此,页q、o和n可能是持久数据。与写入请求w5、w6和w7相关联的数据的寿命是未知的,并且,可能是短寿命的。然后,与写入w5、w6和w7到块4(短寿命块)中并行地,页q、o和n移动到块5(长寿命块)中。另外,分别产生并且作为块4(短寿命块)中的toc页4的一部分存储与w5、w6和w7相关联的toc条目。还分别产生并且作为块5(长寿命块)中的toc页5的一部分存储与页q、o和n相关联的toc条目。在页q、o和n的移动之后,块2被擦除。最后,与接收写入请求w8并行地在块3上发生改进的垃圾收集操作。在块3中所有的页是活动的。不需要对块3进行耗损均衡,因此,在块3中不发生移动。与写入请求w4类似,写入请求w8通过api传达w8包含持久数据。w8然后被写入到块5(长寿命块)。另外,产生并且作为块5(长寿命块)中的toc页5的一部分存储与w8相关联的toc条目。改进的垃圾收集操作已循环通过每一个块(即,块0、块1、块2和块3),以将任何活动页移动到块5(长寿命块)。并且,如果已知写入请求包含持久数据(例如,w4、w8),那么与改进的垃圾收集操作并行地接收的写入请求被分配给块5(长寿命块)。否则,写入请求被分配给块4(短寿命块)。给定总共8个写入请求时,在第一迭代中需要4次移动。参照图6b,考虑在图6a所讨论的第一迭代之后发生改进的垃圾收集操作的第二迭代的情形。与接收写入请求w9、w10、w11、w12、w13、w14和w15并行地在块2、块3、块4和块5上发生改进的垃圾收集操作的第二迭代,这里,w13是长寿命或持久数据。在第一迭代(参见图6a)中擦除的块0被选择为短寿命块。在第一迭代(参见图6a)中擦除的块1被选择为长寿命块。与接收写入请求w9、w10、w11和w12并行地在块2上开始改进的垃圾收集操作。块2在第一迭代(参见图5a)中被擦除,并且,不包含任何要移动的页。w9、w10、w11和w12的寿命是未知的。因此,w9、w10、w11和w12被写入块0(短寿命块)。另外,分别产生并且作为块0(短寿命块)中的toc页6的一部分存储与w9、w10、w11和w12相关联的toc条目。然后与接收写入请求w13并行地在块3上发生改进的垃圾收集操作。在第一迭代(参见图6a)中在块3中所有活动的页保持活动。如以上在图6a中讨论的那样,不需要对块3进行耗损均衡,因此再一次在块3中不发生移动。通过api,写入请求w13被传达为包含持久数据。w13被写入块1(长寿命块)而不是为具有未知寿命或者已知的短寿命的写入请求保留的块0(短寿命块)。另外,产生并且作为块1(长寿命块)中的toc页7的一部分存储与w13相关联的toc条目。然后与接收写入请求w14和w15并行地在块4上执行改进的垃圾收集。写入请求w14和w15均具有未知寿命的数据,并且,可能是短寿命的。页w6和w7是块4中的需要移动的活动页。由于当发生垃圾收集时页w6和w7是活动的,因此页w6和w7可能是持久数据。然后,与写入w14和w15到块0(短寿命块)并行地,页w6和w7移动到块1(长寿命块)。另外,分别产生并且作为块1(长寿命块)中的toc页7的一部分存储与w6和w7相关联的toc条目。还分别产生并且作为块0(短寿命块)中的toc页6的一部分存储与w14和w15相关联的toc条目。在页w6和w7的移动之后,块4被擦除。最后,在块5上发生改进的垃圾收集操作。在块5中所有的页是活动的。不需要对块5进行耗损均衡,因此,在块5中不发生移动。改进的垃圾收集操作已循环通过每一个块(即,块2、块3、块4和块5),以将任何活动页移动到块1(长寿命块)。并且,如果已知写入请求包含持久数据(例如,w13),那么与改进的垃圾收集操作并行地接收的写入请求被分配给块1(长寿命块)。否则,写入请求被分配给块0(短寿命块)。给定总共7个写入请求时,在第二迭代中需要2次移动。在这两次迭代中,存在用于15次数据写入的6次移动。写入幅度然后可被计算为1次写入+(6次移动/15次写入)=1.4。换句话说,对于每次写入,需要0.4次附加写入。通过在接收写入请求的同时在改进的垃圾收集操作过程中基于寿命将数据分类实现的1.4的写入幅度是通过在接收写入请求的同时在常规的垃圾收集过程中忽略数据寿命实现的1.8的写入幅度的改善。本发明的一个或多个实施方式提供基于数据的寿命将存储于存储设备中的数据分类的系统和方法。以这种方式,所有已知为持久数据的数据被存储于长寿命块中,而短寿命数据或具有未知寿命的数据被存储于短寿命块中。通过根据本发明的各种实施方式配置数据,存储设备通过减少垃圾收集过程中的数据移动改善给定固态存储器模块(或其子集)的性能。通过减少垃圾收集过程中的数据移动,根据本发明的一个或多个实施方式,存储设备中的写入幅度可最小化。由于对各写入而言数据移动减少,因此,将写入幅度最小化可导致固态存储器模块的编写/擦除循环的次数更少。由于编写/擦除循环的次数会减少固态存储器模块的寿命,因此,通过使写入幅度最小化获得性能增益。并且,本发明的实施方式使得能够创建允许存储设备在单个查找步骤中访问数据的存储器内数据结构。换句话说,存储设备可使用存储器内数据结构,以直接查明存储设备中的数据的物理地址。使用该信息,存储设备能够直接访问数据并且不需要为了获得数据横穿任何中间元数据层次。可通过使用由系统中的一个或多个处理器执行的指令实现本发明的一个或多个实施方式。并且,这种指令可与存储于一个或多个非暂时性计算机可读介质上的计算机可读指令对应。虽然关于有限数量的实施方式描述了本发明,但本领域技术人员在受益于本公开之后可以理解,可在不背离这里公开的本发明的范围的情况下设计其它实施方式。因此,本发明的范围仅由所附的权利要求限定。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1