CN112688693A - 一种内存多矩阵编码方法、纠错方法及相关装置 - Google Patents
一种内存多矩阵编码方法、纠错方法及相关装置 Download PDFInfo
- Publication number
- CN112688693A CN112688693A CN202011471464.2A CN202011471464A CN112688693A CN 112688693 A CN112688693 A CN 112688693A CN 202011471464 A CN202011471464 A CN 202011471464A CN 112688693 A CN112688693 A CN 112688693A
- Authority
- CN
- China
- Prior art keywords
- data
- check
- matrix
- search
- information code
- 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.)
- Granted
Links
- 239000011159 matrix material Substances 0.000 title claims abstract description 551
- 230000015654 memory Effects 0.000 title claims abstract description 155
- 238000012937 correction Methods 0.000 title claims abstract description 124
- 238000000034 method Methods 0.000 title claims abstract description 123
- 238000012545 processing Methods 0.000 claims abstract description 15
- 208000011580 syndromic disease Diseases 0.000 claims description 46
- 230000008569 process Effects 0.000 claims description 10
- 238000013500 data storage Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 19
- 230000006870 function Effects 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 5
- 235000014676 Phragmites communis Nutrition 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 2
- 101150050673 CHK1 gene Proteins 0.000 description 1
- 101100220616 Caenorhabditis elegans chk-2 gene Proteins 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
Landscapes
- Error Detection And Correction (AREA)
Abstract
一种内存多矩阵编码方法、纠错方法及相关装置。多矩阵编码方法,包括:接收要写入存储器的信息码数据,所述信息码数据包括r比特;以及基于预先设定的多个RS校验矩阵对所述信息码数据执行里德所罗门RS编码处理,得到n比特的RS编码数据。多矩阵纠错方法包括:读取存储器中存储的发生错误的RS编码数据,其中所述RS编码数据包括n比特,其中前r比特为待纠错的信息码数据,其包括h个信息码元,每个信息码元的长度是t比特,后k比特为读取的校验码数据;以及基于预先设定的多个RS校验矩阵,对所述RS编码数据进行纠错以获得纠错后的信息码数据。
Description
技术领域
本公开涉及纠错码技术领域,尤其涉及一种内存多矩阵编码方法、纠错方法、相关装置、计算机系统和存储介质。
背景技术
DDR内存在工作过程中难免会出现错误(电磁等环境的干扰),而对于稳定性要求高的用户来说,内存错误可能会引起致命性的问题。尤其对于服务器而言,对DDR数据可靠性比较高,DDR内存纠错技术就能提高服务器内存的稳定性和纠错能力。
目前内存越做做大,集成度也越来越高,就需要更强更稳定可靠的纠错能力与技术。而目前Chipkill内存技术最多一次可以只可以纠正一个内存芯片,并且需要把所有冗余位宽(例如以X4的内存芯片而言,需要8比特的冗余位宽)全部使用完才够纠正一个内存芯片。因而,在不降低纠错能力的条件下,减少冗余位宽的使用,从而带来增加额外数据的存储空间,具有较大的挑战。
发明内容
鉴于此,本公开提供了一种多矩阵编码方法、纠错方法、相关装置、计算机系统及存储介质,以较少的冗余位宽来实现DDR内存纠错,提供了扩展DDR存储空间的可行性。
本公开的实施例的一方面公开了一种多矩阵编码方法,包括:接收要写入存储器的信息码数据,所述信息码数据包括r比特;以及基于预先设定的多个RS校验矩阵对所述信息码数据执行里德所罗门RS编码处理,得到n比特的RS编码数据,其中,所述n比特的RS编码数据的前r比特是所述信息码数据,后k比特是校验数据,并且n=r+k,r,n和k为正整数。
例如,根据本公开的实施例提供的方法,其中,所述预先设定的多个RS校验矩阵包括第一RS校验矩阵和第二RS校验矩阵,所述第一RS校验矩阵为r行k列的矩阵,所述第二RS校验矩阵为(r+k)行和k列的矩阵,并且所述第二RS校验矩阵的第r+1行至第r+k行是一个k行和k列的单位矩阵。
例如,根据本公开的实施例提供的方法,其中,基于预先设定的多个RS校验矩阵和所述信息码数据执行RS编码处理,得到n比特的RS编码数据包括:将所述信息码数据作为1行r列的矩阵来与第一RS校验矩阵相乘,得到k比特的第一校验数据;将所述信息码数据与所述第一校验数据进行拼接,得到(r+k)比特的第一编码数据;以及将所述第一编码数据作为1行(r+k)列的矩阵来与第二RS校验矩阵相乘,得到k比特的第二编码数据;以及将所述信息码数据与所述第二编码数据进行拼接,得到所述n比特的RS编码数据。
例如,根据本公开的实施例提供的方法,其中,所述预先设定的多个RS校验矩阵包括第三RS校验矩阵、第四RS校验矩阵和第五RS校验矩阵,所述第三RS校验矩阵为r行k列的矩阵,所述第四RS校验矩阵为(r+k)行和k列的矩阵,所述第五RS校验矩阵为(r+k)行和k列的矩阵,并且所述第四RS校验矩阵和所述第五RS校验矩阵的第r+1行至第r+k行是一个k行和k列的单位矩阵。
例如,根据本公开的实施例提供的方法,其中,基于预先设定的多个RS校验矩阵和所述信息码数据,得到n比特的RS编码数据包括:将所述信息码数据作为1行r列的矩阵来与第三RS校验矩阵相乘,得到k比特的第三校验数据;将所述信息码数据与所述第三校验数据进行拼接,得到(r+k)比特的第三编码数据;将所述第三编码数据作为1行(r+k)列的矩阵来与第四RS校验矩阵相乘,得到k比特的第四校验数据;将所述信息码数据与所述第四校验数据进行拼接,得到(r+k)比特的第四编码数据;将所述第四编码数据作为1行(r+k)列的矩阵来与第五RS校验矩阵相乘,得到k比特的第五校验数据;以及将所述信息码数据与所述第五校验数据进行拼接,得到所述n比特的RS编码数据。
例如,根据本公开的实施例提供的方法,其中,所述存储器是DDR存储器。
例如,根据本公开的实施例提供的方法,还包括:将所述RS编码数据写入到DDR存储器中,其中,所述DDR存储器是DDR5存储器,其中所述DDR5存储器包括8个存储数据芯片,用于存储所述信息码数据,以及2个校验数据芯片,用于存储所述校验数据,每个芯片的数据位宽为4比特。
例如,根据本公开的实施例提供的方法,所述r为32,所述k为6或7中的任意一个。
本公开的实施例的另一方面公开了一种多矩阵纠错方法,用于当存储器中所存储的RS编码数据的信息码数据发生错误时,对发生错误的所述信息码数据进行纠错,所述多矩阵纠错方法包括:读取存储器中存储的发生错误的RS编码数据,其中所述RS编码数据包括n比特,其中前r比特为待纠错的信息码数据,其包括h个信息码元,每个信息码元的长度是t比特,后k比特为读取的校验码数据;以及基于预先设定的多个RS校验矩阵,对所述RS编码数据进行纠错以获得纠错后的信息码数据,所述纠错后的信息码数据包括r比特,其中n=r+k,r,t,h,n和k为正整数。
例如,根据本公开的实施例提供的方法,用于当存储器中所存储的RS编码数据的一个信息码元发生错误时,对错误的信息码元进行纠错,其中,基于预先设定的多个RS校验矩阵,对所述RS编码数据进行纠错以获得纠错后的信息码数据包括:基于所述待纠错的信息码数据,得到第一数量的搜索数据,其中,所述第一数量的搜索数据中的每一个是r比特的数据,包括h个信息码元,每个信息码元的长度是t比特;基于所述预先设定的多个RS校验矩阵,对所述第一数量的搜索数据中的每一个执行多矩阵编码方法,得到与所述第一数量的搜索数据相对应的第一数量的中间搜索校验数据和第一数量的最终搜索校验数据,其中所述中间校验数据和最终校验数据的长度是k比特;以及将所述第一数量的最终搜索校验数据中的每一个与所述读取的校验数据进行比较;当所述第一数量的最终搜索校验数据中只有一个最终搜索校验数据与所述读取的校验数据相同时,将与所述一个最终搜索校验数据相对应的搜索数据确定为纠错后的信息码数据;以及当所述第一数量的最终搜索校验数据中有多于一个的最终搜索校验数据与所述读取的校验数据相同时,基于RS定位算法来确定纠错后的信息码数据,其中所述多于一个的最终搜索校验数据的数量为第二数量。
例如,根据本公开的实施例提供的方法,其中,基于所述信息码数据,得到第一数量的搜索数据包括:依次对于所述信息码数据的h个信息码元中的每一个信息码元执行替换操作,包括:依次用从0开始递增到2t-1结束的2t个t比特的二进制数据来替换所述信息码元,同时保持所述信息码数据中的其他(h-1)个信息码元的数据不改变,以得到2t个搜索数据;在h个信息码元的替换操作完成后得到h×2t个搜索数据,作为所述第一数量的搜索数据。
例如,根据本公开的实施例提供的方法,其中,所述预先设定的多个RS校验矩阵包括第一RS校验矩阵和第二RS校验矩阵,所述第一RS校验矩阵为r行k列的矩阵,所述第二RS校验矩阵为(r+k)行和k列的矩阵,并且所述第二RS校验矩阵的第r+1行至第r+k行是一个k行和k列的单位矩阵。
例如,根据本公开的实施例提供的方法,其中,基于所述预先设定的多个RS校验矩阵,对所述第一数量的搜索数据中的每一个执行多矩阵编码方法,得到与所述第一数量的搜索数据相对应的第一数量的中间搜索校验数据和第一数量的最终搜索校验数据包括:对于每一个搜索数据执行以下操作:将所述搜索数据作为1行r列的矩阵来与第一RS校验矩阵相乘,得到k比特的第一搜索校验数据,以作为与所述搜索数据相对应的中间搜索校验数据;将所述搜索数据与所述第一搜索校验数据进行拼接,得到(r+k)比特的第一搜索编码数据;以及将所述第一搜索编码数据作为1行(r+k)列的矩阵来与第二RS校验矩阵相乘,得到k比特的第二搜索校验数据,以作为与所述校验数据相对应的最终搜索校验数据,其中,当对所述第一数量的搜索数据中的每一个搜索数据执行完以上操作之后,得到与所述第一数量的搜索数据相对应的第一数量的中间搜索校验数据和第一数量的最后搜索校验数据。
例如,根据本公开的实施例提供的方法,其中,基于RS定位算法来确定纠错后的信息码数据包括对于与所述第二数量的搜索校验数据相对应的第二数量的搜索数据中的每一个搜索数据执行以下操作:基于所述搜索数据、与所述搜索数据相对应的中间搜索校验数据以及第一RS校验矩阵,通过RS定位算法来确定所述待纠错的信息码数据的第一位置的信息码元出现了误码;确定所述搜索数据在第二位置的信息码元上与所述待纠错的信息码数据不相同;判断所述第一位置与所述第二位置是否相同;以及当所述第一位置与所述第二位置相同时,将所述搜索数据确定为纠错后的信息码数据,否则,则排除所述搜索数据。
例如,根据本公开的实施例提供的方法,其中,基于所述搜索数据、与所述搜索数据相对应的中间搜索校验数据以及第一RS校验矩阵,通过RS定位算法来确定所述待纠错的信息码数据的第一位置的信息码元出现了误码包括:将所述待纠错的信息码数据与所述中间搜索校验数据进行拼接,以得到长度为(r+k)比特的待纠错的RS编码数据;将所述第一RS校验矩阵与一个k行k列单位矩阵进行拼接,以得到(r+k)行k列的第六RS校验矩阵;将所述待纠错的RS编码数据数据作为1行(r+k)列的矩阵与所述第六RS校验矩阵的每一列相乘,以得到k个伴随式数据;对于所述待纠错的信息码数据的h个信息码元中的每一个信息码元的位置i,基于与所述位置i相对应的所述k个伴随式数据之间的相互关系,将相应的k个伴随式数据进行组合异或再相与,以确定所述位置i处的信息码元是否出现误码,其中i=1,2,3…,h。
例如,根据本公开的实施例提供的方法,其中,所述预先设定的多个RS校验矩阵包括第三RS校验矩阵、第四RS校验矩阵和第五RS校验矩阵,所述第三RS校验矩阵为r行k列的矩阵,所述第四RS校验矩阵为(r+k)行和k列的矩阵,所述第五RS校验矩阵为(r+k)行和k列的矩阵,并且所述第四RS校验矩阵和所述第五RS校验矩阵的第r+1行至第r+k行是一个k行和k列的单位矩阵。
例如,根据本公开的实施例提供的方法,其中,基于预先设定的多个RS校验矩阵,对所述第一数量的搜索数据中的每一个执行多矩阵编码方法,得到与所述第一数量的搜索数据相对应的第一数量的中间搜索校验数据和第一数量的最终搜索校验数据包括:对于每一个搜索数据,将所述搜索数据作为1行r列的矩阵来与第三RS校验矩阵相乘,得到k比特的第三搜索校验数据,以作为与所述搜索数据相对应的中间搜索校验数据;将所述搜索数据与所述第三搜索校验数据进行拼接,得到(r+k)比特的第三搜索编码数据;将所述第三搜索编码数据作为1行(r+k)列的矩阵来与第四RS校验矩阵相乘,得到k比特的第四搜索校验数据;将所述搜索数据与所述第四搜索校验数据进行拼接,得到(r+k)比特的第四搜索编码数据;以及将所述第四搜索编码数据作为1行(r+k)列的矩阵来与第五RS校验矩阵相乘,得到k比特的第五搜索校验数据,以作为与所述校验数据相对应的最终搜索校验数据。
例如,根据本公开的实施例提供的方法,其中,基于RS定位算法来确定纠错后的信息码数据包括对与所述第二数量的搜索校验数据相对应的第二数量的搜索数据中的每一个搜索数据执行以下操作:基于所述搜索数据、与所述搜索数据相对应的中间搜索校验数据以及第三RS校验矩阵,通过RS定位算法来确定所述信息码数据的第一位置的信息码元出现了误码;确定与所述最终搜索校验数据相对应的搜索数据在第二位置的信息码元上与所述信息码数据不相同;判断所述第一位置与所述第二位置是否相同;当所述第一位置与所述第二位置相同时,将所述搜索数据确定为纠错后的信息码数据,否则,则排除所述搜索数据。
例如,根据本公开的实施例提供的方法,其中,基于所述搜索数据、与所述搜索数据相对应的中间搜索校验数据以及第三RS校验矩阵,通过RS定位算法来确定所述信息码数据的第一位置的信息码元出现了误码包括:将所述待纠错的信息码数据与所述中间搜索校验数据进行拼接,以得到长度为(r+k)比特的待纠错的RS编码数据;将所述第一RS校验矩阵与一个k行k列单位矩阵进行拼接,以得到(r+k)行k列的第七RS校验矩阵;将所述待纠错的RS编码数据数据作为1行(r+k)列的矩阵与所述第七RS校验矩阵的每一列相乘,以得到k个伴随式数据;对于所述待纠错的信息码数据的h个信息码元中的每一个信息码元的位置i,基于与所述位置i相对应的所述k个伴随式数据之间的相互关系,将相应的k个伴随式数据进行组合异或再相与,以确定所述位置i处的信息码元是否出现误码,其中i=1,2,3…,h。
例如,根据本公开的实施例提供的方法,其中,所述存储器是DDR存储器。
例如,根据本公开的实施例提供的方法,其中,所述DDR存储器是DDR5存储器,其中所述DDR5存储器包括8个存储数据芯片,用于存储所述信息码数据,以及2个校验数据芯片,用于存储所述校验数据,每个芯片的数据位宽为4比特。
例如,根据本公开的实施例提供的方法,其中,所述r为32,所述k为6或7中的任意一个。
本公开的又一方面提供了一种多矩阵编码装置,包括:接收单元,接收要写入存储器的信息码数据,所述信息码数据包括r比特;编码单元,基于预先设定的多个RS校验矩阵对所述信息码数据执行里德所罗门RS编码处理,得到n比特的RS编码数据,其中,所述n比特的RS编码数据的前r比特是所述信息码数据,后k比特是校验数据,并且n=r+k,r,n和k为正整数。
例如,根据本公开的实施例提供的多矩阵编码装置,其中,所述预先设定的多个RS校验矩阵包括第一RS校验矩阵和第二RS校验矩阵,所述第一RS校验矩阵为r行k列的矩阵,所述第二RS校验矩阵为(r+k)行和k列的矩阵,并且所述第二RS校验矩阵的第r+1行至第r+k行是一个k行和k列的单位矩阵。
例如,根据本公开的实施例提供的多矩阵编码装置,其中,所述编码单元包括:第一校验数据生成单元,将所述信息码数据作为1行r列的矩阵来与第一RS校验矩阵相乘,得到k比特的第一校验数据;第一拼接单元,将所述信息码数据与所述第一校验数据进行拼接,得到(r+k)比特的第一编码数据;以及第二校验数据生成单元,将所述第一编码数据作为1行(r+k)列的矩阵来与第二RS校验矩阵相乘,得到k比特的第二编码数据;第二拼接单元,将所述信息码数据与所述第二编码数据进行拼接,得到所述n比特的RS编码数据。
例如,根据本公开的实施例提供的多矩阵编码装置,其中,所述预先设定的多个RS校验矩阵包括第三RS校验矩阵、第四RS校验矩阵和第五RS校验矩阵,所述第三RS校验矩阵为r行k列的矩阵,所述第四RS校验矩阵为(r+k)行和k列的矩阵,所述第五RS校验矩阵为(r+k)行和k列的矩阵,并且所述第四RS校验矩阵和所述第五RS校验矩阵的第r+1行至第r+k行是一个k行和k列的单位矩阵。
例如,根据本公开的实施例提供的多矩阵编码装置,其中,所述编码单元包括:第三校验数据生成单元,将所述信息码数据作为1行r列的矩阵来与第三RS校验矩阵相乘,得到k比特的第三校验数据;第三拼接单元,将所述信息码数据与所述第三校验数据进行拼接,得到(r+k)比特的第三编码数据;第四校验数据生成单元,将所述第三编码数据作为1行(r+k)列的矩阵来与第四RS校验矩阵相乘,得到k比特的第四校验数据;第四拼接单元,将所述信息码数据与所述第四校验数据进行拼接,得到(r+k)比特的第四编码数据;以及第五校验数据生成单元,将所述第四编码数据作为1行(r+k)列的矩阵来与第五RS校验矩阵相乘,得到k比特的第五校验数据;以及第五拼接单元,将所述信息码数据与所述第五校验数据进行拼接,得到所述n比特的RS编码数据。
例如,根据本公开的实施例提供的多矩阵编码装置,其中,所述存储器是DDR存储器。
例如,根据本公开的实施例提供的多矩阵编码装置,其中,还包括写入单元,用于将所述RS编码数据写入到DDR存储器中,其中,所述DDR存储器是DDR5存储器,其中所述DDR5存储器包括8个存储数据芯片,用于存储所述信息码数据,以及2个校验数据芯片,用于存储所述校验数据,每个芯片的数据位宽为4比特。
例如,根据本公开的实施例提供的多矩阵纠错装置,其中,用于当存储器中所存储的RS编码数据的信息码数据发生错误时,对发生错误的所述信息码数据进行纠错,所述多矩阵纠错装置包括:读取单元,用于读取存储器中存储的发生错误的RS编码数据,其中所述RS编码数据包括n比特,其中前r比特为待纠错的信息码数据,其包括h个信息码元,每个信息码元的长度是t比特,后k比特为读取的校验码数据;以及纠错单元,用于基于预先设定的多个RS校验矩阵,对所述RS编码数据进行纠错以获得纠错后的信息码数据,所述纠错后的信息码数据包括r比特,其中n=r+k,r,t,h,n和k为正整数。
例如,根据本公开的实施例提供的多矩阵纠错装置,用于当存储器中所存储的RS编码数据的一个信息码元发生错误时,对错误的信息码元进行纠错,其中,所述纠错单元包括:搜索单元,基于所述待纠错的信息码数据,得到第一数量的搜索数据,其中,所述第一数量的搜索数据中的每一个是r比特的数据,包括h个信息码元,每个信息码元的长度是t比特;搜索校验数据生成单元,基于所述预先设定的多个RS校验矩阵,对所述第一数量的搜索数据中的每一个执行多矩阵编码方法,得到与所述第一数量的搜索数据相对应的第一数量的中间搜索校验数据和第一数量的最终搜索校验数据,其中所述中间校验数据和最终校验数据的长度是k比特;比较单元,将所述第一数量的最终搜索校验数据中的每一个与所述读取的校验数据进行比较;第一信息码确定单元,当所述第一数量的最终搜索校验数据中只有一个最终搜索校验数据与所述读取的校验数据相同时,将与所述一个最终搜索校验数据相对应的搜索数据确定为纠错后的信息码数据;以及RS定位单元,当所述第一数量的最终搜索校验数据中有多于一个的最终搜索校验数据与所述读取的校验数据相同时,基于RS定位算法来确定纠错后的信息码数据,其中所述多于一个的最终搜索校验数据的数量为第二数量。
例如,根据本公开的实施例提供的多矩阵纠错装置,其中,所述搜索单元基于所述信息码数据,得到第一数量的搜索数据包括:依次对于所述信息码数据的h个信息码元中的每一个信息码元执行替换操作,包括:依次用从0开始递增到2t-1结束的2t个t比特的二进制数据来替换所述信息码元,同时保持所述信息码数据中的其他(h-1)个信息码元的数据不改变,以得到2t个搜索数据;在h个信息码元的替换操作完成后得到h×2t个搜索数据,作为所述第一数量的搜索数据。
例如,根据本公开的实施例提供的多矩阵纠错装置,其中,所述预先设定的多个RS校验矩阵包括第一RS校验矩阵和第二RS校验矩阵,所述第一RS校验矩阵为r行k列的矩阵,所述第二RS校验矩阵为(r+k)行和k列的矩阵,并且所述第二RS校验矩阵的第r+1行至第r+k行是一个k行和k列的单位矩阵。
例如,根据本公开的实施例提供的多矩阵纠错装置,其中,所述搜索校验数据生成单元包括:第一搜索校验数据生成单元,对于每一个搜索数据,将所述搜索数据作为1行r列的矩阵来与第一RS校验矩阵相乘,得到k比特的第一搜索校验数据,以作为与所述搜索数据相对应的中间搜索校验数据;第一搜索数据拼接单元,将所述搜索数据与所述第一搜索校验数据进行拼接,得到(r+k)比特的第一搜索编码数据;以及第二搜索校验数据生成单元,将所述第一搜索编码数据作为1行(r+k)列的矩阵来与第二RS校验矩阵相乘,得到k比特的第二搜索校验数据,以作为与所述校验数据相对应的最终搜索校验数据。
例如,根据本公开的实施例提供的多矩阵纠错装置,其中,所述RS定位单元包括:第一位置确定单元,基于所述搜索数据、与所述搜索数据相对应的中间搜索校验数据以及第一RS校验矩阵,通过RS定位算法来确定所述待纠错的信息码数据的第一位置的信息码元出现了误码;第二位置确定单元,确定所述搜索数据在第二位置的信息码元上与所述待纠错的信息码数据不相同;位置判断单元,判断所述第一位置与所述第二位置是否相同;以及第二信息码确定单元,当所述第一位置与所述第二位置相同时,将所述搜索数据确定为纠错后的信息码数据,否则,则排除所述搜索数据。
例如,根据本公开的实施例提供的多矩阵纠错装置,其中,所述第一位置确定单元包括:第六拼接单元,将所述待纠错的信息码数据与所述中间搜索校验数据进行拼接,以得到长度为(r+k)比特的待纠错的RS编码数据;
矩阵拼接单元,将所述第一RS校验矩阵与一个k行k列单位矩阵进行拼接,以得到(r+k)行k列的第六RS校验矩阵;伴随式数据生成单元,将所述待纠错的RS编码数据数据作为1行(r+k)列的矩阵与所述第六RS校验矩阵的每一列相乘,以得到k个伴随式数据;误码位置确定单元,对于所述待纠错的信息码数据的h个信息码元中的每一个信息码元的位置i,基于与所述位置i相对应的所述k个伴随式数据之间的相互关系,将相应的k个伴随式数据进行组合异或再相与,以确定所述位置i处的信息码元是否出现误码,其中i=1,2,3…,h。
例如,根据本公开的实施例提供的多矩阵纠错装置,其中,所述预先设定的多个RS校验矩阵包括第三RS校验矩阵、第四RS校验矩阵和第五RS校验矩阵,所述第三RS校验矩阵为r行k列的矩阵,所述第四RS校验矩阵为(r+k)行和k列的矩阵,所述第五RS校验矩阵为(r+k)行和k列的矩阵,并且所述第四RS校验矩阵和所述第五RS校验矩阵的第r+1行至第r+k行是一个k行和k列的单位矩阵。
例如,根据本公开的实施例提供的多矩阵纠错装置,其中,所述搜索校验数据生成单元包括:第三搜索校验数据生成单元,对于每一个搜索数据,将所述搜索数据作为1行r列的矩阵来与第三RS校验矩阵相乘,得到k比特的第三搜索校验数据,以作为与所述搜索数据相对应的中间搜索校验数据;第三搜索拼接单元,将所述搜索数据与所述第三搜索校验数据进行拼接,得到(r+k)比特的第三搜索编码数据;第四搜索校验数据生成单元,将所述搜索数据与所述第四搜索校验数据进行拼接,得到(r+k)比特的第四搜索编码数据;第四搜索拼接单元,将所述搜索数据与所述第四搜索校验数据进行拼接,得到(r+k)比特的第四搜索编码数据;以及第五搜索校验数据生成单元,将所述第四搜索编码数据作为1行(r+k)列的矩阵来与第五RS校验矩阵相乘,得到k比特的第五搜索校验数据,以作为与所述搜索数据相对应的最终搜索校验数据。
例如,根据本公开的实施例提供的多矩阵纠错装置,其中,所述RS定位单元包括:第一位置确定单元,基于所述搜索数据、与所述搜索数据相对应的中间搜索校验数据以及第三RS校验矩阵,通过RS定位算法来确定所述待纠错的信息码数据的第一位置的信息码元出现了误码;第二位置确定单元,确定所述搜索数据在第二位置的信息码元上与所述待纠错的信息码数据不相同;位置判断单元,判断所述第一位置与所述第二位置是否相同;以及第二信息码确定单元,当所述第一位置与所述第二位置相同时,将所述搜索数据确定为纠错后的信息码数据,否则,则排除所述搜索数据。
例如,根据本公开的实施例提供的多矩阵纠错装置,其中,所述第一位置确定单元包括:第六拼接单元,将所述待纠错的信息码数据与所述中间搜索校验数据进行拼接,以得到长度为(r+k)比特的待纠错的RS编码数据;矩阵拼接单元,将所述第三RS校验矩阵与一个k行k列单位矩阵进行拼接,以得到(r+k)行k列的第七RS校验矩阵;伴随式数据生成单元,将所述待纠错的RS编码数据数据作为1行(r+k)列的矩阵与所述第六RS校验矩阵的每一列相乘,以得到k个伴随式数据;误码位置确定单元,对于所述待纠错的信息码数据的h个信息码元中的每一个信息码元的位置i,基于与所述位置i相对应的所述k个伴随式数据之间的相互关系,将相应的k个伴随式数据进行组合异或再相与,以确定所述位置i处的信息码元是否出现误码,其中i=1,2,3…,h。
例如,根据本公开的实施例提供的多矩阵纠错装置,其中,所述DDR存储器是DDR5存储器,其中所述DDR5存储器包括8个存储数据芯片,用于存储信息码数据以及2个校验数据芯片,用于存储校验数据,每个芯片的数据位宽为4比特。
例如,根据本公开的实施例提供的多矩阵纠错装置,其中,所述r为32,所述k为6或7中的任意一个。
本公开的再方面提供了一种计算机设备,包括存储器和处理器,其中,所述存储器上存储有处理器可读的程序代码,当处理器执行所述程序代码时,执行执行上述编码方法和纠错方法。
本公开的还一方面提供了一种计算机可读存储介质,其上存储有指令,所述指令在被处理器执行时,使得所述处理器执行上述编码方法和纠错方法。
附图说明
图1示出了示出了根据本公开实施例的基于多矩阵RS编码算法的流程图。
图2A-图2B示出了基于预先设定的多个RS校验矩阵对所述信息码数据执行里德所罗门RS编码处理,得到n比特的RS编码数据的具体流程图。
图3示意性地示出了根据本公开实施例的基于的多矩阵编码算法。
图4示出了根据公开实施例的一种多矩阵纠错方法的流程图.
图5详细描述基于预先设定的多个RS校验矩阵,对所述RS编码数据进行纠错以获得纠错后的信息码数据的具体步骤。
图6示出了执行数据搜索的示意图。
图7对所述第一数量的搜索数据中的每一个执行多矩阵编码方法的示意图。
图8详细描述了基于RS定位算法来确定纠错后的信息码数据的步骤。
图9示出了对所读取的信息码数据中的错误信息码元进行定位的步骤。
图10详细描述基于中间校验数据来确定所读取的信息码数据中错误信息码元的位置的步骤。
图11示出了根据本公开实施例的多矩阵纠错方法的示意图。
图12示出了根据本公开实施例的多矩阵编码装置的示意性框图。
图13A和图13B示意性地示出了根据本公开实施例的编码单元的示意性框图。
图14示出了根据本公开实施例的多矩阵编纠错装置的示意性框图。
图15示出了根据本公开实施例的定位单元的示意性框图。
图16示出了示出了根据本公开实施例的第一位置确定单元的示意性框图。
图17示出了根据本公开另一实施例的多矩阵编码和纠错设备的示意性框图。
图18示意性地示出了实现本公开实施例的方法或装置的电子设备的示意性架构;
图19示出了根据本公开的实施例的存储介质的示意图。
具体实施方式
下面将结合附图对本申请实施例中的技术方案进行清楚、完整地描述,显而易见地,所描述的实施例仅仅是本申请的部分实施例,而不是全部的实施例。基于本申请实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,也属于本申请保护的范围。
本说明书中使用的术语是考虑到关于本公开的功能而在本领域中当前广泛使用的那些通用术语,但是这些术语可以根据本领域普通技术人员的意图、先例或本领域新技术而变化。此外,特定术语可以由申请人选择,并且在这种情况下,其详细含义将在本公开的详细描述中描述。因此,说明书中使用的术语不应理解为简单的名称,而是基于术语的含义和本公开的总体描述。
虽然本申请对根据本申请的实施例的系统中的某些模块做出了各种引用,然而,任何数量的不同模块可以被使用并运行在用户终端和/或服务器上。所述模块仅是说明性的,并且所述系统和方法的不同方面可以使用不同模块。
本申请中使用了流程图来说明根据本申请的实施例的系统所执行的操作。应当理解的是,前面或下面操作不一定按照顺序来精确地执行。相反,根据需要,可以按照倒序或同时处理各种步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
里德-所罗门(Reed-Solomon,RS)纠错码是目前最有效且应用较广的差错控制编码方式。RS码可以纠正随机错误,也可以纠正突发错误与存储错误,已经广泛应用于卫星通信、数字电视、闪存(Nand Flash)与DDR内存等领域。RS码是一种多元循环移位(BCH)码,定义在伽罗华(Galois)有限域GF(2m)上,m为一个信息码元包含的二进制序列的位数。RS码可以表示为RS(n,k),其中:n表示码字长度,n=2m-1;k表示信息长度,k=n-2t;校验码长度2t=n-k;最小码距d=2t+1,最多能纠正t比特的错误数据。
在数字信息写入DDR(Double Data Rate,双倍数据速率)存储器之前,可以采用RS编码电路对信息码进行编码,在读取DDR存储器中的数字信息时,对RS编码数据进行对应的RS译码和纠错,以实现对DDR存储器中的数字信息进行误码检测与纠正。例如,对于现阶段新一代的DDR存储器DDR5来说,DDR5的每个DIMM提供两个独立的32位数据通道(如果考虑ECC因素,则为40位),以包括x4芯片的DDR5存储器为例(一个x4的芯片位宽为4),DDR存储器的一个通道包含了8个数据芯片与2个校验芯片。
在传统的RS码RS(n,k)中,校验码长度2t=n-k,最小码距d=2t+1,最多能纠正t比特的错误数据。例如,要纠正DDR5存储器的一个数据芯片中4比特的错误,至少需要2×4=8比特的冗余位宽。也就是说,当DDR5存储器的一个数据芯片出现错误时(一个数据芯片的位宽为x4),需要将2个校验芯片中的总共8比特的数据全部使用完,才能实现纠正一个数据芯片中的错误。
本发明提供了一种改进的RS编码方法、纠错方法、以及相关装置,对于32比特的数据位宽的DDR存储器,在不降低纠错能力的条件下,只需要使用6比特或7比特的冗余位宽便可以纠正一个x4芯片的数据。使得多出的比特数量可以存储其他关键数据,提供了扩展DDR存储空间的可行性。
为使本领域技术人员更好地理解和实现本发明的实施例,以下参照附图,通过几个示例或实施例对本发明实施例提供的编码及纠错的方案分别进行详细介绍。可选地,适用本发明实施例方案的DDR存储器例如可以是DDR5存储器。如下面所描述的,在不相互抵触的情况下这些具体示例或实施例中不同特征可以相互组合,从而得到新的示例或实施例,这些新的示例或实施例也都属于本公开保护的范围。
本公开的基于多矩阵的RS编码方法,使得可以在不降低纠错能力的条件下,减少冗余位宽的使用,从而带来增加额外数据的存储空间。
首先介绍本发明实施例所采用的编码过程。参照图1,示出了根据本公开实施例的基于多矩阵RS编码算法的流程图。
在S101,接收要写入存储器的信息码数据,所述信息码数据包括r比特。
根据本公开的实施例,接收的信息码数据可以为从其他装置传输来的用于存储在DDR存储器中的数据信息。
例如,这里的DDR存储器可以是DDR5存储器,其一个通道包括8个数据芯片和2个校验芯片,一个芯片包括4比特的位宽,从而包括32比特的数据位和8比特的校验位。例如,这里所接收是信息码数据可以是32比特的二进制数据,其包括8个信息码元,每个信息码元用于存储在一个数据芯片中。应当理解,这里的DDR5存储器只是示例性的,根据本公开实施例的方法还可以应用于任何合适的DDR存储器。
在S102,基于预先设定的多个RS校验矩阵对所述信息码数据执行里德所罗门RS编码处理,得到n比特的RS编码数据,其中,所述n比特的RS编码数据的前r比特是所述信息码数据,后k比特是校验数据,并且n=r+k,r,t,h,n和k为正整数。
在传统的RS纠错算法中,要纠正t比特的错误数据,至少需要2t比特的冗余位。例如,要纠正DDR5存储器的一个数据芯片中4比特的错误,至少需要2×4=8比特的冗余位宽。因此,一般而言,对于要存储到DDR5中的信息码数据,当利用传统的RS纠错算法来进行编码时,需要RS校验矩阵的列数至少为8,以生成至少8位的校验数据。
例如,对于DDR5存储器,本公开实施例的RS编码方法通过利用多个列数少于8列的RS校验矩阵来对要存入DDR5编码器的信息码数据进行多矩阵的RS编码,以构造出少于8比特的冗余位,使得可以以较少的冗余信息达到同样的纠错效果。
例如,预先设定的多个RS校验矩阵可以利用从传统的8列的RS纠错矩阵中任意选取的6列或7列的多个RS校验子矩阵,通过数学建模的方法对所选取的多个子矩阵进行反复调整而得到。例如,所述多个RS校验子矩阵可以是两个RS校验矩阵,也可以是三个RS校验矩阵。例如,数学建模的方法可以是分别基于每个RS校验子矩阵对信息码数据执行相应的RS编码和纠错算法,对相应的子矩阵进行相应调整。随后再基于调整后的RS子矩阵进行本公开实施例的多矩阵编码和多矩阵纠错方法,当多矩阵纠错算法不能得到唯一的译码数据时,再对两个RS子矩阵进行调整,如此反复迭代,直到可以基于该多个RS子矩阵可以得到唯一的正确译码数据。应当理解,这里确定RS校验子矩阵可以采取其他方式来确定,只要基于所确定的基于多个RS矩阵编码的信息码数据在存储器中发生错误时,能够基于本公开实施例的基于该多个矩阵的纠错方法唯一地确定出纠错后的正确数据。在此不做过多赘述。
所得到的RS编码数据可以被存储到DDR存储器中,用于相关设备读取以进行后续的处理。
例如,根据本公开实施例的多矩阵编码方法还可以包括步骤S103,将所述RS编码数据写入到DDR存储器中。
例如,以x4芯片(chip)的DDR5存储器为例,包含8个数据芯片和4个校验芯片,每一个芯片数据位宽为4比特。可以将所得到的RS编码数据的前r比特的信息码数据存储到DDR5的8个数据芯片中,将后k比特的第二校验码数据存储到DDR5的2个校验芯片中。由于DDR5的两个校验芯片共有8比特的位宽,而第二校验码数据为6比特或7比特,因此多出的1比特或2比特可以用来存储其他关键信息,提高了DDR5的存储效率,并提供更多应用的可能。应当理解,这里的DDR5存储器只是示例性的,根据本公开实施例的方法还可以应用于任何合适的DDR存储器。
以下参考图2A-2B示出上述步骤S102中基于预先设定的多个RS校验矩阵对所述信息码数据执行里德所罗门RS编码处理,得到n比特的RS编码数据的具体流程图。
步骤S201A,将所述信息码数据作为1行r列的矩阵来与第一RS校验矩阵相乘,得到k比特的第一校验数据。
具体而言,例如,对于码字长度为r的信息码数据Dwr,可以表示为:Dwr=[Dwr1,Dwr2,Dwr3,…,Dwrr],其中Dwri表示第i个信息比特。例如,对于要写入DDR5的信息码数据,这里的r可以是32。
设第一RS校验矩阵为H1,如下所示,其包括r行k列的数据。
将信息码数据Dwr作为1行r列的矩阵,与第一RS校验矩阵H1相乘,得到k比特的第一校验数据ChckA,ChckA=Dwr*H1,可以表示为:CheckA=[CheckA1,CheckA2,CheckA3,…,CheckAj,…,CheckAk],其中,CheckAj表示第j个校验比特。例如,对于DDR5存储器,根据本公开的实施例的编码方法可以构造出小于8比特的校验数据,例如,这里的k可以是等于6,也可以是7。
经过第一个RS编码运算得到第一校验数据以后,并不会将该第一校验数据直接作为最终校验数据写入DDR存储器中。
在步骤S202A中,将所述信息码数据与所述第一校验数据进行拼接,得到(r+k)比特的第一编码数据。具体地,所得到的第一编码数据可以是C1=[Dwr,Check]。
随后,利用第二RS校验矩阵对拼接的第一编码数据做进一步的编码。如在步骤S203A,将所述第一编码数据作为1行(r+k)列的矩阵来与第二RS校验矩阵相乘,得到k比特的第二编码数据。
具体地,设第二RS校验矩阵为H2,如下所示,其包括(r+k)行k列的数据。应当注意,通常情况下,H2矩阵前r行k列与H1的前r行k列不相同。
实际上,H2矩阵用于对在步骤S202A中得到的第一编码数据C1进行进一步的RS编码,因此,这里的H2的行数等于第一编码数据C1的列数,H2的列数等于k。根据本公开的具体实施例,H2的最后k行k列是一个单位矩阵。
将第一编码数据C1作为1行(r+k)列的矩阵,与第二RS校验矩阵H2相乘,便可得到k比特的第二编码数据CheckB=C1*H2,可以表示为:CheckB=[CheckB1,CheckB2,CheckB3,…,CheckBj,…,CheckBk],其中,CheckBj表示第j个校验比特。
所得到的第二编码数据可以作为最终的校验矩阵,并且在步骤S204A中,将所述信息码数据与所述第二编码数据进行拼接,得到第二编码数据,以作为所述RS编码数据。具体地,所得到RS编码数据可以是C2=[Dwr,CheckB],其前r比特的数据为所接收的信息码数据Dwr,后k比特为第二编码数据CheckB。
应当理解,本公开的实施例还可以利用三个RS校验矩阵来对要写入DDR的信息码数据进行多矩阵编码。
例如,如图2B所示,示出了基于三个RS校验矩阵来对将要写入DDR存储器的信息码数据进行RS编码的流程图。
如图2B所示,这三个RS校验矩阵依次是第三RS校验矩阵H3、第四RS校验矩阵H4和第五RS校验矩阵H5。这里的H3与上述H1尺寸相同,H4及H5和H2的尺寸相同,例如,H3包括r行k列的数据,H4和H5包括(r+k)行k列的数据,并且其最后k行k列也是一个单位矩阵。可以理解,这里的第三和第四RS矩阵可以等于第一和第二RS矩阵,也可以是完全不同的矩阵。
在步骤S201B,将所述信息码数据作为1行r列的矩阵来与第三RS校验矩阵相乘,得到k比特的第三校验数据。
在步骤S202B,将所述信息码数据与所述第三校验数据进行拼接,得到(r+k)比特的第三编码数据。
在步骤S203B,将所述第三编码数据作为1行(r+k)列的矩阵来与第四RS校验矩阵相乘,得到k比特的第四校验数据。
在步骤S204B,将所述信息码数据与所述第四校验数据进行拼接,得到(r+k)比特的第四编码数据。
步骤S201B至S204B的步骤与图2A中的步骤S201A至S204A基本相同,在此不做赘述。
所不同的是,图2B中还包括步骤S205B和步骤S206B,这两个步骤表示在基于前两个RS校验矩阵(如图2B所示的第三RS校验矩阵和第四RS校验矩阵)来得到第四校验数据并将其与所接收的原始信息码数据进行拼接以得到第四编码数据以后,并不会直接将该拼接后的数据作为最终编码的RS数据,而是基于第五RS校验矩阵H5继续对该拼接的第四编码数据进行RS编码。
在步骤S205B,将所述第四编码数据作为1行(r+k)列的矩阵来与第五RS校验矩阵相乘,得到k比特的第五校验数据。
在步骤S206,将所述信息码数据与所述第五校验数据进行拼接,得到所述n比特的RS编码数据。
图3以两个矩阵为例,示意性地示出了根据本公开实施例的基于的多矩阵编码算法。
如图3所示,接收到r比特的要写入存储器的信息码数据(如32比特的数据)时,先基于第一RS矩阵得到k比特(例如在图3中示出为6比特)的校验数据CheckA,CheckA并不会写入到DDR存储器中,而是与写入的数据拼接,再经第二RS矩阵,得到CheckB作为最终的校验数据。为了简略起见,在此略去三个RS校验矩阵的详细描述。
采用本公开实施例的编码方案,利用多个RS校验矩阵来对所接收的信息码数据进行编码,可以以较少的冗余数据位宽来实现同样的纠错能力,从而增加额外数据的存储空间。
本公开实施例还提供了一种纠错方法,可以在DDR存储器的一个数据芯片中的1至4个比特中的任意一个或多个出现错误时,对该出现错误的芯片进行纠正。
参考图4,示出了根据公开实施例的一种多矩阵纠错方法的流程图。
步骤S401,读取存储器中存储的发生错误的RS编码数据,其中所述RS编码数据包括n比特,其中前r比特为待纠错的信息码数据,其包括h个信息码元,每个信息码元的长度是t比特,后k比特为读取的校验码数据。
具体地,所读取的RS编码数据可以表示为C3=[Drd,Check]。其中Drd表示所读取的信息码数据,其具有r比特,Check表示读取的校验数据,其具有括k比特。
例如,这里的存储器可以是DDR存储器,所述r比特的信息码数据存储在DDR存储器中的数据芯片中,所述k比特的信息码数据存储在DDR存储器的校验芯片中。例如,所述数据芯片和校验芯片的存储位宽为t比特,将从每个数据芯片中读取出来的每t个比特作为一个信息码元,一共有h个信息码元。
例如,这里的DDR存储器可以是DDR5存储器,其包括8个存储数据芯片,用于存储信息码数据,以及2个校验数据芯片,用于存储校验数据,每个芯片的数据位宽为4比特。因此所读取的数据信息码数据的总长度为32比特,其中从每个数据芯片中读取出来的每4个比特作为一个信息码元,一共有8个信息码元。校验数据的位宽k为6或7比特,是从两个校验芯片内读取的,两个校验芯片的数据总位宽是8比特,多余的一个或两个比特可以用来存储其他关键信息,从而提供了扩展DDR存储空间的可行性。
随后,在步骤S402,基于预先设定的多个RS校验矩阵,对所述RS编码数据进行纠错以获得纠错后的信息码数据,所述纠错后的信息码数据包括r比特,其中n=r+k。例如,纠错后的信息码数据是前述的信息码数据Dwr。
以下结合图5详细描述上述步骤S402中基于预先设定的多个RS校验矩阵,对所述RS编码数据进行纠错以获得纠错后的信息码数据的具体步骤。
这里以预先设定的多个RS校验矩阵包括两个RS校验矩阵为例来进行示例性说明,应当理解,当预先设定的多个RS校验矩阵是三个RS校验矩阵时具有相似的纠错过程,在此不做单独的说明。
在步骤S501,基于所述待纠错的信息码数据,得到第一数量的搜索数据,其中,所述第一数量的搜索数据中的每一个是r比特的数据,包括h个信息码元,每个信息码元的长度是t比特。
如上所述,本公开实施例提供的多矩阵纠错方法,可以在DDR存储器的一个数据芯片的1至4个比特中的任意一个或多个出现错误时,对该出现错误的芯片进行纠正。根据本领域技术人员应当理解的,通常默认校验芯片中的数据没有发生错误。
根据本公开实施例的多矩阵纠错方法不采用传统的RS解码方法中基于伴随式的逆向解码方式,而是采取扫描搜索的方法,先扫描出所有可能的候选的信息码数据,再基于两个矩阵对所有候选的信息码数据进行正向编码来确定出正确的数据。
具体地,例如,对于DDR5存储器,所读取的信息码数据包括32比特,其中每4位比特为一个信息码元,读取自一个数据芯片。令所读取的信息码数据Drd=[D1,D2,D3,D4,D5,D6,D7,D8],假设只有一个芯片数据芯片发生错误,则表示Drd中只有一个信息码元的数据与所存入的正确的信息码数据不一致。
例如,图6示出了执行数据搜索的示意图。如图6所示,假设第一个数据芯片中的数据D1发生错误,则D2-D8的数据为正确的数据。D1具有4比特,则发生错误前,D1可以包括从0000到1111的共16种情况。将这16种情况依次对D1的数据进行替换,同时保持D2至D8的数据不变,可以搜索出16个搜索数据,这些搜索数据在D1位置处的4比特发生错误时,都可能会产生和所读取的Drd一样的数据。同理,当错误发生在D2-D8中的任意一个的情况,也会相应的搜索出16个搜索数据。对于总共8个数据芯片的DDR5存储器,一共可以搜索出16x8=128个搜索数据。应当理解,这128个中具有8个数据与所读取的信息码数据一致,而其他的120个搜索数据中的每一个与所读取的信息码数据Drd都只有一个相应的信息码元数据不一致。也就是说,当这些不一致的搜索数据中的每一个中的一个信息码元发生错误时,都可能产生Drd。
在步骤S502,基于所述预先设定的多个RS校验矩阵,对所述第一数量的搜索数据中的每一个执行多矩阵编码方法,得到与所述第一数量的搜索数据相对应的第一数量的中间搜索校验数据和第一数量的最终搜索校验数据,其中所述中间校验数据和最终校验数据的长度是k比特。
图7示出了对所述第一数量的搜索数据中的每一个执行多矩阵编码方法的示意图。如图7所示,所得到的第一数量的搜索数据为Dser[1]-Dser[w],w表示搜索出的搜索数据的数量(例如第一数量),Dser[i]表示第i个搜索数据。
如上所述,这些搜索数据Dser[1]-Dser[w]中,只有一个是正确的信息码数据,其中有8个数据与所读取的信息码数据Drd完全一致,其余与所读取的发生错误的信息码数据Drd在一个信息码元的位置处的数据不一致。
由于所读取的校验数据是基于正确的信息码数据经过上述参考图1至图3所描述的根据本公开实施例的多矩阵编码方法所得到的,因此,可以对w个搜索数据Dser[1]-Dser[w]中的每一个执行同样的根据本公开实施例的多矩阵编码方法。例如,如图7所示,w个搜索数据Dser基于第一RS校验矩阵H1得到w个中间校验数据CheckA1[1]-CheckA1[w],CheckA1[i]表示第i个中间校验数据。将CheckA1的数据与相应的搜索进行拼接后,再基于第二校验矩阵H2得到w个相对应的校验数据CheckB1[1]-CheckB1[w],CheckB1[i]表示第i个校验数据。在这里将基于所述搜索数据执行多矩阵编码方法所得到的校验数据称为最终搜索校验数据。如上所述,这些最终搜索校验数据的位数也是k比特。应当理解,当多搜索矩阵是3个RS校验矩阵的过程与此相似,在此不做赘述。
在步骤S503,将所述第一数量的最终搜索校验数据中的每一个与所述读取的校验数据进行比较。
例如,这里的比较是将所述第一数量(即上述的w个)的最终搜索校验数据中的每一个与所述读取的校验数据进行逐比特的比较。例如,如图7所示,将w个CheckB1中的每一个与所读取的校验数据进行逐比特的比较。
在S504,当所述第一数量的最终搜索校验数据中只有一个最终搜索校验数据与所述读取的校验数据相同时,将与所述一个最终搜索校验数据相对应的搜索数据确定为纠错后的信息码数据。
如本领域技术人员应当理解的那样,当w个搜索数据Dser[w]中只有唯一的一个搜索数据的相应的校验数据与所读取的校验数据一致时,则可以判断该唯一的一个搜索数据就是正确的信息码数据。
然而,有些情况下,可能存在多于一个(以下可表示为第二数量q)的搜索数据,使得具有相对应的多于一个的最终搜索校验数据与所读取的校验数据相同。例如,这些多于一个的搜索数据的最终搜索校验数据可以表示为Check_s[q],q代表第一数量的搜索数据Dser中有q搜索数据满足基于本公开实施例的多矩阵编码方法得到的最终搜索校验数据与所读取的校验数据相同。
例如,如图7所示,三个涂灰色的搜索数据Dser[2]、Dser[3]和Dser[w]的最终的校验数据CheckB1[2]、CheckB1[3]和CheckB1[w]与所读取的校验数据相同。
在步骤S505,当所述第一数量的最终搜索校验数据中有多于一个的最终搜索校验数据与所述读取的校验数据相同时,基于RS定位算法来确定纠错后的信息码数据,其中所述多于一个的最终搜索校验数据的数量为第二数量。
以下将参考图8详细描述步骤S505中基于RS定位算法来确定纠错后的信息码数据的步骤。
根据本公开的实施例,基于RS定位算法来确定纠错后的信息码数据包括对于与所述第二数量(即,q个)的最终搜索校验数据相对应的第二数量的搜索数据中的每一个搜索数据执行以下操作S801-S804。如图7所示,这里的第二数量是3,这3个搜索数据分别是CheckB1[2]、CheckB1[3]和CheckB1[w]。
在步骤S801,基于所述搜索数据、与所述搜索数据相对应的中间搜索校验数据以及第一RS校验矩阵,通过RS定位算法来确定所述待纠错的信息码数据的第一位置的信息码元出现了误码。
例如,这里的第一RS校验矩阵是多矩阵编码过程中第一个用于对信息码数据进行编码的矩阵,例如是如上所述的H1(多矩阵包括两个矩阵的情况)或H3(多矩阵包括三个矩阵的情况)。这里的中间搜索校验数据是相应的搜索数据与第一RS矩阵相乘所得到的校验矩阵,如图7中所示的中间校验数据CheckA1[2]是搜索数据Dser[2]与第一RS矩阵相乘所得到的校验矩阵CheckA1[2]。
根据本公开的实施例,正确的信息码数据存在于第二数量的搜索数据中,例如正确的数据是Dser[2]、Dser[3]或Dser[w]中的一个。因此,利用所述多矩阵中的第一个RS校验矩阵(例如上述第一RS校验矩阵和第三RS校验矩阵)进行编码所得到的第二数量的中间校验数据(例如上述CheckA1[2]和CheckA1[3])中有一个等于正确的信息码数据基于第一个RS校验矩阵得到的中间校验数据。
假设第二数量(例如q个,在图7的示例中,q=3)的中间校验数据为CheckA1_s[1]-CheckA1_s[q],从第一个中间校验数据CheckA1_s[1]开始,依次假设每个中间校验数据CheckA1_s[j](j=1,2,…,q)是正确的中间校验数据,来对Drd中的错误信息码元的位置进行定位。对Drd中的错误信息码元进行定位的步骤将在下面参考图9中进行详细描述。
步骤S802,确定所述搜索数据在第二位置的信息码元上与所述待纠错的信息码数据不相同。
根据本公开实施例,可以基于该正确的中间校验数据准确地确定所读取的信息码数据中的第一位置的信息码元发生了错误。如图9所示,基于准确的中间校验数据CheckA1[2]可以准确的确定在D2的位置处发生了误码。
需要说明的是,若中间校验数据所对应的搜索数据不是正确的信息码数据,那么基于该中间校验数据并不能准确的确定出发生错误的信息码元位置,例如,如图9所示,当基于错误的中间校验数据CheckA1[3]来对所读取的信息码数据中的误码进行定位时,将D1和D3位置处的“叉”表示将D1和D3位置处的信息码元都识别为了错误位置。
步骤S803,判断所述第一位置与所述第二位置是否相同。
如上所述,基于准确的中间校验数据CheckA1[2]可以准确的确定在D2的位置处发生了误码。而若此时该中间校验数据CheckA1[2]所对应的搜索数据刚好与所读取的信息码数据也在D2位置处的该信息码元上不一致,则说明该中间校验数据CheckA1[2]所对应的搜索数据便是正确的信息码数据,也就是说,该正确的信息码数据在第二位置D2处发生错误时,会得到错误的信息码数据Drd。
最后在步骤S804,当所述第一位置与所述第二位置相同时,将所述搜索数据确定为纠错后的信息码数据。否则,表示该中间校验数据所对应的搜索数据不是正确的信息码数据,将其排除。
以下参考附图10详细描述基于中间校验数据来确定所读取的信息码数据Drd中错误信息码元的位置。
步骤S1001,将所述信息码数据与所述中间搜索校验数据进行拼接,以得到长度为(r+k)比特的待纠错的RS编码数据。
具体地,假设读取的信息码数据为Drd={cd1,cd2,cd3,cd4,…,cdr},中间搜索校验数据是CheckA1_s[j]=chkAj1,chkAj2,chkAj3,chkAj4,chkAj5,chkAj6,则待纠错的RS编码数据可以表示为Cd={Drd,CheckA1[j]}={cd1,cd2,cd3,cd4,…,cdr,chkAj1,chkAj2,chkAj3,chkAj4,chkAj5,chkAj6}。
步骤S1002,将所述第一RS校验矩阵与一个k行k列单位矩阵进行拼接,以得到(r+k)行k列的第六RS校验矩阵。
例如,这里的第一RS校验矩阵是多矩阵编码过程中第一个用于对信息码数据进行编码的矩阵,例如是如上所述的H1(多矩阵包括两个矩阵的情况)或H3(多矩阵包括三个矩阵的情况)。
例如,拼接后的第六RS校验矩阵可以如下所示:
步骤S1003,将所述待纠错的RS编码数据数据作为1行(r+k)列的矩阵与所述第六RS校验矩阵的每一列相乘,以得到k个伴随式数据(例如,这里的k等于6):
S1=h11cd1+h12cd2+h13cd3+h14cd4+…+h1rcdr+chkAj1+0+0+0+0+0+0+0;
S2=h21cd1+h22cd2+h23cd3+h24cd4+…+h2rcdr+0+chkAj2+0+0+0+0+0+0;
S3=h31cd1+h32cd2+h33cd3+h34cd4+…+h3rcdr+0+0+chkAj3+0+0+0+0+0;
S4=h41cd1+h42cd2+h43cd3+h44cd4+…+h4rcdr+0+0+0+chkAj4+0+0+0+0;
S5=h51cd1+h52cd2+h53cd3+h54cd4+…+h5rcdr+0+0+0+0+chkAj5+0+0+0;
S6=h61cd1+h62cd2+h63cd3+h64cd4+…+h6rcdr+0+0+0+0+0+chkAj6+0+0。
步骤S1004,对于每一个信息码元的位置i,基于所述k个伴随式数据之间的相互关系,将相应的k个伴随式数据进行组合异或再相与,以确定所述位置i处的信息码元是否出现误码,其中i=1,2,3,…,h。
对于已知的校验矩阵,针对每个信息码元,其伴随式都会满足一定的相互关系。
例如,假设该第六RS校验矩阵的具体数值为如下所示:
[h11 h12 h13 h14 …]=[1 0 0 0 1 0 0 0 1 0 0 0 … 1 0 0 0 0 0 0 0];
[h21 h22 h23 h24 …]=[0 1 0 0 0 1 0 0 0 1 0 0 … 0 1 0 0 0 0 0 0];
[h31 h32 h33 h34 …]=[0 0 1 0 0 0 1 0 0 0 1 0 … 0 0 1 0 0 0 0 0];
[h41 h42 h43 h44 …]=[0 0 0 1 0 0 0 1 0 0 0 1 … 0 0 0 1 0 0 0 0];
[h51 h52 h53 h54 …]=[1 1 0 1… 0 0 0 0 1 0 0 0];
[h61 h62 h63 h64 …]=[0 1 1 0 … 0 0 0 0 0 1 0 0]。
将该第六RS校验矩阵的具体数据代入上述S伴随式中,则:
S1=c1+0+0+0+c5+0+0+0+c9+0+0+0+…+c61+0+0+0+chk1;
S2=0+c2+0+0+0+c6+0+0+0+c10+0+0+…+0+c62+0+0+chk2;
S3=0+0+c3+0+0+0+c7+0+0+0+c11+0+…+0+0+c63+0+chk3;
S4=0+0+0+c4+0+0+0+c8+0+0+0+c12+…+0+0+0+c64+chk4;
S5=c1+c2+0+c4+…+h5kck+chk5;
S6=0+c2+c3+0+…+h6kck+chk6。
对于第1个信息码元,这6个伴随式数据具有如下规律:S5=S1+S2+S4;S6=S2+S3。
也就是说,若该第一个信息码元D1的数据是正确的,则该第一个信息码元D1的4个比特的值将满足上述所有伴随式数据的关系,也就是说,对于信息码元位置D1,需满足:(S5=S1+S2+S4)&&(S8=S2+S3),若不满足,则说明该信息码元位置D1处的数据出现了错误。
应当注意,上述第六RS校验矩阵的具体数值只是示例性的将前4行数据设置为4行和4列的单位矩阵,当不是单位矩阵的情况下,对于与每4个比特的信息码元相对应的四列伴随式,都将找出其中一定的相互关系。
图11示出了根据本公开实施例的多矩阵纠错方法的示意图。
如图11所示,当在数据读出时,可以读出r比特的带纠错的信息码数据和k比特的校验数据CheckB。
首先基于r比特的带纠错的信息码数据Drd来进行内存芯片的搜索,即基于每个码元进行搜索。例如,对于DDR5,共有8个x4的内存芯片,共需要16X8=128次完成全部搜索,搜索数据表示为Dser,每个搜索数据具有r比特。
使用搜索后的Dser数据中的每一个,分别经过RS矩阵一与RS矩阵二进行编码运算,得到6比特的校验数据,这里称为搜索校验数据CheckB1。
将基于每个搜索数据所得到的搜索校验数据CheckB1与所读取的校验数据CheckB进行比较,若相同的话,记录下当前的Dser数据,在全部搜索完成后,可能会不只一个搜索数据,其经过多矩阵校验数据以后得到的搜索校验数据与所读取的校验数据相同。如果全部搜索完成只有唯一一个Dser数据生成的搜索校验数据CheckB1数据与所读取的校验数据相同,那就该输出Dser数据作为纠正后的正确数据。如果不唯一,对所记录的多个搜索校验数据经RS矩阵一编码计算出的相应的校验数据,这里称其为中间校验数据CheckA1_s[q](q代表存在q个Dser数据满足搜索校验数据与所读取的校验数据相同)。
分别使用CheckA1_s[q]与Drd进行RS译码及定位运算,确认出错位置,判断搜索数据Dser是否与待译码数据Drd的差异位置相同。如果相同即为正确结果。如果不同则排除。如此,经过两轮比较,则可以得到唯一的纠正正确数据。
根据本公开实施例的多矩阵纠错方法,在不降低纠错能力的条件下,对于32比特数据位宽的DDR存储器,只需要使用6比特或7比特的冗余位宽便可以纠正一个x4芯片的数据。使得多出的2比特或1比特的位宽可以存储其他关键数据,提供了扩展DDR存储空间的可行性。
本公开的实施例还提供的相应的多矩阵编码装置。图12示出了根据本公开实施例的多矩阵编码装置的示意性框图。
如图12所示,根据本公开实施例的多矩阵编码装置1200可以包括接收单元1201和编码单元1202。其中接收单元1201被配置为接收要写入存储器的信息码数据,该信息码数据包括r比特;编码单元1202被配置为基于预先设定的多个RS校验矩阵对该信息码数据执行里德所罗门RS编码处理,得到n比特的RS编码数据,其中,n比特的RS编码数据的前r比特是该信息码数据,后k比特是校验数据,并且n=r+k,r,n和k为正整数。
例如,预先设定的多个RS校验矩阵可以包括第一RS校验矩阵和第二RS校验矩阵,第一RS校验矩阵为r行k列的矩阵,第二RS校验矩阵为(r+k)行和k列的矩阵,并且第二RS校验矩阵的第r+1行至第r+k行是一个k行和k列的单位矩阵。例如,参考图13A,编码单元1202可以包括:第一校验数据生成单元1301A,将信息码数据作为1行r列的矩阵来与第一RS校验矩阵相乘,得到k比特的第一校验数据;第一拼接单元1302A,将信息码数据与所述第一校验数据进行拼接,得到(r+k)比特的第一编码数据;以及第二校验数据生成单元1303A,将第一编码数据作为1行(r+k)列的矩阵来与第二RS校验矩阵相乘,得到k比特的第二编码数据;第二拼接单元1304A,将信息码数据与第二编码数据进行拼接,得到所述n比特的RS编码数据。
例如,预先设定的多个RS校验矩阵包括第三RS校验矩阵、第四RS校验矩阵和第五RS校验矩阵,第三RS校验矩阵为r行k列的矩阵,第四RS校验矩阵为(r+k)行和k列的矩阵,第五RS校验矩阵为(r+k)行和k列的矩阵,并且第四RS校验矩阵和第五RS校验矩阵的第r+1行至第r+k行是一个k行和k列的单位矩阵。例如,参考图13B,编码单元1202可以包括:第三校验数据生成单元1301B,将信息码数据作为1行r列的矩阵来与第三RS校验矩阵相乘,得到k比特的第三校验数据;第三拼接单元1302B,将信息码数据与第三校验数据进行拼接,得到(r+k)比特的第三编码数据;第四校验数据生成单元1303B,将第三编码数据作为1行(r+k)列的矩阵来与第四RS校验矩阵相乘,得到k比特的第四校验数据;第四拼接单元1304B,将信息码数据与第四校验数据进行拼接,得到(r+k)比特的第四编码数据;以及第五校验数据生成单元1305B,将第四编码数据作为1行(r+k)列的矩阵来与第五RS校验矩阵相乘,得到k比特的第五校验数据;以及第五拼接单元1306B,将信息码数据与第五校验数据进行拼接,得到所述n比特的RS编码数据。
根据本公开的实施例,这里的第一、第二、第三、第四和第五校验数据生成单元和第一、第二、第三、第四和第五拼接单元的顺序只是进行区分,而不是对数量和顺序的限制。例如可以只具有一个校验数据生成单元和一个拼接单元,例如,在第一拼接单元生成第一编码数据之后,可以将所生成的第一编码数据重新传送给第一校验数据生成单元以生成第二校验数据。在此不做赘述。
例如,根据本公开实施例的多矩阵编码装置1200还可以包括写入单元1203,用于将所述RS编码数据写入到DDR存储器中,其中,所述DDR存储器是DDR5存储器,其中所述DDR5存储器包括8个存储数据芯片,用于存储所述信息码数据,以及2个校验数据芯片,用于存储所述校验数据,每个芯片的数据位宽为4比特。
本公开的实施例还提供了相应的多矩阵纠错装置。图14示出了根据本公开实施例的多矩阵编纠错装置的示意性框图。
本公开的实施例的多矩阵纠错装置用于当存储器中所存储的RS编码数据的信息码数据发生错误时,对发生错误的所述信息码数据进行纠错。例如图14所示,多矩阵纠错装置1400包括:读取单元1401,用于读取存储器中存储的发生错误的RS编码数据,其中所述RS编码数据包括n比特,其中前r比特为待纠错的信息码数据,其包括h个信息码元,每个信息码元的长度是t比特,后k比特为读取的校验码数据;以及纠错单元1402,用于基于预先设定的多个RS校验矩阵,对所述RS编码数据进行纠错以获得纠错后的信息码数据,所述纠错后的信息码数据包括r比特,其中n=r+k,r,t,h,n和k为正整数。
例如,纠错单元1402可以包括:搜索单元1402_1,被配置为基于待纠错的信息码数据,得到第一数量的搜索数据,其中,第一数量的搜索数据中的每一个是r比特的数据,包括h个信息码元,每个信息码元的长度是t比特,并且h个信息码元中只有一个信息码元与待纠错的信息码数据不同;搜索校验数据生成单元1402_2,被配置为基于预先设定的多个RS校验矩阵,对第一数量的搜索数据中的每一个执行多矩阵编码方法,得到与第一数量的搜索数据相对应的第一数量的中间搜索校验数据和第一数量的最终搜索校验数据,其中述中间校验数据和最终校验数据的长度是k比特;比较单元1402_3,被配置为将第一数量的最终搜索校验数据中的每一个与读取的校验数据进行比较;第一信息码确定单元1402_4,当第一数量的最终搜索校验数据中只有一个最终搜索校验数据与读取的校验数据相同时,将与一个最终搜索校验数据相对应的搜索数据确定为纠错后的信息码数据;以及RS定位单元1402_5,当第一数量的最终搜索校验数据中有多于一个的最终搜索校验数据与读取的校验数据相同时,基于RS定位算法来确定纠错后的信息码数据,其中多于一个的最终搜索校验数据的数量为第二数量。
例如,搜索单元1402_1基于所述信息码数据,得到第一数量的搜索数据包括:依次对于所述信息码数据的h个信息码元中的每一个信息码元执行替换操作,包括:依次用从0开始递增到2t-1结束的2t个t比特的二进制数据来替换所述信息码元,同时保持所述信息码数据中的其他(h-1)个信息码元的数据不改变,以得到2t个搜索数据;在h个信息码元的替换操作完成后得到h×2t个搜索数据,作为所述第一数量的搜索数据。
根据本公开实施例,所述预先设定的多个RS校验矩阵可以包括第一RS校验矩阵和第二RS校验矩阵,所述第一RS校验矩阵为r行k列的矩阵,所述第二RS校验矩阵为(r+k)行和k列的矩阵,并且所述第二RS校验矩阵的第r+1行至第r+k行是一个k行和k列的单位矩阵。例如,所述搜索校验数据生成单元1402_2可以包括:第一搜索校验数据生成单元,对于每一个搜索数据,将所述搜索数据作为1行r列的矩阵来与第一RS校验矩阵相乘,得到k比特的第一搜索校验数据,以作为与所述搜索数据相对应的中间搜索校验数据;第一搜索数据拼接单元,将所述搜索数据与所述第一搜索校验数据进行拼接,得到(r+k)比特的第一搜索编码数据;以及第二搜索校验数据生成单元,将所述第一搜索编码数据作为1行(r+k)列的矩阵来与第二RS校验矩阵相乘,得到k比特的第二搜索校验数据,以作为与所述搜索数据相对应的最终搜索校验数据。
例如,这里的搜索校验数据生成单元1402_2可以是上述编码单元1202的一部分。例如,这里的第一、第二搜索校验数据生成单元可以分别是上述第一、第二校验数据生成单元1303A、1303A。第一搜索数据拼接单元可以是上述第一拼接单元1302A。或者可以是可以实施相应功能的其他装置。
如图15示出了定位单元1402_5的示意图,例如,定位单元1402_5可以包括:第一位置确定单元1501,基于所述搜索数据、与所述搜索数据相对应的中间搜索校验数据以及第一RS校验矩阵,通过RS定位算法来确定所述待纠错的信息码数据的第一位置的信息码元出现了误码;第二位置确定单元1502,确定所述搜索数据在第二位置的信息码元上与所述待纠错的信息码数据不相同;位置判断单元1503,判断所述第一位置与所述第二位置是否相同;以及第二信息码确定单元1504,当所述第一位置与所述第二位置相同时,将所述搜索数据确定为纠错后的信息码数据,否则,则排除所述搜索数据。
例如,图16示出了第一位置确定单元的示意性框图。如图16所示,第一位置确定单元1501可以包括:第六拼接单元1501_1,将所述待纠错的信息码数据与所述中间搜索校验数据进行拼接,以得到长度为(r+k)比特的待纠错的RS编码数据;矩阵拼接单元1501_2,将所述第一RS校验矩阵与一个k行k列单位矩阵进行拼接,以得到(r+k)行k列的第六RS校验矩阵;伴随式数据生成单元1501_3,将所述待纠错的RS编码数据数据作为1行(r+k)列的矩阵与所述第六RS校验矩阵的每一列相乘,以得到k个伴随式数据;误码位置确定单元1501_4,对于所述待纠错的信息码数据的h个信息码元中的每一个信息码元的位置i,基于与所述位置i相对应的所述k个伴随式数据之间的相互关系,将相应的k个伴随式数据进行组合异或再相与,以确定所述位置i处的信息码元是否出现误码,其中i=1,2,3…,h。
这里的第六拼接单元可以是前面的第一、第二、第三、第四和第五拼接单元中的任何一个,或者可以是用于实施拼接处理的任何其他拼接单元。
根据本公开实施例,预先设定的多个RS校验矩阵包括第三RS校验矩阵、第四RS校验矩阵和第五RS校验矩阵,所述第三RS校验矩阵为r行k列的矩阵,所述第四RS校验矩阵为(r+k)行和k列的矩阵,所述第五RS校验矩阵为(r+k)行和k列的矩阵,并且所述第四RS校验矩阵和所述第五RS校验矩阵的第r+1行至第r+k行是一个k行和k列的单位矩阵。例如,搜索校验数据生成单元1402_2还可以包括:第三搜索校验数据生成单元,对于每一个搜索数据,将所述搜索数据作为1行r列的矩阵来与第三RS校验矩阵相乘,得到k比特的第三搜索校验数据,以作为与所述搜索数据相对应的中间搜索校验数据;第三搜索拼接单元,将所述搜索数据与所述第三搜索校验数据进行拼接,得到(r+k)比特的第三搜索编码数据;第四搜索校验数据生成单元,将所述搜索数据与所述第四搜索校验数据进行拼接,得到(r+k)比特的第四搜索编码数据;第四搜索拼接单元,将所述搜索数据与所述第四搜索校验数据进行拼接,得到(r+k)比特的第四搜索编码数据;以及第五搜索校验数据生成单元,将所述第四搜索编码数据作为1行(r+k)列的矩阵来与第五RS校验矩阵相乘,得到k比特的第五搜索校验数据,以作为与所述搜索数据相对应的最终搜索校验数据。
例如,这里的搜索校验数据生成单元1402_2可以是上述编码单元1202的一部分。例如,这里的第三、第四和第五搜索校验数据生成单元可以分别是上述第三、第四和第五校验数据生成单元1301B、1303B和1305B。第三和第四搜索数据拼接单元可以是上述第三拼接单元1302B和第四拼接单元1304B。或者可以是可以实施相应功能的其他装置。
例如,所述RS定位单元1402_5可以包括:第一位置确定单元,基于所述搜索数据、与所述搜索数据相对应的中间搜索校验数据以及第三RS校验矩阵,通过RS定位算法来确定所述待纠错的信息码数据的第一位置的信息码元出现了误码;第二位置确定单元,确定所述搜索数据在第二位置的信息码元上与所述待纠错的信息码数据不相同;位置判断单元,判断所述第一位置与所述第二位置是否相同;以及第二信息码确定单元,当所述第一位置与所述第二位置相同时,将所述搜索数据确定为纠错后的信息码数据,否则,则排除所述搜索数据。例如,这里的第一位置确定单元、第二位置确定单元、位置判断单元、以及第二信息码确定单元可以是上述第一位置确定单元1501、第二位置确定单元1502、位置判断单元1503、以及第二信息码确定单元1504。
例如,第一位置确定单元可以包括:第六拼接单元,将所述待纠错的信息码数据与所述中间搜索校验数据进行拼接,以得到长度为(r+k)比特的待纠错的RS编码数据;矩阵拼接单元,将所述第三RS校验矩阵与一个k行k列单位矩阵进行拼接,以得到(r+k)行k列的第七RS校验矩阵;伴随式数据生成单元,将所述待纠错的RS编码数据数据作为1行(r+k)列的矩阵与所述第六RS校验矩阵的每一列相乘,以得到k个伴随式数据;误码位置确定单元,对于所述待纠错的信息码数据的h个信息码元中的每一个信息码元的位置i,基于与所述位置i相对应的所述k个伴随式数据之间的相互关系,将相应的k个伴随式数据进行组合异或再相与,以确定所述位置i处的信息码元是否出现误码,其中i=1,2,3…,h。例如,这里的第六拼接单元、矩阵拼接单元、伴随式数据生成单元和误码位置确定单元可以是上述第六拼接单元1501_1、矩阵拼接单元1501_2、伴随式数据生成单元1501_3和误码位置确定单元1501_4。
上述各单元可以实现为固定功能电路、可编程电路或它们的组合。固定功能电路指提供特定功能并且在可以执行的操作上预设的电路。可编程电路指可以被编程以执行各种任务并且在可以执行的操作中提供灵活功能的电路。例如,可编程电路可以执行使得可编程电路以由软件或固件的指令定义的方式进行操作的软件或固件。固定功能电路可以执行软件指令(例如,以接收参数或输出参数),但固定功能电路执行的操作的类型通常是不可变的。在一些示例中,所述单元中的一个或多个可以是不同的电路块(固定功能或可编程),并且在一些示例中,所述一个或多个单元可以是集成电路。
本发明提供的多矩阵编码装置和纠错装置,对于32比特的数据位宽的DDR存储器,在不降低纠错能力的条件下,只需要使用6比特或7比特的冗余位宽便可以纠正一个x4芯片的数据。使得多出的2比特或1比特的位宽可以存储其他关键数据,提供了扩展DDR存储空间的可行性。
本公开的实施例还提供了一种用于多矩阵编码和纠错的计算机设备,图17示出了根据本公开另一实施例的多矩阵编码和纠错设备的示意性框图。例如,如图17所示,多矩阵编码和纠错设备1700可以包括一个或多个处理器1701和一个或多个存储器1702。一个或多个存储器1702中存储有计算机可执行指令,该计算机可执行指令当由一个或多个处理器1701执行时,可以执行如上所述的多矩阵编码和纠错方法。一个或多个存储器1702和一个或多个处理器1701可以通过总线系统和/或其它形式的连接机构(未示出)互连。
例如,一个或多个存储器1702和一个或多个处理器1701可以设置在单机之中,也可以设置服务器端,还可以设置在云端,以用于执行如上所述的多矩阵编码和纠错方法中的一个或多个步骤。
例如,一个或多个处理器1701可以是中央处理单元(CPU)、数字信号处理器(DSP)或者具有数据处理能力和/或程序执行能力的其它形式的处理单元,例如现场可编程门阵列(FPGA)等;例如,中央处理单元(CPU)可以为X86或ARM架构等。一个或多个处理器1701可以为通用处理器或专用处理器,可以控制多矩阵编码和纠错设备1700中的其它组件以执行期望的功能。
例如,一个或多个存储器1702可以包括一个或多个计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、闪存等。
此外,根据本申请实施例的方法或装置也可以借助于图18所示的电子设备的架构来实现。图18示意性地示出了该电子设备的架构。如图18所示,电子设备1800可以包括总线1801、一个或多个CPU 1802、只读存储器(ROM)1803、随机存取存储器(RAM)1804、连接到网络的通信端口1805、输入/输出组件1806、硬盘1807等。电子设备1800中的存储设备,例如ROM 1803或硬盘1807可以存储本申请提供的方法的处理和/或通信使用的各种数据或文件以及CPU所执行的程序指令。电子设备1800还可以包括用户界面。当然,图18所示的架构只是示例性的,在实现不同的设备时,根据实际需要,可以省略或添加图18示出的电子设备中的一个或至少两个组件。
本公开的实施例还提供了一种计算机可读存储介质。图19示出了根据本公开的实施例的存储介质的示意图1900。如图19所示,所述计算机存储介质1902上存储有计算机可执行指令1901。当所述计算机可执行指令1901由处理器运行时,可以执行参照以上附图描述的根据本公开实施例的多矩阵编码和纠错的方法。所述计算机可读存储介质包括但不限于例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。
本公开的实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行根据本公开实施例的方法。
本公开的实施例提供了多矩阵编码和解码方法、装置、电子设备和存储介质,对于32比特的数据位宽的DDR存储器,在不降低纠错能力的条件下,只需要使用6比特或7比特的冗余位宽便可以纠正一个x4芯片的数据。使得多出的2比特或1比特的位宽可以存储其他关键数据,提供了扩展DDR存储空间的可行性。
本领域技术人员能够理解,本公开所披露的内容可以出现多种变型和改进。例如,以上所描述的各种设备或组件可以通过硬件实现,也可以通过软件、固件、或者三者中的一些或全部的组合实现。
此外,虽然本公开对根据本公开的实施例的系统中的某些单元做出了各种引用,然而,任何数量的不同单元可以被使用并运行在客户端和/或服务器上。所述单元仅是说明性的,并且所述系统和方法的不同方面可以使用不同单元。
本领域普通技术人员可以理解上述方法中的全部或部分的步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本公开并不限制于任何特定形式的硬件和软件的结合。
除非另有定义,这里使用的所有术语(包括技术和科学术语)具有与本公开所属领域的普通技术人员共同理解的相同含义。还应当理解,诸如在通常字典里定义的那些术语应当被解释为具有与它们在相关技术的上下文中的含义相一致的含义,而不应用理想化或极度形式化的意义来解释,除非这里明确地这样定义。
以上是对本公开的说明,而不应被认为是对其的限制。尽管描述了本公开的若干示例性实施例,但本领域技术人员将容易地理解,在不背离本公开的新颖教学和优点的前提下可以对示例性实施例进行许多修改。因此,所有这些修改都意图包含在权利要求书所限定的本公开范围内。应当理解,上面是对本公开的说明,而不应被认为是限于所公开的特定实施例,并且对所公开的实施例以及其他实施例的修改意图包含在所附权利要求书的范围内。本公开由权利要求书及其等效物限定。
Claims (44)
1.一种多矩阵编码方法,包括:
接收要写入存储器的信息码数据,所述信息码数据包括r比特;以及
基于预先设定的多个RS校验矩阵对所述信息码数据执行里德所罗门RS编码处理,得到n比特的RS编码数据,其中,所述n比特的RS编码数据的前r比特是所述信息码数据,后k比特是校验数据,并且n=r+k,r,n和k为正整数。
2.根据权利要求1所述的多矩阵编码方法,所述预先设定的多个RS校验矩阵包括第一RS校验矩阵和第二RS校验矩阵,所述第一RS校验矩阵为r行k列的矩阵,所述第二RS校验矩阵为(r+k)行和k列的矩阵,并且所述第二RS校验矩阵的第r+1行至第r+k行是一个k行和k列的单位矩阵。
3.根据权利要求2所述的多矩阵编码方法,其中,基于预先设定的多个RS校验矩阵和所述信息码数据执行RS编码处理,得到n比特的RS编码数据包括:
将所述信息码数据作为1行r列的矩阵来与第一RS校验矩阵相乘,得到k比特的第一校验数据;
将所述信息码数据与所述第一校验数据进行拼接,得到(r+k)比特的第一编码数据;以及
将所述第一编码数据作为1行(r+k)列的矩阵来与第二RS校验矩阵相乘,得到k比特的第二编码数据;以及
将所述信息码数据与所述第二编码数据进行拼接,得到所述n比特的RS编码数据。
4.根据权利要求1所述的多矩阵编码方法,其中,所述预先设定的多个RS校验矩阵包括第三RS校验矩阵、第四RS校验矩阵和第五RS校验矩阵,所述第三RS校验矩阵为r行k列的矩阵,所述第四RS校验矩阵为(r+k)行和k列的矩阵,所述第五RS校验矩阵为(r+k)行和k列的矩阵,并且所述第四RS校验矩阵和所述第五RS校验矩阵的第r+1行至第r+k行是一个k行和k列的单位矩阵。
5.根据权利要求4所述的多矩阵编码方法,其中,基于预先设定的多个RS校验矩阵和所述信息码数据,得到n比特的RS编码数据包括:
将所述信息码数据作为1行r列的矩阵来与第三RS校验矩阵相乘,得到k比特的第三校验数据;
将所述信息码数据与所述第三校验数据进行拼接,得到(r+k)比特的第三编码数据;
将所述第三编码数据作为1行(r+k)列的矩阵来与第四RS校验矩阵相乘,得到k比特的第四校验数据;
将所述信息码数据与所述第四校验数据进行拼接,得到(r+k)比特的第四编码数据;
将所述第四编码数据作为1行(r+k)列的矩阵来与第五RS校验矩阵相乘,得到k比特的第五校验数据;以及
将所述信息码数据与所述第五校验数据进行拼接,得到所述n比特的RS编码数据。
6.根据前述权利要求1-5中任一项所述的多矩阵编码方法,其中所述存储器是DDR存储器。
7.根据前述权利要求6所述的多矩阵编码方法,还包括:
将所述RS编码数据写入到DDR存储器中,其中,所述DDR存储器是DDR5存储器,其中所述DDR5存储器包括8个存储数据芯片,用于存储所述信息码数据,以及2个校验数据芯片,用于存储所述校验数据,每个芯片的数据位宽为4比特。
8.根据权利要求7所述的多矩阵编码方法,所述r为32,所述k为6或7中的任意一个。
9.一种多矩阵纠错方法,用于当存储器中所存储的RS编码数据的信息码数据发生错误时,对发生错误的所述信息码数据进行纠错,所述多矩阵纠错方法包括:
读取存储器中存储的发生错误的RS编码数据,其中所述RS编码数据包括n比特,其中前r比特为待纠错的信息码数据,其包括h个信息码元,每个信息码元的长度是t比特,后k比特为读取的校验码数据;以及
基于预先设定的多个RS校验矩阵,对所述RS编码数据进行纠错以获得纠错后的信息码数据,所述纠错后的信息码数据包括r比特,其中n=r+k,r,t,h,n和k为正整数。
10.根据权利要求9所述的多矩阵纠错方法,用于当存储器中所存储的RS编码数据的一个信息码元发生错误时,对错误的信息码元进行纠错,其中,基于预先设定的多个RS校验矩阵,对所述RS编码数据进行纠错以获得纠错后的信息码数据包括:
基于所述待纠错的信息码数据,得到第一数量的搜索数据,其中,所述第一数量的搜索数据中的每一个是r比特的数据,包括h个信息码元,每个信息码元的长度是t比特;
基于所述预先设定的多个RS校验矩阵,对所述第一数量的搜索数据中的每一个执行多矩阵编码方法,得到与所述第一数量的搜索数据相对应的第一数量的中间搜索校验数据和第一数量的最终搜索校验数据,其中所述中间校验数据和最终校验数据的长度是k比特;以及
将所述第一数量的最终搜索校验数据中的每一个与所述读取的校验数据进行比较;
当所述第一数量的最终搜索校验数据中只有一个最终搜索校验数据与所述读取的校验数据相同时,将与所述一个最终搜索校验数据相对应的搜索数据确定为纠错后的信息码数据;以及
当所述第一数量的最终搜索校验数据中有多于一个的最终搜索校验数据与所述读取的校验数据相同时,基于RS定位算法来确定纠错后的信息码数据,其中所述多于一个的最终搜索校验数据的数量为第二数量。
11.根据权利要求10所述的多矩阵纠错方法,其中,基于所述信息码数据,得到第一数量的搜索数据包括:
依次对于所述信息码数据的h个信息码元中的每一个信息码元执行替换操作,包括:依次用从0开始递增到2t-1结束的2t个t比特的二进制数据来替换所述信息码元,同时保持所述信息码数据中的其他(h-1)个信息码元的数据不改变,以得到2t个搜索数据;
在h个信息码元的替换操作完成后得到h×2t个搜索数据,作为所述第一数量的搜索数据。
12.根据权利要求10所述的多矩阵纠错方法,其中所述预先设定的多个RS校验矩阵包括第一RS校验矩阵和第二RS校验矩阵,所述第一RS校验矩阵为r行k列的矩阵,所述第二RS校验矩阵为(r+k)行和k列的矩阵,并且所述第二RS校验矩阵的第r+1行至第r+k行是一个k行和k列的单位矩阵。
13.根据权利要求12所述的多矩阵纠错方法,其中,基于所述预先设定的多个RS校验矩阵,对所述第一数量的搜索数据中的每一个执行多矩阵编码方法,得到与所述第一数量的搜索数据相对应的第一数量的中间搜索校验数据和第一数量的最终搜索校验数据包括:
对于每一个搜索数据执行以下操作:
将所述搜索数据作为1行r列的矩阵来与第一RS校验矩阵相乘,得到k比特的第一搜索校验数据,以作为与所述搜索数据相对应的中间搜索校验数据;
将所述搜索数据与所述第一搜索校验数据进行拼接,得到(r+k)比特的第一搜索编码数据;以及
将所述第一搜索编码数据作为1行(r+k)列的矩阵来与第二RS校验矩阵相乘,得到k比特的第二搜索校验数据,以作为与所述搜索数据相对应的最终搜索校验数据,
其中,当对所述第一数量的搜索数据中的每一个搜索数据执行完以上操作之后,得到与所述第一数量的搜索数据相对应的第一数量的中间搜索校验数据和第一数量的最后搜索校验数据。
14.根据权利要求13所述的多矩阵纠错方法,其中,基于RS定位算法来确定纠错后的信息码数据包括对于与所述第二数量的搜索校验数据相对应的第二数量的搜索数据中的每一个搜索数据执行以下操作:
基于所述搜索数据、与所述搜索数据相对应的中间搜索校验数据以及第一RS校验矩阵,通过RS定位算法来确定所述待纠错的信息码数据的第一位置的信息码元出现了误码;
确定所述搜索数据在第二位置的信息码元上与所述待纠错的信息码数据不相同;
判断所述第一位置与所述第二位置是否相同;以及
当所述第一位置与所述第二位置相同时,将所述搜索数据确定为纠错后的信息码数据,否则,则排除所述搜索数据。
15.根据权利要求14所述的多矩阵纠错方法,其中,基于所述搜索数据、与所述搜索数据相对应的中间搜索校验数据以及第一RS校验矩阵,通过RS定位算法来确定所述待纠错的信息码数据的第一位置的信息码元出现了误码包括:
将所述待纠错的信息码数据与所述中间搜索校验数据进行拼接,以得到长度为(r+k)比特的待纠错的RS编码数据;
将所述第一RS校验矩阵与一个k行k列单位矩阵进行拼接,以得到(r+k)行k列的第六RS校验矩阵;
将所述待纠错的RS编码数据数据作为1行(r+k)列的矩阵与所述第六RS校验矩阵的每一列相乘,以得到k个伴随式数据;
对于所述待纠错的信息码数据的h个信息码元中的每一个信息码元的位置i,基于与所述位置i相对应的所述k个伴随式数据之间的相互关系,将相应的k个伴随式数据进行组合异或再相与,以确定所述位置i处的信息码元是否出现误码,其中i=1,2,3…,h。
16.根据权利要求10所述的多矩阵纠错方法,其中,所述预先设定的多个RS校验矩阵包括第三RS校验矩阵、第四RS校验矩阵和第五RS校验矩阵,所述第三RS校验矩阵为r行k列的矩阵,所述第四RS校验矩阵为(r+k)行和k列的矩阵,所述第五RS校验矩阵为(r+k)行和k列的矩阵,并且所述第四RS校验矩阵和所述第五RS校验矩阵的第r+1行至第r+k行是一个k行和k列的单位矩阵。
17.根据权利要求16所述的多矩阵纠错方法,其中,基于预先设定的多个RS校验矩阵,对所述第一数量的搜索数据中的每一个执行多矩阵编码方法,得到与所述第一数量的搜索数据相对应的第一数量的中间搜索校验数据和第一数量的最终搜索校验数据包括:
对于每一个搜索数据执行以下操作:
将所述搜索数据作为1行r列的矩阵来与第三RS校验矩阵相乘,得到k比特的第三搜索校验数据,以作为与所述搜索数据相对应的中间搜索校验数据;
将所述搜索数据与所述第三搜索校验数据进行拼接,得到(r+k)比特的第三搜索编码数据;
将所述第三搜索编码数据作为1行(r+k)列的矩阵来与第四RS校验矩阵相乘,得到k比特的第四搜索校验数据;
将所述搜索数据与所述第四搜索校验数据进行拼接,得到(r+k)比特的第四搜索编码数据;以及
将所述第四搜索编码数据作为1行(r+k)列的矩阵来与第五RS校验矩阵相乘,得到k比特的第五搜索校验数据,以作为与所述搜索数据相对应的最终搜索校验数据,
其中,当对所述第一数量的搜索数据中的每一个搜索数据执行完以上操作之后,得到与所述第一数量的搜索数据相对应的第一数量的中间搜索校验数据和第一数量的最后搜索校验数据。
18.根据权利要求17所述的多矩阵纠错方法,其中,基于RS定位算法来确定纠错后的信息码数据包括对与所述第二数量的搜索校验数据相对应的第二数量的搜索数据中的每一个搜索数据执行以下操作:
基于所述搜索数据、与所述搜索数据相对应的中间搜索校验数据以及第三RS校验矩阵,通过RS定位算法来确定所述信息码数据的第一位置的信息码元出现了误码;
确定与所述最终搜索校验数据相对应的搜索数据在第二位置的信息码元上与所述信息码数据不相同;
判断所述第一位置与所述第二位置是否相同;
当所述第一位置与所述第二位置相同时,将所述搜索数据确定为纠错后的信息码数据,否则,则排除所述搜索数据。
19.根据权利要求18所述的多矩阵纠错方法,其中,基于所述搜索数据、与所述搜索数据相对应的中间搜索校验数据以及第三RS校验矩阵,通过RS定位算法来确定所述信息码数据的第一位置的信息码元出现了误码包括:
将所述待纠错的信息码数据与所述中间搜索校验数据进行拼接,以得到长度为(r+k)比特的待纠错的RS编码数据;
将所述第一RS校验矩阵与一个k行k列单位矩阵进行拼接,以得到(r+k)行k列的第七RS校验矩阵;
将所述待纠错的RS编码数据数据作为1行(r+k)列的矩阵与所述第七RS校验矩阵的每一列相乘,以得到k个伴随式数据;
对于所述待纠错的信息码数据的h个信息码元中的每一个信息码元的位置i,基于与所述位置i相对应的所述k个伴随式数据之间的相互关系,将相应的k个伴随式数据进行组合异或再相与,以确定所述位置i处的信息码元是否出现误码,其中i=1,2,3…,h。
20.根据前述权利要求9-19中任一项所述的多矩阵纠错方法,其中所述存储器是DDR存储器。
21.根据前述权利要求20所述的多矩阵纠错方法,其中,所述DDR存储器是DDR5存储器,其中所述DDR5存储器包括8个存储数据芯片,用于存储所述信息码数据,以及2个校验数据芯片,用于存储所述校验数据,每个芯片的数据位宽为4比特。
22.根据前述权利要求21所述的多矩阵纠错方法,所述r为32,所述k为6或7中的任意一个。
23.一种多矩阵编码装置,包括:
接收单元,接收要写入存储器的信息码数据,所述信息码数据包括r比特;
编码单元,基于预先设定的多个RS校验矩阵对所述信息码数据执行里德所罗门RS编码处理,得到n比特的RS编码数据,其中,所述n比特的RS编码数据的前r比特是所述信息码数据,后k比特是校验数据,并且n=r+k,r,n和k为正整数。
24.根据权利要求23所述的多矩阵编码装置,其中,所述预先设定的多个RS校验矩阵包括第一RS校验矩阵和第二RS校验矩阵,所述第一RS校验矩阵为r行k列的矩阵,所述第二RS校验矩阵为(r+k)行和k列的矩阵,并且所述第二RS校验矩阵的第r+1行至第r+k行是一个k行和k列的单位矩阵。
25.根据权利要求24所述的多矩阵编码装置,其中,所述编码单元包括:
第一校验数据生成单元,将所述信息码数据作为1行r列的矩阵来与第一RS校验矩阵相乘,得到k比特的第一校验数据;
第一拼接单元,将所述信息码数据与所述第一校验数据进行拼接,得到(r+k)比特的第一编码数据;以及
第二校验数据生成单元,将所述第一编码数据作为1行(r+k)列的矩阵来与第二RS校验矩阵相乘,得到k比特的第二编码数据;
第二拼接单元,将所述信息码数据与所述第二编码数据进行拼接,得到所述n比特的RS编码数据。
26.根据权利要求24所述的多矩阵编码装置,其中,所述预先设定的多个RS校验矩阵包括第三RS校验矩阵、第四RS校验矩阵和第五RS校验矩阵,所述第三RS校验矩阵为r行k列的矩阵,所述第四RS校验矩阵为(r+k)行和k列的矩阵,所述第五RS校验矩阵为(r+k)行和k列的矩阵,并且所述第四RS校验矩阵和所述第五RS校验矩阵的第r+1行至第r+k行是一个k行和k列的单位矩阵。
27.根据权利要求25所述的多矩阵编码装置,其中,所述编码单元包括:
第三校验数据生成单元,将所述信息码数据作为1行r列的矩阵来与第三RS校验矩阵相乘,得到k比特的第三校验数据;
第三拼接单元,将所述信息码数据与所述第三校验数据进行拼接,得到(r+k)比特的第三编码数据;
第四校验数据生成单元,将所述第三编码数据作为1行(r+k)列的矩阵来与第四RS校验矩阵相乘,得到k比特的第四校验数据;
第四拼接单元,将所述信息码数据与所述第四校验数据进行拼接,得到(r+k)比特的第四编码数据;以及
第五校验数据生成单元,将所述第四编码数据作为1行(r+k)列的矩阵来与第五RS校验矩阵相乘,得到k比特的第五校验数据;以及
第五拼接单元,将所述信息码数据与所述第五校验数据进行拼接,得到所述n比特的RS编码数据。
28.根据权利要求23-27中任一项所述的多矩阵编码装置,其中所述存储器是DDR存储器。
29.根据权利要求28所述的多矩阵编码装置,还包括写入单元,用于将所述RS编码数据写入到DDR存储器中,其中,所述DDR存储器是DDR5存储器,其中所述DDR5存储器包括8个存储数据芯片,用于存储所述信息码数据,以及2个校验数据芯片,用于存储所述校验数据,每个芯片的数据位宽为4比特。
30.一种多矩阵纠错装置,用于当存储器中所存储的RS编码数据的信息码数据发生错误时,对发生错误的所述信息码数据进行纠错,所述多矩阵纠错装置包括:
读取单元,用于读取存储器中存储的发生错误的RS编码数据,其中所述RS编码数据包括n比特,其中前r比特为待纠错的信息码数据,其包括h个信息码元,每个信息码元的长度是t比特,后k比特为读取的校验码数据;以及
纠错单元,用于基于预先设定的多个RS校验矩阵,对所述RS编码数据进行纠错以获得纠错后的信息码数据,所述纠错后的信息码数据包括r比特,其中n=r+k,r,t,h,n和k为正整数。
31.根据权利要求30所述的多矩阵纠错装置,用于当存储器中所存储的RS编码数据的一个信息码元发生错误时,对错误的信息码元进行纠错,其中,所述纠错单元包括:
搜索单元,基于所述待纠错的信息码数据,得到第一数量的搜索数据,其中,所述第一数量的搜索数据中的每一个是r比特的数据,包括h个信息码元,每个信息码元的长度是t比特;
搜索校验数据生成单元,基于所述预先设定的多个RS校验矩阵,对所述第一数量的搜索数据中的每一个执行多矩阵编码方法,得到与所述第一数量的搜索数据相对应的第一数量的中间搜索校验数据和第一数量的最终搜索校验数据,其中所述中间校验数据和最终校验数据的长度是k比特;
比较单元,将所述第一数量的最终搜索校验数据中的每一个与所述读取的校验数据进行比较;
第一信息码确定单元,当所述第一数量的最终搜索校验数据中只有一个最终搜索校验数据与所述读取的校验数据相同时,将与所述一个最终搜索校验数据相对应的搜索数据确定为纠错后的信息码数据;以及
RS定位单元,当所述第一数量的最终搜索校验数据中有多于一个的最终搜索校验数据与所述读取的校验数据相同时,基于RS定位算法来确定纠错后的信息码数据,其中所述多于一个的最终搜索校验数据的数量为第二数量。
32.根据权利要求31所述的多矩阵纠错装置,其中,所述搜索单元基于所述信息码数据,得到第一数量的搜索数据包括:
依次对于所述信息码数据的h个信息码元中的每一个信息码元执行替换操作,包括:依次用从0开始递增到2t-1结束的2t个t比特的二进制数据来替换所述信息码元,同时保持所述信息码数据中的其他(h-1)个信息码元的数据不改变,以得到2t个搜索数据;
在h个信息码元的替换操作完成后得到h×2t个搜索数据,作为所述第一数量的搜索数据。
33.根据权利要求31所述的多矩阵纠错装置,其中,其中所述预先设定的多个RS校验矩阵包括第一RS校验矩阵和第二RS校验矩阵,所述第一RS校验矩阵为r行k列的矩阵,所述第二RS校验矩阵为(r+k)行和k列的矩阵,并且所述第二RS校验矩阵的第r+1行至第r+k行是一个k行和k列的单位矩阵。
34.根据权利要求33所述的多矩阵纠错装置,其中,所述搜索校验数据生成单元包括:
第一搜索校验数据生成单元,对于所述第一数量的搜索数据中的每一个搜索数据,将所述搜索数据作为1行r列的矩阵来与第一RS校验矩阵相乘,得到k比特的第一搜索校验数据,以作为与所述搜索数据相对应的中间搜索校验数据;
第一搜索数据拼接单元,将所述搜索数据与所述第一搜索校验数据进行拼接,得到(r+k)比特的第一搜索编码数据;以及
第二搜索校验数据生成单元,将所述第一搜索编码数据作为1行(r+k)列的矩阵来与第二RS校验矩阵相乘,得到k比特的第二搜索校验数据,以作为与所述搜索数据相对应的最终搜索校验数据。
35.根据权利要求34所述的多矩阵纠错装置,其中,所述RS定位单元包括:
第一位置确定单元,基于所述搜索数据、与所述搜索数据相对应的中间搜索校验数据以及第一RS校验矩阵,通过RS定位算法来确定所述待纠错的信息码数据的第一位置的信息码元出现了误码;
第二位置确定单元,确定所述搜索数据在第二位置的信息码元上与所述待纠错的信息码数据不相同;
位置判断单元,判断所述第一位置与所述第二位置是否相同;以及
第二信息码确定单元,当所述第一位置与所述第二位置相同时,将所述搜索数据确定为纠错后的信息码数据,否则,则排除所述搜索数据。
36.根据权利要求35所述的多矩阵纠错装置,其中,所述第一位置确定单元包括:
第六拼接单元,将所述待纠错的信息码数据与所述中间搜索校验数据进行拼接,以得到长度为(r+k)比特的待纠错的RS编码数据;
矩阵拼接单元,将所述第一RS校验矩阵与一个k行k列单位矩阵进行拼接,以得到(r+k)行k列的第六RS校验矩阵;
伴随式数据生成单元,将所述待纠错的RS编码数据数据作为1行(r+k)列的矩阵与所述第六RS校验矩阵的每一列相乘,以得到k个伴随式数据;
误码位置确定单元,对于所述待纠错的信息码数据的h个信息码元中的每一个信息码元的位置i,基于与所述位置i相对应的所述k个伴随式数据之间的相互关系,将相应的k个伴随式数据进行组合异或再相与,以确定所述位置i处的信息码元是否出现误码,其中i=1,2,3…,h。
37.根据权利要求31所述的多矩阵纠错装置,其中,所述预先设定的多个RS校验矩阵包括第三RS校验矩阵、第四RS校验矩阵和第五RS校验矩阵,所述第三RS校验矩阵为r行k列的矩阵,所述第四RS校验矩阵为(r+k)行和k列的矩阵,所述第五RS校验矩阵为(r+k)行和k列的矩阵,并且所述第四RS校验矩阵和所述第五RS校验矩阵的第r+1行至第r+k行是一个k行和k列的单位矩阵。
38.根据权利要求37所述的多矩阵纠错装置,其中,所述搜索校验数据生成单元包括:
第三搜索校验数据生成单元,对于每一个搜索数据,将所述搜索数据作为1行r列的矩阵来与第三RS校验矩阵相乘,得到k比特的第三搜索校验数据,以作为与所述搜索数据相对应的中间搜索校验数据;
第三搜索拼接单元,将所述搜索数据与所述第三搜索校验数据进行拼接,得到(r+k)比特的第三搜索编码数据;
第四搜索校验数据生成单元,将所述搜索数据与所述第四搜索校验数据进行拼接,得到(r+k)比特的第四搜索编码数据;
第四搜索拼接单元,将所述搜索数据与所述第四搜索校验数据进行拼接,得到(r+k)比特的第四搜索编码数据;以及
第五搜索校验数据生成单元,将所述第四搜索编码数据作为1行(r+k)列的矩阵来与第五RS校验矩阵相乘,得到k比特的第五搜索校验数据,以作为与所述搜索数据相对应的最终搜索校验数据。
39.根据权利要求38所述的多矩阵纠错装置,其中,所述RS定位单元包括:
第一位置确定单元,基于所述搜索数据、与所述搜索数据相对应的中间搜索校验数据以及第三RS校验矩阵,通过RS定位算法来确定所述待纠错的信息码数据的第一位置的信息码元出现了误码;
第二位置确定单元,确定所述搜索数据在第二位置的信息码元上与所述待纠错的信息码数据不相同;
位置判断单元,判断所述第一位置与所述第二位置是否相同;以及
第二信息码确定单元,当所述第一位置与所述第二位置相同时,将所述搜索数据确定为纠错后的信息码数据,否则,则排除所述搜索数据。
40.根据权利要求39所述的多矩阵纠错装置,其中,所述第一位置确定单元包括:
第六拼接单元,将所述待纠错的信息码数据与所述中间搜索校验数据进行拼接,以得到长度为(r+k)比特的待纠错的RS编码数据;
矩阵拼接单元,将所述第三RS校验矩阵与一个k行k列单位矩阵进行拼接,以得到(r+k)行k列的第七RS校验矩阵;
伴随式数据生成单元,将所述待纠错的RS编码数据数据作为1行(r+k)列的矩阵与所述第六RS校验矩阵的每一列相乘,以得到k个伴随式数据;
误码位置确定单元,对于所述待纠错的信息码数据的h个信息码元中的每一个信息码元的位置i,基于与所述位置i相对应的所述k个伴随式数据之间的相互关系,将相应的k个伴随式数据进行组合异或再相与,以确定所述位置i处的信息码元是否出现误码,其中i=1,2,3…,h。
41.根据前述权利要求23至40中任一项所述的多矩阵纠错装置,其中,所述DDR存储器是DDR5存储器,其中所述DDR5存储器包括8个存储数据芯片,用于存储信息码数据以及2个校验数据芯片,用于存储校验数据,每个芯片的数据位宽为4比特。
42.根据前述权利要求41所述的多矩阵纠错装置,所述r为32,所述k为6或7中的任意一个。
43.一种计算机设备,包括存储器和处理器,其中,所述存储器上存储有处理器可读的程序代码,当处理器执行所述程序代码时,执行根据权利要求1-22中任一项所述的方法。
44.一种计算机可读存储介质,其上存储有指令,所述指令在被处理器执行时,使得所述处理器执行如权利要求1-22中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011471464.2A CN112688693B (zh) | 2020-12-14 | 2020-12-14 | 一种内存多矩阵编码方法、纠错方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011471464.2A CN112688693B (zh) | 2020-12-14 | 2020-12-14 | 一种内存多矩阵编码方法、纠错方法及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112688693A true CN112688693A (zh) | 2021-04-20 |
CN112688693B CN112688693B (zh) | 2023-12-05 |
Family
ID=75447713
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011471464.2A Active CN112688693B (zh) | 2020-12-14 | 2020-12-14 | 一种内存多矩阵编码方法、纠错方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112688693B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113422612A (zh) * | 2021-07-02 | 2021-09-21 | 海光信息技术股份有限公司 | 编码方法、译码方法及相关装置、电子设备和存储介质 |
CN113485866A (zh) * | 2021-07-02 | 2021-10-08 | 海光信息技术股份有限公司 | 译码方法及相关装置、电子设备和存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5563894A (en) * | 1991-12-10 | 1996-10-08 | Hitachi, Ltd. | Error detecting and correcting method and system |
CN1773864A (zh) * | 2004-11-12 | 2006-05-17 | 中国科学院空间科学与应用研究中心 | 一种纠错能力为2的扩展里德—所罗门码的译码方法 |
CN101183565A (zh) * | 2007-12-12 | 2008-05-21 | 深圳市硅格半导体有限公司 | 存储介质中数据校验方法 |
WO2017194013A1 (zh) * | 2016-05-13 | 2017-11-16 | 中兴通讯股份有限公司 | 纠错编码方法及装置 |
CN110071727A (zh) * | 2019-04-26 | 2019-07-30 | 成都海光集成电路设计有限公司 | 编码方法、译码方法、纠错方法及装置 |
CN111061592A (zh) * | 2019-11-22 | 2020-04-24 | 山东航天电子技术研究所 | 一种通用的Nand Flash比特位反转纠错方法 |
CN111294059A (zh) * | 2019-12-26 | 2020-06-16 | 成都海光集成电路设计有限公司 | 编码方法、译码方法、纠错方法及相关装置 |
-
2020
- 2020-12-14 CN CN202011471464.2A patent/CN112688693B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5563894A (en) * | 1991-12-10 | 1996-10-08 | Hitachi, Ltd. | Error detecting and correcting method and system |
CN1773864A (zh) * | 2004-11-12 | 2006-05-17 | 中国科学院空间科学与应用研究中心 | 一种纠错能力为2的扩展里德—所罗门码的译码方法 |
CN101183565A (zh) * | 2007-12-12 | 2008-05-21 | 深圳市硅格半导体有限公司 | 存储介质中数据校验方法 |
WO2017194013A1 (zh) * | 2016-05-13 | 2017-11-16 | 中兴通讯股份有限公司 | 纠错编码方法及装置 |
CN110071727A (zh) * | 2019-04-26 | 2019-07-30 | 成都海光集成电路设计有限公司 | 编码方法、译码方法、纠错方法及装置 |
CN111061592A (zh) * | 2019-11-22 | 2020-04-24 | 山东航天电子技术研究所 | 一种通用的Nand Flash比特位反转纠错方法 |
CN111294059A (zh) * | 2019-12-26 | 2020-06-16 | 成都海光集成电路设计有限公司 | 编码方法、译码方法、纠错方法及相关装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113422612A (zh) * | 2021-07-02 | 2021-09-21 | 海光信息技术股份有限公司 | 编码方法、译码方法及相关装置、电子设备和存储介质 |
CN113485866A (zh) * | 2021-07-02 | 2021-10-08 | 海光信息技术股份有限公司 | 译码方法及相关装置、电子设备和存储介质 |
CN113485866B (zh) * | 2021-07-02 | 2023-05-09 | 海光信息技术股份有限公司 | 译码方法及相关装置、电子设备和存储介质 |
CN113422612B (zh) * | 2021-07-02 | 2023-11-03 | 海光信息技术股份有限公司 | 编码方法、译码方法及相关装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112688693B (zh) | 2023-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2780808B1 (en) | Data encoder and decoder using memory-specific parity-check matrix | |
EP2372550B1 (en) | Semiconductor memory device | |
EP2780809B1 (en) | Systems and methods for decoding codewords having multiple parity segments | |
EP2780810B1 (en) | Systems, methods, and devices for multi-tiered error correction | |
CN107967186B (zh) | 用于控制存储器装置的方法和控制器及存储器系统 | |
KR101753498B1 (ko) | 신뢰도 데이터 업데이트 | |
US10707902B2 (en) | Permutation network designing method, and permutation circuit of QC-LDPC decoder | |
US8635508B2 (en) | Systems and methods for performing concatenated error correction | |
US10635528B2 (en) | Memory controller and method of controlling memory controller | |
US10848184B2 (en) | Method for controlling storage device with aid of error correction and associated apparatus | |
CN112688693B (zh) | 一种内存多矩阵编码方法、纠错方法及相关装置 | |
KR20160090054A (ko) | 플래시 메모리 시스템 및 그의 동작 방법 | |
US11632135B2 (en) | Apparatuses and methods for interleaved BCH codes | |
US10243588B2 (en) | Error correction code (ECC) decoders sharing logic operations, memory controllers including the error correction code decoders, and methods of decoding error correction codes | |
US9960788B2 (en) | Memory controller, semiconductor memory device, and control method for semiconductor memory device | |
US9015548B2 (en) | Error detection correction method and semiconductor memory apparatus | |
US10700708B2 (en) | Permutation network designing method, and permutation circuit of QC-LDPC decoder | |
CN110113058B (zh) | 编译码方法、装置、设备及计算机可读存储介质 | |
KR20210001927A (ko) | 국부성을 사용한 일반화된 연접 에러 정정 코딩 방법 | |
US10404282B2 (en) | Apparatuses and methods for integrated interleaved Reed-Solomon encoding and decoding | |
CN101931415B (zh) | 编码装置及方法、译码装置及方法和纠错系统 | |
CN112687324A (zh) | 奇偶校验生成电路、存储器控制器和含该电路的存储模块 | |
CN116743188A (zh) | 存储系统和控制存储系统的方法 | |
CN113590377A (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 |