CN110941505A - 产生错误校正电路的方法 - Google Patents

产生错误校正电路的方法 Download PDF

Info

Publication number
CN110941505A
CN110941505A CN201910712119.4A CN201910712119A CN110941505A CN 110941505 A CN110941505 A CN 110941505A CN 201910712119 A CN201910712119 A CN 201910712119A CN 110941505 A CN110941505 A CN 110941505A
Authority
CN
China
Prior art keywords
matrix
rows
error correction
bit
truncated
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.)
Pending
Application number
CN201910712119.4A
Other languages
English (en)
Inventor
吕士濂
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.)
Taiwan Semiconductor Manufacturing Co TSMC Ltd
Original Assignee
Taiwan Semiconductor Manufacturing Co TSMC Ltd
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 Taiwan Semiconductor Manufacturing Co TSMC Ltd filed Critical Taiwan Semiconductor Manufacturing Co TSMC Ltd
Publication of CN110941505A publication Critical patent/CN110941505A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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/152Bose-Chaudhuri-Hocquenghem [BCH] 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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/616Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction

Abstract

本揭露涉及一种产生用于校正从存储器读取的码字中的错误的错误校正电路的方法,其包括:建构G矩阵;将所述G矩阵变换成系统形式,所述经变换G矩阵由P矩阵及H矩阵构成;根据行重量对所述P矩阵的行进行排序;鉴于校正强度及数据位的数目确定待截断的所述P矩阵中的行的数目;通过截断所述P矩阵的具有第一行重量的所述经排序行且保持所述P矩阵的具有第二行重量的所述经排序行而产生截断P矩阵;以及根据所述截断P矩阵形成所述错误校正电路以校正所述码字的所述错误;其中所述第一行重量大于所述第二行重量。

Description

产生错误校正电路的方法
技术领域
本发明实施例涉及减少多位错误校正码的逻辑的系统与方法。
背景技术
错误校正码(ECC)用于许多应用中。普遍应用中的一者为检测并校正存储器中的位错误。随着积极的技术扩展、供应电压的降低及例如磁阻随机存取存储器(MRAM)及电阻式RAM(ReRAM)的新兴存储器技术的发展,对ECC逻辑的有效实施再次产生兴趣。
发明内容
本发明的一实施例涉及一种产生用于校正从存储器读取的码字中的错误的错误校正电路的方法,其包含:建构产生矩阵(generation matrix)(G矩阵);将所述G矩阵变换成系统形式,其中所述变换G矩阵由同位检查矩阵(P矩阵)及检查矩阵(H矩阵)构成;根据行重量对所述P矩阵的行进行排序;鉴于校正强度及数据位数目而确定待截断的所述P矩阵中的行的数目;通过截断所述P矩阵的具有第一行重量的所述经排序行且保持所述P矩阵的具有第二行重量的所述经排序行而产生截断P矩阵;以及根据所述截断P矩阵形成所述错误校正电路以校正所述码字的所述错误;其中所述第一行重量大于所述第二行重量。
本发明的一实施例涉及一种产生用于校正从存储器读取的码字中的错误的错误校正电路的方法,其包含:在给定t位错误校正码(ECC)强度的情况下建构产生矩阵(G矩阵);将所述G矩阵变换成系统形式,其中所述变换G矩阵由同位检查矩阵(P矩阵)及检查矩阵(H矩阵)构成;根据行重量依升序对所述P矩阵的行进行排序;确定待截断的所述P矩阵中的行的数目;确定所述经排序行的前x个群组具有小于数据位的数目k×q的行重量的总和,q小于第x+1个群组的行重量;针对所述第x+1个群组中的所述行,确定每一经组合t个行的行重量的总和;以及根据待截断的所述P矩阵形成所述错误校正电路以用于确定所述码字的所述错误。
本发明的一实施例涉及一种产生用于校正从存储器读取的码字中的错误的错误校正电路的方法,其包含:在给定t位错误校正码(ECC)强度的情况下建构产生矩阵(G矩阵);将所述G矩阵变换成系统形式,所述经变换G矩阵由同位检查矩阵(P矩阵)及检查矩阵(H矩阵)构成;通过使用所述H矩阵而产生所检索数据位向量的校正子(syndrome);组合所述P矩阵的u个行,u为不大于t的自然数;在经组合u个行匹配所述校正子时确定所述错误;以及根据所述校正子形成所述错误校正电路以用于校正所述码字的所述错误。
附图说明
当结合附图阅读时从以下详细描述最佳理解本公开的方面。应注意,根据产业中的标准实践,各种构件未按比例绘制。事实上,为了清楚论述可任意增大或减小各种构件的尺寸。
图1为图解说明根据一些实施例的具有BCH码方案的存储器系统的图式。
图2为呈非系统形式的示范性产生矩阵(G矩阵)的图式。
图3为展示呈系统形式的G矩阵及检查矩阵(H矩阵)的关系的图式。
图4为展示根据一些实施例的运用两位错误校正强度减少存储器装置的逻辑的方法的流程图。
图5为展示根据一些实施例的产生矩阵的图式。
图6为展示根据一些实施例的运用多位错误校正强度减少存储器装置的逻辑的方法的流程图。
图7为展示根据一些实施例的运用单位错误校正强度确定存储器装置中的错误位置的方法的流程图。
图8为展示根据一些实施例的运用多位错误校正强度确定存储器装置中的错误位置的方法的流程图。
图9为根据一些实施例的用于确定错误位置的示范性逻辑电路的系统图式。
具体实施方式
以下公开内容提供用于实施所提供标的的不同构件的许多不同实施例或实例。下文描述组件及配置的特定实例以简化本公开。当然,这些仅为实例且非意欲限制。举例来说,在以下描述中的第一构件形成于第二构件上方或上可包括其中所述第一构件及所述第二构件经形成直接接触的实施例,且也可包括其中额外构件可形成在所述第一构件与所述第二构件之间,使得所述第一构件及所述第二构件可不直接接触的实施例。另外,本公开可在各个实例中重复参考数字及/或字母。此重复出于简化及清楚的目的且本身不指示所论述的各个实施例及/或配置之间的关系。
此外,为便于描述,例如“在…下面”、“在…下方”、“下”、“在…上方”、“上”及类似者的空间相对术语可在本文中用于描述一个元件或构件与另一(些)元件或构件的关系,如图中图解说明。空间相对术语意欲涵盖除在图中描绘的定向以外的使用或操作中的装置的不同定向。设备可以其它方式定向(旋转90度或按其它定向),且可同样相应地解释本文中使用的空间相对描述符。
在各项实施例中,本公开提供一种通过使用系统检查矩阵减少实施多位错误校正码所需的逻辑的方法。再者,本公开提供一种定位多位码中的错误位的方法。
错误校正码(ECC)用于许多场合。ECC的应用中的一者为检测并校正半导体存储器中的错误。使用ECC来保护存储器的一般方案为通过将冗余检查位添加到半导体存储器的数据位。这些额外检查位扩展两个有效码字之间的距离。举例来说,距离可为有效码字与无效码字之间的位数。广泛使用的常见ECC集合称为博斯-乔赫里-霍昆格姆(BCH)码。广泛用于现代存储器中的BCH码为在有限域(伽罗瓦域)内使用多项式建构的循环错误校正码的类别。BCH码的优势为在码设计期间,对可由码校正的符号错误的数目存在精确控制。符号可为具有预定位数或大小的数据块。明确地说,可设计可校正多个位错误的二进制BCH码。BCH码的另一优势为可容易对其进行解码,即,经由称为校正子解码的代数方法。此简化使用硬件的解码器的设计。运用BCH码,可通过使用使用所设计码的多项式建构的“产生矩阵”(G矩阵)及“检查矩阵”(H矩阵)表示检查位及校正子位的产生。
图1为图解说明根据一些实施例的具有BCH码方案的存储器系统100的图式。存储器系统100包含存储器102及错误校正电路(或处理器)104。存储器102经配置以存储通过BCH码进行编码的码字。可为解码器或编码器的错误校正电路104耦合到存储器102以用于校正从存储器读取的码字中的至少一个错误。可通过耦合到存储器102及错误校正电路104的控制器从存储器102读出码字。为简洁起见,图1中未展示控制器。根据一些实施例,根据以下操作实施或形成错误校正电路104:建构产生矩阵(G矩阵);将所述G矩阵变换成系统形式,所述经变换G矩阵由同位检查矩阵(P矩阵)及检查矩阵(H矩阵)构成;根据行重量(rowweight;或可称作行权重)对所述P矩阵的行进行排序;鉴于校正强度及数据位的数目而确定待截断的所述P矩阵中的行的数目;通过截断所述P矩阵的具有第一行重量的经排序行且保持所述P矩阵的具有第二行重量的经排序行而产生截断P矩阵;以及根据截断P矩阵形成错误校正电路104。根据一些实施例,错误校正电路104根据码字产生校正子;且根据校正子确定错误。根据一些实施例,第一行重量大于第二行重量。通过使用上文操作来形成错误校正电路104,可减少错误校正电路104中的逻辑门的数目。在以下段落中描述错误校正电路的详细操作。
为简单起见,二进制BCH码在本公开中作为实例进行论述。在给定整数m(m大于或等于3)的情况下,存在具有长度2m-1的二进制BCH码。针对此BCH码校正t个位错误(称为t位错误校正BCH码),有效码字之间的最小距离为至少2t+1。因此,检查位的数目n-k必须大于或等于(m+1)*t,其中k为数据位的数目且n为码字长度。如提及,BCH为基于伽罗瓦域(GF)中的多项式的特殊种类的循环码。可使用GF(2m)中的原始多项式来建构这些码。假设α为GF(2m)中的原始元素,长度2m-1的t位错误校正BCH码的产生多项式g(x)为GF(2)内的最低次多项式,其具有α、α2、α3、…、α2t作为其根。假设
Figure BDA0002154129600000041
为α的最小多项式,则
Figure BDA0002154129600000042
产生函数可以矩阵形式表示(且称为“G矩阵”)。检查位为输入向量与G矩阵的点积。图2图解说明呈非系统形式的示范性产生矩阵(G矩阵)。根据一些实施例,G矩阵具有k个行及n个列,且行可为G矩阵的基本向量g=[g0g1g2…gn-k-1gn-k00…0]的循环移位。基本向量g中的元素可由产生多项式g(x)的系数组成,如图2中图解说明。
通过对G矩阵执行线性变换,获得呈系统形式的新G矩阵。图3为展示呈系统形式的产生矩阵(G矩阵)及检查矩阵(H矩阵)的关系的图式。图3展示H转置。在本发明实施例中,G矩阵由维数k×(n-k)的P矩阵及维数k×k的单位矩阵构成,其中n为码字的大小且k为数据字的大小。因此,G矩阵具有k×n的维数,表示为Gk×n
根据以下方程序产生检查位。
c=m·P
其中呈斜体形式的c及m分别表示检查位及数据位的位向量,且符号“·”表示点运算。
码字为数据位m及检查位c的串连。当G矩阵变换成系统形式时,可获得H矩阵,H矩阵基本上为与另一单位矩阵串连的P矩阵的转置。如图3中展示,数据位及检查位彼此分离。在本发明实施例中,通过获取P矩阵的转置且使转置P矩阵与维数(n-k)×(n-k)的单位矩阵串连而获得H矩阵,从而导致H(n-k)×n。图3展示n×(n-k)的HT
此外,为检测检索数据r是否为有效码字,根据以下方程序通过使用H矩阵而产生校正子S:
S=r·HT
其中HT表示H矩阵的转置。
错误校正码(ECC)基于信息冗余以检测并校正位错误。对于k位数据,校正各错误位所需的检查位(冗余位)的数目x需要满足:
x≧ceiling[log2(k+x+1)]
出现此方程序是因为在给定x个位的情况下,可编码指示位具有错误的位置的2x个不同信息。存在额外(+1)位以指示不存在错误。举例来说,如果存在128b数据,则可需要8个检查位(x=8)以校正各错误位,此是因为log2(128+8+1)<8。如果x=7,则方程序ceiling[log2(128+7+1)]为8且其大于7。不满足不等式。为满足不等式,x可等于8。因此,举例来说,为校正2个错误位(t=2),128个数据位可需要检查位的16个位。
如图3中展示,当G矩阵呈系统形式时,其与H矩阵共享同位检查矩阵(P矩阵)。在G矩阵与H矩阵之间共享P矩阵是有利的,此是因为仅需要设计单个电路用于检查位产生及校正子产生。
通常在运算系统中,数据大小通常为2的幂(举例来说,32、64、128等)。在一些实施例中,具有给定检查位大小的最大码字大小并非2的幂(其为2m-1,举例来说31、63、127等)。因此,通常使用“截断”码字(举例来说,63的码字以保护32的数据宽度)。可通过从H矩阵挑选列而获得截断码字。举例来说,如果数据大小为具有2个位的校正强度的128个位(128b),则检查位的数目为16。因此,在截断之后的所得码字为144b(=128b+16b)。因此,获取255b的码字且接着将其截断为所得144b码字。
如先前论述,通过数据位向量m及P矩阵的“点”运算产生检查位c,且通过检索位向量r及HT矩阵的“点”运算产生校正子位S。通过算术乘法及加法获得矩阵运算中的点积。在GF(2)中,乘法等效于逻辑AND函数且加法等效于逻辑XOR函数。因此,如果P矩阵(同样地,H矩阵)的项目为0,则“乘法”的结果也为0且无需“加上”0。根据一些实施例,产生检查位或校正子位所需的XOR门的数目与P矩阵中的1的数目成正比。为减少XOR门的数目,可截断具有P矩阵中的相对较大数目个1的行(或列)。明确地说,当截断P矩阵的项目为1时,启用XOR门的运算。P矩阵中的逻辑1的数目越大,错误校正电路(或解码器/编码器)中应使用的XOR门越多。因此,为最小化错误校正电路104中的XOR门的数目,应最小化P矩阵中的1的数目。在截断P矩阵中,通过截断P矩阵中具有较大数目个1的行而最小化1的数目。当根据截断P矩阵形成或制造错误校正电路104时,可减少错误校正电路104中的XOR门的数目。因此,在解码操作期间可节省解码器的资源。因此,在截断矩阵以获得截断码以拟合运算元素中的数据宽度时,选择或留存具有较小数目个1的行(列)。此最佳化的实例为肖氏码(Hsiao-Code)。可在(举例来说)M.Y.Hsiao,IBM Journal of Res.and Develop.,第14卷,第4章,第395-401页(1970)的“A Class of Optimal Minimum Odd-weight-column SEC-DED Codes”中找到肖氏码的参考。
在各项实施例中,本公开提供一种减少实施校正子与H矩阵中的列及列的组合(或P矩阵中的行)的匹配以进行校正(通过定位错误位的位置且接着翻转所述位置而完成校正)所需的逻辑门的数目的方法。将参考图4及图6详细论述方法。归因于H矩阵中的列的组合的大数目,可使用相对较大数目个逻辑门来实施校正子与H矩阵中的列的组合的匹配。因此,使用解码器中的大多数逻辑门或资源来实施校正子与列的组合的匹配。举例来说,具有两位校正能力(2位ECC强度)的128b数据的BCH码使用16个检查位。保护128b数据所需的码字为(255,239,2)码。此码具有达到码字的总数位的144b的16个检查位。由于矩阵为系统形式,故将存在16×16的单位矩阵,且可选择P矩阵的239个剩余行中的128个行。因此,存在C(239,128)个不同组合,其为近似2.5E70。此数目过大而无法具有最佳解。为最佳化逻辑门,在一些实施例中,探试算法如下:
(1)对于P矩阵的各行(或H矩阵的各列),确定行中的1的重量/权重(weight of 1's)。
(2)接着,用递增重量/权重(ascending weight)对行进行排序。
(3)选择来自经排序行前面的前j个行,其中j大于数据位的数目(k)。j可能远大于k,此是因为将存在具有相同重量的许多行。举例来说,可存在具有相同重量的x个行且仅选择x个行的一部分以满足数据宽度k。
(4)在具有相同重量的最后几行中选择(仅足以满足k个行的行)使得这些行与此重量前面的行重叠最多。此通过针对全部组合行选择具有最少数量的1的行而近似计算。
也如先前论述,为检查检索位向量r是否为有效码字,产生校正子S。另外,如果S为0向量,则所得码字有效。随后,通过选择码字的数据字段而获得正确数据。此为使用系统码字的优势中的一者,因为系统码字中的数据字段及检查字段分离。如果S为独热(仅1个位为“1”),则检查位中的一者出错。
在一些实施例中,由于P矩阵的各行彼此独立,故H矩阵的任何z个列的组合或H矩阵的小于z的列的任何组合也彼此独立,其中z小于或等于t。此外,校正子S为组合其中(若干)位出错的列的结果。举例来说,如果S匹配P中的n-k个行(H中的列)中的一者,则所述匹配列出错且检测到单位错误。如果所得校正子S等于H矩阵的经组合列i及j,则位置i及j中的位出错。将参考图7及图8详细论述确定存储器装置中的错误位置的方法。
图4为展示根据一些实施例的运用两位错误校正强度减少存储器装置的错误校正电路的逻辑门的方法的流程图。可使用所述方法来实施或产生图1的错误校正电路104。使用下文的示范性ECC码来图解说明所提出的最佳化方法。此实例为具有128个数据位的2位BCH错误校正码。在此实例中,参数为:m=8,k=128,n=144且n-k=16。在向量形式中,{g0,g1,g2,…g16}={10110111101100011},其可将产生多项式表示为1+x2+x3+x5+x6+x7+x8+x10+x11+x15+x16
参考图4及图5,在操作401中,在给定两位错误校正码(ECC)强度的情况下建构产生矩阵(G矩阵)。如图5中展示,G矩阵呈非系统形式,且G矩阵可为G矩阵中的基本向量的循环移位,即,向量形式{g0,g1,g2,…g16}={10110111101100011}。
在操作403中,将G矩阵变换成系统形式。经变换G矩阵由同位检查矩阵(P矩阵)及检查矩阵(H矩阵)构成,所述两个矩阵也呈系统形式。根据一些实施例,举例来说,对G矩阵执行线性变换的操作以获得呈系统形式的经变换G矩阵,如图3中图解说明。如图2中展示,G矩阵呈非系统形式。以下码图解说明将呈非系统形式的G矩阵变换成系统形式的实例:
Figure BDA0002154129600000071
接着,在操作405中,当获得呈系统形式的G矩阵时,可经由关系G=[P][I]自动获得P矩阵,其中矩阵[I]为单位矩阵。根据一些实施例,P矩阵为无单位矩阵[I]的G矩阵。在P矩阵中,P矩阵的各行的重量取决于行中的逻辑“一”(即,1)的数目。应注意,P矩阵为H矩阵的转置,即,P=HT。另外,P矩阵的行为根据行重量(逻辑1的数目)依升序进行排序。根据此实例,P矩阵的最低重量/权重(weight)为4。存在具有最低重量(即,逻辑1的数目为4)的8个行。此外,存在分别具有重量5、6、7及8的21、31、30及45个行。
在操作407中,接着按其行重量以群组形成经排序行。因此,各群组包括特定重量的行。举例来说,特定重量可为重量4、5、6、7及8。
在操作409中,确定待截断P矩阵中的行的数目以获得截断P矩阵。在此实例中,截断P矩阵的行的总数为128。
在操作411中,识别第x个群组。经排序行的前x个群组具有小于数据位的数目k×q的行重量的总和,其中q小于第x+1个群组的行重量。在此实例中,k为128。前x个群组为具有重量4的8个行、具有重量5的21个行、具有重量6的31个行、具有重量7的30个行的群组。第x+1个群组为具有重量8的行。前x个群组的行的总数为8+21+31+30=90。因此,q为38,即,128-90=38。
随后,在操作413中,随机地选择第x+1个群组中的q个行以使前x个群组及选定q个行的行重量的总和等于k。在此实例中,挑选具有重量8的38个(即,45个中的38个)行以形成总行数为128(即,8+21+31+30+38=128)的截断P矩阵。随后,在操作415中截断剩余行。截断行包括(如果有)第x+2个及更高群组,其具有比前x+1个群组更多的1。截断行也包括第x+1个群组中的行,但选定的q个行除外。
在操作413中,对第x+1个群组中的行执行算法以选取第x+1个群组中的q个行,即,具有重量8的45个中的38个行。为找到具有最小重量的行,下文中可使用算法的示范性码(例如,Python码)。
Figure BDA0002154129600000091
根据操作401到415,获得截断P矩阵及具有逻辑1的最小总数的组合矩阵。根据一些实施例,组合矩阵为用截断P矩阵中的两个行的对建构的矩阵。
然后,可根据截断结构设计逻辑门及逻辑电路(例如,错误校正电路104)。由于截断具有较大数目个1的P矩阵中的行(或H矩阵中的列),故运用截断P矩阵,可消除一些逻辑门,从而导致相对简单电路结构。明确地说,截断P矩阵经配置以执行与所检索位向量的“点”积的运算以产生检查位及校正子位,其中“点”积的运算为将截断P矩阵的对应项目与所检索位向量的乘积相加。在错误校正电路中,通过XOR门实行加法运算,且通过AND门实行乘法运算。因此,当截断P矩阵的项目为0时,将截断P矩阵的项目与所检索位向量的项目相乘的结果也为0(即,使用AND门)。当将两个项目相乘的结果为0时,无需执行在“点”积中加上“0”的操作,即,可省略XOR门。相反,当截断P矩阵的项目为1时,启用XOR门的操作。P矩阵中的逻辑1的数目越大,错误校正电路104中应使用的XOR门越多。因此,为最小化错误校正电路104中的XOR门的数目,应最小化P矩阵中的1的数目。在截断P矩阵中,通过截断P矩阵中具有较大数目个1的行而最小化1的数目。因此,可消除错误校正电路104中的一些逻辑门(例如,一些XOR门),从而导致相对简单电路结构。
图6为展示根据一些实施例的运用多位错误校正强度减少存储器装置中的错误校正电路的逻辑门的方法的流程图。错误校正电路可为图1的错误校正电路104。
参考图6,在操作601中,在给定t位错误校正码(ECC)强度的情况下建构产生矩阵(G矩阵),t大于一(1)。
操作403、405、407、409及411类似于图4中论述的操作。在操作411中识别第x个群组之后,针对第x+1个群组中的行,在操作613中确定每一经组合t个行的行重量的总和。行重量取决于行中的逻辑1的数目,如上文描述。将t等于2作为一实例,P矩阵中的每两个行通过逻辑“OR”函数逐字节求和以确定经组合行的各者的总和。
在操作615中,选择在与其它行组合时各导致小于未选定行的行重量的第x+1个群组中的q个行。随后,在操作617中截断具有较高行重量的剩余行。截断行包括(如果有)第x+2个及更高群组,其具有多于前x+1个群组的1。根据操作601到617,获得具有逻辑1的最小总数的截断矩阵。如上文描述,P矩阵中的逻辑1的数目越大,错误校正电路中应使用的XOR门越多。在截断P矩阵中,通过截断P矩阵中具有较大数目个1的行而最小化1的数目。因此,可消除错误校正电路中的一些逻辑门(例如,一些XOR门),从而导致相对简单的电路结构。
图7为展示根据一些实施例的运用单位错误校正强度确定存储器装置中的错误位置的方法的流程图。可通过图1的错误校正电路104执行所述方法。
在操作701中,在给定单位错误校正码(ECC)强度的情况下建构产生矩阵(G矩阵)。
参考图7,在将G矩阵变换成系统形式之后,在操作705中检索数据位向量。根据一些实施例,数据位向量可为从半导体存储器(例如,102)检索/读出的码字,且数据位向量可包含需要校正的位错误。
接着,在操作707中,通过使用H矩阵产生所检索数据位向量的校正子。可使用校正子来确定所检索数据位向量的错误。如上文描述,通过将所检索数据位向量与H矩阵的转置相乘而产生校正子。
在操作709中确定校正子向量是否等于零。如果肯定,则在操作711中将所检索数据位向量确定为有效。接着,在操作705中可检索另一数据位向量,接着通过操作707及709进行校正子测试。如果在操作709中校正子不等于零(在本发明实施例中给定单位ECC强度的情况下,校正子等于1),则在操作713中确定所检索数据位向量中存在错误。随后,通过与校正子向量比较,识别匹配校正子向量的P矩阵的一个行且确定错误位。
图8为展示根据一些实施例的运用多位错误校正强度确定存储器装置中的错误位置的方法的流程图。可通过图1的错误校正电路104执行所述方法。
参考图8,在操作801中,在给定t位错误校正码(ECC)强度的情况下建构产生矩阵(G矩阵),t大于一(1)。
操作403、705、707、709及711类似于图7中论述的操作。在操作709中,如果确定校正子向量不等于零(此意谓在给定t位ECC强度的情况下所检索数据位向量具有一或多个错误位),则在操作813中确定P矩阵的一个行是否匹配校正子。如果肯定,则在操作815中确定所检索数据位向量具有一个错误位。随后,通过与校正子向量比较,识别匹配校正子向量的P矩阵的一个行且确定错误位。
如果在操作813中确定P矩阵的单个行不匹配校正子(此意谓所检索数据位向量具有两个或两个以上错误位),则在操作817中确定P矩阵的两个行的组合是否匹配校正子。在一实施例中,通过逻辑互斥或“XOR”函数进行组合。如果经组合行匹配校正子,则在操作821中确定所检索向量具有两个错误位,且可确定与两个行相关联的两个错误位。
如果在操作817中确定P矩阵的两个行在组合时不匹配校正子,则在操作819中确定所检索数据位向量具有三个或三个以上错误位。重复操作817及819直到在给定t位ECC强度的情况下确定错误位位置。因此,如果校正子等于零,则所检索数据位向量有效且不具有错误位。如果校正子不等于零且一个行匹配校正子,则存在一个错误位。如果校正子不等于零且经组合的两个行匹配校正子,则存在两个错误位。同样,如果校正子不等于零且经组合的t个行匹配校正子,则存在t个错误位。
图9为根据一些实施例的用于确定错误位置的示范性逻辑电路的系统图式。
参考图9,当校正子不等于零时,比较校正子与截断P矩阵的行(或截断H矩阵的列)以确定位的错误位置。根据一些实施例,已通过截断具有相对较大重量的列而降低截断H矩阵的复杂性。因此,也降低确定错误位置的复杂性。举例来说,在图9中,通过使用XOR门,接着使用OR门以加上来自XOR门的输出而逐位比较H矩阵的列向量[v11,v12…v1n]与校正子S。当H矩阵的列向量[v11,v12…v1n]逐位匹配校正子S(即,OR门的输出为零)时,则列向量[v11,v12…v1n]出错,且检测到位错误。图9中展示的示范性逻辑电路用于检测一个错误位。为确定t位错误,需要更多逻辑门及布线。如先前论述,由于截断具有较大数目个1的H矩阵中的列中的行,故减少H矩阵的总列数。因此,大幅减少比较截断H矩阵与校正子S的操作,且可节省解码器的资源或逻辑门。
根据一些实施例,可通过半导体工艺形成或制造错误校正电路104。可在数字电子电路中或在计算机硬件、固件、软件中或在其组合中实施错误校正电路104。错误校正电路104可由特别设计的专用集成电路(ASIC)或适当编程的现场可编程门阵列(FPGA)补充或并入其中。
此外,可在有形地体现于机器可读存储装置中以由计算机处理器执行的计算机程序产品中实施实施例的设备;且可由执行程序以通过对输入数据操作且产生输出而执行实施例的功能的计算机处理器执行实施例的方法步骤。适合处理器(作为实例)包括通用微处理器及专用微处理器两者。适于有形地体现计算机程序指令的存储装置包括所有形式的非易失性存储器,包括(但不限于):半导体存储器装置,例如EPROM、EEPROM及快闪装置。
在一些实施例中,本公开提供一种产生用于校正从存储器读取的码字中的错误的错误校正电路的方法。所述方法包含:建构产生矩阵(G矩阵);将所述G矩阵变换成系统形式,所述经变换G矩阵由同位检查矩阵(P矩阵)及检查矩阵(H矩阵)构成;根据行重量对所述P矩阵的行进行排序;鉴于校正强度及数据位的数目而确定待截断的所述P矩阵中的行的数目;通过截断所述P矩阵的具有第一行重量的所述经排序行且保持所述P矩阵的具有第二行重量的所述经排序行而产生截断P矩阵;以及根据所述截断P矩阵形成所述错误校正电路以校正所述码字的所述错误;其中所述第一行重量大于所述第二行重量。
在一些实施例中,本公开还提供一种产生用于校正从存储器读取的码字中的错误的错误校正电路的方法。所述方法包含:在给定t位错误校正码(ECC)强度的情况下建构产生矩阵(G矩阵);将所述G矩阵变换成系统形式,所述经变换G矩阵由同位检查矩阵(P矩阵)及检查矩阵(H矩阵)构成;根据行重量依升序对所述P矩阵的行进行排序;确定待截断的所述P矩阵中的行的数目;确定所述经排序行的前x个群组具有小于数据位的数目k×q的行重量的总和,q小于第x+1个群组的行重量;以及针对第x+1个群组中的行,确定每一经组合t个行的行重量的总和;以及根据待截断的所述P矩阵形成所述错误校正电路以用于确定所述码字的所述错误。
在一些实施例中,本公开提供一种产生用于校正从存储器读取的码字中的错误的错误校正电路的方法。所述方法包含:在给定t位错误校正码(ECC)强度的情况下根据码字建构产生矩阵(G矩阵);将所述G矩阵变换成系统形式,所述经变换G矩阵由同位检查矩阵(P矩阵)及检查矩阵(H矩阵)构成;通过使用所述H矩阵而产生所检索数据位向量的校正子;组合所述P矩阵的u个行,u为不大于t的自然数;确定所述P矩阵的所述u个行在组合时匹配所述校正子;以及根据所述校正子形成所述错误校正电路以用于校正所述码字的所述错误。
前述内容略述数项实施例的特征,使得所属领域的技术人员可更好地理解本公开的方面。所属领域的技术人员应了解,其可容易地使用本公开作为用于设计或修改用于实行相同目的及/或实现本文中介绍的实施例的相同优点的其它工艺及结构的基础。所属领域的技术人员还应了解,这些等效构造不脱离本公开的精神及范围,且其可在本文中作出各种改变、代入及变更而不脱离本公开的精神及范围。

Claims (1)

1.一种产生用于校正从存储器读取的码字中的错误的错误校正电路的方法,其包含:
建构产生矩阵(G矩阵);将所述G矩阵变换成系统形式,其中所述经变换G矩阵由同位检查矩阵(P矩阵)及检查矩阵(H矩阵)构成;
根据行重量对所述P矩阵的行进行排序;
鉴于校正强度及数据位数目而确定待截断的所述P矩阵中的行的数目;
通过截断所述P矩阵的具有第一行重量的所述经排序行且保持所述P矩阵的具有第二行重量的所述经排序行而产生截断P矩阵;以及
根据所述截断P矩阵形成所述错误校正电路以校正所述码字的所述错误;
其中所述第一行重量大于所述第二行重量。
CN201910712119.4A 2018-09-21 2019-08-02 产生错误校正电路的方法 Pending CN110941505A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862734468P 2018-09-21 2018-09-21
US62/734,468 2018-09-21
US16/285,677 US10949298B2 (en) 2018-09-21 2019-02-26 System and method of reducing logic for multi-bit error correcting codes
US16/285,677 2019-02-26

Publications (1)

Publication Number Publication Date
CN110941505A true CN110941505A (zh) 2020-03-31

Family

ID=69883169

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910712119.4A Pending CN110941505A (zh) 2018-09-21 2019-08-02 产生错误校正电路的方法

Country Status (3)

Country Link
US (3) US10949298B2 (zh)
CN (1) CN110941505A (zh)
TW (1) TWI782215B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200074467A (ko) * 2018-12-17 2020-06-25 삼성전자주식회사 에러 정정 코드 회로, 반도체 메모리 장치 및 메모리 시스템
US11237907B2 (en) * 2020-05-29 2022-02-01 Taiwan Semiconductor Manufacturing Company, Ltd. Processing-in-memory instruction set with homomorphic error correction
KR20210157829A (ko) 2020-06-22 2021-12-29 에스케이하이닉스 주식회사 메모리 및 메모리의 동작 방법

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5745507A (en) * 1995-03-31 1998-04-28 International Business Machines Corporation Systematic symbol level ECC for use in digital memory systems
SG76501A1 (en) * 1996-02-28 2000-11-21 Sun Microsystems Inc Error detection and correction method and apparatus for computer memory
US6615387B1 (en) * 1998-09-22 2003-09-02 Seagate Technology Llc Method and apparatus for error detection
US6675349B1 (en) * 2000-05-11 2004-01-06 International Business Machines Corporation Error correction coding of data blocks with included parity bits
US6671833B2 (en) * 2002-01-08 2003-12-30 Parama Networks, Inc. Forward error correction and framing protocol
KR20040033554A (ko) * 2002-10-15 2004-04-28 삼성전자주식회사 에러 정정 부호화 장치 및 그 방법
KR20050044963A (ko) * 2003-11-08 2005-05-16 삼성전자주식회사 q차 제곱 잉여류를 이용한 준순환 저밀도 패러티 검사부호 생성 방법
US7665008B2 (en) * 2004-01-12 2010-02-16 Intel Corporation Method and apparatus for implementing a low density parity check code in a wireless system
US7325183B2 (en) * 2004-07-21 2008-01-29 Hewlett-Packard Development Company, L.P. Error correction code generation method and apparatus
US7900127B2 (en) * 2005-01-10 2011-03-01 Broadcom Corporation LDPC (Low Density Parity Check) codes with corresponding parity check matrices selectively constructed with CSI (Cyclic Shifted Identity) and null sub-matrices
US9141471B2 (en) * 2011-07-27 2015-09-22 Panasonic Intellectual Property Corporation Of America Encoding method, decoding method
JP5696068B2 (ja) * 2012-02-23 2015-04-08 株式会社東芝 符号化装置及び通信装置

Also Published As

Publication number Publication date
TWI782215B (zh) 2022-11-01
US20200097360A1 (en) 2020-03-26
US10949298B2 (en) 2021-03-16
US20230367673A1 (en) 2023-11-16
US11748192B2 (en) 2023-09-05
TW202036288A (zh) 2020-10-01
US20210191813A1 (en) 2021-06-24

Similar Documents

Publication Publication Date Title
US11740960B2 (en) Detection and correction of data bit errors using error correction codes
US8762821B2 (en) Method of correcting adjacent errors by using BCH-based error correction coding
JP5043562B2 (ja) エラー訂正回路、その方法及び前記回路を備える半導体メモリ装置
US11748192B2 (en) System and method of reducing logic for multi-bit error correcting codes
US9787329B2 (en) Efficient coding with single-error correction and double-error detection capabilities
JP2009070356A (ja) ハミングコードh行列における最小重み付けコード数を増やすべくチェック・ビットのパリティビット幅および追加チェック・ビットの使用によるデータブロックの症候群発生を減らす技術
JP2589957B2 (ja) 単一サブブロック・エラーと単一ビット・エラー検出のための符号化方法及びメモリ・システム
WO2019246527A1 (en) Method and apparatus for improved data recovery in data storage systems
US10567003B2 (en) List decode circuits
WO2018218125A1 (en) Non-binary error correcting code for correcting single symbol errors and detecting double bit errors
US7093183B2 (en) Symbol level error correction codes which protect against memory chip and bus line failures
US20170264320A1 (en) Code reconstruction scheme for multiple code rate tpc decoder
US10367529B2 (en) List decode circuits
US10567007B2 (en) Device and method of processing a data word using checkbits
Badack et al. Modified DEC BCH codes for parallel correction of 3-bit errors comprising a pair of adjacent errors
KR102532623B1 (ko) Raid에 맞춤화된 bch 인코딩 및 디코딩 방법, 및 그 장치
US8892985B2 (en) Decoding and optimized implementation of SECDED codes over GF(q)
CN106021012B (zh) 数据处理电路
US10404282B2 (en) Apparatuses and methods for integrated interleaved Reed-Solomon encoding and decoding
Kim et al. Hamming product code with iterative process for NAND flash memory controller
KR101304570B1 (ko) 패리티 체크 행렬 생성 방법, 이를 이용한 오류 정정 방법 및 장치, 오류 정정 장치용 디코더 그리고 오류 정정 장치를 포함하는 메모리 및 전자장치
Subbiah et al. Fast BCH syndrome generator using parallel polynomial division algorithm for GPGPUs
Bu et al. New byte error correcting codes with simple decoding for reliable cache design
Namba et al. High-speed parallel decodable nonbinary single-error correcting (SEC) codes
Jun et al. Single error correction, double error detection and double adjacent error correction with no mis-correction code

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