针对nand闪存上数据的存储的架构的制作方法

文档序号:6533570阅读:169来源:国知局
针对nand闪存上数据的存储的架构的制作方法
【专利摘要】本发明提供了用于处理来自存储介质的数据的系统、方法、装置和技术。读取存储介质上存储的数据的条带,其中条带包括多个数据分配单元(AU)和奇偶校验AU。向多个数据AU的每个数据AU应用纠错解码以产生多个经解码的数据AU。确定多个经解码的数据AU中的字节的值是否满足奇偶校验AU的值。响应于确定多个经解码的数据AU中的字节的值满足奇偶校验AU的值,输出多个经解码的数据AU。
【专利说明】针对NAND闪存上数据的存储的架构
[0001]相关申请的交叉引用
[0002]本专利文档要求2012年3月16日提交的第61/612,140号美国临时申请的权益及优先权,其公开内容通过这里整体引用而合并于此。

【技术领域】
[0003]本公开涉及用于向存储介质高效写入数据的技术,该存储介质包括独立磁盘冗余阵列(RAID)NAND闪速存储介质。

【背景技术】
[0004]在此提供的【背景技术】描述是出于总体上呈现本公开的上下文的目的。本发明人的工作,就在本【背景技术】部分中所描述的而言,以及就在提交时并适合作为现有技术的描述的方面而言,并不明示或者暗示其为针对本公开的现有技术。
[0005]固态驱动器(SSD)可以从诸如NAND闪存设备或动态随机访问存储器(DRAM)设备的设备读取和写入数据,该设备可以使用RAID架构实现。SSD通常包括具有多个数据通道的SSD控制器,用于向NAND闪存以及从其转移数据。此外,SSD控制器通常执行按照被称为分配单元(AU)的固定字节大小单元来管理数据的固件。传统上,数据以单个操作被写入NAND闪存的给定页面并且写入操作包括作为AU大小的整数倍的若干字节。因此,当NAND闪存的页面大小不是AU大小的整数倍时,NAND闪存的存储器可能未被充分使用。


【发明内容】

[0006]提供了用于处理来自存储介质的数据的系统、方法、装置和技术。在存储介质上存储的数据的条带被读取,其中条带包括多个数据分配单元(AU)和奇偶校验AU。纠错解码被应用于多个数据AU中的每个数据AU以产生多个经解码的数据AU。确定多个解码数据AU中的字节的值是否满足奇偶校验AU的值。响应于确定多个解码数据AU中的字节的值满足奇偶校验AU的值,输出该多个经解码的数据AU。
[0007]在某些实现方式中,确定多个数据AU中的数据AU是否不可读。在某些实现方式中,数据条带的第一部分使用多个数据转移通道中的第一数据转移通道来读取,并且数据条带的第二部分使用多个数据转移通道中的第二数据转移通道来读取。在某些实现方式中,多个数据AU中的数据AU被部分存储在存储介质的第一页面和第二页面中的每个页面中。在某些实现方式中,多个数据AU中的数据AU被部分存储在存储介质的第一数据转移通道和第二数据转移通道中的每个数据转移通道中。在某些实现方式中,奇偶校验AU在给定字节位置中的字节的值通过异或多个数据AU中的每个数据AU中的给定字节位置中的字节的值来生成。

【专利附图】

【附图说明】
[0008]当与附图结合考虑以下详细描述时,本公开的其他特征、本公开的本质以及各种优势将变得明显,在附图中,相似的参考符号通篇指示相似的元素,并且在附图中:
[0009]图1描绘了根据某些实施例的RAID实现的存储介质的NAND页面的说明性阵列。
[0010]图2描绘了根据某些实施例的用于向RAID实现的存储介质的NAND页面写入AU的序列的说明性技术。
[0011]图3描绘了根据某些实施例的用于向RAID实现的存储介质的NAND页面写入AU的序列的说明性基于条带的技术。
[0012]图4描绘了根据某些实施例的用于向RAID实现的存储介质的NAND页面写入AU的序列的另一说明性基于条带的技术。
[0013]图5描绘了根据某些实施例用于向RAID实现的存储介质的NAND页面写入AU的序列的又一说明性基于条带的技术。
[0014]图6描绘了根据某些实施例用于向RAID实现的存储介质的NAND页面写入AU的序列的附加说明性基于条带的技术。
[0015]图7描绘了根据某些实施例的用于从存储介质的一个或多个条带读取数据的说明性过程。

【具体实施方式】
[0016]这里公开了用于以基于条带的逻辑结构为基础提高存储介质的利用的技术,该存储介质包括基于RAID的NAND闪速存储介质。如这里所述,条带被限定为存储介质上存储的AU的汇集。基于条带的方法允许AU跨页面边界写入,因此提高了存储介质的利用。此夕卜,如这里所述,基于条带的逻辑架构在基于RAID的实现方式中具有优势,这是因为RAID的一个磁盘(或设备)出现的故障通常不会影响RAID的其他磁盘(或设备)上存储的不可覆盖的相关数据。
[0017]图1描绘了根据某些实施例的RAID实现的存储介质的NAND页面的说明性阵列。SSD控制器的固件可以基于根据通道、页面、逻辑单元号(LUN)和物理设备(例如,硅片)的存储器位置的参数化来访问RAID实现的存储介质的存储器位置。具体地,说明100示出了NAND页面的阵列使用x+1数据转移通道可寻址,该数据转移通道分别被标为CH0102至CHx104。说明100详细描绘了数据转移通道CH0102和CHx 104的结构。
[0018]说明100中描绘的每个数据转移通道可以用于访问多个物理设备(或“目标”),例如,硬盘驱动。例如,数据转移通道CH0102可以用于与目标0106和目标1108对接。此夕卜,说明100的每个目标包括多个LUN。例如,目标1108包括LUN 0110和LUN 1112。每个LUN可以对应于例如虚拟硬盘驱动分区。每个LUN可以包括多个平面,其中每个平面由不同的功率资源集供电。例如,LUN 0110包括平面0114和平面1116。最后,NAND页面的阵列可以包括任意数目的页面118。
[0019]本领域技术人员可以理解,基于这里的公开和教导图1中所绘RAID实现的存储介质的NAND页面的阵列仅是说明性的并且这里公开的技术可以应用于任意适当的NAND阵列。例如,这里公开的技术可以应用于包括每页面和数据转移通道多于两个目标的NAND阵列和/或应用于包括多于两个平面的LUN。
[0020]图2描绘了根据某些实施例的用于向RAID实现的存储介质的NAND页面写入AU的序列的说明性技术。具体地,图示200描绘了 32个连续AU如何被写入跨存储介质的各通道和平面的页面。如在说明200中所绘,SSD控制器的固件被编程用于向RAID实现的存储介质的通道0,平面O和页面O写入32个AU的序列中的第一 AU和第二 AU。类似地,SSD控制器的固件被编程用于向RAID实现的存储介质的通道0,平面I和页面O写入32个AU的序列中的第十七AU和第十八AU。类似地,32个AU的序列中的其余AU中的每个AU的准确位置(在通道、平面和页面号方面)由图2框之一中显示的对应数值表示。
[0021]图2中所绘的每个AU单独编码有纠错码(ECC),S卩,AU的一部分字节是ECC编码字节。然而,通常ECC码仅可以完全纠正其中少数字节毁坏的码字,而不能完全纠正其中大部分码字的字节毁坏或丢失的码字。因此,图2中所绘用于生成写入模式的SSD控制器要求给定AU完全写入存储设备的单个页面。此要求在图2中被反映,其示出了每个AU完全包含在单个页面(即,单个矩形框)内。
[0022]系统可以要求每个AU完全包含在单个页面内的一个原因是防止“级联错误”。具体地,考虑到在系统中,单个页面仅包含一个或多个AU的一部分(这些AU的每个AU因此具有其跨多个其他页面散布的剩余内容)。如果单个页面毁坏或丢失,则不只是该单个页面中丢失的字节,而是所有即使部分包含在该单个页面上的AU的所有字节。因此,单个页面故障可以导致大量数据丢失,从而影响跨多个页面散布的字节。
[0023]然而,虽然要求每个AU完全包含在单个页面内有利于防止级联错误,但是这会潜在地导致存储介质未被充分使用。例如,假设与图2相关联的RAID实现的存储介质的NAND页面的每个页面具有2,048字节大小并且每个AU具有748字节大小。如果给定AU不可以跨存储设备的页面而是必须被完全写入单个页面,则最多两个AU可以被写入每个页面。这是因为两个AU表示748X2 = 1,496字节,其小于页面大小,而三个AU表示748X3 = 2,244字节,其大于页面大小。因此,如图2中所绘,16个页面中的每个页面准确存储数据的两个AU。具体地,每个页面仅使用总2,048字节中的1,496字节,并且每个页面因此近似27%未被充分使用。
[0024]在存储介质的页面大小不是AU大小的整数倍的应用中,没有多个AU准确占有存储介质的页面的所有字节,并且存储介质因此基于关于图2所述的技术而未被充分使用。因此,如本公开所述的基于条带的技术被呈现用于处理这种不足并且提高存储介质的利用率,该存储介质包括RAID实现的NAND闪速存储介质。
[0025]图3描绘了根据某些实施例的用于向RAID实现的存储介质的NAND页面写入AU的序列的说明性基于条带的技术。图3中所示的写入技术不同于图2所示的写入技术,这是因为AU被允许跨页面断开。例如,第二 AU跨页面310和312断开,第四AU跨页面312和314断开,以及第十三AU跨页面316和318断开。
[0026]如上文所述,在图3其中单个AU可以跨多个页面断开的系统中的一个问题是跨页面的级联错误的可能性。为了某种程度上提供针对级联错误的保护,图3的系统包括以每条带为基础的奇偶校验AU。具体地,行320的所有AU受制于奇偶校验AU,即,第二十AU,其跨页面322和324断开。条带通常指定奇偶校验AU应用的域中的AU。因此,由于条带被定义为包括图3行320的所有AU,因此奇偶校验AU 20基于行320的所有其他AU中包含的数据。例如,在某些实现方式中,奇偶校验AU的字节长度等于页面的字节长度,奇偶校验AU的每个字节通过异或跨行320中的剩余AU (即,AU 1、2、15、16、3、4、17、18、19、7和21)散布的某些字节集确定。类似地,行322的所有AU受制于奇偶校验AU,S卩,第二十七AU,其跨页面330和332断开。
[0027]与图2的写入技术相比,图3的写入技术具有更有效使用存储介质的优势,并且在典型实现方式中,通过允许字节跨页面写入得到的附加效率远超出某些字节作为奇偶校验字节的损失。图3中所示实现方式的一个潜在缺点是完美恢复数据的丢失页面(或页面的一部分)的能力可能取决于单个附加错误(即,除了由于丢失页面或页面的一部分的错误)是否在条带的某处出现。
[0028]为了说明此点,考虑到如下情况,其中给定条带的奇偶校验AU(即,行320的条带的第二十个AU和行332的条带的第二十七个AU)的第η个字节的值通过异或条带中的每个AU ( S卩,不包括奇偶校验AU本身)的第η个位置来确定。例如,标为20的奇偶校验AU的第一字节的值通过异或标为1、2、15、16、3、4、17、18、5、6、19、7和21的AU的第一位置来确定。接下来假设页面314故障,使得页面314的数据都不可读。在此情况下,如果从行320的任意其他页面读取的数据的任意字节中没有错误(在对该字节执行ECC解码之后),则页面314的内容完全可恢复。另一方面,如果在ECC解码之后标为1、2、15、16、3、4、17、18、
19、7和21的AU的任意AU中仍然有一个或多个错误,则异或将无法正确恢复第二十个AU的所有字节。
[0029]图4描绘了根据某些实施例的用于向RAID实现的存储介质的NAND页面写入AU的序列的另一说明性基于条带的技术。在图4的技术中,AU允许跨页面断开。然而,图4所示写入技术不同于图3所示技术,这是因为条带被定义为附图行(例如,行420)内所有AU的子集而不是被定义为该行的所有AU。在图4的写入技术中,AU取从I到28的值并且这些值表示有序序列,按该序列这些AU被写入存储介质(其中AU I首先写入而AU 28最后写入)。具体地,AU I至7被写入页面O的平面0,AU 8至14被写入页面I的平面0,继而AU 15至21被写入页面O的平面I,并且AU 22至28被写入页面I的平面I (所有AU被写入图3所述的特定页面)。
[0030]如表410中所示,条带1、2和3各包括行420中出现的AU的子集,并且条带4、5和6各包括行422中出现的AU的子集。例如,条带I包括行420的总AU的十四分之六(即,标为1、15、4、18、7和21的AU),条带2包括行420的总AU的十四分之四(即,标为2、16、5和19的AU),并且条带3包括行420的总AU的十四分之四(即,标为3、17、6和20的AU)。标为19、20、21、26、27和28的AU是奇偶校验AU并且在图4中被圈出。如从表410容易看出,条带I至6的每个条带正好包括一个奇偶校验AU。
[0031]考虑到图4的每个奇偶校验AU的第η个字节的值通过异或属于包含该AU的条带的每个非奇偶校验AU的第η个位置来确定。例如,标为21的奇偶校验AU的第一字节的值通过异或标为1、15、4、18和7的AU的第一位置来确定。在此情况下,图4的写入技术比图3的写入技术在页面的故障方面有利地更具有稳健性。具体地,假设页面414的数据变得不可读。参照表410的条带I的内容的列表,如果从AU 1、15、18和7中的任意AU读取的数据的任意字节不存在错误(在对字节执行ECC解码之后),则标为4的AU的内容完全可恢复。类似地,参照表410的条带2的内容的列表,如果从AU2和16中的任意AU读取的数据的任意字节不存在错误(在对字节执行ECC解码之后),则标为5的AU的内容完全可恢复。最后,参照表410的条带3的内容的列表,如果从AU 3和17中的任意AU读取的数据的任意字节不存在错误(在对字节执行ECC解码之后),则标为6的AU的内容完全可恢复。
[0032]因此,当页面变得不可读时,如果两个其他AU (在条带2和3的情况下)或四个其他AU(在条带I的情况下)的解码的值中不存在错误,则数据可以恢复。因此,与图3的技术相比,图4的技术能够在相对少数目AU留有错误(S卩,条带I的情况下两个或四个AU)的条件下恢复任意给定的数据条带。因此,平均上,图4的写入技术比图3的系统能够在出现页面故障时正确读取更多的数据。然而,图4的写入技术要求比图3的写入技术更大部分的字节用于奇偶校验。具体地,图3要求跨所有16个页面总共四个奇偶校验AU,而图4要求跨所有16个页面更大的总共八个奇偶校验AU。
[0033]图5描绘了根据某些实施例的用于向RAID实现的存储介质的NAND页面写入AU的序列的又一说明性基于条带的技术。图5的写入技术类似于图4的写入技术,但是以与图3的不同顺序向介质写入AU。更具体地,在图4的写入技术中,AU取从I到30的值并且这些值表示经有序序列,按该序列AU被写入存储介质(其中AUl首先写入而AU 30最后写入)。具体地,AU I至8 (其一部分)被写入页面O的平面0,AU 8 (AU 8的剩余部分)至15被写入页面O的平面1,继而AU 16至23 (其一部分)被写入页面I的平面0,以及AU23 (AU 23的剩余部分)至30被写入页面I的平面I (所有AU被写入图4中所示的特定页面)。因此,图5的写入技术在跨页面写入之前跨平面写入AU,而图4的写入技术在跨平面写入之前跨页面写入AU。然而,图4和图5的写入技术均使用相同量的开销奇偶校验字节。
[0034]图6描绘了根据某些实施例的用于向RAID实现的存储介质的NAND页面写入AU的序列的附加说明性基于条带的技术。图6的写入技术类似于图4和图5的写入技术,但是包括其AU跨某些页面散布的条带。具体地,表610列出了图6写入技术使用的四个条带。如表中所反映的,条带2和4各自跨页面O和I。例如,条带2包括页面O上标为2、18、6、22、10、26、14和30的AU的所有部分或者页面I上AU 2、18、6、22、10、26、14和30的AU的所有部分。与图4和图5的写入技术相比,图6的写入技术能够利用更长的条带(并且更小的总条带数),这是因为其使用跨页面的条带。此外,由于图6的写入技术使用比图4或图5的写入技术更少的条带,因此图6的写入技术需要比图4或图5的写入技术更少的奇偶校验开销。
[0035]图7描绘了根据某些实施例的用于从存储介质的一个或多个条带读取数据的说明性过程。过程800中所述的操作可以由计算机系统上安装的并且控制SSD控制器的固件来执行。在805,过程800开始针对在存储介质上存储的数据的一个或多个条带的读取操作。在810,条带计数器(被称为stripe_counter)被设置等于值I。在815,针对存储介质获得对应于属于标为stripe_counter的条带的每个AU的存储器位置的映射。例如,该映射可以从查找表的数据中获得。
[0036]在820,基于在815获得的存储器位置从存储介质读取属于标为stripe_counter的条带的AU。读取的AU包括包含针对属于标为stripe_counter的所有其他AU的奇偶校验信息的AU。例如,在某些实现方式中,属于给定条带的奇偶校验AU的第η个位置通过异或该条带中每个AU(除了该奇偶校验AU本身)的第η个位置确定。在825,对读取的AU执行纠错解码。具体地,条带中的每个AU在被写入存储介质之前被ECC编码,并且因此在825基于每AU执行ECC解码。
[0037]在830,确定在820读取的AU中是否存在任何不可读AU。如果例如存储介质的给定页面故障或者页面中存储的数据变得不可读,则可能存在一个或多个不可读AU。如果确定在830存在至少一个不可读AU,则过程800继续到835。另一方面,如果确定在830不存在不可读AU,则过程800继续到850。
[0038]在835,使用奇偶校验AU尝试恢复不可读AU的数据。在某些实现方式中,如果读取的AU中正好存在一个不可读AU,则恢复将会成功,并且在825执行的纠错解码之后,该条带的任意可读AU中不存在字节错误。在840,确定所有不可读AU的恢复是否成功。如果成功,则过程800继续到850。另一方面,如果在840确定恢复不成功,则过程800继续到845,其中宣布解码读取失败并且过程800终止。
[0039]在850,确定读取的AU中是否存在任何字节(在825执行的纠错解码和在835尝试的非奇偶校验AU的任意恢复之后)不满足读取的奇偶校验AU。如果存在至少一个字节不满足奇偶校验AU,则过程800继续到845,其中宣布解码读取失败并且过程800终止。另一方面,如果所有读取的AU字节满足奇偶校验AU,则过程800继续到855,其中对应于该读取的AU的当前AU数据被输出(即,在825执行的纠错解码和在835尝试的非奇偶校验AU的任意恢复之后),并且过程800继续到860。
[0040]在860,确定条带计数器的当前值stripe_counter是否等于针对读取操作(例如,在805)指定的条带的总数stripe_MAX。如果等于,则过程800继续到865,其中过程800被终止。另一方面,如果条带计数器的当前值stripe_counter不等于针对读取操作指定的条带的总数stripe_MAX,则过程800继续到870。在870,条带计数器的当前值stripe_counter被增加并且过程800回到815。
[0041]虽然本文已经示出并描述了本公开的各个实施例,但是对于本领域技术人员将会显而易见的是,这样的实施例仅是作为示例而被提供。现在本领域技术人员将进行多种变化、改变和替换而并不背离本公开。应当理解的是,在实践本公开时可以采用针对这里所描述的本公开的实施例的各种替换方式。以下权利要求意在定义本公开的范围,并且处于这些权利要求范围之内的方法和结构及其等同形式因此被得以覆盖。
【权利要求】
1.一种用于处理来自存储介质的数据的系统,所述系统包括: 读取电路,被配置为读取在所述存储介质上存储的数据的条带,所述条带包括多个数据分配单元(AU)和奇偶校验AU ; 解码电路,被配置为向所述多个数据AU中的每个数据AU应用纠错解码以产生多个经解码的数据AU ; 奇偶校验电路,被配置为确定所述多个经解码的数据AU中的字节的值是否满足所述奇偶校验AU的值;以及 数据转移电路,被配置为响应于确定所述多个经解码的数据AU中的字节的所述值满足所述奇偶校验AU的所述值而输出所述多个经解码的数据AU。
2.根据权利要求1所述的系统,包括数据校验电路,被配置为确定所述多个数据AU中的数据AU是否不可读。
3.根据权利要求1所述的系统,其中所述读取电路包括多个数据转移通道,并且其中所述读取电路被配置为使用所述多个数据转移通道中的第一数据转移通道来读取数据的所述条带的第一部分以及使用所述多个数据转移通道中的第二数据转移通道来读取数据的所述条带的第二部分。
4.根据权利要求1所述的系统,其中所述多个数据AU中的数据AU部分地存储在所述存储介质的第一页面和第二页面中的每个页面中。
5.根据权利要求4所述的系统,其中所述多个数据AU中的所述数据AU部分地存储在所述存储介质的第一数据转移通道和第二数据转移通道中的每个数据转移通道中。
6.根据权利要求5所述的系统,其中所述多个数据AU中的所述数据AU部分地存储在所述存储介质的第一平面和第二平面中的每个平面中。
7.根据权利要求1所述的系统,包括写入电路,所述写入电路被配置为通过跨所述存储介质的页面并且然后跨平面写入数据的所述条带的AU来向所述存储介质写入数据的所述条带。
8.根据权利要求1所述的系统,包括写入电路,所述写入电路被配置为通过跨所述存储介质的平面并且然后跨页面写入数据的所述条带的AU来向所述存储介质写入数据的所述条带。
9.根据权利要求1所述的系统,包括编码电路,所述编码电路被配置为通过异或所述多个数据AU中的每个数据AU中的给定字节位置中的字节的值来生成所述给定字节位置中的所述奇偶校验AU的字节的值。
10.根据权利要求1所述的系统,其中条带中包括的AU的总数小于三十。
11.一种用于处理来自存储介质的数据的方法,所述方法包括: 读取在所述存储介质上存储的数据的条带,所述条带包括多个数据分配单元(AU)和奇偶校验AU ; 向所述多个数据AU中的每个数据AU应用纠错解码以产生多个经解码的数据AU ; 确定所述多个经解码的数据AU中的字节的值是否满足所述奇偶校验AU的值;以及 响应于确定所述多个经解码的数据AU中的字节的所述值满足所述奇偶校验AU的所述值而输出所述多个经解码的数据AU。
12.根据权利要求11所述的方法,包括确定所述多个数据AU中的数据AU是否不可读。
13.根据权利要求11所述的方法,包括使用所述多个数据转移通道中的第一数据转移通道来读取数据的所述条带的第一部分以及使用所述多个数据转移通道中的第二数据转移通道来读取数据的所述条带的第二部分。
14.根据权利要求11所述的方法,包括将所述多个数据AU中的数据AU部分地存储在所述存储介质的第一页面和第二页面中的每个页面中。
15.根据权利要求14所述的方法,包括将所述多个数据AU中的所述数据AU部分地存储在所述存储介质的第一数据转移通道和第二数据转移通道中的每个数据转移通道中。
16.根据权利要求15所述的方法,包括将所述多个数据AU中的所述数据AU部分地存储在所述存储介质的第一平面和第二平面中的每个平面中。
17.根据权利要求11所述的方法,包括通过跨所述存储介质的页面并且然后跨平面写入数据的所述条带的AU来向所述存储介质写入数据的所述条带。
18.根据权利要求11所述的方法,包括通过跨所述存储介质的平面并且然后跨页面写入数据的所述条带的AU来向所述存储介质写入数据的所述条带。
19.根据权利要求11所述的方法,包括通过异或所述多个数据AU中的每个数据AU中的给定字节位置中的字节的值来生成所述给定字节位置中的所述奇偶校验AU的字节的值。
20.根据权利要求11所述的方法,其中条带中包括的AU的总数小于三十。
【文档编号】G06F11/10GK104246708SQ201380019643
【公开日】2014年12月24日 申请日期:2013年3月14日 优先权日:2012年3月16日
【发明者】S-H·F·奥, 孙飞, 申呟锡, 李智刚 申请人:马维尔国际贸易有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1