Patent Publication Number: US-9886340-B2

Title: Memory system and method for error correction of memory

Description:
This invention was made with government support under 1016262 awarded by the National Science Foundation and HR0011-12-2-0019 awarded by the DOD/DARPA. The government has certain rights in the invention. 
    
    
     BACKGROUND 
     1. Technical Field 
     The present invention relates generally to a memory system and a method for the error correction of memory, and more particularly to a memory system and a method for the error correction of memory that can improve the reliability and performance of the memory system. 
     This application claims priority of Korean Patent Application No. 10-2015-0138269 filed on Sep. 30, 2015, the entire contents of which is incorporated herein by reference. 
     2. Description of the Related Art 
     Recently, as the process scaling of Dynamic Random Access Memory (DRAM) continues to increase, a tendency for an error to occur in a memory cell increases. DRAM is memory that has finite data retention characteristics. Accordingly, as the process scaling of DRAM increases, the reliability of data stored in a memory cell decreases. 
     Furthermore, as the cell failure rate increases, conventional solutions, such as the addition of reserved repair resources and reliance on error-correcting code (ECC), have problems in that high area overhead, the disadvantage of the latency of data coding, and interference between in-DRAM ECC (ECC within a DRAM chip) and rank-level ECC (ECC across DRAM chips) occur. 
     As a result, there is a need for technology that is capable of overcoming the above-described problems. 
     Meanwhile, the above-described background technologies correspond to technical information that has been possessed by the present inventor in order to devise the present invention or that has been acquired in the process of devising the present invention, and cannot be necessarily viewed as well-known technology that had been known to the public before the filing of the present invention. 
     SUMMARY 
     At least one embodiment of the present invention is intended to prevent interference between in-DRAM ECC and rank-level ECC. 
     At least one embodiment of the present invention is intended to reduce the area overhead of a memory chip to which ECC is applied. 
     At least one embodiment of the present invention is intended to provide a memory system that can improve the reliability of memory. 
     In accordance with an aspect of the present invention, there is provided a memory system including at least one memory chip, wherein the at least one memory chip includes: a bank comprising a data bit array comprising a plurality of first memory cells, and a first parity array comprising a plurality of second memory cells, and configured to store first parity bits, adapted to repair one or more faulty cells of the first memory cells within the data bit array, in the plurality of second memory cells; a position bit region comprising a position bit array comprising a plurality of third memory cells, and configured to store position bits, i.e., the location information of the faulty cells of the plurality of first memory cells within the data bit array; and a first ECC engine unit configured to compare an address, applied from the outside, with the position bits read from the position bit region with respect to a chunk including a plurality of data bursts read from the data bit array, to detect a single error data burst from the plurality of data bursts included in the chunk, and to perform first error correction on the detected data burst. 
     In accordance with another aspect of the present invention, there is provided a method for the error correction of memory, the method being performed by a memory system including a plurality of memory chips, the method including: reading, by a first ECC engine unit included in each of the plurality of memory chips, a chunk including a plurality of data bursts, first parity bits, and position bits from each of the plurality of memory chips; extracting, by the first ECC engine unit, a single data burst having an error from the plurality of data bursts using the position bits; and performing, by the first ECC engine unit, first error correction using the first parity bit corresponding to the extracted error data burst. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The above and other objects, features and advantages of the present invention will be more clearly understood from the following detailed description taken in conjunction with the accompanying drawings, in which: 
         FIG. 1  is a block diagram showing a memory system according to an embodiment of the present invention; 
         FIGS. 2 and 3  are block diagrams showing a memory chip according to an embodiment of the present invention; and 
         FIG. 4  is a flowchart illustrating a method for the error correction of memory according to an embodiment of the present invention. 
     
    
    
     DETAILED DESCRIPTION 
     Embodiments of the present invention will be described in detail with reference to the accompanying drawings in order to enable those having ordinary knowledge in the technical field, to which the present invention pertains, to easily practice the present invention. However, the present invention may be implemented in various forms, and is not limited to embodiments described herein. Furthermore, in order to clearly illustrate the present invention in the drawings, components and portions unrelated to the following description will be omitted. Throughout the specification, similar reference symbols will be assigned to similar components. 
     Throughout the specification and the claims, when one component is described as being “connected” to another component, the one component may be “directly connected” to the other component or “electrically connected” to the other component via a third component. Throughout the specification and the claims, unless explicitly described to the contrary, the terms “include” and “comprise” and their variants, such as “includes,” “including,” “comprises” and “comprising,” will be understood to imply the inclusion of described components, not the exclusion of any other components. 
     The present invention will be described in detail below with reference to the accompanying diagrams. 
       FIG. 1  is a block diagram showing a memory system  10  according to an embodiment of the present invention. 
     The memory system  10  according to an embodiment of the present invention may include a memory module  100 , a second ECC engine unit  300 , and a memory controller  400 . The memory module  100  may include one or more memory chips  1000 . 
     The memory controller memory controller  400  may control the general operation of the memory system  100 , and may interface with the memory chips  1000 . For example, the memory controller  400  reads and writes data by controlling the memory chips  1000 . 
     Furthermore, the memory controller  400  may control the operation of the memory chips  1000  by applying various types of signals, for example, a command and an address, adapted to control the memory chips  1000 . 
     Furthermore, the memory controller  400  may provide data signals to the memory chips  1000  or receive data signals from the memory chips  1000  while communicating with the memory module  100 . 
     The memory module  100  may include at least one rank  200 , and the rank  200  may include a plurality of memory chips  1000 . For example, each rank  200  may include nine memory chips  1000 . Accordingly, the memory module  100  may include one or more memory chips  1000  that are mounted on a module board. 
     Each of the memory chips  1000  may include a memory cell array in which memory cells are arranged in the form of an array. The memory cell array may be divided into a plurality of regions. For example, the memory cell array may include one or more banks. Accordingly, the rank  200  may be divided into a plurality of banks, and each of the banks may be divided into one or more arrays. Furthermore, each of the banks  1110  may include a plurality of pages. A page may be defined as a unit that stores data transferred from the bank  1110  to a sense amplifier  1160  when a single activate command (ACT) is applied by the memory controller  400 . 
     The memory chips  1000  may be dynamic random access memory (DRAM), such as double data rate synchronous dynamic random access memory (DDR SDRAM), graphics double data rate (GDDR) SDRAM, low power double data rate (LPDDR) SDRAM, Rambus dynamic random access memory (RDRAM), or the like. 
     Each of the memory chips  1000  may be used to store a data bit, a first parity bit, a position bit, and a second parity bit. 
     In this case, the data bit may refer to data that is stored in the memory chip  1000 . Furthermore, the first parity bit may be information that is used to perform the first error correction of a data bit. Furthermore, the position bit has location information that allows a single data burst having an error to be extracted from a chunk including a plurality of data bursts, and includes information about the location of a single data burst having an error. Accordingly, the position bit may refer to information that enables a data burst, to which the first parity bit is to be applied, to be determined. Moreover, the second parity bit may be information that is used to perform the error correction of the position bit. In this case, the data burst may refer to a DRAM burst. 
     Furthermore, for example, the eight memory chips  1000  are used for data, and the ninth memory chip  2000  stores a third parity and is used for second error correction. In this case, the second error correction may be performed by the second ECC engine unit  300 . 
     For example, the ninth memory chip  2000  may store a third parity bit that is used to correct the error of data read from at least one memory chip  1000 . Accordingly, the memory system  10  may further include a third parity storage unit  2000 . 
     Furthermore, the second ECC engine unit  300  may perform the second error correction using the data read from the at least one memory chip  1000  and the third parity bit corresponding to the read data. In this case, the second error correction performed by the second ECC engine unit  300  may be viewed as corresponding to “rank-level ECC” in that it is performed on a rank including one or more memory chips  1000 . 
     According to an embodiment of the present invention, the memory system  10  may be applied to systems, such as a desktop, a notebook, a mobile device, etc., but is not limited thereto. 
       FIGS. 2 and 3  are block diagrams showing a memory chip  1000  according to an embodiment of the present invention. 
     The memory chip  100  according to an embodiment of the present invention may include at least one memory cell array  1100 . 
     Furthermore, the memory cell array  1100  may include at least one bank  1110  in which a plurality of memory cells are arranged in rows and columns. A row decoder  1140  and a column decoder  1150  configured to select word lines and bit lines to be connected to the memory cells may be connected to each bank  1110 . 
     Furthermore, the bank  1110  according to an embodiment of the present invention may include a data bit array  1111  and a first parity array  1112 . 
     Meanwhile, the data bit array  1111  is an array configured to store data, and may include a plurality of first memory cells. The first parity array  1112  is an array configured to store a parity bit configured to perform the error correction of the data read from the data bit array  1111 , and may include a plurality of second memory cells. 
     The first parity array  1112  according to an embodiment of the present invention may store first parity bits, used to repair faulty cells of first memory cells within the data bit array  1111 , in a plurality of second memory cells. The faulty cells may refer to cells, such as a cell that does not permanently and completely operate due to a problem related to manufacture and a cell that does not operate under a specific voltage condition or at specific operation timing. 
     Meanwhile, the memory cell array  1100  may include a position bit region  1120 . The position bit region  1120  is an array configured to store position bits, and may be composed of an independent array separate from the bank  1110 . 
     The row decoder  1140  and the column decoder  1150  configured to select word lines and bit lines to be connected to memory cells may be connected to the position bit region  1120 . 
     The position bit region  1120  may include a position bit array  1121  comprising a plurality of third memory cells, and configured to store position bits, i.e., the location information of one or more faulty cells of a plurality of first memory cells within the data bit array  1111 . 
     For example, the position bits may store the location information of the faulty cells of the plurality of first memory cells in the position bit array  1121  when the memory system  10  operates. In this case, the position bit array  1121  may store position bits received from nonvolatile memory (not shown) configured to store position bits, i.e., the location information of the faulty cells of the first memory cells. 
     In this case, the size of the position bit array  1121  may be smaller than the size of the bank  1101 . Accordingly, the read time required for the memory cell array  1100  may be reduced. 
     Furthermore, the position bit region  1120  may include a second parity array  1122  including a plurality of fourth memory cells, and configured to store the second parity bits used to repair one or more faulty cells of the third memory cells within the position bit array  1121 . 
     Meanwhile, the row decoder  1140  and the column decoder  1150  according to an embodiment of the present invention may be shared by the bank  1110  and the position bit region  1120 . For example, the position bit region  1120  is located adjacent to the bank  1110 , and the position bits may be latched into the column decoder  1150  of the bank when the bank  1110  is activated in response to an activate command (ACT). 
     Meanwhile, the memory chip  1000  according to an embodiment of the present invention may include at least one sense amplifier  1160 . The sense amplifier  1160  may be a global dataline sense amplifier (GDSA). The sense amplifier  1160  detects and amplifies a data bit, a first parity bit, a position bit, and a second parity bit that are read from the memory cell array. 
     Meanwhile, the memory chip  1000  according to an embodiment of the present invention may include a first ECC engine unit  1200 . The first ECC engine unit  1200  may perform an ECC operation using first parity bits during the process of detecting/correcting error. In this case, the ECC operation performed by the first ECC engine unit  1200  may be viewed as corresponding to “in-DRAM ECC” in that it is performed inside the memory chip  1000 . 
     Furthermore, the first ECC engine unit  1200  may compare an address applied by the memory controller  400  with position bits read from the position bit region with respect to a chunk including a plurality of data bursts read from the data bit array  1111 , may detect a single error data burst from the plurality of data bursts included in the chunk, and may perform first error correction on the detected data burst. 
     For example, the first ECC engine unit  1200  may read a plurality of data bursts from the data bit array  1111 . In this case, the first ECC engine unit  1200  may group the plurality of data bursts into a single chunk. 
     Furthermore, the parity bits used to perform error correction on a data burst having an error may be read from the first parity array  1112  to the first ECC engine unit  1200 . 
     Furthermore, the position bits may be read from the position bit array  1121  to the first ECC engine unit  1200 . 
     In this case, the first ECC engine unit  1200  specifies the single data burst having an error in the chunk by comparing an address and a position bit applied from the outside. That is, the position bit may be compared with the address in order to determine whether the first parity bit is to be applied to the data burst. Accordingly, the first ECC engine unit  1200  may perform first error correction using only a single data burst, a single parity bit, and a single position bit. 
     Accordingly, from the point of view of the memory controller  400 , when a data command and an address are applied, the memory controller  400  has encoding/decoding latency (coding latency) for error correction for a specific location. The first ECC engine unit  1200  performs re-mapping when a data burst, to which a parity bit determined by a position bit will be applied, corresponds to the specific location, thereby fetching encoding and decoding latency for error correction. 
     For example, the memory controller  400  may provide extra access latency to a data burst when the memory controller  400  knows the corresponding data burst requiring extra coding latency for in-DRAM ECC. If the memory controller  400  fixes a location for a data burst to which extra access latency is to be provided, the extra access latency is provided when a burst having the fixed location is accessed, and the first ECC engine unit  1200  matches a data burst, to which a parity bit determined by the position bit is to be applied, to access to the burst having the fixed location, thereby ensuring extra coding latency. 
     Furthermore, the first ECC engine unit  1200  may perform first error correction based on single error correction, double error detection (SECDED) Hamming codes. In this case, although the size of a chunk may be as large as the size of a bank, the size of the chunk may be limited to the row size of the data bit array  1111  so that a data burst and a parity bit are prepared in a bit line sense amplifier (BLSA) after a row has been activated in response to an activate command. 
     Furthermore, the first ECC engine unit  1200  may perform first error correction by applying double error correction (DEC). Accordingly, the error may be corrected in the data burst of the chunk that is specified by the position bit. If a single-bit error occurs in the remaining bursts, the second ECC engine unit  300  may correct the error. 
     Meanwhile, the memory chip  1000  according to an embodiment of the present invention may include input and output pads  1300 . Accordingly, data stored in each memory cell may be input and output via a corresponding input and output pad. 
     Meanwhile, the memory chip  1000  according to an embodiment of the present invention may include a cache  1400 . The cache  1400  may store the addresses of one or more faulty cells of a plurality of memory cells, and may store data corresponding to the addresses of the faulty cells. 
     The cache  1400  may include a cache tag array (not shown) configured to store the addresses of one or more faulty cells of a plurality of memory cells. Furthermore, the cache  1400  may include a cache data array (not shown) configured to store data stored at the addresses of the faulty cells of the first memory cells. 
     Accordingly, the cache  1400  may receive an address from the memory controller  400 , and may output data corresponding to the address of a faulty cell stored in the cache data array if the received address matches the address of the faulty cell stored in the cache tag array and thus the address of a data burst including error data is accessed. Accordingly, since the cache  1400  and the bank  1110  may be accessed in parallel, the latency of a DRAM operation may not be increased. 
     Furthermore, the cache  1400  may be located more adjacent to the input and output pads  1300  than to the bank  1110   
     Meanwhile, the memory chip  1000  according to an embodiment of the present invention may include a Bloom filter  1500 . The Bloom filter  1500  may be use to determine whether an address applied by the memory controller  400  corresponds to the address of a faulty cell. 
     For example, the Bloom filter  1500  may use N independent hash functions that convert an input number into another number within a limited range R. Furthermore, the Bloom filter  1500  may has static random access memory (SRAM) storage (not shown) composed of R bits. The individual bits may be set to  0  in an initial stage, and thus may be cleared. Thereafter, the Bloom filter  1500  may execute a hash function for an address including a known faulty cell, and may set a bit, at the location of the SRAM storage (not shown) corresponding to a hash value, to  1 . Accordingly, the Bloom filter  1500  may apply a hash function to an applied address, may check a location corresponding to a hash value, and may determine that the applied address is not an address including a faulty cell if a bit value at the corresponding location is  0  and determine that the applied address may be an address including a faulty cell if a bit value at the corresponding location is  1 . 
     In contrast, a method for the error correction of memory according to an embodiment shown in  FIG. 4  includes steps that are processed in time series in the memory system  10  shown in  FIGS. 1 to 3 . Accordingly, descriptions that are omitted in the following description but have been described above with reference to the memory system  10  shown in  FIGS. 1 to 3  may be applied to the method for the error correction of memory according to the embodiment shown in  FIG. 4 . 
     The memory system  10  according to an embodiment of the present invention may read a chunk including a plurality of data bursts, first parity bits and position bits from a plurality of memory chips at step S 100 . 
     For example, the data bit array  1111 , the first parity bit array  1112 , the position bit array  1121  and the second parity bit array  1122  may share the row decoder  1140  and the column decoder  1150 . Accordingly, it may be possible to receive an activate command and an address from the memory controller  400 , to allow a position bit corresponding to the received address to be latched into the column decoder  1150  when the bank  1110  corresponding to the corresponding row address is activated, and to allow the position bit to be used for a read command RD or a write command WR. 
     Furthermore, the memory system  10  allows a chunk including a plurality of data bursts, first parity bits and position bits to be read from the plurality of memory chips  1000  to the first ECC engine unit  1200  included in each of the plurality of memory chips  1000 . 
     Meanwhile, a single data burst having an error may be extracted from the chunk including a plurality of data bursts by comparing an address, applied from the outside by the first ECC engine unit  1200  included in the memory system  10  according to an embodiment of the present invention, with the read position bits at step S 101 . 
     Meanwhile, the first ECC engine unit  1200  included in the memory system  10  according to an embodiment of the present invention may perform first error correction on the extracted data burst using a corresponding first parity bit at step S 102 . 
     For example, the first error correction may be performed using DEC or SECDED. 
     If the first error correction is performed based on single-bit error correction (SEC) code, a situation may occur in which the error cannot be corrected during second error correction performed by the second ECC engine unit  300  and an error cannot be detected may occur. That is, interference between in-DRAM ECC and rank-level ECC. 
     For example, in the case where a 2-bit error occurs in a data burst, when first error correction is performed based on SEC code having a Hamming distance of 3, the first ECC engine unit  1200  may recognize a codeword having a single-bit error and then perform error correction. Accordingly, a bit having no error may be corrected to a bit having an error, with the result that a 3-bit error may be generated. Therefore, a situation may occur in which the second ECC engine unit  300  can neither correct the error nor detect an error. 
     Accordingly, after extracting the data burst having an error, the memory system  10  according to an embodiment of the present invention may determine whether the extracted data has a single-bit error at step S 103 . For example, when the first ECC engine unit  1200  performs error correction based on SECDED Hamming codes, it may be determined whether the extracted data has a single-bit error. 
     Furthermore, the first ECC engine unit  1200  included in the memory system  10  according to an embodiment of the present invention may perform single bit correction if the extracted data burst corresponds to a single-bit error at step S 104 . 
     Furthermore, the first ECC engine unit  1200  included in the memory system  10  according to an embodiment of the present invention may perform DED and first error correction without performing SEC if the extracted data burst corresponds to a double-bit error at step S 105 . Accordingly, when a double bit error is detected based on DED, single-bit error correction is not performed, and thus a normal bit may be prevented from being erroneously corrected. Furthermore, the second ECC engine unit  300  performs double-bit error detection, and thus a situation in a double-bit error cannot be found can be prevented. Therefore, interference between in-DRAM ECC and rank-level ECC can be prevented. 
     Meanwhile, the second ECC engine unit  300  included in the memory system  10  according to an embodiment of the present invention may receive data having undergone first error correction from the plurality of memory chips  1000  included in the memory system  10 , and may perform second error correction based on the received data and the third parity bits at step S 106 . 
     For example, the plurality of memory chips  1000  may output data having undergone first error correction, and the second ECC engine unit  300  may perform second error correction based on the output data and the third parity bits output from the third parity storage unit. 
     According to at least one embodiment of the present invention, interference between in-DRAM ECC and rank-level ECC can be prevented. 
     According to at least one embodiment of the present invention, the area overhead of a memory chip can be reduced by executing ECC using a position bit. 
     According to at least one embodiment of the present invention, a memory system capable of improving the reliability of memory can be provided. 
     The above-described detailed description of the present invention is merely illustrative, and it will be understood that those having ordinary knowledge in the art to which the present invention pertains can easily make modifications and variations without departing from the technical spirit and essential features of the present invention. Therefore, the above-described embodiments are illustrative in all aspects, and are not limitative. For example, each component described as being in a single form may be practiced in a distributed form. In the same manner, components described as being in a distributed form may be practiced in an integrated form. 
     The scope of the present invention is defined by the attached claims, rather than the detailed description. Furthermore, all modifications and variations derived from the meanings, scope and equivalents of the claims should be construed as falling within the scope of the present invention.