用于允许数据在NAND闪存上的有效存储的架构转让专利

申请号 : CN201380019240.X

文献号 : CN104220991B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : S-H·F·奥孙飞申呟锡李智刚

申请人 : 马维尔国际贸易有限公司

摘要 :

提供了用于向存储介质写入数据的系统、方法、装置和技术。存储介质的条带经由一个或多个数据传送信道对接,其中该条带包括存储介质的多个页面。接收数据流并且将该数据流划分为多个分配单元(AU),其中该多个AU中的每个AU具有预定字节长度。通过从该多个页面中的第一页面上的开始字节到该多个页面中的第二页面上的结束字节连续地写入从该多个AU中所选择的AU的字节,所选择的AU的第一部分被写入到该第一页面并且所选择的AU的第二部分被写入到该第二页面。

权利要求 :

1.一种用于向存储介质写入数据的系统,所述系统包括:接口电路,所述接口电路被配置为经由一个或多个数据传送信道与所述存储介质的条带对接,所述条带包括所述存储介质的多个页面;

分区电路,所述分区电路被配置为接收数据流并且将所述数据流划分为多个分配单元(AU),所述多个AU中的每个AU具有相同的预定字节长度;以及写电路,所述写电路被配置为通过从所述多个页面的第一页面上的开始字节到所述多个页面的第二页面上的结束字节连续地写入从所述多个AU中所选择的AU的字节,来将所选择的AU的第一部分写入到所述第一页面并且将所选择的AU的第二部分写入到所述第二页面。

2.根据权利要求1所述的系统,其中所述写电路被配置为基于所述页面的排序序列来将所述多个AU写入到所述条带。

3.根据权利要求1所述的系统,其中所述写电路包括写缓冲器,并且其中所述写电路被配置为在等于所述条带的长度的数据量累积在所述写缓冲器中之后对所述存储介质写入。

4.根据权利要求1所述的系统,其中所述多个页面位于多个存储设备上。

5.根据权利要求1所述的系统,其中所述写电路被配置为使用所述一个或多个数据传送信道中的第一数据传送信道来访问所述多个页面中的第一页面,并且使用所述一个或多个数据传送信道中的第二数据传送信道来访问所述多个页面中的第二页面。

6.根据权利要求1所述的系统,其中所述多个AU中的每个AU与来自所述一个或多个数据传送信道中的最多两个数据传送信道相关联,并且其中所述两个数据传送信道相邻。

7.根据权利要求1所述的系统,进一步包括收集电路,所述收集电路被配置为:读取被存储在所述存储介质中的数据;

检测所读取的数据之中的未被写入的字节;以及

将所读取的数据重新写入到所述存储介质,其中所述重新写入在未被写入的字节上写入。

8.根据权利要求1所述的系统,进一步包括纠错(ECC)电路,所述纠错(ECC)电路被配置为:读取被存储在所述存储介质的所述条带中的数据;以及计算对应于所读取的数据的纠错序列。

9.根据权利要求8所述的系统,其中所述写电路被配置为:接收所述纠错序列;以及

将所述纠错序列写入到所述存储介质的所述条带的最后页面。

10.根据权利要求1所述的系统,其中所述写电路被配置为将所述多个AU写入到所述条带的第一部分而留下所述条带的第二部分未被写入。

11.一种用于向存储介质写入数据的方法,所述方法包括:经由一个或多个数据传送信道与所述存储介质的条带对接,所述条带包括所述存储介质的多个页面;

接收数据流并且将所述数据流划分为多个分配单元(AU),所述多个AU中的每个AU具有相同的预定字节长度;以及通过从所述多个页面的第一页面上的开始字节到所述多个页面的第二页面上的结束字节连续地写入从所述多个AU中所选择的AU的字节,来将所选择的AU的第一部分写入到所述第一页面并且将所选择的AU的第二部分写入到所述第二页面。

12.根据权利要求11所述的方法,进一步包括:基于所述页面的排序序列来将所述多个AU写入到所述条带。

13.根据权利要求11所述的方法,进一步包括:响应于确定等于所述条带的长度的数据量累积在写缓冲器中,对所述存储介质写入。

14.根据权利要求11所述的方法,其中所述多个页面位于多个存储设备上。

15.根据权利要求11所述的方法,进一步包括:使用所述一个或多个数据传送信道中的第一数据传送信道来访问所述多个页面中的第一页面,并且使用所述一个或多个数据传送信道中的第二数据传送信道来访问所述多个页面中的第二页面。

16.根据权利要求11所述的方法,其中所述多个AU中的每个AU与来自所述一个或多个数据传送信道中的最多两个数据传送信道相关联,并且其中所述两个数据传送信道相邻。

17.根据权利要求11所述的方法,进一步包括:读取被存储在所述存储介质中的数据;

检测所读取的数据之中的未被写入的字节;以及

将所读取的数据重新写入到所述存储介质,其中所述重新写入在未被写入的字节上写入。

18.根据权利要求11所述的方法,进一步包括:读取被存储在所述存储介质的所述条带中的数据;以及计算对应于所读取的数据的纠错序列。

19.根据权利要求18所述的方法,进一步包括:接收所述纠错序列;以及

将所述纠错序列写入到所述存储介质的所述条带的最后页面。

20.根据权利要求11所述的方法,进一步包括:将所述多个AU写入到所述条带的第一部分而留下所述条带的第二部分未被写入。

说明书 :

用于允许数据在NAND闪存上的有效存储的架构

[0001] 相关申请的交叉引用
[0002] 本专利文献要求于2012年3月16日提交的美国临时申请No.61/612,140的权益并且要求其优先杈,上述申请的公开内容因此通过引用其全文而结合于此。

技术领域

[0003] 本公开涉及用于将数据有效地写入包括NAND闪存介质在内的存储介质的技术。

背景技术

[0004] 本文中所提供的背景技术描述是为了总体上给出本公开内容的背景。就该背景技术部分中所描述的工作的范围以及说明书中的在提交时并不以其它方式构成现有技术的方面而言,本文的发明人的工作既非明确也非隐含地被承认为相对本公开的现有技术。
[0005] 固态硬盘(SSD)从诸如NAND闪存设备或动态随机访问存储器(DRAM)设备的设备读取和写入数据。在NAND闪存的情况下,SSD通常包括SSD控制器,其具有用于往来于NAND闪存传送数据的多个数据信道。另外,SSD控制器通常执行以固定字节大小的单元对数据进行管理的固件,上述固定字节大小的单元被称作分配单元(AU)。传统上,数据在单次操作中被写入NAND闪存的给定页面并且该写入操作包括多个字节,该多个字节是AU的字节大小的整数倍。当NAND闪存的页面大小并非AU大小的整数倍时,NAND闪存的存储器就可能并未被充分利用。

发明内容

[0006] 提供了用于向存储介质写入数据的系统、方法、装置和技术。一种系统包括接口电路,该接口电路被配置为经由一个或多个数据传送信道与该存储介质的条带(stripe)对接,其中该条带包括该存储介质的多个页面(page)。该系统进一步包括分区电路,该分区电路被配置为接收数据流并且将该数据流划分为多个AU,该多个AU中的每个AU具有预定字节长度。该系统进一步包括写电路,该写电路被配置为通过从该多个页面中的第一页面上的开始字节到该多个页面中的第二页面上的结束字节连续地写入从该多个AU中所选择的AU的字节,来将所选择的AU的第一部分写入到该第一页面并且将所选择的AU的第二部分写入到该第二页面。
[0007] 在一些实施方式中,该写电路被配置为基于页面的排序序列来将该多个AU写入到该条带。在一些实施方式中,该写电路包括写缓冲器,并且该写电路被配置为在等于该条带长度的数据量累积在该写缓冲器中之后对该存储介质写入。在一些实施方式中,该系统包括纠错(ECC)电路,该纠错(ECC)电路被配置为读取被存储在该存储介质的条带中的数据并且计算对应于所读取的数据的纠错序列。在一些实施方式中,该写电路被配置为接收该纠错序列并且将该纠错序列写入到该存储介质的条带的最后一个页面。
[0008] 一种方法包括经由一个或多个数据传送信道与存储介质的条带对接,其中该条带包括该存储介质的多个页面。该方法进一步包括接收数据流并且将该数据流划分为多个AU,该多个AU中的每个AU具有预定字节长度。该方法进一步包括通过从该多个页面中的第一页面上的开始字节到该多个页面中的第二页面上的结束字节连续地写入从该多个AU中所选择的AU的字节,来将所选择的AU的第一部分写入到第一页面并且将所选择的AU的第二部分写入到第二页面。

附图说明

[0009] 通过考虑以下结合附图所进行的详细描述,本发明的以上和其它特征将是显而易见的,在附图中,同样的附图标记始终指代同样的部分,并且其中:
[0010] 图1描绘了依据一些实施例的用于存储介质的说明性的现有技术的数据分配技术;
[0011] 图2描绘了依据一些实施例的针对存储介质中的页面的两种说明性AU分配;
[0012] 图3描绘了依据一些实施例的可以被SSD控制器的固件用来向单个条带分配页面的说明性技术;
[0013] 图4描绘了依据一些实施例的在存储介质的存储设备中针对两个不同AU值和针对多个条带大小而未被充分利用(“浪费”)的百分比;
[0014] 图5描绘了依据一些实施例的由SSD控制器的固件所执行的用于确定要被包括在条带中的存储介质的页面数量的说明性过程;
[0015] 图6描绘了依据一些实施例的存储介质的页面,该存储介质包括用于其中SSD控制器采用写缓冲器的系统的部分已被写入的条带;
[0016] 图7描绘了依据一些实施例的存储介质的页面,该存储介质包括用于其中SSD控制器未采用写缓冲器的系统的部分已被写入的条带;
[0017] 图8图示了依据一些实施例的其中单个AU可由单个信道或者最多两个相邻信道进行访问的情形;
[0018] 图9图示了依据一些实施例的七个AU及其相应的相关联信道;以及
[0019] 图10示出了依据一些实施例的用于执行本文中所描述的任意过程的计算设备的说明性框图。

具体实施方式

[0020] 本文公开了用于以基于条带的逻辑结构为基础而提高包括NAND闪存介质在内的存储介质的利用率的技术。
[0021] 图1描绘了依据一些实施例的用于存储介质的说明性的现有技术的数据分配技术。特别地,图示100描绘了属于存储介质的四个页面的集合110,而个体页面被标记为P0、P1、P2和P3。图示100进一步描绘了总共12个AU被SSD控制器写入到四个页面的集合110的方式。出于说明的目的,假设四个页面的集合110中的每个页面具有2,048个字节的大小并且每个AU具有520个字节的大小。在典型系统中,给定AU可能并不跨存储设备的页面而是取而代之必须完全被写入到单个页面。因此,在图示100中,包括A0、A1和A2的AU的块120被写入到存储设备的页面P0中的前520×3=1,560个字节中。然而,由于在该写操作之后在页面P0中仅剩余488个字节,所以没有空间将整个A3写入到页面P0。
[0022] 因此,A3被另外写入到该存储介质的新的页面,P1。特别地,如图1所描绘的,页面P0、P1、P2和P3中的每一个页面都恰好存储三个AU。因此,由于个体AU的存储不可跨该存储介质的任何两个页面,所以页面P0、P1、P2和P3中的每一个页面上的存储空间都未被充分利用。特别地,未被充分利用的字节在图1中由字节125、135、145和155所表示。特别地,页面P0、P1、P2和P3中的每一个页面均包括488个字节的未使用空间,总共为2,048个字节。因此,页面P0、P1、P2和P3中的每一个页面大约有百分之23未被充分利用。
[0023] 因此,在存储介质的页面大小并不是AU大小的整数倍的应用中,将不会有多个AU恰好占据存储介质的页面的所有字节,并且存储介质因此将不会被充分利用。因此,提出了如本公开中所描述的基于条带的技术,以解决这样的缺陷并且针对其中页面大小并非AU大小的整数倍的系统提高包括NAND闪存存储介质在内的存储介质的利用率。
[0024] 条带是存储介质中指定数量的页面(例如,2、5或10个页面)的分组。有利地,通过使用条带逻辑框架,SSD控制器的固件允许AU跨存储设备的页面进行细分,同时仍然对这样的AU内的所有数据进行正确读取和访问。令M表示条带中页面的数量并且令N表示条带中AU的数量。因此,理想情况下,为了实现存储介质的完全利用,以下等式应当成立:
[0025] M*(以字节为单位的页面大小)=N*(以字节为单位的AU大小)。(1)然而,实际上,需要满足等式(1)的M和/或N的数值可能过大或者另外地实施起来并不现实。然而,即使在使用并不满足以上等式(1)的M和N的数值时,与其中个体AU不被允许跨页面进行细分的方案相比,存储介质仍然基于条带框架而得到更为有效地利用。这将在以下进行描述。
[0026] 基于条带的方法的一些优势基于图2的图示200进行描绘。具体地,针对页面大小为2,048个字节而AU大小为1,030个字节的情形,图示225描绘了M=4且N=7的情形。如图示225所示,SSD控制器的固件允许个体AU 230跨页面进行细分并且因此存储介质的前三个页面(分别被标记为P0、P1和P2)被完全利用。然而,由于等式(1)并未被满足,所以NAND存储设备关于最后一个页面P4存在一定程度的非充分利用。特别地,如图2所描绘的,页面P4并未被完全写入并且某些数量的字节232保持空白。七个AU 230占据了图示225中所描绘的条带的总共8,192个字节中的7,210个字节,大约为百分之88的总体利用率。作为比较,如果AU无法跨页面进行细分,则该NAND闪存的总体利用率将是每页面的每2,048个字节中的1,030个字节,或者大约稍高于百分之50的利用率。
[0027] 作为基于条带的方法的第二图示,图示250针对832个字节的页面大小和520个字节的AU大小的情形描绘了M=10且N=16的情形。在这种情况下,等式(1)得到满足,并且因此NAND存储设备被完全利用。特别地,页面P9(图示250中所描绘的条带的最后一个页面)被完全写入。作为比较,如果AU无法跨页面进行细分,则该NAND闪存的总体利用率将为每832个字节中的520个字节,或者大约稍高于百分之62的利用率。
[0028] 将页面逻辑分组为条带由SSD控制器的固件来执行,并且在一些实施方式中,该固件可以仅将来自单个存储设备的页面分配至一个条带,而在其它实施方式中,该固件可以将来自多个存储设备的页面分配至单个条带。除此之外或可替换地,该固件可以将能够通过多个不同数据传送信道进行访问的页面分配至单个条带。
[0029] 图3描绘了依据一些实施例的可以被SSD控制器的固件用来向单个条带分配页面的说明性技术。特别地,图示300描绘了其中SSD控制器可以对跨四个不同设备(分别标记为DEV0、DEV1、DEV2和DEV3)进行分布并且使用两个不同信道(分别标记为CH0和CH1)的96个页面进行写入。图3的不同设备可以对应于例如不同的存储器或存储设备,SSD控制器能够独立地从这些不同的存储器或存储设备中的每一个进行读取并对其进行写入。图示300针对用于向跨信道和设备的条带分配页面的两种不同策略而描绘了M=8的情形。
[0030] 第一种条带分配策略是跨设备和信道两者分配条带。这由图3中的条带310和条带320描绘。第二种可替换的条带分配策略是要求被分配至给定条带的所有页面都属于共同的信道(同时跨设备被分布)。针对该信道为CH0的情形,这由条带330所图示,而针对该信道为CH1的情形,这由条带340进行图示。如本领域技术人员将要理解的,基于本文中的公开内容和教导,图3所描绘的分配策略仅是可以使用的许多类型的分配策略中的两种。实际上,可以使用包含整数数量的AU和整数数量的页面两者的任意分配策略(图3中所描绘的任意页面的群组到单个条带的映射)。
[0031] 为了访问被存储在条带中的数据并且为了向条带中写入数据,固件必须能够生成每个所存储的AU的第一字节的地址(或等同的地址)。为此,该固件使用两个寻址组件。首先是条带ID,其被用来识别存储设备中所存储的数据的每个条带的开始的,以及AU索引,其被用来识别与给定AU相关联的偏移量。例如,在具有总共P个条带并且每个条带N个AU的存储设备中,给定AU可以由从0至P-1的条带ID数值以及从0至N-1的AU索引数值进行寻址。另外,为了访问物理存储器地址,该固件可以参考闪存变换层(FTL)表,该表将条带ID和AU索引数值映射至物理存储器地址(并且物理存储器地址自身可以由页面标识编号和页面偏移量所表示)。
[0032] 针对各种应用,固件将把一组地址与给定AU相关联。针对被完全写入在单个页面内的AU,固件可以保存具有形式(条带ID、第一字节、最后一个字节)的单个条目。例如,参考回图2,针对AU A0 257,固件可以保存单个条目(0,0,519),其表示该AU属于第一条带并且占据该条带的字节0至519。另一方面,针对图2中跨多个条带进行细分的AU A1 259,该固件使用两个条目。因此,AU A0 257可以由与该AU在第一个页面中所占据的字节相对应的条目(0,0,519)所表示,而AU A1 259则可以由与该AU分别在第一个和第二个页面中所占据的字节相对应的条目(0,520,831)和(1,0,207)所表示。
[0033] SSD控制器可以使用固件和硬件的任意适当组合,将条带ID和AU索引数值转译为页面地址和页面偏移量(或者在AU跨两个页面的情况下可能是两对页面地址和页面偏移量)。在第一实施方式中,该固件向SSD控制器的硬件提供条带ID和AU索引。该硬件随后将该条带ID和AU索引数值解码为(多个)页面地址和(多个)页面偏移量。例如,该硬件在AU跨页面边界的情况下将生成两个页面读数。在第二实施方式中,该固件自行将条带ID和AU索引数值解码为(多个)页面地址和页面偏移量数值。在这种情况下,该固件在AU跨过页面边界的情况下自行生成两个页面读数。
[0034] 利用硬件进行地址解码的第一实施方式的优势在于,使得固件可用于处理其它操作,并且因此整体系统性能可能比使用固件进行解码的第二实施方式更快。第一实施方式的缺陷在于硬件必须了解潜在的被损坏或不可使用的地址数值,并且这可能需要使用大量资源来向硬件提供这样的信息。有利的是,所公开的条带结构并不受限于SSD控制器执行AU的读取的方式。
[0035] 图4描绘了依据一些实施例的在存储介质的存储设备中针对两个不同AU值和针对多个条带大小而未被充分利用(“浪费”)的百分比。特别地,表410针对4,680个字节的AU大小405以及1、2、3、4和16个页面的条带大小描绘了浪费数值,而表420则针对4,752个字节的AU大小415以及针对1、2、3、4和16个页面的条带大小描绘了浪费数值。在两种情况下,页面大小都为9,216个字节。作为如何计算浪费数值的示例,考虑对应于4,680个字节的AU大小以及三个页面的条带大小(或9,216×3=27,648个字节)的行418。在这种情况下,在不超过该条带的字节大小的情况下,最多有5个AU可以被写入到一个条带(即,总共23,400个字节)。因此,该条带的27,648个字节中的4,248个字节未被使用,相当于大约百分之15的浪费。
[0036] 如图4所描绘的,针对4,680个字节和4,752个字节的AU大小的情形,浪费随着条带大小的增大而减少,直至该条带大小达到16个页面的长度。如图4所描绘的,针对4,680个字节的AU大小405的浪费大约为百分之1.6113,而针对4,752个字节的AU大小415的浪费则大约为百分之0.0977。因此,使用本公开内容中关于图4所描述的技术,针对甚至中等条带大小,浪费通常也能够被减少为相对小的百分比。在一种布置中,浪费字节并未被留为空白,而是相反地被用于存储纠错码(ECC)字节。例如,在表410中并且利用16个页面的条带大小,2,376个字节并未被分配至AU。这些字节可以被用来存储ECC字节以确保所使用的147,456-
2,376=145,080个字节的可靠性。
[0037] 图5描绘了依据一些实施例的由SSD控制器的固件所执行的用于确定要被包括在条带中的存储介质的页面数量的说明性过程。过程500在505开始。在510,由固件获得均以字节为单位测量并且分别以AU_Size和Page_Size所表示的AU的大小和页面的大小。例如,在一种布置中,参数AU_Size可以为4,680个字节并且参数Page_Size可以为9,216个字节。
[0038] 在520,该固件将由Page_Cnt所表示的页面计数器的数值设置为等于数值1。该页面计数器表示要包括在一个条带中的页面的总数量的当前候选数值。在530,该固件基于参数AU_Size和Page_Cnt来确定由Stripe_Size_Write所表示的、以字节为单位的条带的当前大小。特别地,该固件根据以下关系来确定该数量:
[0039] Stripe_Size_Write=AU_Size×Page_Cnt
[0040] 在530,该固件确定与条带大小和AU大小相关联的由Waste_Bytes所表示的浪费字节的数量。为此,该固件确定纳入到一个条带中的AU的最大整数数量。例如,如果条带大小为27,648个字节并且AU大小为4,680个字节,则该固件确定最多将有五个AU纳入到该条带中。接下来,基于将纳入到条带中的AU的最大数量的大小,该固件确定浪费字节的数量。例如,由于最多将有大小为4,680个字节的五个AU均纳入到大小为27,648个字节的条带中,则上述示例中有27,648-5×(4,680)=4,248个浪费字节。
[0041] 在540,该固件基于在540所确定的浪费字节的数量以及在530所确定的条带大小来确定由Waste_Percentage所表示的浪费百分比。具体地,该固件根据以下关系确定浪费百分比:
[0042] Waste_Percentage=100(Waste_Bytes/Stripe_Size_Write)。
[0043] 例如,如果浪费字节的数量为4,248个字节而条带大小为27,648个字节,则浪费百分比被确定为大约百分之15。在550,确定在540所确定的浪费百分比是否小于预先指定的数值(例如,百分之一、百分之三或百分之五)。如果浪费百分比在560被确定为小于该预先指定的数值,则过程500进行至570,在那里该固件确定条带要包括等于页面计数器Page_Cnt的当前数值的页面数量。另一方面,如果浪费百分比在560被确定为大于该预定数值,则过程500进行至580,在那里页面计数器被递增数值1。在后者的这种情况下,过程500进行至530。
[0044] 在一些实施方式中,如本文中所描述的SSD控制器的固件使用写缓冲器来管理针对存储介质的页面的数据写入。在这些实施方式中,写缓冲器在向该介质进行全部写入之前累积对整个条带进行写入的足够数据。然而,即使在采用了写缓冲器的时候,也可能仅对部分条带进行了写入。例如,可能当在条带写入开始之后但是在写入已经完成之前发生断电事件的时候写入了部分条带。另外,在一些实施方式中,SSD控制器可能根本不采用写缓冲器或者可能采用大小小于条带大小的写缓冲器。在这种情况下,部分条带将按常规被写入到介质。
[0045] 图6描绘了依据一些实施例的存储介质的页面,该存储介质包括用于其中SSD控制器采用写缓冲器的系统的部分已被写入的条带。在图6中,每个矩形框表示存储介质的页面,并且行对应于不同数据传送信道而列对应于不同条带(因此,在图6的示例中,每个条带恰好包含六个页面)。另外,带阴影的页面、或带阴影的页面的一部分分别表示该页面或该页面的一部分已经被SSD控制器所写入。非阴影页面或页面的部分分别表示该页面或页面的部分还未被写入。
[0046] 图6的SSD控制器累积整个条带的数据并且一次写入整个条带的数据。因此,条带605和610如图6中的带阴影矩形所示,被完全写入。另一方面,在SSD控制器对条带615进行写入时发生了断电事件。特别地,该断电事件在SSD控制器对页面620进行写入时发生并且因此页面620仅被部分写入,如页面620的部分阴影所反映的。当SSD控制器在随后(例如,在上电之后)继续写入时,页面620并未被再次写入。相反地,写入在下一个页面、即页面630的中间地址处开始,并且这以图6中的页面630的部分阴影所表示。
[0047] 图7描绘了依据一些实施例的存储介质的页面,该存储介质包括用于其中SSD控制器并未采用写缓冲器的系统的部分已被写入的条带。与图6中相同,图7的每个矩形框表示存储介质的页面,并且行对应于不同数据传送信道而列对应于不同条带。另外,带阴影的页面(或带阴影的页面的部分)表示该页面(或该页面的部分)已经被SSD控制器所写入。非阴影页面或页面的部分分别表示该页面或页面的部分还未被写入。
[0048] 图7的SSD控制器在不使用写缓冲器的情况下向存储介质写入数据。因此,在图7的页面中存在许多未被写入的间隙。例如,虽然条带705和708已经总体上被写入,但是在页面710和715、页面720和725以及页面730和735之间存在未被写入数据的间隙。这些间隙中的每一个间隙对应于SSD控制器的一个写入会话的结束和另一个写入会话的开始。
[0049] 无论SSD控制器是否使用写缓冲器,页面之间所写入的数据中的间隙都可以通过执行周期性的回收活动而被回收再利用,上述周期性回收活动被设计为重写数据以便封闭未被写入数据的间隙。该处理被称作“垃圾收集”。根据执行垃圾收集的第一种选项,选择页面的单元,其中该单元并不是整数数量的条带。SSD控制器的固件重新写入数据从而封闭间隙并且追踪通过垃圾收集过程而被完全清空的条带。根据用于执行垃圾收集的第二种选项,该擦除单元是整数数量的条带。
[0050] 在一些实施方式中,AU的分配基于SSD控制器所采用的数据传送信道而受到限制。特别地,在这些实施方式中,单个AU可以被单个信道进行访问或者可以由最多两个相邻信道进行访问(其中,第一信道和最后一个信道被认为是相邻的)。该约束在图8中通过针对SSD控制器使用被标记为0至7的八个信道的情形的示图825进行图示。如示图825中所示,给定AU可以跨信道1和2,或者信道2和3,或者信道3和4,或者信道4和5,或者信道5和6,或者信道6和7,或者信道7和0,或者信道0和1。
[0051] 该约束的原因在于,它简化了差错控制单元(ECU)与NAND闪存接口(NFIF)860之间的数据路由。特别地,示图850所示,ECU 851包含多个ECC引擎。虽然在示图850中描绘了包括ECC引擎852、853和854在内的总共八个ECC引擎,但是如本领域技术人员所理解的,基于本文中的教导和公开内容,可能有更多或更少的ECC引擎。每个AU可由单个信道或者最多两个相邻信道进行访问的约束限制了每个引擎最多向NFIF 860的两个NAND信道进行输出。例如,如图8中所描绘的,引擎833的输出通信地耦合至NFIF 860的信道4和5。
[0052] 将每个AU约束为能够由单个信道或者最多两个相邻信道进行访问而将每个引擎的输出限制为去往针对NFIF 860的最多两个NAND信道的另一个优势在于,它限制了要在读过程期间(例如,由于时序或数据损坏差错)要跳过信道时所丢失的AU的数量。这在图9中进行了图示。特别地,图示900描绘了被表示为AU0至AU6的七个AU,以及与它们中的每一个AU相关联的信道(这些信道被表示为CH0至CH3)。例如,AU0仅与信道CH0相关联,而AU1与信道CH0和CH1两者相关联。接下来假设CH1必须在读或写过程期间被跳过。在这种情况下,仅有三个AU,AU1、AU2和AU3,被丢弃。如果每个AU都与多个信道相关联,则跳过信道1将可能导致更多数量的AU被丢弃。
[0053] 图10示出了依据一些实施例的用于执行本文中所描述的任意过程的计算设备的说明性框图。计算设备1000包括至少一个通信接口单元、输入/输出控制器1010、系统存储器以及一个或多个数据存储设备。该系统存储器包括至少一个随机访问存储器(RAM 1002)以及至少一个只读存储器(ROM 1004)。所有这些部件都与中央处理器(CPU 1006)进行通信以促进计算设备1000的操作。计算设备1000可以以许多不同方式进行配置。例如,计算设备1000可以是常规的独立计算机,或者可替换地,计算设备1000的功能可以跨多个计算机系统和架构进行分布。在图10中,计算设备1000经由网络1018或本地网络而链接至其它服务器或系统。
[0054] 计算设备1000可以以分布式架构进行配置,其中数据库和处理器被保存在单独的单元或位置。一些单元执行主要处理功能并且至少包含通用控制器或处理器以及系统存储器。在分布式架构的实施方式中,这些单元中的每一个单元可以经由通信接口单元1308而附接至通信集线器或端口(未示出),该通信集线器或端口用作与其它服务器、客户端或用户计算机以及其它相关设备的主要通信链路。该通信集线器或端口自身可以具有最少的处理能力,主要用作通信路由器。各种通信协议可以是该系统的一部分,包括但并不局限于以太网(Ethernet)、SAP、SASTM、ATP、蓝牙TM、GSM和TCP/IP。
[0055] CPU 1006包括处理器,诸如一个或多个常规微处理器以及一个或多个补充协同处理器,诸如用于卸载CPU 1006的工作负荷的数学协同处理器。CPU 1006与通信接口单元1008和输入/输出控制器1010进行通信,CPU 1006通过它们与其它设备、诸如其它服务器、用户终端或设备进行通信。通信接口单元1008和输入/输出控制器1010可以包括用于同时与例如其它处理器、服务器或客户端终端进行通信的多个通信信道。
[0056] CPU 1006还与数据存储设备进行通信。数据存储设备可以包括磁性、光学或半导体存储器的适当组合,并且可以包括例如RAM1002、ROM 1004、闪存、诸如紧致盘的光盘或硬盘或驱动器。CPU1006和数据存储设备例如均可以完全位于单个计算机或其它计算设备之内;或者通过通信介质互相连接,通信介质诸如USB端口、串行端口线缆、同轴线缆、以太网线缆、电话线、射频收发器或其它类似的无线或有线介质或者以上的组合。例如,CPU 1006可以经由通信接口单元1008连接至数据存储设备。CPU 1006可以被配置为执行一个或多个特定处理功能。
[0057] 数据存储设备例如可以存储:(i)计算设备1000的操作系统1012;(ii)被适配为依据这里所描述的系统和方法、特别是依据关于CPU 1006详细描述的过程而指引CPU 1006的一个或多个应用1014(例如,计算机程序代码或计算机程序产品);或者(iii)被适配为存储信息的(多个)数据库1016,其可被用来存储程序所需的信息。
[0058] 操作系统1012和应用1014例如可以以压缩、非编译和加密格式进行存储,并且可以包括计算机程序代码。该程序的指令可以从除数据存储设备以外的计算机可读介质读入到处理器的主存储器,诸如从ROM 1004或RAM 1002读入。虽然该程序中的指令序列的执行使得CPU 1006执行本文中所描述的过程步骤,但是可以替代软件指令或者与之相结合地使用硬线电路来实施本公开内容的过程。因此,所描述的系统和方法并不局限于硬件和软件的任何具体组合。
[0059] 可以提供适当计算机程序代码来执行与如本文中所描述的降低峰值功耗相关的一个或多个功能。该程序还可以包括诸如操作系统1012、数据库管理系统和“设备驱动器”的程序单元,其允许处理器经由输入/输出控制器1010与计算机外围设备(例如,视频显示器、键盘、计算机鼠标等)对接。
[0060] 如本文中所使用的术语“计算机可读介质”是指向计算设备1000的处理器(或者本文中所描述的设备的任意其它处理器)提供或参与提供指令以供执行的任意非瞬态介质。这样的介质可以采取许多形式,包括但并不局限于非易失性媒介和易失性媒介。非易失性媒介例如包括光学、磁性或光学磁盘,或者诸如闪存的集成电路存储器。易失性媒介包括动态随机访问存储器(DRAM),其通常构成主存储器。常见形式的计算机可读媒体例如包括软盘、柔性盘、硬盘、磁带、任意其它磁性介质、CD-ROM、DVD、任意其它光学介质、打孔卡、纸带、具有开孔图案的任意其它物理介质、RAM、PROM、EPROM或EEPROM(电可擦除可编程只读存储器)、FLASH-EEPROM、任意其它存储器芯片或卡盘(cartridge),或者计算机能够从其进行读取的任意其它非瞬态介质。
[0061] 在向CPU 1006(或者本文中所描述设备的任意其它处理器)输送一个或多个指令的一个或多个序列以供执行时,可以涉及到多种形式的计算机可读媒介。例如,这些指令最初可以处于远程计算机(未示出)的磁盘上。该远程计算机可以将指令加载到其动态存储器中并且通过以太网连接、线缆线路或者甚至使用调制解调器而通过电话线发送这些指令。计算设备1000本地的通信设备(例如,服务器)能够在相应的通信线路上接收到该数据并且将该数据置于用于处理器的系统总线上。该系统总线将该数据输送至主存储器,处理器从那里获取并执行这些指令。在被处理器执行之前或之后,主存储器所接收的指令可选地可以被存储在存储器中。此外,这些指令可以作为电、电磁或光学信号而经由通信端口被接收,它们是承载各种类型的信息的无线通信或数据流的示例性形式。
[0062] 虽然本文中已经示出并描述了本公开内容的各个实施例,但是对于本领域技术人员将会显而易见的是,这样的实施例仅是作为示例而被提供。现在本领域技术人员将进行多种变化、改变和替换而并不背离本公开内容。应当理解的是,在实践本公开内容时可以采用针对本文中所描述的本公开的实施例的各种替换。以下权利要求旨在定义本公开内容的范围,并且这些权利要求范围之内的方法和结构及其等同形式因此得以被涵盖。