CN110679090B - 减少延迟错误校正解码 - Google Patents

减少延迟错误校正解码 Download PDF

Info

Publication number
CN110679090B
CN110679090B CN201880035724.6A CN201880035724A CN110679090B CN 110679090 B CN110679090 B CN 110679090B CN 201880035724 A CN201880035724 A CN 201880035724A CN 110679090 B CN110679090 B CN 110679090B
Authority
CN
China
Prior art keywords
syndrome
determining
condition
computer
value
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
Application number
CN201880035724.6A
Other languages
English (en)
Other versions
CN110679090A (zh
Inventor
P·J·米尼
B·特拉格
G·D·吉尔达
A·奥尼尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN110679090A publication Critical patent/CN110679090A/zh
Application granted granted Critical
Publication of CN110679090B publication Critical patent/CN110679090B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1575Direct decoding, e.g. by a direct determination of the error locator polynomial from syndromes and subsequent analysis or by matrix operations involving syndromes, e.g. for codes with a small minimum Hamming distance
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/158Finite field arithmetic processing
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6502Reduction of hardware complexity or efficient processing
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6561Parallelized implementations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • H04L1/0052Realisations of complexity reduction techniques, e.g. pipelining or use of look-up tables

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Engineering & Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Error Detection And Correction (AREA)

Abstract

公开了用于使用减少延迟符号错误纠正解码器执行减少延迟错误解码的系统,方法和计算机可读介质,该解码器利用枚举的并行乘法代替除法,并用常数乘法代替一般乘法。使用并行乘法代替除法可以提供减少延迟,并且用常数乘法代替一般乘法允许逻辑减少。另外,减少符号错误纠正解码器可以利用解码项共享,这可以产生解码器逻辑的进一步减少和进一步的延迟改进。

Description

减少延迟错误校正解码
相关申请的交叉引用
本申请要求2017年6月16日提交的申请号为No.62/521,128的美国临时申请的权益,其内容通过引用结合于此。
背景技术
错误纠正码(ECC)用于以冗余方式对消息进行编码,以便控制在不可靠或嘈杂的通信信道上的数据传输中的错误。随着计算机系统变得越来越密集和复杂,通常在成本、性能、密度、可靠性、可用性,以及可维护性(RAS)之间进行权衡。所使用的错误纠正码类型可以影响所做出的权衡的类型。例如,对于大型高速缓存设计,可以以与错误纠正相关联的高延迟为代价来实现增加的密度。
发明内容
在本公开的一个或多个示例实施例中,公开了一种用于对包括一组输入符号的接收码字执行减少延迟错误解码的计算机实现的方法。该方法包括确定与该接收码字相关联的第一校验子,第二校验子和第三校验子,并确定第一校验子,第二校验子或第三校验子中的至少一个是非零。该方法还包括确定一组常数乘数并将第一校验子与该组常数乘数中的每个常数乘数相乘以生成一组乘积。该方法还包括至少部分地基于该组乘积确定第一条件相对于第二校验子被满足并且确定第二条件相对于第三校验子被满足。然后,至少部分地基于第一条件和第二条件被满足来识别该接收码字中包含一个或多个比特错误的单个输入符号,并且校正该单个输入符号中的该一个或多个比特错误以获得原始码字。
在本公开的一个或多个示例实施例中,公开了用于对包括一组输入符号的接收码字执行减少延迟错误解码的系统。该系统包括至少一个存储器和至少一个处理器。存储器存储计算机可执行指令。处理器被配置为访问该至少一个存储器并执行计算机可执行指令以执行一组操作。所述操作包括确定与该接收码字相关联的第一校验子,第二校验子和第三校验子,并确定第一校验子,第二校验子或第三校验子中的至少一个是非零的。该操作还包括确定一组常数乘数并将第一校验子与该组常数乘数中的每个常数乘数相乘以生成一组乘积。该操作还包括至少部分地基于该组乘积确定第一条件相对于第二校验子被满足并确定第二条件相对于第三校验子被满足。然后,至少部分地基于第一条件和第二条件被满足来识别该接收码字中包含一个或多个比特错误的单个输入符号,并且校正该单个输入符号中的该一个或多个比特错误以获得原始码字。
在本公开的一个或多个示例实施例中,公开了用于对包括一组输入符号的接收码字执行减少延迟错误解码的计算机程序产品。该计算机程序产品包括可由处理电路读取的存储介质。存储介质存储可由处理电路执行的指令,以执行方法。该方法包括确定与该接收码字相关联的第一校验子,第二校验子和第三校验子,并确定第一校验子,第二校验子或第三校验子中的至少一个是非零。该方法还包括确定一组常数乘数并将第一校验子与该组常数乘数中的每个常数乘数相乘以生成一组乘积。该方法还包括至少部分地基于该组乘积确定第一条件相对于第二校验子被满足并且确定第二条件相对于第三校验子被满足。然后,至少部分地基于第一条件和第二条件被满足来识别该接收码字中包含一个或多个比特错误的单个输入符号,并且校正该单个输入符号中的该一个或多个比特错误以获得原始码字。
附图说明
参考附图阐述详细描述。提供附图仅用于说明的目的,并且仅描绘了本公开的示例实施例。提供附图是为了便于理解本公开,并且不应视为限制本公开的广度,范围或适用性。在附图中,附图标记的最左边的数字标识附图标记首次出现的附图。使用相同的附图标记表示相似但不一定相同的部件或同一个部件。然而,不同的附图标记也可用于识别类似的组件。各种实施例可以利用除附图中示出的元件或组件之外的元件或组件,并且一些元件和/或组件可以不存在于各种实施例中。取决于上下文,用于描述组件或元件的单数术语可以包含多个这样的组件或元件,反之亦然。
图1是示出传统的里德-所罗门(Reed-Solomon)解码过程的示意性框图。
图2是示出了根据本公开的一个或多个示例实施例的减少延迟错误解码过程的示意性框图。
图3A是示出根据本公开的一个或多个示例实施例的用于实现减少延迟错误解码过程的逻辑的示意图。
图3B是示出根据本公开的一个或多个示例实施例的图3A中的逻辑可以如何用于实现解码项共享的附加示意图。
图4是根据本公开的一个或多个示例实施例的被配置为实现减少延迟错误解码过程的组件的示意性框图。
图5是根据本公开的一个或多个示例实施例的示出示例L4高速缓存结构的示意性框图。
图6是根据本公开的一个或多个示例实施例的示出示例L3高速缓存结构的示意性框图。
图7是根据本公开的一个或多个示例实施例的说明性减少延迟错误解码过程的过程流程图。
图8是被配置为实现本公开的一个或多个示例实施例的说明性网络化体系结构的示意图。
具体实施方式
本公开的示例实施例包括,用于使用改进的减少延迟符号错误纠正解码器来执行符号错误解码和纠正的系统,方法,计算机可读介质,技术和方法等。在某些示例实施例中,减少延迟符号错误纠正解码器可以是改进的里德-所罗门(RS)解码器,其利用枚举的并行乘法代替除法,并用常数乘法代替一般乘法。使用并行乘法代替除法可以提供减少延迟,特别是对于少量符号。此外,用常数乘法代替一般乘法允许逻辑减少和减少延迟。另外,在某些示例实施例中,减少符号错误纠正解码器可以利用解码项共享,其可以产生解码器逻辑的显着进一步减少并且进一步改善延迟。
RS码是一组错误纠正码,其属于非二进制循环错误纠正码的类。RS码基于有限域上的单变量多项式。RS码的类可以包括例如单错误纠正(SEC)/双错误检测(DED)码,其能够检测和校正具有一个或多个比特错误的单个符号并且检测但不校正其中每个符号有一个或多个比特错误的两个符号。可以在伽罗瓦域(GF)(2n)上定义使用n比特符号的RS码,其最大码长度为2n–1个符号。例如,可以在GF(29)上定义使用9比特符号的RS码,其最大码长度为512-1=511个符号。每个有限域具有本原(primitive)元素α,其幂表示所有非零字段元素。特别地,当被视为多项式C(x)时,SEC/DED RS码中的每个码字C满足C(1)=0;C(α)=0;C(α2)=0。
更具体地,码字C的每个符号可以被视为多项式C(x)的系数。例如,在本公开的示例实施例中,码字C可以包括15个数据符号和3个校验/奇偶校验符号。然后如下给出多项式C(x):C(x)=[符号1]+[符号2]x+[符号3]x2+……+[符号18]x17。RS码的特性是:假设码字C中不存在错误,则存在值1,α和α2,每个值为多项式C(x)产生零值。多项式C(x)在值1,α和α2处的值可以称为校验子,并且可以如下给出:S0=C(1);S1=C(α);S2=C(α2)。校验子可以具有与码字C的符号相同的比特长度。
当S0=S1=S2=0,假设码字C中不存在错误。然而,如果一个或多个符号错误已被引入到码字C,则对于多项式C(x),值1,α或α2中的一个或多个可能不再产生零值。也就是说,如果R是原始码字C与在传输期间引入C的任何错误之和,则由R(1),R(α)和R(α2)分别给出的校验子S1,S2或S3中一个或多个可以是非零。作为非限制性示例,假设S0=[000010100];S1=[101011110];和S2=[101011011]。如果在接收码字R内的位置p处存在一个符号错误,其幅度为β,则:S0=β;S1=βαp;S2=βα2p。因此,对于单个符号错误,S0指示在出错的单个符号内哪个比特是错误的。例如,在该示例中,S0指示在出错的符号中比特4和6是错误的。S0可以被称为比特翻转矢量,因为它指示需要在出错的符号中翻转哪些比特以便在码字C中获得原始数据。
在S0指示在出错的单个符号中哪个比特需要被翻转的情况下,S1和S2可用于确定该符号在接收码字R中的位置p。如上所述,校验子S1是比特翻转矢量S0与值α提高到幂p的乘积,其中,p表示单个符号中出错的位置。传统RS码通过首先执行确定S0和S2的乘积是否等于S1 2的检查来操作。如果是,则可以确定单个符号出错。然后,传统RS码将S1除以S0以产生αp,然后将其与α的每个幂(例如,α0,α1,……,α(符号的数量-1))进行比较,以确定α的哪个幂匹配,匹配的幂进而表示单个符号的位置p出错。传统RS码可以通过首先查找倒数表来确定S0的倒数(S0 -1)然后将S1乘以倒数S0 -1来实现S1除以S0
相反地,根据本公开的示例实施例的改进的RS码执行枚举的并行乘法来代替除法。此外,所枚举的并行乘法涉及与常数(例如,α的幂)的乘法来代替与传统RS码相关联的一般乘法(例如,关于是否S0S2=S1 2的校验)。因此,通过利用常数乘法代替一般乘法,与传统RS码相比,根据本公开的示例实施例的改进的RS码实现了延迟的减少。此外,通过执行枚举的并行乘法代替除法,与传统RS码相比,根据本公开的示例实施例的改进的RS码实现了进一步减少的延迟。
更具体地,不是将S1除以S0,根据本公开的示例实施例的改进的RS码执行S0与α的每个幂的乘法(例如,α0,α1,……,α(符号的数量-1)),以确定产生的乘积中是否有乘积与S1匹配。另外,根据本公开的示例实施例的改进的RS码还执行S1与α的每个幂的乘法(例如,α0,α1,……,α(符号的数量-1)),以确定产生的乘积中是否有乘积与S2匹配。在某些示例实施例中,这些校验都可以并行执行。如果通过α的相同幂(p)满足这两个条件,则可以确定存在单个可校正符号错误。这个与常数的枚举的并行乘法实现了与传统RS码执行的一般乘法和除法相比的延迟减少。
在执行上述枚举的并行乘法之后,如果没有匹配,则可以确定在码字C中存在多于一个错误。如果存在单个匹配-即,如果对于给定的p,S0与αP的乘积匹配S1(S0p=S1)并且对于相同p,S1与αp的乘积匹配S2(S1p=S2)-则可以确定存在单个符号错误,并且在匹配乘积中的α的幂表示单个符号的出错位置。如果检测到单个错误,则可以将S0=β与在位置p处的接收码字R中的符号相加(异或),以校正该符号中的错误并获得原始码字C。在如上所述的示例中,比特翻转矢量S0将与位置p处的符号进行异或。另一方面,如果这两个条件都不满足-即,如果没有p的值使得S0p=S1并且S1p=S2-那么在接收码字R中存在多个符号错误,并且该多个符号错误无法校正。
图1是示出传统RS解码过程的示意性框图。虽然图1描绘了用于获得倒数S0 -1然后进行一般乘法和比较操作的解码及查找过程,但是应当理解,传统RS解码可以改为使用除法(例如,S1/S0),其与比通过倒数的乘法甚至更大的延迟相关联。然而,即使图1中描绘的利用通过倒数的乘法来实现除法的传统过程也与根据本公开的示例实施例的符号错误纠正解码过程相比的明显更大的延迟相关联。
例如,假设我们如下向倒数(INV)运算,和/或(AND/OR)运算,以及异或(XOR)运算分配延迟值:INV=0;AND/OR=1,XOR=2。基于这些延迟值,图1中描绘的传统RS解码过程将导致26个延迟等级。特别地,图1的过程包括解码步骤,由此解码器(DCD)102执行9路AND,其等效于一个INV和3级AND操作。这导致延迟值为3。然后执行常数查找104,其包括256路OR(8级OR运算)以确定S0 -1。这导致延迟值为8。接着是一般乘法运算106,其包括一个INV,一个AND和5级XOR运算,产生延迟值0+1+2(5)=11。最后,执行比较操作108,其包括一个AND和8路OR运算。这相当于一个AND和3级OR运算,导致延迟值为1+3=4。因此,图1所示的过程产生的总延迟为3+8+11+4=26。应理解,图1未描绘在传统RS解码中执行的确定S0与S2的乘积是否等于S12的一般乘法步骤。然而,传统的RS解码器通常与确定倒数S0 -1的步骤(或者执行S0除以S1的步骤,无论哪种情况)并行地执行该步骤。因为确定倒数S0 -1(或者通过S1执行S0的划分)具有比一般乘法步骤更长的延迟,所以它是限制步骤,并且一般乘法不会增加总延迟。
图2是示出了根据本公开的一个或多个示例实施例的减少延迟错误解码过程的示意性框图。图4是根据本公开的一个或多个示例实施例的被配置为实现减少延迟错误解码过程的组件的示意性框图。图7是根据本公开的一个或多个示例实施例的说明性的减少延迟错误解码方法700的过程流程图。下面将相互结合图2、4和7进行描述。
根据本公开的示例实施例的减小的延迟错误解码过程可依靠如下的假设:错误纠正码是短的并且最小化延迟是所期望的。特别地,根据本公开的示例实施例的减少延迟错误解码过程通过单符号校正/双符号检测(SSC/DSD)提供高速缓存设计的ECC保护。此外,如先前所讨论的,根据本公开的示例实施例的减少延迟错误解码过程采用枚举的并行乘法代替除法,并且进一步采用常数乘法代替一般乘法。这样做,实现了与传统解码过程相比减少逻辑和减少延迟。
首先参见方法700的框702,根据本公开的示例实施例的减少延迟错误解码过程可从接收到包含至少一个数据符号及至少一个校验符号的码字R开始。码字R可以包括例如在GF(512)上定义的9比特符号。作为非限制性示例,接收码字R可以包含15个数据符号和3个校验符号。
在方法700的框704处,多项式R(x)可以被生成为具有接收码字R的符号作为其系数。例如,在R具有15个数据符号和3个校验符号(从而总共有18个符号)的上述示例中,多项式R(x)=[符号1]+[符号2]x+[符号3]x2+……+[符号18]x17。然后,在方法700的框706处,可以执行校验子生成器402(图4)的计算机可执行指令以计算用于多项式R(x)的校验子S0,S1和S2。如前所述,校验子S0,S1和S2分别表示多项式R(x)在点1,α和α2处的值。
更具体地,再次参考前面介绍的示例,可以通过本原多项式α94+1的根在GF(2)上生成GF(512)码。用于该码的码生成多项式可以是G(x)=(x-1)(x-α)(x-α2)。如果我们将15个数据符号视为多项式D(x)的系数,则这三个校验符号是在将x3D(x)除以G(x)之后的余数的系数。这可以通过XOR电路并行执行,该XOR电路将15个数据符号(9*15=135位)作为输入并产生3个校验符号(9*3=27位),使得编码器XOR电路在135位数据上操作,并产生27个校验位。此外,如前所述,当在该示例中将18个符号视为多项式R(x)的系数时,通过分别在点1,α和α2处评估多项式R(x)来计算校验子S0,S1和S2。这可以通过XOR电路并行完成,该XOR电路接收18个接收符号并产生3个校验子。
特别地,在图4中示出的校验子发生器电路402可以采取18*9=162个比特作为输入,并产生27个比特作为输出。特别地,假设平分的(even)9比特符号码,校验子生成器电路402输出的27比特可包括部分S0,S1和S2,每个部分的长度为9比特。S0可以是错误的9比特矢量,其指示可校正符号中的哪个比特需要翻转。S1可以是指向出错符号的9比特矢量。更具体地,在先前介绍的示例中,S1可以是15+3=18个符号中的出错的符号的特殊编码。S2可以是用作可校正错误(CE)/不可校正错误(UE)校验的9比特矢量。例如,如果存在位置p使得S1=S0αp并且S2=S1αp,则错误是可校正的。
在某些示例实施例中,可针对比特翻转矢量生成S0项,以指示在校正符号的9个比特中哪个比特需要被校正。然后可以对所有符号使用S0来预校正所有符号(每个符号可以具有暂定校正)。如下文将更详细描述的,然后可以使用S0,S1和S2的二次测试以及一些常数来确定哪个(如果有的话)符号需要校正。
特别地,在方法700的框708中,解码器404(图4)可确定校验子S0,S1,或S2中是否有校验子为非零。响应于框708处的否定确定,其指示所有校验子为零,方法700可以结束,因为可以确定该接收码字R不包含错误。另一方面,响应于框708处的肯定确定,其指示校验子S0,S1和S2中的一个或多个为非零,方法700可以进行到框710,其中,解码器电路404可以执行S0与α的从0到[(码字R中的符号数量)-1]中的每个幂的枚举并行乘法。
在方法700的框712处,解码器电路404可以将在框710处执行的枚举并行乘法所得到的乘积与S1进行比较,以确定是否存在幂p使得S1=S0αp。响应于框712处的否定确定,方法700可前进到框722,其中,可确定在接收码字R中存在多个不可校正的符号错误。另一方面,响应于框712处的肯定确定,方法700可以进行到框714,其中,解码器电路404可以执行S1与α的从0到[(码字R中的符号数量)-1]中的每个幂的枚举并行乘法。
在方法700的框716处,解码器电路404可以将在框714中执行的枚举并行乘法所得到的乘积与S2进行比较,以确定是否存在S2=S1αp,使得对于相同的幂p,S1=S0αp。响应于框716处的否定确定,方法700可行进到框722,其中,可确定在接收码字R中存在多个不可校正的符号错误。另一方面,响应于框716处的肯定确定,解码器电路404可以在框718处,基于框712和框716处的条件都满足,确定在码字R中的位置p处存在具有一个或多个比特错误的单个符号。然后,在方法700的框720处,通过将S0与位置p处的符号进行异或来校正接收码字R中的位置p处的单个符号中的比特错误。
在本公开的某些示例实施例中,在框710处执行的S0与α的幂的枚举并行乘法,和在框714处执行的S1与α的幂的枚举并行乘法,以及在框712和716中的校验可以至少部分地并行进行。例如,在其中码字R包含18个总符号(15个数据符号和3个校验符号)的先前介绍的示例中,对于候选错误位置[0,17]范围内的每个候选错误位置p,关于是否S1=S0αp的校验以及关于是否S2=S1αp的校验可以并行执行。如果识别出通过这两个校验的位置p,则可以在框718处作出确定,并且可以将码字R中在位置p处的符号的数据与S0进行异或,以校正单个符号错误。
特别地,如果仅存在一个错误的符号,则校验子S0是错误值(例如,S0中的非零比特指示在出错的符号中需要翻转该比特以便校正符号)。图7的减少延迟错误解码过程试图在接收码字R内找到出错的单个符号的位置,或者确定已经发生了多于一个的符号错误。如果在码字R中在位置p处存在单个符号错误,则校验子将满足以下等式:S1=S0Y且S2=S1Y,其中,对于候选p值范围(例如,在前面介绍的示例中为0到17)内的特定p,Y=αp。不是如传统RS码所做的通过将S1除以S0来计算Y(如前所述导致大的延迟),可以使用17对常数乘数来并行执行测试以确定是否存在从0到17的位置p,使得S1=S0αp且S2=S1αp。应当理解,尽管在该示例中在码字R中存在18个符号,但是可能仅需要17对常数乘数,因为当p为0时,αp=1,因此,S1可以直接与S0进行比较,S2可以直接与S1进行比较,而不需要常数乘法。这样,利用这种方法而不执行任何解码项共享(稍后将更详细地描述)可能需要34个这样的常数乘数。如果识别出满足两个等式的位置p,则p表示接收码字R中符号的出错位置。另一方面,如果没有这样的位置p满足两个等式,则发生多于一个的符号错误。每个常数乘数可以是一个XOR电路,它具有9比特输入并产生9比特输出。
更具体地,如图2所示,一旦在方法700的框706处生成9比特S0项,则S0可以乘以(202)9×9常数矩阵,例如,以获得9比特S0×Ap。然后可以将S0×Ap与S1进行比较204。另外,尽管未在图2中示出,但是还可以执行S1×Ap与S2的进一步比较。以这种方式,可以确定哪个符号(如果有的话)需要校正。特别地,常数矩阵Ap可以在常数乘法运算中应用于S0和S1二者。可以生成长度为18*9的两个乘积矢量。然后,对于前面介绍的示例,这些矢量可以被分成对应于码字R中的18个符号的18个连续的9比特符号。可以将S0×Ap的乘积与S1进行比较,并且可以将S1×Ap的乘积与S2进行比较。当两个比较对于给定的乘积符号对匹配时,可以识别其值为S0的错误的位置。如果没有乘积匹配的位置,则在接收码字R中存在多个不可校正的符号错误。
如前所述,校验上述的双重条件可能需要34个常数乘数。然而,在使用解码项共享的本公开的示例实施例中,可以减少所需的常数乘数的数量。特别地,位置0(其对应于将α提高到零幂)乘以1,因此是空闲的(free)。对于位置1到8,代替将S2与S1αp进行比较,S2可以等效地与S0α2p进行比较。然而,因为对于在1到8范围内的p,位置2p仅仅是当p在1到17范围内时的偶数位置,所以已经计算了用于涉及S1的比较的那些乘积。因此,虽然可以使用17个常数乘数(位置1到17)来与S1进行比较,但是对于从9到17的p计算S1αp只需要9个常数乘数,给出总共17+9=26个常数乘数,以找到出错符号的位置。该解码项共享方法可以用于根据本公开的示例实施例的任何减少延迟RS码,以相比于传统解码过程,将解码器逻辑的大小减小大约25%,假设每个9×9常数矩阵中出现大约相同数量的解码器逻辑。
更正式地阐述上述内容,对于长度为k的码,在没有解码项共享的情况下,对S0αp和S1αp(其中,0<p<k)的计算将需要2k-2个常数乘数。然而,如果使用根据本公开的示例实施例的解码项共享,则仍然可以执行是否S1=S0αp(其中,0<p<k)的校验,但是,不是执行是否S2=S1αp(其中,0<p<k)的校验,而是可以改为执行以下校验:S2=S0α2p(其中,0<p<k)。当2p<k时,已经计算出S0α2p的值,以校验是否S1=S0αp(其中,0<p<k)。因此,当针对0<p<k来计算S0αp时,仅需要针对k≤2p<2k来计算S0α2p。这需要k-1+(k/2)个常数乘数,其对应于与传统解码过程相比所需的在硬件解码器逻辑上减少约25%。在其中码字R具有18个总符号的先前介绍的示例中,需要18-1+(18/2)=26个常数乘数而不是2(18)-2=34个常数乘数。
图3A是根据本公开的一个或多个示例实施例的示出用于实现减少延迟错误解码过程的示例解码器逻辑300的示意图。图3B是根据本公开的一个或多个示例实施例的示出图3A的逻辑300如何通过解码项共享来重用常数项的附加示意图。从图3B中可以看出,如果S0是空闲的,则可以通过重新使用已计算的用于S2,S4,……,S16的项来覆盖S1-S8。例如,这可以导致解码器300中的主要XOR逻辑减少25%。
逻辑300可包括18包的eDRAM,其包含在L3双数据字包装器(wrapper)输出中,其中在包装器中的每个eDRAM输出9比特符号。符号ECC可以支持校正单个符号内的任何数量的损坏比特并支持检测任何两个同时损坏的符号。两个双字数据存储在比特0:127中,随后是7比特特殊不可校正错误(SPUE)标记(stamp)和在比特位置135:161中的3个校验位符号。7比特SPUE标记可用于记录进入eDRAM的存储数据的检测到的(不可校正的错误)UE或SPUE。
如前所述,根据本公开的示例实施例的减少时延错误解码过程可通过搜索使得条件S1=S0αp和S2=S0α2p二者都满足的位置p来执行解码。对于其中码字R的码长度为18(例如,15个数据符号+3个校验符号)并且p的范围为从0到17的先前介绍的短缩码的示例,因为对于p的偶数值,S0αp的计算对应于也可以在S2比较中使用的乘积,解码项共享导致从34个常数乘数中去除8个常数乘数,否则该8个常数乘数将是必需的。
然而,在某些示例实施例中,更进一步的逻辑减少可以通过针对接收码字R选择非标准码位置来实现。例如,相对于包含18个符号的示例短缩RS码字,通过针对短缩码选择非标准位置集,可进一步减少所需的常数乘数的数量(从26减少到18个)。为了说明选择非标准位置集如何可以进一步减少所需的常数乘数的数量,考虑使用全长RS码而不是短缩码。例如,对于在GF(512)上定义的全长码,相对于校验子S1的比较涉及针对从0到510的p的所有值计算S0αp,其对应于有限域中的所有非零元素。然而,对于在从0到510范围内的p,α2p的值仅仅是αp的值的置换(permutation)。因此,一旦计算出初始乘积,只要正确选择元素以利用短缩RS码的这些属性,就不需要计算其它乘积。
再次参考含有18个符号的短缩RS码的示例,代替使用位置0到17,一组位置可被选择成使得在该组中所有的位置的两倍也包含在该组中。例如,假设选择以下一组位置:{1,2,4,8,16,32,64,128,256}。该组包含在该组中所有的位置的两倍。特别地,因为码是在GF(512)上定义的,其具有511个非零元素,所选择的位置(其表示元素α的指数)可以被理解为以511为模。因此,2*256=512相当于1模(mod)511,而1可以被理解为256的两倍对511取模。
上述该组位置的长度为9。然而,含有18个符号的示例短缩RS码要求17个非零位置。因此,必须选择包含该组中所有位置的两倍的另一组非标准位置。可以选择未包含在第一组中的任何起始点。因为希望最小化除了使用的常数乘数的数量之外使用的常数乘数的大小,所以可以选择位置9作为第二组的起始点,其产生集合{9,18,36,72,144,288,576=65 mod 511,130,260}。应当理解,2*260=520,其等于9 mod 511,因此,9可以被理解为260的两倍。因此,该第二组非标准位置也包含所有的它的两倍。
可以看出,由于512=29,最大两倍组模511具有长度9。因此,下面的18个位置可以被选择用于RS码:{0,1,2,4,8,9,16,18,32,36,64,65,72,128,130,144,256,260}。然后,相应的两倍模511变为:{0,2,4,8,16,18,32,36,64,72,128,130,144,256,260,288,1,9}。在原始组中未包含的在两倍组中包含的唯一幂是288。因此,可以从原始组中选择17个非零位置以及来自两倍组的位置288以产生18个常数乘数。因此,在原始组中的17个非零位置之外仅需要一个额外的常数乘数。因此,通过选择包含该组中所有的元素的两倍的一组非标准位置,可以实现从26到18的常数乘数的数量的进一步减少。
当考虑与根据本公开的示例实施例的解码过程相关联的延迟,可看出与传统解码过程相比延迟显著更低。特别地,假设应用如前所述的相同延迟值分配,则S0与常数矩阵Ap的乘法包括3级的XOR运算。这导致延迟值为3(2)=6。比较操作204包括模式(pattern)比较和最终比较。模式比较包括1个XOR和一个9路OR,其相当于1个XOR和3个OR运算。这导致延迟值为2+3(1)=5。最终比较是单个AND操作,导致延迟值为1。因此,根据本公开的示例实施例,与图2和图7的解码过程相关联的总延迟是6+5+1=12,其显着低于与图1中描绘的传统解码过程相关联的延迟24。在本公开的其它示例实施例中,比较操作可以包括一个AND操作和一个8路OR,其相当于一个AND操作和3个OR操作,产生延迟值4而不是上述的6。
为了进一步说明通过本公开的示例性实施例实现的该延迟显著减少,考虑与解码步骤相关联的延迟值22,常数查找104,以及图1中的一般乘法操作106。在解码过程中,根据本公开的示例实施例,这些步骤由常数乘法运算S0×Ap代替,其由于3级XOR运算而延迟为6。例如,假设我们有一个带有以下行的常数9×9矩阵:011000010;001100001;000110000;100011000;001001110;000100111;000010011;100001001;以及110000100。这些矩阵行与以下XOR运算相关联:行1:3+1=4路;第2行:3+1=4路;第3行:2+1=3路;第4行:3+1=4路;第5行:4+1=5路;第6行:4+1=5路;第7行:3+1=4路;第8行:3+1=4路;第9行:3+1=4路。因此,乘法区域包含28个XOR但仅有3级XOR(最多5路XOR)。3级XOR导致延迟为3(2)=6。
如以上所说明,针对乘法使用常数而不是严格的数据/异或的结果是减少延迟。另外,将校验子乘以常数,然后用比较操作代替除法电路也可以减少延迟。如果从比较中检测到匹配,则除法电路(如果使用)将产生该值。常数乘法和比较所需的电路比除法电路所需的电路更少。此外,解码项共享可以进一步改善延迟。
用于校验位生成的示例矩阵如下所示。假设有十八个9比特输入符号,用于校验位生成的矩阵以及相应的比特位置可以由下表给出。第一列是输出(27比特,3个符号×9,用于校验位),其在第一列内垂直编号为0到26。在Hmatrix中,零(0)表示该位不是计算的一部分,而一(1)表示特定输入是该校验位计算的一部分。例如,第一列(0)用于校验位0,它通过对输入1,4,5,10,11,12,14,15,16,19,20,21,22,23,24,25,26,30,31,32,33,35,39,41,42,43,45,46,48,49,50,52,53,56,58,60,61,63,64,66,68,71,72,73,76,78,81,82,84,85,86,88,93,98,99,100,101,104,105,106,107,108,111,112,117,122,123,125,126,133,和134进行异或生成。另一种观察它的方式是输入位0(如第0行所示)将用于计算校验位3,4,5,8,10,11,12,13,15,16,17,18,19,20,23,24,和25。类似地,可以基于表从输入生成其它二十六个输出/校验位。
Figure BDA0002295059240000141
Figure BDA0002295059240000151
Figure BDA0002295059240000161
Figure BDA0002295059240000171
Figure BDA0002295059240000181
Figure BDA0002295059240000191
有时,可能需要从一种形式的ECC转换为另一种形式的ECC。例如,虽然本文描述的示例实施例对于高速缓存设计可能是低延迟,但是对于一些总线传输或更快的高速缓存级别,例如,可能具有仅用于单比特校正/双比特检测的汉明码,延迟可能太高。可以使用各种技术将一个ECC码转换为另一个ECC码,同时仍然保护数据。一种这样的方法是在由一个码校正/处理数据之后并且在将数据编码成第二码之前在数据上生成奇偶校验位(parity)。另一种技术是如下所述的ECC转换,其通过在开始并行生成第二码的同时校正一个码来实现更低的延迟。再次参考图4,描绘了ECC生成器406,其可以将原始数据上的校验位生成为第二ECC码(例如汉明码),而并行地,可以基于将S0乘以另一个常数矩阵来生成校正矢量。该常数矩阵可以基于将ECC矩阵的9比特字段用于被转换为(6472码)的码,该码相当于在9比特符号码中分布的9比特符号。S0与矩阵的这些字段相乘以并行地生成那些可能需要为每个潜在可能包含错误的9比特符号翻转的ECC位。一旦识别出要校正的符号,稍后就可以在数据和6472个校验位上发生选择,以生成校正数据和校验位。
图5是根据本公开的一个或多个示例实施例的示出示例错误纠正流502的示意性框图。错误纠正流程502包括来自码字的校验子生成,使用所生成的校验子的错误解码,以及将校正应用于该接收码字的数据。然后将根据校正的数据生成任何新的错误纠正码。图5中的“校验子解码->翻转”块可以包括与图4中描绘的解码器404相同的功能。图6是示出根据本公开的一个或多个示例实施例的示例性错误纠正流602的示意性框图。例如,分别在图5和图6中示出的示例性错误纠正流502和602可以使用图3和图4的示例解码器逻辑来实现。
根据本公开的示例实施例的减少延迟错误解码处理的一个或多个操作可以至少部分地由被配置为实现底层硬件逻辑的一个或多个程序模块来执行。这些程序模块可以以硬件,软件和/或固件的任何组合来实现。在某些示例实施例中,这些程序模块中的一个或多个可以至少部分地实现为包括计算机可执行指令的软件和/或固件模块,所述计算机可执行指令在由处理电路执行时使得执行一个或多个操作。这里描述的被配置为实现本公开的示例实施例的系统或设备可以包括一个或多个处理电路,每个处理电路可以包括一个或多个处理单元或节点。计算机可执行指令可以包括计算机可执行程序代码,当由处理单元执行时,该计算机可执行程序代码可以使得包含在计算机可执行程序代码中或由计算机可执行程序代码引用的输入数据被访问并被处理以产生输出数据。
在本文中描述本公开的一个或多个说明性实施例。这些实施例仅仅是对本公开的范围的说明,而不旨在以任何方式进行限制。因此,本文公开的实施例的变化,修改和等同物也在本公开的范围内。
图8是被配置成实现本公开的一个或多个示例实施例的说明性的网络体系结构800的示意图。该架构可以包括一个或多个解码服务器802,一个或多个网络804,以及一个或多个数据存储库(datastore),潜在地可以由解码服务器802直接或通过一个或多个网络804访问。尽管这里可以以单数形式描述解码服务器802,应当理解,可以提供解码服务器802的多个实例,并且结合解码服务器802描述的功能可以分布在这样的多个实例上。
在一个示例性配置中,解码服务器802可包括:一个或多个处理器(处理器)808,一个或多个存储器设备810(通常在本文中称为存储器810),一个或多个输入/输出(“I/O”)接口812,一个或多个网络接口814,和数据存储816。解码服务器802还可以包括功能上耦接解码服务器802的各种组件的一个或多个总线818。
总线818可以包括系统总线,存储器总线,地址总线或消息总线中的至少一个,并且可以允许解码服务器802的各种组件之间的信息的交换(例如,数据(包括计算机可执行代码))。总线818可以包括但不限于存储器总线或存储器控制器,外围总线,加速图形端口等。总线818可以与任何合适的总线架构相关联,包括但不限于工业标准架构(ISA),微通道架构(MCA),增强型ISA(EISA),视频电子标准协会(VESA)架构,加速图形端口(AGP)架构,外围组件互连(PCI)架构,PCI-高速架构,个人计算机存储卡国际协会(PCMCIA)架构,通用串行总线(USB)架构等。
存储器810可包括:诸如随机存取存储器(RAM)的易失性存储器(当供电时保持其状态的存储器),和/或非易失性存储器(即使不供电也维持其状态的存储器),例如,只读存储器(ROM),闪存,铁电RAM(FRAM)等。这里使用的术语,持久数据存储可以包括非易失性存储器。在某些示例实施例中,易失性存储器可以实现比非易失性存储器更快的读/写访问。然而,在某些其它示例实施例中,某些类型的非易失性存储器(例如,FRAM)可以实现比某些类型的易失性存储器更快的读/写访问。
在各种实施方式中,存储器810可以包括多个不同类型的存储器,诸如各种类型的静态随机存取存储器(SRAM),各种类型的动态随机存取存储器(DRAM),嵌入式DRAM(eDRAM),各种类型的不可改变的ROM,和/或ROM的可写变体,例如电可擦除可编程只读存储器(EEPROM),闪存等。存储器810可以包括主存储器以及各种形式的高速缓冲存储器,诸如指令高速缓存,数据高速缓存,转换后备缓冲器(TLB)等。此外,诸如数据高速缓存的高速缓存存储器可以是被组织为一个或多个高速缓存等级(L1,L2等)的层级的多级高速缓存。
数据存储816可以包括可移动存储和/或不可移动存储,包括但不限于,磁存储,光盘存储,和/或磁带存储。数据存储816可以提供计算机可执行指令和其它数据的非易失性存储。可移动和/或不可移动的存储器810和数据存储816是计算机可读存储介质(CRSM)的示例,如该术语在本文中所使用的。
数据存储816可以存储计算机可执行代码,指令等,其可加载到存储器810并可由(一个或多个)处理器808执行,以使(一个或多个)处理器808执行或发起各种操作。数据存储816可以另外存储可以被复制到存储器810的数据,以供处理器808在执行计算机可执行指令期间使用。此外,由处理器808执行计算机可执行指令而生成的输出数据可以最初存储在存储器810中,并且最终可以复制到数据存储816以用于非易失性存储。
更具体地,数据存储816可以存储一个或多个操作系统(O/S)820;一个或多个数据库管理系统(DBMS)822,其被配置为访问存储器810和/或一个或多个外部数据存储库806;以及一个或多个程序模块,应用程序,引擎,计算机可执行代码,脚本等,诸如例如,校验子生成器824,解码器826和ECC生成器828。被描述为存储在数据存储816中的任何组件可以包括软件,固件和/或硬件的任何组合。软件和/或固件可以包括计算机可执行指令(例如,计算机可执行程序代码),其可以被加载到存储器810中以由处理器808中的一个或多个处理器执行,以结合相应命名的组件来执行先前描述的任何操作。
尽管在图8中未示出,该数据存储816还可以存储由解码服务器802的组件使用的各种类型的数据(例如,输入消息数据,指针数据,来自输入消息的输入消息块的处理的输出数据,填充签名数据,消息摘要数据等)。存储在数据存储816中的任何数据可以被加载到存储器810中以供处理器808在执行计算机可执行指令时使用。另外,存储在数据存储816中的任何数据可以潜在地存储在外部数据存储库806中,并且可以经由DBMS 822访问并且加载到存储器810中以供处理器808在执行计算机可执行的指令中使用。
(一个或多个)处理器808可以被配置为访问存储器810,并执行加载在其中的计算机可执行指令。例如,处理器808可以被配置为执行解码服务器802的各种程序模块,应用程序,引擎等的计算机可执行指令,以促使或促进根据本公开的一个或多个实施例来执行各种操作。处理器808可以包括能够接受数据作为输入,根据存储的计算机可执行指令处理输入数据,以及生成输出数据的任何合适的处理单元。处理器808可以包括任何类型的合适处理单元,包括但不限于中央处理单元,微处理器,精简指令集计算机(RISC)微处理器,复杂指令集计算机(CISC)微处理器,微控制器,专用集成电路(ASIC),现场可编程门阵列(FPGA),片上系统(SoC),数字信号处理器(DSP)等。此外,处理器808可以具有任何合适的微体系结构设计,其包括任何数量的组成组件,诸如例如,寄存器,多路复用器,算术逻辑单元,用于控制对高速缓存存储器、分支预测器等的读/写操作的高速缓存控制器。处理器808的微体系结构设计可能能够支持各种指令集中的任何一种。
现在参考示出为存储在数据存储816中的其它说明性组件,O/S 820可从数据存储816加载到存储器810中,并且可以提供在解码服务器802以及解码服务器802的硬件资源上执行的其它应用软件之间的接口。更具体地,O/S 820可以包括一组计算机可执行指令,用于管理解码服务器802的硬件资源并用于向其它应用程序提供公共服务。在某些示例实施例中,O/S 820可以包括或以其它方式控制被描绘为存储在数据存储816中的一个或多个程序模块的执行。O/S 820可以包括现在已知的或可以是在未来开发的任何操作系统,包括但不限于任何服务器操作系统,任何大型机操作系统或任何其它专有或非专有操作系统。
DBMS 822可以被加载到存储器810中,并且可以支持用于访问,检索,存储和/或操纵存储在存储器810中的数据,存储在数据存储816中的数据,和/或存储在(一个或多个)外部数据存储库806中的数据的功能。DBMS 822可以使用各种数据库模型中的任何一种(例如,关系模型,对象模型等),并且可以支持各种查询语言中的任何一种。DBMS 822可以访问在一个或多个数据模式中表示的数据并存储在任何合适的数据资源库中。由解码服务器802经由DBMS 822可访问的(一个或多个)外部数据存储库806可包括但不限于数据库(例如,关系,面向对象等),文件系统,平面文件,分布式数据存储库(其中,数据存储在计算机网络的多个节点上),对等网络数据存储库等。
现在参考解码服务器802的其它说明性组件,(一个或多个)输入/输出(I/O)接口812可以有助于由来自一个或多个I/O设备的解码服务器802接收输入信息以及从解码服务器802输出信息到一个或多个I/O设备。I/O设备可以包括各种组件中的任何一种,例如具有触摸表面或触摸屏的显示器或显示屏;用于产生声音的音频输出设备,例如扬声器;音频采集设备,例如麦克风;图像和/或视频采集设备,例如相机;触觉单元等。这些组件中的任何一个可以被集成到解码服务器802中或者可以是分开的。I/O设备还可以包括例如任何数量的外围设备,例如数据存储设备,打印设备等。
I/O接口812还可以包括用于外部外围设备连接的接口,诸如通用串行总线(USB),火线(FireWire),雷电(Thunderbolt),以太网端口或可以连接到一个或多个网络的其它连接协议。I/O接口812还可以包括到一个或多个天线的连接,以经由无线局域网(WLAN)(例如Wi-Fi)无线电,蓝牙和/或无线网络无线电(例如,能够与诸如长期演进(LTE)网络,WiMAX网络,3G网络等无线通信网络通信的无线电)连接到一个或多个网络。
解码服务器802还可以包括一个或多个网络接口814,经由该网络接口814,解码服务器802可以与各种其它系统,平台,网络,设备等中的任何一种通信。网络接口814可以实现例如经由网络804中的一个或多个与一个或多个其它设备进行通信。网络804可以包括但不限于任何一个或多个不同类型的网络,诸如例如有线网络,公共网络(例如,因特网),专用网络(例如,帧中继网络),无线网络,蜂窝网络,电话网络(例如,公共交换电话网络),或任何其它合适的私有或公共分组交换或电路交换网络。网络804可以具有与其相关联的任何合适的通信范围,并且可以包括例如全球网络(例如,因特网),城域网(MAN),广域网(WAN),局域网(LAN),或个人局域网(PAN)。此外,这样的网络可以包括通信链路和相关联的网络设备(例如,链路层交换机,路由器等),用于通过任何合适类型的介质传输网络流量,包括但不限于同轴电缆,双绞线(例如,双绞铜线),光纤,混合光纤同轴(HFC)介质,微波介质,射频通信介质,卫星通信介质或其任何组合。
应当理解,在图8中示出为存储在数据存储816中的程序模块仅仅是说明性的而不是穷举的,并且被描述为受任何特定模块支持的处理可以交替地跨越多个模块,引擎等分布,或由不同的模块,引擎等执行。此外,可以提供各种程序模块,脚本,插件,应用程序编程接口(API),或本地托管在解码服务器802上的和/或托管在通过一个或多个网络可访问的其它计算设备上的任何其它合适的计算机可执行代码,以支持由图8中描绘的模块提供的功能和/或附加或替代功能。此外,功能可以以任何合适的方式模块化,使得被描述为由特定模块执行的处理可以由一批任何数量的程序模块执行,或者被描述为由任何特定模块支持的功能可以至少部分地受到另一个模块支持。另外,支持本文描述的功能的程序模块可以根据任何合适的计算模型跨任意数量的服务器802执行,诸如例如,客户端-服务器模型,对等模型等。另外,被描述为由图8中描绘的任何模块支持的任何功能可以至少部分地在任何数量的设备上以硬件和/或固件实现。
还应当理解的是,在不脱离本公开的范围的情况下,除了所描述或描绘的组件,解码服务器802可包括替代的和/或额外的硬件,软件,或固件组件。更特别地,应当理解,被描绘为形成解码服务器802的一部分的软件,固件或硬件组件仅仅是说明性的,并且在各种实施例中可以不存在一些组件或者可以提供附加组件。虽然已经将各种说明性模块描绘和描述为存储在数据存储816中的软件模块,但是应当理解,可以通过硬件,软件,和/或固件的任何组合来实现被描述为由模块支持的功能。还应当理解,在各种实施例中,每个上述模块可以表示所支持的功能的逻辑分区。描述该逻辑分区是为了便于解释功能,并且可能不代表用于实现功能的软件,硬件和/或固件的结构。因此,应当理解,在各种实施例中,被描述为由特定模块提供的功能可以至少部分地由一个或多个其它模块提供。此外,在某些实施例中可以不存在一个或多个所描绘的模块,而在其它实施例中,未描绘的附加程序模块和/或引擎可以存在,并且可以支持所描述的功能和/或附加功能的至少一部分。
根据本公开的示例实施例的解码过程可以由具有图8中描绘的说明性配置的解码服务器802执行,或者更具体地,由硬件逻辑,硬件设备,程序模块,引擎,应用程序,或在此类设备上可执行的类似物来执行。然而,应该理解,可以结合许多其它设备配置来实现此类操作。
本文中所描述的任何操作可以根据在本公开的各种示例实施例中的需要以任何合适的顺序被实施或执行。另外,在某些示例实施例中,至少一部分操作可以并行执行。此外,在某些示例实施例中,可以执行比所描述的操作更少,更多或不同的操作。
尽管本公开的具体实施例已被描述,本领域的普通技术人员将认识到,许多其它的修改和替代实施例都在本公开的范围之内。例如,关于特定系统,系统组件,设备或设备组件描述的任何功能和/或处理能力可以由任何其它系统,设备或组件来执行。此外,虽然已经根据本公开的实施例描述了各种说明性实施方式和架构,但是本领域普通技术人员将理解,对本文描述的说明性实施方式和架构的许多其它修改也在本公开的范围内。另外,应当理解,本文描述为基于另一操作,元件,组件,数据等的任何操作,元件,组件,数据等可另外基于一个或多个其它操作,元件,组件,数据等。因此,短语“基于”或其变体应该被解释为“至少部分地基于”。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的示例(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其它自由传播的电磁波、通过波导或其它传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其它设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

Claims (18)

1.一种计算机实现的方法,用于对包括一组输入符号的接收码字执行减少延迟错误解码,所述方法包括:
确定与所述接收码字相关联的第一校验子、第二校验子和第三校验子;
确定所述第一校验子、所述第二校验子或所述第三校验子中的至少一个是非零;
确定一组常数乘数;
将所述第一校验子与所述一组常数乘数中的每个常数乘数相乘以生成一组乘积;
至少部分地基于所述一组乘积确定第一条件相对于所述第二校验子被满足;
确定第二条件相对于所述第三校验子被满足;
至少部分地基于所述第一条件和所述第二条件被满足,识别所述接收码字中包含一个或多个比特错误的单个输入符号;以及
校正所述单个输入符号中的所述一个或多个比特错误以获得原始码字;
其中,确定所述一组常数乘数包括:确定候选位置的序列,其中,所述序列中的每个候选位置的相应两倍被包含在所述序列中。
2.根据权利要求1所述的计算机实现的方法,其中,确定所述第一条件相对于所述第二校验子被满足包括:确定所述一组乘积中的第一乘积等于所述第二校验子,其中,所述第一乘积包括所述第一校验子与所述一组常数乘数中的特定常数乘数的乘法。
3.根据权利要求2所述的计算机实现的方法,其中,确定所述第二条件相对于所述第三校验子被满足包括:确定所述特定常数乘数与所述第二校验子的乘积等于所述第三校验子。
4.根据权利要求2所述的计算机实现的方法,其中,所述特定常数乘数是第一常数乘数,其中,确定所述第二条件相对于所述第三校验子被满足包括:确定所述一组乘积中的第二乘积等于所述第三校验子,其中,所述第二乘积包括所述第一校验子与已经包含在所述一组常数乘数中的第二常数乘数的乘法。
5.根据权利要求2所述的计算机实现的方法,还包括:生成包括所述一组输入符号作为系数的多项式,其中,确定所述第一校验子包括计算所述多项式在值1处的第一值,确定所述第二校验子包括计算所述多项式在值α处的第二值,确定所述第三校验子包括计算所述多项式在值α2处的第三值,其中,所述特定常数乘数是α提高到幂p的值,其中,p表示所述单个输入符号在所述接收码字中的位置。
6.根据权利要求1所述的计算机实现的方法,其中,校正所述单个输入符号中的所述一个或多个比特错误包括:将所述第一校验子与所述单个输入符号进行异或。
7.一种用于对包括一组输入符号的接收码字执行减少延迟错误解码的系统,所述系统包括:
至少一个存储器,其存储计算机可执行指令;以及
至少一个处理器,其被配置为访问所述至少一个存储器并执行所述计算机可执行指令以:
确定与所述接收码字相关联的第一校验子、第二校验子和第三校验子;
确定所述第一校验子、所述第二校验子或所述第三校验子中的至少一个是非零;
确定一组常数乘数;
将所述第一校验子与所述一组常数乘数中的每个常数乘数相乘以生成一组乘积;
至少部分地基于所述一组乘积确定第一条件相对于所述第二校验子被满足;
确定第二条件相对于所述第三校验子被满足;
至少部分地基于所述第一条件和所述第二条件被满足,识别所述接收码字中包含一个或多个比特错误的单个输入符号;以及
校正所述单个输入符号中的所述一个或多个比特错误以获得原始码字;
其中,确定所述一组常数乘数包括确定候选位置的序列,其中,所述序列中的每个候选位置的相应两倍被包含在所述序列中。
8.根据权利要求7所述的系统,其中,所述至少一个处理器被配置为通过执行确定所述一组乘积中的第一乘积等于所述第二校验子的计算机可执行指令,确定所述第一条件相对于所述第二校验子被满足,其中,所述第一乘积包括所述第一校验子与所述一组常数乘数中的特定常数乘数的乘法。
9.根据权利要求8所述的系统,其中,所述至少一个处理器被配置为通过执行确定所述特定常数乘数与所述第二校验子的乘积等于所述第三校验子的计算机可执行指令,确定所述第二条件相对于所述第三校验子被满足。
10.根据权利要求8所述的系统,其中,所述特定常数乘数是第一常数乘数,其中,所述至少一个处理器被配置为通过执行确定所述一组乘积中的第二乘积等于所述第三校验子的计算机可执行指令来确定所述第二条件相对于所述第三校验子被满足,其中,所述第二乘积包括所述第一校验子与已经包含在所述一组常数乘数中的第二常数乘数的乘法。
11.根据权利要求8所述的系统,其中,所述至少一个处理器还被配置为执行生成包括所述一组输入符号作为系数的多项式的计算机可执行指令,其中,确定所述第一校验子包括计算所述多项式在值1处的第一值,确定所述第二校验子包括计算所述多项式在值α处的第二值,确定所述第三校验子包括计算所述多项式在值α2处的第三值,其中,所述特定常数乘数是α提高到幂p的值,其中,p表示所述单个输入符号在所述接收码字中的位置。
12.根据权利要求7所述的系统,其中,所述至少一个处理器被配置为通过执行将所述第一校验子与所述单个输入符号进行异或的计算机可执行指令,校正所述单个输入符号中的所述一个或多个比特错误。
13.一种计算机存储介质,所述计算机存储介质存储可由处理电路读取并执行的指令以执行一种用于对包括一组输入符号的接收码字执行减少延迟错误解码的方法,所述方法包括:
确定与所述接收码字相关联的第一校验子、第二校验子和第三校验子;
确定所述第一校验子、所述第二校验子或所述第三校验子中的至少一个是非零;
确定一组常数乘数;
将所述第一校验子与所述一组常数乘数中的每个常数乘数相乘以生成一组乘积;
至少部分地基于所述一组乘积确定第一条件相对于所述第二校验子被满足;
确定第二条件相对于所述第三校验子被满足;
至少部分地基于所述第一条件和所述第二条件被满足,识别所述接收码字中包含一个或多个比特错误的单个输入符号;以及
校正所述单个输入符号中的所述一个或多个比特错误以获得原始码字;
其中,确定所述一组常数乘数包括:确定候选位置的序列,其中,所述序列中的每个候选位置的相应两倍包含在所述序列中。
14.根据权利要求13所述的计算机存储介质,其中,确定所述第一条件相对于所述第二校验子被满足包括:确定所述一组乘积中的第一乘积等于所述第二校验子,其中,所述第一乘积包括所述第一校验子与所述一组常数乘数中的特定常数乘数的乘法。
15.根据权利要求14所述的计算机存储介质,其中,确定所述第二条件相对于所述第三校验子被满足包括:确定所述特定常数乘数与所述第二校验子的乘积等于所述第三校验子。
16.根据权利要求14所述的计算机存储介质,其中,所述特定常数乘数是第一常数乘数,其中,确定所述第二条件相对于所述第三校验子被满足包括:确定所述一组乘积中的第二乘积等于所述第三校验子,其中,所述第二乘积包括所述第一校验子与已经包含在所述一组常数乘数中的第二常数乘数的乘法。
17.根据权利要求14所述的计算机存储介质,其中,所述方法还包括:生成包括所述一组输入符号作为系数的多项式,其中,确定所述第一校验子包括计算所述多项式在值1处的第一值,确定所述第二校验子包括计算所述多项式在值α处的第二值,确定所述第三校验子包括计算所述多项式在值α2处的第三值,其中,所述特定常数乘数是α提高到幂p的值,其中,p表示所述单个输入符号在所述接收码字中的位置。
18.根据权利要求13所述的计算机存储介质,其中,校正所述单个输入符号中的所述一个或多个比特错误包括:将所述第一校验子与所述单个输入符号进行异或。
CN201880035724.6A 2017-06-16 2018-06-14 减少延迟错误校正解码 Active CN110679090B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762521128P 2017-06-16 2017-06-16
US62/521,128 2017-06-16
US15/830,526 US10601448B2 (en) 2017-06-16 2017-12-04 Reduced latency error correction decoding
US15/830,526 2017-12-04
PCT/IB2018/054360 WO2018229703A1 (en) 2017-06-16 2018-06-14 Reduced latency error correction decoding

Publications (2)

Publication Number Publication Date
CN110679090A CN110679090A (zh) 2020-01-10
CN110679090B true CN110679090B (zh) 2023-05-26

Family

ID=64657747

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880035724.6A Active CN110679090B (zh) 2017-06-16 2018-06-14 减少延迟错误校正解码

Country Status (6)

Country Link
US (1) US10601448B2 (zh)
JP (1) JP7116374B2 (zh)
CN (1) CN110679090B (zh)
DE (1) DE112018001951T5 (zh)
GB (1) GB2576860B (zh)
WO (1) WO2018229703A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11082062B2 (en) * 2019-09-17 2021-08-03 SK Hynix Inc. Hardware implementations of a quasi-cyclic syndrome decoder
CN111628834B (zh) * 2020-04-08 2022-03-25 成都芯通软件有限公司 一种用于多频段hfc设备eq校准和配置方法
CN112953570B (zh) * 2021-02-04 2022-08-19 山东云海国创云计算装备产业创新中心有限公司 一种纠错解码方法、装置、设备及计算机可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0629865A (ja) * 1993-03-25 1994-02-04 Hiroichi Okano 倍長単一誤り訂正2重誤り検出リード・ソロモン符号 の復号器
US6421805B1 (en) * 1998-11-16 2002-07-16 Exabyte Corporation Rogue packet detection and correction method for data storage device
US7418645B2 (en) * 2003-09-24 2008-08-26 Hitachi Global Storage Technologies Netherlands B.V. Error correction/detection code adjustment for known data pattern substitution

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4637021A (en) * 1983-09-28 1987-01-13 Pioneer Electronic Corporation Multiple pass error correction
US4763330A (en) * 1986-05-06 1988-08-09 Mita Industrial Co., Ltd. Syndrome calculating apparatus
JP3170920B2 (ja) * 1992-12-25 2001-05-28 ソニー株式会社 エラー訂正方法及び訂正回路
US5771244A (en) 1994-03-09 1998-06-23 University Of Southern California Universal Reed-Solomon coder/encoder
US5901158A (en) 1997-04-22 1999-05-04 Quantum Corporation Error correction encoder/decoder
GB2368754B (en) * 2000-10-31 2004-05-19 Hewlett Packard Co Error detection and correction
US20020104059A1 (en) 2000-12-15 2002-08-01 Clara Baroncelli In-band FEC syndrome computation for SONET
US7089276B2 (en) 2002-10-18 2006-08-08 Lockheed Martin Corp. Modular Galois-field subfield-power integrated inverter-multiplier circuit for Galois-field division over GF(256)
FR2860360B1 (fr) 2003-09-29 2005-12-09 Canon Kk Dispositif de codage /decodage utilisant un codeur/decodeur de reed-solomon
US7228467B2 (en) * 2003-10-10 2007-06-05 Quantum Corporation Correcting data having more data blocks with errors than redundancy blocks
US7546517B2 (en) 2004-08-03 2009-06-09 President And Fellows Of Harvard College Error-correcting circuit for high density memory
US8707143B1 (en) 2011-06-13 2014-04-22 Altera Corporation Multiplication-based reed-solomon encoding architecture

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0629865A (ja) * 1993-03-25 1994-02-04 Hiroichi Okano 倍長単一誤り訂正2重誤り検出リード・ソロモン符号 の復号器
US6421805B1 (en) * 1998-11-16 2002-07-16 Exabyte Corporation Rogue packet detection and correction method for data storage device
US7418645B2 (en) * 2003-09-24 2008-08-26 Hitachi Global Storage Technologies Netherlands B.V. Error correction/detection code adjustment for known data pattern substitution

Also Published As

Publication number Publication date
JP7116374B2 (ja) 2022-08-10
DE112018001951T5 (de) 2020-02-20
WO2018229703A1 (en) 2018-12-20
GB2576860A (en) 2020-03-04
US20180367166A1 (en) 2018-12-20
GB201918172D0 (en) 2020-01-22
CN110679090A (zh) 2020-01-10
US10601448B2 (en) 2020-03-24
JP2020524930A (ja) 2020-08-20
GB2576860B (en) 2020-08-05

Similar Documents

Publication Publication Date Title
US10187085B2 (en) Decoding method, decoding apparatus and decoder
US9998148B2 (en) Techniques for low complexity turbo product code decoding
JP4036338B2 (ja) 誤りバイト数を制限したバイト内複数スポッティバイト誤り訂正・検出方法及び装置
US9450615B2 (en) Multi-bit error correction method and apparatus based on a BCH code and memory system
CN110679090B (zh) 减少延迟错误校正解码
US9734008B2 (en) Error vector readout from a memory device
US9843414B2 (en) Low complexity error correction
US20160328290A1 (en) Error vector readout from a memory device
US10243583B2 (en) CPU error remediation during erasure code encoding
Radonjic et al. Integer codes correcting double asymmetric errors
Kim et al. Fast low-complexity triple-error-correcting BCH decoding architecture
Tang et al. A new single-error correction scheme based on self-diagnosis residue number arithmetic
KR102607761B1 (ko) 극 부호를 이용하는 복호화를 위한 복호 위치 제어 정보 생성 방법 및 장치
KR101805073B1 (ko) 폴딩된 곱셈기가 적용된 bch 디코더
Singh et al. Improving performance parameters of error detection and correction in hdlc protocol by using hamming method
Juan et al. Utilization of DSP algorithms for Cyclic Redundancy Checking (CRC) in Controller Area Network (CAN) controller
TWI523437B (zh) Bch碼編碼與癥狀計算共用設計電路及決定該共用設計電路的方法
US10623018B2 (en) Method of arrangement of an algorithm in cyclic redundancy check
KR102119764B1 (ko) 차량용 메시지 패킷을 송수신하는 장치 및 방법
JP2006060465A (ja) スポッティバイト誤り訂正・検出方法及び装置
Gorantla et al. Interleaved Counter Matrix Code in SRAM Memories for Continuous Adjacent Multiple Bit Upset Correction
WO2019096124A1 (zh) 一种循环冗余校验crc计算方法和装置
JP2006101429A (ja) バイト内複数スポッティバイト誤り訂正・検出方法及び装置
JP2005216477A (ja) 選択的なpo補正を利用したdvdデコーディング方法及び装置
An New Efficient Design of Reed-Solomon Encoder, Which has Arbitrary Parity Positions, without Galois Field Multiplier

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