Method and system for on-ASIC error control decoding
12088322 ยท 2024-09-10
Assignee
Inventors
Cpc classification
G06F11/10
PHYSICS
H03M13/617
ELECTRICITY
H03M13/19
ELECTRICITY
H03M13/159
ELECTRICITY
International classification
H03M13/19
ELECTRICITY
H03M13/00
ELECTRICITY
Abstract
There are provided methods and systems for on-ASIC error control coding for verifying the integrity of data from a memory. For example, there is provided a method for encoding data into a beat. The method can be executed by a digital system configured to receive the data and construct the beat. The method includes assembling, by the digital system, a plurality of words consecutively. The plurality of words can include a first set of words in which each word has a length W, where W is the beat width. The plurality of words can further include a second set of words in which each word has a length that is smaller or equal to W. The method can further include constructing a parity word of length W, wherein each bit in the parity word is a parity associated with a distinct word in the first and second set of words. The method further includes adding the parity word to the plurality of words to form the beat.
Claims
1. A memory system comprising: a plurality of memory components; and a controller in communication with the plurality of memory components and configured to: store at least one codeword read from the plurality of memory components as beats of data organized to form a memory transfer block (MTB); and perform error correction code (ECC) operations on the beats of data within the MTB: wherein the ECC operations include performing (i) encoding the MTB data as a function of a data vector within each of the beats and a parity check matrix and (ii) decoding including computing a syndrome of the encoded MTB data and decoding corresponding Bose-Chaudhuri-Hocquenghem (BCH) codes; and wherein the performing of the encoding and decoding include vector matrix multiplication.
2. The system of claim 1, further including checking whether an error exists in the beat based on the syndrome vector.
3. The system of claim 2, wherein the memory is a dynamic random access memory (DRAM).
4. The system of claim 3, wherein the MTB data is representative of the at least one codeword.
5. The system of claim 4, wherein the digital system is an on-application specific integrated circuit (on-ASIC) error control coding (ECC) system communicatively coupled to a memory.
6. The system of claim 5, further including correcting the error.
7. The system of claim 6, wherein the beat is a Hamming code.
8. A method implemented via a plurality of memory components in communication with a controller comprising: a controller in communication with the plurality of memory components and configured to: store at least one codeword read from the plurality of memory components as beats of data organized to form a memory transfer block (MTB); and perform error correction code (ECC) operations on the stored codeword; wherein the ECC operations include performing (i) encoding the MTB data as a function of a data vector within each of the beats and a parity check matrix and (ii) decoding including computing a syndrome of the encoded MTB data and decoding corresponding Bose-Chaudhuri-Hocquenghem (BCH) codes; and wherein the encoding and decoding include vector matrix multiplication.
9. The method of claim 8, wherein the digital system is an on-application specific integrated circuit (on-ASIC) ECC system communicatively coupled to a memory.
10. The method of claim 9, further including correcting the error.
11. The method of claim 8, wherein the beat is a Hamming code.
12. The method of claim 11, wherein the digital system is an on-application specific integrated circuit (on-ASIC) ECC system communicatively coupled to a memory.
13. The method of claim 12, further including checking whether an error exists in the beat based on the syndrome vector.
14. The method of claim 13, wherein the memory is a dynamic random access memory (DRAM).
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1) Illustrative embodiments may take form in various components and arrangements of components. Illustrative embodiments are shown in the accompanying drawings, throughout which like reference numerals may indicate corresponding or similar parts in the various drawings. The drawings are only for purposes of illustrating the embodiments and are not to be construed as limiting the disclosure. Given the following enabling description of the drawings, the novel aspects of the present disclosure should become evident to a person of ordinary skill in the relevant art(s).
(2)
(3)
(4)
DETAILED DESCRIPTION
(5) While the illustrative embodiments are described herein for particular applications, it should be understood that the present disclosure is not limited thereto. Those skilled in the art and with access to the teachings provided herein will recognize additional applications, modifications, and embodiments within the scope thereof and additional fields in which the present disclosure would be of significant utility.
(6) Several embodiments and teachings featured herein provide one or more features for error control coding for assessing data integrity. While the embodiments described are discussed in the context of memory applications, one of ordinary skill in the art will readily recognize that the teachings, methods, systems, and example embodiments can be employed in other applications that require data integrity assessment. Furthermore, while the applications discussed relate to dynamic RAMs (DRAM), one of ordinary skill in the art will readily recognize that the concepts and example embodiments described apply to other types of memories and memory architectures without departing from the intended scope of the present disclosure.
(7) On-die ECC and link ECCs are often used with DRAM components in order to find errors in memory data before and after transmission of the data to another component. This approach increases the cost of DRAM components, both from a price and area standpoint. Furthermore, this typical approach requires that separate management tasks by the memory controller, and as such, it has a high reliability burden.
(8) The embodiments provided herein obviate the need for on-die ECC and link ECCs for DRAM components. In the embodiments, these components are replaced by an on-ASIC ECC in DRAM-managed solutions, conferring the advantages of reduced costs and increased reliability, in contrast to the typical approaches described above.
(9) Data coming from memories are typically organized in bursts of beats. In a DRAM component, the length of a beat in a burst is typically 16 or 32 bits. Each beat is thus 8 or 16 bit mode, depending on the direct query (DQ) mode of the component. In an example embodiment for use with a DRAM-managed solution, data/symbols can be grouped to be read from DRAM components together over multiple data bursts (e.g. beats) as a memory transfer block (MTB). The MTB is composed of burst length (BL)?W bits. For example, and not by limitation, BL is typically 16 or 32. Burst width (BW), which corresponds also to the readout burst width, is typically 8 or 16. In alternate embodiments, W can be 9 or 18, depending on the additional DQ or additional pins to exchange data such as DMI pins. In the embodiments, the beat as described above can be encoded to form the MTB that includes a code word for further error checking and correction.
(10)
(11) The bus 104 may connect the memory 102 to an encoder 106 which is configured to read data from the memory 102 and construct a codeword (not shown having error correction information therein. The codeword may be included within an MTB 108. The encoder 106 may be configured to construct the codeword based on data read from the memory 102 via the bus 104 and a predetermined parity check matrix (P) 105, which for example may be stored in a register. Data (d) may be encoded to form a payload that includes parity data in the form of a parity word (p). An exemplary encoding process will be described below with respect to the embodiment featured in
(12) The codeword 108 includes a plurality of words (d0, d1, - - - db) from the memory 102 and the parity word appended at the end of the codeword. In the embodiment shown in
(13) Furthermore, the MTB 108 of
(14) The system 100 can be configured to transmit the codeword 108 after encoding to another system (not shown in its entirety). The other system may have a front-end that has a decoder 110. The decoder 110 may be configured to unpack the codeword 108 and further determine based on the parity word p and additional resources whether there is an error in the data contained in the codeword 108. The decoder 110 may then take several actions, which include identifying the location of the error, fixing the error, or reporting the error and its location to a higher level system, which itself may take additional remedial actions. The system 100 may be configured to transmit beats of data in time t, where each data beat transmitted is structured as described above, i.e., like the codeword 108.
(15)
(16) The parity word p is computed as p=dP, where d is the data from the memory 102 (d=d0, d1 . . . db) and P is the parity check matrix 105 shown in
(17) In the exemplary encoding scheme 200, the BL=16, W=9, BL?W=144, which means that the codeword length is n=144. Considering an extended Hamming code for the parity (r=9), the payload is k=n?r=135.
(18) Turning now the decoder 110, its operation and structure are described with respect to
(19) Furthermore, similar to the parity register of the encoding scheme 200, the syndrome register denoted S is initialized to 0, and it can accumulate the partial contributions of the beats to finally contain the syndrome. Its content will be ready after the last data chunk has been processed. The integrity of the data may be assessed based on the syndrome and the codeword received y once the syndrome is finalized.
(20) Generally, the teaching of the present disclosure provides methods and application-specific systems configured to implementing on-ASIC ECC encoding or decoding on beats of data. For example, and without limitation, several general embodiments are now described. One example embodiment provides a method for encoding data into a beat. The method can be executed by a digital system configured to receive the data and construct the beat. The method includes assembling, by the digital system, a plurality of words consecutively.
(21) The plurality of words can include a first set of words in which each word has a length W, where W is the beat width. The plurality of words can further include a second set of words in which each word has a length that is smaller or equal to W. The method can further include constructing a parity word of length W, wherein each bit in the parity word is a parity associated with a distinct word in the first and second set of words. The method further includes adding the parity word to the plurality of words to form the beat.
(22) The method can further include receiving the data from a memory. The beat can have a burst length L, and the method can include forming additional beats of size L?W upon receiving the data. The method can include transmitting the plurality of beats in bursts, and burst can include a single beat. The memory may be a DRAM, and the beat may be a memory transfer block from the DRAM.
(23) The digital system is an on-application specific integrated circuit error control coding system communicatively coupled to the memory. The method can further include initializing a register of the digital system and saving the parity word in the register. Furthermore, adding the parity word to the plurality of words can include appending the parity word to the plurality of words. And appending the parity word can include placing the parity word after the second set of words.
(24) Another embodiment provides a system configured for encoding data into a beat. The system can include a first module configured to assemble a plurality of words consecutively. The plurality of words can include a first set of words in which each word has a length W, where W is the beat width. The plurality of words can further include a second set of words in which each word has a length that is smaller or equal to W. The system can include a second module configured to construct parity word of length W, and each bit in the parity word may be a parity associated with a distinct word in the first and second set of words. The system can further include a third module configured to add the parity word to the plurality of words to form the beat.
(25) The system can further include an input section configured to receive the data from a memory, and the beat can have a burst length L. Furthermore, the system can generate additional beats of size L?W upon receiving the data. The system of claim can further include a transmitter section configured to transmit the plurality of beats in bursts, and a burst can include a single beat.
(26) The memory may be a DRAM, and the beat may be a memory transfer block from the DRAM. The system is an on-application specific integrated circuit error control coding system communicatively coupled to the memory. The system can further include a plurality of registers configured to hold the data beat. Adding the parity word to the plurality of words can include appending the parity word to the plurality of words, for example, after the second set of words.
(27) Another embodiment provides a method for decoding a beat of data received by a digital system. The method can include generating a syndrome vector from the beat and from a predetermined parity check matrix. Generating the vector can include computing syndrome components based on the parity check matrix and the beat. The method can further include accumulating partial contributions of the beat into a register of the digital system based on the syndrome components in order to create the syndrome vector. The method further includes checking whether an error exists in the beat based on the syndrome vector and correcting the error. The beat may be received from a memory, which may be a DRAM. The beat may be a memory transfer block. The beat may be a Hamming code.
(28) Yet, another embodiment may provide a system configured for decoding a beat of data. The system may include a first module configured to generate a syndrome vector from the beat and from a parity check matrix by computing syndrome components based on the parity check matrix and the beat. The system may further include a second module configured to accumulate partial contributions of the beat into a register based on the syndrome components to create the syndrome vector.
(29) The system may be configured to check whether an error exists in the beat based on the syndrome vector. The first module is further configured to receive the beat from a memory. The memory may be a DRAM, and the beat may be a memory transfer block. The system may be an on-application specific integrated circuit (on-ASIC) error control coding (ECC) system communicatively coupled to a memory. The system may be configured to detect and correct an error based on the syndrome vector and the beat. The beat may be a Hamming code. Furthermore, the beat may be a two-dimensional memory transfer block. The system may be further configured to receive a plurality of beats.
(30) Those skilled in the relevant art(s) will appreciate that various adaptations and modifications of the embodiments described above can be configured without departing from the scope and spirit of the disclosure. Therefore, it is to be understood that, within the scope of the appended claims, the disclosure may be practiced other than as specifically described herein.