WO2003042826A2 - Error correcting memory and method of operating same - Google Patents

Error correcting memory and method of operating same Download PDF

Info

Publication number
WO2003042826A2
WO2003042826A2 PCT/GB2002/005123 GB0205123W WO03042826A2 WO 2003042826 A2 WO2003042826 A2 WO 2003042826A2 GB 0205123 W GB0205123 W GB 0205123W WO 03042826 A2 WO03042826 A2 WO 03042826A2
Authority
WO
WIPO (PCT)
Prior art keywords
write
value
ecc
data
address
Prior art date
Application number
PCT/GB2002/005123
Other languages
French (fr)
Other versions
WO2003042826A3 (en
Inventor
Wingyu Leung
Fu-Chieh Hsu
Original Assignee
Monolithic System Technology, Inc
Freeman, Jacqueline, Carol
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Monolithic System Technology, Inc, Freeman, Jacqueline, Carol filed Critical Monolithic System Technology, Inc
Priority to EP02779675A priority Critical patent/EP1449082B1/en
Priority to DE60210658T priority patent/DE60210658T2/en
Publication of WO2003042826A2 publication Critical patent/WO2003042826A2/en
Publication of WO2003042826A3 publication Critical patent/WO2003042826A3/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature

Definitions

  • the present invention relates to semiconductor memory systems, such as static random access memory (SRAM) systems or dynamic random access memory (DRAM) systems. More specifically, the present invention relates to a memory system including an error detection and correction system.
  • SRAM static random access memory
  • DRAM dynamic random access memory
  • U.S. Patent No. 5,638,385 entitled “Fast Check Bit Write For A Semiconductor Memory” by John A. Fifield et al .
  • ECC error-correction codes
  • Smaller and slower memory cells are used to store data bits, while larger and faster memory cells are for storing error- correction check bits.
  • the faster cells provide faster write access to the error-correction check bits, thereby compensating for the delay associated with the generation of the error-correction check bits, and minimizing the impact of the ECC generation on the overall memory write latency. This, however, is accomplished at the cost of larger area.
  • U.S. Patent No. 6,065,146 entitled “Error Correcting Memory” by Patrick Bosshart, describes an error-correcting memory that imposes no penalty on memory access latency or operating frequency.
  • This error- correcting memory performs error correction only during a refresh operation of the memory, during a second or subsequent read operation of a burst read sequence, or during a write-back operation.
  • the error correction scheme does not increase the rea latency of the memory.
  • error correction check bits are only generated during refresh operations of the memory. As a result, the generation of error correction check bits does not increase the write latency of the memory.
  • this scheme requires that a second set of sense amplifiers and ECC correction logic be incorporated in each memory array.
  • this arrangement increases the array area and thus the silicon area of the memory.
  • the delays through the ECC correction circuit still increase the memory cycle time. For a high-frequency memory, this increase is significant.
  • the present invention provides a memory device or an embedded memory block that includes an array of memory cells with built-in ECC protection.
  • the memory cells are DRAM cells.
  • the memory cells are SRAM cells.
  • the error-correction code function is designed so that the error-correction code generation does not increase the write access time of the memory device.
  • the scheme also provides for write-back of corrected data without decreasing the operating frequency of the memory device.
  • a write buffer is used to facilitate a posted write scheme. During a first write access, a first write data value and the corresponding first write address are stored in a first entry of the write buffer.
  • an error correction circuit generates a first error correction code in response to the first write data value.
  • the first write data value and the first error correction code are transferred to a second entry of the write buffer and retired to the memory array.
  • a second write data value and a corresponding second write address are stored in the first entry of the write buffer.
  • the error correction circuit After the second write data value is stored in the first entry of the write buffer, the error correction circuit generates a second error correction code in response to the second write data value.
  • the second write data value, second write address and second error correction code are stored in the write buffer until the next write operation. Because the error correction code is generated in parallel with the retiring of a previous write data value, and because the error correction circuit and write buffer operate faster than, the memory array, the error correction code generation does not impose a penalty on the memory cycle time or the write access time.
  • Error detection and correction is also performed on data values read from the memory device.
  • a read data value and the corresponding ECC word are read from the memory array and provided to an error detection-correction circuit.
  • the error detection- correction circuit provides a corrected read data value that is driven to the output of the memory device.
  • the error detection-correction circuit also provides a corrected ECC word, and an error indicator signal, which indicates whether the read data value or corresponding ECC word included an error.
  • the error indicator signal indicates whether the read data value or corresponding ECC word included a single error bit. If the error indicator signal is activated, the corrected read data value and corrected ECC word are posted in the •write-back buffer at the.
  • the corrected read data value and ECC word in the writeback buffer are retired to the memory array during an idle cycle of the memory array, during which no external access is performed. By retiring the corrected read data value and ECC word during an idle cycle, the write-back scheme does not have an adverse affect on the memory cycle time.
  • the number of entries in the write-back buffer is limited. Therefore the entries of the write-back buffer can be exhausted during a period of many consecutive read accesses that have correctable errors. In this case, an allocation policy can be executed to either drop the earliest entry in the write-back buffer (FIFO policy) or stop accepting entries in the write-back buffer (LIFO policy) .
  • the chance of having to invoke the allocation policy is small, because the number of words containing errors in the memory at a given time is small . The chance of reading all of these error words without a sufficient number of idle cycles in between is even smaller.
  • the allocation policy does not stop the memory device from functioning correctly, because a read data value/ECC word that contains an error, but cannot be posted in the write-back buffer, can still be accessed from the memory array, corrected by the error detection-correction circuit, and then driven to the memory output, as long as the data value/ECC word does not accumulate more error bits than the error correction circuit can correct.
  • the write-back buffering decouples the memory array operation from the error correction operation, because the memory array does not need to wait for the corrected data before completing the access cycle. Therefore, the memory cycle time is not affected by the write-back operation.
  • the read, latency, however, is increased, because the data needs to propagate through the error detection correction unit before being driven to the output of the memory.
  • Fig. 1 is a block diagram of a memory device in accordance with one embodiment of the present invention.
  • Fig. 2 is a block diagram of a write buffer- error correction code (ECC) generator in accordance with one embodiment of the present invention.
  • Fig. 3 is a circuit diagram illustrating a write-back buffer in accordance with one embodiment of the present invention.
  • Fig. 4 is a waveform diagram illustrating the timing of a write access in accordance with one embodiment of the present invention.
  • Fig. 5 is a waveform diagram illustrating, the timing of a read transaction followed by a write-back operation in accordance with one embodiment of the present invention.
  • Fig. 6 is a waveform diagram illustrating the timing of two consecutive read access cycles followed by two consecutive write-back cycles in accordance with one embodiment of the present invention.
  • Fig. 1 is a block diagram of a memory device 100 in accordance with one embodiment of the present invention.
  • Memory device 100 includes memory array 101, memory array sequencer 102, address register 103, multiplexer 104, write buffer/ECC generator 105, error detection/correction circuit 106, write-back buffe 107, output driver 108 and NOR gate 109.
  • the external interface of memory device 100 includes a 64-bit input data bus Di[63:0], a 64-bit output data bus Do [63:0], a read enable line REN, a write enable line WEN, a clock line CLK, and a 15-bit address bus A [14:0] .
  • each bus/line and the corresponding signal are identified using the same reference element. For example, Di[63:0] is used to identify both the input data bus and the input data value transmitted on the input data bus .
  • memory array 101 is a conventional 32k x 72-bit memory array, although this is not necessary.
  • memory array 101 includes a plurality of sub-arrays. Each sub-array includes word line drivers for the activation of a selected word line, and sense-amplifiers for the amplification of signals from the selected memory cells.
  • Memory array 101 also contains address decoders for accessing the memory cells selected by the memory address MA [14:0] provided by multiplexer 104.
  • Memory array 101 includes circuitry that is well known to those of ordinary skill in the art of memory design. [0020]
  • Memory array 101 uses DRAM cells in the described embodiment, although SRAM cells can be used in an alternate embodiment.
  • the refresh of the DRAM cells is managed by circuitry outside of memory device 100..by performing periodic read accesses on all of the word lines of memory array 101. Additional logic can also be easily incorporated to adapt to the refresh scheme described in commonly-owned U.S. Patent No. 6,028,804, "Method and Apparatus For 1-T SRAM Compatible Memory".
  • the operation of memory array 101 is controlled by memory array sequencer 102, which generates a row access select signal RAS#, a sense amplifier enable signal SEN#, a column address select signal CAS# and a pre-charge signal PRC#.
  • the functionality of these control signals and the operation of memory array sequencer 102 are described in more detail in commonly owned U.S. Patent No.
  • memory array sequencer 102 sequentially asserts the RAS#, SEN#, CAS# and PRC# signals in a predetermined manner to enable a memory access to be completed during a single .clock cycle.
  • Address multiplexer 104 routes an input address MA [14:0] to memory array 101 from one of three different sources.
  • One source is a latched address signal LA[14:0], which is driven by the output of address register 103.
  • Another source is the write buffer tag address WBTag[14:0], which is driven by the address field of write buffer/ECC generator 105.
  • the third source is the writeback buffer tag address WBBTag [14 : 0] , which is driven by the address field of write-back buffer 107.
  • Address multiplexer 104 is controlled by the read enable signal .. REN and the write enable signal WEN.
  • multiplexer 104 passes the latched address signal LA [14:0] during a read operation, when the read enable signal REN is asserted and the write enable signal WEN is de-asserted. Multiplexer 104 passes the write buffer tag address WBTag[14:0] during a write operation, when the write enable signal WEN is asserted and the read enable signal REN is de-asserted. Finally, multiplexer 104 passes the write-back buffer tag address WBBTag[14:0] during a write-back operation, when both the write enable signal WEN and the read enable signal REN are de-asserted.
  • Data input to memory array 101 and data output from memory array 101 is transmitted as a 72-bit memory data word MD[71:0] on a 72-bit data bus.
  • the 72-bit data word MD[71:0] includes two fields: a 64-bit data field and a 8-bit error correction code (ECC) field.
  • ECC error correction code
  • Fig. 2 is a block diagram of write buffer/ECC generator 105 in accordance with one embodiment of the present invention.
  • write buffer/ECC generator 105 includes input register 200, output register 201, error correction code (ECC) generator 202, AND gates 203-204, comparator 205, OR gates 206-207, D type flip-flop 208, and tri-state output buffers 210- 211.
  • Write buffer/ECC generator 105 includes registers 200 and 201. Registers 200-201 are configured into a first-in, first-out (FIFO) configuration. Input register 200 contains 79-bits for storing one address entry (15- bits) and one data entry (64-bits) .
  • Output register 201 contains 87-bits for storing one address entry (15-bits) , one data entry (64-bits) , and the associated error correction code (8-bits) generated by ECC generator 202.
  • Write buffer/ECC generator 105 operates as follows. At the beginning of a first memory write access, a first write data value Di ⁇ [63:0] and a corresponding first write address Ai ⁇ [14:0] are applied to input register 200, and the write enable signal WEN is asserted high. The clock signal CLK subsequently transitions to a logic high state, thereby causing AND gate 203 to provide a logic high signal to enable input register 200.
  • input register 200 latches the first write data value Di ⁇ [63:0] and the corresponding first write address Aii [14:0].
  • the first write data value Di ⁇ [63:0] is applied to ECC generator 202.
  • ECC generator 202 generates a first error correction check bit signal CB X [7:0].
  • a second write data value Di 2 [63:0] and a corresponding second write address Ai 2 [14:0] are applied to input register 200, and the write enable signal WEN is asserted to a logic high value.
  • the clock signal CLK subsequently transitions to a logic high value, thereby causing AND gate 203 to provide a logic high signal to enable register 200, and causing OR gate 206 to provide a logic high signal to enable register 201.
  • the first write data value Di ⁇ [63:0] the first write address Ai ⁇ [14:0] and the first check bit CB ⁇ [7:0] are latched into output register 201.
  • the logic high write enable signal WEN also causes OR gate 207 to provide a logic high signal to flip- flop 208. This logic high signal is latched into flip- flop 208 in response to the rising edge of the CLK signal. As a result, flip-flop 208 provides a logic high signal to the enable terminals of tri-state output buffers 210 and 211, thereby enabling these buffers.
  • output buffers 210 and 211 drive the first write data value Di ⁇ [63:0] and the first, check bit CB ⁇ [7:0] from output register 201 to memory data bus MD[71:0] .
  • the first write address value Ai ⁇ [14:0] is routed from output register 201 as write buffer tag address WBTag[14:0] .
  • the write buffer tag address WBTag[14:0] is routed through multiplexer 104 to memory array 101 (Fig. 1) in response to the logic high WEN signal and the logic low REN signal.
  • the first write data value Di 3 .[63:0] and the first check bit CB X [7:0] (i.e., memory data word MD[71:0]) is written to memory array 101 at the location identified by write buffer tag address WBTag[14:0].
  • write buffer/ECC generator 105 operates as a : posted write buffer. That is, during a write access cycle, data and address values previously posted to write buffer/ECC generator 105 are used to perform a write access to memory array 101. New data and address values are posted to register 200, and corresponding check bits are generated during the same write access cycle. Registers 200-201 and ECC generator 202 are significantly faster than memory array 101. As a result, the operations performed within write buffer/ECC generator 105 do not slow down write accesses to memory array 101.
  • the WBHit signal is applied to an input terminal of memory access sequencer 102.
  • memory access sequencer 102 is prevented from generating the access control signals RAS#, SEN#, CAS#, and PRC#, thereby suppressing access to memory array 101.
  • the read data is provided by write buffer/ECC generator 105 in the manner described below.
  • the WBHit signal is applied to input terminals of OR gates 206 and 207.
  • OR gate 206 provides a logic high signal to the clock input terminal of register 201. Consequently, the write data, write address and associated check bits stored in input register 201 are latched into output register 201 at this time.
  • OR gate 207 provides a logic high signal to flip- flop 208. This logic high signal is latched into flip- flop 208 in response to the rising edge of the CLK signal.
  • Tri-state output buffers 210 and 211 are enabled in response to the logic high signal latched into flip-flop 208.
  • the data value and the corresponding ECC value stored in output register 201 are driven onto data bus MD[71:0] .
  • the data and ECC values on. data bus MD[71:0] are routed to error detection/correction unit 106.
  • error detection/correction unit 106 provides a corrected data value, which is routed through output driver 108 to data output bus Do [63:0], thereby completing the read access.
  • the present example uses output register 201, this element of write buffer 105 is not required in all embodiments.
  • the address stored in input register 200 can be driven directly as the write buffer tag address WBTag[14:0]
  • the data value stored in input register 200 can be provided directly to output driver 210
  • the corresponding check bits CB[7:0] can be provided directly to output driver 211.
  • the data and address values stored in register 200 and the check bits provided by ECC generator 202 are latched directly into registers in memory array 101, thereby eliminating the need for output register 201.
  • Error detection/correction circuit 106 will now be described. Many different error detection/correction codes can be used in the present invention. For example, the odd-weight Hamming code discussed in U.S. Patent No. 5,638,385, entitled “Fast Check Bit Write For a Semiconductor Memory” by John A. Fifield et al, and “Cost Analysis of On Chip Error Control Coding for Fault Tolerant Dynamic RAMs, " by N. Jarwala et al, Proceedings of the Seventeenth International Symposium on Fault- Tolerant Computing, Pittsburgh, Pa., July 6-8, 1987, pp. 278-283 can be used in one embodiment.
  • the odd-weight Hamming code discussed in U.S. Patent No. 5,638,385, entitled “Fast Check Bit Write For a Semiconductor Memory” by John A. Fifield et al, and “Cost Analysis of On Chip Error Control Coding for Fault Tolerant Dynamic RAMs, " by N. Jarwala et
  • the odd-weight Hamming Code discussed in "16- bit CMOS Error Detection And Correction Unit" , Integrated Device Technology, Inc. Data Book, April 1990, Section 5.10, pp. 1-19 is used.
  • the 72-bit modified Hamming Code provides single-bit error correction and double-bit error detection.
  • the 72-bit code includes 64 data bits, and 8 check bits.
  • error detection/correction unit 106 uses mainly combinational logic.
  • syndrome generation 3 levels of 4-input and 3-input exclusive OR gates, can be used.
  • syndrome decoding 5-input AND gates can be used.
  • Error detection/correction unit 106 includes check bit generator 111, syndrome generator and decoder 112, and error correction unit 113.
  • the odd-weight Hamming code is read from memory array 101 and driven on memory data bus MD[71:0] .
  • the memory bus is split into two fields: the read data word field RD[63:0] and the read check bit field RCB[7:0] .
  • the read data word RD[63:0] is input to check bit-generator 111.
  • the check-bit generator 111 similar to ECC generator 202 (Fig.
  • Syndrome generator and decoder 112 bit-wise compares (exclusive OR's) the read check bits RCB[7:0] with the ECC check bit value provided by check bit generator 111.
  • the resultant 8-bit syndrome word is decoded to determine whether the 72-bit code read from the memory array is free of error, contains a single-bit error, or contains multiple-bit errors. In the case of a single-bit error, syndrome generator and decoder 112 generates an 8-bit signal identifying the .
  • error correction unit 113 corrects the error bit, which may exist in either the read data word RD[63:0] or the ECC check bit value RCB[7:0] . If no error is detected, the read data word RD[63:0] and ECC check bit value RCB[7:0] are not modified. In the case of multiple bit error, neither the read data word RD[63:0] nor the ECC check bit value RCB[7:0] is modified.
  • the read data value provided by error correction unit 113 is labeled as corrected data value CD [63:0] (even though it is understood that error correction unit 113 may not make any corrections to the read data value) .
  • the ECC check bit value provided by error correction unit is designated as corrected ECC check bit value CCB[7:0] .
  • the corrected data value CD [63:0] is driven through output driver 108 to the output data bus Do [63:0] .
  • Both the corrected data value CD [63:0] and the corrected ECC check bit value CCB[7:0] are also driven to write-back buffer 107.
  • the corrected data value CD [63:0], the corrected ECC check bit value CCB[7:0], and the corresponding latched address LA [14:0] associated with the read access are all written to write-back buffer 107.
  • the corrected data value CD [63:0] and the corrected ECC check bit value CCB[7:0] are queued in write-back buffer 107, in anticipation of a write-back operation to memory array 101.
  • Fig. 3 is a circuit diagram illustrating writeback buffer 107 in accordance with one embodiment of the present invention.
  • write-back buffer 107 ' includes registers 300-301, D-type flip-flops 310-311, toggle flip-flops 312-313, AND gates 321-326, NAND gate 327, OR gates 330-332, NOR gate 333, output multiplexers 341-343 and tri-state output drivers 351-352.
  • Registers 300-301 provide storage for 2 entries, wherein each entry includes an address field (ADDR) , a data field (DATA) a correction check bit field (CCB) and a valid bit field (VALID) .
  • ADDR address field
  • DATA data field
  • CB correction check bit field
  • VALID valid bit field
  • Registers 300 and 301 are arranged in a FIFO configuration in the described embodiment. [0037] The address fields of registers 300 and 301 are coupled to receive the latched address signal LA[14:0], the data fields of registers 300 and 301 are coupled to receive the corrected data value CD [63:0], and the correction check bit fields of registers 300 and 301 are coupled to receive the corrected check bits CCB[7:0].
  • the address, data, correction bit and valid fields of register 300 are labeled LA 0 , CD 0 , CCB 0 and VA 0 , respectively.
  • the address, data, corrected check bit and valid fields of register 301 are labeled LAi, CD X# CCBi and VAi, respectively.
  • Corrected check bit values CCB 0 and CCB X stored in registers 300 and 301 are provided to multiplexer 341.
  • Corrected data values CD 0 and CD X stored in registers 300 and 301 are provided to multiplexer 342.
  • Latched address values LA 0 and LAi stored in registers 300 and 301 are provided to multiplexer 343.
  • Multiplexers 341-343 are controlled by the Q output of toggle flip-flop 313, which operates as a read pointer value, RP.
  • multiplexers 341, 342 and 343 route the CCB 0 , CD 0 and LA 0 values, respectively. Conversely, if the read pointer value RP has a logic "1" value, then multiplexers 341, 342 and 343 route the CCBi, CD ⁇ . and. LA X values, respectively. [0039]
  • the outputs of multiplexers 341 and 342 are routed to tri-state output drivers 351 and 352, respectively. Tri-state drivers 351 and 352 are controlled, by the output enable signal OE provided at the Q output terminal of flip-flop 311.
  • tri- state buffers 351 and 352 drive the signals received from multiplexers 341 and 342 as memory data output signals MD[71:64] andMD[63:0], respectively.
  • the output of multiplexer 343 is directly provided as write-back buffer tag address WBBTag[14:0] .
  • write-back buffer 107 operates as follows. When a. single error is detected by error detection/correction unit 106 during a read operation, the corrected data value, the corrected check bit value and the associated address value are written to one of registers 300-301 in write-back buffer 107. During a subsequent idle cycle, the corrected data value and corrected check bit value are written back to memory, array 101 at the location specified by the associated address value .
  • the logic "0" WBBRet signal is latched into flip- flop 311, such that the output enable signal OE initially has a logic "0" value, thereby disabling tri-state output drivers 351-352.
  • the WBBRet signal has a logic "0” value, no corrected data values are written back to memory array 101.
  • the logic "0" WBBRet signal is also applied to AND gates 324 and 325. As a result, the WBBRet signal causes the reset values R0 and Rl provided by OR gates 330 and 331 to initially remain at logic “0" values after the RESET signal transitions to a logic "0" value.
  • the logic high RESET signal also sets the read pointer value RP provided by toggle flip-flop 313 to a logic "1" value, such that multiplexers 341-343 are initially set to pass the CCBi, CDi and LA X values, respectively, from register 300.
  • the logic high RESET signal also resets the Q output of toggle flip-flop 312 to a logic "0" value.
  • the Q output of toggle flip-flop 312 operates as a write pointer value WP.
  • register 300 When the write pointer value WP is low, register 300 is designated to receive the corrected check bit value CCB[7:0], the corrected data value CD [63:0], and the latched address value LA[14:0].
  • register 301 is designated to receive these values CCB[7:0], CD [63:0] and LA[14i ⁇ ].
  • AND gate 322 is enabled to pass the write buffer enable signal WBEN to the enable input terminal of register 300 as the load signal LD0.
  • AND gate 323 is enabled to pass the write buffer enable signal WBEN to the enable input terminal of register 301 as the load signal LD1.
  • the write buffer enable signal WBEN is provided by AND gate 321.
  • AND gate 321 is coupled to receive the 1-ERR signal from error detection-correction circuit 106.
  • AND gate 321 is also coupled to receive a latched read enable signal LREN provided at the Q output of flip-flop 310. (The read enable signal REN is latched into flip- flop 310 in response to the CLK signal to provide the latched read enable signal LREN) .
  • AND gate 321 is also coupled to receive the output of NAND gate 327, which has input terminals coupled to receive valid bits VA 0 and VAi.
  • the write buffer enable signal WBEN is asserted high.
  • AND gate 322 asserts a logic high load signal LDO, which enables register 300.
  • the CCB[7:0], CD[63:0] and LA [14:0] values provided during the read operation are latched into register 300.
  • the logic high LDO signal is latched into the VALID field of register 300, thereby setting valid bit VA 0 to a logic high state.
  • the logic high valid bit VA 0 causes OR gate 332 to provide a logic high signal to AND gate 326.
  • AND gate 326 will receive a logic high signal from NOR gate 333.
  • the write-back buffer retire signal WBBRet is asserted high, thereby indicating that the contents of register 300 can be retired to memory array 101, without interfering with a read or write operation.
  • the logic high WBBret signal toggles the read pointer value RP provided by flip-flop 313 to a logic "0" value, and causes the output enable signal OE of flip-flop 311 to transition to a logic "1" value.
  • multiplexers 341-343 route the CCB 0 , CD 0 and LA 0 signals from register 300.
  • Tri-state buffers 351 and 352 are' enabled to drive the CCB 0 and CD o values from register 300 as the MD[71:64] and MD[63:0] values in response to the logic high output enable signal OE.
  • the latched address value LA 0 from register 300 is provided to memory array 101 as the write back buffer tag address WBBTag[14:0] .
  • the WBBTag[14:0] signal is routed through address multiplexer 104 in response to the logic low REN and WEN signals.
  • the logic high WBBRet signal is also provided to memory array sequencer 102, thereby initiating the generation of the memory control signals (RAS#, SEN#, CAS#, PRC#) required to write the corrected data back to memory array 101.
  • the corrected data value CDo and corrected check bit value CCB 0 are written back to memory array 101 at the location identified by address value LAo .
  • the CLK signal subsequently transitions to a. logic low level.
  • the logic low CLK signal, the logic high WBBRet signal and the logic low read pointer value RP cause AND gate 324 to provide a logic high output signal.
  • OR gate 330 asserts a logic high reset signal R0, which resets the valid bit VA 0 in register 300 to a logic "0" value.
  • the logic low VA 0 bit causes the WBBRet signal to transition to a logic low value .
  • both of the valid bits VA 0 and VA X have logic "1" values.
  • NAND gate 327 provides a logic "0" value to AND gate 321. Consequently, the write buffer enable signal WBEN cannot be asserted until at least one of the valid bits VA 0 and VA X transitions to a logic "0" value. That is, no additional entries can be written to write-back buffer 107 until the entry stored in register 300 has been retired to memory array 101. Note that if a single error condition exists during a subsequent read operation (before the entry in register 300 can be retired) , then the corresponding corrected data value/check bits will not be written back to memory array 101. However, the corrected data value will be read out of memory device 100.
  • Fig. 4 is a waveform diagram illustrating the timing of two write accesses in accordance with one embodiment of the present invention.
  • the write enable signal WEN Prior to the rising edge of clock cycle Tl, the write enable signal WEN is asserted high, a first write data value DO is provided on input data bus Di[63:0], and a first write address value A0 is provided on address bus A [14:0].
  • the first write data value DO and the first write address A0 are latched into register 200.
  • the write data value stored in register 200 is designated as DATA 2 oo and the address value stored in register 200 is designated as ADDR 20 o-
  • ECC generator 202 generates an ECC check bit value, CB0, in response to the first write data value DO stored in register 200.
  • memory array sequencer 102 asserts the memory control signals RAS#, SEN#, CAS# and PRC# during the first clock cycle Tl in response to the logic high write enable signal WEN. However, this write access is ignored in the present example for reasons of clarity.
  • the write enable signal WEN is asserted high, a second write data value Dl is provided on input data bus Di[63:0], and a second write address value Al is provided on address bus A [14:0] .
  • the first write data value DO, the first write address A0 and the first ECC check bit value CB0 are latched into register 201.
  • the write data value stored in register 201 is designated as DATA 20 ⁇
  • the address value stored in register 201 is designated as ADDR 20 ⁇
  • the ECC check bit value stored in register 201 is designated as CB 2 o ⁇ .
  • the second write data value Dl and the second write address value Al are latched into register 200.
  • ECC generator 202 generates an ECC check bit value, CB1, in response to the second write data value Dl stored in register 200.
  • the logic high write enable signal WEN enables output buffers 210 and 211, such that these output buffers drive the first data value DO and the first ECC check bit value CBO from register 201 onto memory data bus MD[71:0]
  • the first write address A0 is provided from register 201 as the write buffer tag signal WBTag[14:0].
  • This write buffer tag signal WBTag[14:0] is routed through multiplexer 104 to memory array 101 in response to the logic high write enable signal .
  • Memory array sequencer asserts the memory write signal Mwrite and the memory control signals RAS#, SEN#, CAS# and PRC# in response to the logic high write enable signal WEN during cycle T3, thereby enabling the first write data value DO and the first.
  • ECC check bit value CBO to be written to memory array 101 at the location specified by the first write address AO .
  • the second write data value Dl and the second write address Al remain in register 200 until the next write access (or the next read access that hits write buffer 105) .
  • ECC check bit value CB1 are waiting at the output of ECC generator 202 until the beginning of the next write access. In this manner, the generation of ECC check bit values doe not affect the write access latency of memory device 100.
  • Fig. 5 is a waveform diagram illustrating the timing of a read transaction followed by a write-back operation in accordance with one embodiment of the present invention.
  • the read enable signal REN is asserted high and a read address Ax [14:0] is provided on address bus A [14:0] to initiate a read access.
  • the read address A [14:0] is latched into address register 103 as the latched read address LAx[14:0].
  • This latched read address LAx[14:0] is driven to the memory address bus MA [14:0] through multiplexer 104.
  • Multiplexer 104 routes the latched read access address LAx[14:0] in response to the high state of read enable signal REN and the low state of the write enable signal WEN.
  • the logic high read enable signal REN is also latched into memory array sequencer 102 in response to the rising edge of. cycle Tl.
  • memory array sequencer 102 sequentially activates the memory array control signals RAS#, SEN#, CAS#, and PRC#, thereby reading the Hamming code word (i.e., MDx[71:0]) associated with the latched read address LAx[14:0] .
  • the only memory array control signal shown in Fig. 5 is the CAS# signal .
  • the high state of the latched read enable signal REN in memory array sequencer 102 causes, the memory write signal MWrite have a logic low value, thereby indicating that the present memory operation is a read . access.
  • the 72-bit accessed word MDx[71:0] is read out from the memory array on data bus MD[71:0] .
  • the 72-bit accessed word MDx[71:0] is provided to error detection-correction unit 106, wherein the data portion of the word (i.e., MDx[63:0]) and the check-bit portion of the word (i.e., MDx[71:64]) are separated for syndrome generation, error detection and correction. If a single-bit error is detected, syndrome generator 112 activates the single-error signal (1-ERR) high, and error correction unit 113 corrects the single-bit error in either the data word or the check-bits.
  • the corrected data word CDx[63:0] is driven through output driver 108 as the output data value Do [63:0] .
  • flip-flop 310 latches the logic high read enable signal REN at the rising edge of cycle Tl, thereby providing a logic high latched read enable signal LREN.
  • AND gate 321 activates the write buffer enable signal WBEN to a logic high state.
  • AND gate 322 activates the load data signal LDO to a logic high value in response to the logic high WBEN signal and the logic low write pointer value WP.
  • the CLK signal transitions to a logic high state, thereby activating register 300, such that the logic high LDO signal, the corrected check bits CCBx[7:0], the corrected data word CDx[63:0] and the associated latched address LAx[14:0] are written to register 300 of write-back buffer 107.
  • the valid bit VA 0 transitions to a logic high state, and the corrected ECe code word, consisting of corrected check bits CCBx[7:0] and the corrected data word CDx[63:0], is available at the output of register 300.
  • the latched address value LAx[14:0] stored in register 300 is driven as the writeback buffer tag address WBBTagx[14 :0] .
  • the WBBTagx[14 :0] signal is provided to multiplexer 104.
  • Multiplexer 104 routes the WBBTagxf14:0] signal as the memory address signal MA [14:0] in response to the logic low states of the REN and WEN signals.
  • Multiplexers 341 and 342 route the corrected check bit value CCBx[7:0] and the corrected data word CDx[63:0] to tri-state buffers 351 and 352, respectively.
  • the output enable signal OE is asserted high when the high state of the WBBRet signal is latched into flip-flop 311 at the rising edge of cycle T3.
  • the high OE signal enables tri-state buffers 341 and 342 to drive the corrected check bit value CCBx[7:0] and the corrected data word CDx[63:0] onto memory data bus MD[71:0].
  • Memory array sequencer 102 latches the logic high WBBRet signal at the rising edge of cycle T3, thereby resulting in the sequential activation of the memory control signals RAS#, SEN#, CAS# and PRC#. Memory array sequencer 102 also asserts the MWrite signal in response to the logic high WBBRet signal. As a result, the word on data bus MD[71:0] is written to the memory location specified by the address WBBTag[14 :0] . At the falling , edge of the CLK signal in cycle T3, AND gate 324 provides a logic high output signal, thereby driving the reset signal RO to a logic high state. The logic high reset signal RO resets the valid bit VA 0 to a logic low value.
  • the logic low valid bits VA 0 and VAi cause OR gate 333 to provide a logic "0" output signal, which in turn, causes the WBBRet signal to transition to a logic "0" state.
  • the control signals RAS#, SEN#, CAS# and PRC# are de-asserted high, thereby completing the memory write operation and write-back cycle. [0064] Notice that if a single-bit error does not occur in the read access of cycle Tl, then neither the data nor the check bits read from memory array 101 will be corrected or stored in write-back buffer 107. However, the uncorrected data is still driven out to the output data bus Do [63:0] by output driver 108.
  • Fig. 6 is a waveform diagram illustrating ' the timing of two consecutive read access cycles followed by two consecutive write-back cycles in accordance with one embodiment of the present invention.
  • the read enable signal REN is asserted high and a read address Al[14:0] is provided on address bus A [14:0] to initiate a read access.
  • the read cycle operations and the control timing waveforms are similar to those shown in Fig. 5.
  • a single-bit error is detected in this first read access, which results in the corrected Hamming code word (CDl/CCBl) and address Al[14:0] being stored in register 300 of write-back buffer 107.
  • the high state of the 1-ERR and LREN signals causes toggle flip-flop 312 to change the write pointer value WP from a logic "0" value to a logic "1” value, thereby configuring register 301 of write-back buffer 107 to receive the next corrected Hamming code word and address.
  • another read enable signal REN is asserted high and a second read address A2[14:0] is provided on address bus A [14:0] to initiate a second read access.
  • the read cycle operations and the control timing waveforms are similar to those shown in Fig. 5. A single-bit error is. detected in this second read access.
  • error detection-correction circuit 106 asserts the 1-ERR signal and provides a corrected Hamming code word that includes corrected data CD[63:0] and corrected check bit CCB2[7:0].
  • AND gate 321 provides a logic high write buffer enable signal WBEN.
  • AND gate 323 asserts the load signal LDl to a logic high value, thereby enabling register 301.
  • the corrected Hamming code word (CD2/CCB2) , address A2[14:0] and the high state of LDl are latched into register 301 of write-back buffer 107. Consequently, valid bit VAi is driven to a logic high value.
  • the low states of the REN and WEN signals indicate the absence of an external memory access.
  • the low states of the REN and WEN signals, along with the high state of the VA 0 signal causes AND gate 326 to assert a logic high WBBRet signal.
  • this high WBBRet signal is latched into flip- flop 311 at the rising edge of cycle T3, thereby causing output enable signal OE to go high.
  • the high state of the WBBRet signal at the rising clock-edge also causes toggle flip-flop 313 to drive the read pointer value RP to a logic "0" state.. Consequently, first address Al[14:0] stored in register 300 is driven as the output signal WBBTag[14 : 0] , while the corrected data and check bits GDI [63:0] and CCBI [7:0] stored in register 300 are driven as output signal MD[71:0].
  • the write-back buffer tag WBBTag[14 :0] is provided to memory array 101 through multiplexer 104 in response to the logic low REN and WEN signals. In memory array sequencer 102, the high state of the WBBRet signal is latched at the beginning of cycle T3.
  • the MWrite signal is driven high and the memory array control signals RAS#, SEN#, CAS# and PRC# are activated in sequence so that memory array 101 goes through a memory write cycle with the corrected code word MD[71:0] written to the location specified by WBBTag[14 :0] .
  • the reset signal R0 goes high in response to the falling edge of cycle T3, thereby resetting the valid bit VA 0 in register 300. Resetting valid bit VA 0 invalidates the contents of register 300.
  • the memory array control signals are all deactivated high and memory array 101 is ready for another access.
  • the low states of the REN and WEN .signals again indicate the absence of an external memory access.
  • the low states of the REN and WEN signals, together with the high state of valid bit VA X causes the WBBRet signal to remain in a logic high state.
  • the high state of the WBBRet signal causes the read pointer value RP provided by toggle flip-flop 313 to transition to a logic high state.
  • multiplexers 341-343 are controlled to route the corrected check bit CCB2[7:0] and the corrected data value CD2[63:0] as the MD[71:0] value, and the address value A2[14:0] as the write back buffer tag value WBBTag[14:0] .
  • the output enable signal OE remains in a logic high state in response to the logic high WBBRet signal.
  • the high state of the WBBRet signal is latched at the rising edge of cycle T .
  • the high state of the WBBRet signal causes the MWrite signal to remain high, thereby starting another write cycle in memory array 101.
  • the write cycle is performed with the successive activation of the RAS#, SEN#, CAS# and PRC# signals. This results in the modified Hamming code word MD[71:0] from register 301 being written back to memory array 101 at the location (A2) specified by the WBBTag[14:0] read from register 301.
  • the reset signal Rl goes high in response to the falling edge of cycle T4, thereby resetting the valid bit VAi in register 301. Resetting valid bit VAi. invalidates the contents of register 301.
  • the memory array control signals are all deactivated high and memory array 101 is ready for another access. When the valid bit VA X transitions to a logic low state, both of valid bits VA 0 and VAi have logic low values.
  • OR gate 332 provides a logic low output signal, which causes the. WBBRet signal to transition to a logic low state.
  • the logic low valid bits VA0 and VAI indicate that both entries of write-back buffer 107 have been retired to memory array 101..

Abstract

A memory device that uses error correction code (ECC) circuitry to improve the reliability of the memory device in view of single-bit errors caused by hard failure or soft error. A write buffer is used to post write data, so that ECC generation and memory write array operation can be carried out in parallel. As a result there is no penalty in write latency or memory cycle time due to ECC generation. A write-back buffer is used to post corrected ECC words during read operations, so that write-back of corrected ECC words does not need to take place during the same cycle that data is read. Instead, write-back operations are performed during idle cycles when no external memory access is requested, such that the write back operation does not impose a penalty on memory cycle time or affect memory access latency.

Description

ERROR CORRECTING MEMORY AND METHOD OF OPERATING SAME.
FIELD OF THE INVENTION
[0001] The present invention relates to semiconductor memory systems, such as static random access memory (SRAM) systems or dynamic random access memory (DRAM) systems. More specifically, the present invention relates to a memory system including an error detection and correction system.
DISCUSSION OF RELATED ART
[0002] Semiconductors memories such as DRAM and SRAM devices are susceptible to both soft and hard errors. Soft errors are generated when sub-atomic energetic particles hit the memory device and generate charge high enough to upset the state of one or more memory cells. Hard errors are generated by defects in the semiconductor device during the manufacturing process. The incorporation of error detection and correction circuitry in memory devices has been described in many prior art schemes .
[0003] For example, U.S. Patent No. 5,638,385, entitled "Fast Check Bit Write For A Semiconductor Memory" by John A. Fifield et al . , describes the use of error-correction codes (ECC) , such as error-correction check bits, in a memory using two different types of memory cells. Smaller and slower memory cells are used to store data bits, while larger and faster memory cells are for storing error- correction check bits. The faster cells provide faster write access to the error-correction check bits, thereby compensating for the delay associated with the generation of the error-correction check bits, and minimizing the impact of the ECC generation on the overall memory write latency. This, however, is accomplished at the cost of larger area.
[0004] U.S. Patent No. 6,065,146, entitled "Error Correcting Memory" by Patrick Bosshart, describes an error-correcting memory that imposes no penalty on memory access latency or operating frequency. This error- correcting memory performs error correction only during a refresh operation of the memory, during a second or subsequent read operation of a burst read sequence, or during a write-back operation. As a result, the error correction scheme does not increase the rea latency of the memory. Similarly, error correction check bits are only generated during refresh operations of the memory. As a result, the generation of error correction check bits does not increase the write latency of the memory. However, this error correction scheme cannot correct data errors occurring in the first read operation of a burst read sequence, or in data written to the memory before the error correction check bits are generated. [0005] U.S. Patent No. 5,003,542, entitled "Semiconductor Memory Device Having Error Correcting Circuit and Method For Correcting Error", by Koichiro Mashiko, et al . , describes a memory that includes ECC circuitry incorporated in the sense amplifier area of the memory. More specifically, a second set of sense amplifiers and ECC correction logic is coupled to the bit lines of the memory array, thereby speeding up the error correction process by eliminating delays through the input/output (I/O) circuitry. However, this scheme requires that a second set of sense amplifiers and ECC correction logic be incorporated in each memory array. In general, there are many memory arrays in a memory device. As a result, this arrangement increases the array area and thus the silicon area of the memory. In addition, even though delays through the I/O circuit are eliminated, the delays through the ECC correction circuit still increase the memory cycle time. For a high-frequency memory, this increase is significant.
[0006] It would therefore be desirable to have an improved error detection and correction scheme that overcomes the above-described deficiencies of the prior art.
SUMMARY
[0007] Accordingly, the present invention provides a memory device or an embedded memory block that includes an array of memory cells with built-in ECC protection. In one embodiment, the memory cells are DRAM cells. In another embodiment, the memory cells are SRAM cells. The error-correction code function is designed so that the error-correction code generation does not increase the write access time of the memory device. The scheme also provides for write-back of corrected data without decreasing the operating frequency of the memory device. [0008] To eliminate the effect of ECC generation on the write access time, a write buffer is used to facilitate a posted write scheme. During a first write access, a first write data value and the corresponding first write address are stored in a first entry of the write buffer. At this time, an error correction circuit generates a first error correction code in response to the first write data value. During a second write access, the first write data value and the first error correction code are transferred to a second entry of the write buffer and retired to the memory array.. At the same time, a second write data value and a corresponding second write address are stored in the first entry of the write buffer. After the second write data value is stored in the first entry of the write buffer, the error correction circuit generates a second error correction code in response to the second write data value. The second write data value, second write address and second error correction code are stored in the write buffer until the next write operation. Because the error correction code is generated in parallel with the retiring of a previous write data value, and because the error correction circuit and write buffer operate faster than, the memory array, the error correction code generation does not impose a penalty on the memory cycle time or the write access time.
[0009] Error detection and correction is also performed on data values read from the memory device. During a read access, a read data value and the corresponding ECC word are read from the memory array and provided to an error detection-correction circuit. The error detection- correction circuit provides a corrected read data value that is driven to the output of the memory device. The error detection-correction circuit also provides a corrected ECC word, and an error indicator signal, which indicates whether the read data value or corresponding ECC word included an error. In one embodiment, the error indicator signal indicates whether the read data value or corresponding ECC word included a single error bit. If the error indicator signal is activated, the corrected read data value and corrected ECC word are posted in the •write-back buffer at the. same time that the corrected read data value is driven to the output of the memory device. The corrected read data value and ECC word in the writeback buffer are retired to the memory array during an idle cycle of the memory array, during which no external access is performed. By retiring the corrected read data value and ECC word during an idle cycle, the write-back scheme does not have an adverse affect on the memory cycle time. [0010] The number of entries in the write-back buffer is limited. Therefore the entries of the write-back buffer can be exhausted during a period of many consecutive read accesses that have correctable errors. In this case, an allocation policy can be executed to either drop the earliest entry in the write-back buffer (FIFO policy) or stop accepting entries in the write-back buffer (LIFO policy) . The chance of having to invoke the allocation policy is small, because the number of words containing errors in the memory at a given time is small . The chance of reading all of these error words without a sufficient number of idle cycles in between is even smaller. Moreover, the allocation policy does not stop the memory device from functioning correctly, because a read data value/ECC word that contains an error, but cannot be posted in the write-back buffer, can still be accessed from the memory array, corrected by the error detection-correction circuit, and then driven to the memory output, as long as the data value/ECC word does not accumulate more error bits than the error correction circuit can correct. The write-back buffering decouples the memory array operation from the error correction operation, because the memory array does not need to wait for the corrected data before completing the access cycle. Therefore, the memory cycle time is not affected by the write-back operation. The read, latency, however, is increased, because the data needs to propagate through the error detection correction unit before being driven to the output of the memory.
[0011] The present invention will be more fully understood in view of the following description an drawings .
BRIEF DESCRIPTION OF THE DRAWINGS
[0012] Fig. 1 is a block diagram of a memory device in accordance with one embodiment of the present invention. [0013] Fig. 2 is a block diagram of a write buffer- error correction code (ECC) generator in accordance with one embodiment of the present invention. [0014] Fig. 3 is a circuit diagram illustrating a write-back buffer in accordance with one embodiment of the present invention. [0015] Fig. 4 is a waveform diagram illustrating the timing of a write access in accordance with one embodiment of the present invention.
[0016] Fig. 5 is a waveform diagram illustrating, the timing of a read transaction followed by a write-back operation in accordance with one embodiment of the present invention.
[0017] Fig. 6 is a waveform diagram illustrating the timing of two consecutive read access cycles followed by two consecutive write-back cycles in accordance with one embodiment of the present invention.
DETAILED . DESCRIPTION
[0018] Fig. 1 is a block diagram of a memory device 100 in accordance with one embodiment of the present invention. Memory device 100 includes memory array 101, memory array sequencer 102, address register 103, multiplexer 104, write buffer/ECC generator 105, error detection/correction circuit 106, write-back buffe 107, output driver 108 and NOR gate 109. The external interface of memory device 100 includes a 64-bit input data bus Di[63:0], a 64-bit output data bus Do [63:0], a read enable line REN, a write enable line WEN, a clock line CLK, and a 15-bit address bus A [14:0] . In the described embodiments, each bus/line and the corresponding signal are identified using the same reference element. For example, Di[63:0] is used to identify both the input data bus and the input data value transmitted on the input data bus .
[0019] In the described example, memory array 101 is a conventional 32k x 72-bit memory array, although this is not necessary. In the described embodiment, memory array 101 includes a plurality of sub-arrays. Each sub-array includes word line drivers for the activation of a selected word line, and sense-amplifiers for the amplification of signals from the selected memory cells. Memory array 101 also contains address decoders for accessing the memory cells selected by the memory address MA [14:0] provided by multiplexer 104. Memory array 101 includes circuitry that is well known to those of ordinary skill in the art of memory design. [0020] Memory array 101 uses DRAM cells in the described embodiment, although SRAM cells can be used in an alternate embodiment. The refresh of the DRAM cells is managed by circuitry outside of memory device 100..by performing periodic read accesses on all of the word lines of memory array 101. Additional logic can also be easily incorporated to adapt to the refresh scheme described in commonly-owned U.S. Patent No. 6,028,804, "Method and Apparatus For 1-T SRAM Compatible Memory". The operation of memory array 101 is controlled by memory array sequencer 102, which generates a row access select signal RAS#, a sense amplifier enable signal SEN#, a column address select signal CAS# and a pre-charge signal PRC#. The functionality of these control signals and the operation of memory array sequencer 102 are described in more detail in commonly owned U.S. Patent No. 6,147,535, entitled "Clock Phase Generator For Controlling Operation of a DRAM Array" . In the described embodiment, memory array sequencer 102 sequentially asserts the RAS#, SEN#, CAS# and PRC# signals in a predetermined manner to enable a memory access to be completed during a single .clock cycle.
[0021] Address multiplexer 104 routes an input address MA [14:0] to memory array 101 from one of three different sources. One source is a latched address signal LA[14:0], which is driven by the output of address register 103. Another source is the write buffer tag address WBTag[14:0], which is driven by the address field of write buffer/ECC generator 105. The third source is the writeback buffer tag address WBBTag [14 : 0] , which is driven by the address field of write-back buffer 107. Address multiplexer 104 is controlled by the read enable signal .. REN and the write enable signal WEN. As described in more detail below, multiplexer 104 passes the latched address signal LA [14:0] during a read operation, when the read enable signal REN is asserted and the write enable signal WEN is de-asserted. Multiplexer 104 passes the write buffer tag address WBTag[14:0] during a write operation, when the write enable signal WEN is asserted and the read enable signal REN is de-asserted. Finally, multiplexer 104 passes the write-back buffer tag address WBBTag[14:0] during a write-back operation, when both the write enable signal WEN and the read enable signal REN are de-asserted. [0022] Data input to memory array 101 and data output from memory array 101 is transmitted as a 72-bit memory data word MD[71:0] on a 72-bit data bus. The 72-bit data word MD[71:0] includes two fields: a 64-bit data field and a 8-bit error correction code (ECC) field. At the beginning of, a memory cycle (as indicated by the falling edge of the RAS# signal) , the 72-bit memory data word MD[71:0] is latched into a data register (not shown) in memory array 101.
[0023] Fig. 2 is a block diagram of write buffer/ECC generator 105 in accordance with one embodiment of the present invention. In the described embodiment, write buffer/ECC generator 105 includes input register 200, output register 201, error correction code (ECC) generator 202, AND gates 203-204, comparator 205, OR gates 206-207, D type flip-flop 208, and tri-state output buffers 210- 211. Write buffer/ECC generator 105 includes registers 200 and 201. Registers 200-201 are configured into a first-in, first-out (FIFO) configuration. Input register 200 contains 79-bits for storing one address entry (15- bits) and one data entry (64-bits) . Output register 201 contains 87-bits for storing one address entry (15-bits) , one data entry (64-bits) , and the associated error correction code (8-bits) generated by ECC generator 202. [0024] Write buffer/ECC generator 105 operates as follows. At the beginning of a first memory write access, a first write data value Diι[63:0] and a corresponding first write address Aiι[14:0] are applied to input register 200, and the write enable signal WEN is asserted high. The clock signal CLK subsequently transitions to a logic high state, thereby causing AND gate 203 to provide a logic high signal to enable input register 200. In response, input register 200 latches the first write data value Diι[63:0] and the corresponding first write address Aii [14:0]. The first write data value Diι[63:0] is applied to ECC generator 202. In response, ECC generator 202 generates a first error correction check bit signal CBX[7:0].
[0025] At the beginning of a second (subsequent) memory write access, a second write data value Di2[63:0] and a corresponding second write address Ai2[14:0] are applied to input register 200, and the write enable signal WEN is asserted to a logic high value. The clock signal CLK subsequently transitions to a logic high value, thereby causing AND gate 203 to provide a logic high signal to enable register 200, and causing OR gate 206 to provide a logic high signal to enable register 201. In response, the first write data value Diι[63:0], the first write address Aiι[14:0] and the first check bit CBχ[7:0] are latched into output register 201. In addition, the second write data value Di2[63:0] and the second write address Ai2[14:0] are latched into input register 200. [0026] The logic high write enable signal WEN also causes OR gate 207 to provide a logic high signal to flip- flop 208. This logic high signal is latched into flip- flop 208 in response to the rising edge of the CLK signal. As a result, flip-flop 208 provides a logic high signal to the enable terminals of tri-state output buffers 210 and 211, thereby enabling these buffers. In response, output buffers 210 and 211 drive the first write data value Diι[63:0] and the first, check bit CBχ[7:0] from output register 201 to memory data bus MD[71:0] . The first write address value Aiι[14:0] is routed from output register 201 as write buffer tag address WBTag[14:0] . The write buffer tag address WBTag[14:0] is routed through multiplexer 104 to memory array 101 (Fig. 1) in response to the logic high WEN signal and the logic low REN signal. The first write data value Di3.[63:0] and the first check bit CBX[7:0] (i.e., memory data word MD[71:0]) is written to memory array 101 at the location identified by write buffer tag address WBTag[14:0].
[0027] In the foregoing manner, write buffer/ECC generator 105 operates as a: posted write buffer. That is, during a write access cycle, data and address values previously posted to write buffer/ECC generator 105 are used to perform a write access to memory array 101. New data and address values are posted to register 200, and corresponding check bits are generated during the same write access cycle. Registers 200-201 and ECC generator 202 are significantly faster than memory array 101. As a result, the operations performed within write buffer/ECC generator 105 do not slow down write accesses to memory array 101.
[0028] Note that it is necessary to maintain data coherence if a read access hits the contents of write buffer/ECC generator 105. To maintain data coherence, comparator 205. is coupled to receive both the current access address A [14:0] and the write address previously posted to input register 200. Comparator 205 asserts a logic high MATCH output signal if the current access address matches the write address stored in input register 200. The MATCH signal and the read enable signal REN are both provided to AND gate 204. If comparator 205 detects a match, and the current access is a read access (REN = "1") , then AND gate 204 will assert a logic high write buffer hit signal WBHit, thereby indicating that the current read access has hit the contents of write buffer/ECC generator 105.
[0029] The WBHit signal is applied to an input terminal of memory access sequencer 102. When the WBHit signal άs asserted to a logic high value, memory access sequencer 102 is prevented from generating the access control signals RAS#, SEN#, CAS#, and PRC#, thereby suppressing access to memory array 101. Instead, the read data is provided by write buffer/ECC generator 105 in the manner described below.
[0030] Within write buffer/ECC generator 105, the WBHit signal is applied to input terminals of OR gates 206 and 207. Thus, when the WBHit signal is asserted high, OR gate 206 provides a logic high signal to the clock input terminal of register 201. Consequently, the write data, write address and associated check bits stored in input register 201 are latched into output register 201 at this time. OR gate 207 provides a logic high signal to flip- flop 208. This logic high signal is latched into flip- flop 208 in response to the rising edge of the CLK signal. Tri-state output buffers 210 and 211 are enabled in response to the logic high signal latched into flip-flop 208. As a result, the data value and the corresponding ECC value stored in output register 201 are driven onto data bus MD[71:0] . The data and ECC values on. data bus MD[71:0] are routed to error detection/correction unit 106. In response, error detection/correction unit 106 provides a corrected data value, which is routed through output driver 108 to data output bus Do [63:0], thereby completing the read access.
[0031] Although the present example uses output register 201, this element of write buffer 105 is not required in all embodiments. For example, the address stored in input register 200 can be driven directly as the write buffer tag address WBTag[14:0], the data value stored in input register 200 can be provided directly to output driver 210, and the corresponding check bits CB[7:0] can be provided directly to output driver 211. During a subsequent write operation, the data and address values stored in register 200 and the check bits provided by ECC generator 202 are latched directly into registers in memory array 101, thereby eliminating the need for output register 201.
Error Detection-Correction
[0032] . Error detection/correction circuit 106 will now be described. Many different error detection/correction codes can be used in the present invention. For example, the odd-weight Hamming code discussed in U.S. Patent No. 5,638,385, entitled "Fast Check Bit Write For a Semiconductor Memory" by John A. Fifield et al, and "Cost Analysis of On Chip Error Control Coding for Fault Tolerant Dynamic RAMs, " by N. Jarwala et al, Proceedings of the Seventeenth International Symposium on Fault- Tolerant Computing, Pittsburgh, Pa., July 6-8, 1987, pp. 278-283 can be used in one embodiment. In the described embodiment, the odd-weight Hamming Code discussed in "16- bit CMOS Error Detection And Correction Unit" , Integrated Device Technology, Inc. Data Book, April 1990, Section 5.10, pp. 1-19 is used. The 72-bit modified Hamming Code provides single-bit error correction and double-bit error detection. The 72-bit code includes 64 data bits, and 8 check bits.
[0033] Implementation of error detection/correction using odd-weight Hamming code has been described in references including U.S. Patent No. 5,638,385, entitled "Fast Check Bit Write For A Semiconductor Memory" by John A. Fifield et al . , and "A Class Of Optimal Minimum Odd- Weight-Column SEC-DED Codes", by M.Y. Hsiao, IBM Journal of Research and Dev., Vol. 14, July, 1970, pp. 395-401. In a preferred embodiment, error detection/correction unit 106 uses mainly combinational logic. For syndrome generation, 3 levels of 4-input and 3-input exclusive OR gates, can be used. For syndrome decoding, 5-input AND gates can be used. This kind of implementation using combinational logic is well known to the art of logic design and therefore is not described further. [0034] Error detection/correction unit 106 includes check bit generator 111, syndrome generator and decoder 112, and error correction unit 113. During. read access, the odd-weight Hamming code is read from memory array 101 and driven on memory data bus MD[71:0] . Within error detection/correction unit, the memory bus is split into two fields: the read data word field RD[63:0] and the read check bit field RCB[7:0] . The read data word RD[63:0] is input to check bit-generator 111. The check-bit generator 111, similar to ECC generator 202 (Fig. 2), generates an 8-bit ECC check bit value in response to read data word RD[63:0] . This ECC check bit value is provided to syndrome generator and decoder 112. Syndrome generator and decoder 112 bit-wise compares (exclusive OR's) the read check bits RCB[7:0] with the ECC check bit value provided by check bit generator 111. The resultant 8-bit syndrome word is decoded to determine whether the 72-bit code read from the memory array is free of error, contains a single-bit error, or contains multiple-bit errors. In the case of a single-bit error, syndrome generator and decoder 112 generates an 8-bit signal identifying the . location of the error bit from the syndrome, and activates a single-error identifier signal (1-ERR) to a logic high state. The 8-bit syndrome signal identifying the location of the error bit is transmitted to error correction unit 113. In response, error correction unit 113 corrects the error bit, which may exist in either the read data word RD[63:0] or the ECC check bit value RCB[7:0] . If no error is detected, the read data word RD[63:0] and ECC check bit value RCB[7:0] are not modified. In the case of multiple bit error, neither the read data word RD[63:0] nor the ECC check bit value RCB[7:0] is modified.
[0035] The read data value provided by error correction unit 113 is labeled as corrected data value CD [63:0] (even though it is understood that error correction unit 113 may not make any corrections to the read data value) . Similarly, the ECC check bit value provided by error correction unit is designated as corrected ECC check bit value CCB[7:0] . The corrected data value CD [63:0], is driven through output driver 108 to the output data bus Do [63:0] . Both the corrected data value CD [63:0] and the corrected ECC check bit value CCB[7:0] are also driven to write-back buffer 107. If the single-error indicator signal 1-ERR is asserted high, the corrected data value CD [63:0], the corrected ECC check bit value CCB[7:0], and the corresponding latched address LA [14:0] associated with the read access are all written to write-back buffer 107. As described in more detail below, the corrected data value CD [63:0] and the corrected ECC check bit value CCB[7:0] are queued in write-back buffer 107, in anticipation of a write-back operation to memory array 101.
Write-Back Buffer
[0036] Fig. 3 is a circuit diagram illustrating writeback buffer 107 in accordance with one embodiment of the present invention. In this embodiment, write-back buffer 107' includes registers 300-301, D-type flip-flops 310-311, toggle flip-flops 312-313, AND gates 321-326, NAND gate 327, OR gates 330-332, NOR gate 333, output multiplexers 341-343 and tri-state output drivers 351-352. Registers 300-301 provide storage for 2 entries, wherein each entry includes an address field (ADDR) , a data field (DATA) a correction check bit field (CCB) and a valid bit field (VALID) . The valid bit field, when set to a logic Λ 1' value, indicates that the contents of the corresponding register are valid and should be written-back to memory array.101. Registers 300 and 301 are arranged in a FIFO configuration in the described embodiment. [0037] The address fields of registers 300 and 301 are coupled to receive the latched address signal LA[14:0], the data fields of registers 300 and 301 are coupled to receive the corrected data value CD [63:0], and the correction check bit fields of registers 300 and 301 are coupled to receive the corrected check bits CCB[7:0]. The address, data, correction bit and valid fields of register 300 are labeled LA0, CD0, CCB0 and VA0, respectively. The address, data, corrected check bit and valid fields of register 301 are labeled LAi, CDX# CCBi and VAi, respectively. Corrected check bit values CCB0 and CCBX stored in registers 300 and 301 are provided to multiplexer 341. Corrected data values CD0 and CDX stored in registers 300 and 301 are provided to multiplexer 342. Latched address values LA0 and LAi stored in registers 300 and 301 are provided to multiplexer 343. [0038] Multiplexers 341-343 are controlled by the Q output of toggle flip-flop 313, which operates as a read pointer value, RP. If the read pointer value RP provided by flip-flop 313 has a logic "0" value, then multiplexers 341, 342 and 343 route the CCB0, CD0 and LA0 values, respectively. Conversely, if the read pointer value RP has a logic "1" value, then multiplexers 341, 342 and 343 route the CCBi, CDα. and. LAX values, respectively. [0039] The outputs of multiplexers 341 and 342 are routed to tri-state output drivers 351 and 352, respectively. Tri-state drivers 351 and 352 are controlled, by the output enable signal OE provided at the Q output terminal of flip-flop 311. When enabled, tri- state buffers 351 and 352 drive the signals received from multiplexers 341 and 342 as memory data output signals MD[71:64] andMD[63:0], respectively. The output of multiplexer 343 is directly provided as write-back buffer tag address WBBTag[14:0] .
[0040] In general, write-back buffer 107 operates as follows. When a. single error is detected by error detection/correction unit 106 during a read operation, the corrected data value, the corrected check bit value and the associated address value are written to one of registers 300-301 in write-back buffer 107. During a subsequent idle cycle, the corrected data value and corrected check bit value are written back to memory, array 101 at the location specified by the associated address value .
[0041] . The operation of write-back buffer 107 will now be described in more detail. To initialize write-back buffer 107, the RESET signal is initially asserted high. In response, OR gates 330 and 331 provide logic high reset values R0 and Rl to registers 300 and 301, respectively. These . logic high reset values R0 and Rl asynchronously reset the VALID bit fields of registers 300 and 301 to logic "0" values (i.e., VA0 = VAi = "0"). The logic "0" VALID bits VA0 and VAi cause OR gate 332 to provide a logic "0" output signal to AND gate 326, thereby forcing the write-back buffer retire signal WBBRet to a logic "0" value. The logic "0" WBBRet signal is latched into flip- flop 311, such that the output enable signal OE initially has a logic "0" value, thereby disabling tri-state output drivers 351-352. When the WBBRet signal has a logic "0" value, no corrected data values are written back to memory array 101. The logic "0" WBBRet signal is also applied to AND gates 324 and 325. As a result, the WBBRet signal causes the reset values R0 and Rl provided by OR gates 330 and 331 to initially remain at logic "0" values after the RESET signal transitions to a logic "0" value. [0042] The logic high RESET signal also sets the read pointer value RP provided by toggle flip-flop 313 to a logic "1" value, such that multiplexers 341-343 are initially set to pass the CCBi, CDi and LAX values, respectively, from register 300.
[0043] The logic high RESET signal also resets the Q output of toggle flip-flop 312 to a logic "0" value. The Q output of toggle flip-flop 312 operates as a write pointer value WP. When the write pointer value WP is low, register 300 is designated to receive the corrected check bit value CCB[7:0], the corrected data value CD [63:0], and the latched address value LA[14:0]. Conversely, when the write pointer value WP is high, register 301. is designated to receive these values CCB[7:0], CD [63:0] and LA[14iθ]. More specifically, when the write pointer value WP is low, AND gate 322 is enabled to pass the write buffer enable signal WBEN to the enable input terminal of register 300 as the load signal LD0.. When the write pointer value WP is high, AND gate 323 is enabled to pass the write buffer enable signal WBEN to the enable input terminal of register 301 as the load signal LD1.
[0044] The write buffer enable signal WBEN is provided by AND gate 321. AND gate 321 is coupled to receive the 1-ERR signal from error detection-correction circuit 106. AND gate 321 is also coupled to receive a latched read enable signal LREN provided at the Q output of flip-flop 310. (The read enable signal REN is latched into flip- flop 310 in response to the CLK signal to provide the latched read enable signal LREN) . AND gate 321 is also coupled to receive the output of NAND gate 327, which has input terminals coupled to receive valid bits VA0 and VAi. Thus, the write buffer enable signal WBEN signal will be asserted high if there is a single error detected in a read data value (1-ERR = "1") during a read operation (LREN = "1") and there is an available entry in one of registers 300 and 301 (VA0 and VAX not = "11"). [0045] The first time that there is a single error detected during a read operation, the write buffer enable signal WBEN is asserted high. In response to the high WBEN signal and the low write pointer value WP,. AND gate 322 asserts a logic high load signal LDO, which enables register 300. In response, the CCB[7:0], CD[63:0] and LA [14:0] values provided during the read operation are latched into register 300. In addition, the logic high LDO signal is latched into the VALID field of register 300, thereby setting valid bit VA0 to a logic high state. [0046] The logic high valid bit VA0 causes OR gate 332 to provide a logic high signal to AND gate 326. During a subsequent idle cycle when there are no pending read or write accesses (i.e., REN = WEN = "0"), AND gate 326 will receive a logic high signal from NOR gate 333. Under these conditions, the write-back buffer retire signal WBBRet is asserted high, thereby indicating that the contents of register 300 can be retired to memory array 101, without interfering with a read or write operation. On the next rising edge of the CLK signal, the logic high WBBret signal toggles the read pointer value RP provided by flip-flop 313 to a logic "0" value, and causes the output enable signal OE of flip-flop 311 to transition to a logic "1" value. At this time, multiplexers 341-343 route the CCB0, CD0 and LA0 signals from register 300. Tri-state buffers 351 and 352 are' enabled to drive the CCB0 and CDo values from register 300 as the MD[71:64] and MD[63:0] values in response to the logic high output enable signal OE. The latched address value LA0 from register 300 is provided to memory array 101 as the write back buffer tag address WBBTag[14:0] . Note that the WBBTag[14:0] signal is routed through address multiplexer 104 in response to the logic low REN and WEN signals. [0047] The logic high WBBRet signal is also provided to memory array sequencer 102, thereby initiating the generation of the memory control signals (RAS#, SEN#, CAS#, PRC#) required to write the corrected data back to memory array 101. At this time, the corrected data value CDo and corrected check bit value CCB0 are written back to memory array 101 at the location identified by address value LAo .
[0048] The CLK signal subsequently transitions to a. logic low level. At this time, the logic low CLK signal, the logic high WBBRet signal and the logic low read pointer value RP cause AND gate 324 to provide a logic high output signal. In response, OR gate 330 asserts a logic high reset signal R0, which resets the valid bit VA0 in register 300 to a logic "0" value. The logic low VA0 bit causes the WBBRet signal to transition to a logic low value .
[0049] As described above, the entry stored in register 300 is retired during an idle cycle (i.e., WEN = REN = "0") . However, as long as consecutive read or write operations occur, there will be no idle cycle during which the entry in register 300 can be retired. In this case, this entry remains in register 300.
[0050] If another read operation (REN = "1") having a single error (1-ERR = "1") occurs before the next idle cycle, AND gate 321 will again assert the write buffer enable signal WBEN to a logic "1" value. The logic "1" value of the WBEN signal causes flip flop 312 to toggle, such that the write pointer value WP is changed to a logic "1" value. This logic high WP signal causes AND gate 323 to assert a logic high load signal LD1. In response, the CCB[7:0], CD [63:0] and LA [14:0] signals associated with the current read operation are loaded into register 301 as values CCBi, CDi and LAi, respectively. The logic high load signal LD1 is also loaded into the VALID field of register 301, such that valid bit VAi has a logic high value.
[0051] At this time., both of the valid bits VA0 and VAX have logic "1" values. As a result, NAND gate 327 provides a logic "0" value to AND gate 321. Consequently, the write buffer enable signal WBEN cannot be asserted until at least one of the valid bits VA0 and VAX transitions to a logic "0" value. That is, no additional entries can be written to write-back buffer 107 until the entry stored in register 300 has been retired to memory array 101. Note that if a single error condition exists during a subsequent read operation (before the entry in register 300 can be retired) , then the corresponding corrected data value/check bits will not be written back to memory array 101. However, the corrected data value will be read out of memory device 100. Thus, failure to write-back the corrected value does not result in failure of memory device 100. It is likely that the next time that this data value/check bit is read from memory array 101, space will be available in write-back buffer 107, such that the corrected data value/check bit can be properly written back to memory array 101. [0052] Specific examples of write, read and write-back operations will now be described.
Write Access Timing
[0053] Fig. 4 is a waveform diagram illustrating the timing of two write accesses in accordance with one embodiment of the present invention. Prior to the rising edge of clock cycle Tl, the write enable signal WEN is asserted high, a first write data value DO is provided on input data bus Di[63:0], and a first write address value A0 is provided on address bus A [14:0]. At the rising edge of clock cycle Tl, the first write data value DO and the first write address A0 are latched into register 200. In Fig. 4, the write data value stored in register 200 is designated as DATA2oo and the address value stored in register 200 is designated as ADDR20o- During cycle Tl, ECC generator 202 generates an ECC check bit value, CB0, in response to the first write data value DO stored in register 200. Note that memory array sequencer 102 asserts the memory control signals RAS#, SEN#, CAS# and PRC# during the first clock cycle Tl in response to the logic high write enable signal WEN. However, this write access is ignored in the present example for reasons of clarity.
[0054] No write access is performed during clock cycle T2 (i.e., the WEN signal is low). As a result, the first write data value DO and the first write address AO remain latched in register 200 during cycle T2.
[0055] Prior to the rising edge of clock cycle T3, the write enable signal WEN is asserted high, a second write data value Dl is provided on input data bus Di[63:0], and a second write address value Al is provided on address bus A [14:0] . At the rising edge of clock cycle T3, the first write data value DO, the first write address A0 and the first ECC check bit value CB0 are latched into register 201. In Fig. 4, the write data value stored in register 201 is designated as DATA20ι, the address value stored in register 201 is designated as ADDR20ι, and the ECC check bit value stored in register 201 is designated as CB2oι. Also at the rising edge of clock cycle T3, the second write data value Dl and the second write address value Al are latched into register 200. During cycle T3, ECC generator 202 generates an ECC check bit value, CB1, in response to the second write data value Dl stored in register 200.
[0056] The logic high write enable signal WEN enables output buffers 210 and 211, such that these output buffers drive the first data value DO and the first ECC check bit value CBO from register 201 onto memory data bus MD[71:0] The first write address A0 is provided from register 201 as the write buffer tag signal WBTag[14:0]. This write buffer tag signal WBTag[14:0] is routed through multiplexer 104 to memory array 101 in response to the logic high write enable signal . Memory array sequencer, asserts the memory write signal Mwrite and the memory control signals RAS#, SEN#, CAS# and PRC# in response to the logic high write enable signal WEN during cycle T3, thereby enabling the first write data value DO and the first. ECC check bit value CBO to be written to memory array 101 at the location specified by the first write address AO . Note that the second write data value Dl and the second write address Al remain in register 200 until the next write access (or the next read access that hits write buffer 105) . Also note that ECC check bit value CB1 are waiting at the output of ECC generator 202 until the beginning of the next write access. In this manner, the generation of ECC check bit values doe not affect the write access latency of memory device 100.
Single Read Access and Write-Back Timing [0057] Fig. 5 is a waveform diagram illustrating the timing of a read transaction followed by a write-back operation in accordance with one embodiment of the present invention. Before the rising edge of clock cycle Tl, the read enable signal REN is asserted high and a read address Ax [14:0] is provided on address bus A [14:0] to initiate a read access. At the rising edge of cycle Tl, the read address A [14:0] is latched into address register 103 as the latched read address LAx[14:0]. This latched read address LAx[14:0] is driven to the memory address bus MA [14:0] through multiplexer 104. Multiplexer 104 routes the latched read access address LAx[14:0] in response to the high state of read enable signal REN and the low state of the write enable signal WEN.
[0058] The logic high read enable signal REN is also latched into memory array sequencer 102 in response to the rising edge of. cycle Tl. In response, memory array sequencer 102 sequentially activates the memory array control signals RAS#, SEN#, CAS#, and PRC#, thereby reading the Hamming code word (i.e., MDx[71:0]) associated with the latched read address LAx[14:0] . Note that the only memory array control signal shown in Fig. 5 is the CAS# signal . The high state of the latched read enable signal REN in memory array sequencer 102 causes, the memory write signal MWrite have a logic low value, thereby indicating that the present memory operation is a read . access. Consequently, the accessed word MDx[71:0] is read out from the memory array on data bus MD[71:0] . [0059] The 72-bit accessed word MDx[71:0] is provided to error detection-correction unit 106, wherein the data portion of the word (i.e., MDx[63:0]) and the check-bit portion of the word (i.e., MDx[71:64]) are separated for syndrome generation, error detection and correction. If a single-bit error is detected, syndrome generator 112 activates the single-error signal (1-ERR) high, and error correction unit 113 corrects the single-bit error in either the data word or the check-bits. The corrected data word CDx[63:0] is driven through output driver 108 as the output data value Do [63:0] .
[0060] Within write-back buffer 107, flip-flop 310 latches the logic high read enable signal REN at the rising edge of cycle Tl, thereby providing a logic high latched read enable signal LREN. When the single error signal 1-ERR is activated high by syndrome generator 112, AND gate 321 activates the write buffer enable signal WBEN to a logic high state. AND gate 322 activates the load data signal LDO to a logic high value in response to the logic high WBEN signal and the logic low write pointer value WP. At the beginning of clock cycle T2, the CLK signal transitions to a logic high state, thereby activating register 300, such that the logic high LDO signal, the corrected check bits CCBx[7:0], the corrected data word CDx[63:0] and the associated latched address LAx[14:0] are written to register 300 of write-back buffer 107. At the this time, the valid bit VA0 transitions to a logic high state, and the corrected ECe code word, consisting of corrected check bits CCBx[7:0] and the corrected data word CDx[63:0], is available at the output of register 300. [0061] At the beginning of cycle T2, both the read enable signal REN and the write enable signal WEN are low, thereby indicating the absence of an external access . However, the valid signal VA0 goes high after the rising edge of clock cycle T2. As a result, WBBRet signal has a low state at the rising edge of cycle T2. Thus, even though no external access is requested during cycle T2, write-back does not take place during cycle T2. [0062] At the beginning of cycle T3, the high state of the WBBRet signal toggles the output of toggle flip-flop 313 (i.e., read pointer value RP) from high to low. The low state of the read pointer signal RP causes multiplexers 341-343 to route the corresponding contents of register 300. As a result, the latched address value LAx[14:0] stored in register 300 is driven as the writeback buffer tag address WBBTagx[14 :0] . The WBBTagx[14 :0] signal is provided to multiplexer 104. Multiplexer 104 . routes the WBBTagxf14:0] signal as the memory address signal MA [14:0] in response to the logic low states of the REN and WEN signals. Multiplexers 341 and 342 route the corrected check bit value CCBx[7:0] and the corrected data word CDx[63:0] to tri-state buffers 351 and 352, respectively. The output enable signal OE is asserted high when the high state of the WBBRet signal is latched into flip-flop 311 at the rising edge of cycle T3. The high OE signal enables tri-state buffers 341 and 342 to drive the corrected check bit value CCBx[7:0] and the corrected data word CDx[63:0] onto memory data bus MD[71:0].
[0063] Memory array sequencer 102 latches the logic high WBBRet signal at the rising edge of cycle T3, thereby resulting in the sequential activation of the memory control signals RAS#, SEN#, CAS# and PRC#. Memory array sequencer 102 also asserts the MWrite signal in response to the logic high WBBRet signal. As a result, the word on data bus MD[71:0] is written to the memory location specified by the address WBBTag[14 :0] . At the falling , edge of the CLK signal in cycle T3, AND gate 324 provides a logic high output signal, thereby driving the reset signal RO to a logic high state. The logic high reset signal RO resets the valid bit VA0 to a logic low value. The logic low valid bits VA0 and VAi cause OR gate 333 to provide a logic "0" output signal, which in turn, causes the WBBRet signal to transition to a logic "0" state. At the end of CLK cycle T3, the control signals RAS#, SEN#, CAS# and PRC# are de-asserted high, thereby completing the memory write operation and write-back cycle. [0064] Notice that if a single-bit error does not occur in the read access of cycle Tl, then neither the data nor the check bits read from memory array 101 will be corrected or stored in write-back buffer 107. However, the uncorrected data is still driven out to the output data bus Do [63:0] by output driver 108. Back-to-Back Read Cycles and Write-Back Cycles [0065] Fig. 6 is a waveform diagram illustrating ' the timing of two consecutive read access cycles followed by two consecutive write-back cycles in accordance with one embodiment of the present invention. Before the rising edge of clock cycle Tl, the read enable signal REN is asserted high and a read address Al[14:0] is provided on address bus A [14:0] to initiate a read access. The read cycle operations and the control timing waveforms are similar to those shown in Fig. 5. A single-bit error is detected in this first read access, which results in the corrected Hamming code word (CDl/CCBl) and address Al[14:0] being stored in register 300 of write-back buffer 107. At the rising edge of cycle T2, the high state of the 1-ERR and LREN signals causes toggle flip-flop 312 to change the write pointer value WP from a logic "0" value to a logic "1" value, thereby configuring register 301 of write-back buffer 107 to receive the next corrected Hamming code word and address. [0066] Before the rising edge of clock cycle T2, another read enable signal REN is asserted high and a second read address A2[14:0] is provided on address bus A [14:0] to initiate a second read access. Again, the read cycle operations and the control timing waveforms are similar to those shown in Fig. 5. A single-bit error is. detected in this second read access. In response, error detection-correction circuit 106 asserts the 1-ERR signal and provides a corrected Hamming code word that includes corrected data CD[63:0] and corrected check bit CCB2[7:0]. In response to the logic high 1-ERR signal, the logic high LREN signal, and the logic high output of NAND gate 327, AND gate 321 provides a logic high write buffer enable signal WBEN. In response to the logic high WBEN signal and the logic "1" write pointer value, AND gate 323 asserts the load signal LDl to a logic high value, thereby enabling register 301. On the rising edge of cycle T3, the corrected Hamming code word (CD2/CCB2) , address A2[14:0] and the high state of LDl are latched into register 301 of write-back buffer 107. Consequently, valid bit VAi is driven to a logic high value. [0067] At the end of cycle T2, the low states of the REN and WEN signals indicate the absence of an external memory access. The low states of the REN and WEN signals, along with the high state of the VA0 signal causes AND gate 326 to assert a logic high WBBRet signal. In write-back buffer 107, this high WBBRet signal is latched into flip- flop 311 at the rising edge of cycle T3, thereby causing output enable signal OE to go high. The high state of the WBBRet signal at the rising clock-edge also causes toggle flip-flop 313 to drive the read pointer value RP to a logic "0" state.. Consequently, first address Al[14:0] stored in register 300 is driven as the output signal WBBTag[14 : 0] , while the corrected data and check bits GDI [63:0] and CCBI [7:0] stored in register 300 are driven as output signal MD[71:0]. The write-back buffer tag WBBTag[14 :0] is provided to memory array 101 through multiplexer 104 in response to the logic low REN and WEN signals. In memory array sequencer 102, the high state of the WBBRet signal is latched at the beginning of cycle T3. Subsequently, the MWrite signal is driven high and the memory array control signals RAS#, SEN#, CAS# and PRC# are activated in sequence so that memory array 101 goes through a memory write cycle with the corrected code word MD[71:0] written to the location specified by WBBTag[14 :0] . The reset signal R0 goes high in response to the falling edge of cycle T3, thereby resetting the valid bit VA0 in register 300. Resetting valid bit VA0 invalidates the contents of register 300. At the end of cycle T3, the memory array control signals are all deactivated high and memory array 101 is ready for another access.
[0068] At the end of cycle T3, the low states of the REN and WEN .signals again indicate the absence of an external memory access. The low states of the REN and WEN signals, together with the high state of valid bit VAX causes the WBBRet signal to remain in a logic high state. At the beginning of cycle T4, the high state of the WBBRet signal causes the read pointer value RP provided by toggle flip-flop 313 to transition to a logic high state. As a result, multiplexers 341-343 are controlled to route the corrected check bit CCB2[7:0] and the corrected data value CD2[63:0] as the MD[71:0] value, and the address value A2[14:0] as the write back buffer tag value WBBTag[14:0] . Note that the output enable signal OE remains in a logic high state in response to the logic high WBBRet signal. In memory array sequencer 102, the high state of the WBBRet signal is latched at the rising edge of cycle T . The high state of the WBBRet signal causes the MWrite signal to remain high, thereby starting another write cycle in memory array 101. The write cycle is performed with the successive activation of the RAS#, SEN#, CAS# and PRC# signals. This results in the modified Hamming code word MD[71:0] from register 301 being written back to memory array 101 at the location (A2) specified by the WBBTag[14:0] read from register 301. The reset signal Rl goes high in response to the falling edge of cycle T4, thereby resetting the valid bit VAi in register 301. Resetting valid bit VAi. invalidates the contents of register 301. At the end of cycle T4, the memory array control signals are all deactivated high and memory array 101 is ready for another access. When the valid bit VAX transitions to a logic low state, both of valid bits VA0 and VAi have logic low values. As a result, OR gate 332 provides a logic low output signal, which causes the. WBBRet signal to transition to a logic low state. The logic low valid bits VA0 and VAI indicate that both entries of write-back buffer 107 have been retired to memory array 101..
[0069] Note that if another read access occurs during cycle T3 with a single-bit error on the accessed code word, then the corrected code word will not be written in the write-back buffer, because both of the valid bits VA0 and VAi are high. The high valid bits VA0 and Ai cause the output of NAND gate 327 to go- low, and the output of AND gate (i.e., write-back enable signal WBEN) to go low. The low state of the WBEN signal prevents the load signals LDO and LDl from being asserted, and thereby prohibits writing new entries to registers 300 and 301. Rather, the entries in registers 300 and 301 are preserved for subsequent write-back operations. The corrected code resulted from this third read access is not written back to the memory array 101. However, this does not result in memory failure as long as the memory word does not accumulate another error bit, because this code word can still be read and corrected during a subsequent read access. [0070] Although the invention has been described in connection with several embodiments, it is understood that this invention is not limited to the embodiments disclosed, but is capable of various modifications, which would be apparent to a person skilled in the art. For example, although the described embodiments have focused on a memory array using DRAM cells, it is understood that a memory array using SRAM cells or non-volatile memory cells can be implemented in other embodiments with some modification to the memory array sequencer. Such modification could be readily accomplished by one of ordinary skill in the art of memory design. Thus, the. invention is limited only by the following claims.

Claims

1. A semiconductor memory device comprising: a memory array configured to store data values and corresponding error correction code values; and a write buffer/error correction code (ECC) generator configured to receive and store a write data value and a corresponding write address value, and generate an ECC value in response to the write data value during a first write access; and circuitry for routing the write data value, write address value and ECC value to the memory array during a second write access.
2. The semiconductor memory device of Claim 1, wherein the write buffer/ECC generator comprises: a first register configured to receive and store a write data value and corresponding write address value; an error correction code generator coupled to receive the write data value stored in the first register, the error correction code generator generating the ..ECC value in response to the write data value stored in the first register.
3. The semiconductor memory device of Claim 2 , wherein the write buffer/ECC generator further comprises a second register configured to receive and store the write data value and the corresponding write address value from the first register, and the ECC value from the error correction, code generator, the second register being coupled to the memory array.
. The semiconductor memory device of Claim 2 , wherein the write buffer/ECC generator further comprises a comparator coupled to receive the write address value stored in the first register and a write address value applied to the first register, the comparator asserting a match control signal when the write address values match.
5. The semiconductor memory device of Claim 4, wherein the write buffer/ECC generator further comprises a circuit coupled to receive the match control signal and a read enable signal, the logic gate asserting a hit signal to indicate that a read access has hit the write buffer/ECC generator when the match control signal and the read enable signal are. both asserted.
6. The semiconductor memory device of any one of Claims' 1 to 5 wherein the write buffer/ECC generator comprises a double buffered write-buffer arranged in a first in, first out (FIFO) configuration.
7. The semiconductor memory device of any one of Claims 1 to 6 wherein the write buffer/ECC generator comprises: means for storing a write data value and a write address value of a present write transaction; and means for retiring a write data value and ECC value- associated with a previous write transaction to a location in the memory array designated by a write address value associated with the previous write transaction.
8. A method of operating a semiconductor memory comprising: storing a first write data value and a corresponding first write address in a first stage of a write buffer during a first write access; generating a first error correction code (ECC) value in response to the first write data value stored in the first stage of the write buffer during the first write access; transferring the first write data value, the first ECC value and the first write address to a memory array during a second write access; retiring the first write data value and the first ECC value to a location in the memory array identified by the first write address during the second write access; storing a second write data value and a corresponding second write address in the first stage of a write buffer during the second write access; and generating a second error correction code (ECC) value in response to the second write data value stored in the first stage of the write buffer during the second write access .
9. The method of Claim 8, further comprising: transferring the first write data value, the first ECC value and the first write, address into a second stage of the write buffer during the second write access; and retiring the first write data value and the first ECC value from the second stage of the write buffer to the location in the memory array identified by the first write address during the second write access .
10. The method of Claim 8 or 9, further comprising driving the first write data value and the first ECC value to the memory array by enabling tri-state buffers during the second write access.
11. The method of Claim 8, 9 or 10 further comprising asserting a write buffer hit signal if a read address of a read access matches a write address stored in the first stage of the write buffer.
12. The method of Claim 11, further comprising inhibiting access to the memory array when the write buffer hit signal is asserted.
13. A semiconductor memory device comprising: a memory array configured to store data/error correction code (ECC) values, wherein each data/ECC value includes a data value and a corresponding error correction code (ECC) value; an error detection/correction circuit coupled to receive a first data/ECC value from a first address of the memory array during a first read access, the error detection/correction circuit being configured to generate a corrected first data/ECC value and assert an error indicator signal upon detecting an error in the first data/ECC value; and a write-back buffer configured to store the corrected first data/ECC value in response to the asserted error indicator signal, the write-back buffer further being configured to write the corrected first data/ECC value to the first address of the memory array during an idle cycle of the memory device.
1 . The semiconductor memory device of Claim 13 , wherein the write-back buffer includes multiple entries, and is arranged in a first in, first out (FIFO) configuration.
15. The semiconductor memory device of Claim 13 or 14, wherein the write-back buffer includes multiple entries, and is arranged in a last in, first out (LIFO) configuration.
16. The semiconductor memory device of Claim 13, 14 or 15, wherein the write-back buffer includes multiple entries, the write-back buffer including a circuit to prevent write operations to the write-back buffer when all of the entries of the write-back buffer are full.
17. A method of operating a semiconductor device, the method comprising: storing a plurality of data/error correction code (ECC) values in a memory array, wherein each data/ECC value includes a data value and a corresponding error correction code (ECC) value; generating a first corrected data/ECC value in response to a first data/ECC value retrieved from a first address of the memory array during a first read access, wherein the first data/ECC value includes an error; asserting an error indicator signal to indicate that the first data/ECC value includes an error; storing the first corrected data/ECC value and the first address in a write-back buffer in response to the asserted error indicator signal; and writing the first corrected data/ECC value to the first address of the memory array during an idle cycle of the memory device.
18. The method of Claim 17, further comprising: generating a second corrected data/ECC value in response to a second data/ECC value retrieved from a second address of the memory array during a second read access, wherein the second data/ECC value includes, an error; asserting the error indicator signal to indicate that the second data/ECC value includes an error; storing the second corrected data/ECC value and the second address in the write-back buffer in response to the asserted error indicator signal, wherein the first corrected data/ECC value and the second corrected data/ECC value are stored in the write-back buffer at the same time; and writing the second corrected data/ECC value to the second address of the memory array during an idle cycle of the memory device.
19. A semiconductor memory device comprising: a memory array configured to store data/error correction code (ECC) values, wherein each data/ECC value includes a data value and a corresponding, error correction code (ECC) value; a write buffer/error correction code (ECC) generator configured to receive and store a write data value and a corresponding write address value, and generate an ECC value in response to the write data value during a first write access; circuitry for routing the write data value, write address value and ECC value to the memory array during a second write access; an error detection/correction circuit coupled to receive a first data/ECC value from a first address of the memory array during a first read access, the error detection/correction circuit being configured to generate a corrected first data/ECC value and assert an error indicator signal upon detecting an error in the first data/ECC value; and a write-back buffer configured to store, the corrected first data/ECC value in response to the asserted error indicator signal, the write-back buffer further being configured to write the corrected first data/ECC value to the first address of .the memory array during an idle cycle of the memory device.
20. A method of operating a semiconductor memory comprising : storing a first write data value and a corresponding first write address in a first stage of a write buffer during a first write access; generating a first error correction code (ECC) value in response to the first write data value stored in the first stage of the write buffer during the first write access; transferring the first write data value, the first ECC value and the first write address into a second stage of the write buffer during a second write access; retiring the first write data value and the first ECC value from the second stage of the write buffer to a location in a memory array identified by the first write address during the second write access; storing a second write data value and a corresponding second write address in the first stage of a write buffer during the second write access; generating a second ECC value in response to the second write data value stored in the first stage of the write buffer during the second write access; storing a plurality of data/ECC values in the memory array, wherein each data/ECC value includes a data value and a corresponding ECC value; generating a first corrected data/ECC value in response to a first data/ECC value retrieved from a first address of the memory array during a first read access, wherein the first data/ECC value includes an error; asserting an error indicator signal to indicate that the- first data/ECC value includes an error; storing the first corrected data/ECC value and the first address in a write-back buffer in response to the asserted error indicator signal; and writing the first corrected data/ECC value to the first address of the memory array during an idle cycle of the memory device.
PCT/GB2002/005123 2001-11-14 2002-11-13 Error correcting memory and method of operating same WO2003042826A2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
EP02779675A EP1449082B1 (en) 2001-11-14 2002-11-13 Error correcting memory and method of operating same
DE60210658T DE60210658T2 (en) 2001-11-14 2002-11-13 ERROR-CORRECTING MEMORY AND METHOD FOR USE THEREOF

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/003,602 US7051264B2 (en) 2001-11-14 2001-11-14 Error correcting memory and method of operating same
US10/003,602 2001-11-14

Publications (2)

Publication Number Publication Date
WO2003042826A2 true WO2003042826A2 (en) 2003-05-22
WO2003042826A3 WO2003042826A3 (en) 2004-04-22

Family

ID=21706644

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/GB2002/005123 WO2003042826A2 (en) 2001-11-14 2002-11-13 Error correcting memory and method of operating same

Country Status (5)

Country Link
US (2) US7051264B2 (en)
EP (1) EP1449082B1 (en)
DE (1) DE60210658T2 (en)
TW (1) TW580709B (en)
WO (1) WO2003042826A2 (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006164277A (en) * 2004-12-02 2006-06-22 Robert Bosch Gmbh Device and method for removing error in processor, and processor
CN100347677C (en) * 2005-01-10 2007-11-07 中国航天时代电子公司第七七一研究所 Primary particle inversion resistant memory error correction and detection and automatic write back method for spacial computer
US9495242B2 (en) 2014-07-30 2016-11-15 International Business Machines Corporation Adaptive error correction in a memory system
EP3504624A4 (en) * 2016-08-23 2019-07-24 Texas Instruments Incorporated Error correction hardware with fault detection

Families Citing this family (103)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4856848B2 (en) * 2001-10-11 2012-01-18 アルテラ コーポレイション Error detection on programmable logic resources
JP4112849B2 (en) * 2001-11-21 2008-07-02 株式会社東芝 Semiconductor memory device
US7027064B2 (en) * 2002-02-28 2006-04-11 Sun Microsystems, Inc. Active block write-back from SRAM cache to DRAM
US6976194B2 (en) * 2002-06-28 2005-12-13 Sun Microsystems, Inc. Memory/Transmission medium failure handling controller and method
US6973613B2 (en) * 2002-06-28 2005-12-06 Sun Microsystems, Inc. Error detection/correction code which detects and corrects component failure and which provides single bit error correction subsequent to component failure
US6996766B2 (en) * 2002-06-28 2006-02-07 Sun Microsystems, Inc. Error detection/correction code which detects and corrects a first failing component and optionally a second failing component
KR100481820B1 (en) * 2002-09-26 2005-04-11 (주)실리콘세븐 SRAM comPatible Memory Device comPensating an outPut data with Parity and OPerating Method thereof
JP2004234770A (en) * 2003-01-31 2004-08-19 Renesas Technology Corp Semiconductor memory and test method
US7664987B2 (en) * 2003-05-25 2010-02-16 Sandisk Il Ltd. Flash memory device with fast reading rate
US7530008B2 (en) 2003-08-08 2009-05-05 Sun Microsystems, Inc. Scalable-chip-correct ECC scheme
US8176250B2 (en) * 2003-08-29 2012-05-08 Hewlett-Packard Development Company, L.P. System and method for testing a memory
US7346755B2 (en) * 2003-09-16 2008-03-18 Hewlett-Packard Development, L.P. Memory quality assurance
US7188296B1 (en) 2003-10-30 2007-03-06 Sun Microsystems, Inc. ECC for component failures using Galois fields
US7376887B2 (en) * 2003-12-22 2008-05-20 International Business Machines Corporation Method for fast ECC memory testing by software including ECC check byte
US7328377B1 (en) 2004-01-27 2008-02-05 Altera Corporation Error correction for programmable logic integrated circuits
JP4102313B2 (en) * 2004-02-05 2008-06-18 株式会社東芝 Semiconductor integrated circuit device
US7099221B2 (en) 2004-05-06 2006-08-29 Micron Technology, Inc. Memory controller method and system compensating for memory cell data losses
US20060010339A1 (en) * 2004-06-24 2006-01-12 Klein Dean A Memory system and method having selective ECC during low power refresh
US7340668B2 (en) * 2004-06-25 2008-03-04 Micron Technology, Inc. Low power cost-effective ECC memory system and method
US7116602B2 (en) * 2004-07-15 2006-10-03 Micron Technology, Inc. Method and system for controlling refresh to avoid memory cell data losses
US6965537B1 (en) * 2004-08-31 2005-11-15 Micron Technology, Inc. Memory system and method using ECC to achieve low power refresh
US7392456B2 (en) 2004-11-23 2008-06-24 Mosys, Inc. Predictive error correction code generation facilitating high-speed byte-write in a semiconductor memory
US20060156177A1 (en) * 2004-12-29 2006-07-13 Sailesh Kottapalli Method and apparatus for recovering from soft errors in register files
US7644341B2 (en) * 2004-12-30 2010-01-05 Taiwan Semiconductor Manufacturing Co., Ltd. Method and system for correcting soft errors in memory circuit
US20060195774A1 (en) * 2005-02-17 2006-08-31 Stephen Bowyer Error correction circuit and method
DE102005022107B9 (en) * 2005-05-12 2016-04-07 Infineon Technologies Ag Apparatus and method for determining a position of a bit error in a bit string
US20060265636A1 (en) * 2005-05-19 2006-11-23 Klaus Hummler Optimized testing of on-chip error correction circuit
US7373583B2 (en) * 2005-05-19 2008-05-13 Infineon Technologies North America Corp. ECC flag for testing on-chip error correction circuit
JP4653218B2 (en) * 2005-06-09 2011-03-16 ガンブロ・ルンディア・エービー Medical device and method for setting up a medical device
US7447948B2 (en) * 2005-11-21 2008-11-04 Intel Corporation ECC coding for high speed implementation
JP4936746B2 (en) * 2006-03-08 2012-05-23 ルネサスエレクトロニクス株式会社 Semiconductor device
JP2007242162A (en) * 2006-03-09 2007-09-20 Toshiba Corp Semiconductor memory device
US7539923B1 (en) * 2006-08-03 2009-05-26 Xilinx, Inc. Circuit and method of transmitting a block of data
CN100557715C (en) * 2006-08-11 2009-11-04 福昭科技(深圳)有限公司 Utilize one group of ECC circuit parallel to handle the method for multi-group data
US7894289B2 (en) * 2006-10-11 2011-02-22 Micron Technology, Inc. Memory system and method using partial ECC to achieve low power refresh and fast access to data
US7900120B2 (en) 2006-10-18 2011-03-01 Micron Technology, Inc. Memory system and method using ECC with flag bit to identify modified data
US7836380B2 (en) * 2006-10-31 2010-11-16 Intel Corporation Destination indication to aid in posted write buffer loading
US7917828B2 (en) * 2006-12-28 2011-03-29 Intel Corporation Providing error correction coding for probed data
US7840876B2 (en) * 2007-02-20 2010-11-23 Qimonda Ag Power savings for memory with error correction mode
US8122323B2 (en) * 2007-03-08 2012-02-21 Intel Corporation Method, apparatus, and system for dynamic ECC code rate adjustment
KR100890546B1 (en) * 2007-04-30 2009-03-27 슈어소프트테크주식회사 The method of detecting memory error
US7797594B1 (en) * 2007-07-05 2010-09-14 Oracle America, Inc. Built-in self-test of 3-dimensional semiconductor memory arrays
US20090083495A1 (en) * 2007-09-26 2009-03-26 Khellah Muhammad M Memory circuit with ecc based writeback
JP4820795B2 (en) * 2007-10-04 2011-11-24 パナソニック株式会社 Semiconductor memory device
KR101291721B1 (en) * 2007-12-03 2013-07-31 삼성전자주식회사 Nonvolatile memory device using variable resistive element, memory system comprising the same
US8140945B2 (en) * 2008-05-23 2012-03-20 Oracle America, Inc. Hard component failure detection and correction
US8352781B2 (en) * 2008-07-04 2013-01-08 Stmicroelectronics International N.V. System and method for efficient detection and restoration of data storage array defects
TWI382422B (en) * 2008-07-11 2013-01-11 Genesys Logic Inc Storage device for refreshing data pages of flash memory based on error correction code and method for the same
CN102171767A (en) * 2008-09-30 2011-08-31 Lsi公司 Methods and apparatus for soft data generation for memory devices based on performance factor adjustment
TWI401694B (en) * 2009-01-14 2013-07-11 Nanya Technology Corp Dram column-command address control circuit and method
US8161355B2 (en) * 2009-02-11 2012-04-17 Mosys, Inc. Automatic refresh for improving data retention and endurance characteristics of an embedded non-volatile memory in a standard CMOS logic process
KR101543245B1 (en) * 2009-03-18 2015-08-11 삼성전자주식회사 Error correcting device memory device and data processing system including the same
JP2011108306A (en) * 2009-11-16 2011-06-02 Sony Corp Nonvolatile memory and memory system
JP2013033560A (en) 2009-12-03 2013-02-14 Panasonic Corp Semiconductor memory device
US8438344B2 (en) * 2010-03-12 2013-05-07 Texas Instruments Incorporated Low overhead and timing improved architecture for performing error checking and correction for memories and buses in system-on-chips, and other circuits, systems and processes
US8352839B2 (en) 2010-06-11 2013-01-08 International Business Machines Corporation Encoding data into constrained memory
US20120110244A1 (en) * 2010-11-02 2012-05-03 Micron Technology, Inc. Copyback operations
KR101873526B1 (en) 2011-06-09 2018-07-02 삼성전자주식회사 On-chip data scrubbing method and apparatus with ECC
DE112012003493T5 (en) * 2011-08-24 2014-05-08 Mitsubishi Electric Corporation Error-correcting decoder
US9336342B2 (en) * 2011-09-23 2016-05-10 Synopsys, Inc. Memory hard macro partition optimization for testing embedded memories
US9057764B2 (en) * 2011-10-27 2015-06-16 International Business Machines Corporation Detection of unchecked signals in circuit design verification
US8707133B2 (en) 2011-12-05 2014-04-22 Lsi Corporation Method and apparatus to reduce a quantity of error detection/correction bits in memory coupled to a data-protected processor port
JP5867264B2 (en) * 2012-04-24 2016-02-24 ソニー株式会社 Storage control device, memory system, information processing system, and storage control method
KR20130136341A (en) * 2012-06-04 2013-12-12 에스케이하이닉스 주식회사 Semiconductor device and operating method thereof
JP5962258B2 (en) * 2012-06-29 2016-08-03 富士通株式会社 Data conversion method, data conversion apparatus, and data conversion program
US8862953B2 (en) * 2013-01-04 2014-10-14 International Business Machines Corporation Memory testing with selective use of an error correction code decoder
US9690650B2 (en) * 2013-03-11 2017-06-27 Macronix International Co., Ltd. Storage scheme for built-in ECC operations
KR101862379B1 (en) * 2013-04-19 2018-07-05 삼성전자주식회사 Memory device with error correction code and redundancy repair operations
US9348697B2 (en) * 2013-09-10 2016-05-24 Kabushiki Kaisha Toshiba Magnetic random access memory
KR102127455B1 (en) * 2013-12-11 2020-06-26 삼성전자주식회사 Semiconductor memory device and testing method thereof
CN105023616A (en) * 2014-04-30 2015-11-04 深圳市中兴微电子技术有限公司 Method for storing and retrieving data based on Hamming code and integrated random access memory
US9704563B2 (en) * 2014-12-08 2017-07-11 Intel Corporation Apparatus, method and system for performing successive writes to a bank of a dynamic random access memory
TW202236267A (en) 2015-05-28 2022-09-16 日商鎧俠股份有限公司 semiconductor device
US9778983B2 (en) 2015-08-06 2017-10-03 Nxp B.V. Integrated circuit device and method for reducing SRAM leakage
US10223197B2 (en) 2015-08-06 2019-03-05 Nxp B.V. Integrated circuit device and method for applying error correction to SRAM memory
US10437666B2 (en) 2015-08-06 2019-10-08 Nxp B.V. Integrated circuit device and method for reading data from an SRAM memory
US9639418B2 (en) * 2015-09-01 2017-05-02 International Business Machines Corporation Parity protection of a register
US9800271B2 (en) 2015-09-14 2017-10-24 Qualcomm Incorporated Error correction and decoding
KR20170045806A (en) 2015-10-20 2017-04-28 삼성전자주식회사 Semiconductor memory device and method of operating the same
US10210041B2 (en) * 2015-11-05 2019-02-19 SK Hynix Inc. Systems and methods for low latency copy operations in non-volatile memory
US10372531B2 (en) * 2017-01-05 2019-08-06 Texas Instruments Incorporated Error-correcting code memory
JP6880795B2 (en) * 2017-02-08 2021-06-02 オムロン株式会社 Control device and its control method
CN107195329B (en) * 2017-05-17 2024-04-02 西安紫光国芯半导体有限公司 Method for correcting errors of memory array in DRAM during read operation and DRAM
DE102017212181A1 (en) * 2017-07-17 2019-01-17 Robert Bosch Gmbh Method and apparatus for determining checksums, buffer memory and processor
US10460822B2 (en) * 2017-08-23 2019-10-29 Arm Limited Memory with a controllable I/O functional unit
US10908995B2 (en) * 2017-09-29 2021-02-02 Nvidia Corporation Securing against errors in an error correcting code (ECC) implemented in an automotive system
JP2019079377A (en) * 2017-10-26 2019-05-23 東芝メモリ株式会社 Semiconductor storage apparatus
US10725862B2 (en) * 2018-07-06 2020-07-28 Macronix International Co., Ltd. Data recovery method to error correction code in memory
US10802974B2 (en) * 2018-10-15 2020-10-13 Texas Instruments Incorporated Virtual network pre-arbitration for deadlock avoidance and enhanced performance
US10977121B2 (en) 2018-10-17 2021-04-13 Macronix International Co., Ltd. Fast page continuous read
US11048649B2 (en) 2018-10-17 2021-06-29 Macronix International Co., Ltd. Non-sequential page continuous read
JP7016332B2 (en) 2019-07-05 2022-02-04 華邦電子股▲ふん▼有限公司 Semiconductor memory device
US11557365B2 (en) * 2019-08-16 2023-01-17 Nxp B.V. Combined ECC and transparent memory test for memory fault detection
JP2021047690A (en) * 2019-09-19 2021-03-25 キオクシア株式会社 Memory system
US10957384B1 (en) 2019-09-24 2021-03-23 Macronix International Co., Ltd. Page buffer structure and fast continuous read
US11056160B2 (en) 2019-10-22 2021-07-06 Nxp Usa, Inc. Non-volatile memory with selectable hard write
US11249913B2 (en) 2020-03-06 2022-02-15 Macronix International Co., Ltd. Continuous read with multiple read commands
US11302366B2 (en) 2020-03-06 2022-04-12 Macronix International Co., Ltd. Method and system for enhanced read performance in low pin count interface
KR20210122455A (en) * 2020-04-01 2021-10-12 삼성전자주식회사 Semiconductor memory devices
US11366715B2 (en) * 2020-09-22 2022-06-21 Texas Instruments Incorporated Infrastructure integrity checking
US11429481B1 (en) * 2021-02-17 2022-08-30 Xilinx, Inc. Restoring memory data integrity
DE102021205172A1 (en) 2021-05-20 2022-11-24 Robert Bosch Gesellschaft mit beschränkter Haftung Storage device and method for checking storage contents
US11379306B1 (en) * 2021-07-29 2022-07-05 Bae Systems Information And Electronic System Integration Inc. Method for radiation hardening synchronous DRAM

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5555499A (en) * 1978-10-16 1980-04-23 Nec Corp Memory control unit
US4380812A (en) * 1980-04-25 1983-04-19 Data General Corporation Refresh and error detection and correction technique for a data processing system
US4694454A (en) * 1984-07-27 1987-09-15 Hitachi, Ltd. Dynamic memory diagnosis and error correction apparatus
GB2289779A (en) * 1994-05-24 1995-11-29 Intel Corp Automatically scrubbing ECC errors in memory via hardware
US5524220A (en) * 1994-08-31 1996-06-04 Vlsi Technology, Inc. Memory subsystems having look-ahead instruction prefetch buffers and intelligent posted write buffers for increasing the throughput of digital computer systems

Family Cites Families (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3576982A (en) * 1968-12-16 1971-05-04 Ibm Error tolerant read-only storage system
US3814921A (en) * 1972-11-15 1974-06-04 Honeywell Inf Systems Apparatus and method for a memory partial-write of error correcting encoded data
US3969706A (en) * 1974-10-08 1976-07-13 Mostek Corporation Dynamic random access memory misfet integrated circuit
SE387764B (en) * 1975-09-16 1976-09-13 Ericsson Telefon Ab L M METHOD OF DETECTING ERRORS IN A MEMORY DEVICE AND CATEGORY APPLICATION LOGIC FOR PERFORMING THE SET
US4037091A (en) * 1976-04-05 1977-07-19 Bell Telephone Laboratories, Incorporated Error correction circuit utilizing multiple parity bits
US4045783A (en) * 1976-04-12 1977-08-30 Standard Microsystems Corporation Mos one transistor cell ram having divided and balanced bit lines, coupled by regenerative flip-flop sense amplifiers, and balanced access circuitry
JPS5647988A (en) * 1979-09-20 1981-04-30 Nec Corp Semiconductor memory device
US4317201A (en) * 1980-04-01 1982-02-23 Honeywell, Inc. Error detecting and correcting RAM assembly
US4345328A (en) * 1980-06-30 1982-08-17 Sperry Corporation ECC Check bit generation using through checking parity bits
US5177743A (en) * 1982-02-15 1993-01-05 Hitachi, Ltd. Semiconductor memory
US4479214A (en) * 1982-06-16 1984-10-23 International Business Machines Corporation System for updating error map of fault tolerant memory
US4561095A (en) * 1982-07-19 1985-12-24 Fairchild Camera & Instrument Corporation High-speed error correcting random access memory system
JPS60219700A (en) * 1984-04-13 1985-11-02 Sharp Corp Semiconductor integrated circuit incorporating error correcting function
US4604751A (en) * 1984-06-29 1986-08-05 International Business Machines Corporation Error logging memory system for avoiding miscorrection of triple errors
US4726021A (en) * 1985-04-17 1988-02-16 Hitachi, Ltd. Semiconductor memory having error correcting means
US4933904A (en) * 1985-11-29 1990-06-12 General Electric Company Dense EPROM having serially coupled floating gate transistors
US4794597A (en) * 1986-03-28 1988-12-27 Mitsubishi Denki Kabushiki Kaisha Memory device equipped with a RAS circuit
US4768197A (en) * 1986-09-15 1988-08-30 Amdahl Corporation Cache error code update
JPH07118193B2 (en) * 1986-09-18 1995-12-18 富士通株式会社 Semiconductor memory device
US4740968A (en) * 1986-10-27 1988-04-26 International Business Machines Corporation ECC circuit failure detector/quick word verifier
US4939694A (en) * 1986-11-03 1990-07-03 Hewlett-Packard Company Defect tolerant self-testing self-repairing memory system
US4782487A (en) * 1987-05-15 1988-11-01 Digital Equipment Corporation Memory test method and apparatus
US4884271A (en) * 1987-12-28 1989-11-28 International Business Machines Corporation Error checking and correcting for read-modified-write operations
JPH01183000A (en) * 1988-01-14 1989-07-20 Mitsubishi Electric Corp Semiconductor memory device having error correcting circuit
US5008886A (en) * 1989-01-27 1991-04-16 Digital Equipment Corporation Read-modify-write operation
US5235693A (en) * 1989-01-27 1993-08-10 Digital Equipment Corporation Method and apparatus for reducing buffer storage in a read-modify-write operation
JPH0664918B2 (en) * 1989-05-25 1994-08-22 ローム株式会社 Semiconductor memory device having self-correction function
JP2617026B2 (en) * 1989-12-22 1997-06-04 インターナショナル・ビジネス・マシーンズ・コーポレーション Fault Tolerant Memory System
US5307356A (en) * 1990-04-16 1994-04-26 International Business Machines Corporation Interlocked on-chip ECC system
JP3215105B2 (en) * 1990-08-24 2001-10-02 富士通株式会社 Memory access device
US5233616A (en) * 1990-10-01 1993-08-03 Digital Equipment Corporation Write-back cache with ECC protection
US5241503A (en) * 1991-02-25 1993-08-31 Motorola, Inc. Dynamic random access memory with improved page-mode performance and method therefor having isolator between memory cells and sense amplifiers
US5274646A (en) * 1991-04-17 1993-12-28 International Business Machines Corporation Excessive error correction control
US5289584A (en) * 1991-06-21 1994-02-22 Compaq Computer Corp. Memory system with FIFO data input
WO1993004432A2 (en) * 1991-08-16 1993-03-04 Multichip Technology High-performance dynamic memory system
US5369651A (en) * 1992-06-30 1994-11-29 Intel Corporation Multiplexed byte enable bus for partial word writes to ECC protected memory
US5519839A (en) * 1992-10-02 1996-05-21 Compaq Computer Corp. Double buffering operations between the memory bus and the expansion bus of a computer system
US5430742A (en) * 1992-10-14 1995-07-04 Ast Research, Inc. Memory controller with ECC and data streaming control
US5519847A (en) * 1993-06-30 1996-05-21 Intel Corporation Method of pipelining sequential writes in a flash memory
US5402389A (en) * 1994-03-08 1995-03-28 Motorola, Inc. Synchronous memory having parallel output data paths
US5535226A (en) * 1994-05-31 1996-07-09 International Business Machines Corporation On-chip ECC status
US5592435A (en) * 1994-06-03 1997-01-07 Intel Corporation Pipelined read architecture for memory
US5502835A (en) * 1994-08-31 1996-03-26 Motorola, Inc. Method for synchronously accessing memory
JP3013714B2 (en) * 1994-09-28 2000-02-28 日本電気株式会社 Semiconductor storage device
TW358907B (en) * 1994-11-22 1999-05-21 Monolithic System Tech Inc A computer system and a method of using a DRAM array as a next level cache memory
US5513148A (en) * 1994-12-01 1996-04-30 Micron Technology Inc. Synchronous NAND DRAM architecture
US5533194A (en) * 1994-12-28 1996-07-02 International Business Machines Corporation Hardware-assisted high speed memory test apparatus and method
US5778237A (en) * 1995-01-10 1998-07-07 Hitachi, Ltd. Data processor and single-chip microcomputer with changing clock frequency and operating voltage
US5687353A (en) * 1995-03-03 1997-11-11 Hal Computer Systems, Inc. Merging data using a merge code from a look-up table and performing ECC generation on the merged data
JP3272903B2 (en) * 1995-03-16 2002-04-08 株式会社東芝 Error correction detection circuit and semiconductor memory device
US5671187A (en) * 1995-06-07 1997-09-23 Texas Instruments Incorporated Storage circuit
US5615169A (en) * 1995-08-31 1997-03-25 Monolithic System Technology, Inc. Method and structure for controlling internal operations of a DRAM array
JP3106947B2 (en) * 1996-02-28 2000-11-06 日本電気株式会社 Nonvolatile semiconductor memory device
JPH10177800A (en) * 1996-10-21 1998-06-30 Texas Instr Inc <Ti> Error correction dynamic memory and its error correcting method
US5708624A (en) * 1996-11-27 1998-01-13 Monolithic System Technology, Inc. Method and structure for controlling internal operations of a DRAM array
US5961655A (en) * 1996-12-05 1999-10-05 Hewlett-Packard Company Opportunistic use of pre-corrected data to improve processor performance
US6052011A (en) * 1997-11-10 2000-04-18 Tritech Microelectronics, Ltd. Fractional period delay circuit
JP3566051B2 (en) * 1997-11-14 2004-09-15 株式会社ルネサステクノロジ Clock signal generation circuit outputting a plurality of clock signals having different phases and clock phase control circuit using the same
JP3199021B2 (en) * 1998-03-19 2001-08-13 日本電気株式会社 Semiconductor memory device, method of inspecting and using semiconductor memory device
US6078547A (en) * 1998-05-12 2000-06-20 Mosys, Inc. Method and structure for controlling operation of a DRAM array
US20020029365A1 (en) * 1998-12-17 2002-03-07 Yoshimichi Sato Information processing apparatus
JP4105819B2 (en) * 1999-04-26 2008-06-25 株式会社ルネサステクノロジ Storage device and memory card
US6701480B1 (en) * 2000-03-08 2004-03-02 Rockwell Automation Technologies, Inc. System and method for providing error check and correction in memory systems
US6799287B1 (en) * 2000-05-01 2004-09-28 Hewlett-Packard Development Company, L.P. Method and apparatus for verifying error correcting codes
JP4810051B2 (en) * 2000-06-07 2011-11-09 コネクサント システムズ,アイエヌシー. Method and apparatus for media access control in power line communication network system
JP2002056671A (en) * 2000-08-14 2002-02-22 Hitachi Ltd Method for holding data for dynamic ram and semiconductor integrated circuit device
US20030120858A1 (en) * 2000-09-15 2003-06-26 Matrix Semiconductor, Inc. Memory devices and methods for use therewith
US6563745B1 (en) * 2001-12-14 2003-05-13 Matrix Semiconductor, Inc. Memory device and method for dynamic bit inversion
FR2840445B1 (en) * 2002-06-03 2004-09-10 St Microelectronics Sa MEMORY CIRCUIT HAVING AN ERROR CORRECTING CODE
US7124260B2 (en) * 2002-08-26 2006-10-17 Micron Technology, Inc. Modified persistent auto precharge command protocol system and method for memory devices
US7206891B2 (en) * 2002-09-26 2007-04-17 Lsi Logic Corporation Multi-port memory controller having independent ECC encoders
US6781898B2 (en) * 2002-10-30 2004-08-24 Broadcom Corporation Self-repairing built-in self test for linked list memories
US7099997B2 (en) * 2003-02-27 2006-08-29 International Business Machines Corporation Read-modify-write avoidance using a boundary word storage mechanism
JP4278414B2 (en) * 2003-03-18 2009-06-17 株式会社ルネサステクノロジ Semiconductor memory device
US7099216B2 (en) * 2003-09-05 2006-08-29 International Business Machines Corporation Single cycle read/write/writeback pipeline, full-wordline I/O DRAM architecture with enhanced write and single ended sensing
FR2864321B1 (en) * 2003-12-23 2007-01-19 St Microelectronics Sa DYNAMIC MEMORY WITH RANDOM ACCESS OR DRAM HAVING AT LEAST TWO BUFFER REGISTERS AND METHOD FOR CONTROLLING SUCH A MEMORY
US7116602B2 (en) * 2004-07-15 2006-10-03 Micron Technology, Inc. Method and system for controlling refresh to avoid memory cell data losses
US7483289B2 (en) * 2004-08-02 2009-01-27 Stmicroelectronics Pvt. Ltd. Synchronous SRAM capable of faster read-modify-write operation
US7257762B2 (en) * 2004-10-07 2007-08-14 Lsi Corporation Memory interface with write buffer and encoder
JP2006190425A (en) * 2005-01-07 2006-07-20 Nec Electronics Corp Semiconductor memory device
US7451380B2 (en) * 2005-03-03 2008-11-11 International Business Machines Corporation Method for implementing enhanced vertical ECC storage in a dynamic random access memory
JP4703220B2 (en) * 2005-03-04 2011-06-15 株式会社東芝 Semiconductor memory device

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5555499A (en) * 1978-10-16 1980-04-23 Nec Corp Memory control unit
US4380812A (en) * 1980-04-25 1983-04-19 Data General Corporation Refresh and error detection and correction technique for a data processing system
US4694454A (en) * 1984-07-27 1987-09-15 Hitachi, Ltd. Dynamic memory diagnosis and error correction apparatus
GB2289779A (en) * 1994-05-24 1995-11-29 Intel Corp Automatically scrubbing ECC errors in memory via hardware
US5524220A (en) * 1994-08-31 1996-06-04 Vlsi Technology, Inc. Memory subsystems having look-ahead instruction prefetch buffers and intelligent posted write buffers for increasing the throughput of digital computer systems

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
"ERROR CORRECTION CIRCUITRY FOR DYNAMIC RANDOM ACCESS MEMORIES" IBM TECHNICAL DISCLOSURE BULLETIN, IBM CORP. NEW YORK, US, vol. 36, no. 8, 1 August 1993 (1993-08-01), pages 681-682, XP000390376 ISSN: 0018-8689 *
HEDGE A: "ERROR DETECTION AND CORRECTION WITH THE IDT49C466" MICROPROCESSORS AND MICROSYSTEMS, IPC BUSINESS PRESS LTD. LONDON, GB, vol. 18, no. 10, 1 December 1994 (1994-12-01), pages 613-620, XP000488049 ISSN: 0141-9331 *
PATENT ABSTRACTS OF JAPAN vol. 004, no. 095 (P-018), 9 July 1980 (1980-07-09) & JP 55 055499 A (NEC CORP), 23 April 1980 (1980-04-23) *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006164277A (en) * 2004-12-02 2006-06-22 Robert Bosch Gmbh Device and method for removing error in processor, and processor
CN100347677C (en) * 2005-01-10 2007-11-07 中国航天时代电子公司第七七一研究所 Primary particle inversion resistant memory error correction and detection and automatic write back method for spacial computer
US9495242B2 (en) 2014-07-30 2016-11-15 International Business Machines Corporation Adaptive error correction in a memory system
EP3504624A4 (en) * 2016-08-23 2019-07-24 Texas Instruments Incorporated Error correction hardware with fault detection
US10599514B2 (en) 2016-08-23 2020-03-24 Texas Instruments Incorporated Error correction hardware with fault detection
US11372715B2 (en) 2016-08-23 2022-06-28 Texas Instruments Incorporated Error correction hardware with fault detection
US11740968B2 (en) 2016-08-23 2023-08-29 Texas Instruments Incorporated Error correction hardware with fault detection

Also Published As

Publication number Publication date
US7353438B2 (en) 2008-04-01
TW580709B (en) 2004-03-21
DE60210658T2 (en) 2007-04-05
US20030093744A1 (en) 2003-05-15
US20050044467A1 (en) 2005-02-24
US7051264B2 (en) 2006-05-23
WO2003042826A3 (en) 2004-04-22
EP1449082A2 (en) 2004-08-25
DE60210658D1 (en) 2006-05-24
EP1449082B1 (en) 2006-04-12
TW200300258A (en) 2003-05-16

Similar Documents

Publication Publication Date Title
EP1449082B1 (en) Error correcting memory and method of operating same
EP1815338B1 (en) Predictive error correction code generation facilitating high-speed byte-write in a semiconductor memory
EP0418457B1 (en) Pipelined error checking and correction for cache memories
US5604753A (en) Method and apparatus for performing error correction on data from an external memory
KR102002925B1 (en) Memory module, memory system havint the same, and driving method thereof
US9252814B2 (en) Combined group ECC protection and subgroup parity protection
US8589763B2 (en) Cache memory system
US8185800B2 (en) System for error control coding for memories of different types and associated methods
US8171377B2 (en) System to improve memory reliability and associated methods
US8352806B2 (en) System to improve memory failure management and associated methods
US8181094B2 (en) System to improve error correction using variable latency and associated methods
US8176391B2 (en) System to improve miscorrection rates in error control code through buffering and associated methods
US20100287436A1 (en) System for Error Decoding with Retries and Associated Methods
JP2001249854A (en) Shared error correction for designing memory
US8185801B2 (en) System to improve error code decoding using historical information and associated methods
US20180293130A1 (en) Memory module with dedicated repair devices
US7058877B2 (en) Method and apparatus for providing error correction within a register file of a CPU
US8095853B2 (en) Digital memory with fine grain write operation
US6701484B1 (en) Register file with delayed parity check
JPH0594377A (en) Parity detecting circuit
Wu et al. Redundant Array of Independent Memory Devices

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): JP MG

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR IE IT LU MC NL PT SE SK TR

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 2002779675

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 2002779675

Country of ref document: EP

WWG Wipo information: grant in national office

Ref document number: 2002779675

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: JP

WWW Wipo information: withdrawn in national office

Country of ref document: JP