使用XCOPY和多逻辑条带的优化的基于主机的垃圾收集策略的高效实现方式的制作方法

文档序号:15307330发布日期:2018-08-31 21:12阅读:262来源:国知局
所公开的实施例总体上涉及存储器系统,有时称为数据存储系统,并且具体地涉及使用闪速装置的阵列和主机确定的命令的优化的基于主机的垃圾收集策略的有效实现方式,以在内部将有效数据复制到存储系统。
背景技术
::包括闪速存储器的半导体存储器装置通常利用存储器单元将数据存储为电值,诸如电荷或电压。例如,闪速存储器单元包括具有浮置栅极的单个晶体管,该浮置栅极用于存储代表数据值的电荷。闪速存储器是可以电擦除和重新编程的非易失性数据存储装置。更一般地,与需要电力维持所存储的信息的易失性存储器相反,非易失性存储器(例如,闪速存储器,以及使用各种技术中的任一种实现的其他类型的非易失性存储器)即使在未供电时也保留所存储的信息。存储密度的增加已经以各种方式得到促进,包括通过制造开发增加使能的芯片上的存储器单元的密度,以及从单级闪速存储器单元转换到多级闪速存储器单元,使得两个或更多个位可以由每个闪速存储器单元存储。由于闪速存储器只能被编程和擦除有限的次数,所以优化存储器管理方案(例如垃圾收集、耗损均衡、高速缓存等)以提高存储器装置的性能和耐用性是很重要的。垃圾收集是存储器管理的过程,其回收存储器的不再含有有效数据的部分。使用闪速存储器作为示例,数据以称为页的单位写入闪速存储器,页由多个存储单元组成。然而,闪速存储器以称为块的较大单位被擦除,块由多个页组成。如果第一个块的一些页包含有效数据,则这些页不会被重写,直到含有这些页的整个块被擦除。垃圾收集的过程读取来自第一个块的有效数据并将其重新写入第二个块,然后擦除第一个块。在垃圾收集后,第二个块含有具有有效数据的页和可用于写入新数据的空闲页。由于闪速存储器只能进行有限次数的编程和擦除,因此利用最大化或改善基于闪速的存储系统的寿命的垃圾收集机制是重要的。技术实现要素:在所附权利要求的范围内的系统、方法和装置的各种实施例均具有若干方面,其中没有任何单个的一个仅仅负责本文描述的属性。在不限制所附权利要求的范围的情况下,在考虑了本公开之后,并且特别是在考虑标题为“具体实施方式”的部分之后,将理解如何使用各种实施例的各方面来实现使用闪速装置的阵列和主机确定的命令(例如xcopy)来优化基于主机的垃圾收集策略的有效实现方式,以在内部将有效数据复制到存储系统。在一个方面,一种管理具有一个或多个存储装置的存储系统的方法包括基于主机的垃圾收集操作,该基于主机的垃圾收集操作包括:根据存储在主机系统处的数据存储信息,识别两个或更多个逻辑条带,以及使能在两个或多个逻辑条带中合并有效数据的过程。合并过程包括移动两个或更多个逻辑条带中的有效数据,并且将有效逻辑地址(即存储有效数据的逻辑地址)重新打包到两个或多个逻辑条带中的每一个的开始处。因此,基于主机的垃圾收集(例如,更好地匹配变化的工作量的垃圾收集)被用来完成存储系统所需的大部分垃圾收集,并且多个逻辑条带可用于分组写入数据(例如根据预期寿命分组的数据)。附图说明为了能够更详细地理解本公开,可以通过参考各种实施例的特征来进行更具体的描述,其中一些实施例的特征在附图中示出。然而,附图仅示出了本公开的相关特征,因此不被认为是限制性的,因为该描述可以承认其他有效特征。图1是示出了根据一些实施例的数据存储系统的实现方式的框图。图2a是示出了根据一些实施例的主机计算装置的框图。图2b是示出了根据一些实施例的非易失性存储器控制器的存储器管理模块的框图。图2c是示出了根据一些实施例的包含在图2a和图2b中的次级映射表的图。图3是根据一些实施例的分层式数据结构的概念图。图4是示出了根据一些实施例的内部复制操作(例如xcopy)的图。图5是根据一些实施例的基于主机的垃圾收集操作的概念流程图。图6a-6d图示了根据一些实施例的管理存储系统的方法的流程图表示。根据惯例,附图中图示的各种特征可能不是按比例绘制的。因此,为了清楚起见,各种特征的尺寸可以任意扩大或缩小。另外,一些附图可能没有描述给定系统、方法或装置的所有组件。最后,贯穿说明书和附图,相同的附图标记可以用来表示相同的特征。具体实施方式非易失性存储器系统通常用于存储信息的数据库,例如存储数据对象及其属性的数据库。通常将数据库组织并存储为分层式数据结构,例如具有其中存储有数据对象、指向数据对象的指针和属性(有时称为元数据)的节点的树数据结构(例如b树)。在写入对象时,一些映射算法(例如基于b树的映射算法)需要最少两个i/o操作:一个用于写入数据,另一个用于写入更新的元数据(例如,用于改变叶子b树节点)。对于这些映射算法,通过使用写入序列化来改善性能,其通过在写入存储之前将多个小写入序列化到整个条带中来避免额外的i/o操作。在下面描述的方法和系统的一些实施例中,为了有效地进行写入序列化,主机进行垃圾收集以回收目标条带内的自由空间的连续区域。本文描述的各种实施例包括系统、方法和/或装置,其用于使用闪存装置的阵列和用于在存储系统内复制有效数据的主机确定的内部复制操作(例如,xcopy)来实现优化的基于主机的垃圾收集策略的高效实现方式。一些实施例包括系统、方法和/或装置,以根据存储在主机系统处的数据存储信息识别两个或更多个逻辑条带,并启用合并两个或更多个逻辑条带中的有效数据的过程,该合并过程包括移动每个识别的逻辑条带中的有效数据,并将有效逻辑地址(即,存储有效数据的逻辑地址)重新打包到对应的逻辑条带的连续部分(例如,在目标逻辑条带的开始处),该目标逻辑条带包括相应的逻辑条带或不同于该相应的逻辑条带的另一逻辑条带。(a1)更具体地说,一些实施例包括管理具有多个存储装置的存储系统的方法。在一些实施例中,该方法包括,在不同于该多个存储装置的主机系统处进行基于主机的垃圾收集操作,包括:根据存储在该主机系统处的数据存储信息,识别两个或更多个逻辑条带,每个逻辑条带对应于该主机系统的逻辑地址空间中的逻辑地址的连续序列,其中每个逻辑条带的逻辑地址的相应的连续序列对应于该多个存储装置的物理地址空间中的物理地址的一个或多个连续序列。另外,该基于主机的垃圾收集操作包括合并该两个或更多个逻辑条带中的有效数据,其包括,对于该两个或更多个逻辑条带中的有效逻辑地址的每个连续序列:(1)从该主机系统向该多个存储装置中的一个或多个存储装置发送指令,以将对应于该有效逻辑地址的相应的连续序列的数据从该物理地址空间中的第一物理位置移动到该物理地址空间中的第二物理位置;以及(2)对于该两个或更多个逻辑条带的每个相应的逻辑条带,将该相应的逻辑条带中的有效逻辑地址重新打包到目标逻辑条带连续部分,该目标逻辑条带包括该相应的逻辑条带或不同于该相应的逻辑条带的另一逻辑条带。(a2)在a1的方法的一些实施例中,识别该两个或更多个逻辑条带包括确定该基于主机的垃圾收集操作需要多少个逻辑条带。(a3)在a1至a2中的任一个的方法的一些实施例中,识别该两个或更多个逻辑条带包括根据选择标准识别该两个或更多个逻辑条带。(a4)在a1至a3中的任一个的方法的一些实施例中,该方法还包括:将该多个存储装置分区为两个或更多个区域,其中该两个或更多个区域中的相应的区域对应于该两个或更多个逻辑条带中的相应的逻辑条带。(a5)在a4的方法的一些实施例中,分区该多个存储装置包括:(1)确定该基于主机的垃圾收集操作需要多少个区域,(2)确定该两个或更多个区域的大小;以及(3)确定该两个或更多个区域的超额配置量。(a6)在a4的方法的一些实施例中,分区该多个存储装置包括,随着该存储系统的工作量的变化,动态地条调整该两个或更多个区域。(a7)在a1至a6中的任一个的方法的一些实施例中,该方法还包括,在合并该两个或更多个逻辑条带中的有效数据后:(1)分类传入的写入请求;以及(2)根据分类标准来选择逻辑条带,在该逻辑条带中放置该传入的写入请求。(a8)在a1至a7中的任一个的方法的一些实施例中,该两个或更多个逻辑条带包括第一逻辑条带和第二逻辑条带,且其中该第一逻辑条带用于具有第一组特性的数据,且该第二逻辑条带用于具有不同于该第一组特性的第二组特性的数据。(a9)在a1至a8中的任一个的方法的一些实施例中,合并该两个或更多个逻辑条带中的有效数据包括根据迁移标准在该两个或更多个逻辑条带中的不同的逻辑条带之间迁移数据。(a10)在a1至a9中的任一个的方法的一些实施例中,从该主机系统向该一个或多个存储装置发送指令以移动对应于该有效逻辑地址的相应的连续序列的数据包括,向该一个或多个存储装置发布一个或多个xcopy命令。(a11)在a1至a10中的任一个的方法的一些实施例中,移动数据的该指令包括复制指令,该复制指令将对应于该两个或更多个逻辑条带中的有效逻辑地址的数据从该多个存储装置中的初始存储器部分复制到该多个存储装置的对应于该两个或更多个逻辑条带中的新的逻辑地址的不同的存储器部分。(a12)在a1至a11中的任一个的方法的一些实施例中,该方法还包括:对于该两个或更多个逻辑条带中的有效逻辑地址的每个连续序列,在发送该指令后,使对应于该物理地址空间中的第一物理位置处的该有效逻辑地址的相应的连续序列的数据无效。(a13)在a1至a12中的任一个的方法的一些实施例中,该方法还包括:根据满足该存储系统的第一垃圾收集调度标准的确定,触发该基于主机的垃圾收集操作的进行,其中该存储系统的第一垃圾收集调度标准独立于第二垃圾收集调度标准,该第二垃圾收集调度标准用于触发该多个存储装置中的每个存储装置内的内部垃圾收集操作的进行。(a14)在a13的方法的一些实施例中,触发该基于主机的垃圾收集操作的进行,以确保每个存储装置内的内部垃圾收集操作最小化。(a15)在a13的方法的一些实施例中,该第一垃圾收集调度标准包括对应于该存储系统的写入操作工作量的标准。(a16)在a13的方法的一些实施例中,该第一垃圾收集调度标准包括对应于该存储系统的预计操作工作量的标准。(a17)在a13或a16的方法的一些实施例中,该第一垃圾收集调度标准包括对应于该存储系统中的空逻辑条带的数量的标准。(a18)在a13、a16和a17中的任一个的方法的一些实施例中,该方法还包括:根据该存储系统的工作量随时间的变化,修改该第一垃圾收集调度标准。(a19)在a1至a18中的任一个的方法的一些实施例中,该方法还包括:在一段时间内,重复地进行该基于主机的垃圾收集操作,以确保由该主机系统管理的至少最小数量的逻辑条带可用于在其中放置写入数据。(a20)在a1至a19中的任一个的方法的一些实施例中,该方法由主机控制,该主机包括客户端,代表该客户端将数据存储在该存储系统中。(a21)在a1至a19中的任一个的方法的一些实施例中,该方法由主机控制,该主机包括该存储系统的存储系统控制器。(a22)在a1至a19中的任一个的方法的一些实施例中,该方法由主机控制,该主机包括该存储系统的集群控制器。(a23)在a1至a12中的任一个的方法的一些实施例中,该多个存储装置包括一个或多个闪速存储器装置。(a24)在另一方面,一种主机系统包括可操作地耦接到具有多个存储装置的存储系统的接口、一个或多个处理器、以及存储一个或多个程序的存储器(例如,在该控制器中或耦接到该控制器的非易失性存储器或易失性存储器)。该一个或多个程序包括指令,当由该一个或多个处理器执行时,该指令使得不同于该多个存储装置的主机系统进行基于主机的垃圾收集操作,包括:根据存储在该主机系统处的数据存储信息,识别两个或更多个逻辑条带,每个逻辑条带对应于该主机系统的逻辑地址空间中的逻辑地址的连续序列,其中每个逻辑条带的逻辑地址的相应的连续序列对应于该多个存储装置的物理地址空间中的物理地址的一个或多个连续序列。另外,该基于主机的垃圾收集操作包括合并该两个或更多个逻辑条带中的有效数据,其包括,对于该两个或更多个逻辑条带中的有效逻辑地址的每个连续序列:(1)从该主机系统向该多个存储装置中的一个或多个存储装置发送指令,以将对应于该有效逻辑地址的相应的连续序列的数据从该物理地址空间中的第一物理位置移动到该物理地址空间中的第二物理位置;以及(2)对于该两个或更多个逻辑条带的每个相应的逻辑条带,将该相应的逻辑条带中的有效逻辑地址重新打包到目标逻辑条带连续部分,该目标逻辑条带包括该相应的逻辑条带或不同于该相应的逻辑条带的另一逻辑条带。(a25)在a24的主机系统的一些实施例中,该一个或多个程序包括具有指令的压缩模块,该指令用于将对应于该有效逻辑地址的相应的连续序列的有效数据从该物理地址空间中的第一物理位置移动到该物理地址空间中的第二物理位置,且对于每个逻辑条带,将该相应的逻辑条带中的有效逻辑地址重新打包到该相应的逻辑条带的开始。(a26)在a24或a25的主机系统的一些实施例中,该一个或多个程序包括指令,当由该一个或多个处理器执行时,该指令使得该主机系统进行或控制本文所述的a2至a23的方法中的任一个的进行。(a27)在又一方面,上述a1至a23的方法中的任一个由主机系统进行,该主机系统包括用于进行本文所述的任一个方法的装置。(a28)在又一方面,一种存储系统包括存储介质(例如,包括一个或多个非易失性存储装置,例如闪速存储器装置)、一个或多个处理器、以及存储一个或多个程序的存储器(例如,存储系统中的非易失性存储器或易失性存储器),当由该一个或多个处理器执行时,该一个或多个程序使得该存储系统进行或控制本文所述的a1至a23的方法中的任一个的进行。(a29)在又一方面,一些实施例包括一种非暂时性计算机可读存储介质,其存储配置为由存储装置的一个或多个处理器执行的一个或多个程序,该一个或多个程序包括用于进行本文所述的a1至a23的方法中的任一个的指令。(a30)在又一方面,一种存储系统包括多个存储装置、具有一个或多个处理器的一个车或多个子系统、以及存储一个或多个程序的存储器。该一个或多个程序包括指令,当由该一个或多个处理器执行时,该指令使得该存储系统在不同于该多个存储装置的主机系统处进行基于主机的垃圾收集操作。该基于主机的垃圾收集操作包括:根据存储在该主机系统处的数据存储信息,识别两个或更多个逻辑条带,每个逻辑条带对应于该主机系统的逻辑地址空间中的逻辑地址的连续序列,其中每个逻辑条带的逻辑地址的相应的连续序列对应于该多个存储装置的物理地址空间中的物理地址的一个或多个连续序列。另外,该基于主机的垃圾收集操作包括合并该两个或更多个逻辑条带中的有效数据,其包括,对于该两个或更多个逻辑条带中的有效逻辑地址的每个连续序列:(1)从该主机系统向该多个存储装置中的一个或多个存储装置发送指令,以将对应于该有效逻辑地址的相应的连续序列的数据从该物理地址空间中的第一物理位置移动到该物理地址空间中的第二物理位置;以及(2)对于该两个或更多个逻辑条带的每个相应的逻辑条带,将该相应的逻辑条带中的有效逻辑地址重新打包到目标逻辑条带连续部分,该目标逻辑条带包括该相应的逻辑条带或不同于该相应的逻辑条带的另一逻辑条带。(a31)在a30的次数系统的一些实施例中,该一个或多个程序包括指令,当由该一个或多个处理器执行时,该指令使得该存储系统进行或控制本文所述的a2至a23的方法中的任一个的进行。本文中描述了许多细节,以提供附图中图示的示例性实现方式的彻底理解。然而,一些实施例可以在没有许多具体细节的情况下实践,并且权利要求的范围仅受权利要求中所具体列举的那些特征和方面限制。另外,没有以穷举的细节描述熟知的方法、部件以及电路,以免不必要地使本文中所描述的实现方式的更相关的方面模糊。图1是图示数据存储系统100的实现方式的框图,根据一些实施例。虽然图示了一些示例性特征,为了简洁起见而未图示各种其他特征,并以免使本文所描述的示例性实施例的相干相关的模糊。为该目的,作为非限制性示例,数据存储系统100包含存储装置120(有时也称为信息存储装置,或数据存储装置,或存储器装置),其包含存储控制器124和存储介质132,并且与计算机系统110(例如,主机系统或主机计算机)结合使用或包含计算机系统110。在一些实施例中,存储介质132是单个闪速存储器装置,而在其他实施例中,存储介质132包含多个闪速存储器装置。在一些实施例中,存储介质132是nand型闪速存储器或nor型闪速存储器。在一些实施例中,存储介质132包含一个或多个三维(3d)存储器装置。另外,在一些实施例中,存储控制器124是固态驱动器(ssd)控制器。然而,根据多种多样的实施例的方面,可以包含其他类型的存储介质(例如,pcram、reram、stt-ram等)。在一些实施例中,闪速存储器装置包含一个或多个闪速存储器裸芯、一个或多个闪速存储器封装体、一个或多个闪速存储器通道等。在一些实施例中,数据存储系统100可以含有一个或多个存储装置120。计算机系统110通过数据连接101耦接到存储控制器124。然而,在一些实施例中,计算机系统110包含存储控制器124,或存储控制器124的部分,作为部件和/或作为子系统。例如,在一些实施例中,存储控制器124的一些或全部功能由在计算机系统110上执行的软件实现。计算机系统110可以是任意适当的计算机装置,诸如计算机、膝上式计算机、平板装置、网络本、互联网亭(互联网kiosk)、个人数字助理、移动电话、智能电话、游戏装置、计算机服务器,或任意其他计算装置。计算机系统110有时称为主机、主机系统、客户端、或客户端系统。在一些实施例中,计算机系统110是服务器系统,诸如数据中心中的服务器系统。在一些实施例中,计算机系统110包含一个或多个处理器、一种或多种类型的存储器、显示器和/或其他用户界面部件,诸如键盘、触屏显示器、鼠标、轨迹板、数码相机,和/或任意数目的补充i/o装置,以对计算机系统110添加功能。在一些实施例中,计算机系统110不具有显示器和其他用户界面部件。存储介质132通过连接103耦接到存储控制器124。连接103有时称为数据连接,但典型地传达除数据之外的命令,并且除要储存在存储介质132中的数据值和从存储介质132读取的数据值之外可选地传达元数据、纠错信息和/或其他信息。然而,在一些实施例中,存储控制器124和存储介质132被包含在相同的装置(即,集成装置)中作为其部件。另外,在一些实施例中,存储控制器124和存储介质132嵌入在诸如移动装置、平板、其他计算机或计算机控制的装置的主机装置(例如,计算机系统110)中,并且至少部分地通过嵌入的存储控制器来进行本文中所描述的方法。存储介质132可以包含任意数目的(即,一个或多个)存储器装置(例如,nvm134-1、nvm134-2至nvm134-n),包含但不限于非易失性半导体存储器装置,诸如(多个)闪速存储器装置。例如,(多个)闪速存储器装置可以配置为用于适于诸如云计算的应用的企业级存储、用于数据库应用、初级和/或次级存储、或用于诸如硬盘驱动器的缓存次级存储体中储存或(要储存)的数据。附加地和/或替代地,(多个)闪速存储器装置还可以配置为用于相对较小规模的应用,诸如个人、膝上式以及平板计算机的个人闪速驱动器或硬盘替换。存储介质132的存储器装置(nvm134-1、nvm134-2等)包含可寻址且单独可选择的块,诸如存储介质136的可选择部分(本文中也称为所选择的部分136)。在一些实施例中,单独可选择块(有时称为擦除块)是闪速存储器装置中的最小大小的可擦除单元。换言之,每个块含有能够被同时擦除的最小数目的存储器单元。每个块通常还被划分为多个页和/或字线,其中每个页或字线典型地是块中的最小单独可存取(可读取和可写入)部分的实例。然而,在一些实施例(例如,使用一些类型的闪速存储器)中,数据集的最小单独可存取单元是扇区,其是页的子单元。即,块包含多个页,每个页含有多个扇区,并且每个扇区是从和向闪速存储器装置读取和写入数据的数据的最小单元。在一些实施例中,存储控制器124包含管理模块121、主机接口129、存储介质接口128以及(多个)附加模块125。存储控制器124可以包含出于简洁而未图示的各种附加特征,以免使本文所公开的示例性实施例的相关的特征模糊,并且特征的不同布置是可能的。主机接口129提供通过数据连接101去往计算机系统110的接口。相似地,存储介质接口128提供通过连接103去往存储介质132的接口。在一些实施例中,存储介质接口128包含读取和写入电路,其包含能够将读取信号提供到存储介质132的电路(例如,nand型闪速存储器的读取阈值电压)。在一些实施例中,管理模块121包含一个或多个处理单元122(有时也称为处理器、硬件处理器、cpu等),其配置为执行一个或多个程序(例如,在管理模块121中)中的指令。在一些实施例中,一个或多个cpu122由存储控制器124内的一个或多个部件共用,并且在一些情况下,超出存储控制器124的功能。管理模块121耦接到主机接口129、(多个)附加模块125以及存储介质接口128,以便协调这些部件的操作。在一些实施例中,管理模块121的一个或多个模块在计算机系统110中实现,如下面更详细讨论的。(多个)附加模块125耦接到存储介质接口128、主机接口129以及管理模块121。作为示例,(多个)附加模块125可以包含错误控制模块,以限制在写入到存储器或从存储器读取期间无意地引入到数据中的不可纠正的错误的数目。在一些实施例中,错误控制模块(包含在(多个)附加模块125中)包含编码器和解码器。在一些实施例中,(多个)附加模块125由管理模块121的一个或多个cpu122在软件中执行,并且在其他实施例中,(多个)附加模块125完全或部分使用专用电路实现(例如,以进行编码和解码功能)。在一些实施例中,(多个)附加模块125完全或部分由计算机系统110上执行的软件实现。在一些实施例中,当计算机系统(主机)110将一个或多个主机写入命令(例如,经由数据连接101,或替代地分开的控制线或总线)发送到存储控制器124时,发起写入操作。作为响应,存储控制器124从存储介质接口128(例如,经由数据连接103,或替代地分开的控制线或总线)将一个或多个写入存取命令发送到存储介质132,以将数据写入到存储介质132内的物理存储器位置(地址)。在一些实施例中,在写入操作期间,主机接口129从计算机系统110接收要储存在存储介质132中的数据。使由主机接口129接收的数据对编码器(例如,在(多个)附加模块125中)可用,其编码数据。在一些实施例中,当计算机系统(主机)110将一个或多个主机读取命令(例如,经由数据连接101,或替代地分开的控制线或总线)发送到存储控制器124从存储介质132请求数据时,发起读取操作。存储控制器124从存储介质接口128(例如,经由数据连接103,或替代地分开的控制线或总线)将一个或多个读取存取命令发送到存储介质132,以根据存储介质132内的物理存储器位置(地址)获得原始读取数据。在一些实施例中,存储介质接口128将原始读取数据提供给解码器(例如,在(多个)附加模块125中)。如果解码成功,则将解码的数据提供给主机接口129,在主机接口129处使解码的数据对计算机系统110可用,或作为对主机读取命令的响应而提供给计算机系统110。在一些实施例中,如果解码不成功,则存储控制器124可以采取若干补救动作或提供无法解决的错误条件的指示。如上面所解释的,存储介质(例如,存储介质132)被划分为若干可寻址的和单独可选择的块,并且每个块可选地(但典型地)还划分为多个页和/或字线和/或扇区。虽然基于块进行存储介质的擦除,但在许多实施例中,在块的更小的子单元上(例如,基于页、基于字线,或基于扇区)进行存储介质的读取和编程。在一些实施例中,块的更小的子单元由多个存储器单元构成(例如,单级单元(slc)或多级单元(mlc))。在一些实施例中,在整个页上进行编程。作为示例,如果数据被以页写入到存储介质,但存储介质被以块擦除,存储介质中的页可能含有无效(例如,陈旧)数据,但那些页不能被覆写,直到含有那些页的整个块被擦除。为了写入到具有无效数据的页,该块中具有有效数据的页被读取并重写入到新的块,并且旧的块(即,在数据被重写入到新的块之前其中储存有效数据的擦除块)被擦除(或置于擦除的队列上)。此过程称为垃圾收集。在垃圾收集之后,新的块含有具有有效数据的页和空闲页,空闲页对要写入的新数据可用,并且被擦除的旧的块也对要写入的新数据可用。因为闪速存储器仅可以被编程和擦除有限次数,用来选取要被重写入和擦除的(多个)接下来的块的算法的效率对基于闪存的存储系统的寿命和可靠性具有显著影响。写入放大是一种现象,其中写入到存储介质(例如,存储介质132)的物理数据的实际量为意图要由主机(例如,计算机系统110,有时称为主机)写入的数据的逻辑量的倍数。如上面所讨论的,当存储介质在其被重写入之前必须被擦除时,进行这些操作的垃圾收集过程导致重写入数据一次或多次。这种倍增效应增加了存储介质的寿命上需要的写入的次数,其缩短了它能够可靠运行的时间。由等式(1)给出了计算存储系统的写入放大的公式:任何存储系统架构的目标之一是尽可能地降低写入放大,使得可用的耐久性被用于满足存储介质可靠性和质保规范。更高的系统耐久性也导致更低的成本,因为存储系统可以需要更少的超额配置(over-provisioning)。通过降低写入放大,存储介质的耐久性增加,并且存储系统的总成本降低。总体上,为了最佳性能和最佳写入放大,在具有最少数目的有效页的擦除块上进行垃圾收集。然而,因为不同的擦除块具有不同的磨损特性,基于相应的擦除块剩余多少寿命而非简单地基于相应的擦除块上迄今进行的编程-擦除循环的数目来使用擦除块是重要的。图2a是图示根据一些实施例的计算机系统110的实现方式的框图。计算机系统110典型地包含用于执行存储器206-1中储存的模块、程序和/或指令并且由此进行处理操作的一个或多个处理器202(有时也称为cpu、处理单元、硬件处理器、微处理器或微控制器)、存储器206-1以及用于将这些部件互连的一个或多个通信总线208-1。通信总线208-1可选地包含电路(有时称为芯片集),其互连系统部件并控制系统部件之间的通信。在一些实施例中,诸如由图1表示的那些,计算机系统110由通信总线208-1和存储系统接口205耦接到存储装置120。在一些实施例中,计算机系统110包含一个或多个通信接口204,以例如经由通信网络(诸如互联网、内联网或局域网络等)将计算机系统110耦接到其他系统(未示出)。存储器206-1包含高速随机存取存储器(诸如dram、sram、ddrram或其他随机存取固态存储器装置),并且可以包含非易失性存储器(诸如一个或多个磁盘存储装置、光盘存储装置、闪速存储器装置、或其他非易失性固态存储装置)。存储器206-1可选地包含远程于(多个)处理器202的一个或多个存储装置。存储器206-1(或替代地存储器206-1内的(多个)非易失性存储器装置)包括非暂时性计算机可读取存储介质。在一些实施例中,存储器206-1或存储器206-1的计算机可读取存储介质储存以下程序、模块以数据结构,或其子集:操作系统210,其包含用于处理各种基础系统服务和用于进行硬件相关任务的过程;应用212;文件系统214;装置驱动器216,用于存取存储装置120,包含:o接收模块218-1,用于接收主机存取命令;o写入模块220-1,用于将数据写入到存储装置120,包含:■序列化模块222-1,用于将多个小的写入数据操作序列化为单个大的写入数据操作;o垃圾收集模块224-1,用于控制存储介质(例如,存储介质130,图1)中的垃圾收集过程,垃圾收集模块224-1包含:■压缩模块226-1,用于移动有效数据和将有效逻辑地址(即,储存有效数据的逻辑地址)重新打包;o分区模块228-1,用于将存储装置(例如,存储装置120,图1)分区为两个或更多个区域;o虚拟到逻辑地址映射230-1,用于维护虚拟地址(例如,由通过计算机系统110执行的应用所使用的虚拟地址)到计算机系统110的逻辑地址空间中的逻辑地址的一个或多个映射;在一些实施例中,逻辑地址是当由计算机系统110向存储装置120发送读取、写入以及取消映射命令时由计算机系统110发送到存储装置120的地址;然而,在一些其他实施例中,计算机系统110还维护逻辑地址到存储装置120的物理地址空间中的物理地址的映射;o读取模块232-1,用于读取来自存储装置120数据;o分层式数据结构存取模块234-1,用于存取分层式数据结构(例如,分层式数据结构300,图3,其可以储存在存储装置120的存储介质132中),包含:■存取模块236-1,用于存取分层式数据结构内的节点;以及■次级映射表238-1,用于将叶节点的逻辑id转译为叶节点的物理地址;缓存240-1,用于缓存映射数据,包含:o缓存查找表242-1,用于定位缓存240-1中储存的(即,缓存的)分层式数据结构的节点;以及o分层式数据结构(例如,分层式数据结构300,图3)的储存在存储装置120的非易失性存储介质中的缓存的部分244-1。上面标识的元件中的每一个可以储存在前面提到的存储器装置中的一个或多个中,并且对应于用于进行上述功能的指令集。上面标识的模块或程序(即,指令集)不需要实现为分开的软件程序、过程或模块,并且因此在各种实施例中,这些模块的各种子集可以组合或以其他方式重布置。在一些实施例中,存储器206-1可以储存上面标识的模块和数据结构的子集。另外,存储器206-1可以储存上面未描述的附加模块和数据结构。在一些实施例中,存储器206-1或存储器206-1的计算机可读取存储介质中储存的程序、模块以及数据结构,提供指令以实现下面参考图3、4、5以及6a-6d描述的方法中相应的操作。虽然图2a示出了根据一些实施例的计算机系统110,与本文所描述的实施例的结构性示意图相比,图2a更加意图作为计算机系统110中可能存在各种特征的功能性描述。实践中,并且如本领域技术人员所理解的,分开示出的程序、模块以及数据结构可以组合,并且一些程序、模块以及数据结构可以分开。图2b是图示了根据一些实施例的管理模块121的实现方式的框图。管理模块121典型地包含用于执行储存在存储器206-2中的模块、程序和/或指令并由此进行处理操作的一个或多个处理器122(有时也称为cpu、处理单元、硬件处理器、微处理器或微控制器)、存储器206-2以及用于互连这些部件的一个或多个通信总线208-2。通信总线208-2可选地包含电路(有时称为芯片集),其互连系统部件和控制系统部件之间的通信。在一些实施例中,诸如由图1表示的那些,管理模块121由通信总线208-2耦接到计算机系统110和存储介质132。存储器206-2包含高速随机存取存储器(诸如dram、sram、ddrram或其他随机存取固态存储器装置),并且可以包含非易失性存储器(诸如一个或多个磁盘存储装置、光盘存储装置、闪速存储器装置、或其他非易失性固态存储装置)。存储器206-2可选地包含远程于(多个)处理器122的一个或多个存储装置。存储器206-2或替代地存储器206-2内的(多个)非易失性存储器装置包括非暂时性计算机可读取存储介质。在一些实施例中,存储器206-2或存储器206-2的计算机可读取存储介质储存以下程序、模块以及数据结构,或其子集:接口模块246,其用于与诸如非易失性存储器装置134的其他部件通信;接收模块218-2,用于接收主机存取命令;写入模块220-2,用于将数据写入到非易失性存储器装置134,包含:o序列化模块222-2,用于将多个小的写入数据操作序列化为单个大的写入数据操作;垃圾收集模块224-2,用于控制存储介质(例如,存储介质130,图1)中的垃圾收集过程,包含:o压缩模块226-2,用于移动有效数据和重新打包有效逻辑地址(即,储存有效数据的逻辑地址);分区模块228-2,用于将存储装置(例如,存储装置120,图1)分区为两个或更多个区域;逻辑到物理(l2p)和物理到逻辑(p2l)地址映射230-2,用于维护逻辑地址到物理地址的映射,并且反之亦然;读取模块232-2,用于从非易失性存储器装置134进行读取;分层式数据结构存取模块234-2,用于存取分层式数据结构(例如,分层式数据结构300,图3,其可以储存在存储装置120的存储介质132中),包含:o存取模块236-2,用于存取分层式数据结构内的节点;o次级映射表238-2,用于将叶节点的逻辑id转译为叶节点的物理地址;缓存240-2,用于缓存映射数据,包含:o缓存查找表242-2,用于定位缓存240-2中储存的(即,缓存的)分层式数据结构的节点;以及o分层式数据结构(例如,分层式数据结构300,图3)的储存在存储装置120的非易失性存储介质中的缓存的部分244-2。上面标识的元件中的每一个可以储存在前面提到的存储器装置中的一个或多个中,并且对应于用于进行上述功能的指令集。上面标识的模块或程序(即,指令集)不需要实现为分开的软件程序、过程或模块,并且因此在各种实施例中,这些模块的各种子集可以组合或以其他方式重布置。在一些实施例中,存储器206-2可以储存上面识别的模块和数据结构的子集。另外,存储器206-2可以储存上面未描述的附加模块和数据结构。在一些实施例中,存储器206-2或存储器206-2的计算机可读取存储介质中储存的程序、模块以及数据结构,提供指令以实现下面参考图3、4、5以及6a-6d描述的方法中相应的操作。虽然图2a示出了根据一些实施例的管理模块121,与本文所描述的实施例的结构性示意图相比,图2b更加意图作为管理模块121中可能存在各种特征的功能性描述。实践中,并且如本领域技术人员所理解的,分开示出的程序、模块以及数据结构可以组合,并且一些程序、模块以及数据结构可以分开。图2c是图示了根据一些实施例的包含在图2a和图2b中的次级映射表238的图。在一些实施例中,次级映射表238用于将分层式数据结构的节点的逻辑id转译为对应的节点的对应的物理地址。例如,如图2c中所示,节点逻辑id“a”被转译为节点物理地址“5014”,并且相似地,节点逻辑id“b”被转译为节点物理地址“183”。在一些实施例中,次级映射表238是散列表,其具有相关联的散列函数,其将键(key)(例如,分层式数据结构中的节点的逻辑id)散列到对应的值(例如,分层式数据结构中的节点的物理地址)。例如,图2c中的散列函数将把键“a”散列到值“5014”。替代地,在一些实施例中,次级映射表238可以以促进高效查找操作的任意方式来组织,例如,二元树(binarytree)、内容可寻址存储器等。图3是分层式数据结构300(例如,b-tree)的简化的、概念性图,其为通常在数据库和文件系统中使用的数据结构的类型。根节点302是分层式数据结构300内的最高点并且充当分层式数据结构内的全部其他节点的母节点(即,根节点具有零的节点深度)。在一些实施例中,根节点302之下是内部(非叶)节点304(例如,节点304-1–304-l)和叶节点306(例如,叶节点306-1–306-m)。内部节点304可以具有可变数目的子节点。另外,除根节点302之外的每个叶节点和内部节点具有母节点,该母节点含有指向到或以其他方式引用其子节点的条目。不具有其自身的子节点的子节点称为叶节点。叶节点306中的条目指向到或以其他方式引用特定数据节点318或特定数据节点318内储存的特定数据对象320,其可以储存在非易失性存储器诸如存储介质132中。在一些实施例中,非易失性存储器组织为固定大小的段(例如,段324-1、324-2至324-p)的组。每个段进一步划为为固定大小的板块(slab)的组。特定段内的全部板块具有相同大小(例如,段324-1为2kb板块段)。可选地,通过将段的全集合分区为组,且对于每组不同板块大小,来支持各种板块大小。在一些实施例中,数据对象320储存在段内的板块中。这样的情况在图3中绘示,其中数据对象320储存在存储介质132中的段324-1的2kb板块中。在一些实施例中,分层式数据结构300的各种部分被缓存在易失性存储器中(例如,在dram中)。例如,在一个实施例中,全部内部节点304被缓存,但仅叶节点306的部分被缓存。在另一实施例中,全部内部节点304被缓存,并且没有叶节点306被缓存。在一些实施例中,由频繁地存取对应的数据对象的程度确定叶节点的被缓存的部分。例如,对应于比其他数据对象以预定的裕度更频繁被存取的数据对象的叶节点被添加到叶节点的被缓存的部分,而对应于比其他数据对象以预定的裕度更不频繁地被存取的数据对象的叶节点被从缓存移除或不添加到缓存。例如通过避免存取储存在存储装置120中的存储介质132中的节点的附加的i/o操作,缓存分层式数据结构的部分可以帮助降低进行数据存取操作所需的i/o操作的数目。在一些实施例中,分层数据结构300的每个节点(即,根节点302、内部节点304和叶节点306)具有对应的逻辑id,其用于使用散列表(hashtable)(例如,次级映射表238-1,图2a)来存取节点。散列表用于将节点的逻辑id转译到非易失性存储器中的其物理地址。在一些实施例中,当将对应的节点(例如叶节点306)修改时,将已更新或已修改的节点写入到不同的物理地址,并且将散列表更新而不改变所修改的节点上方的节点(例如将叶节点306-1修改并且内部节点304-1和根节点302不更新)。因为所修改的节点的逻辑id保持不变,所以不需要将所修改的节点上方的节点修改,并且因此所修改的节点的母节点的内容(其包含所修改的节点的逻辑id)不受相应的节点的修改影响。更新散列表而不修改内部节点和根节点避免了附加的i/o操作。另外,更新散列表而不修改内部节点和根节点降低了对非易失性存储器的写入并且因此降低了写入放大。叶节点306可以存储可变数目的键和值。常常包含在这些键和值之中的是数据对象键310、数据对象指针312、属性键314(例如属性键314a-314b)、以及属性值316(例如属性值316a-316b)。为了便于讨论,在本文中属性值有时称为属性。此外,在一些实施例中,属性或属性值包括属性标识符(例如识别属性的类型)和值(例如“颜色、红色”,其中“颜色”是属性标识符,并且“红色”是值)二者。然而,不考虑这样的属性的精确形式或内容,目前讨论是可适用的。叶节点中的每个键/值对在本文中有时称为条目或树条目308(例如树条目308a-308c)。在一些实施例中,键用于唯一地识别诸如数据对象或属性的实体(entity),并且因此每个树条目308中的键典型地具有与每个其他树条目中的键不同的值。数据对象指针312指向数据对象320,其可以存储在非易失性存储器内(例如在数据对象指针312中的信息包含去往非易失性存储器内的物理位置的地址)。在一些实施例中,属性包含特定数据对象的源信息、日期信息等。数据对象320可以具有与数据对象相关联的任意数目的属性。属性值316典型地远小于它们的相关联数据对象。在一些实施例中,当属性满足(例如小于)预定的属性大小阈值时,将属性及其相关联的键存储为叶节点中的树条目,并且否则由叶节点中的相应的树条目308将属性值存储在所指向到的数据节点中。相似地,在一些实施例中,当数据对象满足(例如小于)预定的对象大小阈值时,将对象及其键存储为叶节点中的树条目。在图3中,在数据对象满足预定的对象大小阈值时,对象指针312将被用数据对象自身替换。如上文所提到的,属性键314及其相关联的属性值316(例如属性一键314a和属性一值316b)有时称为键/值对308。数据对象键310及其相关联的数据对象指针312也构成键/值对。典型地将单独的键/值对308连续地存储在它们放置在其中的叶节点内。例如,将数据对象键310和数据对象指针312存储为树条目308a,其占用相应的叶节点306(该示例中的节点306-2)的连续部分或块321(该示例中的连续部分321a)。相似地,将树条目308b存储在叶节点306-3的连续部分321b中,并且将树条目308c存储在叶节点306-m的连续部分321c中。在一些实施例中,逻辑到物理和物理到逻辑映射(例如,l2p和p2l地址映射230-1,图2a)将存储介质132中的物理地址映射到逻辑地址(例如由主机计算机系统所用的逻辑地址),并且被存储在存储控制器124处或与存储控制器124远程。物理到逻辑映射230-1典型地由分配到存储介质130中的物理存储器的块或与存储介质130中的物理存储器相关联的物理地址来索引或键控,并且将物理地址映射到对应的逻辑地址并且可选地将物理地址映射到元数据值。在一些实施例中,将在相应的物理地址处的特定存储器部分的至少一些元数据值存储在与物理到逻辑地址映射230-1分开的数据结构中。在一些实施例中,将序列化段322创建并且包含合并数据对象和映射信息(例如b树节点)。在一些实施例中,序列化段将以交替的方式累计数据对象和映射信息,直到序列化段是充满并且在单一连续写入中将内容写入到存储系统的多个存储装置中的一个或多个存储装置。在一些实施例中,序列化段中的树节点是固定大小(例如8kb)的,但是序列化段中的数据对象不是固定大小。图4是示出了根据一些实施例的内部到存储系统(例如xcopy操作)的内部复制操作的使用的示意图。虽然以下图4描述为使用xcopy操作,但是可以理解的是在其他实现方式中使用其他类型的内部复制操作(例如odx),其复制存储系统内的数据而不是首先将数据发送到主机系统。图4示出了m个逻辑条带402、404、406的示例,每个含有一些有效数据但不是“满”的(即,存在每个逻辑条带中存在不含有效数据的位置)。在一些实施例中,逻辑条带在某时曾经是满的,但是随着时间的推移每个逻辑条带中的数据由于持续的处理(例如数据更新、读取干扰处理)而无效化,并且该逻辑条带现在具有“孔”,孔中先前定位有效数据。在一些实施例中,为了给将新数据写入到逻辑条带的主机准备每个逻辑条带(例如序列化写入数据操作,其包含合并的数据对象和分层数据结构的映射信息),使用xcopy操作在每个逻辑条带中将有效数据合并。例如,一个或多个xcopy命令由计算机系统100发送到存储装置120,指定将移动(即,复制)到新位置的数据,由此引起存储装置120进行xcopy操作。在图4中所示出的示例中,在进行xcopy操作之后,逻辑条带中的每一个中的有效数据(其先前在有效数据的不同部分之间具有间隙)现在位于相同逻辑条带的连续部分中,并且更具体地已经“重新打包(repacked)”到每个逻辑条带的开端(出于说明性目的示出为逻辑条带中最左边位置)。因此,作为重新打包结果,将所选择的逻辑条带中的有效数据再分配到逻辑条带中的连续逻辑地址的集合,典型地再分配到逻辑条带的开端(或末端)处的逻辑地址。如接下来所述的,xcopy操作还引起有效数据被移动到新的物理地址。虽然图4示出了将每个逻辑条带中的有效数据移动到相同逻辑条带的连续部分,但是在一些实现方式中,将逻辑条带中的有效数据移动到另一个逻辑条带的连续部分,而在从之移动数据的逻辑条带中不保留有效数据。在一些实施例中,为了开始xcopy操作,主机发送xcopy命令(或多于一个xcopy命令),该xcopy命令由一个或多个存储装置(例如使用接收模块218-1,图2a)接收。典型地,xcopy命令的形式为:xcopy(old_lba,n_blocks,new_lba,trim_flag)。xcopy命令请求存储装置将起始于“old_lba”的“n_blocks”数目的块中的数据复制到起始于“new_lba”的新位置。“trim_flag”参数用于确定旧有效数据在移动之后是否无效化(即,如果trim_flag=true,则旧有效数据无效化,如果trim_flag=false,则旧有效数据不无效化。)在一些实施例中,xcopy操作包含将在一个或多个存储装置的一个或多个开擦除块中将有效数据从一个物理地址移动到另一个物理地址。例如,在xcopy操作期间,将有效数据的最初位于所选择的闭擦除块中的部分移动到开擦除块。在一些实施例中,由主机以矢量方式将多个xcopy命令发送到(多个)存储装置,作为单个捆绑的请求。例如,合并逻辑条带中所有有效数据可能需要多个xcopy命令,逻辑条带中的有效数据的每个连续集合(即,在逻辑地址的连续集合处的有效数据)需要一个,并且将这些多个xcopy命令发送为单个捆绑的请求。在一些实施例中,在装置级处进行xcopy操作并且该xcopy操作包含在一个存储装置中、在多个存储装置之间、或者在一个存储装置中和和在多个存储装置之间二者移动数据。同样地,xcopy操作允许逻辑条带中压缩残留有效数据的过程由主机将xcopy命令发布到一个或多个存储装置来完成,以将装置内的数据移动(例如使用压缩模块226-1,图2a)。因此,xcopy操作的使用允许进行合并和重新打包(压缩)而不将有效数据读回到主机且然后重新写入,并且,因此减轻在主机和存储装置之间的通信总线的流量(例如,数据连接件101,图1)。一旦完成合并和重新打包,对应于残留有效数据的资源的空间典型地被“修剪(trim)”(即,无效化),使得原先由残留有效数据所占用的存储空间可以擦除并且然后写入。在一些实施例中,上文所述的xcopy操作的使用允许主机进行基于主机的垃圾收集,其减少了所需要的装置级的垃圾收集的量并且因此降低写入放大。例如,如果存储系统的逻辑条带与装置级擦除块对准(即,确定逻辑条带的大小使得其由每存储装置的一个或多个擦除块构成),在压缩过程中的修剪导致存储装置内空的或几乎空的擦除块,并且因此需要很少以至不需要装置级的垃圾收集。在一些实施例中,基于主机的垃圾收集还由附加的装置级命令来优化以更紧密地控制存储装置内的擦除块的形成。例如,在一些实施例中,包含装置级命令,以在单一操作中允许装置支持整个擦除块的写入。此外,在一些实施例中,包含装置级命令,以提供确定存储装置的擦除块的大小的能力。因为基于主机的压缩过程在存储装置中有效地进行垃圾收集,所以在装置内进行的垃圾收集活动的量显著减少。此外,通过覆写(overriding)装置级的垃圾收集,主机可以使用与存储装置能够使用的垃圾收集算法相比更加精密垃圾收集算法,由此得到较低写入放大和较高性能。然而,甚至当由主机进行大部分垃圾收集活动时,在一些实施例中,仍然进行有限的装置级垃圾收集来解决低级装置活动(诸如处理读取干扰、强制数据保持限制、和坏块移除),因此简化了基于主机的垃圾收集。使用xcopy操作的基于主机的垃圾收集的附加优点在于,主机对于装置内的复制的大部分数据具有明确控制。因此主机可以调度xcopy操作以最小化它们与读取操作的相互作用(即,竞争存储装置资源),以得到更加一致的读取时延。在一些实施例中,对于最大时延稳定性,xcopy命令补充有明确控制存储装置何时初始化块擦除操作的命令。图5示出了根据一些实施例的基于主机的垃圾回收操作的概念流程图。更具体地,图5示出了根据一些实施例表示在具有分层数据结构(例如分层数据结构300,图3)的数据存储系统(例如数据存储系统100,图1)内进行基于主机的垃圾回收操作的概念流程图。除了相对简单的额外装置级操作(例如如上参考图4所述的xcopy操作)之外,主机服务器可以在存储装置内有效地编排垃圾收集,并且实现与依赖于装置级垃圾收集相比更低的写入放大(和更好的性能)。这在基于主机的垃圾收集用于促进序列化闪速写入时是特别有用的。写入序列化可以用于减少在软件raid实现方式(例如raid5和raid6)中小写入所需要的i/o的数量。写入序列化还可以用于改善b树(例如分层数据结构300,图3)的性能或其他分页的(paged)映射结构。尽管使用与基于主机的垃圾收集结合的写入序列化来回收自由空间的连续区域,需要相对小额外的努力来使用垃圾收集策略,该策略使宽分类的工作量的写入放大最小化。参考图1所描绘的数据存储系统100,在一些实施例中,在计算机系统(例如计算机系统110)处进行方法500。在一些实施例中,由指令管理方法500,该指令存储在非暂时性计算机可读存储介质中并且由主机系统的一个或多个处理器执行,诸如计算机系统110(图2a)的一个或多个处理单元202(cpu)。在一些实施例中,方法500的操作由存在于非暂时性计算机可读存储介质(诸如存储器206-1(图2a))内可执行的软件(例如装置驱动器216)来进行。在一些实施例中,方法500的一些操作(或替代地,步骤)由存储装置(例如存储装置120)来进行,或者由存储装置(例如存储控制器124)的可操作地与存储装置耦接的一个或多个部件来进行,并且在主机系统处进行方法500的其他操作。在一些这样的实施例中,至少部分地由指令管理方法500,该指令存储在非暂时性计算机可读存储介质中并且由装置的一个或多个处理器执行,诸如管理模块121(图2b)的一个或多个处理单元122(cpu)。为了便于说明,以下描述了如由主机系统(例如由主机系统110的cpu202和装置驱动器216,图2a)所进行的方法500。参考图2a,在一些实施例中,至少部分地通过以下进行方法500的操作:接收模块(例如接收模块218-1);写入模块(例如写入模块220-1);以及在写入模块内,序列化模块(例如序列化模块222-1);垃圾收集模块(例如垃圾收集模块224-1)以及在垃圾收集模块内,压缩模块(例如压缩模块226-1)。可选地,由以下进行方法500的一些操作:分层数据结构存取模块(例如分层数据存取模块234-1);在分层数据结构存取模块内,存取模块(例如存取模块236-1),和次级映射表(例如次级映射表238-1);缓存(例如缓存240-1);并且在缓存内,缓存查找表(例如缓存查找表242-1),和分层数据结构的缓存的部分(例如分层数据结构的缓存的部分244-1)。在一些实施例中,当主机系统(例如图1的计算机系统110或其诸如图2的装置驱动器之类的部件)发起502基于主机的垃圾回收操作时,方法500开始。在一些实施例中,根据存储在主机系统处的数据存储信息,通过识别504两个或更多个逻辑条带开始基于主机的垃圾回收操作,每个逻辑条带对应于逻辑地址空间中的逻辑地址的连续序列。在一些实施例中,识别504两个或更多个逻辑条带包含根据选择标准识别两个或更多个逻辑条带。例如,在一些实施例中,根据选择标准识别两个或更多个逻辑条带包含根据第一选择标准识别第一逻辑条带以及根据第二选择标准识别第二逻辑条带。在一些实施例中,第一和/或第二选择标准包含在逻辑地址空间中的多个条带中选择最不满的相应的条带。在一些实施例中,第一和/或第二选择标准包含根据以基于主机的垃圾回收操作的特定垃圾回收方案为基础的算法来选择条带。示例性垃圾收集方案是使用“贪婪”垃圾收集政策的垃圾收集方案,其中为垃圾收集选择具有最少数量的有效数据的擦除块。然而,贪婪垃圾收集算法对一些工作量展示高的写入放大(例如具有写入偏斜(skew)的工作量),并且主机能够选择对工作量的类型最优化的不同垃圾收集方案是有益的。除了贪婪垃圾收集方案之外的垃圾收集方案的示例包含:先进先出(fifo),也已知为最少最近使用(lru);以及在学术文献中所描述的各种算法,包含window-greedy、envy、动态年龄集群、容器标记以及基于频率的数据放置。在一些实施例中,特定垃圾收集算法确定分组数据需要多少逻辑条带。例如,在一个实施例中需要两个逻辑条带以将第一逻辑条带中的热数据分组并且将第二逻辑条带中的冷数据分组。在其他实施例中,需要多于两个逻辑条带来分组第一逻辑条带中的热数据、第二逻辑条带中的冷数据和在若干其他逻辑条带中的冷和热之间的数据。在一些实施例中,使用的逻辑条带的数量取决于工作量。在一些实施例中,特定垃圾收集算法包含将多个存储装置(例如两个或更多个存储装置120)分区(例如通过图2的分区模块228-1来实现)成两个或更多个区域的算法。在一些实施例中,两个或更多个区域中相应的区域对应于两个或更多个逻辑条带中相应的逻辑条带。例如,参考图4,多个存储装置的一个分区的区域对应于逻辑条带1、402,并且多个存储装置的一个分区的区域对应于逻辑条带2、402。在一些实施例中,一个逻辑条带对应于一个区域。另外,在一些实施例中,区域的数量等于逻辑条带的数量。例如,如果存在m个逻辑条带(如图4所示出),则多个存储装置分区为具有m个区域。附加地,在一些实施例中,分区的算法确定所需要的区域的数目、每个区域的大小、和每个区域的超额配置(over-provisioning)。关于每个区域的超额配置,区域的所期望的使用模式对所期望的写入放大具有影响。例如写入放大取决于对垃圾收集所选择的块的平均空白程度。写入放大还取决于区域的超额配置的量。因此,在一些实施例中,与一个或多个其他区域(例如热数据的区域)相比,向一个或多个区域(例如冷数据的区域)分配更小量的超额配置(例如区域中存储装置的每千兆字节的超额配置的量)。然而,分配到区域的超额配置的量和区域的使用模式二者对该区域的写入放大的所期望水平具有影响。在一些实施例中,考虑到超额配置和所预测的使用模式二者,存储系统中可用的超额配置分配在区域之间,使得系统的所预测的总体写入放大最小化。在一些实施例中,随着存储系统的工作量变化,分区算法将动态地调整两个或更多个区域。例如,在一些实施例中,区域的数目调整为更好匹配存储系统的当前工作量。在一些实施例中,基于将要存储的数据的类型或者对于目标为某些区域(例如先前含有热数据目标为现在包含冷数据的区域)的数据类型,来调整区域。以这种方式,将写入流量均匀分布到区域,使得它们的写入密度比率(例如,对于每个区域,写入到区域数据量除以区域的大小)在预定的裕度(margin)内(例如10百分比或20百分比)近似相等。方法500通过移动506位于识别的逻辑条带中的有效数据来继续。通常,有效数据的部分将在每个识别的逻辑条带中展开,且有效数据部分之间存在间隙,如上参考图4所述。为了为数据写操作准备每个逻辑条带,使用xcopy操作将该逻辑条带中的有效数据移动到逻辑条带的起始。在一些实施例中,在移动逻辑条带中的有效数据的每个部分之后,该方法确定508在逻辑条带中是否还存在任何的未移动的有效数据。在一些实施例中,如果在逻辑条带中存在未移动的有效数据(即,508-“是”),则如上所述移动506未移动的有效数据。替代地,如果确定不存在未移动的有效数据(即,508-“否”),则该方法通过将有效逻辑地址(即存储有效数据的逻辑地址)重新打包510到识别的逻辑条带的开始来继续。在一些实施例中,方法500通过无效化512旧数据来继续。如上参考图4所述,xcopy命令总体上包含修剪旗标(trimflag),并且如果“trim_flag”为真,则有效数据的旧副本(即,就在使用(多个)xcopy命令移动有效数据之前由有效数据所占据的存储位置处)被无效化,并且写入原始部分的所有连续物理装置空间将变为空闲。在足够大的段的情况下,主机将释放足够大的物理空间的连续区域,从而在装置内需要最小的垃圾收集。因此,基于主机的垃圾收集确保了空的擦除块几乎总是可用于擦除和重用,这意味着在存储装置内需要最少的垃圾收集,并且由基于主机的垃圾收集有效地覆盖了装置级垃圾收集。在一些实施例中,方法500通过确定是否符合514垃圾收集调度标准来继续。如果符合垃圾收集调度标准(即,514-“是”),则触发另一个基于主机的垃圾收集,并且以如上参考操作504所述相同的方式来识别516两个或更多个逻辑条带的不同集合。在识别另一个逻辑条带之后,关于新识别的逻辑条带发生基于主机的垃圾收集操作的剩余部分(即,步骤506-512)。由于基本主机的垃圾收集操作独立于并且有效地取代装置级垃圾收集,所以操作514中的调度标准典型地独立于用于触发多个存储装置中的每个存储装置内的内部垃圾收集操作的进行的垃圾收集调度标准。例如,用于触发内部垃圾收集操作的进行的垃圾收集调度标准典型地与低级装置活动有关,诸如处理读取干扰、强制数据保持限制和坏块移除,而基于主机的垃圾收集调度标准通常与为预期的序列化写入提供空闲空间有关。在方法500的一些实施例中,如果不符合垃圾收集调度标准(即,514-“否”),则完成并结束518基于主机的垃圾收集操作。在一些实施例中,这导致系统等待发生需要发起新的基于主机的垃圾收集操作的另一条件,此时方法500再次开始。在一些实施例中,操作514的垃圾收集调度标准包含对应于存储系统的写入操作工作量的标准。此外,在一些实施例中,操作514的垃圾收集调度标准包含对应于存储系统的预计(projected)工作量的标准。例如,在一些实施例中,预计工作量是由单页更新组成的主要随机更新工作量(例如,单页更新,其大部分(例如,至少75%)不是写入或更新到顺序的位置,或者其彼此之间不具有可辨别的模式或相关性)。在另一个示例中,预计工作量是双模态(2-modal)工作量,其中页被限定为用于热数据或冷数据。在又一示例中,预计工作量是k模态工作量,其中k模态工作量是其中闪存块地址空间的“k”个不同的子集接收写入流量的不同部分的工作量。在一些实施例中,操作514的垃圾收集调度标准包含对应于存储系统中的空的逻辑条带的数目的标准。典型地,用于调度标准的存储系统中空逻辑条带的数目是支持写入序列化所需的目标数目。例如,为了基于预测寿命特性对进入的序列化写入进行分组,一些写入序列化方案利用多个写入序列化段,其各自对应于要写入的数据的不同预测寿命。在这些情况下,垃圾收集调度标准对应于所需的空的逻辑条带的数目(即每个写入序列化段典型地需要一个空的逻辑条带)。在一些实施例中,操作514的垃圾收集调度标准根据随着时间的推移的存储系统的工作量的改变而修改。例如,不同的调度标准被用于不同的使用/工作量模式,诸如使用的主要随机写入模式或使用的主要顺序写入模式。用于不同使用/工作量模式的不同调度标准的一些示例如下。在轻度的工作量下,可以使用高/低水位标记方案,其中仅当池的大小降低到低水位标记时,才经由垃圾收集来补充空的擦除块的池。垃圾收集器在达到高水位标记后停止。另一方面,在重度的工作量下,可以调度垃圾收集器以在每次填充当前写入段时产生新的空闲段。在又一示例中,对于散布有低活动时段的短突发的工作量,可以在突发期间暂停垃圾收集以最小化写入和读取等待时间。垃圾收集将在低活动时段期间运行,以将空闲段池补充到足够的水平以处理在突发期间所需的缓冲量。总体上,垃圾收集调度器需要以新数据写入装置的速率产生新的写入段,加上经由垃圾收集本身产生的额外写入。此整体速率由工作量的写入放大确定,其可随时间变化。在一些实施例中,垃圾收集器使用整体写入速率的滚动估计(包含写入放大)来调度本身。随着写入率和/或写入放大的增长,它会更积极地产生新的段。随着写入速率和/或写入放大的降低,它会更缓慢地产生新的段。使用基于主机的垃圾收集操作允许识别存储系统的当前工作量,并相应地修改调度标准。例如,在白天(例如,当存储系统具有一个使用/工作量模式时),使用一个调度标准,并且在夜间(例如,当存储系统具有不同的使用/工作量模式)时,使用不同的调度标准。以下参考图6a-6d呈现关于用于方法400的每个处理步骤的附加细节以及关于附加处理步骤的细节。图6a-6d图示了根据一些实施例的管理数据存储系统的方法的流程图表示。参考图1中描绘的数据存储系统100,在一些实施例中,在计算机系统(例如,计算机系统110)处进行方法600。在一些实施例中,方法600由存储在非暂时性计算机可读存储介质中并且由主机系统的一个或多个处理器——诸如计算机系统110的一个或多个处理单元(cpu)202(图2a)——执行的指令来支配。在一些实施例中,方法600的操作通过执行存储在诸如存储器206-1(图2a)的非暂时性计算机可读存储介质中的软件——诸如,装置驱动器216——来执行。在一些实施例中,方法600的一些操作(或替代地,步骤)由存储装置(例如,存储装置120)进行或由可操作地与存储装置耦接的存储装置的一个或多个组件(例如,存储控制器124)进行,并且方法600的其他操作在主机系统处进行。在这些实施例中的一些中,方法600至少部分地由存储在非暂时性计算机可读存储介质中并且由装置的一个或多个处理器——诸如管理模块121的一个或多个处理单元(cpu)122(图2b)——执行的指令来支配。为了便于说明,以下描述由主机系统(例如,由计算机系统110的cpu202和装置驱动器216,图2a)进行的方法600。参考图2a,在一些实施例中,方法600的操作至少部分地由以下进行:接收模块(例如,接收模块218-1);写入模块(例如,写入模块220-1);以及在写入模块内的序列化模块(例如序列化模块222-1);垃圾收集模块(例如垃圾收集模块224-1);以及在垃圾收集模块内的压缩模块(例如,压缩模块226-1)。可选地,方法600的操作中的一些由以下进行:分层数据结构访问模块(例如,分层数据访问模块234-1);以及在分层数据结构访问模块内的访问模块(例如,访问模块236-1)和辅助映射表(例如,辅助映射表238-1);缓存(例如,缓存240-1);以及在缓存内的缓存查找表(例如,缓存查找表242-1)和分层数据结构的缓存部分(例如,分层数据结构的缓存部分244-1)。参考图6a-6d,主机系统(例如,计算机系统110或其组件,诸如装置驱动器216,图2a)管理602具有多个存储装置(例如,图1中的储装置120中的nvm装置134)的存储系统(例如,图1的数据存储系统100),包括在不同于多个储存装置的主机系统处进行基于主机的垃圾收集操作。方法600包含根据存储在主机系统处的数据存储信息来识别604两个或更多个逻辑条带,每个逻辑条带对应于主机系统的逻辑地址空间中的逻辑地址的连续序列。在许多情况下,逻辑条带的逻辑地址的连续序列对应于存储装置的物理地址空间中的物理地址的连续序列。然而,由于下面讨论的原因,更通常地,逻辑条带的逻辑地址的连续序列对应于存储装置的物理地址空间中的物理地址的一个或多个连续序列。然而,在一些情形下,由于内部垃圾收集事件(例如,由读取干扰达到阈值级别引起的垃圾收集事件、损耗均衡、坏块替换等),写入逻辑条带可能会被写入打断或夹杂写入,在这种情况下,逻辑条带的逻辑地址的连续序列将对应于存储装置的物理地址空间中物理地址的两个或更多个连续序列。然而,由于这样的内部垃圾收集事件通常仅很少发生。例如,在一些实施例中,由基于主机的垃圾收集操作的逻辑条带的写入被内部垃圾收集操作中断少于时间的10%,并且在一些实施例中,少于时间的1%。另外,如果逻辑条带的大小使其数据必须存储在两个或更多块中,那么这两个或更多块可能不具有物理地址的相邻序列。另外,即使逻辑条带的大小与块或块的一部分的大小相匹配,物理地址空间内的逻辑条带的起始位置或偏移也可能导致逻辑条带中的数据为存储在两个块中,并且这两个块不需要具有物理地址的相邻序列。因此,对于每个逻辑条带的逻辑地址的连续序列通常对应于存储装置的物理地址空间中的物理地址的一个或多个连续序列。在一些实施例中,方法600包含确定606基本主机的垃圾收集操作需要多少个逻辑条带,如以上参考图5(504)所述。在一些实施例中,方法600包含根据选择标准识别608两个或更多个逻辑条带,如以上参考图5(504)所述。在一些实施例中,方法600通过合并610两个或更多个逻辑条带中的有效数据来继续。此外,在一些实施例中,对于在两个或更多个逻辑条带中的有效逻辑地址(即,存储有效数据的逻辑地址)的每个连续序列,主机系统发送612指令到多个存储器中的一个或多个存储装置,以将对应于有效逻辑地址的相应的连续序列的数据从物理地址空间中的第一物理位置移动到物理地址空间中的第二物理位置。在一些实施例中,第一物理位置是在一个或多个xcopy命令之前的数据的初始位置,并且第二物理位置是在一个或多个存储装置的一个或多个开放擦除块中的新位置,如以上参考图4更详细地所述。此外,在一些实施例中,移动数据的指令包含616复制指令,其将对应于两个或更多个逻辑条带中的有效逻辑地址的数据从多个存储装置中的初始存储器部分复制到对应于两个或更多个逻辑条带中的新(或不同)逻辑地址的多个存储器装置的不同存储器部分。在一些实施例中,在操作612中从主机系统发送的指令包含614到一个或多个存储装置的一个或多个xcopy命令。替代地,在操作612中从主机系统发送的指令包含到一个或多个存储装置的一个或多个内部复制命令,其指示在不将复制的数据发送到主机系统的情况下在存储系统内复制数据。在一些实施例中,方法600通过根据迁移标准在两个或更多个逻辑条带的不同的逻辑条带之间迁移618数据来继续。一个示例性迁移标准是基于数据历史的启发式分析,并引起数据相应地迁移到更热或更冷的区域。此外,在一些实施例中,迁移典型地在垃圾收集压缩操作期间完成(如以上参考图4所述),其中数据被复制到新位置,并且因此数据迁移在没有附加数据移动操作的情况下完成。在一些实施例中,方法600通过在两个或更多个逻辑条带的每个相应逻辑条带中重新打包620有效逻辑地址(即,存储有效数据的逻辑地址)到目标逻辑条带的连续部分(例如,在开始处)来继续,其中目标逻辑条带是相应的逻辑条带或不同于相应逻辑条带的另一逻辑条带,如上面参考图4所述。在一些实施例中,在发送612指令以移动数据之后,方法600通过对于在第一逻辑条带中的有效逻辑地址(即,存储有效数据的逻辑地址)的每个连续序列,无效622对应于物理地址空间中的第一物理位置处的有效逻辑地址的相应连续序列的数据来继续,如参考图5(512)所述。此外,在一些实施例中,在发送所述指令之后,方法600通过根据一个或多个分类标准来分类624传入的写入请求,并选择用于放置传入的写入请求的逻辑条带来继续。在一些实施例中,分类标准包含使用提示的明确分类(例如,热/冷分类或其他数据特性)。在一些实施例中,分类标准基于写入访问的过去历史。在方法600的一些实施例中,两个或更多个逻辑条带包含626第一逻辑条带和第二逻辑条带,并且第一逻辑条带用于具有第一组特性的数据,并且第二逻辑条带用于具有第二组特性的数据,该第二组特性不同于第一组特性。例如,第一逻辑条带用于热数据,并且第二逻辑条带用于冷数据。尽管为简化起见,示例将使用2条逻辑条带,在一些实施例中,主机系统使用多于2条逻辑条带来基于预测(或暗示)寿命特性对数据进行分组。在一些实施例中,方法600通过将多个存储装置分区628(例如,使用图2a中的分区模块228-1)到两个或更多个区域中来继续,其中两个或更多个区域的相应区域对应于两个或更多个逻辑条带的相应逻辑条带,如以上参考图5(504)所述。此外,在一些实施例中,分区628多个存储装置包含:确定630基本主机的垃圾收集操作需要多少区域,确定两个或更多个区域的大小,以及确定用于多个区域的超额配置量,如以上参考图5(504)所述。此外,在一些实施例中,方法600包含动态调整632两个或更多个区域作为存储系统工作量改变,如以上参考图5(504)所述。在一些实施例中,方法600还包含:根据确定复合存储系统的第一垃圾收集调整标准被满足,触发634进行基于主机的垃圾收集操作,其中存储系统的第一垃圾收集调整标准独立于用于在多个存储装置的每个存储装置内触发进行内部垃圾收集操作的第二垃圾收集调度标准。在一些实施例中,触发636进行基于主机的垃圾收集操作,以确保每个存储装置内的内部垃圾收集操作最小化。在一些实施例中,操作634的垃圾收集调度标准包含638对应于存储系统的写入操作工作量的标准。例如,随着写入操作工作量的测量增加或者通过一个或多个预定义的阈值,即使垃圾收集操作可能还没有仅仅基于在存储系统中的空逻辑条带的数量被调度,也调度附加的垃圾收集操作。在一些实施例中,第一垃圾收集调度标准包含640对应于存储系统的预计工作量的标准。例如,该方法可以包含确定工作量中的向上或向下趋势,并且使用所确定的工作量趋势来确定存储系统的预计工作量。替代地或附加地,系统可以基于历史数据来确定预计工作量,诸如指示工作量典型地高于或低于系统的平均工作量的时间段的历史数据。此外,在一些实施例中,第一垃圾收集标准包含关于预计工作量的一个或多个标准。此外,在一些实施例中,第一垃圾收集调整标准包含642与存储系统中的空逻辑条带的数量相对应的标准。例如,标准可以包含空逻辑条带的数量的一个或多个阈值(例如,优选水平和最小水平),并且当存储系统中的空逻辑条带的数量接近、达到或低于这些阈值中的每个时,这对基于主机的垃圾收集操作的调度具有对应的影响。在一些实施例中,方法600还包含根据随着时间的推移的存储系统的工作量的改变而修改644第一垃圾收集调整标准,如以上参照图5(514)所述。在一些实施例中,方法600还包含在一段时间内重复进行646步骤602的基于主机的垃圾收集操作以确保由主机系统管理的至少最少数量的逻辑条带可用以放置写入数据,如以上参考图5(504)所述。此外,在一些实施例中,在进行步骤602的基于主机的垃圾收集操作之后,主机向多个存储装置中的一个或多个发送写入数据(例如,使用图2a中的写入模块220-1)以存储分配给识别的逻辑条带中的逻辑地址的数据。在一些实施例中,进行发送写入数据作为序列化写入(例如,使用图2a中的序列化模块222-1)并且填充由基于主机的垃圾收集操作释放的逻辑条带中的开放空间。此外,因为xcopy操作用于在逻辑条带中移动有效数据,所以存在的有效数据不需要从主机重新发送到存储装置,如以上参照图4所述。在一些实施例中,主机系统包含648客户端,代表该客户端将数据储存在储存系统中(例如,图1中的数据储存系统)。在一些实施例中,客户端是或包含实体,代表该实体将数据存储在存储系统中。例如,在一些实施例中,主机是计算机系统110(图1)或者由计算机系统110执行的客户端过程、模块或应用程序。在一些实施例中,主机系统包含650存储系统的存储系统控制器。在一些实施例中,存储系统控制器控制和/或协调一个或多个存储装置(例如,图1中的数据存储装置120)之中的操作。在一些实施例中,存储系统控制器是具有最接近于存储装置的处理能力的实体。例如,在一些实施例中,在一些存储系统中,主机是一个或多个存储装置与客户端之间的中间节点。在一些实施例中,主机系统包含652存储系统的集群控制器。在一些实施例中,集群控制器控制和/或协调一个或多个数据存储子系统之中操作,其中数据存储子系统中的每个可以实现为具有一个或多个存储装置(例如,图1中的数据存储装置120)的数据存储系统。在一些实施例中,集群控制器是在客户端系统和存储装置之间具有处理能力的实体。此外,在一些实施例中,存储装置包含654一个或多个闪速存储器装置。关于存储介质132(图1),应当注意的是,半导体存储器装置包括诸如动态随机存取存储器(“dram”)或静态随机存取存储器(“sram”)装置的易失性存储装置,诸如电阻式随机存取存储器(“reram”)、电可擦除可编程只读存储器(“eeprom”)、闪速存储器(其也可以被认为是eeprom的子集)、铁电随机存取存储器(“fram”)和磁阻随机存取存储器(”mram“)的非易失性存储器装置,以及其他能够存储信息的半导体元件。此外,每种类型的存储器装置可以具有不同的配置。例如,闪速存储器装置以nand或nor配置进行配置。存储器装置可以由无源元件、有源元件或两者形成。通过非限制性示例,无源半导体存储器元件包含reram装置元件,其在一些实施例中包含诸如反熔丝、相变材料等的电阻性开关储存元件,以及诸如二极管等的可选的操纵元件。进一步通过非限制性示例,有源半导体存储器元件包含eeprom和闪速存储器装置元件,其在一些实施例中包含含有电荷存储区域的元件,诸如浮置栅极、导电纳米颗粒或者电荷存储介电材料。可以配置多个存储器元件,使得它们串联连接或者使得分别存取每个元件。通过非限制性示例,nand器件含有串联连接的存储器元件(例如,含有电荷存储区域的装置)。例如,可以配置nand存储器阵列,使得阵列由存储器的多个串组成,在存储器中每个串由共享单个位线的多个存储器元件构成并且成组地存取。相反,可以配置存储器元件,使得每个元件单独地存取(例如,nor存储器阵列)。本领域技术人员将认识到,nand和nor存储器配置是示例性的,并且可以以其他方式配置存储器元件。包括在单个装置中的半导体存储器元件(诸如位于相同基板内和/或在相同基板之上或在单个裸芯中的存储器元件)可以以二维或三维方式分布(诸如二维(2d)存储器阵列结构或三维(3d)存储器阵列结构)。在二维存储器结构中,半导体存储器元件布置在单个平面或单个存储器装置级中。典型地,在二维存储器结构中,存储器元件被布置在实质上平行于支持存储器元件的基板的主表面延伸的平面中(例如,在x-z方向的平面)。基板可以是晶片,存储器元件的材料层沉积在晶片上或形成在晶片中,或者基板可以是载体基板,在形成存储器元件之后载体基板被附接到存储器元件。存储器元件可以以诸如多个行和/或列的有序阵列的方式布置在单个存储器装置级中。然而,如本领域技术人员所理解的,存储器元件可以以非规则或非正交的配置来布置。存储器元件可以各自具有两个或更多个电极或者接触线,包括位线和字线。组织三维存储器阵列,使得存储器元件占据多个平面或多个装置级,形成三维中的结构(即在x、y和z方向上,其中y方向实质上垂直于基板的主表面,且x方向和y方向实质上平行于基板的主表面)。作为非限制性示例,三维存储器阵列结构中的每个平面可物理地位于具有多个二维存储器级的二维(一个存储器级)中以形成三维存储器阵列结构。作为另一个非限制性示例,三维存储器阵列可以物理地构造为在每列中具有多个元件的多个垂直列(例如,实质上垂直于的基板的主表面的在y方向上延伸的列),并且因此具有跨越存储器装置的几个垂直堆叠平面的元件。列可以以二维配置(例如,在x-z平面中)布置,由此导致存储器元件的三维布置。本领域技术人员将会理解,三维中的存储器元件的其他配置也将构成三维存储器阵列。通过非限制性的示例,在三维nand存储器阵列中,存储器元件可以连接在一起以形成在单个平面(为了便于讨论,有时称为水平(例如x-z)平面)内的nand串。可替代地,存储器元件可以连接在一起以延伸穿过多个平行平面。可以设想其他的三维配置,其中一些nand串在存储器元件的单个平面中含有存储器元件,而其他串含有延伸穿过多个平行平面(有时称为平行的存储器级)的存储器元件。三维存储器阵列还可以设计成nor配置和reram配置。单片三维存储器阵列是其中根据一系列制造操作形成在单个基板(诸如,半导体晶片)之上和/或之内的多个平面的存储器元件(也称为多个存储器级)。在单片3d存储器阵列中,形成相应的存储器级(诸如,最高存储器级)的材料层位于形成底层存储器级的材料层的顶部,但位于相同的单个基板上。在一些实现方式中,单片3d存储器阵列的相邻存储器级可选地共享至少一个材料层,而在其他实现方式中,相邻的存储器级具有将它们分离的中间材料层。相反,二维存储器阵列可以分开形成,然后集成在一起以混合方式形成非单片3d存储器装置。例如,通过在分离的基板上形成2d存储器级并将所形成的2d存储器级上下叠置集成来构建堆叠的存储器。每个2d存储器级的基板可以在将其集成为3d存储器装置之前被减薄或移除。由于各个存储器级形成在分离的基板上,因此得到的3d存储器阵列不是单片三维存储器阵列。此外,可以单独地形成从2d存储器阵列和3d存储器阵列(单片或混合)中选择的多于一个存储器阵列,然后将其封装在一起以形成堆叠的芯片存储器装置。堆叠的芯片存储器装置包括存储器装置的多个平面或层,有时称为存储器层。术语“三维存储器装置”(或3d存储器装置)在本文中被定义为表示具有存储器元件的多个层或多个级(例如,有时称为多个存储器级)的存储器装置,包括以下中的任何一个:具有单片或非单片3d存储器阵列的存储器装置,其一些非限制性示例如上所述;或两个或更多个2d和/或3d存储器装置,封装在一起以形成堆叠的芯片存储器装置,其一些其非限制性示例如上所述。本领域技术人员将认识到,本文描述和要求保护的本发明不限于这里描述的二维和三维示例性结构,而是覆盖适用于实现本发明或如本文所述并如本领域技术人员所理解的发明的所有相关的存储器结构。应该理解,尽管本文可以使用术语“第一”、“第二”等来描述各种元件,但是这些元件不应受这些术语的限制。这些术语仅用于区分一个元件和另一个元件。例如,第一目标电荷可以被称为第二目标电荷,并且类似地,第二目标电荷可以被称为第一目标电荷,而不改变描述的含义,只要所有出现的“第一目标电荷”一致地重新命名,并且所有出现的“第二目标电荷”一致地重新命名。第一个目标电荷和第二个目标电荷两者都是目标电荷,但它们不是相同的目标电荷。本文使用的术语仅用于描述特定实施例的目的,而不旨在限制权利要求。如在实施例和所附权利要求的描述中所使用的,除非上下文另外明确指出,否则单数形式“一”,“一个”和“该”旨在也包括复数形式。还将理解的是,如本文所使用的术语“和/或”是指并且包含一个或多个相关联的列出的项目的任何和所有可能的组合。将进一步理解的是,当在本说明书中使用时,术语“包括”和/或“包含”指定所陈述的特征、整体、步骤、操作、元件和/或组件的存在,但不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、组件和/或其组合。如本文所使用的,取决于上下文,术语“如果”可以被解释为意指,“当”或“一经”或“响应于确定”或“根据确定”或“响应于检测”所陈述的先决条件为真。类似地,短语“如果确定[所陈述的先决条件为真]”或“如果[所陈述的先决条件为真]”或“当[所陈述的先决条件为真]”可以被解释为意指,取决于上下文,“一经确定”或“响应于确定”或“根据确定”或“一经检测到”或“响应于检测到”所陈述的先决条件为真。为了解释的目的,前面的描述已经参照具体实施例进行了描述。然而,上面的说明性讨论并非旨在穷举或将权利要求限制为所公开的精确形式。鉴于上述教导,许多修改和变化是可能的。选择和描述实施例是为了最好地解释操作原理和实际应用,从而使本领域的其他技术人员能够实现。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1