CN116028260B - 数据的处理方法、处理装置以及存储系统 - Google Patents
数据的处理方法、处理装置以及存储系统 Download PDFInfo
- Publication number
- CN116028260B CN116028260B CN202310037736.5A CN202310037736A CN116028260B CN 116028260 B CN116028260 B CN 116028260B CN 202310037736 A CN202310037736 A CN 202310037736A CN 116028260 B CN116028260 B CN 116028260B
- Authority
- CN
- China
- Prior art keywords
- data
- error
- symbols
- matrix
- check
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 90
- 238000012545 processing Methods 0.000 title claims abstract description 52
- 238000012937 correction Methods 0.000 claims abstract description 155
- 230000015654 memory Effects 0.000 claims description 222
- 239000011159 matrix material Substances 0.000 claims description 148
- 208000011580 syndromic disease Diseases 0.000 claims description 99
- 239000008187 granular material Substances 0.000 claims description 88
- 238000000034 method Methods 0.000 claims description 41
- 230000004044 response Effects 0.000 claims description 13
- 230000008569 process Effects 0.000 claims description 10
- 238000010276 construction Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 26
- 239000002245 particle Substances 0.000 description 16
- 238000004891 communication Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 12
- 238000004590 computer program Methods 0.000 description 7
- 238000013500 data storage Methods 0.000 description 6
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 5
- 230000009191 jumping Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000007613 environmental effect Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000004308 accommodation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000007480 spreading Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Landscapes
- Detection And Correction Of Errors (AREA)
Abstract
本公开提供了本公开提供了数据的处理方法、处理装置以及存储系统。数据的处理方法,包括:分别从第一存储通道和第二存储通道各读取两笔突发数据,以得到四笔突发数据,其中,四笔突发数据与存储到第一存储通道和第二存储通道中的编码数据相对应,编码数据由对写入第一存储通道和第二存储通道的k个数据码元进行编码而得到,编码数据包括k个数据码元和m个校验码元,其中m个校验码元的总位宽是一个纠错码元的位宽的八倍;将四笔突发数据组织为一组纠错码字,其中,一组纠错码字包括k个读回数据码元和m个读回校验码元;以及基于一组纠错码字进行解码操作,以得到纠错后码元。该数据的处理方法可以实现两个码元的同时纠错。
Description
技术领域
本公开的实施例涉及数据的处理方法、处理装置以及存储系统。
背景技术
数据在传输、通信和存储过程中容易受到环境等因素干扰,从而导致数据错误。例如,双倍数据速率(Double Data Rate,DDR)存储器(例如,DDR SDRAM或DDR内存)在工作过程中难免会受到诸如电磁等环境因素的干扰,从而导致内存出现错误。对于稳定性要求高的用户来说,内存错误可能会引起致命性的问题。例如,对于服务器而言,其对DDR数据可靠性要求比较高,DDR存储器纠错技术就能提高服务器内存的稳定性和纠错能力,例如支持错误检查和纠正(Error Correcting Code,ECC)的内存条可以提高服务器内存的稳定性和纠错能力。
对于一些DDR内存而言,当出现可纠正错误(CE)时,并不会一出错就需要替换掉内存DIMM。然而,一旦出现不可纠正错误(UE)时,目前内存颗粒若出现2个同时出错的情况下,就会报出不可纠正错误,这种情况下一般就会丢失数据并且数据无法恢复。数据的丢失将影响处理器或其他计算单元执行相应运算,导致相关功能或应用无法正常运行,甚至引起宕机。
发明内容
本公开的第一方面提供了一种数据的处理方法、处理装置、存储系统、电子设备和存储介质,以用于实现两个码元的同时纠错。
本公开的至少一实施例提供了一种数据的处理方法,包括:分别从第一存储通道和第二存储通道各读取两笔突发数据,以得到四笔突发数据,其中,四笔突发数据与存储到第一存储通道和第二存储通道中的编码数据相对应,编码数据由对写入第一存储通道和第二存储通道的k个数据码元进行编码而得到,编码数据包括k个数据码元和m个校验码元,其中m个校验码元的总位宽是一个纠错码元的位宽的八倍;将四笔突发数据组织为一组纠错码字,其中,一组纠错码字包括k个读回数据码元和m个读回校验码元;以及基于一组纠错码字进行解码操作,以得到纠错后码元。
例如,根据本公开的至少一实施例的处理方法,将四笔突发数据组织为一组纠错码字,包括:将从第一存储通道读取的两笔突发数据中对应于相同存储颗粒的突发数据组合为一个纠错码字码元,以得到第一部分纠错码字;将从第二存储通道读取的两笔突发数据中对应于相同存储颗粒的突发数据组合为一个纠错码字码元,以得到第二部分纠错码字;以及组合第一部分纠错码字和第二部分纠错码字。
例如,根据本公开的至少一实施例的处理方法,对写入第一存储通道和第二存储通道的k个数据码元进行编码,包括:基于编码矩阵对k个数据码元进行编码;基于一组纠错码字进行解码操作,以得到纠错后码元,包括:基于解码矩阵对一组纠错码字进行解码,得到伴随式数据;以及利用伴随式数据得到纠错后码元,其中,编码矩阵为至少k+m行k列的矩阵并且包括类范德蒙矩阵,解码矩阵为至少m行k+m列的矩阵并且包括类范德蒙矩阵,其中,类范德蒙矩阵是与范德蒙矩阵相关联的矩阵,其中,k≤pn-1,m≤pn,其中,n为每个码元的比特数,p为单个比特的容纳能力。
例如,根据本公开的至少一实施例的处理方法,编码矩阵包括第一区间和第二区间,其中,第一区间包括k行k列的单位矩阵,第二区间包括m行k列的类范德蒙矩阵;并且基于编码矩阵对k个数据码元进行编码,得到编码数据,包括:使用k行k列的单位矩阵乘以k个数据码元,得到k个数据码元;以及使用m行k列的类范德蒙矩阵乘以k个数据码元,得到m个校验码元。
例如,根据本公开的至少一实施例的处理方法,解码矩阵包括第三区间和第四区间,其中,第三区间包括m行k列的类范德蒙矩阵,第四区间包括m行m列的单位矩阵;并且基于解码矩阵对一组纠错码字进行解码,得到伴随式数据,包括:使用解码矩阵乘以k个读回数据码元与m个读回校验码元,得到伴随式数据。
例如,根据本公开的至少一实施例的处理方法,利用伴随式数据得到纠错后码元,包括:读取伴随式数据;响应于伴随式数据全部为0,输出k个读回数据码元作为纠错后码元,其中,伴随式数据全部为0指示k个读回数据码元与m个读回校验码元没有错误;响应于伴随式数据有一个1,输出k个读回数据码元作为纠错后码元,其中,伴随式数据有一个1指示k个读回数据码元没有错误并且m个读回校验码元中与其为1的伴随式数据相对应的读回校验码元有错误;响应于伴随式数据有v个1,利用伴随式数据对k个读回数据码元和m个读回校验码元中的错误码元进行纠错,以得到纠错后码元,其中,伴随式数据有v个1指示k个读回数据码元中与其为1的伴随式数据相对应的v1个读回数据码元有错误以及m个读回校验码元中与其为1的伴随式数据相对应的v2个读回校验码元有错误,其中v≥2,v1≤m,v2≤m,v1+v2=v。
例如,根据本公开的至少一实施例的处理方法,利用伴随式数据对k个读回数据码元和m个读回校验码元中的错误码元进行纠错,以得到纠错后码元,包括:利用伴随式数据确定k个读回数据码元和m个读回校验码元中的错误码元的错误位置和错误值;以及利用错误位置对错误码元进行纠错,以得到纠错后码元。
例如,根据本公开的至少一实施例的处理方法,利用伴随式数据确定k个读回数据码元和m个读回校验码元中的错误码元的错误位置和错误值,包括:
1)进行双数据码元纠错运算,包括:
利用伴随式数据构建多次方程;
基于多次方程求解错误位置和错误值;
2)进行单数据码元与单校验码元纠错运算,包括:
假定单校验码元的值是错误的,基于伴随式数据之间的比率关系与伴随式数据所对应的类范德蒙矩阵的元素之间的比率关系相等,求解错误位置和错误值;以及
3)进行单数据码元纠错运算,包括:
基于伴随式数据之间的比率关系与伴随式数据所对应的类范德蒙矩阵的元素之间的比率关系相等,求解错误位置和错误值。
例如,根据本公开的至少一实施例的处理方法,多次方程为二次方程,p=2,m=4,并且伴随式数据为(s0,s1,s2,s3),
其中,利用伴随式数据构建多次方程,包括:
构建二次方程ax2+bx+c=0,其中,
a=s1 2+s0s2,
b=s1s2+s0s3,
c=s1s3+s2 2,
其中,基于多次方程求解错误位置和错误值,可以包括:
响应于a不为0,令以将二次方程转化为:
y2+y+u=0;
得到y2+y+u=0的两个根y与y’;
令以得到错误位置x与x’;
使用错误位置与伴随式数据计算出错误值ex与ex′,其中:
ex′=s0+ex;
其中,假定单校验码元的值是错误的,基于伴随式数据之间的比率关系与伴随式数据所对应的类范德蒙矩阵的元素之间的比率关系相等,求解错误位置和错误值,包括:
假定与s0相对应的校验内存颗粒ecc0的值是错误的,基于 计算出错误位置分别为x和校验内存颗粒ecc0,并且错误值分别为/>与/>
假定与s1相对应的校验内存颗粒ecc1的值是错误的,基于并且计算出错误位置分别为x和校验内存颗粒ecc1,并且错误值分别为s0与s0*2xs1;
假定与s2相对应的校验内存颗粒ecc2的值是错误的,基于并且计算出错误位置分别为x和校验内存颗粒ecc2,并且错误值分别为s0与s1*2xs2;
假定与s3相对应的校验内存颗粒ecc3的值是错误的,基于 计算出错误位置分别为x和校验内存颗粒ecc3,并且错误值分别为s0与s2*2xs3;
其中,基于伴随式数据之间的比率关系与伴随式数据所对应的类范德蒙矩阵的元素之间的比率关系相等,求解错误位置和错误值,包括:
基于计算出错误位置为x,并且错误值为s0。
例如,根据本公开的至少一实施例的处理方法,得到y2+y+u=0的两个根y与y’,包括:通过数学运算求解y2+y+u=0,以得到y2+y+u=0的两个根y与y’;或者通过查找表得到y2+y+u=0的两个根y与y’。
例如,根据本公开的至少一实施例的处理方法,通过数学运算求解y2+y+u=0,以得到y2+y+u=0的两个根y与y’,包括:通过对u进行异或操作来求解y2+y+u=0,以得到y2+y+u=0的两个根y与y’。
例如,根据本公开的至少一实施例的处理方法,y和u都为8比特的有限域数字,其中,通过对u进行异或操作来求解y2+y+u=0,包括:
Y0=not Y0’,或者Y0’xor 1,
Y1=Y1’,
Y2=Y2’,
Y3=Y3’,
Y4=Y4’,
Y5=Y5’,
Y6=Y6’,
Y7=Y7’,并且
Y7=U0 xor U1 xor U2 xor U4,
Y6=U0 xor U1 xor U2 xor U4 xor U7,
Y5=U1 xor U2 xor U3 xor U4 xor U6,
Y4=U0 xor U7,
Y3=U1 xor U2 xor U3 xor U4,
Y2=U0 xor U3 xor U4 xor U6,
Y1=U0 xor U2 xor U4,
Y0=U3 xor U6,
U5=Tr(u),
其中,U0至U7分别表示u的第0比特至第7比特;
Y0至Y7分别表示y的第0比特至第7比特;
Y0’至Y7’分别表示y’的第0比特至第7比特;
Tr(u)表示y2+y+u=0是否有解,其中,Tr(u)=1指示无解,并且Tr(u)=0指示有解。
例如,根据本公开的至少一实施例的处理方法,类范德蒙矩阵包括范德蒙矩阵、范德蒙矩阵的左右翻转、范德蒙矩阵的上下翻转或范德蒙矩阵的转置。
本公开的至少一实施例提供了一种数据的处理装置,包括:读取单元,被配置为:分别从第一存储通道和第二存储通道各读取两笔突发数据,以得到四笔突发数据,其中,四笔突发数据与存储到第一存储通道和第二存储通道中的编码数据相对应,编码数据由对写入第一存储通道和第二存储通道的k个数据码元进行编码而得到,编码数据包括k个数据码元和m个校验码元,其中m个校验码元的总位宽是一个纠错码元的位宽的八倍;将四笔突发数据组织为一组纠错码字,其中,一组纠错码字包括k个读回数据码元和m个读回校验码元;以及解码模块,被配置为:基于一组纠错码字进行解码操作,以得到纠错后码元。
本公开的至少一实施例提供了一种存储系统,包括:如上所述的数据的处理装置以及存储单元,该存储单元包括如上所述的第一存储通道和第二存储通道。
本公开的至少一实施例提供了一种电子设备,包括:处理器;存储器,其上存储有指令,其中,指令在被处理器执行时,使得处理器执行如上所述的数据的处理方法。
本公开的至少一实施例提供了一种计算机可读存储介质,其上存储有指令,其中,指令在被处理器执行时,使得处理器执行如上所述的数据的处理方法。
根据本公开的至少一实施例,可以实现两个码元的同时纠错。
附图说明
为了更清楚地说明本公开的实施例的技术方案,下面将对本公开的实施例的附图作简单地介绍。明显地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1示出了根据本公开的实施例的示出了根据本公开的至少一实施例的数据的处理方法的流程图;
图2示出了根据本公开的至少一实施例的数据的处理装置的示意图;
图3示出了根据本公开的至少一实施例的编码模块的示意图;
图4示出了根据本公开的至少一实施例的编码运算的示意图;
图5示出了根据本公开的至少一实施例的解码模块和纠错模块的示意图;
图6示出了根据本公开的至少一实施例的解码运算的示意图;
图7示出了根据本公开的至少一实施例的双数据纠错运算的示意图;
图8示出了根据本公开的至少一实施例的求解有限域二次方程的示意图;
图9A示出了根据本公开的至少一实施例的一个固定错误+一个随机错误的内存的结构示意图;
图9B示出了根据本公开的至少一实施例的两个固定错误的内存的结构示意图;
图9C示出了根据本公开的至少一实施例的两个随机错误的内存的结构示意图;
图10示出了根据本公开的至少一实施例的存储系统的示意图;
图11示出了根据本公开的至少一实施例的电子装置的示意图;
图12示出了根据本公开至少一实施例的非瞬时可读存储介质的示意图。
具体实施方式
现在将详细参考本公开的具体实施例,在附图中例示了本公开的示例。尽管将结合具体实施例描述本公开,但将理解,不是想要将本公开限于描述的实施例。相反,想要覆盖由所附权利要求限定的在本公开的精神和范围内包括的变更、修改和等价物。应注意,本文描述的方法操作都可以由任何功能块或功能布置来实现,且任何功能块或功能布置可被实现为物理实体或逻辑实体、或者两者的组合。
为了使本领域技术人员更好地理解本公开,下面结合附图和具体实施方式对本公开作进一步详细说明。
注意,接下来要介绍的示例仅是具体的示例,而不作为限制本公开的实施例必须为示出和描述的具体的外形、硬件、连接关系、操作、数值、条件、数据、顺序等等。本领域技术人员可以通过阅读本说明书来运用本公开的构思来构造本说明书中未提到的更多实施例。
本公开中使用的术语是考虑到关于本公开的功能而在本领域中当前广泛使用的那些通用术语,但是这些术语可以根据本领域普通技术人员的意图、先例或本领域新技术而变化。此外,特定术语可以由申请人选择,并且在这种情况下,其详细含义将在本公开的详细描述中描述。因此,说明书中使用的术语不应理解为简单的名称,而是基于术语的含义和本公开的总体描述。
本公开中使用了流程图来说明根据本申请的实施例的系统所执行的操作。应当理解的是,前面或下面操作不一定按照顺序来精确地执行。相反,根据需要,可以按照倒序或同时处理各种步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
首先对本申请涉及的缩略词和相关术语进行定义、说明。
双符号纠错(DSC,Double-Symbol Correction):可以一次同时纠正两个symbol的技术。
DDR(Double Data Rate):双倍速率。
DDR SDRAM:双倍速率同步动态随机存储器,人们习惯称为DDR。
ECC(Error Check Correction):纠错码或纠错编码,是一种能够实现“错误检查和纠正”的技术,可提高计算机运行的稳定性和增加可靠性。
RS(Reed-Solomon)编码:又称里德所罗门码(即Reed-solomon code),是一种前向纠错的信道编码,对由校正过采样数据所产生的多项式有效。RS码是一类纠错能力很强的特殊的非二进制BCH码。
SDDC(Single Device Data Correction):纠正一个颗粒上的数据
DDDC(Double Device Data Correction):纠正两个颗粒上的数据
内存通道(Channel):每个内存控制器可以有多个内存通道,例如常见的内存通道0,内存通道1。
UE(Uncorrectable Error):不可纠正错误。
CE(Correctable Error):可纠正错误。
数据颗粒(Data Device):存储数据的内存颗粒。
ECC颗粒(ECC Device):存储校验位的内存颗粒。
符号(Symbol:):又称码元,ECC纠错时最小的单元,一般有x4和x8颗粒,对应symbol就为4比特(bit)和8比特数据。
有限域:亦称伽罗瓦域(galois field),是仅含有限个元素的域,例如,可写作GF(2n),n代表域内元素的比特数。
范德蒙矩阵:一种各列为几何级数的矩阵。示例性的范德蒙矩阵可以为:
可以理解的是,上面定义的术语只是在特定应用场景下的示例性定义,以便更好的理解本申请。例如,上面描述的针对特定内存的示例性定义可以扩展到其他类型的内存或其他存储器。
对于存储器(例如DDR内存),目前如果出现两个存储颗粒同时出错,目前的系统将会报出不可纠正错误,将无法纠正回来,重读后仍是不可纠正错误,数据将会被丢失,严重的话系统将导致系统宕机。如果使用硬件记录下之前的可纠正错误位置等信息及算法后处理来达到逐个纠正两个内存颗粒的目的,也能解决部分两个同时出错的问题。但有一系列前提条件,且覆盖率较低,两个同时出错的内存颗粒必须有一个是之前的可纠正错误报出来的。
示例性的纠正2个错误的主流方法有DDDC,其主要包含了如下要点:
·需要打开锁同步(lockstep);
·算法上,ECC使用了Parity+CRC;
·一次算法运算,只能纠一个内存颗粒;
·当要纠正第二个内存颗粒时,须先把之前出错的内存颗粒替换写入到冗余内存颗粒(spare device)中,再使用算法找到第二个出错的内存颗粒。
·只能分时纠正两个内存颗粒的出错。若同时两个内存颗粒出错,则DDDC技术无能为力,系统将报出不可纠正错误。
本公开的至少一实施例提出一种数据的处理方法和数据的处理装置、存储系统、电子设备以及存储介质,例如当任何时刻出现两个码元(例如DDR4、DDR5的两个存储颗粒)出错时,无需软件参与,以及无需依据历史记录信息,将能同时纠正两个码元(例如DDR4、DDR5两个存储颗粒)出错。如此,大大提高存储器的可靠性,降低数据丢失与系统宕机的风险。以下参照附图,对本公开的实施例的数据的处理方法、处理装置、存储系统、电子设备及存储介质分别进行详细介绍。
首先,以下介绍本公开的实施例的数据的处理方法,该数据的处理方法可以应用于如下文进一步描述的数据的处理装置、存储系统、电子设备、以及其他合适的软件或硬件、或硬件和软件的结合。
图1示出了根据本公开的至少一实施例的数据的处理方法100的流程图,该处理方法可以包括步骤S102~S106。
在步骤S102中,分别从第一存储通道和第二存储通道各读取两笔突发数据,以得到四笔突发数据,其中,该四笔突发数据与存储到第一存储通道和第二存储通道中的编码数据相对应,编码数据由对写入第一存储通道和第二存储通道的k个数据码元进行编码而得到,编码数据包括k个数据码元和m个校验码元,其中m个校验码元的总位宽是一个纠错码元的位宽的八倍。
在一些实施例中,k、m分别对应于第一存储通道和第二存储通道的数据存储颗粒的总数以及第一存储通道和第二存储通道的校验存储颗粒的总数,k个数据码元中的每个数据码元的位宽是相应的数据存储颗粒的位宽的两倍,m个校验码元中的每个校验码元的位宽是相应的校验存储颗粒的位宽的两倍,k、m为正整数。例如,示例性的DDR4或DDR5中,第一存储通道和第二存储通道均包括8个x4的数据内存颗粒和2个x4的校验内存颗粒(ecc内存颗粒),因此,一个纠错码元的位宽为4比特,对应于纠错的最小单位,k=16,m=4,每个数据存储颗粒和校验存储颗粒的位宽为x4(4比特),每个数据码元和校验码元的位宽为x8。因此,编码数据的m个校验码元的总位宽是4*8=32比特,纠错码元的位宽为4比特。当然实施例不限于此,数据存储颗粒和校验存储颗粒的位宽可以改变,例如两个x4的数据存储颗粒(或校验存储颗粒)可以体现为一个x8的数据存储颗粒(或校验存储颗粒),此时,k、m可以仍然对应于x4的位宽,即一个纠错码元的位宽。
在一些实施例中,数据码元可以在校验操作中被解码和纠错(如有必要),以得到用于执行计算以实现预定功能的数据或指令。校验码元可以在解码和纠错(如有必要)中提供信息以保证得到正确的数据。
示例性的第一存储通道和第二存储通道可以是诸如DDR4或DDR5中的两个内存通道channel 0和channel 1。
在步骤S104中,将该四笔突发数据组织为一组纠错码字,其中,一组纠错码字包括k个读回数据码元和m个读回校验码元。
在一些实施例中,该四笔突发数据(本文也称为读回编码数据,其本质是从第一存储通道和第二存储通道读取的编码数据)与编码数据相对应,以便得到相应的正确的数据,然而编码数据在传输过程中或者在存储单元(包括第一存储通道和第二存储通道)中会受到诸如电磁等环境因素的干扰,从而出现数据错误。因此,k个读回数据码元(即从第一存储通道和第二存储通道读回的数据码元)和m个读回校验码元(即从第一存储通道和第二存储通道读回的校验码元)可能与编码数据所包括的k个数据码元和m个校验码元不同。
在一些实施例中,存储单元可以是存储器本身,例如DDR存储器或DDR内存。在另一些实施例中,存储单元可以是存储器中的存储阵列。
在步骤S106中,基于该一组纠错码字进行解码操作,以得到纠错后码元。如此,根据本公开的至少一实施例的数据的处理方法100通过从两个存储通道各读取两笔突发数据从而实现了两个码元或符号(即纠错码元)的同时纠错。例如,当出错的两个码元位于两个不同的存储颗粒,可以实现两个存储颗粒的纠错,又例如,当出错的两个码元位于相同的存储颗粒,可以实现单个存储颗粒的纠错。
例如,在DDR内存中,DDR的数据位宽一般是确定的,例如DDR4是72+8(数据位宽+校验位宽),DDR5是32+8(数据位宽+校验位宽),如此可以实现x8位宽的码元的纠错。例如,当该x8码元中的一个x4出现在一个颗粒(例如x4或x8颗粒),而另一个x4出现在另一个颗粒(例如x4或x8颗粒),可以实现这两个颗粒的纠错。又例如,当该x8码元出现在一个颗粒中(例如x8颗粒)可以实现一个颗粒的纠错。
以下对本公开的至少一实施例的数据的处理方法的其他方面进行详细的描述。
在一些实施例中,作为上述参见图1描述的处理方法的替代或补充,本公开的至少一实施例还提供了编码方法,包括:对写入第一存储通道和第二存储通道的k个数据码元进行编码,得到编码数据,编码数据包括k个数据码元和m个校验码元,其中m个校验码元的总位宽是一个纠错码元的位宽的八倍。如此,编码数据与上述四笔突发数据相对应,以促进一组纠错码字包括k个读回数据码元和m个读回校验码元,从而促进上述解码,以实现两个码元的纠错。
在一些实施例中,根据本公开的至少一实施例的处理方法,将四笔突发数据组织为一组纠错码字,包括:将从第一存储通道读取的两笔突发数据中对应于相同存储颗粒的突发数据组合为一个纠错码字码元,以得到第一部分纠错码字;将从第二存储通道读取的两笔突发数据中对应于相同存储颗粒的突发数据组合为一个纠错码字码元,以得到第二部分纠错码字;以及组合第一部分纠错码字和所述第二部分纠错码字。如此,根据本公开的至少一实施例的处理方法,可以通过对每个存储通道读取的两笔突发数据进行组合来实现一组纠错码字的组织。然而实施例不限于此,可以通过针对每个存储通道中对应于相同数据存储颗粒的突发数据组合为一个数据码元,对应于相同校验存储颗粒的突发数据组合为一个校验码元的方式来获得每个存储通道的数据码元和校验码元,从而组合这些数据码元和校验码元来实现一组纠错码字的组织。
在一些实施例中,根据本公开的至少一实施例的处理方法,对写入第一存储通道和第二存储通道的k个数据码元进行编码,包括:基于编码矩阵对k个数据码元进行编码;基于一组纠错码字进行解码操作,以得到纠错后码元,包括:基于解码矩阵对一组纠错码字进行解码,得到伴随式数据;以及利用伴随式数据得到纠错后码元,其中,编码矩阵为至少k+m行k列的矩阵并且包括类范德蒙矩阵,解码矩阵为至少m行k+m列的矩阵并且包括所述类范德蒙矩阵,其中,类范德蒙矩阵是与范德蒙矩阵相关联的矩阵,其中,k≤pn-1,m≤pn,其中,n为每个码元的比特数,p为单个比特的容纳能力。
在一些实施例中,基于伴随式数据可以确定例如错误的数据码元和校验码元的位置(也称为错误符号位置或错误码元位置)以及错误值,并且可以基于伴随式数据对错误符号进行纠错,以得到纠错后码元,例如纠错后数据码元或纠错后校验码元。
本公开的至少一实施例可以在有限域下实施,其中,k≤pn-1,m≤pn,其中,n为每个码元的比特数,p为单个比特的容纳能力,因此p和n可以构成有限域GF(pn)。
可以理解的是单个比特的容纳能力是指单个比特表征的数据的量,即p元。在一些实施例中,p可以为2(例如单个比特可以表征2元数据(0、1)),因此,对于GF(2n),k≤2n-1,m≤2n。在另一些实施例中,p可以为3或其他数值(例如在量子计算中,单个比特可以表征3(或更多)元数据)。这里的k、m和n可以是正整数,p可以是素数。
在一些实施例中,类范德蒙矩阵包括范德蒙矩阵及其变体。例如,类范德蒙矩阵包括范德蒙矩阵、范德蒙矩阵的左右翻转、范德蒙矩阵的上下翻转或范德蒙矩阵的转置或者范德蒙矩阵中的元素进行调换的其他变体。示例性的范德蒙矩阵可以为:
表1示出了根据本公开的至少一实施例的数据的处理方法与RS码的码元数量对比表。
表1本公开的数据的处理方法与RS码的码元数量对比表
参见表1,对于GF(2n),RS码中的数据码元的个数和检验码元的个数需要满足k+m≤2n-1。相比之下,对于GF(2n),本公开的数据的处理方法基于类范德蒙矩阵,可以使得数据码元的个数满足k≤2n-1,以及检验码元的个数满足m≤2n。例如,假设n=4,对于RS码可以为k=11、m=4,而对于本公开的数据的处理方法,可以为k=15、m=4。在这种情况下,对于本公开的数据的处理方法可以支持更多的校验码元与数据码元(例如本公开的数据的处理方法的k=15对RS码的k=11),并且易于扩展(例如,公开的数据的处理方法的k和m的取值更灵活(例如k可以为15、14、13、12、11等),从而易于扩展。
因此,根据本公开的至少一实施例的数据的处理方法基于类范德蒙矩阵,相对于RS码,可以支持更多的校验码元与数据码元,提高了码率,从而提高了纠错能力、并且易于扩展。然而,实施例不限于此,也可以通过其他方法实现上述编码和解码。
在一些实施例中,根据本公开的至少一实施例的处理方法,编码矩阵可以包括第一区间和第二区间,其中,第一区间可以包括k行k列的单位矩阵,第二区间可以包括m行k列的类范德蒙矩阵;并且基于编码矩阵对k个数据码元进行编码,得到编码数据,可以包括:使用k行k列的单位矩阵乘以k个数据码元,得到k个数据码元;以及使用m行k列的类范德蒙矩阵乘以k个数据码元,得到m个校验码元。如此,根据本公开的至少一实施例的处理方法可以形成多种编码矩阵,提高形成的编码矩阵的灵活性。可以理解,编码矩阵还可以附加地包括其他区间,可以在其他区间中设置0或1或其他合适的数值而不影响上述编码的实现。
在一些实施例中,根据本公开的至少一实施例的处理方法,第一区间的k行k列的单位矩阵可以分布在编码矩阵的任意k+m行;第二区间的m行k列的类范德蒙矩阵可以分布在编码矩阵的任意k+m行;并且第一区间和第二区间的位置无交集。如此,根据本公开的至少一实施例的处理方法可以将单位矩阵和类范德蒙矩阵的各个行灵活的分布在编码矩阵中。
在一些实施例中,根据本公开的至少一实施例的处理方法,第一区间的k行k列的单位矩阵可以分布在编码矩阵的前k行;并且第二区间的m行k列的类范德蒙矩阵可以分布在编码矩阵的第k+1至第k+m行。如此,根据本公开的至少一实施例的处理方法形成的编码矩阵结构简单。当然,实施例不限于此,可以将该实施例中的单位矩阵与类范德蒙矩阵的位置对调,由此形成的编码矩阵结构同样简单。
在一些实施例中,根据本公开的至少一实施例的处理方法,解码矩阵可以包括第三区间和第四区间,其中,第三区间可以包括m行k列的类范德蒙矩阵,第四区间可以包括m行m列的单位矩阵;并且基于解码矩阵对读回编码数据进行解码,得到伴随式数据,可以包括:使用解码矩阵乘以k个读回数据码元与m个读回校验码元,得到伴随式数据。如此,根据本公开的至少一实施例的处理方法可以形成多种解码矩阵,提高形成的解码矩阵的灵活性。可以理解,解码矩阵还可以附加地包括其他区间,可以在其他区间中设置0或1或其他合适的数值而不影响上述解码的实现。
在一些实施例中,根据本公开的至少一实施例的处理方法,第三区间的m行k列的类范德蒙矩阵可以分布在解码矩阵的任意k+m列;第四区间的m行m列的单位矩阵可以分布在解码矩阵的任意k+m列;并且第三区间和第四区间的位置无交集。如此,根据本公开的至少一实施例的处理方法可以将单位矩阵和类范德蒙矩阵的各个行灵活的分布在解码矩阵中。
在一些实施例中,根据本公开的至少一实施例的处理方法,第三区间的m行k列的类范德蒙矩阵可以分布在编码矩阵的前k列;第四区间的m行m列的单位矩阵可以分布在编码矩阵的第k+1至第k+m列。如此,根据本公开的至少一实施例的处理方法形成的解码矩阵结构简单。当然,实施例不限于此,可以将该实施例中的单位矩阵与类范德蒙矩阵的位置对调,由此形成的解码矩阵结构同样简单。
在一些实施例中,根据本公开的至少一实施例的处理方法,利用伴随式数据得到纠错后码元,可以包括:读取伴随式数据;响应于伴随式数据全部为0,输出k个读回数据码元作为纠错后码元,其中,伴随式数据全部为0可以指示k个读回数据码元与m个读回校验码元没有错误;响应于伴随式数据有一个1,输出k个读回数据码元作为纠错后码元,其中,伴随式数据有一个1可以指示k个读回数据码元没有错误并且m个读回校验码元中与其为1的伴随式数据相对应的读回校验码元有错误;响应于伴随式数据有v个1,利用伴随式数据对k个读回数据码元和m个读回校验码元中的错误码元进行纠错,以得到纠错后码元,其中,伴随式数据有v个1可以指示k个读回数据码元中与其为1的伴随式数据相对应的v1个读回数据码元有错误以及m个读回校验码元中与其为1的伴随式数据相对应的v2个读回校验码元有错误,其中v≥2,v1≤m,v2≤m,v1+v2=v。如此,根据本公开的至少一实施例的处理方法可以基于得到的伴随式数据确定读回数据码元和读回校验码元是否错误以及错误位置。
在一些实施例中,根据本公开的至少一实施例的处理方法,利用伴随式数据对k个读回数据码元和m个读回校验码元中的错误码元进行纠错,以得到纠错后码元,可以包括:利用伴随式数据确定k个读回数据码元和m个读回校验码元中的错误码元的错误位置和错误值;利用错误位置对错误码元进行纠错,以得到纠错后码元。如此,根据本公开的至少一实施例的处理方法可以基于得到的伴随式数据对读回数据码元和读回校验码元中的错误码元进行纠错。
在一些实施例中,根据本公开的至少一实施例的处理方法,利用伴随式数据确定k个读回数据码元和m个读回校验码元中的错误码元的错误位置和错误值,可以包括:
1)进行双数据码元纠错运算,可以包括:利用伴随式数据构建多次方程;基于多次方程求解错误位置和错误值;
2)进行单数据码元与单校验码元纠错运算,可以包括:假定单校验码元的值是错误的,基于伴随式数据之间的比率关系与伴随式数据所对应的类范德蒙矩阵的元素之间的比率关系相等,求解错误位置和错误值;以及
3)进行单数据码元纠错运算,可以包括:基于伴随式数据之间的比率关系与伴随式数据所对应的类范德蒙矩阵的元素之间的比率关系相等,求解错误位置和错误值。
伴随式数据可以包括表征错误是双数据码元错误、单数据码元与单校验码元错误或单数据码元错误的信息,可以通过分别与这些错误的相对应的运算(例如上述运算1)-3))来得到错误位置和错误值。例如,在错误是双数据码元错误的情况下,可以通过上述运算1)得到错误位置和错误值,此时,上述运算2)和3)可以无解。又例如,在错误是单数据码元与单校验码元错误的情况下,可以通过上述运算2)得到错误位置和错误值,此时,上述运算1)和3)可以无解。又例如,在错误是单数据码元错误的情况下,可以通过上述运算3)得到错误位置和错误值,此时,上述运算1)和2)可以无解。
在上述实施例中,为了利用伴随式数据确定k个读回数据码元和m个读回校验码元中的错误码元的错误位置和错误值,可以同时进行上述运算1)-3),以覆盖例如可能的可纠正错误和不可纠正错误(例如两个错误码元),提供了本公开的至少一实施例的处理方法的在例如可纠正错误和不可纠正错误的各种错误场景的适用性。然而,可以理解的是,实施例不限于此,可以仅进行上述运算1)-3)的部分,例如,在特定的错误场景下,例如可纠正错误高频发生的错误场景下,可以仅进行上述运算3)。
如此,根据本公开的至少一实施例的处理方法可以实现基于类范德蒙矩阵的多次方程的建立,可以实现错误码元的错误位置和错误值的快速确定。在一些实施例中,多次方程可以是二次方程。然而,实施例不限于此,可以利用伴随式数据构建其他方程(例如三次方程等)或不同类型的方程的组合(例如二次方程和三次方程的组合等)。另外,可以利用伴随式数据通过方程式之外的方法(例如查找表等)求解错误位置和错误值。
在一些实施例中,根据本公开的至少一实施例的处理方法,多次方程可以为二次方程,p=2,m=4,并且伴随式数据可以为(s0,s1,s2,s3),
其中,利用伴随式数据构建多次方程,可以包括:
构建二次方程ax2+bx+c=0,其中,
a=s1 2+s0s2,
b=s1s2+s0s3,
c=s1s3+s2 2,
其中,基于多次方程求解错误位置和错误值,可以包括:
响应于a不为0,令以将二次方程转化为:
y2+y+u=0;
得到y2+y+u=0的两个根y与y’;
令以得到错误位置x与x’;
使用错误位置与伴随式数据计算出错误值ex与ex′,其中:
ex′=s0+ex;
其中,假定单校验码元的值是错误的,基于伴随式数据之间的比率关系与伴随式数据所对应的类范德蒙矩阵的元素之间的比率关系相等,求解错误位置和错误值,可以包括:
假定与s0相对应的校验内存颗粒ecc0的值是错误的,基于 计算出错误位置分别为x和校验内存颗粒ecc0,并且错误值分别为/>与/>
假定与s1相对应的校验内存颗粒ecc1的值是错误的,基于并且计算出错误位置分别为x和校验内存颗粒ecc1,并且错误值分别为s0与s0*2x⊕s1;
假定与s2相对应的校验内存颗粒ecc2的值是错误的,基于并且/>计算出错误位置分别为x和校验内存颗粒ecc2,并且错误值分别为s0与s1*2x⊕s2;
假定与s3相对应的校验内存颗粒ecc3的值是错误的,基于 计算出错误位置分别为x和校验内存颗粒ecc3,并且错误值分别为s0与s2*2x⊕s3;
其中,基于伴随式数据之间的比率关系与伴随式数据所对应的类范德蒙矩阵的元素之间的比率关系相等,求解错误位置和错误值,可以包括:
基于计算出错误位置为x,并且错误值为s0。
如此,根据本公开的至少一实施例的处理方法可以通过构建有限域GF(2n)下的二次方程,通过4个校验码元实现同时两个符号位置的纠错。相比之下,基于RS码的纠错方法无法实现例如上述二次方程的构建,因为不存在解出两个错误位置的可能,因而不能实现同时两个符号位置的纠错。
可以理解的是,上述实施例不限于此,可以通过其他有限域、和其他数量的校验码元实现两个符号位置的纠错或者其他数量的符号位置的纠错,只要。例如,当m=3时,可以实现2个相邻符号位置(例如第一符号位置为j,则第二符号位置为j+1)的纠错,因为仅需要三个方程即可得到2个相邻符号位置以及2个相应的错误值。此外,也可以通过其他类型的方程(例如三次方程、二次方程与三次方程的组合等)或者其他求解方法(例如查找表等)实现两个符号位置的纠错。
在一些实施例中,根据本公开的至少一实施例的处理方法,得到y2+y+u=0的两个根y与y’,可以包括:通过数学运算求解y2+y+u=0,以得到y2+y+u=0的两个根y与y’;或者通过查找表得到y2+y+u=0的两个根y与y’。如此,根据本公开的至少一实施例的处理方法可以提供灵活的方式求解y2+y+u=0的两个根y与y’,从而促进实现错误位置和错误值的确定。例如,查找表可以预想存储有u与y与y’,并且可以基于u得到相应的y与y’。基于查找表的方法可以实现y与y’的快速确定,有助于提高实现错误位置和错误值的确定的速度。
在一些实施例中,根据本公开的至少一实施例的处理方法,通过数学运算求解y2+y+u=0,以得到y2+y+u=0的两个根y与y’,可以包括:通过对u进行异或操作来求解y2+y+u=0,以得到y2+y+u=0的两个根y与y’。如此,根据本公开的至少一实施例的处理方法可以通过异或操作来得到y与y’。然而,实施例不限于此,也可以通过其他逻辑运算来得到y与y’。
在一些实施例中,根据本公开的至少一实施例的处理方法,y和u可以都为8比特的有限域数字,其中,通过对u进行异或操作来求解y2+y+u=0,可以包括:
Y0=not Y0’,或者Y0’xor 1,
Y1=Y1’,
Y2=Y2’,
Y3=Y3’,
Y4=Y4’,
Y5=Y5’,
Y6=Y6’,
Y7=Y7’,并且
Y7=U0 xor U1 xor U2 xor U4,
Y6=U0 xor U1 xor U2 xor U4 xor U7,
Y5=U1 xor U2 xor U3 xor U4 xor U6,
Y4=U0 xor U7,
Y3=U1 xor U2 xor U3 xor U4,
Y2=U0 xor U3 xor U4 xor U6,
Y1=U0 xor U2 xor U4,
Y0=U3 xor U6,
U5=Tr(u),
其中,U0至U7分别表示u的第0比特至第7比特;
Y0至Y7分别表示y的第0比特至第7比特;
Y0’至Y7’分别表示y’的第0比特至第7比特;
Tr(u)表示y2+y+u=0是否有解,其中,Tr(u)=1指示无解,并且Tr(u)=0指示有解。
如此,根据本公开的至少一实施例的处理方法可以针对8比特的有限域数字、基于上述具体的逻辑运算得到两个根y与y’。然而,实施例不限于此,也可以针对其他比特数、以及基于其他逻辑运算得到两个根y与y’。
在一些实施例中,根据本公开的至少一实施例的处理方法,还包括:响应于伴随式数据有一个1,利用伴随式数据对m个读回校验码元进行纠错。如此,根据本公开的至少一实施例的处理方法可以对读回校验码元中的错误的校验码元进行纠错。
在一些实施例中,根据本公开的至少一实施例的处理方法,利用伴随式数据得到纠错后码元可以与基于RS码的纠错方法的相关技术中利用伴随式数据得到纠错后码元相似。
与根据本公开的至少一实施例的数据的处理方法相对应,本公开还提供了一种数据的处理装置。
图2示出了根据本公开的至少一实施例的数据的处理装置200的示意图。如图2所示,该处理装置200包括读取模块210以及解码模块220。
读取模块210被配置为:分别从所述第一存储通道和所述第二存储通道各读取两笔突发数据,以得到四笔突发数据,其中,所述四笔突发数据与存储到所述第一存储通道和第二存储通道中的编码数据相对应,所述编码数据由对写入所述第一存储通道和所述第二存储通道的k个数据码元进行编码而得到,所述编码数据包括所述k个数据码元和m个校验码元,其中所述m个校验码元的总位宽是一个纠错码元的位宽的八倍;将所述四笔突发数据组织为一组纠错码字,其中,所述一组纠错码字包括k个读回数据码元和m个读回校验码元。
解码模块220被配置为:基于所述一组纠错码字进行解码操作,以得到纠错后码元。
如此,根据本公开的至少一实施例的数据的处理装置200通过从两个存储通道各读取两笔突发数据从而实现了两个码元或符号的同时纠错。
以上仅结合图2描述了根据本公开的至少一实施例的数据的处理装置200的部分,并且数据的处理装置200的其余部分可以对本公开的结合图1描述的数据的处理方法100的各个方面进行引用,并且根据本公开的结合图1描述的数据的处理方法100的各个方面的效果同样可以映射到本公开的结合图2描述数据的处理装置200,在此不在赘述。
例如,根据本公开的至少一实施例的数据的处理装置200替代地或附加地包括编码模块,以执行上述编码。又例如,根据本公开的至少一实施例的数据的处理装置200还可以包括纠错模块,以执行上述纠错操作。
下面通过图3至图8来描述可以利用根据本公开的至少一实施例的数据的处理方法或处理装置的编解码示例应用场景。可以理解的是,图3至图8所示出的应用场景仅是示例性的,而没有穷尽列举说明上述数据的处理方法或处理装置的各个方面,并且结合图3至图8描述的各方面与结合图1和图2描述的各方面可以相互引用,而不超出本公开的范围。
在该编解码示例应用场景中,可以基于范德蒙矩阵来同纠正两个符号位置的方法。例如,对于DDR内存,使用本方法结构,可以做到当DDR内存出现不可纠正错误时,仍可以同时纠正回来。
该编解码示例应用场景可以包括编码模块、解码模块以及纠错模块。
图3示出了根据本公开的至少一实施例的编码模块300的示意图。
参见图3,编码模块300的输入为数据码元302,输出为数据码元和校验码元304。输出的数据码元和校验码元304经过一定的映射后会经由DDR内存通道存入内存颗粒。
在编码模块中可以进行编码运算。在编码运算中,用范德蒙矩阵乘以数据码元得到m个校验码元,所使用的乘法与加法皆为有限域运算。假设有k个数据码元,则编码矩阵有(k+m)行k列。该编码矩阵前k行是一个单位矩阵,编码矩阵后m行是一个范德蒙矩阵,通过与数据码元相乘,得到m个校验码元。
图4示出了根据本公开的至少一实施例的编码运算400的示意图。其中,k=8,m=4,a为有限域元素的多项式表达,a=2。参见图4,编码矩阵(图4左侧的矩阵)为12行8列。编码矩阵的前8行是一个单位矩阵,即对所有数据码元不做处理,直接传输。编码矩阵的后4行是一个范德蒙矩阵。编码矩阵与数据码元(图4中间的矩阵)相乘以得到编码矩阵(图4右侧的矩阵)。编码数据包括数据码元以及编码所得到的4个数据码元(c0到c3)。
可以理解的是,图4以及下面结合图5至图8描述的k=8,m=4以及其他参数仅是示例性的,可以根据实际的需要调整k、m以及其他参数的值(例如下面参见图9A至图9C描述的示例中,k=16),并且相应地调制扩展编码矩阵、解码矩阵等。
图5示出了根据本公开的至少一实施例的解码模块500和纠错模块550的示意图。
参见图5,解码模块500的输入是从DDR内存通道的读回的存储数据(例如,对应于上文读回编码数据)经由与编码模块相同的映射而转化出来的数据码元和校验码元510。
在解码模块500中可以进行解码运算。在解码运算中,使用解码矩阵乘以读回的k个数据码元(例如,对应于上文k个读回数据码元)与读回的m个校验码元(例如,对应于上文m个读回校验码元),得到m个伴随式s0、s1,s2,…,s3(例如,对应于上文伴随式数据)。
图6示出了根据本公开的至少一实施例的解码运算600的示意图。其中,k=8,m=4,a为有限域元素的多项式表达,a=2。参见图6,解码矩阵是4行12列的矩阵,其中左边8列是编码模块中使用的同一个范德蒙矩阵,右边4列是一个单位矩阵。图6展示了8个数据d0到d7与4个校验码元c0到c3进行解码运算的过程,最后得到4个伴随式s0、s1、s2和s3都为0,说明读回的存储数据没有错误。
继续参见图5,纠错模块550的输入是解码模块的输出(即m个伴随式),输出是纠正后的数据码元(也可以包括纠正后的校验码元)520。
在纠错模块550中可以进行纠错运算。下面以上述k=8,m=4,a为有限域元素的多项式表达,a=2为例进行纠错运算的描述。
在纠错运算中,利用伴随式(s0,s1,s2,s3)的特征计算错误的符号位置和值,具体步骤如下:
步骤1.读取伴随式(s0,s1,s2,s3);
步骤2.如果(s0,s1,s2,s3)全部为0,指示读回的数据码元和校验码元都没有错误,跳到步骤6,否则跳到步骤3;
步骤3.如果(s0,s1,s2,s3)有3个为0,即(s0,s1,s2,s3)有一个为1,指示有一个校验码元出错,即指示相应的检验颗粒(ecci,i为0-3)出错,跳到步骤6,否则跳到步骤4;
步骤4.把(s0,s1,s2,s3)进行如下6种运算——运算a)-f),然后跳到步骤5;
运算a)双数据纠错运算(2data error correction),
运算b)数据与ecc0纠错运算(data&ecc0 error correction),
运算c)数据与ecc1纠错运算(data&ecc1 error correction),
运算d)数据与ecc2纠错运算(data&ecc2 error correction),
运算e)数据与ecc3纠错运算(data&ecc3 error correction),
运算f)单数据纠错运算(single data error correction),
以上运算a)-f)都会输出:是否有解,错误位置,错误值;
步骤5.使用运算解出的错误位置纠错,然后输出数据码元,退出;
步骤6.直接输出数据码元,退出。
下面详细描述运算a)-f)。
下面描述运算a)双数据纠错运算。
图7示出了根据本公开的至少一实施例的双数据纠错运算700的示意图。如下结合图7描述双数据纠错运算。
首先用伴随式(s0,s1,s2,s3)计算a、b、c,计算公式如下:
a=s1 2+s0s2,
b=s1s2+s0s3,
c=s1s3+s2 2,
可以使用a、b、c构造出有限域下二次方程ax2+bx+c=0。若a为0,则本模块无解。若a不为0,则令方程可转化为:
y2+y+u=0;
接下来,直接找出二次方程是否可解,通过异或运算可以得到y与y’(中间变量)的值。下面结合图8描述通过异或运算得到y与y’(中间变量)的值的具体过程。
然后,令以得到错误位置x与x’;使用错误位置与伴随式计算出错误值ex与ex′,其中:
/>
ex′=s0+ex。
图8示出了根据本公开的至少一实施例的求解有限域二次方程(即y2+y+u=0)的示意图800。在图8中,y和u都为8比特的有限域数字。
参见图8,左侧的U0至U7为输入,其中,U0至U7分别代表u的第0比特至第7比特。图下侧的Y0至Y7和Y0’至Y7’是输出,y2+y+u=0的两个根为y和y’,其中,Y0至Y7分别表示y的第0比特至第7比特,Y0’至Y7’分别表示y’的第0比特至第7比特;
Y0至Y7和Y0’至Y7’满足以下关系:
Y0=not Y0’(或者Y0’xor 1,请注意取反等价于与1取异或)
Y1=Y1’,
Y2=Y2’,
Y3=Y3’,
Y4=Y4’,
Y5=Y5’,
Y6=Y6’,
Y7=Y7’,
Tr(u)表示y2+y+u=0是否有解,若Tr(u)=1,则方程无解,若Tr(u)=0,则方程有解,如果以8比特为码元,则Tr(u)=U5。
假设u=24,计算y2+y+24=0的两个根,则U3=1,U4=1,U0,U1,U2,U5,U6,U7=0,U5=Tr(u)=0,方程有解,并且
Y7=U0 xor U1 xor U2 xor U4,
Y6=U0 xor U1 xor U2 xor U4 xor U7,
Y5=U1 xor U2 xor U3 xor U4 xor U6,
Y4=U0 xor U7,
Y3=U1 xor U2 xor U3 xor U4,
Y2=U0 xor U3 xor U4 xor U6,
Y1=U0 xor U2 xor U4,
Y0=U3 xor U6,
由此,可以得出y[7:0]=8’b11000011=195,并且翻转(图8中的Y0与Y0’之间的flip)最后一位,可以得出y’[7:0]=8’b11000010=194,其中,195和194是y2+y+24=0的两个根。
上面结合图8描述了一种数学运算方法来求解有限域二次方程y2+y+u=0。然而,实施例不限于此,也可以通过查找表方法来求解有限域二次方程y2+y+u=0。例如,当u等于24时,在查找表中找第24个表项,该表项中存储有y和y’的值(不用存16比特,因为y和y’的最后一位相反,因此只用存y[7:1]这7位就行,从表中读出后补上0或1得到y和y’)。
下面描述运算b)数据与ecc0纠错运算。
该运算假定ecc0的值是错的,若则错误位置分别为x与ecc0,错误值分别为/>与/>
下面描述运算c)数据与ecc1纠错运算。
该运算假定ecc1的值是错的,若并且/>则错误位置分别为x与ecc1,错误值分别为s0与s0*2x⊕s1。
下面描述运算d)数据与ecc2纠错运算。
该运算假定ecc2的值是错的,若并且/>则错误位置分别为x与ecc2,错误值分别为s0与s1*2x⊕s2。
下面描述运算e)数据与ecc3纠错运算。
该运算假定ecc3的值是错的,若则错误位置分别为x与ecc3,错误值分别为s0与s2*2x⊕s3。
下面描述运算f)单数据纠错运算。
若则错误位置为x,错误值为s0。
上述运算a)-f)只负责单个数据码元的纠错,单个校验码元的纠错可以由步骤3负责。
在该编解码示例应用场景中,使用范德蒙矩阵可以做到同时纠正两个符号位置的错误。在附加方面,若只有一个符号出错,使用同一个矩阵也能完成纠正,无需要更换算法。编解码示例应用场景中能够有效提高例如DDR内存的纠错能力,增强内存可靠性。
例如,在该编解码示例应用场景中,使用4个校验码元能纠正任意1或2个码元同时错误。例如,在该编解码示例应用场景中,只有一个位置出错时,纠正的正确率达到100%。例如,在该编解码示例应用场景中,可解决两个位置同时出错造成报UE的问题,解决数据丢失。例如,在该编解码示例应用场景中,若ECC颗粒的正确性得到保证,纠正两个随机的数据码元错误的正确率也可以达到100%,即针对上述6种中的多种情况有解。
例如,在该编解码示例应用场景中,基于范德蒙矩阵构建的二次方程可以实现快速求解,从而可以提供达到同时且任意(针对符号位置)找到两个(出错符号位置)的解的速度。例如,在该编解码示例应用场景中,利用有限域下二次方程特性,可以快速判断错误数量,并且可以判断出错位置是否包含校验颗粒,提高纠正错误的概率。例如,在该编解码示例应用场景中,纠错过程中可以并行执行运算a)-f),得到所有可能的错误位置及错误值。
在该编解码示例应用场景中的附加方面,编码矩阵可以被替换,例如,其中的范德蒙矩阵可以替换为范德蒙矩阵一系列变形,比如左右翻转、上下翻转、转置等操作。
在该编解码示例应用场景中的附加方面,可以使用任意比特的码元实现。例如,对于GF(2n),表2示出了根据本公开的至少一实施例的码元的位宽及个数上限。
表2码元的位宽及个数上限
位宽 | 个数 | |
数据码元 | ≤n | ≤2n-1 |
校验码元 | n | ≤2n |
由表2可知,数据码元和校验码元的位宽可以不一致。例如,数据码元不局限于数据内存颗粒的位宽,例如可以大于数据内存颗粒的位宽。例如,现在需要在6个4比特的数据码元中纠正2个错误,那么纠错码既可以定义在GF(24)上,生成4个4比特校验码元,形成24+16的总位宽。也可以定义在GF(25)上,在每个4比特的数据码元前补0得到5比特的数据码元,从而生成4个5比特校验码元(这样纠错能力更强),此时总位宽为24+20。
上述编解码示例应用场景只是实现根据本公开的至少一实施例的数据的处理方法和处理装置的一部分或附加方面,上述编解码示例应用场景的其他方面可以参照根据本公开的至少一实施例的数据的处理方法和处理装置及其附加方面。
在该编解码示例应用场景中,可以基于范德蒙矩阵来同纠正两个符号位置的方法。例如,对于DDR内存,使用本方法结构,可以做到当DDR内存出现不可纠正错误时,仍可以同时纠正回来。
下面结合图9A至图9C来描述利用根据本公开的至少一实施例的数据的处理方法或处理装置的组织校验码字(ECC字)的示例应用场景。可以理解的是,图9A至图9C所示出的应用场景仅是示例性的,而没有穷尽列举说明上述数据的处理方法或处理装置的各个方面,并且结合图9A至图9C描述的各方面与结合图1和图2、以及图3至图8描述的各方面可以相互引用,而不超出本公开的范围。
在该组织ECC字的示例应用场景中,可以得到一组ECC字,该一组ECC字包括数据码元和校验码元,这些数据码元和校验码元可以例如对应于上述结合图3至图8描述的编解码示例应用场景中的数据码元和校验码元,从而实现相应的编解码功能,并最终实现两个码元的同时纠错。
在该组织ECC字的示例应用场景中,存储器以包括两个内存通道Ch0和Ch1的DDR内存来体现,每个内存通道包含的内存颗粒(数据内存颗粒以及校验内存颗粒ecc)的位宽为4比特。可以理解的是,实施例不限于此,可以存在其他变体。
图9A示出了根据本公开的至少一实施例的一个固定错误+一个随机错误的内存的结构示意图。图9B示出了根据本公开的至少一实施例的两个固定错误的内存的结构示意图。图9C示出了根据本公开的至少一实施例的两个随机错误的内存的结构示意图。
下面结合图9A来描述组织ECC字的示例性方面。参见图9A,内存可以包括锁同步(lockstep)、内存通道Ch0以及内存通道Ch1。
首先,打开内存的锁同步功能,以便实现对内存通道Ch0以及内存通道Ch1的同步操作,例如,写入,读取等操作。
在示例性写入数据过程中,一笔数据例如经由上述编码过程被写入到内存通道Ch0以及内存通道Ch1中,即同步实现要被写入到内存通道Ch0以及内存通道Ch1的数据的写操作。例如,一笔数据为例如256比特,前128比特写入到内存通道Ch0中,例如写入到4笔突发数据中,后128比特写入到内存通道Ch1中,例如写入到4笔突发数据中。可以理解,这仅是示例性的,上述一笔数据可以包含其他数量的比特数或写入到其他数量笔突发数据中。另外,写入数据可以一直写下去,例如针对图9A,可以将写入数据的一半写入内存通道Ch0,并且将写入数据的另一半写入内存通道Ch1。
在示例性读取数据过程中,从内存通道Ch0以及内存通道Ch1中各读取两笔突发数据,即从内存通道Ch0读取两笔突发数据Burst0和Burst1,从从内存通道Ch1读取两笔突发数据Burst0和Burst1。这里的四笔突发数据与上述被写入的数据通过例如上述基于类范德蒙矩阵而编码生成的数据码元和校验码元相对应。
ECC字的示例性组成结构可以为:
符号0为ch0的第一个x4数据内存颗粒的Burst0的D0与ch0的第一个x4数据内存颗粒的Burst1的D16,两笔数据共8bit组成一个符号,即符号0;
符号1为ch0的第二个x4数据内存颗粒的Burst0的D1与ch0的第二个x4数据内存颗粒的Burst1的D17,两笔数据共8bit组成一个符号,即符号1;
符号2为ch0的第三个x4数据内存颗粒的Burst0的D2与ch0的第三个x4数据内存颗粒的Burst1的D18,两笔数据共8bit组成一个符号,即符号2;
符号3为ch0的第四个x4数据内存颗粒的Burst0的D3与ch0的第四个x4数据内存颗粒的Burst1的D19,两笔数据共8bit组成一个符号,即符号3;
…
符号7为ch0的第八个x4数据内存颗粒的Burst0的D7与ch0的第八个x4数据内存颗粒的Burst1的D23,两笔数据共8bit组成一个符号,即符号7;
符号8为ch1的第一个x4数据内存颗粒的Burst0的D8与ch1的第一个x4数据内存颗粒的Burst1的D24,两笔数据共8bit组成一个符号,即符号8;
符号9为ch1的第二个x4数据内存颗粒的Burst0的D9与ch1的第二个x4数据内存颗粒的Burst1的D25,两笔数据共8bit组成一个符号,即符号9;
符号10为ch1的第三个x4数据内存颗粒的Burst0的D10与ch1的第三个x4数据内存颗粒的Burst1的D26,两笔数据共8bit组成一个符号,即符号10;
符号11为ch1的第四个x4数据内存颗粒的Burst0的D11与ch1的第四个x4数据内存颗粒的Burst1的D27,两笔数据共8bit组成一个符号,即符号11;
…
符号15为ch1的第八个x4数据内存颗粒的Burst0的D15与ch1的第八个x4数据内存颗粒的Burst1的D31,两笔数据共8bit组成一个符号,即符号15;
与数据内存颗粒类似地,Ch0与Ch1的两个x4校验的两笔突发数据分别组成4个校验码符号(ecc symbol),如下:
符号16为ch0的第一个x4校验内存颗粒的Burst0的C0与ch0的第一个x4校验内存颗粒的Burst1的C4,两笔校验码共8bit组成一个符号,即符号16;
符号17为ch0的第二个x4校验内存颗粒的Burst0的C1与ch0的第二个x4校验内存颗粒的Burst1的C5,两笔校验码共8bit组成一个符号,即符号17;
符号18为ch1的第一个x4校验内存颗粒的Burst0的C2与ch1的第一个x4校验内存颗粒的Burst1的C6,两笔校验码共8bit组成一个符号,即符号18;
符号19为ch1的第二个x4校验内存颗粒的Burst0的C3与ch0的第二个x4校验内存颗粒的Burst1的C7,两笔校验码共8bit组成一个符号,即符号19;
如此形成的一组ECC字为16个数据符号+4个校验符号,其中数据信息共128比特,校验信息共32bit。
经过上述方式组织好的ECC字,可以利用例如结合图3至图8描述的范德蒙矩阵算法实现解码操作,达到一次ECC运算,可同时纠正两个内存颗粒同时出错的情况,并且无需像DDDC使用替换内存颗粒的方式。
示例性的两个内存颗粒同时出错的场景参见图9A至图9C。
参见图9A,示出了存在1个固定错误+1个随机错误的情况,其中,Ch0中的第四个数据内存颗粒出现固定错误(示出为该第四个数据内存颗粒故障,导致D3和D19错误),Ch0中的第七个数据内存颗粒出现随机错误(导致D6错误)。固定错误和随机错误可以在同一个内存通道上,也可以分别在两个内存通道上。
参见图9B,示出了存在两个固定错误的情况,其中,Ch0中的第四个数据内存颗粒出现固定错误(示出为该第四个数据内存颗粒故障,导致D3和D19错误),Ch1中的第七个数据内存颗粒出现随机错误(示出为第七个数据内存颗粒故障,导致D14和D30错误)。两个内存颗粒同时出错可以在同一个内存通道上,也可以分别在两个内存通道上。
参见图9C,示出了存在两个随机错误的情况,其中,Ch0中的第四个数据内存颗粒出现固定错误(导致D3),Ch1中的第六个数据内存颗粒出现随机错误(导致D29错误)。两个内存颗粒同时出错可以在同一个内存通道上,也可以分别在两个内存通道上,随机错误可以是两笔burst数据中的任意一个。
在上述示例应用场景中,仅利用硬件结构、无需软件参与以及无需纠错历史记录、无需做内存颗粒替换就可以完成对两个数据内存颗粒同时出错时进行纠正,能有效解决两个内存颗粒出错报不可纠正错误的问题,从而提高内存的可靠性,降低数据丢失与宕机的风险。
上述示例应用场景只是实现根据本公开的至少一实施例的数据的处理方法和处理装置的一部分或附加方面,上述示例应用场景的其他方面可以参照根据本公开的至少一实施例的数据的处理方法和处理装置及其附加方面。
图10示出了根据本公开的至少一实施例的存储系统1000的示意图。如图10所示,存储系统1000包括处理装置1010和存储单元1020。
处理装置1010可以为以上结合图2描述的处理装置200,并且存储单元1020可以为包括以上结合图2描述的处理装置200中所涉及的第一存储通道和第二存储通道的任何存储器。
因此,对于本公开的各个实施例的处理装置200,其各个方面同样可以映射到结合图10描述的存储系统1000,在此不在赘述。
图11示出了根据本公开的至少一实施例的电子装置1100的示意图。
如图11所示,电子装置1100包括处理器1110和存储器1120。存储器1120包括一个或多个计算机程序模块1121。一个或多个计算机程序模块1121被存储在存储器1120中并被配置为由处理器1110执行,该一个或多个计算机程序模块1121包括用于执行根据本公开的至少一实施例的数据的处理方法的指令,其被处理器1110执行时,可以执行根据本公开的至少一实施例的数据的处理方法及其附加方面的一个或多个步骤。存储器1120和处理器1110可以通过总线系统和/或其他形式的连接机构(未示出)互连。例如,该总线可以是外设部件互连标准(PCI)总线或扩展工业标准结构(EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。
示例性地,处理器1110可以是中央处理单元(CPU)、数字信号处理器(DSP)或者具有数据处理能力和/或程序执行能力的其他形式的处理单元,例如现场可编程门阵列(FPGA)等;例如,中央处理单元(CPU)可以为X86或ARM架构、RISC-V架构等。处理器1110可以为通用处理器或专用处理器,可以控制电子装置1100中的其他组件以执行期望的功能。
示例性地,存储器1120可以包括一个或多个计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序模块1121,处理器1110可以运行一个或多个计算机程序模块1121,以实现电子装置1100的各种功能。在计算机可读存储介质中还可以存储各种应用程序和各种数据以及应用程序使用和/或产生的各种数据等。
例如,电子装置1100还可以包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等输入装置;包括诸如液晶显示器、扬声器、振动器等输出装置;包括例如磁带、硬盘(HDD或SDD)等存储装置;例如还可以包括诸如LAN卡、调制解调器等的网络接口卡等通信装置。通信装置可以允许电子装置1100与其他设备进行无线或有线通信以交换数据,经由诸如因特网的网络执行通信处理。根据需要驱动器连接至I/O接口。可拆卸存储介质,诸如磁盘、光盘、磁光盘、半导体存储器等,根据需要安装在该驱动器上,以便于从其上读出的计算机程序根据需要被安装入存储装置。
例如,该电子装置1100还可以进一步包括外设接口(图中未示出)等。该外设接口可以为各种类型的接口,例如为USB接口、闪电(lighting)接口等。该通信装置可以通过无线通信来与网络和其他设备进行通信,该网络例如为因特网、内部网和/或诸如蜂窝电话网络之类的无线网络、无线局域网(LAN)和/或城域网(MAN)。无线通信可以使用多种通信标准、协议和技术中的任何一种,包括但不局限于全球移动通信系统(GSM)、增强型数据GSM环境(EDGE)、宽带码分多址(W-CDMA)、码分多址(CDMA)、时分多址(TDMA)、蓝牙、Wi-Fi(例如基于IEEE 802.11a、IEEE 802.11b、IEEE 802.11g和/或IEEE 802.11n标准)、基于因特网协议的语音传输(VoIP)、Wi-MAX,用于电子邮件、即时消息传递和/或短消息服务(SMS)的协议,或任何其他合适的通信协议。
该电子装置1100例如可以是片上系统(SOC)或者包括该SOC的设备,例如,可以为手机、平板电脑、笔记本电脑、电子书、游戏机、电视机、数码相框、导航仪、家用电器、通信基站、工业控制器、服务器等任何设备,也可以为任意的数据处理装置及硬件的组合,本公开的实施例对此不作限制。该电子装置1100的具体功能和技术效果可以参考上文中关于根据本公开的至少一实施例的数据的处理方法及其附加方面的描述,此处不再赘述。
图12示出了根据本公开至少一实施例的非瞬时可读存储介质1200的示意图。
如图12所示,非瞬时可读存储介质1200上存储有计算机指令1210,该计算机指令1210被处理器执行时执行如上所述的数据的处理方法及其附加方面中的一个或多个步骤。
示例性地,该非瞬时可读存储介质1200可以是一个或多个计算机可读存储介质的任意组合,例如,一个计算机可读存储介质包含分别从第一存储通道和第二存储通道各读取两笔突发数据,以得到四笔突发数据的程序代码、用于将四笔突发数据组织为一组纠错码字的程序代码、以及用于基于一组纠错码字进行解码操作,以得到纠错后码元的程序代码。
示例性地,当该程序代码由计算机读取时,计算机可以执行该计算机存储介质中存储的程序代码,执行例如根据本公开的至少一实施例的数据的处理方法及其附加方面的一个或多个步骤。
示例性地,该非瞬时可读存储介质可以包括智能电话的存储卡、平板电脑的存储部件、个人计算机的硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、闪存、以及其他的非瞬时可读存储介质或其任意组合。
在上文的详细描述中,出于解释而非限制的目的,阐述了具体细节,以便提供对本公开中描述的各个方面和实施例的透彻理解。在一些情况下,省略了对众所周知的设备、组件、电路和方法的详细描述,以免用不必要的细节来模糊本文公开的实施例的描述。本文列举本文公开的原理、方面和实施例的所有声明,以及其具体示例,旨在涵盖其结构等同物和功能等同物两者。另外,这种等同物旨在包括当前已知的等同物以及将来开发的等同物,即,开发的执行相同功能的任何元件,而不管结构如何。因此,例如,可以理解,本文的框图可以表示体现所描述的实施例的原理的说明性电路系统或其他功能单元的概念图。这样的功能和所示的功能块将被理解为是硬件实施的和/或计算机实施的。
本公开的各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
需要说明的是,在本文中,诸如第一、第二等的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且进一步包括没有明确列出的其他要素,或者是进一步包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本公开的优选实施例,并不用于限制本公开;本公开的范围由权利要求确定。
Claims (17)
1.一种数据的处理方法,包括:
分别从第一存储通道和第二存储通道各读取两笔突发数据,以得到四笔突发数据,其中,所述四笔突发数据与存储到所述第一存储通道和第二存储通道中的编码数据相对应,所述编码数据由对写入所述第一存储通道和所述第二存储通道的k个数据码元进行编码而得到,所述编码数据包括所述k个数据码元和m个校验码元,其中所述m个校验码元的总位宽是一个纠错码元的位宽的八倍;
将所述四笔突发数据组织为一组纠错码字,其中,所述一组纠错码字包括k个读回数据码元和m个读回校验码元;以及
基于所述一组纠错码字进行解码操作,以得到纠错后码元。
2.根据权利要求1所述的处理方法,其中,将所述四笔突发数据组织为所述一组纠错码字,包括:
将从所述第一存储通道读取的两笔突发数据中对应于相同存储颗粒的突发数据组合为一个纠错码字码元,以得到第一部分纠错码字;
将从所述第二存储通道读取的两笔突发数据中对应于相同存储颗粒的突发数据组合为一个纠错码字码元,以得到第二部分纠错码字;以及
组合所述第一部分纠错码字和所述第二部分纠错码字。
3.根据权利要求1所述的处理方法,其中,
对写入所述第一存储通道和所述第二存储通道的k个数据码元进行编码,包括:
基于编码矩阵对k个数据码元进行编码;
基于所述一组纠错码字进行解码操作,以得到纠错后码元,包括:
基于解码矩阵对所述一组纠错码字进行解码,得到伴随式数据;以及
利用所述伴随式数据得到纠错后码元,
其中,所述编码矩阵为至少k+m行k列的矩阵并且包括类范德蒙矩阵,所述解码矩阵为至少m行k+m列的矩阵并且包括所述类范德蒙矩阵,其中,所述类范德蒙矩阵是与范德蒙矩阵相关联的矩阵,其中,k≤pn-1,m≤pn,其中,n为每个码元的比特数,p为单个比特的容纳能力。
4.根据权利要求3所述的处理方法,其中,所述编码矩阵包括第一区间和第二区间,其中,所述第一区间包括k行k列的单位矩阵,所述第二区间包括m行k列的类范德蒙矩阵;并且
基于所述编码矩阵对k个数据码元进行编码,得到所述编码数据,包括:
使用所述k行k列的单位矩阵乘以所述k个数据码元,得到所述k个数据码元;以及
使用所述m行k列的类范德蒙矩阵乘以所述k个数据码元,得到所述m个校验码元。
5.根据权利要求3所述的处理方法,其中,所述解码矩阵包括第三区间和第四区间,其中,所述第三区间包括m行k列的类范德蒙矩阵,所述第四区间包括m行m列的单位矩阵;并且
基于解码矩阵对所述一组纠错码字进行解码,得到伴随式数据,包括:
使用所述解码矩阵乘以所述k个读回数据码元与所述m个读回校验码元,得到所述伴随式数据。
6.根据权利要求3所述的处理方法,其中,利用所述伴随式数据得到所述纠错后码元,包括:
读取所述伴随式数据;
响应于所述伴随式数据全部为0,输出所述k个读回数据码元作为所述纠错后码元,其中,所述伴随式数据全部为0指示所述k个读回数据码元与所述m个读回校验码元没有错误;
响应于所述伴随式数据有一个1,输出所述k个读回数据码元作为所述纠错后码元,其中,所述伴随式数据有一个1指示所述k个读回数据码元没有错误并且所述m个读回校验码元中与其为1的伴随式数据相对应的读回校验码元有错误;
响应于所述伴随式数据有v个1,利用所述伴随式数据对所述k个读回数据码元和所述m个读回校验码元中的错误码元进行纠错,以得到所述纠错后码元,其中,所述伴随式数据有v个1指示所述k个读回数据码元中与其为1的伴随式数据相对应的v1个读回数据码元有错误以及所述m个读回校验码元中与其为1的伴随式数据相对应的v2个读回校验码元有错误,其中v≥2,v1≤m,v2≤m,v1+v2=v。
7.根据权利要求6所述的处理方法,其中,利用所述伴随式数据对所述k个读回数据码元和所述m个读回校验码元中的错误码元进行纠错,以得到所述纠错后码元,包括:
利用所述伴随式数据确定所述k个读回数据码元和所述m个读回校验码元中的错误码元的错误位置和错误值;
利用所述错误位置对所述错误码元进行纠错,以得到所述纠错后码元。
8.根据权利要求7所述的处理方法,其中,利用所述伴随式数据确定所述k个读回数据码元和所述m个读回校验码元中的错误码元的错误位置和错误值,包括:
1)进行双数据码元纠错运算,包括:
利用所述伴随式数据构建多次方程;
基于所述多次方程求解所述错误位置和所述错误值;
2)进行单数据码元与单校验码元纠错运算,包括:
假定所述单校验码元的值是错误的,基于所述伴随式数据之间的比率关系与所述伴随式数据所对应的类范德蒙矩阵的元素之间的比率关系相等,求解所述错误位置和所述错误值;以及
3)进行单数据码元纠错运算,包括:
基于所述伴随式数据之间的比率关系与所述伴随式数据所对应的类范德蒙矩阵的元素之间的比率关系相等,求解所述错误位置和所述错误值。
9.根据权利要求8所述的处理方法,其中,所述多次方程为二次方程,p=2,m=4,并且所述伴随式数据为(s0,s1,s2,s3),
其中,利用所述伴随式数据构建所述多次方程,包括:
构建二次方程ax2+bx+c=0,其中,
a=s1 2+s0s2,
b=s1s2+s0s3,
c=s1s3+s2 2,
其中,基于所述多次方程求解所述错误位置和所述错误值,包括:
响应于a不为0,令以将二次方程转化为:
y2+y+u=0;
得到y2+y+u=0的两个根y与y’;
令以得到所述错误位置x与x’;
使用所述错误位置与所述伴随式数据计算出所述错误值ex与ex′,其中:
ex′=s0+ex;
其中,假定所述单校验码元的值是错误的,基于所述伴随式数据之间的比率关系与所述伴随式数据所对应的类范德蒙矩阵的元素之间的比率关系相等,求解所述错误位置和所述错误值,包括:
假定与s0相对应的校验内存颗粒ecc0的值是错误的,基于 计算出所述错误位置分别为x和所述校验内存颗粒ecc0,并且所述错误值分别为/>与/>
假定与s1相对应的校验内存颗粒ecc1的值是错误的,基于并且/>计算出所述错误位置分别为x和所述校验内存颗粒ecc1,并且所述错误值分别为s0与
假定与s2相对应的校验内存颗粒ecc2的值是错误的,基于并且/>计算出所述错误位置分别为x和所述校验内存颗粒ecc2,并且所述错误值分别为s0与
假定与s3相对应的校验内存颗粒ecc3的值是错误的,基于2x,计算出所述错误位置分别为x和所述校验内存颗粒ecc3,并且所述错误值分别为s0与/>
其中,基于所述伴随式数据之间的比率关系与所述伴随式数据所对应的类范德蒙矩阵的元素之间的比率关系相等,求解所述错误位置和所述错误值,包括:
基于计算出所述错误位置为x,并且所述错误值为s0。
10.根据权利要求9所述的处理方法,其中,得到y2+y+u=0的两个根y与y’,包括:
通过数学运算求解y2+y+u=0,以得到y2+y+u=0的两个根y与y’;或者
通过查找表得到y2+y+u=0的两个根y与y’。
11.根据权利要求10所述的处理方法,其中,通过数学运算求解y2+y+u=0,以得到y2+y+u=0的两个根y与y’,包括:
通过对u进行异或操作来求解y2+y+u=0,以得到y2+y+u=0的两个根y与y’。
12.根据权利要求11所述的处理方法,其中,y和u都为8比特的有限域数字,其中,通过对u进行异或操作来求解y2+y+u=0,包括:
Y0=not Y0’,或者Y0’xor 1,
Y1=Y1’,
Y2=Y2’,
Y3=Y3’,
Y4=Y4’,
Y5=Y5’,
Y6=Y6’,
Y7=Y7’,并且
Y7=U0 xor U1 xor U2 xor U4,
Y6=U0 xor U1 xor U2 xor U4 xor U7,
Y5=U1 xor U2 xor U3 xor U4 xor U6,
Y4=U0 xor U7,
Y3=U1 xor U2 xor U3 xor U4,
Y2=U0 xor U3 xor U4 xor U6,
Y1=U0 xor U2 xor U4,
Y0=U3 xor U6,
U5=Tr(u),
其中,U0至U7分别表示u的第0比特至第7比特;
Y0至Y7分别表示y的第0比特至第7比特;
Y0’至Y7’分别表示y’的第0比特至第7比特;
Tr(u)表示y2+y+u=0是否有解,其中,Tr(u)=1指示无解,并且Tr(u)=0指示有解。
13.根据权利要求3-12中任一项所述的处理方法,其中,所述类范德蒙矩阵包括范德蒙矩阵、范德蒙矩阵的左右翻转、范德蒙矩阵的上下翻转或范德蒙矩阵的转置。
14.一种数据的处理装置,包括:
读取单元,被配置为:
分别从第一存储通道和第二存储通道各读取两笔突发数据,以得到四笔突发数据,其中,所述四笔突发数据与存储到所述第一存储通道和第二存储通道中的编码数据相对应,所述编码数据由对写入所述第一存储通道和所述第二存储通道的k个数据码元进行编码而得到,所述编码数据包括所述k个数据码元和m个校验码元,其中所述m个校验码元的总位宽是一个纠错码元的位宽的八倍;
将所述四笔突发数据组织为一组纠错码字,其中,所述一组纠错码字包括k个读回数据码元和m个读回校验码元;以及
解码模块,被配置为:基于所述一组纠错码字进行解码操作,以得到纠错后码元。
15.一种存储系统,包括:
根据权利要求14所述的处理装置;以及
存储单元,包括所述第一存储通道和所述第二存储通道。
16.一种电子设备,包括:
处理器;
存储器,其上存储有指令,
其中,所述指令在被处理器执行时,使得所述处理器执行根据权利要求1-13中任一项所述的处理方法。
17.一种计算机可读存储介质,其上存储有指令,
其中,所述指令在被处理器执行时,使得所述处理器执行根据权利要求1-13中任一项所述的处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310037736.5A CN116028260B (zh) | 2023-01-09 | 2023-01-09 | 数据的处理方法、处理装置以及存储系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310037736.5A CN116028260B (zh) | 2023-01-09 | 2023-01-09 | 数据的处理方法、处理装置以及存储系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116028260A CN116028260A (zh) | 2023-04-28 |
CN116028260B true CN116028260B (zh) | 2024-02-27 |
Family
ID=86075593
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310037736.5A Active CN116028260B (zh) | 2023-01-09 | 2023-01-09 | 数据的处理方法、处理装置以及存储系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116028260B (zh) |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10320222A (ja) * | 1997-04-07 | 1998-12-04 | Internatl Business Mach Corp <Ibm> | エラーを検出するための方法および装置 |
CN101099138A (zh) * | 2005-03-04 | 2008-01-02 | 国立大学法人东京工业大学 | 限制了错误字节数的字节内多个斑点字节错误纠正/检测方法和装置 |
WO2013014974A1 (en) * | 2011-07-26 | 2013-01-31 | Kabushiki Kaisha Toshiba | Memory controller, semiconductor storage device, and decoding method |
CN111183748B (zh) * | 2013-12-25 | 2016-03-16 | 中国电子科技集团公司第五十四研究所 | 基于循环冗余效验与纠删编码的抗误码方法 |
CN108471315A (zh) * | 2017-02-23 | 2018-08-31 | 杭州海康威视数字技术股份有限公司 | 一种纠删译码方法及装置 |
CN111294059A (zh) * | 2019-12-26 | 2020-06-16 | 成都海光集成电路设计有限公司 | 编码方法、译码方法、纠错方法及相关装置 |
CN111858142A (zh) * | 2020-07-24 | 2020-10-30 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据处理方法、装置及电子设备和存储介质 |
CN112929129A (zh) * | 2021-02-09 | 2021-06-08 | 中国人民解放军战略支援部队信息工程大学 | 基于动态冗余异构编码的数据处理系统、方法及设备 |
CN113297000A (zh) * | 2021-05-20 | 2021-08-24 | 山东云海国创云计算装备产业创新中心有限公司 | 一种raid编码电路及编码方法 |
CN113391946A (zh) * | 2021-05-25 | 2021-09-14 | 杭州电子科技大学 | 一种分布式存储中的纠删码的编解码方法 |
CN114281270A (zh) * | 2022-03-03 | 2022-04-05 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据存储方法、系统、设备以及介质 |
CN114360623A (zh) * | 2021-12-27 | 2022-04-15 | 海光信息技术股份有限公司 | 用于存储器纠错的方法、存储器控制器及计算机系统 |
CN114550806A (zh) * | 2022-04-26 | 2022-05-27 | 杭州阿姆科技有限公司 | 一种应用于ssd上的双层纠错方法 |
CN115408198A (zh) * | 2021-05-26 | 2022-11-29 | 华为技术有限公司 | 数据纠错方法、装置、设备及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2860360B1 (fr) * | 2003-09-29 | 2005-12-09 | Canon Kk | Dispositif de codage /decodage utilisant un codeur/decodeur de reed-solomon |
JP4662278B2 (ja) * | 2006-04-28 | 2011-03-30 | 富士通株式会社 | エラー訂正装置、符号器、復号器、方法及び情報記憶装置 |
US9647690B2 (en) * | 2014-07-23 | 2017-05-09 | Raidix Corporation | Systems and methods for error correction coding |
JP5918884B1 (ja) * | 2015-05-12 | 2016-05-18 | 日本電信電話株式会社 | 復号装置、復号方法、およびプログラム |
US10291258B2 (en) * | 2017-05-25 | 2019-05-14 | Advanced Micro Devices, Inc. | Error correcting code for correcting single symbol errors and detecting double bit errors |
-
2023
- 2023-01-09 CN CN202310037736.5A patent/CN116028260B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10320222A (ja) * | 1997-04-07 | 1998-12-04 | Internatl Business Mach Corp <Ibm> | エラーを検出するための方法および装置 |
CN101099138A (zh) * | 2005-03-04 | 2008-01-02 | 国立大学法人东京工业大学 | 限制了错误字节数的字节内多个斑点字节错误纠正/检测方法和装置 |
WO2013014974A1 (en) * | 2011-07-26 | 2013-01-31 | Kabushiki Kaisha Toshiba | Memory controller, semiconductor storage device, and decoding method |
CN111183748B (zh) * | 2013-12-25 | 2016-03-16 | 中国电子科技集团公司第五十四研究所 | 基于循环冗余效验与纠删编码的抗误码方法 |
CN108471315A (zh) * | 2017-02-23 | 2018-08-31 | 杭州海康威视数字技术股份有限公司 | 一种纠删译码方法及装置 |
CN111294059A (zh) * | 2019-12-26 | 2020-06-16 | 成都海光集成电路设计有限公司 | 编码方法、译码方法、纠错方法及相关装置 |
CN111858142A (zh) * | 2020-07-24 | 2020-10-30 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据处理方法、装置及电子设备和存储介质 |
CN112929129A (zh) * | 2021-02-09 | 2021-06-08 | 中国人民解放军战略支援部队信息工程大学 | 基于动态冗余异构编码的数据处理系统、方法及设备 |
CN113297000A (zh) * | 2021-05-20 | 2021-08-24 | 山东云海国创云计算装备产业创新中心有限公司 | 一种raid编码电路及编码方法 |
CN113391946A (zh) * | 2021-05-25 | 2021-09-14 | 杭州电子科技大学 | 一种分布式存储中的纠删码的编解码方法 |
CN115408198A (zh) * | 2021-05-26 | 2022-11-29 | 华为技术有限公司 | 数据纠错方法、装置、设备及存储介质 |
CN114360623A (zh) * | 2021-12-27 | 2022-04-15 | 海光信息技术股份有限公司 | 用于存储器纠错的方法、存储器控制器及计算机系统 |
CN114281270A (zh) * | 2022-03-03 | 2022-04-05 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据存储方法、系统、设备以及介质 |
CN114550806A (zh) * | 2022-04-26 | 2022-05-27 | 杭州阿姆科技有限公司 | 一种应用于ssd上的双层纠错方法 |
Also Published As
Publication number | Publication date |
---|---|
CN116028260A (zh) | 2023-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11740960B2 (en) | Detection and correction of data bit errors using error correction codes | |
JP4036338B2 (ja) | 誤りバイト数を制限したバイト内複数スポッティバイト誤り訂正・検出方法及び装置 | |
US9417956B2 (en) | Error detection and correction unit, error detection and correction method, information processor, and program | |
JP5055578B2 (ja) | ホログラフィック記憶のための連結コード | |
US9912355B2 (en) | Distributed concatenated error correction | |
JP2008165808A (ja) | 誤り訂正確率を減らすエラー訂正回路、その方法及び前記回路を備える半導体メモリ装置 | |
US8806295B2 (en) | Mis-correction and no-correction rates for error control | |
US8335961B2 (en) | Facilitating probabilistic error detection and correction after a memory component failure | |
US8255741B2 (en) | Facilitating error detection and correction after a memory component failure | |
US20090110109A1 (en) | Apparatus and method for generating a transmit signal and apparatus and method for extracting an original message from a received signal | |
US8694872B2 (en) | Extended bidirectional hamming code for double-error correction and triple-error detection | |
US8332727B2 (en) | Error correction circuit, flash memory system including the error correction circuit, and operating method of the error correction circuit | |
US10090860B2 (en) | Memory system using integrated parallel interleaved concatenation | |
JPS6349245B2 (zh) | ||
US10606697B2 (en) | Method and apparatus for improved data recovery in data storage systems | |
US20140019822A1 (en) | Coding and decoding of error correcting codes | |
Gabrys et al. | Tackling intracell variability in TLC flash through tensor product codes | |
Qiu et al. | Terminated staircase codes for NAND flash memories | |
US20170192858A1 (en) | Computing system with data protection mechanism with soft information and method of operation thereof | |
US10567007B2 (en) | Device and method of processing a data word using checkbits | |
CN116028260B (zh) | 数据的处理方法、处理装置以及存储系统 | |
CN116092567B (zh) | 数据的处理方法、处理装置以及存储系统 | |
EP4369201A1 (en) | Data processing method and apparatus | |
US20170005672A1 (en) | Partial parity ecc checking mechanism with multi-bit hard and soft error correction capability | |
CN115408198A (zh) | 数据纠错方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |