This application claims priority under 35 U.S.C. § 119 to Korean Patent Application No. 10-2022-0166030, filed Dec. 1, 2022, in the Korean Intellectual Property Office, the disclosure of which is incorporated herein by reference.
Embodiments of the present disclosure described herein relate to integrated circuit devices and, more particularly, to integrated circuit memory devices having error correction capability and methods of operating same.
A semiconductor memory device may include a volatile memory device, in which stored data disappear when a power supply is turned off, such as a static random access memory (SRAM) or a dynamic random access memory (DRAM), and a nonvolatile memory device, in which stored data are retained even when a power supply is turned off, such as a flash memory device, a phase-change RAM (PRAM), a magnetic RAM (MRAM), a resistive RAM (RRAM), or a ferroelectric RAM (FRAM). As will be understood by those skilled in the art, a DRAM is widely used as a system memory, a buffer memory, or a working memory of a computing system.
In addition, as the degree of integration of a DRAM is increased, the size of each of memory cells decreases, and a frequency of data errors in the memory cells increases. Accordingly, various error correction techniques for correcting errors in a DRAM device are being developed.
Embodiments of the present disclosure provide an error correction code having improved reliability, but with simplified structure, and a memory device including the error correction code, and an operating method of the error correction code.
According to an embodiment, a memory device includes a memory cell array and an error correction code (ECC) circuit that corrects an error of a data code read out from the memory cell array. The ECC circuit includes a syndrome calculating unit that operates with a plurality of syndromes based on the data code and an H-matrix, an error location detecting unit that generates an error vector based on the plurality of syndromes, and an error correcting unit that corrects an error of the data code based on the error vector and to output corrected data. The error location detecting unit is configured to generate a 0-th error vector element corresponding to a 0-th field element by performing a 0-th error location operation on the 0-th field element among a plurality of field elements based on an error location polynomial, and to generate a first error vector element corresponding to a first field element based on a result of the 0-th error location operation.
According to an embodiment, an ECC circuit configured to correct an error of a data code stored in a memory device includes a syndrome generating unit that generates a plurality of syndromes based on the data code read out from the memory device and a H-matrix, an error location detecting unit that generates an error vector based on the plurality of syndromes and a plurality of field elements of the H-matrix, and an error correcting unit that corrects an error of the data code based on the error vector. The error location detecting unit includes a coefficient calculator that generates a plurality of coefficients used in an error location polynomial based on the plurality of syndromes, and an error vector generator that generates the error vector based on the plurality of coefficients. The error vector generator includes a plurality of pair checkers configured to perform an error location operation on a plurality of pairs. The plurality of pairs includes at least two field elements among the plurality of field elements. The at least two field elements included in each of the plurality of pairs may satisfy a predetermined condition.
According to an embodiment, an operating method of an ECC circuit includes generating a plurality of syndromes based on a data code, generating an error vector based on the plurality of syndromes, and correcting an error of the data code based on the error vector. The generating of the error vector includes generating a first error vector element corresponding to a first field element by performing an error location operation on the first field element based on the plurality of syndromes and generating a second error vector element corresponding to a second field element based on a result of an error location operation on the first field element. The first field element and the second field element may be set to satisfy a predetermined rule.
According to an embodiment, a configuring method of an ECC circuit includes determining a H-matrix composed of a plurality of field elements based on a length of a data code and an error correction capability, configuring the plurality of field elements of the H-matrix into a plurality of pairs based on a predetermined rule, and configuring an error location detecting unit based on the plurality of pairs. Each of the plurality of pairs includes at least two field elements among the plurality of field elements, and the at least two field elements included in each of the plurality of pairs are determined to satisfy the predetermined rule. The error location detecting unit includes a plurality of pair checkers configured to generate at least two error vector elements corresponding to each of the plurality of pairs.
The above and other objects and features of the present disclosure will become apparent by describing in detail embodiments thereof with reference to the accompanying drawings.
The present invention now will be described more fully with reference to the accompanying drawings, in which preferred embodiments of the invention are shown. This invention may, however, be embodied in many different forms and should not be construed as being limited to the embodiments set forth herein; rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the invention to those skilled in the art. Like reference numerals refer to like elements throughout.
It will be understood that, although the terms first, second, third, etc. may be used herein to describe various elements, components, regions, layers and/or sections, these elements, components, regions, layers and/or sections should not be limited by these terms. These terms are only used to distinguish one element, component, region, layer or section from another region, layer or section. Thus, a first element, component, region, layer or section discussed below could be termed a second element, component, region, layer or section without departing from the teachings of the present invention.
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the present invention. As used herein, the singular forms “a,” “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprising”, “including”, “having” and variants thereof, when used in this specification, specify the presence of stated features, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, steps, operations, elements, components, and/or groups thereof. In contrast, the term “consisting of” when used in this specification, specifies the stated features, steps, operations, elements, and/or components, and precludes additional features, steps, operations, elements and/or components. In addition, the term “unit” may include hardware circuitry for performing respective functions of a semiconductor system and/or device, and/or include one or more computer readable programs for performing respective functions herein.
Unless otherwise defined, all terms (including technical and scientific terms) used herein have the same meaning as commonly understood by one of ordinary skill in the art to which the present invention belongs. It will be further understood that terms, such as those defined in commonly used dictionaries, should be interpreted as having a meaning that is consistent with their meaning in the context of the relevant art and will not be interpreted in an idealized or overly formal sense unless expressly so defined herein.
The memory controller 11 may store data in the memory device 100 or may read out data stored in the memory device 100. For example, the memory controller 11 may transmit a clock signal CK and a command/address signal CA to the memory device 100 and may exchange a data signal DQ and a data strobe signal DQS with the memory device 100. In an embodiment, through the data signal DQ and the data strobe signal DQS, data DATA may be transmitted from the memory controller 11 to the memory device 100 or may be transmitted from the memory device 100 to the memory controller 11. In an embodiment, the memory controller 11 and the memory device 100 may communicate with each other based on a DDR interface or an LPDDR interface, but the scope of the present disclosure is not limited thereto.
The memory device 100 may operate under control of the memory controller 11. In an embodiment, the memory device 100 may be a dynamic random access memory (DRAM) device, but the scope of the present disclosure is not limited thereto. For example, the memory device 100 may include a volatile memory such as an SRAM or a non-volatile memory such as a flash memory, a PRAM, and/or an RRAM.
In an embodiment, the memory device 100 may include an error correction code (ECC) circuit 110. The ECC circuit 110 may be configured to detect and correct an error(s) within data stored in the memory device 100. For example, the ECC circuit 110 may generate parity data by performing ECC encoding on first data received from the memory controller 11. The memory device 100 may store first data received from the memory controller 11 and parity data generated by the ECC circuit 110 together. While the memory device 100 is running, an error may occur in the first data stored in the memory device 100 due to various factors. When a read request for the first data is generated by the memory controller 11, the ECC circuit 110 may correct an error generated in the first data by performing ECC decoding based on the first data and the parity data corresponding to the first data. The memory device 100 may transmit the corrected first data to the memory controller 11.
In an embodiment, the ECC circuit 110 may correct errors within a predetermined error correction capability. When an error(s) occurring within data exceeds the error correction capability of the ECC circuit 110, the errors may not be corrected. As an example, an ECC circuit included in a DRAM device is configured to correct a 1-bit error. On the other hand, as the size of a DRAM device continues to become smaller, the number of error bits occurring in the DRAM device is increasing. Accordingly, the error correction capability of the ECC circuit 110 needs to be improved; however, when the error correction capability of the ECC circuit 110 is improved, the structure of the ECC circuit 110 may become too complicated.
In the present disclosure, an ECC circuit 110 having improved error correction capability and a relatively simple structure is provided. Embodiments of the ECC circuit 110 according to an embodiment of the present disclosure will be described with reference to the following drawings.
The memory cell array 120 may include a plurality of memory cells. The plurality of memory cells may be connected with a plurality of word lines and a plurality of bit lines. In an embodiment, the plurality of word lines may be driven by an X-decoder (or a row decoder) (X-DED), whereas the plurality of bit lines may be driven by a Y-decoder (or a column decoder) (Y-DEC). The CA buffer 130 may be configured to receive command/address signals CA and to temporarily store or buffer the received signals. The address decoder 140 may decode address signals ADDR stored in the CA buffer 130. The address decoder 140 may control the X-decoder and the Y-decoder based on the decoding result.
The command decoder 150 may decode a command CMD stored in the CA buffer 130. The command decoder 150 may control components of the memory device 100 based on the decoded result. For example, when a command signal stored in the CA buffer 130 is a write command (i.e., when a command received from the memory controller 11 is a write command), the command decoder 150 may control (i.e., perform ECC encoding) the ECC circuit 110 and may control (i.e., activate a write driver) an operation of the S/A & W/D 160 such that the data DATA received through the I/O circuit 170 is written into the memory cell array 120. In contrast, when a command signal stored in the CA buffer 130 is a read command (i.e., when a command received from the memory controller 11 is a read command), the command decoder 150 may control (i.e., preform ECC decoding) the ECC circuit 110 and may control (i.e., activate a sense amplifier) an operation of the S/A & W/D 160 such that data stored in the memory cell array 120 is read.
Under control of the command decoder 150, the S/A & W/D 160 may read out data from the memory cell array 120 through a plurality of bit lines or may write data into the memory cell array 120 through the plurality of bit lines. On the basis of the data signal DQ and the data strobe signal DQS, the I/O circuit 170 may receive the data DATA from the memory controller 11 or may transmit the data DATA to the memory controller 11.
Referring to
The error location detecting unit 112 may detect an error location generated in the read data RDT and the parity data PRT based on the syndrome Sy and the H-matrix H-MAT and may generate an error vector ERV based on the detected error location. For example, the error location detecting unit 112 may generate an error location polynomial based on the syndrome Sy. The error location detecting unit 112 may extract a plurality of field elements from the H-matrix H-MAT and may determine a solution of the error location polynomial from the plurality of field elements. The error location detecting unit 112 may generate the error vector ERV based on the solution of the error location polynomial.
The error correcting unit 113 may be configured to correct an error of the read data RDT based on the error vector ERV and to output the corrected read data RDT_COR. In an embodiment, the error location detecting unit 112 may be configured to search for or calculate the solution of the error location polynomial based on a Chien-search algorithm. In this case, the error location detecting unit 112 according to an embodiment of the present disclosure may be configured to generate a pair for the plurality of field elements and to search for, or calculate, the solution of the error location polynomial in units of pair thus generated. In this case, the structure may be simplified without degrading the performance of the error location detecting unit 112 (i.e., the ECC circuit 110 or ECC decoder). Hereinafter, the error location detecting unit 112 according to embodiments of the present disclosure will be more fully described with reference to the following drawings.
As shown in
The lower portion matrix HL may be designed based on the upper portion matrix HU. For example, each column of the lower portion matrix HL may be designed based on the corresponding column of the upper portion matrix HU. In more detail, the 0-th field element α0 is arranged in the 0-th column of the upper portion matrix HU. The 0-th field element α0 is arranged in the 0-th column of the lower portion matrix HL. The first field element α1 is arranged in the first column of the upper portion matrix HU. The third field element α3 is arranged in the first column of the lower portion matrix HL. The second field element α2 is arranged in the second column of the upper portion matrix HU. The sixth field element α6 is arranged in the second column of the lower portion matrix HL. The i-th field element αi is arranged in the i-th column of the upper portion matrix HU. The 3i-th field element α3i is arranged in the i-th column of the lower portion matrix HL. The 30th field element α30 is arranged in the 30th column of the upper portion matrix HU. A 90th field element α90 is arranged in the 30th column of the lower portion matrix HL.
In an embodiment, as shown in
The Galois field GF(25) and the H-matrix H-MAT described with reference to
The coefficient calculator 112a may receive the syndrome Sy from the syndrome calculating unit 111 and may calculate a plurality of coefficients Cx based on the received syndrome Sy. The plurality of coefficients may be variously modified depending on the error correction capability of the ECC circuit 110, a configuration of the H-matrix, an error location polynomial, or the like.
The error vector generator 112b may generate the error vector ERV based on the plurality of coefficients Cx. For example, the error vector generator 112b may include a plurality of checkers. Each of the plurality of checkers may be configured to search for, detect, or calculate a solution of an error location polynomial such as Equation 1.
L
2(x)=C2x2+C1x+C0
C2=S1,
C1=S12,
C
0
=S
1
3
+S
3 [Equation 1]
Referring to Equation 1, ‘x’ may denote a field element corresponding to a bit location of a data code; L2(x) may denote an error location polynomial for determining whether a bit of a location corresponding to the field element of x is an error; S1 may denote a first syndrome corresponding to a product of the data code (i.e., the read data RDT and the parity data PRT) and the upper portion matrix HU of the H-matrix; and, S3 may denote a third syndrome corresponding to a product of a data code (i.e., the read data RDT and the parity data PRT) and the lower portion matrix HL of the H-matrix. In an embodiment, ‘x’ may be a field element (one of α0 to α31) defined by the H-matrix H-MAT.
In an embodiment, a bit corresponding to the field element ‘x’ satisfying “L2(x)=0” may be an error bit in the data code. That is, the error vector ERV indicating the error location of the data code may be generated by searching for, detecting, or calculating the field element ‘x’ (or the solution of an error location polynomial) satisfying “L2(x)=0”. In an embodiment, there may be up to two field elements satisfying “L2(x)=0”. That is, the error location polynomial of L2(x) may be used to detect two error bit locations.
In more detail, as shown in
The 2nd order term calculator CA2 may be configured to receive a second coefficient C2 from the coefficient calculator 112a and to calculate a 2nd order term C2(αk)2 for the k-th field element αk. In an embodiment, the second coefficient C2 may indicate S1 (i.e., the first syndrome S1). In an embodiment, each of the second coefficient C2 and the 2nd order term C2(αk)2 may be a 5-bit binary vector.
The bit-wise XOR logic XOR may receive the 1st order term C1αk for the k-th field element αk from the 1st order term calculator CA1, the 2nd order term C2(αk)2 for the k-th field element αk from the 2nd order term calculator CA2, and the 0-th coefficient C0 from the coefficient calculator 112a. In an embodiment, the 0-th coefficient C0 may correspond to “S13+S3” (i.e., the sum of the cube of the first syndrome S1 and the third syndrome S3). The 0-th coefficient C0 may be a 5-bit binary vector. The bit-wise XOR logic XOR may perform a bit-wise XOR operation on received signals. The operation result of the bit-wise XOR logic XOR is provided to the determiner DET. In an embodiment, the operation result of the bit-wise XOR logic XOR may be L2(αk) and may be a 5-bit binary vector.
The determiner DET may determine whether an operation result L2(αk) of the bit-wise XOR logic XOR is all zero. When, the operation result L2(αk) of the bit-wise XOR logic XOR is all zero, then that means the k-th field element αk is a solution of an error location polynomial (i.e., in the data code, the bit of a location corresponding to the k-th field element αk is an error). In this case, the determiner DET may output a bit value of “ek” as a k-th error vector element ek. In contrast, when the operation result L2(αk) of the bit-wise XOR logic XOR is not all zero (i.e., at least one bit is “1”), the k-th field element αk may not be the solution of the error location polynomial. In this case, the determiner DET may output a bit value of “ek” as a k-th error vector element ek.
As described above, the checker CHK may search for, detect, determine, or calculate whether the k-th field element αk is a solution of an error location polynomial. In an embodiment, a data code may include a plurality of bits, and there may be a plurality of field elements respectively corresponding to locations of the plurality of bits. In this case, to search for, detect, determine, or calculate whether each of the plurality of field elements is a solution of an error location polynomial, the error vector generator 112b may include a plurality of checkers.
In an embodiment, the error vector generator 112b may be configured to search for the solution of the error location polynomial described above based on the Chien-search algorithm and to generate the error vector ERV. In an embodiment, the Chien-search algorithm may be performed in a partial parallel method or a full parallel method.
For example, it is assumed that 2-bit error correction for data of 16 bits is performed. In this case, because the data code is a total of 26 bits (data of 16 bits and parity of 10 bits), 26 columns are selected from the H-matrix H-MAT of
As shown in
In more detail, in a first stage (a=1), the 0-th checker CHK0 may determine whether the 0-th field element α0 is an error location polynomial solution (i.e., L2(α0)==0) and may output a 0-th error vector element e0 based on the determination result. Likewise, in the first stage (a=1), the first to third checkers CHK1 to CHK3 may respectively determine whether the first to third field elements α1 to α3 are solutions of the error location polynomial (i.e., L2(α1)==0, L2(α2)==0, and L2(α3)==0) and may respectively output first to third error vector elements e1 to e3 based on the determination result.
After the first stage (a=1) is completed, in a second stage (a=2), the 0-th to third checkers CHK0 to CHK3 may respectively determine whether the fourth to seventh field elements α4 to α7 are solutions of the error location polynomial (i.e., L2(α4)==0, L2(α5)==0, L2(α6)==0, and L2(α7)==0), and may respectively output fourth to seventh error vector elements e4 to e7 based on the determination result. Likewise, in a seventh stage (a=7), the 0-th and first checkers CHK0 and CHK1 may respectively determine whether the 24th and 25th field elements α24 and α25 are solutions of the error location polynomial (i.e., L2(α24)==0 and L2(α25)==0) and may respectively output 24th and 25th error vector elements e24 and e25 based on the determination result. The plurality of checkers CHK0 to CHK3 may output the error vector elements e0 to e25 by repeating the above-mentioned operation seven times during the first to seventh stages (“a=1” to “a=7”). A combination of the 0-th to 25th error vector elements e0 to e25 may be output as the error vector ERV.
As shown in
As described above, an embodiment of
Referring to
For example, the 0-th pair checker pCHK0 may perform an error location operation on the p0-th field element αp0 and the p1-st field element αp1 and may output a p0-th error vector element ep0 and a p1-st error vector element ep1 based on the operation result, respectively. The first pair checker pCHK1 may perform an error location operation for a p2-nd field element αp2 and a p3-th field element αp3, and may output a p2-nd error vector element ep2 and a p3-th error vector element ep3 based on the operation result, respectively. The second pair checker pCHK2 may perform an error location operation for a p4-th field element αp4 and a fifth field element αp5 and may output a p4-th error vector element ep4 and a p5-th error vector element ep5 based on the operation result, respectively. The m-th pair checker pCHKm may perform an error location operation for a p2m-th field element αp2m and a (p(2m+1))-th field element αp(2m+1) and may output a p2m-th error vector element ep2m and a (p(2m+1))-th error vector element ep(2m+1) based on the operation result, respectively. Likewise, the twelfth pair checker pCHK12 may perform an error location operation for a p24th field element αp24 and a 25th field element αp25 and may output a p24-th error vector element ep24 and a p25-th error vector element ep25 based on the operation result, respectively.
As described above, each of the plurality of pair checkers pCHK0 to pCHK12 may be configured to perform an error location operation on two field elements and to output two error vector elements. As such, compared to the embodiment of
In an embodiment, two field elements (e.g., αp2m and αp(2m+1)) calculated by one pair checker (e.g., pCHK0) are referred to as a “pair”. In this case, the pair may be composed of at least two field elements. Pairs used by each of the plurality of pair checkers pCHK0 to pCHK12 include different field elements. That is, each of the field elements operated by each of the plurality of pair checkers pCHK0 to pCHK12 may be an independent binary vector. Each of field elements included in each of pairs operated by each of the plurality of pair checkers pCHK0 to pCHK12 corresponds to one of columns included in the H-matrix and does not overlap each other. Field elements included in each of the pairs may be designed to satisfy a predetermined rule.
For example, the m-th pair operated by the m-th pair checker pCHKm may include the p2m-th field element αp2m and the (p(2m+1))-th field element αp(2m+1). In this case, the p2m-th field element αp2m and the (p(2m+1))-th field element αp(2m+1) may satisfy the relationship of Equation 2.
αp(2m+1)=αp2m+αj [Equation 2]
Referring to Equation 2, αj may indicate one of field elements of the Galois field GF(25) described with reference to
L
2(αp(2m))=S1(αp(2m))2+S12α2m+S13+S3
L
2(αp(2m+1))=L2(αp2m+αj)=S1(αp2m+αj)2+S12(αp2m+αj)+S13+S3 [Equation 3]
Variables of Equation 3 are described above, and thus a detailed description thereof will be omitted to avoid redundancy. For ease of explanation of an embodiment of the present disclosure, it is assumed that αj is α0 (i.e., 1). In this case, the error location polynomial of L2(αp(2m+1)) may be expressed as in Equation 4.
Variables of Equation 4 are described above, and thus a detailed description thereof will be omitted to avoid redundancy. As expressed in Equation 4, the error location polynomial of L2(αp(2m+1)) may be expressed as a polynomial for αp2m. In this case, L2(αp(2m+1)) may be expressed as in Equation 5.
Variables of Equation 5 are described above, and thus a detailed description thereof will be omitted to avoid redundancy. As described above, when the field elements αp2m and αp(2m+1) included in the m-th pair satisfy a condition described in Equation 2, as expressed in Equation 5, the error location polynomial L2(αp(2m+1)) for the (p(2m+1))-th field element αp(2m+1) may be expressed as the error location polynomial L2(αp2m) for the p2m-th field element αp2m and a common coefficient (S1+S12). In this case, because a separate decoding design for the error location polynomial L2(αp(2m+1)) for the (p(2m+1))-th field element αp(2m+1) is not required, the structure of the ECC circuit 110 may be simplified.
In an embodiment, pairs of field elements operated by the plurality of pair checkers pCHK0 to pCHK12 may be designed to each satisfy the same rule (e.g., a rule according to Equation 2). In this case, a common coefficient (e.g., a common coefficient (S1+S12) in Equation 5) used by each of the plurality of pair checkers pCHK0 to pCHK12 is the same, and thus the design structure for a coefficient operation may be simplified. As described above, pairs of field elements operated by the plurality of pair checkers pCHK0 to pCHK12 may be designed based on the same rules as each other, but the scope of the present disclosure is not limited thereto. For example, pairs of field elements operated by the plurality of pair checkers pCHK0 to pCHK12 may be designed based on different rules from one another. In more detail, some (e.g., pCHK0 to pCHK5) of the plurality of pair checkers pCHK0 to pCHK12 may use pairs that satisfy a first condition (or a first rule), and the others (e.g., pCHK6 to pCHK12) of the plurality of pair checkers pCHK0 to pCHK12 may use pairs that satisfy a second condition (or a second rule). In this case, pair checkers that use pairs satisfying the same condition (or the same rule) may use the same common coefficient. That is, some pair checkers (e.g., pCHK0 to pCHK5) that use pairs satisfying the first condition (or the first rule) may use the first common coefficient in common, and other pair checkers (e.g., pCHK6 to pCHK12) that use pairs satisfying the second condition (or the second rule) may use the second common coefficient in common.
Referring to
The 1st order term calculator CA1 may receive the first coefficient C1 from the coefficient calculator 112a. In an embodiment, the first coefficient C1 may be S13, but the scope of the present disclosure is not limited thereto. The 1st order term calculator CA1 may output a 1st order term S12αp2m based on the first coefficient C1 and the p2m-th field element αp2m. Each of the first coefficient C1, the p2m-th field element αp2m, and the 1st order term S12αp2m may be a 5-bit binary vector.
The 2nd order term calculator CA2 may receive the second coefficient C2 from the coefficient calculator 112a. The second coefficient C2 may be S1, but the scope of the present disclosure is not limited thereto. The 2nd order term calculator CA2 may output the 2nd order term S1(αp2m)2 based on the second coefficient C2 and the p2m-th field element αp2m. Each of the second coefficient C2, the p2m-th field element αp2m, and the 2nd order term S1(αp2m)2 may be a 5-bit binary vector.
The first bit-wise XOR logic XOR1 may receive the 1st order term S12αp2m from the 1st order term calculator CA1, may receive the 2nd order term S1(αp2m)2 from the 2nd order term calculator CA2, and may receive the 0-th coefficient C0 from the coefficient calculator 112a. In an embodiment, the 0-th coefficient C0 may be “S13+S3”, but the scope of the present disclosure is not limited thereto. The first bit-wise XOR logic XOR1 may perform a bit-wise XOR operation on the received signals. The operation result (i.e., L2(αp2m)) of the first bit-wise XOR logic XOR1 is provided to the first determiner DET1. The 0-th coefficient C0 and the operation result (i.e., L2(αp2m)) may be a 5-bit binary vector.
The first determiner DET1 may determine whether an operation result (i.e., L2(αp2m)) of the first bit-wise XOR logic XOR1 is all zero, and may output a p2m-th error vector element ep2m based on the determination result. Because an operation of the first determiner DET1 is similar to that of the determiner DET described with reference to
The second bit-wise XOR logic XOR2 may receive an operation result (i.e., L2(αp2m)) from the first bit-wise XOR logic XOR1 and may receive a common coefficient Ccm from the coefficient calculator 112a. In an embodiment, as described with reference to Equation 5, the common coefficient Ccm may be “S1+S12”, but the scope of the present disclosure is not limited thereto. The second bit-wise XOR logic XOR2 may perform a bit-wise XOR operation on the received signals. The operation result of the second bit-wise XOR logic XOR2 may be “L2(αp2m)+S1+S12”. In this case, as described with reference to Equation 5, “L2(αp2m)+S1+S12” is the same as L2(αp(2m+1)). That is, the operation result of the second bit-wise XOR logic XOR2 may be “L2(αp(2m+1))”.
The second determiner DET2 may receive the operation result L2(αp(2m+1)) of the second bit-wise XOR logic XOR2 and may determine whether the received signal is all zero. The second determiner DET2 may output a (p(2m+1))-th error vector element ep(2m+1) based on the determination result.
As described above, one pair checker (e.g., the m-th pair checker pCHKm) may perform an error location operation on at least two field elements designed to satisfy a predetermined rule. In this case, a circuit structure for performing an error location operation may be simplified. For example, in a case of the checker CHK described with reference to
For example, it is assumed that the m-th pair used in the m-th pair checker pCHKm includes αp2m and αp(2m+1), and satisfies “αp(2m+1)=αp2m+1”. In this case, the 0-th pair may include the first and eighteenth field elements α1 and α18; the first pair may include the second and fifth field elements α2 and α5; the second pair may include the third and 29th field elements α3 and α29; the third pair may include the fourth and tenth field elements α4 and α10; the fourth pair may include the sixth and 27th field elements α6 and α27; the fifth pair may include the seventh and 22nd field elements α7 and α22; the sixth pair may include the eighth and twentieth field elements α8 and α20; the seventh pair may include the ninth and sixteenth field elements α9 and α16; the eighth pair may include the eleventh and nineteenth field elements α11 and α19; the ninth pair may include the twelfth and 23rd field elements ≢12 and α23; the tenth pair may include thirteenth and fourteenth field elements α13 and α14; the eleventh pair may include the fifteenth and 24th field elements α15 and α24; and the twelfth pair may include seventeenth and 30th field elements α17 and α30. The field elements included in the above-mentioned pairs are simple examples, and the field elements included in each of the pairs may be variously modified according to a rule between field elements, which are included in each of the pairs, and a design method of the H-matrix.
For example, in the embodiment of
In an embodiment, as in the above description, a pair of three field elements operated by one pair checker may be designed to have a specific rule. For example, the three field elements calculated by the m-th pair checker pCHKm may be αp3m, αp(3m+1), and αp(3m+2). In this case, the three field elements αp3m, αp(3m+1), and αp(3m+2) may be designed to have a rule such as Equation 6.
αp(3m+1)=αp3m+αk
αp(3m+2)=αp3m+αj [Equation 6]
Referring to Equation 6, because αk may be one of a plurality of field elements included in the Galois field GF(25) of
Variables of Equation 7 are similar to those described above, and thus a detailed description thereof is omitted to avoid redundancy. As described in Equation 7, a result (i.e., L2(αp(3m+1))) of an error location operation on αp(3m+1) may be expressed as the sum of a result (i.e., L2(αp3m)) of an error location operation on αp3m and the first common coefficient (S1+S12). A result (i.e., L2(αp(3m+2))) of an error location operation on αp(3m+2) may be expressed as the sum of a result (i.e., L2(αp3m)) of the error location operation on αp3m and the second common coefficient (S1α+S12α). That is, an error location operation on two field elements among the three field elements is performed by using the result of an error location operation on the other field element, and thus a structure of the error location detecting unit 112 may be simplified.
The m-th pair checker pCHKm−1 may include the 1st order term calculator CA1, the 2nd order term calculator CA2, the first bit-wise XOR logic XOR1, the first determiner DET1, the second bit-wise XOR logic XOR2, the second determiner DET2, a third bit-wise XOR logic XOR3, and a third determiner DET3. The configurations and operations of the 1st order term calculator CA1, the 2nd order term calculator CA2, the first bit-wise XOR logic XOR1, and the first determiner DET1 are similar to those described with reference to
The second bit-wise XOR logic XOR2 may receive an operation result (i.e., L2(αp3m)) from the first bit-wise XOR logic XOR1 and may receive a first common coefficient Ccm1 from the coefficient calculator 112a. In an embodiment, as described with reference to Equation 7, the first common coefficient Ccm1 may be “S1+S12”, but the scope of the present disclosure is not limited thereto. The second bit-wise XOR logic XOR2 may perform a bit-wise XOR operation on the received signals. The operation result of the second bit-wise XOR logic XOR2 may be “L2(αp3m)+S1+S12”. In this case, as described with reference to Equation 7, “L2(αp3m)+S1+S12” is the same as L2(αp(3m+1)). That is, the operation result of the second bit-wise XOR logic XOR2 may be “L2(αp(3m+1))”.
The second determiner DET2 may receive the operation result L2(αp(3m+1)) of the second bit-wise XOR logic XOR2 and may determine whether the received signal is all zero. The second determiner DET2 may output a (p(3m+1))-th error vector element ep(3m+1) based on the determination result.
The third bit-wise XOR logic XOR3 may receive an operation result (i.e., L2(αp3m)) from the first bit-wise XOR logic XOR1 and may receive a second common coefficient Ccm2 from the coefficient calculator 112a. In an embodiment, as described with reference to Equation 7, the second common coefficient Ccm2 may be “S1α+S12α”, but the scope of the present disclosure is not limited thereto. The third bit-wise XOR logic XOR3 may perform a bit-wise XOR operation on the received signals. The operation result of the third bit-wise XOR logic XOR3 may be “L2(αp3m)+S1α+S12α”. In this case, as described with reference to Equation 7, “L2(αp3m)+S1α+S12α” is the same as L2(αp(3m+2)). That is, the operation result of the third bit-wise XOR logic XOR3 may be “L2(αp(3m+2)”.
The third determiner DET3 may receive the operation result L2(αp(3m+2)) of the third bit-wise XOR logic XOR3 and may determine whether the received signal is all zero. The third determiner DET3 may output a (p(3m+2))-th error vector element ep(3m+2) based on the determination result.
As described above, the ECC circuit 110 according to an embodiment of the present disclosure may include a pair checker capable of performing an error location operation on at least two field elements simultaneously or in parallel. In this case, as described above, the error vector generation time may be shortened and, at the same time, the structure of the ECC circuit 110 may be simplified.
For example, it is assumed that the ECC circuit 110 corrects the maximum of a 3-bit error. In this case, an error location polynomial operated by the error vector generator 112b may be expressed as Equation 8.
L
3(x)=C3x3+C2x2+C1x1+C0 [Equation 8]
Referring to Equation 8, L3(x) may be an error location polynomial for detecting a location of a 3-bit error in a data code. C3 may be a coefficient of the 3rd order term for a field element of ‘x’ and may be “S13+S3”; C2 may be a coefficient of the 2nd order term for the field element of ‘x’, and may be “(S13+S3)S1”; C1 may be a coefficient of the 1st order term for the field element of ‘x’, and may be “S12S3+S5”; and, C0 may be a 0-th coefficient (i.e., a constant term) and may be “(S13+S3)2+S1(S12S3+S5)”. Each of S1, S3, and S5 may be a syndrome Sy operated by the syndrome calculating unit 111 (see
When the ECC circuit 110 corrects the maximum of a 3-bit error, as in the above description, one pair checker pCHK may perform an error location operation on two field elements included in one pair. For example, it is assumed that two field elements (e.g., αp2m and αp(2m+1)) included in one pair satisfy a condition of “αp(2m+1)=αp2m+1”. In this case, a result of the error location operation on two field elements (e.g., αp2m and αp(2m+1)) included in one pair may be expressed as in Equation 9.
Variables of Equation 9 are described above, and thus a detailed description thereof will be omitted to avoid redundancy. As described in Equation 9, a result of error location operation on “αp(2m+1)” may be calculated by using a result of an error location operation on “αp2m”, and such a structure may be similar to that of the above-described embodiments.
For example, as illustrated in
The 1st order term calculator CA1 may receive the first coefficient C1 from the coefficient calculator 112a and may calculate a 1st order term C1αp2m by using the first coefficient C1. The first coefficient C1 and the 1st order term C1αp2m may be a 5-bit binary vector. In an embodiment, the 1st order term C1αp2m may be a 1st order term for the p2m-th field element αp2m of the error location polynomial L2(x).
The first 2nd order term calculator CA2-1 may receive the second coefficient C2 from the coefficient calculator 112a and may calculate a 2nd order term C2(αp2m)2 by using the second coefficient C2. The second coefficient C2 and the 2nd order term C2(αp2m)2 may be a 5-bit binary vector. (C2(αp2m)2) may be a 2nd order term for the p2m-th field element αp2m of the error location polynomial L2(x).
The 3rd order term calculator CA3 may receive a third coefficient C3 from the coefficient calculator 112a and may calculate a 3rd order term C3(αp2m)3 by using the third coefficient C3. The third coefficient C3 and the 3rd order term C3(αp2m)3 may be a 5-bit binary vector.
The first bit-wise XOR logic XOR1 may respectively receive the 1st order term C1αp2m, the 2nd order term C2(αp2m)2, and the 3rd order term C3(αp2m)3 from the 1st order term calculator CA1, the first 2nd order term calculator CA2-1, and the 3rd order term calculator CA3 and may receive the 0-th coefficient C0 from the coefficient calculator 112a. The first bit-wise XOR logic XOR1 may perform a bit-wise XOR operation on the received signals. The operation result L3(αp2m) is provided to the first determiner DET1. The first determiner DET1 may output a p2m-th error vector element ep2m based on the operation result L3(αp2m) of the first bit-wise XOR logic XOR1.
As described with reference to Equation 9, an error location operation result of αp(2m+1) included in a pair together with αp2m may be calculated by using L3(αp2m). In other words, the second 2nd order term calculator CA2-2 may receive the third coefficient C3 from the coefficient calculator 112a and may calculate the 2nd order term C3{(αp2m)2+αp2m} by using the third coefficient C3.
The second bit-wise XOR logic XOR2 may receive the 2nd order term C3{(αp2m)2+αp2m} from the second 2nd order term calculator CA2-2 and may receive the common coefficient Ccm from the coefficient calculator 112a. The common coefficient Ccm may correspond to the sum of C1, C2, and C3. The second bit-wise XOR logic XOR2 may perform a bit-wise XOR operation on the received signals. The operation result may be L3(αp(2m+1)) and may be provided to the second determiner DET2. The second determiner DET2 may output the (p(2m+1))-th error vector element ep(2m+1) based on the operation result L3(αp(2m+1)).
In an embodiment, two field elements (e.g., αp2m and αp(2m+1)) included in one pair may satisfy a condition of “αp(2m+1)=αp2m+αj”. In this case, a result of an error location operation of two field elements (e.g., αp2m and αp(2m+1)) included in one pair may be expressed as in Equation 10.
Referring to Equation 10, αj may indicate one of the field elements of the Galois field GF(25) (i.e., a Galois field required to design the H-matrix H-MAT) described with reference to
As described in Equation 10, a result of error location operation on “αp(2m+1)” may be calculated by using a result of an error location operation on “αp(2m+1)”, and such a structure may be similar to that of the above-described embodiments.
For example, as illustrated in
The configurations and operations of the 1st order term calculator CA1, the first 2nd order term calculator CA2-1, the 3rd order term calculator CA3, the first bit-wise XOR logic XOR1, and the first determiner DET1 are similar to those described with reference to
As described above, according to embodiments of the present disclosure, the ECC circuit 110 may configure a plurality of field elements, which indicate locations of the data code, into pairs so as to satisfy a predetermined rule or a predetermined condition and may perform an error location operation on each pair (i.e., at least two field elements) by using one pair checker. In this case, faster decoding than an ECC decoder based on a Chien-search algorithm in a partial-parallel method is possible. Moreover, a simpler structure than the ECC decoder based on a Chien-search algorithm in a full-parallel method is possible.
In operation S130, the memory device 100 may generate a syndrome. For example, data corresponding to the read address may be a data code including user data and parity data. The ECC circuit 110 of the memory device 100 may generate a plurality of syndromes based on the data code and the H-matrix H-MAT.
In operation S140, the memory device 100 may generate an error vector by using pair checkers. For example, the ECC circuit 110 of the memory device 100 may be implemented as described with reference to
In operation S150, the memory device 100 may correct errors of the raw data based on the error vector. In operation S160, the memory device 100 may transmit the corrected data to the memory controller 11. In an embodiment, when error correction fails by the ECC circuit 110 of the memory device 100 (i.e., when ECC decoding fails), the memory device 100 may notify the memory controller 11 of decoding failure by using information such as a decoding status flag DSF.
In operation S220, pairs of field elements in the H-matrix may be determined or designed based on predefined rules or predefined conditions. For example, the H-matrix H-MAT may be composed of a plurality of field elements. The plurality of field elements may respectively correspond to locations of a plurality of bits included in the data code. The plurality of field elements may be classified or determined in pair units (i.e., a unit of at least two field elements) based on the method described with reference to
In operation S230, an error location detector may be configured based on the determined pairs. For example, when it is determined that a first pair includes a first field element and a second field element, a pair checker that performs an error location operation on the first pair may be configured to search for, detect, determine, or calculate whether the first field element and the second field element are solutions of an error location polynomial. A configuration of a pair checker is described with reference to
In an embodiment, the ECC circuit 1200 may be located on a data path between the memory controller 1100 and the memory device 1300. The ECC circuit 1200 may be configured to correct an error of data transmitted and received between the memory controller 1100 and the memory device 1300. In an embodiment, the ECC circuit 1200 may operate based on the operating method described with reference to
The memory device 3200 may include a memory ECC circuit 3210. The memory ECC circuit 3210 may generate a second parity for the write data and the first parity, which are received from the memory controller 3100, and may correct errors of the read data and the first parity based on the read data, the first parity, and the second parity, which are stored in the memory device 3200.
In an embodiment, each of the controller ECC circuit 3110 and the memory ECC circuit 3210 may operate based on the method described with reference to
In an embodiment, the memory package 4000 may be provided as a single semiconductor package by being packaged in a manner such as package on package (POP), ball grid arrays (BGAs), chip scale packages (CSPs), plastic leaded chip carrier (PLCC), plastic dual in-line package (PDIP), die in waffle pack, die in wafer form, chip on board (COB), ceramic dual in-line package (CERDIP), plastic metric quad flat pack (MQFP), thin quad flatpack (TQFP), small outline (SOIC), shrink small outline package (SSOP), thin small outline (TSOP), thin quad flatpack (TQFP), system in package (SIP), multi-chip package (MCP), wafer-level fabricated package (WFP), wafer-level processed stack package (WSP), or the like.
The buffer die 4200 may communicate with an external host device (or a memory controller). The buffer die 4200 may be configured to temporarily store data to be stored in the plurality of memory dies 4110 to 4140 or to temporarily store data read out from the plurality of memory dies 4110 to 4140. In an embodiment, the buffer die 4200 may include an ECC circuit 4210. The ECC circuit 4210 may generate a parity for data to be stored in the memory dies 4110 to 4140 or may correct errors of data read out from the memory dies 4110 to 4140. In an embodiment, the ECC circuit 4210 may be implemented or may operate based on the method described with reference to
according to an embodiment of the present disclosure. Referring to
The RCD 6100 may receive a command/address CA and a clock signal CK from an external device (e.g., a host or a memory controller). On the basis of the received signals, the RCD 6100 may deliver the command/address CA to the plurality of memory devices 6210 to 6290 and may control the plurality of data buffers DB.
The plurality of memory devices 6210 to 6290 may be respectively connected with the plurality of data buffers DB through memory data lines MDQ.
In an embodiment, each of the plurality of memory devices 6210 to 6290 includes the ECC circuit described with reference to
In an embodiment, the memory module 6000 illustrated in
In an embodiment, the memory module 6000 may further include an ECC circuit located outside the plurality of memory devices 6210 to 6290, and the ECC circuit may be configured to operate based on the method described with reference to
In an embodiment, one of the plurality of memory devices 6210 to 6290 may be configured to store parity data. The parity data may be provided from an external device (e.g., a host or a memory controller). In this case, the external device may include the ECC circuit described with reference to
Referring to
The main processor 7100 may control all operations of the system 7000, more specifically, operations of other components included in the system 7000. The main processor 7100 may be implemented as a general-purpose processor, a dedicated processor, or an application processor.
The main processor 7100 may include at least one CPU core 7110 and further include a controller 7120 configured to control the memories 7200a and 7200b and/or the storage devices 7300a and 7300b. In some embodiments, the main processor 7100 may further include an accelerator 1130, which is a dedicated circuit for a high-speed data operation, such as an artificial intelligence (AI) data operation. The accelerator 1130 may include a graphics processing unit (GPU), a neural processing unit (NPU) and/or a data processing unit (DPU) and be implemented as a chip that is physically separate from the other components of the main processor 7100.
The memories 7200a and 7200b may be used as main memory devices of the system 7000. Although each of the memories 7200a and 7200b may include a volatile memory, such as static random access memory (SRAM) and/or dynamic RAM (DRAM), each of the memories 7200a and 7200b may include non-volatile memory, such as a flash memory, phase-change RAM (PRAM) and/or resistive RAM (RRAM). The memories 7200a and 7200b may be implemented in the same package as the main processor 7100.
The storage devices 7300a and 7300b may serve as non-volatile storage devices configured to store data regardless of whether power is supplied thereto, and have larger storage capacity than the memories 7200a and 7200b. The storage devices 7300a and 7300b may respectively include storage controllers (STRG CTRL) 7310a and 7310b and NVM (Non-Volatile Memory)s 7320a and 7320b configured to store data via the control of the storage controllers 7310a and 7310b. Although the NVMs 7320a and 7320b may include flash memories having a two-dimensional (2D) structure or a three-dimensional (3D) V-NAND structure, the NVMs 7320a and 7320b may include other types of NVMs, such as PRAM and/or RRAM.
The storage devices 7300a and 7300b may be physically separated from the main processor 7100 and included in the system 7000 or implemented in the same package as the main processor 7100. In addition, the storage devices 7300a and 7300b may have types of solid-state devices (SSDs) or memory cards and be removably combined with other components of the system 100 through an interface, such as the connecting interface 7480 that will be described below. The storage devices 7300a and 7300b may be devices to which a standard protocol, such as a universal flash storage (UFS), an embedded multi-media card (eMMC), or a non-volatile memory express (NVMe), is applied, but without being limited thereto.
The image capturing device 7410 may capture still images or moving images. The image capturing device 7410 may include a camera, a camcorder, and/or a webcam. The user input device 7420 may receive various types of data input by a user of the system 7000 and include a touch pad, a keypad, a keyboard, a mouse, and/or a microphone. The sensor 7430 may detect various types of physical quantities, which may be obtained from the outside of the system 7000, and convert the detected physical quantities into electric signals. The sensor 7430 may include a temperature sensor, a pressure sensor, an illuminance sensor, a position sensor, an acceleration sensor, a biosensor, and/or a gyroscope sensor. The communication device 7440 may transmit and receive signals between other devices outside the system 7000 according to various communication protocols. The communication device 7440 may include an antenna, a transceiver, and/or a modem. The display 7450 and the speaker 7460 may serve as output devices configured to respectively output visual information and auditory information to the user of the system 7000. The power supplying device 7470 may appropriately convert power supplied from a battery (not shown) embedded in the system 7000 and/or an external power source, and supply the converted power to each of components of the system 7000. The connecting interface 7480 may provide connection between the system 7000 and an external device, which is connected to the system 7000 and capable of transmitting and receiving data to and from the system 7000. The connecting interface 7480 may be implemented by using various interface schemes, such as advanced technology attachment (ATA), serial ATA (SATA), external SATA (e-SATA), small computer small interface (SCSI), serial attached SCSI (SAS), peripheral component interconnection (PCI), PCI express (PCIe), NVMe, IEEE 1394, a universal serial bus (USB) interface, a secure digital (SD) card interface, a multi-media card (MMC) interface, an eMMC interface, a UFS interface, an embedded UFS (eUFS) interface, and a compact flash (CF) card interface. In an embodiment, the memories 7200a and 7200b are the memory device including the ECC circuit described in
The above description refers to detailed embodiments for carrying out the present disclosure. Embodiments in which a design is changed simply or which are easily changed may be included in the present disclosure as well as an embodiment described above. In addition, technologies that are easily changed and implemented by using the above embodiments may be included in the present disclosure. While the present disclosure has been described with reference to embodiments thereof, it will be apparent to those of ordinary skill in the art that various changes and modifications may be made thereto without departing from the spirit and scope of the present disclosure as set forth in the following claims.
According to an embodiment of the present disclosure, it is possible to provide an error correction code, which has improved reliability, improved performance, and a simple structure as a decoding circuit configuration of an error correction code circuit is simplified, a memory device including the error correction code, and an operating method of the error correction code.
While the present disclosure has been described with reference to embodiments thereof, it will be apparent to those of ordinary skill in the art that various changes and modifications may be made thereto without departing from the spirit and scope of the present disclosure as set forth in the following claims.
Number | Date | Country | Kind |
---|---|---|---|
10-2022-0166030 | Dec 2022 | KR | national |