创建纠错编码方案的方法和减少数据损失的设备的制作方法

文档序号:6561651阅读:198来源:国知局
专利名称:创建纠错编码方案的方法和减少数据损失的设备的制作方法
技术领域
本发明涉及一种创建纠错编码方案以减少数据损失的方法。它还涉及减少数据损失的方法、设备、计算机程序产品和计算机程序。它还涉及保护存储在至少一个存储单元处的数据以防不可纠正的介质错误的系统。
背景技术
存储单元例如基于至少一个磁盘或光盘或固态存储器作为存储介质。随着单个存储单元的存储容量的增加,读取存储在存储单元的至少一个存储介质上的数据时遇到至少一个介质相关的错误的可能性也在增加。当不能通过重新读取所述介质的特定部分来纠正错误时,数据会受到损失。通过存储分布到两个或更多存储单元的冗余数据,可以提高包括所述两个或更多存储单元的系统的可靠性。这种系统被称为独立磁盘冗余阵列(RAID)。已配置RAID的系统主要减少因存储单元的彻底失败而带来的数据损失。
US 2005/0108594 A1揭示了一种保护磁盘驱动器上的数据以防不可纠正的介质错误的方法。通过其中将冗余信息扇区与数据信息扇区关联的技术,为已配置RAID的存储系统提供了避免出现不可纠正的介质错误的保护。所述数据信息扇区和所述冗余信息扇区作为单个段被写入单个存储单元。所述冗余信息基于里德-所罗门代码(一种基于异或的代码)或一维奇偶校验。
因此,需要提供一种比先前提出的技术更为简单的创建编码方案以减少数据损失的方法。同样,需要提供一种比先前提出的技术更为简单的减少数据损失的方法、设备、计算机程序和计算机程序产品。还需要提供一个比先前提出的技术更为简单和可靠的保护存储在至少一个存储单元上的数据以免出现不可纠正的介质错误的系统。

发明内容
根据本发明的第一方面的实施例,提供了一种用于创建纠错编码方案以减少数据损失的方法,所述数据包括与具有至少两个数据信息实体的给定数据集关联的具有至少两个冗余信息实体的给定冗余集,根据所述数据集的信息内容来计算所述冗余集的信息内容,所述方法包括以下步骤基本选择步骤,用于选择由基本矩阵表示的基本编码方案,其中每个冗余信息实体由行表示,而每个信息实体由列表示;以及矩阵设置步骤,用于设置具有所述基本矩阵的列的子集的目标矩阵并且用于根据所述基本矩阵来改变列的顺序,直至所述目标矩阵在至少给定程度满足非零元素的给定模式(pattern)。此功能允许构建计算引擎以便计算所述冗余集的所述信息内容,其比先前提出的技术中使用的计算引擎更简单。所述非零元素的给定模式影响所述纠错编码方案的复杂性,由此影响其在所述计算引擎中的实现。所述信息实体可以是一位或字节或存储单元上的扇区或任何其他用于存储或传送或接收信息的适合实体。
根据本发明的第一方面的优选实施例,所述非零元素的给定模式被选择为包括所述目标矩阵的正方形模式子矩阵的主对角线,所述主对角线具有主要为非零的元素,所述目标矩阵具有的行数和列数等于所述冗余集中的冗余信息实体数。所述非零元素的给定模式因而更为简单和规则并允许更为简单地构建计算引擎。
在此方面,所述非零元素的给定模式被选择为还包括与所述目标矩阵的所述正方形模式子矩阵的所述主对角线相邻布置的邻近对角线是有利的,所述邻近对角线的元素被选择成主要为非零。这允许构建计算引擎,以便可以通过利用从所述主对角线的元素计算的中间结果来处理所述邻近对角线的元素。所述计算引擎因而可以更为有效。
根据本发明的第一方面的其他优选实施例,所述基本矩阵被选择为对于所述基本编码方案的给定汉明距离具有最少的非零元素数、最少的所述数据集中的数据信息实体数以及最少的所述冗余集中的冗余信息实体数。这允许减少用于计算所述冗余集的信息内容的操作数。
根据本发明的第一方面的其他优选实施例,在所述矩阵设置步骤中,改变所述列的顺序直至列数与所述冗余集中的冗余信息实体数相等的所述目标矩阵的每个方格子矩阵的秩与所述冗余集中的冗余信息实体数相等。这允许恢复最多等于所述冗余集中的冗余信息实体数的连续不可读数据信息实体,也称为“删除部分(erasures)”。由此,可以更加可靠地保护数据以防数据损失并降低数据损失的可能性。
根据本发明的第一方面的其他优选实施例,所述创建的纠错方案基于分别计算由所述目标矩阵每行中的非零元素表示的所有数据信息实体的信息内容的异或。这允许更为简单和性能更高的纠错编码方案,同时降低了计算冗余集的开销,并且与先前提出的技术相比更容易实现。
在此方面,所述基本编码方案基于汉明码或扩展汉明码中的一种编码是有利的。这使得所述纠错编码方案更为可靠。
根据本发明的第二方面的实施例,提供了一种用于减少数据损失的方法,所述数据包括与具有至少两个数据信息实体的给定数据集关联的具有至少两个冗余信息实体的给定冗余集,根据所述数据集的信息内容通过应用纠错编码方案来计算所述冗余集的信息内容,所述纠错编码方案由奇偶校验矩阵表示,其中每个冗余信息实体由行表示,而所述数据的每个信息实体由列表示,并且所述奇偶校验矩阵的至少两个正方形子矩阵具有元素主要为非零的对角线并具有与所述冗余集中的冗余信息实体数相等的行数和列数,并且表示所述数据集的连续放置的数据信息实体,所述方法包括第一计算步骤,用于通过处理所述至少两个主对角线上的所述数据信息实体来计算所述冗余信息实体的中间结果;以及第二计算步骤,用于根据所述中间结果来计算所述冗余信息实体的信息内容。由于所述奇偶校验矩阵的所述至少两个正方形子矩阵的主对角线具有主要为非零的元素,所以计算所述冗余集的信息内容更为简单。
根据本发明的第二方面的优选实施例,所述主对角线的元素主要为非零的所述奇偶校验矩阵的至少一个正方形子矩阵还具有元素主要为非零的邻近对角线,并且所述第二计算步骤包括利用所述中间结果来处理相应邻近对角线上的数据信息实体。这允许更有效地计算所述冗余集的信息内容。
根据本发明的第二方面的其他优选实施例,所述冗余集中的每个冗余信息实体的相应信息内容被计算为由所述奇偶校验矩阵的相应行中的非零元素表示的所述数据集中的所有数据信息实体的相应信息内容的异或。这允许在计算所述冗余集的信息内容时降低开销,导致更高的性能。所述方法还更容易实现。
根据本发明的第三方面的实施例,提供了一种用于减少数据损失的设备。该设备对应于本发明的第二方面的实施例及其优点。
根据本发明的第四方面的实施例,提供了一种用于保护存储在至少一个存储单元上的数据以防不可纠正的介质错误的系统。所述系统包括包含本发明的第三方面的设备和至少一个存储单元。每个信息实体表示所述至少一个存储单元上的扇区。所述系统对应于所述设备及其优点。
根据本发明的第四方面的优选实施例,所述系统配置为独立存储单元的冗余阵列。所述配置也称为独立磁盘冗余阵列(RAID)。这允许更高的可靠性,特别是在一个存储单元完全失败的情况下。由此通过独立存储单元的冗余阵列提供的盘间冗余以及冗余集提供的盘内冗余减少了数据损失。本发明的第三方面的有利的实施例并不限于盘,也可以包括任何其他种类的存储单元。
根据本发明的第五方面的实施例,提供了一种用于减少数据损失的计算机程序产品,所述计算机程序产品包括包含可由计算机执行的程序指令的计算机可读介质。所述程序指令对应于本发明的第二方面的实施例及其优点。
根据本发明的第六方面的实施例,提供了一种包括程序指令的用于减少数据损失的计算机程序。所述程序指令对应于本发明的第二方面的实施例及其优点。


现在通过实例的方式参考附图,这些附图是图1示意地示出了一个系统;图2是图1中所示的系统的方块图;图3是包括五个存储单元的配置了RAID级别5的系统中的数据组织的概要图;图4是包括八个存储单元的配置了RAID级别5的系统中的一个段的数据组织的概要图;图5示出了表示交织奇偶校验码的奇偶校验矩阵;图6A示出了表示已知的扩展汉明码的奇偶校验矩阵;图6B示出了稀疏扩展汉明码的奇偶校验矩阵;图6C示出了稀疏汉明码的奇偶校验矩阵;图7示出了用于自动创建纠错编码方案的方法的流程图;图8示出了表示基于图6C示出的奇偶校验矩阵的自动创建的纠错编码方案的奇偶校验矩阵;图9示出了用于减少数据损失的方法的流程图;以及图10示出了显示分别基于图5、6B、6C和8所示的奇偶校验矩阵的纠错编码方案的属性的表。
具体实施例方式
图1示出了用于获得对本发明的实施例的理解的系统。该系统包括至少一个存储单元100,在本实施例中,存储单元100由包括至少一个磁盘101作为存储介质和读/写头102的硬盘驱动器表示。读/写头102可以放置在所述至少一个磁盘101的选定磁道上。通过使用读/写头102在磁盘101上的选定数据区中有选择地确定磁性的方向来将二进制数据存储在磁盘101上。所述系统还包括用于减少数据损失的设备103。所述至少一个存储单元100与设备103相连。
图2示出了图1所示的系统的方块图。设备103包括用于连接主机(例如,计算机系统)的主机接口104,用于控制所述至少一个存储单元100的控制器105,包括内部存储器107的计算引擎106和连接到计算引擎106的外部存储器108。所述主机接口104、控制器105和计算引擎106被连接以便数据可以通过所述至少一个存储单元100请求主机接口104或相反以及在主机接口104与计算引擎106之间或在控制器105与计算引擎106之间传送。
图3示出了配置了RAID级别5的系统中的数据组织的概要图,所述系统包括五个存储单元100的阵列200,所述五个存储单元被标记为第一存储单元HDD1、第二存储单元HDD2、第三存储单元HDD3、第四存储单元HDD4和第五存储单元HDD5。所述五个存储单元100分别与设备103连接。数据被组织在条带202中。条带202跨越所有五个存储单元100。对于每个条带202,系统的每个独立存储单元100都包括一个条带203。每个条带203包括四个段204,而每个段204包括十六个数据块,每个数据块包括八个扇区。因此每个段204包括128个扇区。
在配置了RAID级别5的系统中,每个条带203带有用户数据E或RAID奇偶校验数据P。RAID奇偶校验数据P被计算为同一条带202中所有用户数据E的模2和(也称为异或或XOR)。RAID奇偶校验数据P的位置分别从一个存储单元100轮换到相继条带中的阵列200中的某一其他存储单元100。如果某一存储单元100失败,则从存储在仍然工作的其他存储单元100上的同一条带202中的其他用户数据E和RAID奇偶校验数据P,可以恢复存储在失败的存储单元100上的相应用户数据E和RAID奇偶校验数据P。配置了RAID级别5的系统允许通过恢复受损数据并将其写入系统中包括的备用存储单元100来重建某一失败的存储单元100的信息内容。
在完成重建之前,如果第二存储单元100失败或某一其他存储单元100上出现介质错误,则在配置了RAID级别5的系统中会出现数据损失。随着单个存储单元100的存储容量的增加,在重建操作期间读取的总字节数变得更多。这增加了遇到不可纠正的介质错误(通常导致一个或多个扇区变得不可读)的可能性。当不可纠正的介质错误和系统中一个存储单元100的失败同时发生时,问题尤其严重。例如,如果配置了RAID级别5的系统中的一个存储单元100失败,则重建过程会读取其余存储单元100上的所有数据以便在备用的存储单元100上重建受损的数据。在此阶段,在阵列200中的任何仍然工作的存储单元100上的不可纠正的介质错误会导致数据损失,因为没有方法来重建不可纠正的扇区的信息内容。在此易出问题的阶段中,数据损失的风险变得更大,因为磁盘容量持续快速增长而磁盘带宽和磁盘可靠性的增加要慢得多。理论和实践结果表明配置了RAID级别5的系统中的数据损失的主要来源在于重建期间的介质相关的故障。
通过提供盘内冗余(也称为通过盘内冗余的扇区保护(SPIDRE)),可以降低由于一个或多个介质错误带来数据损失的风险。图4为其他配置了RAID级别5的系统的一个段204的数据组织的概要图,所述系统包括八个存储单元100,分别标记为第一存储单元HDD1、第二存储单元HDD2、第三存储单元HDD3、第四存储单元HDD4、第五存储单元HDD5、第六存储单元HDD6、第七存储单元HDD7和第八存储单元HDD8。段204在每个存储单元100上包括十六个数据块,它们带有用户数据E、RAID奇偶校验数据P或盘内冗余数据S。每个存储单元100上的每个段204都有一个带有盘内冗余数据S的数据块。盘内冗余数据S分别与同一存储单元100上的段204的用户数据E或RAID奇偶校验数据P关联。当用户数据E和RAID奇偶校验数据P分别被写入段204或在段204中被更新时,设备103中的计算引擎106可用于计算和提供从段204的用户数据E和RAID奇偶校验数据P计算的盘内冗余数据S的信息内容。计算引擎106还可用于分别从其他用户数据E和RAID奇偶校验数据P的信息内容以及存储在同一存储单元100的同一段204的盘内冗余数据S来分别恢复不可读扇区的用户数据E和RAID奇偶校验数据P的信息内容。
盘内冗余的概念可应用于任何现有的RAID体系结构或级别,例如,RAID级别5、级别51、级别6或级别N+3。由RAID冗余数据S提供的RAID冗余主要减少因某一完整存储单元100的失败而造成的存储在阵列200上的数据的损失。盘内冗余减少了因不可纠正的介质错误带来的存储在每个单独存储单元100上的数据的损失。可以理解,盘内冗余的概念也可应用于仅包括单个存储单元100的系统。
对段204中的用户数据E的每个修改(例如,第二存储单元HDD2上的段204的第四个数据块)都应伴随对与同一段204中已修改的用户数据E关联的盘内冗余数据S的更新(例如,第二存储单元HDD2上的段204的第九个数据块)。进而,与已修改的用户数据E对应的RAID奇偶校验数据P也应被更新(例如,第八存储单元HDD8上的段204的第四个数据块)。由于RAID奇偶校验数据P的更新,与已更新的RAID奇偶校验数据P关联的盘内冗余数据S也应被更新(例如,第八存储单元HDD8上的段204的第九个数据块)。单独写入这四个数据块会导致四个请求。通过将盘内冗余数据S与用户数据E相继存储在同一段204中,仅使用第一请求205和第二请求206来更新用户数据E的块,RAID奇偶校验数据P的块和盘内冗余数据S的相应块。
在正常操作中(即,任何存储单元100都没有出现故障),可以从至少一个存储单元100读取用户数据E,而无需同时读取相应的RAID奇偶校验数据P。相应地,可以从至少一个存储单元100读取用户数据E,而无需同时读取盘内冗余数据S,只要在读取用户数据E期间没有出现介质错误。有利地使用单个请求来完成读取若干块连续的用户数据E。此请求也可以包括读取盘内冗余数据S,如果它位于由请求所包括的用户数据E的各块之间。可以理解,在此情况下,可以忽略盘内冗余数据S的信息内容。
每个更新用户数据E的请求使用读取和写入至少两个存储单元100上的至少两个数据块分别为已修改的用户数据E和RAID奇偶校验数据P,及相应的盘内冗余数据S。使用单独的请求来读取和写入四个数据块中的每个数据块将为用户数据E的每次更新使用四个读取请求加四个写入请求。通过应用第一请求205和第二请求206,仅使用两个读取请求加两个写入请求便可以实现用户数据E的更新。可以使用同一请求分别读取和写入逻辑地置于已修改的用户数据E的块或RAID奇偶校验数据P和盘内冗余数据S的相应块之间的一个或多个其他数据块(特别是用户数据E或RAID奇偶校验数据P)。每个请求所请求的数据块数因此取决于已修改的用户数据E的块或RAID奇偶校验数据P和盘内冗余数据S的相应块之间的距离。与将盘内冗余数据S置于段204的开始和结束处相比,通过将盘内冗余数据S大约放置在段204的中间,可以减少所有读取和/或写入请求的平均数据块数。在本实施例中,每个请求读取和/或写入的平均数据块数约为5.27。每个请求的寻道时间与用于读取一个例如4KB的数据块的时间的通常比率约为50比1。与使用单独的请求来访问以上实例的四个数据块中的每个数据块以便更新用户数据E、RAID奇偶校验数据P和盘内冗余数据S相比,使用每个请求读取和/或写入多个数据块对整体读/写性能的影响(特别是更新用户数据E时)因此更小。
作为一个实例,每个数据块的大小为4KB。段204有128个扇区。每个数据块被分为八个扇区。带有盘内冗余数据S的数据块被看作冗余信息扇区R的冗余集。冗余信息扇区R的数量r为8。用户数据E的每个块有八个数据信息扇区D。段204中有十五个用户数据E的块。因此,带有用户数据E的数据信息扇区D的数量n为120。段204的用户数据E的所有块的所有120个数据信息扇区D被着作一个数据集。所述冗余集与段204中的数据集相关联。根据所述数据集的信息内容来计算所述冗余集的信息内容。具体地说,所述冗余集中的每个冗余信息扇区R都被看作根据所述数据集的相应关联子集计算的奇偶校验,即,作为是所述数据集的子集的数据信息扇区D的相应关联集合的奇偶校验来计算每个冗余信息扇区R。
在不能从存储单元100正确读取用户数据E的块时,该用户数据E的块被标记为所谓的“删除部分”。在某些情况下,可以使用同一存储单元100上的同一段204的用户数据E的其他块和盘内冗余数据S的信息内容来恢复所述删除部分的信息内容。通过提供与段204中的数据集关联的冗余集实现的纠错能力(或更准确地说,删除恢复能力)取决于用于计算相应的冗余信息扇区R的数据信息扇区D的相应选择。使用尽可能少的计算操作来计算冗余集的信息内容以便减少使用复杂的计算引擎106的需要是所希望的。
图5示出了奇偶校验矩阵H,它表示所谓的交织奇偶校验编码(IPC编码),具体地说IPC-8(128、120)编码,它用于本发明的一个实施例并在此后称为第一类型的奇偶校验矩阵。奇偶校验矩阵H有8行,每行对应冗余集中的每个冗余信息扇区R。奇偶校验矩阵H还有128列,每列对应段204的每个扇区。奇偶校验矩阵H中的非零元素示为点。对于每个数据块,交织奇偶校验编码有八个非零元素。非零元素被放置在表示一个数据块的每个不同的8×8子矩阵的对角线上。奇偶校验矩阵H的每行中的所有非零元素标记了形成用于计算相应的冗余信息扇区R的数据集的相应关联子集的所有扇区。通过计算奇偶校验矩阵H的相应行中标记的所有数据信息扇区D的异或来计算相应的冗余信息扇区R。应用所述交织奇偶校验编码,存在数量nz为128的非零元素,即,应执行128次异或运算来计算冗余集的信息内容,即,段204的盘内冗余数据S。交织奇偶校验编码的最小汉明距离dmin为2。IPC-8(128、120)编码具有最多纠正数量为r的冗余信息扇区R的特性,即,最多8个具有段204中的介质错误和任何单个扇区介质错误的连续扇区。
图6A到6C分别示出了用于本发明的一个实施例中的第二、第三和第四类型的奇偶校验矩阵H。图6A中所示的第二类型的奇偶校验矩阵H为最小汉明距离dmin是4的公知扩展汉明码。在此奇偶校验矩阵H中非零元素的数量nz为576。图6B所示的第三类型的奇偶校验矩阵H为扩展汉明码,且奇偶校验矩阵H是稀疏的,即,非零元素的数量nz减少到512。最小汉明距离dmin为4。在图6C所示的第四类型的奇偶校验矩阵H中,进一步减少了非零元素的数量nz。图6C示出了奇偶校验矩阵H是稀疏的并且最小汉明距离dmin为3的汉明码。非零元素的数量nz为376。
分别对于给定的最小汉明距离dmin为4或3、冗余信息扇区R的数量r为8以及数据信息扇区D的数量n为120,第三和第四类型的奇偶校验矩阵H都具有最小的非零元素数量nz。
在最小汉明距离dmin为3时,可以确保奇偶校验矩阵H有最少的非零元素数nz,因为表示汉明码的奇偶校验矩阵H的列从二进制元组集形成,且冗余信息扇区R元素的数量r表示所有非零数,最高到2的冗余信息扇区R的数量r次幂减1。可以对奇偶校验矩阵H的列排序以使列的非零元素数nz从左到右增加。如果使用少于2的冗余信息扇区R的数量r次幂减1的列来表示段204的所有扇区,则可以通过选择最左侧的列来保证非零元素的最少数量nz。最小汉明距离dmin大于3时,不能以相同的方式来保证非零元素的最小数量。
还修改了第三和第四类型的奇偶校验矩阵H,以便在最多纠正数量为r的冗余信息扇区R(即,最多8个具有介质错误的连续扇区)的纠错能力方面,它们体现与交织奇偶校验编码相同的特性。与交织奇偶校验编码相比,扩展汉明码具有更好的纠错能力,这是因为最小汉明距离dmin分别为4或3。这额外地允许分别纠正段204中的任何三个和两个扇区介质错误。通常,可以在段204中纠正最小汉明距离dmin减1的单个介质错误。使用扩展汉明码因此导致对存储单元100的改进的保护,并且因此提高了存储单元100的可靠性,而且还增加了计算引擎106的计算能力以便执行更多数量的异或运算,这是因为与交织奇偶校验编码相比,奇偶校验矩阵H中的非零元素数nz更多。交织奇偶校验编码的纠错能力可应用于多数高端存储单元100,特别是多数高端硬盘驱动器(例如,结合了小型计算机系统接口,SCSI)。与交织奇偶校验编码相比具有更高纠错能力的扩展汉明码之一可被考虑用于低端存储单元100,特别是低端硬盘驱动器(例如,结合高级技术附件系统,ATA或串行高级技术附件系统,SATA)。
为了降低使用复杂的计算引擎106的需要和保证数据保护的某些特性,例如,最多纠正因介质错误引起的冗余信息扇区R的数量r个连续不可读扇区的纠错能力,可以改进奇偶校验矩阵H。引入了两个度量来更好地比较基于不同奇偶校验矩阵H的不同纠错编码方案。
第一个度量为XORO,或XOR开销。XORO是对编程XOR引擎以完成给定任务的所有异或运算(例如,计算冗余集的信息内容)的计算成本的测量。XOR引擎由计算引擎106表示。对于具有k个操作数的单个异或运算,XORO被定义为XORO(k)=k+1。XORO并不说明操作数的大小。
给定的任务由于子任务而消耗存储器带宽,所述子任务例如在存储单元100与外部存储器108之间移动数据或奇偶校验,通过主机接口104从外部存储器108将用户数据E发送到主机(例如,计算机系统),或者将数据或奇偶校验移入或移出XOR引擎(即,计算引擎106)。由名为MBWC的第二个度量来量化存储器带宽的消耗。例如,如果给定的任务是计算从主机接收的给定数量的数据块(例如,用户数据E或RAID奇偶校验数据P)的异或并将这些数据块与计算结果(例如,盘内冗余数据S)一起写入至少一个存储单元100,则完成此给定任务的存储器带宽消耗MBWC包括若干部分。在第一部分中,从主机接收的给定数量的数据块被写入外部存储器108。在第二部分中,从外部存储器108将所述给定数量的数据块读取到计算引擎106中。在第三部分中,将计算结果写回外部存储器108。在第四部分中,将给定数量的块和计算结果写入至少一个存储单元100。因此,传输到和传输自外部存储器的数据块的总数为给定数量的数据块的三倍加计算结果的两倍。在本实例中,所有数据块都具有相同的大小,例如,4KB。
使用IPC-8(128、120)编码进一步说明了XORO的计算。每个冗余信息扇区R都是段204的总共120个数据信息扇区D中的十五个不同数据信息扇区D的异或运算的结果。在8×128奇偶校验矩阵H中捕获冗余信息扇区R对数据信息扇区D的交织相关性,所述奇偶校验矩阵H具有规则的模式,所述模式包括十六个不同的8×8模式的子矩阵,所述子矩阵在相应的主对角线上具有非零的元素。每个8×8模式子矩阵的所有其他元素均为零。如果段204的所有120个数据信息扇区D都存储在外部存储器108中,则可以使用具有十五个源操作数(即,数据信息扇区D)和一个目标操作数(即,冗余信息扇区R)的异或运算来计算八个冗余信息扇区R中的每个冗余信息扇区R。因此,计算每个冗余信息扇区R的XORO值等于十六,而计算所有八个冗余信息扇区R的XORO值是128。在这种情况下,可以逐扇区地计算每个冗余信息扇区R。
考虑120个数据信息扇区D被连续存储在外部存储器108的连续位置中,可以降低计算引擎的复杂性。然后可以使用具有十五个源操作数和一个目标操作数的单个异或运算来计算所有八个冗余信息扇区R。但是,在这种情况下,每个操作数跨越八个连续的扇区。已计算的冗余信息扇区R也被连续存储在外部存储器108中。因此,计算所有八个冗余信息扇区R的XORO值为16。MBWC的值由于冗余信息扇区R的不同计算而保持不变并等于47个数据块。与上述情况相反,在当前情况下,每个冗余信息扇区R的计算是逐块地完成的。
图7示出了用于自动创建纠错编码方案以便减少数据损失的方法的流程图。所创建的纠错编码方案在降低计算引擎106的复杂性和存储器带宽消耗(即,XORO值和MBWC值)方面提供了平衡。在基本选择步骤中,奇偶校验矩阵H(例如,第四类型的奇偶校验矩阵H)被选为基本矩阵。在矩阵设置步骤中,修改所选择的基本矩阵以便其显示非零元素的给定模式(例如,类似于根据IPC-8(128、120)的模式子矩阵的规则模式)。但是,给定模式可以根据要求而不同。
所述方法以步骤S1作为入口点开始。在步骤S2,执行所述基本选择步骤。另外,设置冗余信息扇区R的数量r和段204中的扇区数L。例如,冗余信息扇区R的数量r为8,段204中的扇区数L为128,同时包括八个冗余信息扇区R和120个数据信息扇区D。在步骤S3中,设置目标矩阵H′。在此实例中,将目标矩阵H′设置为行数和列数等于冗余信息扇区R的数量r的正方形单位矩阵。所述单位矩阵表示冗余信息扇区R。进而,通过随机更改所选择的基本矩阵(即,所选择的奇偶校验矩阵H)的列的顺序来设置随机化的基本矩阵H1,去除最初r个(冗余信息扇区R的数量)列,如果这些列已表示单位矩阵(在将第四类型的奇偶校验矩阵H选择为基本矩阵时是这种情况)。另外,设置对于段204中的每个扇区都包括一个元素的矢量I,即,矢量I的元素数与扇区数L相等。将矢量I的最初r个(冗余信息扇区R的数量)元素设置为1,其他元素设置为0。在矢量I中,所有同样出现在目标矩阵H′中的随机化的基本矩阵H1的列被标记为1。
在步骤S4,将第一变量i的值设置为冗余信息扇区R的数量r加1。相应地,在步骤S5,将第二变量j的值设置为冗余信息扇区R的数量r加1。第一变量i表示目标矩阵H′中的当前列的下标。第二变量j表示随机化的基本矩阵H1中的当前列的下标。在步骤S6,检查第二变量j指向的矢量I的元素是否等于0。如果是,即,随机化的基本矩阵H1的相应列尚未出现在目标矩阵H′中,则在步骤S7中,将由第二变量j指向的随机化的基本矩阵H1的列附加到目标矩阵H′中由第一变量i指向的位置。
在步骤S8,检查目标矩阵H′是否满足预定条件的给定集合。所述预定条件取决于对结果纠错编码方案的要求。此预定条件的给定集合可以例如包括显示非零元素的给定模式的目标矩阵H′,例如,相应模式子矩阵的主对角线上的元素主要为非零。通过例如屏蔽相应元素并对屏蔽所覆盖的非零元素数计数,可以容易地对此进行检查。如果所计数的每个模式子矩阵的非零元素数超过给定的阈值,则所述模式可被视为在目标矩阵H′的相应模式子矩阵中存在。
所述预定条件的集合还可以包括显示有关结果纠错编码方案的纠错能力的给定特性的目标矩阵H′。例如,要实现最多纠正段204中r个(冗余信息扇区R的数量)连续不可读的扇区的能力,则列数等于冗余信息扇区R的数量r的目标矩阵H′的每个正方形子矩阵应具有等于冗余信息扇区R的数量r的秩。
如果目标矩阵H′在给定程度上满足所述预定条件的给定集合中的所有预定条件,则在步骤S9中,保留附加到目标矩阵H′的列并将矢量I的当前元素设置为1。在给定程度上满足预定条件是指,例如,并非目标矩阵H′的所有不同正方形子矩阵都应显示给定的模式,但至少给定数量或百分比的子矩阵显示给定的模式。在步骤S10,将第一变量i的值增加1。在步骤S11,检查第一变量i的值是否等于段204中的扇区数L。如果是,则所述方法在步骤S12结束。否则,所述方法在步骤S5中继续。
如果在步骤S8中,目标矩阵H′没有在给定程度上满足所述预定条件的给定集合中的所有预定条件,则在步骤S13中删除附加到目标矩阵H′的列。然后在步骤S14中增加第二变量j的值以尝试随机化的基本矩阵H1的下一列。在步骤S15,检查第二变量j的值是否等于段204中的扇区数L。如果否,则所述方法在步骤S6继续。否则,没有更多可供尝试的列。在这种情况下,所述方法在步骤S3继续,即,重置目标矩阵H′和矢量I并通过随机重新排序所选择的基本矩阵的列来从基本矩阵创建新的随机化的基本矩阵H1。如果矢量I的当前元素在步骤S6中不等于0,则所述方法还在步骤S14继续。
图8示出了根据图7所示的方法得出为结果目标矩阵H′的第五类型的奇偶校验矩阵H。此奇偶校验矩阵H满足每个正方形模式子矩阵的主对角线上的元素主要为非零以及在应用为纠错编码方案时具有最多可纠正段204中八个连续不可读扇区的能力的条件。此外,其他预定条件是使(如果可能)每个模式子矩阵中相应的相邻对角线的元素主要为非零。第五类型的奇偶校验矩阵H的十二个模式子矩阵满足此预定条件。
通过使计算引擎106能够对存储在内部存储器107中的中间结果执行运算并用计算结果或中间结果T覆盖源操作数,以及利用给定模式的非零元素(包括模式子矩阵的主要为非零的所述主对角线和相邻对角线),可以进一步减小XORO值和MBWC值。仅对存储在内部存储器107中的数据执行的运算不影响MBWC值,因为在计算引擎106与外部存储器108之间没有使用数据移动。这些运算对XORO值的贡献为2。因此,通过使用存储在计算引擎106的内部存储器107中的中间结果T来计算冗余信息扇区R是有利的。
对于图8所示的实例,可以执行以下计算。处理与相应模式子矩阵的主对角线的元素对应的数据信息扇区D的相应信息内容,得出第一、第二、第三、第四、第五、第六、第七和第八中间结果T1、T2、T3、T4、T5、T6、T7、T8,它们共同形成了存储在内部存储器107中的中间结果T。这些结果可以使用如上所述的操作数大小为八个扇区的单个异或运算来计算。这可以写为T=[T1,T2,T3,T4,T5,T6,T7,T8]=XOR(C9,C17,…C97),其中每个操作数的大小为8,或写为T1=C9*C17*…*C97T2=C10*C18*…*C98T3=C11*C19*…*C99T4=C12*C20*…*C100T5=C13*C21*…*C101T6=C14*C22*…*C102T7=C15*C23*…*C103T8=C16*C24*…*C104对于第二到第十三主对角线,Cx表示段204的第x个扇区中的数据信息扇区D的信息内容,而“*”表示异或运算。对于此异或运算,XORO值为12,MBWC值为12×8扇区(即,96个扇区)。现在可以使用中间结果T来处理相应的相邻对角线上的元素T1=XOR(T1,T2)T2=XOR(T2,T3)T3=XOR(T3,T4)T4=XOR(T4,T5)T5=XOR(T5,T6)T6=XOR(T6,T7)T7=XOR(T7,T8)其中每个操作数大小为1,或写为T1=T1*T2=C9*C10*C17*C18*…*C97*C98T2=T2*T3=C10*C11*C18*C19*…*C98*C99T3=T3*T4=C11*C12*C19*C20*…*C99*C100T4=T4*T5=C12*C13*C20*C21*…*C100*C101T5=T5*T6=C13*C14*C21*C22*…*C101*C102
T6=T6*T7=C14*C15*C22*C23*…*C102*C103T7=T7*T8=C15*C16*C23*C24*…*C103*C104。
对于此步骤,得到XORO值为7×2(即,14),以及MBWC值为0。如下处理第十四、十五和十六主对角线T=[T1,T2,T3,T4,T5,T6,T7,T8]=XOR(T1,C105,C113,C121)其中,每个操作数的大小为8,或写为T1=T1*C105*C113*C121T2=T2*C106*C114*C122T3=T3*C107*C115*C123T4=T4*C108*C116*C124T5=T5*C109*C117*C125T6=T6*C110*C118*C126T7=T7*C111*C119*C127T8=T8*C112*C120*C128。
对于此步骤,XORO值为3,MBWC值为3×8(即,24)。此步骤之后的总XORO值为30,总MBWC值为128扇区或十六个数据块。
然后可逐扇区地单独处理奇偶校验矩阵H的其余非零元素。在该奇偶校验矩阵H中有164个非零元素不在主对角线之一或相邻对角线之一上。另外,在主对角线或相邻对角线上有八个元素为零。它们总共需要另外172个操作数大小为一个扇区的异或运算。这得到额外的XORO值为172并且MBWC值为172个扇区。因此,对于计算冗余集的信息内容,总XORO值为202,MBWC值为300个扇区或37.5个数据块。由于从主机将十五个用户数据E的块移动到外部存储器108并将十五个用户数据E的块和作为结果的所计算的盘内冗余数据S移动到至少一个存储单元100,额外的十五加十六个数据块对MBWC值做出了贡献。因而总的MBWC值约为69个数据块。
为了如上所述地将冗余信息扇区R大约放置在段204的中间,可以循环地移位奇偶校验矩阵H的列。例如,奇偶校验矩阵H的实施例的初始列C1到C64变成列C65到C128,而初始列C65到C128则变成列C1到C64。通过这种方式,将冗余信息扇区R从列C1到C8移动至列C65到C72。对于所述奇偶校验矩阵H的实施例,可以验证此列的循环移位不会改变最多纠正段204中八个连续不可读扇区的能力。
图9示出了可以在设备103中的硬件内实现的用于减少数据损失的方法的流程图。所述方法也可以被实现为包括可由计算机执行的程序指令的计算机程序。设备103可以包括用于执行所述计算机程序的程序指令的计算机。替代地,所述计算机程序可以是计算机系统的操作系统或基本输入/输出系统的一部分。可以提供包含可由设备103或计算机系统执行的程序指令的计算机可读介质。所述计算机可读介质例如可以是CD-ROM、闪存卡、硬盘或任何其他适合的计算机可读介质。
图9所示的方法利用了由图7所示的方法创建的纠错编码方案并执行以上为图8说明的计算。所述方法开始于步骤S20。在步骤S21中,通过如上所述地处理模式子矩阵的主对角线上的数据信息扇区D的信息内容,以计算冗余信息扇区R的中间结果T来执行第一计算步骤。在步骤S22中,如上所述地,利用中间结果T覆盖先前计算的中间结果T来处理模式子矩阵的相邻对角线上的数据信息扇区D的信息内容。在步骤S23中,根据中间结果T(例如,通过如上所述地处理奇偶校验矩阵H的其余非零元素)来计算冗余信息扇区R的信息内容。所述方法在步骤S24结束。
图10示出了具有最小汉明距离dmin、突发删除恢复(即,纠正连续不可读扇区的纠错能力)、奇偶校验矩阵H中的非零元素数nz、奇偶校验矩阵H的第三、第四、第五和第一类型的相应XORO值和MBWC值的表。在所述表中,第三类型的奇偶校验矩阵H标为“扩展汉明码”,第四类型标为“SD3”(最稀疏距离3),第五类型标为“OSD3”(优化的最稀疏距离3),以及第一类型标为“IPC-8”。
以上说明的实施例基于作为信息实体的扇区。可替代地,信息实体也可以表示位、字节或任何其他适合的信息实体。所述冗余信息扇区R和数据信息扇区D表示特定的实施例,并且可以分别更为一般地看作冗余信息实体R和数据信息实体D。此外,减少因存储单元100上的介质错误引起的数据损失只是众多应用中的一种应用。例如,通过应用以上提供的纠错编码方案,同样可以减少通过无线电信道或电缆传送或接收的数据的损失。
可以理解,仅通过实例的方式描述了本发明,并且可以在本发明的范围内做出细节上的修改。
可以独立地或以任何适当的组合来提供在说明书和(如果适合)权利要求书以及附图中披露的每个特征。
标号100存储单元101磁盘102读/写头103设备104主机接口105控制器106计算引擎107内部存储器108外部存储器200阵列202条带203条204段205第一请求206第二请求D数据信息扇区/实体dmin最小汉明距离E用户数据
H奇偶校验矩阵H′目标矩阵H1随机化的基本矩阵HDD硬盘驱动器I矢量i第一变量j第二变量L段中的扇区数n数据信息扇区数nz非零元素数P RAID奇偶校验数据r冗余信息扇区数R冗余信息扇区/实体S盘内冗余数据Sx步骤T中间结果Tx中间结果
权利要求
1.一种用于创建纠错编码方案以减少数据损失的方法,所述数据包括与具有至少两个数据信息实体(D)的给定数据集关联的具有至少两个冗余信息实体(R)的给定冗余集,根据所述数据集的信息内容来计算所述冗余集的信息内容,所述方法包括以下步骤基本选择步骤(S2),用于选择由基本矩阵表示的基本编码方案,其中每个冗余信息实体(R)由行表示,而每个信息实体由列表示;以及矩阵设置步骤(S3),用于设置具有所述基本矩阵的列的子集的目标矩阵(H′)并且用于根据所述基本矩阵来改变列的顺序,直至所述目标矩阵(H′)在至少给定程度上满足非零元素的给定模式。
2.如权利要求1中所述的方法,其中所述非零元素的给定模式被选择为包括所述目标矩阵(H′)的正方形模式子矩阵的主对角线,所述主对角线具有主要为非零的元素,所述目标矩阵(H′)具有的行数和列数等于所述冗余集中的冗余信息实体(R)的数量(r)。
3.如权利要求2中所述的方法,其中所述非零元素的给定模式被选择为还包括与所述目标矩阵(H′)的所述正方形模式子矩阵的所述主对角线相邻布置的邻近对角线,所述邻近对角线的元素被选择成主要为非零。
4.如任一上述权利要求中所述的方法,其中所述基本矩阵被选择为对于所述基本编码方案的给定汉明距离(dmin)具有最少的非零元素数(nz)、最少的所述数据集中的数据信息实体(D)数(n)以及最少的所述冗余集中的冗余信息实体(R)数(r)。
5.如任一上述权利要求中所述的方法,其中,在所述矩阵设置步骤(S3)中,改变所述列的顺序直至列数与所述冗余集中的冗余信息实体(R)数(r)相等的所述目标矩阵(H′)的每个方格子矩阵的秩与所述冗余集中的冗余信息实体(R)数(r)相等。
6.如任一上述权利要求中所述的方法,其中所述创建的纠错方案基于分别计算由所述目标矩阵(H′)每行中的非零元素表示的所有数据信息实体(D)的信息内容的异或。
7.如权利要求6中所述的方法,其中所述基本编码方案基于以下项中的一项汉明码或扩展汉明码。
8.一种用于减少数据损失的方法,所述数据包括与具有至少两个数据信息实体(D)的给定数据集关联的具有至少两个冗余信息实体(R)的给定冗余集,根据所述数据集的信息内容通过应用纠错编码方案来计算所述冗余集的信息内容,所述纠错编码方案由奇偶校验矩阵(H)表示,其中每个冗余信息实体(R)由行表示,而所述数据的每个信息实体由列表示,并且所述奇偶校验矩阵(H)的至少两个正方形子矩阵具有元素主要为非零的对角线并具有与所述冗余集中的冗余信息实体(R)数(r)相等的行数和列数,并且表示所述数据集的连续放置的数据信息实体(D),所述方法包括第一计算步骤,用于通过处理所述至少两个主对角线上的所述数据信息实体(D)来计算所述冗余信息实体(R)的中间结果(T);以及第二计算步骤,用于根据所述中间结果(T)来计算所述冗余信息实体(R)的信息内容。
9.如权利要求8中所述的方法,其中所述主对角线的元素主要为非零的所述奇偶校验矩阵(H)的至少一个正方形子矩阵还具有元素主要为非零的邻近对角线,并且所述第二计算步骤包括利用所述中间结果(T)来处理相应邻近对角线上的数据信息实体(D)。
10.如权利要求8或9中的任一权利要求所述的方法,其中所述冗余集中的每个冗余信息实体(R)的相应信息内容被计算为由所述奇偶校验矩阵(H)的相应行中的非零元素表示的所述数据集中的所有数据信息实体(D)的相应信息内容的异或。
11.一种用于减少数据损失的装置,所述数据包括与具有至少两个数据信息实体(D)的给定数据集关联的具有至少两个冗余信息实体(R)的给定冗余集,根据所述数据集的信息内容通过应用纠错编码方案来计算所述冗余集的信息内容,所述纠错编码方案由奇偶校验矩阵(H)表示,其中每个冗余信息实体(R)由行表示,而所述数据的每个信息实体由列表示,并且所述奇偶校验矩阵(H)的至少两个正方形子矩阵具有元素主要为非零的对角线并具有与所述冗余集中的冗余信息实体(R)数(r)相等的行数和列数,并且表示所述数据集的连续放置的数据信息实体(D),所述装置可执行以下操作通过处理所述至少两个主对角线上的所述数据信息实体(D)来计算所述冗余信息实体(R)的中间结果(T);以及根据所述中间结果(T)来计算所述冗余信息实体(R)的信息内容。
12.一种保护存储在至少一个存储单元(100)上的数据以防不可纠正的介质错误的系统,所述系统包括如权利要求11中所述的装置(103);至少一个存储单元(100);以及每个信息实体表示所述至少一个存储单元(100)上的扇区。
13.如权利要求12中所述的系统,所述系统被配置为独立存储单元(100)的冗余阵列。
全文摘要
本发明涉及一种用于减少数据损失的方法,所述方法包括第一计算步骤,用于通过分别处理表示纠错编码方案的奇偶校验矩阵的至少两个主对角线上的给定数据集的关联数据信息实体(D)来计算冗余集的每个冗余信息实体(R)的中间结果(T)。所述方法还包括第二计算步骤,用于根据相应的中间结果(T)来计算相应冗余信息实体(R)的信息内容。
文档编号G06F11/10GK1959648SQ20061012658
公开日2007年5月9日 申请日期2006年8月29日 优先权日2005年10月31日
发明者A·多拉基亚, 胡晓宇, I·伊利亚迪斯, E·S·埃莱夫特里乌 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1