The present invention relates, in general, to the field of data storage and data communication. More particularly, the present invention relates to a technique for reducing parity bit-widths for check bit and syndrome generation through the use of additional check bits to increase the number of minimum weighted codes in the Hamming Code H-Matrix.
The use of Hamming code provides a method for protecting data blocks against single bit errors such that any single bit error can be detected and corrected. In general, a Hamming Code is usually described by the use of a matrix, called the Hamming matrix, or H-matrix. The H-Matrix is an (n−k) by n matrix which defines which data bits are used to combine with each check bit for generating the syndrome.
Many different methods have been employed to date in an attempt to minimize power consumption and reduce circuit complexity for parallel error correction code (ECC) applications. See, for example, Ghosh, S. et al.; “Selecting Error Correction Codes to Minimize Power in Memory Checker Circuits”; Journal of Low Power Electronics, Vol. 1, pp. 63-72, 2005 and Ghosh, S. et al.; “Reducing Power Consumption in Memory ECC Checkers”, Proceedings of the IEEE International Test Conference (ITC-2004), Charlotte, N.C., October 2004, the disclosures of which are herein incorporated by reference.
Prior ECC implementations use well-known equations for determining the minimum number of redundant bits required for the level of correction/detection and word length used. Generally, single error correction/single error detection (SEC/SED) or single error correction/double error detection (SEC/DED) techniques ECC are used, but higher levels of correction and detection are possible using the same basic concepts. The equations below provide the necessary Hamming distance and number of redundant bits needed to implement either SEC/SED or SEC/DED capability. The number of redundant bits (Check Bits) for a specific word length determines the error correction/detection capability, but in addition, the number of check bits determines the number of vectors available for each weighted code in the H-Matrix.
For SEC/SED, Hamming Distance=3:
For SEC/DED, Hamming Distance=4:
This is similar to the preceding equation with one more check bit required over that required for SEC/SED.
In most SEC/DEC applications, only “odd” weighted codes are used (commonly known as Odd Weighted Hsiao Codes), eliminating the use of Weight=2 codes. If all weight codes are used, the method to comprehend double bit detection becomes more complicated.
Previously, however, no one has disclosed the technique of using “excessive” or extra check bit redundancy in Single Error Correction/Single Error Detection (SEC/SED) for ECC applications to serve to reduce the width of the parity circuit for check bit or syndrome generation.
Briefly, the technique of the present invention disclosed herein is implemented through the addition of redundant Check Bit(s) to increase the number of minimum weight codes in the H-matrix. The technique may be implemented while adding no additional correction/detection capability, in order to reduce the number of data bits that are used for each check bit/syndrome generation.
Stated another way, the technique of the present invention utilizes extra redundant Check Bit(s), not for the purpose of extending error correcting capabilities, but rather to increase the number of low weighted codes, particularly Weight=2 codes for SEC/SED or Weight=3 codes for SEC/DED, in order to reduce the width of the parity generating circuitry.
The technique disclosed herein makes advantageous use of additional Check Bits to increase the number of minimum weighted codes in the H-matrix, without regard to improvement in error detection/correction capability in order to reduce the parity bit-widths used for check bit and syndrome generation.
Among the advantages realized in implementing the technique of the present invention are:
1) The width of the parity generators for check bit generation and for syndrome generation are significantly reduced and fewer Exclusive OR (XOR) circuits are required for each Check Bit/Syndrome;
2) The depth of the XOR “Tree” to generate the Check Bits or Syndrome can be reduced. When lower “Tree” depths (fewer gates in the propagation path) are used, faster operating speeds can be achieved which is especially important in clocked applications where delays within a pipeline delay limit overall device performance;
3) Each data bit is connected to fewer parity loads since only minimum weighted codes are used; and
4) The total number of XOR gates is reduced, even when additional Check Bits are comprehended. This results in less transient noise and lower power requirements.
In prior art techniques, increasing the number of Check Bits without improving the correction or detection capabilities could not be justified. However, with increased clock rates (higher frequency performance) and the need to keep power requirements down with increased frequency, adding check bits to reduce parity bit-width used in ECC will become an acceptable solution.
Particularly disclosed herein is a technique for selecting parity bit-widths which comprises establishing a first number of check bits required for generation of check bits and syndromes based upon the first number of check bits, utilizing a second number of check bits greater than the first number of check bits to increase the number of minimum weighted codes in a Hamming code H-matrix and generating the check bits and syndromes based upon the second number of check bits.
Also disclosed herein is a technique for selecting parity bit-widths comprising which comprises establishing a first number of check bits required for generation of check bits and syndromes based upon the first number of check bits and adding at least one additional check bit to the first number of check bits to provide a second number of the check bits and increase a number of low weighted Hamming codes.
Also further disclosed herein is an error correction circuit which comprises a write parity generator for receiving k write data bits on an input data bus, a memory coupled to the write parity generator for receiving n−k check bits, (where n is the number of codeword bits) and the k write data bits from the input data bus. A read parity generator is coupled to the memory for receiving n−k read check bits and k read data bits while a syndrome decoder is coupled to the read parity generator for receiving n−k syndrome bits. A data corrector is coupled to the syndrome decoder for receiving k inverse bits and the k read data bits from said memory. The data corrector supplies k bits of corrected data on an output data bus.
The aforementioned and other features and objects of the present invention and the manner of attaining them will become more apparent and the invention itself will be best understood by reference to the following description of a preferred embodiment taken in conjunction with the accompanying drawings, wherein:
With reference now to
The write parity generator 102 then supplies a number of check bits (n−k) to a memory 104 which is also coupled to the data bus D<0:k−1> for receiving the write data also supplied to the write parity generator 102. The memory 104, in turn, supplies a number of read check bits (n−k bits) and read data bits (k bits) to a read parity generator 106 comprising n−k number of generators as well. The read parity generator 106 provides a syndrome (n−k bits) to a syndrome decoder 108 comprising k decoders.
The syndrome decoder 108 provides k bits of invert data signal on an INV<0:k−1> bus to a data corrector block 110 comprising k correctors. The data corrector block 110 also receives k read data bits from the memory 104. Output of the data corrector 110 is k bits of corrected data on data output bus Q<0:k−1>.
In the particular implementation of the invention disclosed herein, “n” is the number of codeword bits; “k” is the number of data bits and “n−k” is the number of check bits and syndrome bits. The width (or number of inputs) of the write parity generator 102 is the maximum number of “1s” in a row of the H-matrix as will be described more fully hereinafter. In addition, the width of the read parity generator 106 is one more than the maximum number of “1s” in a row of the H-matrix. For reads, one more bit is required because the stored check bit value has to be added to the parity field in order to generate the syndrome to determine if an error has occurred. This too will be more fully described hereinafter. It should be noted that a non-zero syndrome indicates an error and the syndrome value is the vector to identify which bit failed. The weight of the code is determined by the number of “1s” in the column direction of the H-matrix.
Stated another way, the Hamming weight is the number of non-zero coefficients in a polynomial over GF(2). For example, w(01101010)=4. The Hamming distance between two words is the Hamming weight of their sum. For example, d.sub.Hamming=(01101010, 10101000)=w(11000010)=3. In comparing two bit patterns, the Hamming distance is the count of bits different in the two patterns. More generally, if two ordered lists of items are compared, the Hamming distance is the number of items that do not identically agree.
With reference additionally now to
The advantage of increasing the number of minimum weight codes can be seen by example with respect to this table. To this end, reference is made specifically to the rows indicated by 7 and 8 check bits respectively and their corresponding code weights 2 through 7 and 2 through 8. It should be noted that the code weight of “0” is not available inasmuch as it is a reserved vector signifying “no errors” while the code weight of “1” is also not available as it is a reserved vector for a “check bit error”.
For a 64 bit word, SEC/SED requires 7 Check Bits and this example results in:
If 64 vectors are selected using minimum weight codes, then: Number of Weight=2 codes: 21 Number of Weight=3 codes: 35 Number of Weight=4 codes: 8
When the above vectors are used, the maximum parity width required is 26 bits for writes (check bit generation) and 27 bits for reads (syndrome generation; one more than that required for writes). This can be seen particularly with respect to
In accordance with the technique of the present invention additional redundancy bits are added for the purpose of increasing the number of minimum weight codes. So, if one additional redundancy Check Bit is added, 8 check bits would be used.
As before, for a 64 bit word, SEC/SED, using 8 check bits, this example results in:
If 64 vectors are selected using minimum weight codes, then: Number of Weight=2 codes: 28 Number of Weight=3 codes: 36
When the above vectors are used, the maximum parity width required is 21 bits for writes (check bit generation) and bits for reads (syndrome generation). This can be seen particularly with respect to
With reference additionally now to
In like manner, with respect to the H-matrix of
With reference additionally now to
Briefly, the technique of the present invention disclosed herein is implemented through the addition of redundant Check Bit(s) to increase the number of minimum weight codes in the H-matrix. The technique may be implemented while adding no additional correction/detection capability, in order to reduce the number of data bits that are used for each check bit/syndrome generation.
Further, while in the examples disclosed herein SEC/SED has been utilized, it will be appreciated that the same concepts can be extended to ECC applications that have greater ECC capabilities, including multiple error correction. For SEC/SED, Weight=2 codes are increased, for SEC/DED, Weight=3 codes are increased by adding additional Check Bit(s). The advantages of the present invention may be achieved at the limited expense of using additional redundant Check Bit(s) and decoding a wider syndrome word.
While there have been described above the principles of the present invention in conjunction with specific examples and SEC/SED techniques, it is to be clearly understood that the foregoing description is made only by way of example and not as a limitation to the scope of the invention. Particularly, it is recognized that the teachings of the foregoing disclosure will suggest other modifications to those persons skilled in the relevant art. Such modifications may involve other features which are already known per se and which may be used instead of or in addition to features already described herein. Although claims have been formulated in this application to particular combinations of features, it should be understood that the scope of the disclosure herein also includes any novel feature or any novel combination of features disclosed either explicitly or implicitly or any generalization or modification thereof which would be apparent to persons skilled in the relevant art, whether or not such relates to the same invention as presently claimed in any claim and whether or not it mitigates any or all of the same technical problems as confronted by the present invention. The applicants hereby reserve the right to formulate new claims to such features and/or combinations of such features during the prosecution of the present application or of any further application derived therefrom.
As used herein, the terms “comprises”, “comprising”, or any other variation thereof, are intended to cover a non-exclusive inclusion, such that a process, method, article, or apparatus that comprises a recitation of certain elements does not necessarily include only those elements but may include other elements not expressly recited or inherent to such process, method, article or apparatus. None of the description in the present application should be read as implying that any particular element, step, or function is an essential element which must be included in the claim scope and THE SCOPE OF THE PATENTED SUBJECT MATTER IS DEFINED ONLY BY THE CLAIMS AS ALLOWED. Moreover, none of the appended claims are intended to invoke paragraph six of 35 U.S.C. Sect. 112 unless the exact phrase “means for” is employed and is followed by a participle.
The present application is a divisional of U.S. patent application Ser. No. 13/102,522, filed on May 6, 2011 which is a divisional of U.S. patent application Ser. No. 11/855,070, filed on Sep. 13, 2007, which issued as U.S. Pat. No. 7,962,837, all of which are incorporated herein by reference.
Number | Name | Date | Kind |
---|---|---|---|
3623155 | Hsiao et al. | Nov 1971 | A |
3825893 | Bossen et al. | Jul 1974 | A |
4072853 | Barlow et al. | Feb 1978 | A |
4334309 | Bannon et al. | Jun 1982 | A |
4388684 | Nibby et al. | Jun 1983 | A |
7721177 | Gammel et al. | May 2010 | B2 |
7725810 | Paumier et al. | May 2010 | B2 |
7853854 | Paumier et al. | Dec 2010 | B2 |
Number | Date | Country | |
---|---|---|---|
20120297275 A1 | Nov 2012 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 13102522 | May 2011 | US |
Child | 13564354 | US | |
Parent | 11855070 | Sep 2007 | US |
Child | 13102522 | US |