US20020097613A1 - Self-healing memory - Google Patents
Self-healing memory Download PDFInfo
- Publication number
- US20020097613A1 US20020097613A1 US09/766,354 US76635401A US2002097613A1 US 20020097613 A1 US20020097613 A1 US 20020097613A1 US 76635401 A US76635401 A US 76635401A US 2002097613 A1 US2002097613 A1 US 2002097613A1
- Authority
- US
- United States
- Prior art keywords
- storage cells
- memory
- memory device
- command
- unit
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/72—Masking faults in memories by using spares or by reconfiguring with optimized replacement algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1088—Reconstruction on already foreseen single or plurality of spare disks
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/76—Masking faults in memories by using spares or by reconfiguring using address translation or modifications
Definitions
- the present invention generally relates to memory systems, and more particularly to a memory with self-healing capability.
- a problem with prior art memory configurations is related to the I/O pin count on the memory I/O controller.
- the number of memory modules connected to the memory controller is increasing.
- increasing the number of memory channels by one increases the number of memory channels directly connected to the memory controller by one. This is problematic, since each additional memory channel requires additional input pins, increasing the system pin count, and increasing the probability of failure. This is especially problematic in memory storage systems having a large memory capacity.
- the additional memory bus loading from additional modules limits the memory system bus speed.
- ECC error correcting or error checking and correction codes
- CRC cyclic redundancy checksum or cyclic redundancy code
- ECC codes can be used to restore the original data if an error occurs that is not too disastrous.
- CRC algorithms when data is received, the complete data sequence (which includes CRC bits appended to the end of the data field) is read by a CRC checker. The complete data sequence should be exactly divisible by a CRC polynomial. If the complete data sequence is not divisible by a CRC polynomial, an error is deemed to have occurred.
- ECC codes can typically be used to detect multiple bit errors.
- an ECC memory system that has single bit correction typically can detect double bit errors and correct single bit errors.
- An ECC memory with 4 or 8 bit error correction can typically detect and correct 4 bit or 8 bit errors, respectively. Therefore, the failure of an entire Synchronous Dynamic Random Access Memory (SDRAM) chip organized in a ⁇ 4 or ⁇ 8 configuration will not cause the system to fail.
- SDRAM Synchronous Dynamic Random Access Memory
- ECC systems easily provide multiple bit error detection, a problem with conventional ECC systems is that they typically cause the system to halt when they report an uncorrectable error. Thus, a failed part in an ECC memory system cannot be replaced to restore the system failure immunity without first halting.
- ECC and parity processes are commonly used in computer systems that rely on semiconductor memory where 24 hour a day, 7 day a week operation is required. Where computer systems do not require the speed required by semiconductor memory or alternatively where larger storage cannot be provided cost effectively by semiconductor memory, disk drive memory may be used.
- Computer systems supported by disk drive memory typically link together a plurality of disk drives through hardware to form a drive array known as a redundant array of inexpensive disks (RAID). The drives in the array are coordinated with each other and data is specially allocated between them. Because disk drives and the mechanical interfaces for disk drives are less reliable than semiconductor memory, the processes for data recovery due to permanent or temporary data failure for disk drive systems typically provide more redundancies and more complex data recovery methodologies.
- the present invention provides a self-healing memory device responsive to command signals.
- the memory device includes multiple banks of memory arrays. Each bank includes a plurality of primary storage cells and a spare unit of spare storage cells.
- a detector detects an error in a first unit of the primary storage cells in a first one of the banks.
- a controller responsive to command signals automatically re-maps the first unit of the primary storage cells to the spare unit of storage cells.
- the self-healing memory provides on-line self-healing for memory hard bit errors.
- the memory bit functionality can be restored without shutting off power or swapping memory modules.
- ECC error correcting code
- the self-healing memory scheme is scalable, so that as memory sizes increase, the number of hot spare rows can increase. Because the additional spare memory row is small in comparison to the total number of the rows in a memory bank, the die area and cost impact is negligible.
- the self-healing memory is used in servers requiring 24 hour a day, 7 day a week on-line operation, to improve the reliability of such servers.
- the self-healing memory may also be used in cost sensitive PCs or workstations to avoid expensive service calls and unnecessary warranty costs.
- the self-healing technique can also be used for non-DRAM memory, and for CPU caches where on-line correction of hard bit errors is needed.
- FIG. 1A illustrates a partial block diagram of a first embodiment of a self-healing memory system according to the present invention.
- FIG. 1B illustrates a partial block diagram of a second embodiment of a self-healing memory system according to the present invention.
- FIGS. 2 A- 2 C illustrates a first memory row and a spare memory row and the mapping of the first memory row to the spare memory row according to the present invention.
- FIG. 3 illustrates a double data rate (DDR) synchronous dynamic random access memory (SDRAM) according to the present invention.
- DDR double data rate
- SDRAM synchronous dynamic random access memory
- FIG. 4 illustrates a timing diagram showing the timing for read and write operations of the DDR SDRAM shown in FIG. 3.
- FIG. 5 illustrates a truth table identifying commands that can be issued by the DDR SDRAM shown in FIG. 3.
- FIG. 6 illustrates a mode register of the DDR SDRAM shown in FIG. 3.
- FIG. 7 illustrates an extended mode register of the DDR SDRAM shown in FIG. 3.
- FIG. 8 illustrates a partial block diagram of one embodiment of a latch and decoder circuit for implementing the self-healing capability of the present invention.
- FIG. 1A shows a partial block diagram of a self-healing memory configuration 100 A according to the present invention.
- the memory configuration 100 A includes CPU bus 110 electrically coupled to a memory controller 114 , the memory controller 114 electrically coupled to switch 120 , wherein switch 120 is electrically connected to a plurality of memory modules 124 .
- the plurality of memory modules 124 preferably includes a plurality of data memory modules 130 and a plurality of ECC memory modules 134 . In one embodiment the data memory modules 130 and ECC memory modules 134 are connected in parallel.
- Memory modules 124 may also include one or more spare memory modules.
- each memory module 124 includes a non-volatile memory unit 132 .
- Non-volatile memory unit 132 is preferably an EEPROM, although other types of non-volatile memories may be used.
- the data memory configuration is a self-healing double data rate (DDR) system with a 144 bit data memory channel 140 , and 40 memory modules 124 , preferably 32 DDR DIMMs for data 130 and 8 DIMMs for ECC 124 .
- the 144 bit wide channel 140 includes 128 data bits and 16 ECC bits.
- the 144 bit data bus 140 is split into four separate 72 bit bus channels 146 A- 146 D (collectively referred to as bus channels 146 ). Each bus channel 146 , preferably includes eight memory modules 130 used for data and two memory modules 134 used for ECC.
- Data bus 140 is electrically coupled to at least one switch 120 , preferably a 1:2 FET, which is electrically coupled to CPU bus 110 via memory controller 114 .
- switch 120 could be a crossbar-type switch.
- Switch 120 splits the 144 bit bus 140 into two 144 bit bus segments 140 A and 140 B.
- Switch 120 divides the signals from the memory bus 140 to reduce the loading on memory controller 114 .
- a 1:2 or 1:4 FET could be used.
- the increased size ratio of the FET switch means that the number of bus segments 140 A- 140 B is increased.
- each of the two 144 bit bus segments 140 A and 140 B is divided into two separate 72 bit bus channels 146 A- 146 D.
- Each of the 72 bit memory channels 146 A- 146 D is connected in parallel to ten 72 bit memory modules 124 .
- Memory configuration 100 A includes two ECC memory modules 134 for each memory channel 146 .
- the preferred number of ECC modules 134 depends on multiple factors, including but not limited to the type of CRC polynomial used, the number of data errors and number of channels upon which data errors will be corrected.
- Memory controller 114 includes ECC logic 142 , which provides data correction for memory errors.
- ECC logic 142 uses conventional techniques that may vary dependent upon the data correction requirements and algorithms used.
- Memory configuration 100 A shown in FIG. 1A is not easily scalable if striping is used. Although the configuration and number of modules 124 shown in FIG. 1A is a typical for a high-end system, the number of modules 124 connected to data bus 140 may be as low as a single memory module 124 used for data storage. If a single memory module 124 is used for data storage, the memory module 124 should have at least one memory device or bits of a memory device that are dedicated to error correction.
- FIG. 1B shows a partial block diagram of second preferred embodiment of a self-healing memory configuration 100 B according to the present invention.
- Embodiment 100 B shown in FIG. 1B is a scaled down version of embodiment 100 A shown in FIG. 1A.
- Memory configuration 100 B includes a plurality of memory modules 124 that can be used for storing either data or ECC.
- the 144 bit wide bus 140 includes 128 data bits and 16 ECC bits.
- one or more spare memory modules may be provided for each 72 bit bus 170 A- 170 D.
- data striping is not used and the system is therefore very scalable.
- Embodiment 100 B requires a minimum of two data memory modules 124 .
- the data memory channel 140 electrically couples memory controller 114 to switches 120 A and 120 B, preferably each being a FET switch.
- switches 120 A and 120 B are each a 1:2 FET switch.
- a switch 120 A and 120 B is used for each 144 bit bus 160 A and 160 B.
- no switch is used.
- a switch is not included as part of the memory configuration for small memory systems (e.g., in the 1 GB range), where only a small number of memory modules are needed.
- memory modules 124 are preferably DIMMs with 72 bit wide DDR SDRAMS. However, any type of read/write memory components may be used as long as they meet system requirements.
- a DDR SDRAM typically includes multiple banks or arrays of memory, divided into a plurality of rows of storage units.
- a self-healing memory according the present invention provides a mechanism to dynamically change the mapping from a bad row to a spare row via a command in the DDR SDRAM command set. When a hard error is detected, a command is issued that allows the SDRAM memory bank row address with the hard error to be re-mapped to the spare row in that bank inside the SDRAM.
- FIGS. 2 A- 2 C illustrate a first memory row 200 and a spare memory row 206 , and the mapping of first memory row 200 to the spare memory row 206 according to the present invention.
- Row 200 includes nibbles 202 A- 202 G.
- Spare row 206 includes nibbles 208 A- 208 G.
- Nibble 202 D of row 200 includes 4 bits 204 A- 204 D.
- Nibble 202 D includes a hard error at bit 204 B.
- a self-heal operation according to the present invention is initiated, and row 200 is re-mapped to spare row 206 as described below.
- the system identifies an error as a “hard” error if the same error repeats at the same address on subsequent reads.
- row 200 is “locked” to spare memory row 206 .
- Row 200 is locked to spare memory row 206 by setting the LR bit in the extended mode register (discussed below) to “1.”
- FIG. 2B shows row 200 and spare row 206 after row 200 is locked to spare row 206 .
- errors detected and corrected are written back to both rows 200 and 206 .
- System writes and refreshes occur on both rows 200 and 206 , but read operations occur only on row 200 .
- an error is detected in nibble 208 D of spare row 206 .
- the error is corrected using conventional ECC techniques.
- row 200 is not re-mapped to spare row 206 until the entire spare row 206 is “scrubbed.” “Scrubbing” means systematically performing a read operation of a nibble, followed by correction of the data that is read, followed by a write operation of the corrected data, for each nibble in spare row 206 , so that the data in spare row 206 is identical to the data in row 200 .
- row 200 is mapped to spare row 206 by setting the LR bit back to “0”, and setting the HSR bit in the extended mode register (discussed below) to “1”.
- FIG. 2C illustrates row 200 and spare row 206 after the re-mapping. After the re-mapping, the memory bit functionality has been restored, and all operations (e.g., READ and WRITE operations) directed to row 200 will automatically be re-directed to spare row 206 .
- FIG. 3 shows a block diagram of a double data rate (DDR) synchronous dynamic random access memory (SDRAM) according to the present invention.
- DDR SDRAM 300 includes controller 312 , command decoder 314 , mode registers 316 , refresh counter 318 , row address multiplexer 320 , row address latches and decoders 322 A- 322 D (collectively referred to as row address latches an decoders 322 ), memory banks 324 A- 324 D (collectively referred to as memory banks 324 ), sense amplifiers 326 A- 326 D (collectively referred to as sense amplifiers 326 ), address register 328 , address bus 330 , bank controller 332 , column address counter/latch 334 , I/O gating and mask controller 336 , column decoders 338 A- 338 D (collectively referred to as column decoders 338 ), read latch 340 , multiplexer 342 , DLL 344 , drivers 346
- DDR SDRAM 300 provides two data transfers per clock cycle.
- DDR SDRAM 300 is in a “ ⁇ 4” configuration (i.e., includes four input/output lines DQ 0 -DQ 3 ).
- Other configurations may also be used, including ⁇ 8 and ⁇ 16 configurations.
- DDR SDRAM 300 is JEDEC compliant.
- Controller 312 includes the following inputs: CKE, /CK, CK, /CS, /WE, /CAS, and /RAS.
- CKE is a clock enable input.
- DDR SDRAM 300 operates from a differential clock (CK and /CK). The crossing of CK going high and /CK going low is referred to as the positive edge of CK.
- Commands are registered at every positive edge of CK.
- Input data is registered on both edges of DQS, and output data is referenced to both edges of DQS, as well as to both edges of CK.
- /CS is a chip select input.
- /WE write enable
- /CAS column address strobe
- /RAS row address strobe
- Address register 328 is coupled to address bus 330 .
- Address register 328 couples lines A 0 -A 11 and BA 0 -BA 1 to controller 312 and row address multiplexer 320 .
- Address register 328 couples lines BA 0 -BA 1 to bank controller 332 .
- Address register 328 couples lines A 0 -A 9 to column address counter/latch 334 .
- BA 0 and BA 1 are bank address inputs.
- BA 0 and BA 1 identify the bank 324 A- 324 D to which an ACTIVE, READ, or WRITE command are being applied.
- Bank controller 332 is coupled to row address latches and decoders 322 , and to column decoders 338 .
- Bank controller 332 enables selected ones of row address latches and decoders 322 and column decoders 338 based on the values on lines BA 0 and BA 1 .
- a 0 -A 11 are address inputs, which provide the row address for ACTIVE commands, and the column address for READ/WRITE commands, to select one location out of the memory array in the selected bank 324 A- 324 D.
- a row address provided to row address multiplexer 320 from address bus 330 is output by multiplexer 320 to each of the row address latches and decoders 322 .
- row addresses are provided to row address multiplexer 320 from refresh counter 318 .
- Row addresses are latched by row address latches and decoders 322 .
- Column addresses are latched by column address counters/latches 334 .
- Address inputs A 0 -A 11 also provide the op-code during a MODE REGISTER SET command.
- the op-codes are provided to controller 312 via address bus 330 .
- BA 0 and BA 1 define which mode register is loaded during the MODE REGISTER SET command (i.e., the mode register or the extended mode register).
- DDR SDRAM also includes five bi-directional input/output lines—DQ 0 -DQ 3 and DQS, and one unidirectional line DM (input only).
- DQ 0 -DQ 3 are used for the input/output of data.
- DQ 0 -DQ 3 and DM are coupled to drivers 346 and receivers 354 .
- Signals that are input to DDR SDRAM 300 on lines DQ 0 -DQ 3 and DM are received and amplified by receivers 354 , pass through input registers 352 and write FIFO and drivers 350 , and are ultimately received by I/O gating and mask logic controller 336 .
- DQS is coupled to drivers 346 , input registers 352 , and write FIFO and drivers 350 .
- DQS is an input/output data strobe (i.e., output with read data, and input with write data).
- DQS is edge-aligned with read data, and center-aligned for write data.
- DQS is used to capture write data.
- DQS is transmitted/received with data, and is used in capturing write data at input registers 352 .
- DQS is transmitted by DQS generator 348 during READ operations, and by memory controller 114 during WRITE operations.
- DM is an input mask signal for write data. Input data is masked by I/O gating and mask controller 336 when DM is sampled high along with that input data during a WRITE access.
- FIG. 4 illustrates a timing diagram showing the timing for READ and WRITE operations of the DDR SDRAM shown in FIG. 3.
- a READ command (R) is registered at the positive edge of CK in the first clock cycle.
- the DQS signal is edge-aligned with each of the data elements (Q 0 -Q 3 ).
- a WRITE command (W) is registered at the positive edge of CK in the fifth clock cycle.
- W WRITE command
- the DQS signal is center-aligned with each of the data elements (D 0 -D 3 ).
- FIG. 5 illustrates a truth table identifying commands that can be issued to the DDR SDRAM 300 shown in FIG. 3.
- /CS is set low.
- /RAS is set high
- /CAS is set high
- IWE is set high.
- ACTIVE /CS is set low
- /RAS is set low
- /CAS is set high
- /WE is set high.
- the address registered with an ACTIVE command identifies a bank and row address.
- a READ command /CS is set low, /RAS is set high, /CAS is set low, and /WE is set high.
- the address registered with a READ command identifies a bank and column address.
- /CS For a WRITE command, /CS is set low, /RAS is set high, /CAS is set low, and /WE is set low.
- the address registered with a WRITE command identifies a bank and column address.
- /CS For a BURST TERMINATE command, /CS is set low, /RAS is set high, /CAS is set high, and /WE is set low.
- a PRECHARGE command For a PRECHARGE command, /CS is set low, /RAS is set low, /CAS is set high, and /WE is set low.
- /CS For an AUTO REFRESH or SELF REFRESH command, /CS is set low, /RAS is set low, /CAS is set low, and /WE is set high.
- /CS For a MODE REGISTER SET command, /CS is set low, /RAS is set low, /CAS is set low, and /WE is set low.
- the DESELECT command prevents new commands from being executed by DDR SDRAM 300 .
- DDR SDRAM 300 is effectively deselected. Operations already in progress are not affected by a DESELECT command.
- NO OPERATION (NOP) command is used to perform a NOP to a DDR SDRAM 300 that is selected (/CS is low). This prevents unwanted commands from being registered during idle or wait states. Operations already in progress are not affected.
- the ACTIVE command is used to open (or activate) a row in a particular bank for a subsequent access.
- the value on the BA 0 and BA 1 inputs identifies the bank, and the address provided on inputs A 0 -A 11 selects the row.
- the selected row remains active (or open) for accesses until a PRECHARGE (or READ or WRITE with AUTO PRECHARGE) is issued to that bank.
- a PRECHARGE (or READ or WRITE with AUTO PRECHARGE) command must be issued before opening a different row in the same bank. After opening a row (by issuing an ACTIVE command), a READ or WRITE command may be issued to that row.
- a subsequent ACTIVE command to a different row in the same bank can only be issued after the previous active row has been closed (e.g., with PRECHARGE).
- a subsequent ACTIVE command to another bank can be issued while the first bank is being accessed, which results in a reduction of total row-access overhead.
- READ and WRITE accesses to DDR SDRAM 300 are burst oriented—accesses start at a selected location and continue for a programmed number of locations in a programmed sequence.
- the burst length is programmable.
- DDR SDRAM 300 provides burst lengths of 2, 4, and 8 locations, for both a sequential and an interleaved burst type.
- the burst length determines the maximum number of column locations that can be accessed for a given READ or WRITE command.
- Column address counter/latch 334 is responsible for counting through the selected number of column locations in a burst, and providing the column locations to column decoders 338 .
- Accesses begin with the registration of an ACTIVE command, which is then followed by a READ or WRITE command.
- the address bits on address bus 330 registered coincident with the ACTIVE command are used by bank controller 332 and row address latches and decoders 322 to select the bank and row, respectively, to be accessed.
- the address bits on address bus 330 registered coincident with the READ or WRITE command are used by column address counter/latch 334 and column decoders 338 to select the starting column location for the burst access.
- Accesses within a given burst may be programmed to be either sequential or interleaved. This is referred to as the burst type and is selected via bit A 3 in one embodiment.
- the ordering of accesses within a burst is determined by the burst length, the burst type and the starting column address.
- the read latency is the delay, in clock cycles, between the registration of a READ command and the availability of the first piece of output data.
- the latency can be set to 2 or 2.5 clocks.
- latencies of 1.5 and 3 are also available.
- the READ command is used to initiate a burst read access to an active row.
- the starting column and bank addresses are provided with the READ command and AUTO PRECHARGE is either enabled or disabled for that burst access.
- the value on input A 10 determines whether or not AUTO PRECHARGE is used. If AUTO PRECHARGE is selected, the row being accessed will be precharged at the end of the READ burst. If AUTO PRECHARGE is not selected, the row will remain open for subsequent accesses.
- Sense amplifiers 326 and I/O gating and mask controller 336 operate in a manner known in the art to sense the data stored in the storage cells of banks 324 addressed by the active row and column.
- the data obtained during a READ operation is output from I/O gating and mask controller 336 to read latch 340 , where the data is latched.
- I/O gating and mask controller 336 outputs the data to read latch 340 8 bits at a time.
- Read latch 340 outputs the received 8 bits to multiplexer 342 in two 4 bit segments. Multiplexer 342 outputs a first one of the 4 bit segments followed by the second 4 bit segment to drivers 346 .
- Drivers 346 amplify the received data and output the amplified data on lines DQ 0 -DQ 3 .
- Drivers 346 also receive a DQS signal from DQS generator 348 , and output an amplified DQS signal on the DQS line.
- DLL 344 is coupled to drivers 346 and receives a clock input. DLL 344 aligns transitions of DQ 0 -DQ 3 and DQS with CK transitions.
- the valid data-out element from the starting column address will be available following a CAS latency after the READ command.
- Each subsequent data-out element will be valid nominally at the next positive or negative clock edge (i.e., at the next crossing of CK and /CK).
- DQS is driven by DQS generator 348 along with the output data. Data from any READ burst must be completed or truncated before a subsequent WRITE command can be issued. If truncation is necessary, the BURST TERMINATE command is used.
- the WRITE command is used to initiate a burst write access to an active row.
- the starting column and bank addresses are provided with the WRITE command, and AUTO PRECHARGE is either enabled or disabled for that access.
- the value on input A 10 determines whether or not AUTO PRECHARGE is used. If AUTO PRECHARGE is selected, the row being accessed will be precharged at the end of the write burst. If AUTO PRECHARGE is not selected, the row will remain open for subsequent accesses.
- Input data appearing on the DQ 0 -DQ 3 lines are written to a memory bank 324 subject to the DM input logic level appearing coincident with the data. If a given DM signal is registered low, the corresponding data will be written to memory by I/O gating and mask controller 336 . If the DM signal is registered high, the corresponding data inputs will be ignored, and a WRITE will not be executed to that selected location. During write bursts, the first valid data-in element will be registered on the first rising edge of DQS following the WRITE command, and subsequent data elements will be registered on successive edges of DQS.
- the PRECHARGE command is used to deactivate the open row in a particular bank or the open row in all banks.
- the bank(s) will be available for a subsequent row access a specified time after the PRECHARGE command is issued.
- Input A 10 determines whether one or all banks are to be precharged, and in the case where only one bank is to be precharged, inputs BA 0 and BA 1 select the bank. Once a bank has been precharged, it is in the idle state and must be activated prior to any READ or WRITE commands being issued to that bank.
- a PRECHARGE command is treated as a NOP if there is no open row in that bank, or if the previously open row is already in the process of precharging.
- AUTO PRECHARGE is a feature that performs the same individual bank precharge function described above, but without requiring an explicit command. AUTO PRECHARGE is accomplished by using A 10 to enable AUTO PRECHARGE in conjunction with a specific READ or WRITE command. A precharge of the bank/row that is addressed with the READ or WRITE command is automatically performed upon completion of the READ or WRITE burst. AUTO PRECHARGE is nonpersistant in that it is either enabled or disabled for each individual READ or WRITE command.
- the BURST TERMINATE command is used to truncate READ bursts (with AUTO PRECHARGE disabled).
- the AUTO-REFRESH and SELF-REFRESH commands are used to refresh the contents of memory banks 324 .
- Refresh counter 318 controls row addressing for REFRESH commands.
- Mode register bits A 0 -A 2 specify the burst length
- bit A 3 specifies the burst type (BT), either sequential or interleaved
- bits A 4 -A 6 specify the CAS latency
- bits A 7 -A 11 specify the operating mode.
- a normal operating mode is selected by issuing a MODE REGISTER SET command with bits A 7 -A 11 each set to zero, and bits A 0 -A 6 set to the desired values.
- a DLL reset is initiated by issuing a MODE REGISTER SET command with bits A 7 and A 9 -A 11 each set to zero, bit A 8 set to one, and bits A 0 -A 6 set to the desired values.
- a MODE REGISTER SET command issued to reset the DLL should be followed by a MODE REGISTER SET command to select normal operation mode.
- Other combinations of values for A 7 -A 11 are used to select other modes, including test modes.
- FIG. 7 shows a diagram of extended mode register 316 B.
- Extended mode register 316 B controls functions beyond those controlled by mode register 316 , including DLL enable/disable (bit A 0 ), drive strength (bit A 1 ), QFC enable/disable (bit A 2 ), and enablement of the self-healing function of the present invention.
- the DLL must be enabled for normal operation. DLL enable is required during power-up initialization, and upon return to normal operation after having disabled the DLL for the purpose of debug or evaluation.
- Bits A 5 - 11 define an operating mode of device 300 .
- Bit A 3 is referred to as a hot spare row (HSR) bit, and is used to enable/disable the self-heal capability of the present invention. Setting bit A 3 to zero results in normal operation. Setting bit A 3 to one enables HSR mode or self-healing mode.
- Bit A 4 is referred to as a Lock Row (LR) bit.
- one spare row of memory is provided for each bank 324 A- 324 D.
- the spare row in each bank is referred to as a hot spare row, indicating that the row may be swapped with another row on-line, without shutting off power to device 300 .
- a hot spare row For a 72 bit DDR stacked memory module with ⁇ 4 organization, if one hot spare row is provided per bank, a total of 144 spare rows are provided. 72 hot spare rows are provided for the same DIMM using ⁇ 8 organization.
- the number of hard errors that can be healed per module, assuming random hard error distribution is 144. Therefore, for all practical purposes memory modules never need to be replaced due to hard bit failures.
- 144 spare rows in the ⁇ 4 configuration are available if the rows in each ⁇ 4 bit DRAM are independent. If the rows are treated as dependent (i.e., all addressed at the same time), there are 8 hot spare rows available for each 72 bit DIMM (4 banks per DRAM ⁇ 2 rows of memory per DIMM) in a 144 bit wide memory system.
- an ACTIVATE command functions as a HEAL command, and the memory row address with the hard error is re-mapped to the hot spare row.
- the row address latch and decoder 322 for the specified bank re-maps the row address with the hard error (specified by the address registered with the HEAL command) to the hot spare row address.
- the HSR bit is set, any operation to the row address that was healed now references the hot spare row.
- a DEACTIVATE command (or PRECHARGE command) functions as an UNHEAL command, which causes the reverse to happen.
- the UNHEAL command allows the hot spare row address to be re-mapped back to the address of the disabled row in each memory bank.
- the A 10 bit defines whether the HEAL or UNHEAL command applies to one bank specified by bits BA 0 -BA 1 , or all banks at the same time.
- any operation to the row address re-mapped to the hot spare row occurs on both rows of memory, except that a READ operation is normal and only references the row that has been re-mapped to the hot spare row. Also, when the received row address equals the address of the hot spare row, the normal bank row address and the row address of the hot spare row are selected at the same time.
- memory configurations 100 A and 100 B include an ECC scheme that is used for burst error detection, allowing for correction of at least single bit errors after single bit or 4-bit nibble errors have occurred.
- the ECC scheme preferably provides correction for 1 bit soft errors during the scrubbing operation (discussed above with respect to FIGS. 2 A- 2 C), after a 1 bit, or a 4-bit nibble, hard error has occurred.
- the LR bit for that physical row of memory is enabled and the row address is stored in one of the latches and decoders 322 .
- WRITE operations go to both the hot spare row and the row with the hard error.
- REFRESH operations operate on both rows, and READ operations only operate on the row with the hard error.
- the row of memory is scrubbed to ensure that the entire hot spare row has corrected, as well as current data.
- heal status information for device 300 is stored in the non-volatile memory 132 for the memory module 124 containing that device 300 .
- the heal status information identifies the device 300 , bank 324 , and the row containing the hard error.
- Other related information may also be stored in non-volatile memory 132 , such as the nibble or bit within the row containing the hard error.
- FIG. 8 shows a partial block diagram of a simplified embodiment of one of row address latches and decoders 322 .
- FIG. 8 shows a memory bank 821 with only four rows 822 B- 822 E and one hot spare row 822 A. It will be understood by one of ordinary skill in the art that the techniques discussed with reference to FIG. 8 can be extended to handle larger addresses and additional rows.
- the diagram illustrates HSR address latch 810 , OR gate 812 , comparator 814 , AND gate 816 , row address latch 818 , decoder 820 , and bank 821 .
- decoder 820 is a 1:4 decoder.
- FIG. 8 also shows a portion of extended mode register 316 B, including an LR bit, and an HSR bit. Each of these bits is cleared at power-on of device 300 .
- the LR bit includes two outputs—an LR output coupled to one input of OR gate 812 , and an inverted output LR-coupled to one input of AND gate 816 .
- the HSR bit has one HSR output coupled to an input of OR gate 812 .
- LR- Since the LR bit is low in this example, LR- is high, making both inputs to AND gate 816 high. AND gate 816 , therefore, outputs a high signal to decoder 820 .
- the high signal to decoder 820 is inverted at the input of decoder 820 , thereby generating a low signal that disables decoder 820 . Therefore, when the HSR bit is set high and the LR bit is set low, hot spare row 822 A is selected, and all other rows 822 B- 822 E are deselected.
- OR gate 812 when the LR bit is set high and the HSR bit is set low, OR gate 812 outputs a high signal due to the high signal at its input from the LR output line. AND gate 816 outputs a low signal due to the low signal at its input from the LR-line.
- the high signal from OR gate 812 enables comparator 814 . Again, because both of the input addresses to comparator 814 are the same, comparator 814 outputs a high signal to hot spare row 822 A, thereby selecting hot spare row 822 A. Because the LR-input to AND gate 816 is low, AND gate 816 outputs a low signal to decoder 820 .
- the low signal to decoder 820 is inverted at the input of decoder 820 , thereby generating a high signal that enables decoder 820 .
- Decoder 820 decodes the address from latch 818 , and selects the row 822 B- 822 E corresponding to the input address. Therefore, when the LR bit is set high and the HSR bit is set low, both the normal bank row address and the HSR row address are selected at the same time.
- the self-healing technique of the present invention can be applied to hot spare columns or any discrete block of addressable memory cells that have a hard error, where a hot spare discrete block of memory cells of the same organization is provided.
- the self-healing memory techniques described herein with reference to a DDR SDRAM also apply to SRD SDRAMs, as well as RAMBUS memories.
- the self-healing memory scheme also applies to ADT memory technologies.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Dram (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
Description
- The present invention generally relates to memory systems, and more particularly to a memory with self-healing capability.
- The size of available server memory systems is constantly increasing with time, with current server memory systems often being in the range of 64 Gbytes or larger. As the size of memory systems increases, and memory cell sizes get smaller, the probability of a memory bit failing, and thus the memory system failing, increases. Memory system failures can be the result of both temporary and permanent errors. Temporary errors are typically due to alpha particles. Permanent errors are typically the result of a memory cell wall failure, or to a much smaller degree a row or column decoder failure, a state machine failure or other catastrophic failures such as the failure of the mechanical interface between the dual in-line memory module (DIMM) printed circuit board and the system printed circuit board.
- A problem with prior art memory configurations is related to the I/O pin count on the memory I/O controller. With increasingly demanding memory storage requirements, the number of memory modules connected to the memory controller is increasing. In a serial architecture configuration, increasing the number of memory channels by one increases the number of memory channels directly connected to the memory controller by one. This is problematic, since each additional memory channel requires additional input pins, increasing the system pin count, and increasing the probability of failure. This is especially problematic in memory storage systems having a large memory capacity. In addition, the additional memory bus loading from additional modules limits the memory system bus speed.
- In order to prevent memory system failures, different forms of memory detection and correction processes have evolved. One commonly used system involves the use of parity bits to detect errors. When data is received, the parity of the data is checked against an expected value. When the data does not match the expected parity value (odd or even), an error is determined to have occurred. Although this method works for determining single bit errors, it does not always work well for determining multiple bit errors. Further, the simplest parity systems have no mechanism for correcting data errors.
- One commonly used error detection and correction process uses error correcting or error checking and correction codes (ECC). ECC is typically based on CRC (cyclic redundancy checksum or cyclic redundancy code) algorithms. ECC codes can be used to restore the original data if an error occurs that is not too disastrous. With CRC algorithms, when data is received, the complete data sequence (which includes CRC bits appended to the end of the data field) is read by a CRC checker. The complete data sequence should be exactly divisible by a CRC polynomial. If the complete data sequence is not divisible by a CRC polynomial, an error is deemed to have occurred.
- Unlike conventional error correction processes based on parity, systems based on ECC codes can typically be used to detect multiple bit errors. For example, an ECC memory system that has single bit correction typically can detect double bit errors and correct single bit errors. An ECC memory with 4 or 8 bit error correction can typically detect and correct 4 bit or 8 bit errors, respectively. Therefore, the failure of an entire Synchronous Dynamic Random Access Memory (SDRAM) chip organized in a ×4 or ×8 configuration will not cause the system to fail. Although ECC systems easily provide multiple bit error detection, a problem with conventional ECC systems is that they typically cause the system to halt when they report an uncorrectable error. Thus, a failed part in an ECC memory system cannot be replaced to restore the system failure immunity without first halting.
- ECC and parity processes are commonly used in computer systems that rely on semiconductor memory where 24 hour a day, 7 day a week operation is required. Where computer systems do not require the speed required by semiconductor memory or alternatively where larger storage cannot be provided cost effectively by semiconductor memory, disk drive memory may be used. Computer systems supported by disk drive memory typically link together a plurality of disk drives through hardware to form a drive array known as a redundant array of inexpensive disks (RAID). The drives in the array are coordinated with each other and data is specially allocated between them. Because disk drives and the mechanical interfaces for disk drives are less reliable than semiconductor memory, the processes for data recovery due to permanent or temporary data failure for disk drive systems typically provide more redundancies and more complex data recovery methodologies.
- Traditionally in a RAID system, data is split between the drives at the bit or byte level. For example, in a four drive system, two bits of every byte might come from the first hard disk, while the next two bits come from the second hard disk, and so on. The four drives then output a single byte data stream four times faster than a serial drive implementation, because transferring all of the information in a byte takes only as long as required for a single drive to transfer two bits. This technique of splitting data between several drives is referred to as data striping, and the actual block size per drive can be as high as 1000 bytes. The RAID memory implementation offers improved reliability and greater resistance to errors than can be achieved by operating each disk independently. The increased reliability and fault-tolerance is achieved through various redundancy measures, including mirroring and parity implementations.
- The parity and ECC techniques discussed above are unable to correct “hard” or permanent errors in memories. In previous memory repair schemes, repairs have typically been done off-line with laser fuses. The repairs typically occur in DRAM manufacturing, and not after the memory is sent to the end customer.
- It would be desirable to provide an on-line self-healing memory, without the disadvantages found in existing memory schemes, and without the requirement to add additional memory modules for spare memory.
- The present invention provides a self-healing memory device responsive to command signals. The memory device includes multiple banks of memory arrays. Each bank includes a plurality of primary storage cells and a spare unit of spare storage cells. A detector detects an error in a first unit of the primary storage cells in a first one of the banks. A controller responsive to command signals automatically re-maps the first unit of the primary storage cells to the spare unit of storage cells.
- In one embodiment, the self-healing memory provides on-line self-healing for memory hard bit errors. The memory bit functionality can be restored without shutting off power or swapping memory modules. By using an efficient error correcting code (ECC) scheme with the self-healing memory of the present invention, significant immunity from both hard and soft errors can be obtained. In one embodiment, the self-healing memory scheme is scalable, so that as memory sizes increase, the number of hot spare rows can increase. Because the additional spare memory row is small in comparison to the total number of the rows in a memory bank, the die area and cost impact is negligible.
- In one embodiment, the self-healing memory is used in servers requiring 24 hour a day, 7 day a week on-line operation, to improve the reliability of such servers. The self-healing memory may also be used in cost sensitive PCs or workstations to avoid expensive service calls and unnecessary warranty costs. The self-healing technique can also be used for non-DRAM memory, and for CPU caches where on-line correction of hard bit errors is needed.
- FIG. 1A illustrates a partial block diagram of a first embodiment of a self-healing memory system according to the present invention.
- FIG. 1B illustrates a partial block diagram of a second embodiment of a self-healing memory system according to the present invention.
- FIGS.2A-2C illustrates a first memory row and a spare memory row and the mapping of the first memory row to the spare memory row according to the present invention.
- FIG. 3 illustrates a double data rate (DDR) synchronous dynamic random access memory (SDRAM) according to the present invention.
- FIG. 4 illustrates a timing diagram showing the timing for read and write operations of the DDR SDRAM shown in FIG. 3.
- FIG. 5 illustrates a truth table identifying commands that can be issued by the DDR SDRAM shown in FIG. 3.
- FIG. 6 illustrates a mode register of the DDR SDRAM shown in FIG. 3.
- FIG. 7 illustrates an extended mode register of the DDR SDRAM shown in FIG. 3.
- FIG. 8 illustrates a partial block diagram of one embodiment of a latch and decoder circuit for implementing the self-healing capability of the present invention.
- In the following detailed description of the preferred embodiments, reference is made to the accompanying drawings, which form a part hereof, and in which is shown by way of illustration specific embodiments in which the invention may be practiced. It is to be understood that other embodiments may be utilized and structural or logical changes may be made without departing from the scope of the present invention. The following detailed description, therefore, is not to be taken in a limiting sense, and the scope of the present invention is defined by the appended claims.
- FIG. 1A shows a partial block diagram of a self-
healing memory configuration 100A according to the present invention. In the preferred embodiment, thememory configuration 100A includesCPU bus 110 electrically coupled to amemory controller 114, thememory controller 114 electrically coupled to switch 120, whereinswitch 120 is electrically connected to a plurality ofmemory modules 124. The plurality ofmemory modules 124 preferably includes a plurality ofdata memory modules 130 and a plurality ofECC memory modules 134. In one embodiment thedata memory modules 130 andECC memory modules 134 are connected in parallel.Memory modules 124 may also include one or more spare memory modules. - In one embodiment, each
memory module 124 includes anon-volatile memory unit 132.Non-volatile memory unit 132 is preferably an EEPROM, although other types of non-volatile memories may be used. - In the embodiment shown in FIG. 1A, the data memory configuration is a self-healing double data rate (DDR) system with a 144 bit
data memory channel 140, and 40memory modules 124, preferably 32 DDR DIMMs fordata ECC 124. The 144 bitwide channel 140 includes 128 data bits and 16 ECC bits. The 144bit data bus 140 is split into four separate 72bit bus channels 146A-146D (collectively referred to as bus channels 146). Each bus channel 146, preferably includes eightmemory modules 130 used for data and twomemory modules 134 used for ECC. -
Data bus 140 is electrically coupled to at least oneswitch 120, preferably a 1:2 FET, which is electrically coupled toCPU bus 110 viamemory controller 114. In an alternative embodiment, switch 120 could be a crossbar-type switch. Switch 120 splits the 144bit bus 140 into two 144bit bus segments memory bus 140 to reduce the loading onmemory controller 114. Depending on the system requirements, and in particular the number ofmemory modules 124 in the memory configuration, a 1:2 or 1:4 FET could be used. The increased size ratio of the FET switch means that the number ofbus segments 140A-140B is increased. - For 72 bit wide DRAMs, each of the two 144
bit bus segments bit bus channels 146A-146D. Each of the 72bit memory channels 146A-146D is connected in parallel to ten 72bit memory modules 124. -
Memory configuration 100A includes twoECC memory modules 134 for each memory channel 146. However, the preferred number ofECC modules 134 depends on multiple factors, including but not limited to the type of CRC polynomial used, the number of data errors and number of channels upon which data errors will be corrected.Memory controller 114 includesECC logic 142, which provides data correction for memory errors.ECC logic 142 uses conventional techniques that may vary dependent upon the data correction requirements and algorithms used. -
Memory configuration 100A shown in FIG. 1A is not easily scalable if striping is used. Although the configuration and number ofmodules 124 shown in FIG. 1A is a typical for a high-end system, the number ofmodules 124 connected todata bus 140 may be as low as asingle memory module 124 used for data storage. If asingle memory module 124 is used for data storage, thememory module 124 should have at least one memory device or bits of a memory device that are dedicated to error correction. - FIG. 1B shows a partial block diagram of second preferred embodiment of a self-
healing memory configuration 100B according to the present invention.Embodiment 100B shown in FIG. 1B is a scaled down version ofembodiment 100A shown in FIG. 1A.Memory configuration 100B includes a plurality ofmemory modules 124 that can be used for storing either data or ECC. The 144 bitwide bus 140 includes 128 data bits and 16 ECC bits. In contrast to the embodiment shown in FIG. 1A, there are no dedicated ECC devices inembodiment 100B. Rather, bits on the memory devices may be dedicated to data or ECC. Again, one or more spare memory modules may be provided for each 72bit bus 170A-170D. Inembodiment 100B, data striping is not used and the system is therefore very scalable.Embodiment 100B requires a minimum of twodata memory modules 124. - In
embodiment 100B, thedata memory channel 140 electrically couplesmemory controller 114 toswitches embodiment 100B, aswitch bit bus - In
embodiments memory modules 124 are preferably DIMMs with 72 bit wide DDR SDRAMS. However, any type of read/write memory components may be used as long as they meet system requirements. - A DDR SDRAM typically includes multiple banks or arrays of memory, divided into a plurality of rows of storage units. A self-healing memory according the present invention provides a mechanism to dynamically change the mapping from a bad row to a spare row via a command in the DDR SDRAM command set. When a hard error is detected, a command is issued that allows the SDRAM memory bank row address with the hard error to be re-mapped to the spare row in that bank inside the SDRAM.
- FIGS.2A-2C illustrate a
first memory row 200 and aspare memory row 206, and the mapping offirst memory row 200 to thespare memory row 206 according to the present invention. Row 200 includesnibbles 202A-202G.Spare row 206 includesnibbles 208A-208G.Nibble 202D ofrow 200 includes 4bits 204A-204D.Nibble 202D includes a hard error atbit 204B. When hard error atbit 204B is detected, a self-heal operation according to the present invention is initiated, androw 200 is re-mapped to sparerow 206 as described below. The system identifies an error as a “hard” error if the same error repeats at the same address on subsequent reads. In one embodiment, when a hard error is detected inrow 200,row 200 is “locked” to sparememory row 206. Row 200 is locked to sparememory row 206 by setting the LR bit in the extended mode register (discussed below) to “1.” - FIG. 2B shows
row 200 andspare row 206 afterrow 200 is locked to sparerow 206. Afterrows rows rows row 200. As shown in FIG. 2B, an error is detected innibble 208D ofspare row 206. The error is corrected using conventional ECC techniques. - In one embodiment,
row 200 is not re-mapped to sparerow 206 until the entirespare row 206 is “scrubbed.” “Scrubbing” means systematically performing a read operation of a nibble, followed by correction of the data that is read, followed by a write operation of the corrected data, for each nibble inspare row 206, so that the data inspare row 206 is identical to the data inrow 200. Afterspare row 206 is scrubbed,row 200 is mapped to sparerow 206 by setting the LR bit back to “0”, and setting the HSR bit in the extended mode register (discussed below) to “1”. FIG. 2C illustratesrow 200 andspare row 206 after the re-mapping. After the re-mapping, the memory bit functionality has been restored, and all operations (e.g., READ and WRITE operations) directed to row 200 will automatically be re-directed to sparerow 206. - FIG. 3 shows a block diagram of a double data rate (DDR) synchronous dynamic random access memory (SDRAM) according to the present invention.
DDR SDRAM 300 includescontroller 312,command decoder 314, mode registers 316,refresh counter 318,row address multiplexer 320, row address latches anddecoders 322A-322D (collectively referred to as row address latches an decoders 322),memory banks 324A-324D (collectively referred to as memory banks 324),sense amplifiers 326A-326D (collectively referred to as sense amplifiers 326),address register 328,address bus 330,bank controller 332, column address counter/latch 334, I/O gating andmask controller 336,column decoders 338A-338D (collectively referred to as column decoders 338), readlatch 340,multiplexer 342,DLL 344,drivers 346,DQS generator 348, write FIFO anddrivers 350, input registers 352, andreceivers 354. The double data rate architecture ofDDR SDRAM 300 provides two data transfers per clock cycle.DDR SDRAM 300 is in a “×4” configuration (i.e., includes four input/output lines DQ0-DQ3). Other configurations may also be used, including ×8 and ×16 configurations. - In one embodiment,
DDR SDRAM 300 is JEDEC compliant. The 64 Mb JEDEC specification entitled “Double Data Rate (DDR) SDRAM”, Pub. No. JEDDDRDS.pm65, Rev. 0.9, 1999, is hereby incorporated by reference. -
Controller 312 includes the following inputs: CKE, /CK, CK, /CS, /WE, /CAS, and /RAS. CKE is a clock enable input.DDR SDRAM 300 operates from a differential clock (CK and /CK). The crossing of CK going high and /CK going low is referred to as the positive edge of CK. Commands (address and control signals) are registered at every positive edge of CK. Input data is registered on both edges of DQS, and output data is referenced to both edges of DQS, as well as to both edges of CK. /CS is a chip select input. /WE (write enable), /CAS (column address strobe), and /RAS (row address strobe) are command inputs that define a command being entered. - Fourteen input lines A0-A11 and BA0-BA1 are coupled to address
register 328.Address register 328 is coupled to addressbus 330. Address register 328 couples lines A0-A11 and BA0-BA1 tocontroller 312 androw address multiplexer 320. Address register 328 couples lines BA0-BA1 tobank controller 332. Address register 328 couples lines A0-A9 to column address counter/latch 334. - BA0 and BA1 are bank address inputs. BA0 and BA1 identify the
bank 324A-324D to which an ACTIVE, READ, or WRITE command are being applied.Bank controller 332 is coupled to row address latches and decoders 322, and to column decoders 338.Bank controller 332 enables selected ones of row address latches and decoders 322 and column decoders 338 based on the values on lines BA0 and BA1. A0-A11 are address inputs, which provide the row address for ACTIVE commands, and the column address for READ/WRITE commands, to select one location out of the memory array in the selectedbank 324A-324D. A row address provided to rowaddress multiplexer 320 fromaddress bus 330 is output bymultiplexer 320 to each of the row address latches and decoders 322. During REFRESH commands (discussed below), row addresses are provided to rowaddress multiplexer 320 fromrefresh counter 318. Row addresses are latched by row address latches and decoders 322. Column addresses are latched by column address counters/latches 334. - Address inputs A0-A11 also provide the op-code during a MODE REGISTER SET command. The op-codes are provided to
controller 312 viaaddress bus 330. BA0 and BA1 define which mode register is loaded during the MODE REGISTER SET command (i.e., the mode register or the extended mode register). - DDR SDRAM also includes five bi-directional input/output lines—DQ0-DQ3 and DQS, and one unidirectional line DM (input only). DQ0-DQ3 are used for the input/output of data. DQ0-DQ3 and DM are coupled to
drivers 346 andreceivers 354. Signals that are input toDDR SDRAM 300 on lines DQ0-DQ3 and DM are received and amplified byreceivers 354, pass through input registers 352 and write FIFO anddrivers 350, and are ultimately received by I/O gating andmask logic controller 336. DQS is coupled todrivers 346, input registers 352, and write FIFO anddrivers 350. DQS is an input/output data strobe (i.e., output with read data, and input with write data). DQS is edge-aligned with read data, and center-aligned for write data. DQS is used to capture write data. DQS is transmitted/received with data, and is used in capturing write data at input registers 352. DQS is transmitted byDQS generator 348 during READ operations, and bymemory controller 114 during WRITE operations. DM is an input mask signal for write data. Input data is masked by I/O gating andmask controller 336 when DM is sampled high along with that input data during a WRITE access. - FIG. 4 illustrates a timing diagram showing the timing for READ and WRITE operations of the DDR SDRAM shown in FIG. 3. As shown in FIG. 4, a READ command (R) is registered at the positive edge of CK in the first clock cycle. At the positive edge of CK in the third clock cycle, the reading of data begins. The DQS signal is edge-aligned with each of the data elements (Q0-Q3). At the positive edge of CK in the fifth clock cycle, a WRITE command (W) is registered. Just before the positive edge of CK in the sixth clock cycle, the writing of data begins. The DQS signal is center-aligned with each of the data elements (D0-D3).
- FIG. 5 illustrates a truth table identifying commands that can be issued to the
DDR SDRAM 300 shown in FIG. 3. As shown in FIG. 5, for a DESELECT command, /CS is set low. For a NO OPERATION command, /CS is set low, /RAS is set high, /CAS is set high, and IWE is set high. For an ACTIVE command, /CS is set low, /RAS is set low, /CAS is set high, and /WE is set high. The address registered with an ACTIVE command identifies a bank and row address. For a READ command, /CS is set low, /RAS is set high, /CAS is set low, and /WE is set high. The address registered with a READ command identifies a bank and column address. For a WRITE command, /CS is set low, /RAS is set high, /CAS is set low, and /WE is set low. The address registered with a WRITE command identifies a bank and column address. For a BURST TERMINATE command, /CS is set low, /RAS is set high, /CAS is set high, and /WE is set low. For a PRECHARGE command, /CS is set low, /RAS is set low, /CAS is set high, and /WE is set low. For an AUTO REFRESH or SELF REFRESH command, /CS is set low, /RAS is set low, /CAS is set low, and /WE is set high. For a MODE REGISTER SET command, /CS is set low, /RAS is set low, /CAS is set low, and /WE is set low. - The DESELECT command prevents new commands from being executed by
DDR SDRAM 300.DDR SDRAM 300 is effectively deselected. Operations already in progress are not affected by a DESELECT command. - The NO OPERATION (NOP) command is used to perform a NOP to a
DDR SDRAM 300 that is selected (/CS is low). This prevents unwanted commands from being registered during idle or wait states. Operations already in progress are not affected. - The ACTIVE command is used to open (or activate) a row in a particular bank for a subsequent access. The value on the BA0 and BA1 inputs identifies the bank, and the address provided on inputs A0-A11 selects the row. The selected row remains active (or open) for accesses until a PRECHARGE (or READ or WRITE with AUTO PRECHARGE) is issued to that bank. A PRECHARGE (or READ or WRITE with AUTO PRECHARGE) command must be issued before opening a different row in the same bank. After opening a row (by issuing an ACTIVE command), a READ or WRITE command may be issued to that row. A subsequent ACTIVE command to a different row in the same bank can only be issued after the previous active row has been closed (e.g., with PRECHARGE). A subsequent ACTIVE command to another bank can be issued while the first bank is being accessed, which results in a reduction of total row-access overhead.
- READ and WRITE accesses to
DDR SDRAM 300 are burst oriented—accesses start at a selected location and continue for a programmed number of locations in a programmed sequence. The burst length is programmable. In one embodiment,DDR SDRAM 300 provides burst lengths of 2, 4, and 8 locations, for both a sequential and an interleaved burst type. The burst length determines the maximum number of column locations that can be accessed for a given READ or WRITE command. Column address counter/latch 334 is responsible for counting through the selected number of column locations in a burst, and providing the column locations to column decoders 338. Accesses begin with the registration of an ACTIVE command, which is then followed by a READ or WRITE command. The address bits onaddress bus 330 registered coincident with the ACTIVE command are used bybank controller 332 and row address latches and decoders 322 to select the bank and row, respectively, to be accessed. The address bits onaddress bus 330 registered coincident with the READ or WRITE command are used by column address counter/latch 334 and column decoders 338 to select the starting column location for the burst access. - When a READ or WRITE command is issued, a block of columns equal to the burst length is effectively selected. All accesses for that burst take place within this block, meaning that the burst will wrap within the block if a boundary is reached. The programmed burst length applies to both READ and WRITE bursts.
- Accesses within a given burst may be programmed to be either sequential or interleaved. This is referred to as the burst type and is selected via bit A3 in one embodiment. The ordering of accesses within a burst is determined by the burst length, the burst type and the starting column address.
- The read latency is the delay, in clock cycles, between the registration of a READ command and the availability of the first piece of output data. In one embodiment, the latency can be set to 2 or 2.5 clocks. In another embodiment, latencies of 1.5 and 3 are also available.
- The READ command is used to initiate a burst read access to an active row. The starting column and bank addresses are provided with the READ command and AUTO PRECHARGE is either enabled or disabled for that burst access. The value on the BA0 and BA1 inputs selects the bank, and the address provided on inputs A0-Ai (where i=7 for ×16, 8 for ×8, and 9 for ×4 organization) selects the starting column location. The value on input A10 determines whether or not AUTO PRECHARGE is used. If AUTO PRECHARGE is selected, the row being accessed will be precharged at the end of the READ burst. If AUTO PRECHARGE is not selected, the row will remain open for subsequent accesses.
- Sense amplifiers326 and I/O gating and
mask controller 336 operate in a manner known in the art to sense the data stored in the storage cells of banks 324 addressed by the active row and column. The data obtained during a READ operation is output from I/O gating andmask controller 336 to readlatch 340, where the data is latched. I/O gating andmask controller 336 outputs the data to readlatch 340 8 bits at a time. Readlatch 340 outputs the received 8 bits to multiplexer 342 in two 4 bit segments.Multiplexer 342 outputs a first one of the 4 bit segments followed by the second 4 bit segment todrivers 346.Drivers 346 amplify the received data and output the amplified data on lines DQ0-DQ3.Drivers 346 also receive a DQS signal fromDQS generator 348, and output an amplified DQS signal on the DQS line.DLL 344 is coupled todrivers 346 and receives a clock input.DLL 344 aligns transitions of DQ0-DQ3 and DQS with CK transitions. - During READ bursts, the valid data-out element from the starting column address will be available following a CAS latency after the READ command. Each subsequent data-out element will be valid nominally at the next positive or negative clock edge (i.e., at the next crossing of CK and /CK). DQS is driven by
DQS generator 348 along with the output data. Data from any READ burst must be completed or truncated before a subsequent WRITE command can be issued. If truncation is necessary, the BURST TERMINATE command is used. - The WRITE command is used to initiate a burst write access to an active row. The starting column and bank addresses are provided with the WRITE command, and AUTO PRECHARGE is either enabled or disabled for that access. The value on the BA0 and BA1 inputs selects the bank, and the address provided on inputs A0-Ai (where i=7 for ×16, 8 for ×8, and 9 for ×4 organization) selects the starting column location. In one embodiment, the value on input A10 determines whether or not AUTO PRECHARGE is used. If AUTO PRECHARGE is selected, the row being accessed will be precharged at the end of the write burst. If AUTO PRECHARGE is not selected, the row will remain open for subsequent accesses. Input data appearing on the DQ0-DQ3 lines are written to a memory bank 324 subject to the DM input logic level appearing coincident with the data. If a given DM signal is registered low, the corresponding data will be written to memory by I/O gating and
mask controller 336. If the DM signal is registered high, the corresponding data inputs will be ignored, and a WRITE will not be executed to that selected location. During write bursts, the first valid data-in element will be registered on the first rising edge of DQS following the WRITE command, and subsequent data elements will be registered on successive edges of DQS. - The PRECHARGE command is used to deactivate the open row in a particular bank or the open row in all banks. The bank(s) will be available for a subsequent row access a specified time after the PRECHARGE command is issued. Input A10 determines whether one or all banks are to be precharged, and in the case where only one bank is to be precharged, inputs BA0 and BA1 select the bank. Once a bank has been precharged, it is in the idle state and must be activated prior to any READ or WRITE commands being issued to that bank. A PRECHARGE command is treated as a NOP if there is no open row in that bank, or if the previously open row is already in the process of precharging.
- AUTO PRECHARGE is a feature that performs the same individual bank precharge function described above, but without requiring an explicit command. AUTO PRECHARGE is accomplished by using A10 to enable AUTO PRECHARGE in conjunction with a specific READ or WRITE command. A precharge of the bank/row that is addressed with the READ or WRITE command is automatically performed upon completion of the READ or WRITE burst. AUTO PRECHARGE is nonpersistant in that it is either enabled or disabled for each individual READ or WRITE command.
- The BURST TERMINATE command is used to truncate READ bursts (with AUTO PRECHARGE disabled).
- The AUTO-REFRESH and SELF-REFRESH commands are used to refresh the contents of memory banks324. Refresh counter 318 controls row addressing for REFRESH commands.
- Mode registers316 in
controller 312 includemode register 316A (shown in FIG. 6) and extendedmode register 316B (shown in FIG. 7). Mode registers 316 are used to define the specific mode of operation ofDDR SDRAM 300.Mode register 316A is used to define a burst length, a burst type, a CAS latency, and an operation mode, as shown in FIG. 6.Mode register 316A is programmed with a MODE REGISTER SET command (with BA0=0 and BA1=0) and retains the stored information until it is programmed again, or thedevice 300 loses power. Mode register bits A0-A2 specify the burst length, bit A3 specifies the burst type (BT), either sequential or interleaved, bits A4-A6 specify the CAS latency, and bits A7-A11 specify the operating mode. - In one embodiment, a normal operating mode is selected by issuing a MODE REGISTER SET command with bits A7-A11 each set to zero, and bits A0-A6 set to the desired values. In one embodiment, A DLL reset is initiated by issuing a MODE REGISTER SET command with bits A7 and A9-A11 each set to zero, bit A8 set to one, and bits A0-A6 set to the desired values. A MODE REGISTER SET command issued to reset the DLL should be followed by a MODE REGISTER SET command to select normal operation mode. Other combinations of values for A7-A11 are used to select other modes, including test modes.
- FIG. 7 shows a diagram of extended
mode register 316B.Extended mode register 316B controls functions beyond those controlled bymode register 316, including DLL enable/disable (bit A0), drive strength (bit A1), QFC enable/disable (bit A2), and enablement of the self-healing function of the present invention. The DLL must be enabled for normal operation. DLL enable is required during power-up initialization, and upon return to normal operation after having disabled the DLL for the purpose of debug or evaluation. - Extended
mode register 316B is programmed via the MODE REGISTER SET command (with BA0=1 and BA1=0), and retains the stored information until it is programmed again or untildevice 300 loses power. Bits A5-11 define an operating mode ofdevice 300. Bit A3 is referred to as a hot spare row (HSR) bit, and is used to enable/disable the self-heal capability of the present invention. Setting bit A3 to zero results in normal operation. Setting bit A3 to one enables HSR mode or self-healing mode. Bit A4 is referred to as a Lock Row (LR) bit. - In one embodiment, one spare row of memory is provided for each
bank 324A-324D. The spare row in each bank is referred to as a hot spare row, indicating that the row may be swapped with another row on-line, without shutting off power todevice 300. For a 72 bit DDR stacked memory module with ×4 organization, if one hot spare row is provided per bank, a total of 144 spare rows are provided. 72 hot spare rows are provided for the same DIMM using ×8 organization. In memory modules, for example, with 36 DRAMs each having fourinternal banks 324A-324D, the number of hard errors that can be healed per module, assuming random hard error distribution, is 144. Therefore, for all practical purposes memory modules never need to be replaced due to hard bit failures. - 144 spare rows in the ×4 configuration are available if the rows in each ×4 bit DRAM are independent. If the rows are treated as dependent (i.e., all addressed at the same time), there are 8 hot spare rows available for each 72 bit DIMM (4 banks per DRAM×2 rows of memory per DIMM) in a 144 bit wide memory system.
- When the HSR bit is set, an ACTIVATE command functions as a HEAL command, and the memory row address with the hard error is re-mapped to the hot spare row. In one embodiment, when the HEAL command is received, the row address latch and decoder322 for the specified bank re-maps the row address with the hard error (specified by the address registered with the HEAL command) to the hot spare row address. When the HSR bit is set, any operation to the row address that was healed now references the hot spare row. In addition, when the HSR bit is set, a DEACTIVATE command (or PRECHARGE command) functions as an UNHEAL command, which causes the reverse to happen. The UNHEAL command allows the hot spare row address to be re-mapped back to the address of the disabled row in each memory bank. As in the standard ACTIVATE and DEACTIVATE commands, the A10 bit defines whether the HEAL or UNHEAL command applies to one bank specified by bits BA0-BA1, or all banks at the same time.
- In one embodiment, when the LR bit is set high and the HSR bit is low, any operation to the row address re-mapped to the hot spare row occurs on both rows of memory, except that a READ operation is normal and only references the row that has been re-mapped to the hot spare row. Also, when the received row address equals the address of the hot spare row, the normal bank row address and the row address of the hot spare row are selected at the same time.
- In one embodiment,
memory configurations - When a hard error is detected (and also corrected), the LR bit for that physical row of memory is enabled and the row address is stored in one of the latches and decoders322. Subsequently, WRITE operations go to both the hot spare row and the row with the hard error. REFRESH operations operate on both rows, and READ operations only operate on the row with the hard error. The row of memory is scrubbed to ensure that the entire hot spare row has corrected, as well as current data.
- In one embodiment, heal status information for
device 300 is stored in thenon-volatile memory 132 for thememory module 124 containing thatdevice 300. The heal status information identifies thedevice 300, bank 324, and the row containing the hard error. Other related information may also be stored innon-volatile memory 132, such as the nibble or bit within the row containing the hard error. After each system power up, eachSDRAM 300 in eachmemory module 124 is initialized bymemory controller 114, based on the heal status information stored innon-volatile memory 132. - FIG. 8 shows a partial block diagram of a simplified embodiment of one of row address latches and decoders322. For ease of illustration and explanation, FIG. 8 shows a
memory bank 821 with only fourrows 822B-822E and one hotspare row 822A. It will be understood by one of ordinary skill in the art that the techniques discussed with reference to FIG. 8 can be extended to handle larger addresses and additional rows. The diagram illustratesHSR address latch 810, ORgate 812,comparator 814, ANDgate 816,row address latch 818,decoder 820, andbank 821. In the embodiment shown,decoder 820 is a 1:4 decoder. FIG. 8 also shows a portion of extendedmode register 316B, including an LR bit, and an HSR bit. Each of these bits is cleared at power-on ofdevice 300. - The LR bit includes two outputs—an LR output coupled to one input of OR
gate 812, and an inverted output LR-coupled to one input of ANDgate 816. The HSR bit has one HSR output coupled to an input of ORgate 812. - As a first example, if the HSR bit is high and the LR bit is low, the output of OR
gate 812 is high, which enablescomparator 814. A 2 bit row address is received and latched bylatches latches comparator 814.Comparator 814 compares the two addresses, and outputs a high signal (because the addresses output bylatches spare row 822A, thereby enabling the hot spare row. The high signal fromcomparator 814 also goes to an input of ANDgate 816. The other input of ANDgate 816 is coupled to the LR-output of the LR bit. Since the LR bit is low in this example, LR- is high, making both inputs to ANDgate 816 high. ANDgate 816, therefore, outputs a high signal todecoder 820. The high signal todecoder 820 is inverted at the input ofdecoder 820, thereby generating a low signal that disablesdecoder 820. Therefore, when the HSR bit is set high and the LR bit is set low, hotspare row 822A is selected, and allother rows 822B-822E are deselected. - As a second example, when the LR bit is set high and the HSR bit is set low, OR
gate 812 outputs a high signal due to the high signal at its input from the LR output line. ANDgate 816 outputs a low signal due to the low signal at its input from the LR-line. The high signal fromOR gate 812 enablescomparator 814. Again, because both of the input addresses tocomparator 814 are the same,comparator 814 outputs a high signal to hotspare row 822A, thereby selecting hotspare row 822A. Because the LR-input to ANDgate 816 is low, ANDgate 816 outputs a low signal todecoder 820. The low signal todecoder 820 is inverted at the input ofdecoder 820, thereby generating a high signal that enablesdecoder 820.Decoder 820 decodes the address fromlatch 818, and selects therow 822B-822E corresponding to the input address. Therefore, when the LR bit is set high and the HSR bit is set low, both the normal bank row address and the HSR row address are selected at the same time. - Although the present invention has been discussed with respect to a hot spare row, the self-healing technique of the present invention can be applied to hot spare columns or any discrete block of addressable memory cells that have a hard error, where a hot spare discrete block of memory cells of the same organization is provided. Further, the self-healing memory techniques described herein with reference to a DDR SDRAM also apply to SRD SDRAMs, as well as RAMBUS memories. The self-healing memory scheme also applies to ADT memory technologies.
- Although specific embodiments have been illustrated and described herein for purposes of description of the preferred embodiment, it will be appreciated by those of ordinary skill in the art that a wide variety of alternate and/or equivalent implementations calculated to achieve the same purposes may be substituted for the specific embodiments shown and described without departing from the scope of the present invention. Those with skill in the chemical, mechanical, electromechanical, electrical, and computer arts will readily appreciate that the present invention may be implemented in a very wide variety of embodiments. This application is intended to cover any adaptations or variations of the preferred embodiments discussed herein. Therefore, it is manifestly intended that this invention be limited only by the claims and the equivalents thereof.
Claims (30)
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/766,354 US6418068B1 (en) | 2001-01-19 | 2001-01-19 | Self-healing memory |
TW090128966A TW588240B (en) | 2001-01-19 | 2001-11-22 | Self-healing memory |
JP2002010062A JP2002279795A (en) | 2001-01-19 | 2002-01-18 | Self-restoration memory |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/766,354 US6418068B1 (en) | 2001-01-19 | 2001-01-19 | Self-healing memory |
Publications (2)
Publication Number | Publication Date |
---|---|
US6418068B1 US6418068B1 (en) | 2002-07-09 |
US20020097613A1 true US20020097613A1 (en) | 2002-07-25 |
Family
ID=25076183
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/766,354 Expired - Lifetime US6418068B1 (en) | 2001-01-19 | 2001-01-19 | Self-healing memory |
Country Status (3)
Country | Link |
---|---|
US (1) | US6418068B1 (en) |
JP (1) | JP2002279795A (en) |
TW (1) | TW588240B (en) |
Cited By (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030005216A1 (en) * | 2001-06-27 | 2003-01-02 | Fujitsu Limited | Control device for semiconductor memory device and method of controlling semiconductor memory device |
US20030221059A1 (en) * | 2002-05-22 | 2003-11-27 | Emmot Darel N. | Mirrored computer memory on split bus |
US20040181733A1 (en) * | 2003-03-06 | 2004-09-16 | Hilton Richard L. | Assisted memory system |
US20040236985A1 (en) * | 2003-05-06 | 2004-11-25 | International Business Machines Corporation | Self healing storage system |
US20060242225A1 (en) * | 2005-04-22 | 2006-10-26 | White Barry C | Self-forming, self-healing configuration permitting substitution of agents to effect a live repair |
US20070279112A1 (en) * | 2004-02-13 | 2007-12-06 | Kengo Maeda | Semiconductor Memory |
US20090217136A1 (en) * | 2008-02-21 | 2009-08-27 | Phison Electronics Corp. | Storage apparatus, controller and data accessing method thereof |
US20090300314A1 (en) * | 2008-05-29 | 2009-12-03 | Micron Technology, Inc. | Memory systems and methods for controlling the timing of receiving read data |
US20090300444A1 (en) * | 2008-06-03 | 2009-12-03 | Micron Technology, Inc. | Method and apparatus for testing high capacity/high bandwidth memory devices |
US20100005217A1 (en) * | 2008-07-02 | 2010-01-07 | Micron Technology, Inc | Multi-mode memory device and method |
US20100005376A1 (en) * | 2008-07-02 | 2010-01-07 | Micron Technology, Inc. | Method and apparatus for repairing high capacity/high bandwidth memory devices |
US20100042889A1 (en) * | 2008-08-15 | 2010-02-18 | Micron Technology, Inc. | Memory system and method using a memory device die stacked with a logic die using data encoding, and system using the memory system |
US8010866B2 (en) | 2008-07-21 | 2011-08-30 | Micron Technology, Inc. | Memory system and method using stacked memory device dice, and system using the memory system |
GB2444663B (en) * | 2005-09-02 | 2011-12-07 | Metaram Inc | Methods and apparatus of stacking drams |
US8400808B2 (en) | 2010-12-16 | 2013-03-19 | Micron Technology, Inc. | Phase interpolators and push-pull buffers |
US20140245107A1 (en) * | 2013-02-27 | 2014-08-28 | Micron Technology, Inc. | Rearranging write data to avoid hard errors |
US9171597B2 (en) | 2013-08-30 | 2015-10-27 | Micron Technology, Inc. | Apparatuses and methods for providing strobe signals to memories |
US20170125081A1 (en) * | 2011-09-28 | 2017-05-04 | Longitude Semiconductor S.A.R.L. | Semiconductor device verifying signal supplied from outside |
CN110389913A (en) * | 2019-07-26 | 2019-10-29 | 南京凯鼎电子科技有限公司 | It is a kind of for improving the feedback device and method of DDR bus utilization |
TWI689816B (en) * | 2018-03-06 | 2020-04-01 | 群聯電子股份有限公司 | Block management method, memory control circuit unit and memory storage apparatus |
EP3936996A4 (en) * | 2020-04-01 | 2022-07-06 | Changxin Memory Technologies, Inc. | Read-write method and memory device |
US11527301B2 (en) | 2020-04-01 | 2022-12-13 | Changxin Memory Technologies, Inc. | Method for reading and writing and memory device |
US20230367674A1 (en) * | 2019-11-29 | 2023-11-16 | Intel Corporation | Methods and apparatus for reducing microbumps for inter-die double-data rate (ddr) transfer |
US11869615B2 (en) | 2020-04-01 | 2024-01-09 | Changxin Memory Technologies, Inc. | Method for reading and writing and memory device |
US11881240B2 (en) | 2020-04-01 | 2024-01-23 | Changxin Memory Technologies, Inc. | Systems and methods for read/write of memory devices and error correction |
US11886287B2 (en) | 2020-04-01 | 2024-01-30 | Changxin Memory Technologies, Inc. | Read and write methods and memory devices |
US11894088B2 (en) | 2020-04-01 | 2024-02-06 | Changxin Memory Technologies, Inc. | Method for reading and writing and memory device |
US11899971B2 (en) | 2020-04-01 | 2024-02-13 | Changxin Memory Technologies, Inc. | Method for reading and writing and memory device |
US11922023B2 (en) | 2020-04-01 | 2024-03-05 | Changxin Memory Technologies, Inc. | Read/write method and memory device |
Families Citing this family (69)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6552937B2 (en) * | 2001-03-28 | 2003-04-22 | Micron Technology, Inc. | Memory device having programmable column segmentation to increase flexibility in bit repair |
US6590822B2 (en) * | 2001-05-07 | 2003-07-08 | Samsung Electronics Co., Ltd. | System and method for performing partial array self-refresh operation in a semiconductor memory device |
US6629225B2 (en) * | 2001-05-31 | 2003-09-30 | Intel Corporation | Method and apparatus for control calibration of multiple memory modules within a memory channel |
DE10154505B4 (en) * | 2001-11-07 | 2006-11-16 | Infineon Technologies Ag | Memory device and method for accessing a memory module |
US6798711B2 (en) * | 2002-03-19 | 2004-09-28 | Micron Technology, Inc. | Memory with address management |
US6957307B2 (en) * | 2002-03-22 | 2005-10-18 | Intel Corporation | Mapping data masks in hardware by controller programming |
KR100527399B1 (en) * | 2002-05-10 | 2005-11-15 | 주식회사 하이닉스반도체 | A DLL driver in Semiconductor Memory Device |
US6879530B2 (en) * | 2002-07-18 | 2005-04-12 | Micron Technology, Inc. | Apparatus for dynamically repairing a semiconductor memory |
US7120068B2 (en) * | 2002-07-29 | 2006-10-10 | Micron Technology, Inc. | Column/row redundancy architecture using latches programmed from a look up table |
US20040064660A1 (en) * | 2002-09-27 | 2004-04-01 | Lyons Michael Stewart | Multiplexed bus with multiple timing signals |
US7130229B2 (en) * | 2002-11-08 | 2006-10-31 | Intel Corporation | Interleaved mirrored memory systems |
US7017017B2 (en) * | 2002-11-08 | 2006-03-21 | Intel Corporation | Memory controllers with interleaved mirrored memory modes |
KR100505685B1 (en) * | 2003-05-12 | 2005-08-03 | 삼성전자주식회사 | Semiconductor memory device for improving redundancy efficiency |
US6839275B2 (en) * | 2003-06-04 | 2005-01-04 | Hewlett-Packard Development Company, L.P. | Memory system having control circuit configured to receive data, provide encoded received data to match a fault pattern in the array of memory cells |
US7827353B2 (en) * | 2003-07-15 | 2010-11-02 | International Business Machines Corporation | Self healing memory |
US7225303B2 (en) * | 2003-09-22 | 2007-05-29 | Micron Technology, Inc. | Method and apparatus for accessing a dynamic memory device by providing at least one of burst and latency information over at least one of redundant row and column address lines |
US6956786B2 (en) | 2003-12-04 | 2005-10-18 | Infineon Technologies North America Corp. | Random access memory with optional inaccessible memory cells |
US7409600B2 (en) * | 2004-07-12 | 2008-08-05 | International Business Machines Corporation | Self-healing cache system |
US7523364B2 (en) * | 2005-02-09 | 2009-04-21 | International Business Machines Corporation | Double DRAM bit steering for multiple error corrections |
US20060253674A1 (en) * | 2005-05-06 | 2006-11-09 | Xiv Ltd. | Automatic disk healing |
US7522467B2 (en) * | 2005-09-29 | 2009-04-21 | Hynix Semiconductor Inc. | Semiconductor memory device |
US7539904B2 (en) * | 2005-11-07 | 2009-05-26 | International Business Machines Corporation | Quantitative measurement of the autonomic capabilities of computing systems |
US7734985B2 (en) * | 2006-02-27 | 2010-06-08 | Intel Corporation | Systems, methods, and apparatuses for using the same memory type to support an error check mode and a non-error check mode |
US7747926B2 (en) * | 2006-05-02 | 2010-06-29 | Everspin Technologies, Inc. | Methods and apparatus for a memory device with self-healing reference bits |
KR100800382B1 (en) * | 2006-08-17 | 2008-02-01 | 삼성전자주식회사 | Method for signal control for use in semiconductor memory device and circuit for generating csl enable signal therefore |
US8041990B2 (en) * | 2007-06-28 | 2011-10-18 | International Business Machines Corporation | System and method for error correction and detection in a memory system |
US8041989B2 (en) * | 2007-06-28 | 2011-10-18 | International Business Machines Corporation | System and method for providing a high fault tolerant memory system |
US8082482B2 (en) * | 2007-08-31 | 2011-12-20 | International Business Machines Corporation | System for performing error correction operations in a memory hub device of a memory module |
US7865674B2 (en) * | 2007-08-31 | 2011-01-04 | International Business Machines Corporation | System for enhancing the memory bandwidth available through a memory module |
US7584308B2 (en) * | 2007-08-31 | 2009-09-01 | International Business Machines Corporation | System for supporting partial cache line write operations to a memory module to reduce write data traffic on a memory channel |
US7840748B2 (en) * | 2007-08-31 | 2010-11-23 | International Business Machines Corporation | Buffered memory module with multiple memory device data interface ports supporting double the memory capacity |
US7861014B2 (en) * | 2007-08-31 | 2010-12-28 | International Business Machines Corporation | System for supporting partial cache line read operations to a memory module to reduce read data traffic on a memory channel |
US7818497B2 (en) * | 2007-08-31 | 2010-10-19 | International Business Machines Corporation | Buffered memory module supporting two independent memory channels |
US7899983B2 (en) | 2007-08-31 | 2011-03-01 | International Business Machines Corporation | Buffered memory module supporting double the memory device data width in the same physical space as a conventional memory module |
US8086936B2 (en) * | 2007-08-31 | 2011-12-27 | International Business Machines Corporation | Performing error correction at a memory device level that is transparent to a memory channel |
US8019919B2 (en) * | 2007-09-05 | 2011-09-13 | International Business Machines Corporation | Method for enhancing the memory bandwidth available through a memory module |
US7558887B2 (en) * | 2007-09-05 | 2009-07-07 | International Business Machines Corporation | Method for supporting partial cache line read and write operations to a memory module to reduce read and write data traffic on a memory channel |
US20090119444A1 (en) * | 2007-11-01 | 2009-05-07 | Zerog Wireless, Inc., Delaware Corporation | Multiple write cycle memory using redundant addressing |
US7788550B2 (en) * | 2007-12-17 | 2010-08-31 | Atmel Rousset S.A.S. | Redundant bit patterns for column defects coding |
TWI358735B (en) * | 2008-01-03 | 2012-02-21 | Nanya Technology Corp | Memory access control method |
US7930469B2 (en) | 2008-01-24 | 2011-04-19 | International Business Machines Corporation | System to provide memory system power reduction without reducing overall memory system performance |
US7770077B2 (en) * | 2008-01-24 | 2010-08-03 | International Business Machines Corporation | Using cache that is embedded in a memory hub to replace failed memory cells in a memory subsystem |
US7925826B2 (en) * | 2008-01-24 | 2011-04-12 | International Business Machines Corporation | System to increase the overall bandwidth of a memory channel by allowing the memory channel to operate at a frequency independent from a memory device frequency |
US7925824B2 (en) * | 2008-01-24 | 2011-04-12 | International Business Machines Corporation | System to reduce latency by running a memory channel frequency fully asynchronous from a memory device frequency |
US7930470B2 (en) * | 2008-01-24 | 2011-04-19 | International Business Machines Corporation | System to enable a memory hub device to manage thermal conditions at a memory device level transparent to a memory controller |
US8140936B2 (en) * | 2008-01-24 | 2012-03-20 | International Business Machines Corporation | System for a combined error correction code and cyclic redundancy check code for a memory channel |
US7925825B2 (en) * | 2008-01-24 | 2011-04-12 | International Business Machines Corporation | System to support a full asynchronous interface within a memory hub device |
JP2009181425A (en) | 2008-01-31 | 2009-08-13 | Nec Corp | Memory module |
US8195981B2 (en) * | 2008-06-03 | 2012-06-05 | International Business Machines Corporation | Memory metadata used to handle memory errors without process termination |
US7895477B2 (en) * | 2008-06-03 | 2011-02-22 | International Business Machines Corporation | Resilience to memory errors with firmware assistance |
US7953914B2 (en) * | 2008-06-03 | 2011-05-31 | International Business Machines Corporation | Clearing interrupts raised while performing operating system critical tasks |
US20100250881A1 (en) * | 2009-03-31 | 2010-09-30 | Joseph Bernard Steffler | Systems and method for data recovery |
US8234461B2 (en) * | 2009-03-31 | 2012-07-31 | General Electric Company | Systems and method for data survivability |
US20100250058A1 (en) * | 2009-03-31 | 2010-09-30 | Joseph Bernard Steffler | Systems and method for protected memory |
US8164936B2 (en) * | 2009-10-14 | 2012-04-24 | Seagate Technology Llc | Switched memory devices |
US8484529B2 (en) | 2010-06-24 | 2013-07-09 | International Business Machines Corporation | Error correction and detection in a redundant memory system |
US8549378B2 (en) | 2010-06-24 | 2013-10-01 | International Business Machines Corporation | RAIM system using decoding of virtual ECC |
US8898511B2 (en) | 2010-06-24 | 2014-11-25 | International Business Machines Corporation | Homogeneous recovery in a redundant memory system |
US8631271B2 (en) | 2010-06-24 | 2014-01-14 | International Business Machines Corporation | Heterogeneous recovery in a redundant memory system |
US8522122B2 (en) | 2011-01-29 | 2013-08-27 | International Business Machines Corporation | Correcting memory device and memory channel failures in the presence of known memory device failures |
TW201327567A (en) | 2011-09-16 | 2013-07-01 | Mosaid Technologies Inc | Memory system with a layer comprising a dedicated redundancy area |
JP5548789B2 (en) * | 2013-01-22 | 2014-07-16 | 株式会社日立製作所 | Semiconductor device |
US9280431B2 (en) * | 2013-04-17 | 2016-03-08 | Globalfoundries Inc. | Prioritizing backups on a disk level within enterprise storage |
US9600189B2 (en) | 2014-06-11 | 2017-03-21 | International Business Machines Corporation | Bank-level fault management in a memory system |
US9703630B2 (en) | 2015-06-08 | 2017-07-11 | International Business Machines Corporation | Selective error coding |
ES2909632T3 (en) * | 2017-01-31 | 2022-05-09 | Hewlett Packard Development Co | Memory bank layout and selection register |
US10671497B2 (en) | 2018-01-19 | 2020-06-02 | International Business Machines Corporation | Efficient and selective sparing of bits in memory systems |
US10896088B2 (en) | 2018-11-15 | 2021-01-19 | Seagate Technology Llc | Metadata recovery mechanism for page storage |
US11379306B1 (en) * | 2021-07-29 | 2022-07-05 | Bae Systems Information And Electronic System Integration Inc. | Method for radiation hardening synchronous DRAM |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0675502B1 (en) * | 1989-04-13 | 2005-05-25 | SanDisk Corporation | Multiple sector erase flash EEPROM system |
JP2837433B2 (en) | 1989-06-05 | 1998-12-16 | 三菱電機株式会社 | Bad bit relief circuit in semiconductor memory device |
US6172935B1 (en) * | 1997-04-25 | 2001-01-09 | Micron Technology, Inc. | Synchronous dynamic random access memory device |
US6046945A (en) | 1997-07-11 | 2000-04-04 | Integrated Silicon Solution, Inc. | DRAM repair apparatus and method |
JP3565687B2 (en) * | 1997-08-06 | 2004-09-15 | 沖電気工業株式会社 | Semiconductor memory device and control method thereof |
-
2001
- 2001-01-19 US US09/766,354 patent/US6418068B1/en not_active Expired - Lifetime
- 2001-11-22 TW TW090128966A patent/TW588240B/en not_active IP Right Cessation
-
2002
- 2002-01-18 JP JP2002010062A patent/JP2002279795A/en not_active Withdrawn
Cited By (66)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030005216A1 (en) * | 2001-06-27 | 2003-01-02 | Fujitsu Limited | Control device for semiconductor memory device and method of controlling semiconductor memory device |
US6886072B2 (en) * | 2001-06-27 | 2005-04-26 | Fujitsu Limited | Control device for semiconductor memory device and method of controlling semiconductor memory device |
US20030221059A1 (en) * | 2002-05-22 | 2003-11-27 | Emmot Darel N. | Mirrored computer memory on split bus |
US7506130B2 (en) * | 2002-05-22 | 2009-03-17 | Hewlett-Packard Development Company, L.P. | Mirrored computer memory on split bus |
US20040181733A1 (en) * | 2003-03-06 | 2004-09-16 | Hilton Richard L. | Assisted memory system |
US7904786B2 (en) | 2003-03-06 | 2011-03-08 | Hewlett-Packard Development Company, L.P. | Assisted memory system |
US20040236985A1 (en) * | 2003-05-06 | 2004-11-25 | International Business Machines Corporation | Self healing storage system |
US7278053B2 (en) | 2003-05-06 | 2007-10-02 | International Business Machines Corporation | Self healing storage system |
US20070279112A1 (en) * | 2004-02-13 | 2007-12-06 | Kengo Maeda | Semiconductor Memory |
US20060242225A1 (en) * | 2005-04-22 | 2006-10-26 | White Barry C | Self-forming, self-healing configuration permitting substitution of agents to effect a live repair |
US7549077B2 (en) | 2005-04-22 | 2009-06-16 | The United States Of America As Represented By The Secretary Of The Army | Automated self-forming, self-healing configuration permitting substitution of software agents to effect a live repair of a system implemented on hardware processors |
GB2444663B (en) * | 2005-09-02 | 2011-12-07 | Metaram Inc | Methods and apparatus of stacking drams |
US20090217136A1 (en) * | 2008-02-21 | 2009-08-27 | Phison Electronics Corp. | Storage apparatus, controller and data accessing method thereof |
TWI381387B (en) * | 2008-02-21 | 2013-01-01 | Phison Electronics Corp | Storage apparatus, controller and data accessing method thereof |
US8504898B2 (en) * | 2008-02-21 | 2013-08-06 | Phison Electronics Corp. | Storage apparatus, controller and data accessing method thereof |
US8751754B2 (en) | 2008-05-29 | 2014-06-10 | Micron Technology, Inc. | Memory systems and methods for controlling the timing of receiving read data |
US20090300314A1 (en) * | 2008-05-29 | 2009-12-03 | Micron Technology, Inc. | Memory systems and methods for controlling the timing of receiving read data |
US8521979B2 (en) | 2008-05-29 | 2013-08-27 | Micron Technology, Inc. | Memory systems and methods for controlling the timing of receiving read data |
US9411538B2 (en) | 2008-05-29 | 2016-08-09 | Micron Technology, Inc. | Memory systems and methods for controlling the timing of receiving read data |
US20090300444A1 (en) * | 2008-06-03 | 2009-12-03 | Micron Technology, Inc. | Method and apparatus for testing high capacity/high bandwidth memory devices |
US8799726B2 (en) | 2008-06-03 | 2014-08-05 | Micron Technology, Inc. | Method and apparatus for testing high capacity/high bandwidth memory devices |
US7979757B2 (en) | 2008-06-03 | 2011-07-12 | Micron Technology, Inc. | Method and apparatus for testing high capacity/high bandwidth memory devices |
US20100005376A1 (en) * | 2008-07-02 | 2010-01-07 | Micron Technology, Inc. | Method and apparatus for repairing high capacity/high bandwidth memory devices |
US8289760B2 (en) * | 2008-07-02 | 2012-10-16 | Micron Technology, Inc. | Multi-mode memory device and method having stacked memory dice, a logic die and a command processing circuit and operating in direct and indirect modes |
US9659630B2 (en) | 2008-07-02 | 2017-05-23 | Micron Technology, Inc. | Multi-mode memory device and method having stacked memory dice, a logic die and a command processing circuit and operating in direct and indirect modes |
US10109343B2 (en) | 2008-07-02 | 2018-10-23 | Micron Technology, Inc. | Multi-mode memory device and method having stacked memory dice, a logic die and a command processing circuit and operating in direct and indirect modes |
US9146811B2 (en) | 2008-07-02 | 2015-09-29 | Micron Technology, Inc. | Method and apparatus for repairing high capacity/high bandwidth memory devices |
US10892003B2 (en) | 2008-07-02 | 2021-01-12 | Micron Technology, Inc. | Multi-mode memory device and method having stacked memory dice, a logic die and a command processing circuit and operating in direct and indirect modes |
TWI420522B (en) * | 2008-07-02 | 2013-12-21 | Micron Technology Inc | Multi-mode memory device and method |
US20100005217A1 (en) * | 2008-07-02 | 2010-01-07 | Micron Technology, Inc | Multi-mode memory device and method |
US8756486B2 (en) | 2008-07-02 | 2014-06-17 | Micron Technology, Inc. | Method and apparatus for repairing high capacity/high bandwidth memory devices |
US8793460B2 (en) | 2008-07-21 | 2014-07-29 | Micron Technology, Inc. | Memory system and method using stacked memory device dice, and system using the memory system |
US8010866B2 (en) | 2008-07-21 | 2011-08-30 | Micron Technology, Inc. | Memory system and method using stacked memory device dice, and system using the memory system |
US9275698B2 (en) | 2008-07-21 | 2016-03-01 | Micron Technology, Inc. | Memory system and method using stacked memory device dice, and system using the memory system |
US8533416B2 (en) | 2008-07-21 | 2013-09-10 | Micron Technology, Inc. | Memory system and method using stacked memory device dice, and system using the memory system |
US8826101B2 (en) | 2008-08-15 | 2014-09-02 | Micron Technology, Inc. | Memory system and method using a memory device die stacked with a logic die using data encoding, and system using the memory system |
US20100042889A1 (en) * | 2008-08-15 | 2010-02-18 | Micron Technology, Inc. | Memory system and method using a memory device die stacked with a logic die using data encoding, and system using the memory system |
US8539312B2 (en) | 2008-08-15 | 2013-09-17 | Microns Technology, Inc. | Memory system and method using a memory device die stacked with a logic die using data encoding, and system using the memory system |
US8127204B2 (en) * | 2008-08-15 | 2012-02-28 | Micron Technology, Inc. | Memory system and method using a memory device die stacked with a logic die using data encoding, and system using the memory system |
US9899994B2 (en) | 2010-12-16 | 2018-02-20 | Micron Technology, Inc. | Phase interpolators and push-pull buffers |
US8400808B2 (en) | 2010-12-16 | 2013-03-19 | Micron Technology, Inc. | Phase interpolators and push-pull buffers |
US8861246B2 (en) | 2010-12-16 | 2014-10-14 | Micron Technology, Inc. | Phase interpolators and push-pull buffers |
US9602080B2 (en) | 2010-12-16 | 2017-03-21 | Micron Technology, Inc. | Phase interpolators and push-pull buffers |
US11922994B2 (en) | 2011-09-28 | 2024-03-05 | Longitude Licensing Limited | Semiconductor device verifying signal supplied from outside |
US11398269B2 (en) | 2011-09-28 | 2022-07-26 | Longitude Licensing Limited | Semiconductor device verifying signal supplied from outside |
US10885969B2 (en) | 2011-09-28 | 2021-01-05 | Longitude Licensing Limited | Semiconductor device verifying signal supplied from outside |
US20170125081A1 (en) * | 2011-09-28 | 2017-05-04 | Longitude Semiconductor S.A.R.L. | Semiconductor device verifying signal supplied from outside |
US9176831B2 (en) | 2013-02-27 | 2015-11-03 | Micron Technology, Inc. | Rearranging programming data to avoid hard errors |
US9454427B2 (en) | 2013-02-27 | 2016-09-27 | Micron Technology, Inc. | Shifting read data |
US20140245107A1 (en) * | 2013-02-27 | 2014-08-28 | Micron Technology, Inc. | Rearranging write data to avoid hard errors |
US8977929B2 (en) * | 2013-02-27 | 2015-03-10 | Micron Technology, Inc. | Rearranging write data to avoid hard errors |
US9437263B2 (en) | 2013-08-30 | 2016-09-06 | Micron Technology, Inc. | Apparatuses and methods for providing strobe signals to memories |
US9171597B2 (en) | 2013-08-30 | 2015-10-27 | Micron Technology, Inc. | Apparatuses and methods for providing strobe signals to memories |
TWI689816B (en) * | 2018-03-06 | 2020-04-01 | 群聯電子股份有限公司 | Block management method, memory control circuit unit and memory storage apparatus |
CN110389913A (en) * | 2019-07-26 | 2019-10-29 | 南京凯鼎电子科技有限公司 | It is a kind of for improving the feedback device and method of DDR bus utilization |
US20230367674A1 (en) * | 2019-11-29 | 2023-11-16 | Intel Corporation | Methods and apparatus for reducing microbumps for inter-die double-data rate (ddr) transfer |
US12026053B2 (en) * | 2019-11-29 | 2024-07-02 | Intel Corporation | Methods and apparatus for reducing microbumps for inter-die double-data rate (DDR) transfer |
US11527301B2 (en) | 2020-04-01 | 2022-12-13 | Changxin Memory Technologies, Inc. | Method for reading and writing and memory device |
US11869615B2 (en) | 2020-04-01 | 2024-01-09 | Changxin Memory Technologies, Inc. | Method for reading and writing and memory device |
US11881240B2 (en) | 2020-04-01 | 2024-01-23 | Changxin Memory Technologies, Inc. | Systems and methods for read/write of memory devices and error correction |
US11886287B2 (en) | 2020-04-01 | 2024-01-30 | Changxin Memory Technologies, Inc. | Read and write methods and memory devices |
US11894088B2 (en) | 2020-04-01 | 2024-02-06 | Changxin Memory Technologies, Inc. | Method for reading and writing and memory device |
US11899971B2 (en) | 2020-04-01 | 2024-02-13 | Changxin Memory Technologies, Inc. | Method for reading and writing and memory device |
US11914479B2 (en) | 2020-04-01 | 2024-02-27 | Changxin Memory Technologies, Inc. | Method for reading and writing and memory device |
US11922023B2 (en) | 2020-04-01 | 2024-03-05 | Changxin Memory Technologies, Inc. | Read/write method and memory device |
EP3936996A4 (en) * | 2020-04-01 | 2022-07-06 | Changxin Memory Technologies, Inc. | Read-write method and memory device |
Also Published As
Publication number | Publication date |
---|---|
TW588240B (en) | 2004-05-21 |
JP2002279795A (en) | 2002-09-27 |
US6418068B1 (en) | 2002-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6418068B1 (en) | Self-healing memory | |
US9600362B2 (en) | Method and apparatus for refreshing and data scrubbing memory device | |
US20190198090A1 (en) | Systems and methods for performing row hammer refresh operations in redundant memory | |
KR102652001B1 (en) | Semiconductor memory devices, and method of operating semiconductor memory devices | |
EP1815338B1 (en) | Predictive error correction code generation facilitating high-speed byte-write in a semiconductor memory | |
EP1255197B1 (en) | System and method for correcting soft errors in random access memory devices | |
US7861138B2 (en) | Error correction in memory devices | |
US11309054B2 (en) | Method of controlling repair of volatile memory device and storage device performing the same | |
WO2008100462A2 (en) | Memory array error correction apparatus, systems, and methods | |
US7340668B2 (en) | Low power cost-effective ECC memory system and method | |
US11276456B2 (en) | Systems and methods for capture and replacement of hammered word line address | |
JPH08203294A (en) | Memory | |
EP3906554B1 (en) | Configurable data path for memory modules | |
WO2021080746A1 (en) | Apparatuses and methods for writing data to a memory | |
US11487613B2 (en) | Method for accessing semiconductor memory module | |
US20240273014A1 (en) | Apparatuses, systems, and methods for storing memory metadata | |
US20240272984A1 (en) | Apparatuses, systems, and methods for storing memory metadata | |
US20240274223A1 (en) | Apparatuses, systems, and methods for storing memory metadata | |
US20240289266A1 (en) | Apparatuses and methods for settings for adjustable write timing | |
US20030063506A1 (en) | Integrated memory device, method of operating an integrated memory, and memory system having a plurality of integrated memories | |
CN118230799A (en) | Memory controller and memory system including the same | |
WO2003071550A1 (en) | Semiconductor integrated circuit device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: HEWLETT-PACKARD COMPANY, COLORADO Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:RAYNHAM, MICHAEL B.;REEL/FRAME:011826/0771 Effective date: 20010104 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
FPAY | Fee payment |
Year of fee payment: 8 |
|
AS | Assignment |
Owner name: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HEWLETT-PACKARD COMPANY;REEL/FRAME:026945/0699 Effective date: 20030131 |
|
FPAY | Fee payment |
Year of fee payment: 12 |
|
AS | Assignment |
Owner name: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.;REEL/FRAME:037079/0001 Effective date: 20151027 |