在纠删码编码期间的CPU错误修复制造技术

技术编号:20025237 阅读:18 留言:0更新日期:2019-01-06 04:17
公开了检测计算错误的技术,其中系统可以包括一个或多个处理器和存储逻辑。该存储逻辑可以由所述一个或多个处理器执行以执行操作,该操作包括:接收数据向量,该数据向量包括多个有序块;将数据向量转置为一组子向量,每个子向量包括来自每个有序块的对应数据元素;基于该组子向量生成一组离散的循环冗余校验(CRC);将该组离散CRC转置为一组混合CRC,每个混合CRC包括来自每个离散CRC的CRC数据元素;并且将该组混合CRC压缩成简化CRC。

【技术实现步骤摘要】
在纠删码编码期间的CPU错误修复
技术介绍
本公开涉及数据编码。在使用纠删码对要存储的数据进行编码期间,计算与编码数据相关联的奇偶校验的计算系统可以引入最终传播到存储介质并且位于此处未被检测到的错误。尽管会发生其他错误,但是通常可以引入到数据中的常见错误包括系统总线错误、内部总线错误、缓存位翻转错误和内存位翻转错误。因为计算机存储系统中可以出现的错误可以不被检测到地发生,所以它们对数据的持久性和完整性造成威胁,并且因此,产生与要存储的原始数据不同的数据。一些现有系统可以通过在诸如2-伽罗瓦域(GF(2))的低阶伽罗瓦域上对数据进行纠删编码来检测上述错误,并且对纠删编码的数据应用循环冗余校验(CRC)操作以验证正在存储的数据是否有效。更具体地,这些现有系统使用CRC算法,其利用低阶伽罗瓦域上的线性特性来检测错误(例如,使用等于1的系数)。这种线性特性可以用于使用逐位运算从输入数据的CRC预测生成的奇偶校验的CRC。然而,考虑到电子和数字设备技术,正在处理和存储的数据量正在迅速增加,并且错误的数量和验证该数据的完整性所需的处理量也是如此。由这些现有系统使用的方法不能以相同的速率升级,并且可以导致处理瓶颈和高计算资源成本。更进一步地,为了编码和CRC生成过程,仅使用诸如256-伽罗瓦域(GF(256))的高阶伽罗瓦域代替低阶伽罗瓦域(例如(GF(2)))不足以解决升级问题,因为这样的高阶CRC函数本身并未展现出上述用于低阶伽罗瓦域上的CRC的线性特性,并且因此,不适合逐位操作(例如,像XOR)。
技术实现思路
本公开涉及生成用于验证纠删编码的数据的完整性的离散循环冗余校验(CRC)。根据本公开的主题的一个创新方面,系统包括多个存储设备以及通信地耦接到多个存储设备的存储逻辑。存储逻辑可执行以接收具有多个有序块的数据向量。存储逻辑可执行以将数据向量转置为一组子向量,在一些情况下称其为数据列。存储逻辑可执行以分别基于该组子向量生成一组离散CRC。离散CRC共同形成具有多个CRC列的CRC矩阵。存储逻辑可执行以将与CRC矩阵相关联的一组离散CRC转置为一组混合CRC。存储逻辑进一步可执行以将混合CRC压缩成简化CRC,其可以和与数据向量相关联的奇偶校验CRC进行比较以验证数据向量的完整性。在另一个创新方面,方法可以包括:接收数据向量,该数据向量包括多个有序块;将数据向量转置为一组子向量,每个子向量包括来自每个有序块的对应数据元素;分别基于该组子向量生成一组离散CRC;将该组离散CRC转置为一组混合CRC,每个混合CRC包括来自每个离散CRC的CRC数据元素;以及将该组混合CRC压缩成简化CRC,其可以和与数据向量相关联的奇偶校验CRC进行比较以验证数据的完整性。一个或多个这些方面的其他实施方式包括被配置为执行方法的动作的对应的系统、装置以及计算机程序,这样的方面具有编码在计算机存储设备上的方法。这些和其他实施方式可以可选地包括以下特征中的一个或多个,诸如但是不限于:有序块包括具有分别包含顺序数据元素的多个顺序列的数据行;将每个有序块的数据行转置成数据列;数据列具有多个分别包含顺序数据元素的顺序行;每个有序块的数据列共同形成转置数据矩阵;转置数据矩阵包括多个混合的顺序行;多个混合的顺序行中的每个混合的顺序行包括在对应层(tier)的一组第一顺序行;该组第一顺序行包括来自在对应层的每个有序块的对应数据元素;该组子向量包括包括多个顺序行的数据矩阵;每个顺序行包括一组混合数据元素,该组数据元素包括来自每个有序块的对应数据元素;分别基于该组子向量生成该组离散CRC包括:使用来自顺序行的该组混合数据元素生成用于该数据矩阵的顺序行的每个顺序行的离散CRC;离散CRC可以是CRC32c;将该组离散CRC转置为一组混合CRC可以包括将8个32位的CRC转置为32字节的数据向量;将该组混合CRC压缩成简化CRC可以包括对该组混合CRC应用压缩函数以获取简化CRC;压缩函数可以包括高次多项式;高次多项式可以包括具有四次或更多次的多项式;数据向量可以包括相关联的奇偶校验;奇偶校验CRC是使用相关联的奇偶校验生成的;奇偶校验CRC可以与简化CRC进行比较;并且可以基于将奇偶校验CRC与简化CRC进行比较来确定错误。本文公开的技术在多个方面是有利的。例如,在使用在较高域(例如,GF(2))上定义的码诸如在GF(2^8)上构建的编码的系统中,其中适用于GF(2)的线性逐位数据验证操作(例如,数据CRC的XOR)不再应用,公开的技术可以更有效且可靠地确保如果在数据的编码期间出现计算错误,可以不必重新编码所有数据(这在计算上是昂贵的)而检测到它们。作为进一步的示例,技术可以有利地用于在较高域上定义的码提供线性CRC函数,诸如具有f(p+a·d)=f(p)+a·f(d)的特性的CRC函数,其中d是数据向量,p是奇偶校验,并且a是大于1的系数(例如,诸如GF(2^8)中的蜘蛛码系数)。这是有益的,因为在一些应用中,技术可以使用现有的计算CRC的有效CPU内指令,并且因此,保持与现有的中央处理单元(CPU)架构的兼容性。然而,应该理解的是,上面的特征和优点列表并非全包括的,并且许多附加特征和优点是经考虑的并且落入本公开的范围内。此外,应该理解的是,本公开中使用的语言主要是为了可读性和指导性目的而选择的,而不是为了限制本文公开的主题的范围。附图说明图1是示例数据存储系统的框图。图2A图示了用于处理数据的示例系统。图2B图示了CPU缓存和存储设备之间的示例数据通信。图2C图示了示例存储逻辑。图3是用于从数据向量生成简化CRC的示例方法的流程图。图4是用于使用数据矩阵的顺序行生成离散CRC的示例方法的流程图。图5是用于获取简化CRC的示例方法的流程图。图6是用于比较简化CRC与奇偶校验的示例方法的流程图。图7是示出用于从数据向量生成简化CRC的示例过程的数据流图。具体实施方式本文公开的创新技术包括用于检测纠删编码数据中的错误的各个方面,诸如系统、方法、装置、计算机可读介质、计算机程序产品等。通过克服先前的系统经历的许多低效,本文公开的方面提供了对先前的存储系统的各种改进。举例来说,本文公开的创新技术可以更可靠地保证,如果在编码期间任何地方发生错误,它可以在该事实发生后被检测到,而不需要重新编码底层数据(这通常是复杂的且计算上昂贵)。为了进一步图示该技术的各种优点,现在描述图7中描绘的非限制性实施例,其参考图1和图2的元件,图1和图2在本文的其他地方详细描述。具体地,图7是示出用于从数据向量生成简化循环冗余校验(CRC)的示例过程的数据流图。CRC是用于检测对数据的无意变化的错误检测码,数据的无意变化可以由如本文其他地方所讨论的各种因素引起。数据向量是诸如有序数据块(ordereddatablocks)的数据元素的序列。如图7所示,在一些实施例中,数据向量700可以包括多个有序块(orderedblocks)702a、702b、...、702n(还统称为或单独地简称为702)。有序块702是包括多个诸如但是不限于包括在有序块702a中的d1,1、d1,2、…d1,z的顺序数据元素的数据结构。有序块702的顺序数据元素共同形成数据行。由于数据元素是顺序的,因此本文档来自技高网...

【技术保护点】
1.一种系统,包括:一个或多个处理器;以及存储逻辑,当由所述一个或多个处理器执行时,执行操作,所述操作包括:接收数据向量,所述数据向量包括多个有序块;将所述数据向量转置为一组子向量,每个子向量包括来自所述多个有序块中的每一个的对应数据元素;基于所述一组子向量生成一组离散循环冗余校验CRC;将所述一组离散CRC转置为一组混合CRC,每个混合CRC包括来自每个离散CRC的CRC数据元素;以及将所述一组混合CRC压缩成简化CRC。

【技术特征摘要】
2017.06.16 US 15/626,0431.一种系统,包括:一个或多个处理器;以及存储逻辑,当由所述一个或多个处理器执行时,执行操作,所述操作包括:接收数据向量,所述数据向量包括多个有序块;将所述数据向量转置为一组子向量,每个子向量包括来自所述多个有序块中的每一个的对应数据元素;基于所述一组子向量生成一组离散循环冗余校验CRC;将所述一组离散CRC转置为一组混合CRC,每个混合CRC包括来自每个离散CRC的CRC数据元素;以及将所述一组混合CRC压缩成简化CRC。2.根据权利要求1所述的系统,其中所述多个有序块中的每一个包括包括顺序数据元素的数据行。3.根据权利要求2所述的系统,其中:将所述数据向量转置为一组子向量包括将每个有序块的数据行转置为数据列;所述数据列包含来自所述有序块的数据行的所述顺序数据元素;每个有序块的所述数据列共同形成转置数据矩阵;所述转置数据矩阵包括多个混合顺序行;所述多个混合顺序行中的每个混合顺序行包括在对应层处的有序数据元素分组;以及所述有序数据元素分组包括来自在所述对应层的每个有序块的所述对应数据元素。4.根据权利要求1所述的系统,其中:所述一组子向量包括包括多个顺序行的数据矩阵;每个顺序行包括一组混合数据元素,所述混合数据元素包括来自每个有序块的所述对应数据元素;以及基于所述一组子向量生成所述一组离散CRC包括:使用来自所述顺序行的所述一组混合数据元素,生成用于所述数据矩阵的顺序行中的每个顺序行的离散CRC。5.根据权利要求4所述的系统,其中,所述离散CRC是CRC32c。6.根据权利要求1所述的系统,其中,将所述一组离散CRC转置为一组混合CRC包括将8个32位的CRC转置为32字节的数据向量。7.根据权利要求1所述的系统,其中将所述一组混合CRC压缩成简化CRC包括:将压缩函数应用于所述一组混合CRC以获取所述简化CRC,所述压缩函数包括高次多项式。8.根据权利要求7所述的系统,其中,所述高次多项式包括具有四次或更多次的多项式。9.根据权利要求1所述的系统,其中:所述数据向量包括关联的预计算奇偶校验;以及所述操作进一步包括:针对所述关联的预计算奇偶校验生成奇偶校验CRC;在所述奇偶校验CRC和所述简化CRC之间执行比较;以及基于所述比较来确定所述数据向量中的错误。10.一种用于检测计算错误的计算机实现的方法,所述计算机实现的方法包括:接收数据向量,所述数据向量包括多个有序块;将数据向量转置为一组子向量,每个子向量包括来自每个有序块的对应数据元素;基于所述一组子向量生成一组...

【专利技术属性】
技术研发人员:C盖约特L帕米斯华雷斯
申请(专利权)人:西部数据技术公司
类型:发明
国别省市:美国,US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1