During many tasks performed by a computer, data is stored or retrieved from system memory. Two types of system memory are cache memory, which may comprise fast static random access memory (“SRAM”) integrated with the processor, and main memory, which may comprise dynamic random access memory (“DRAM”) chips on dual inline memory modules (“DIMMs”). Each DRAM chip may contain memory locations, or cells, arranged in a matrix of rows and columns. A DRAM cell contains a capacitor capable of storing an electrical charge for a short time. A charged cell represents a “1” data bit, and an uncharged cell represents a “0” data bit. To maintain the validity of the stored bits, the capacitors are recharged or refreshed thousands of times per second. As such, DRAM is considered volatile memory.
For a detailed description of exemplary embodiments of the invention, reference will now be made to the accompanying drawings in which:
When a memory controller accesses a memory cell, it sends electronic address signals that specify the target cell's row address and column address. The memory controller sends these signals to the memory through a memory bus, which may comprise an address bus, a command bus, and a data bus. The address bus may be combined with the command bus to form an address/command bus. The data bus is a set of lines, or traces, that carry data to and from the memory. Each trace may carry one data bit at a time. The throughput, or bandwidth, of the data bus depends on its width in bits. For example, the data width of a memory bus may be 64-bits, which means that the bus has 64 traces, each of which transports one bit at a time. Each 64-bit unit of data may be called a data word.
The address portion of the address/command bus may comprise a set of traces that carry signals identifying the location of data in memory. The command portion of the address/command bus may convey what instruction is to be performed such as read, write, or refresh. When writing data to a cell, the memory controller may select the data's row by first strobing the row address onto the address/command bus. Next, the location may be pinpointed in the row by strobing the column address onto the address/command bus. The memory controller may then move the data onto the data bus, and the memory may store the data in the cells.
Memory modules, memory chips, and memory banks may contain rows and columns of memory that are not part of the main memory arrays. That is, spare rows and columns of memory may be provided that are unused in error-free operation. These spare rows and columns may be used as replacement rows and columns thus correcting or bypassing defects in the main memory arrays. Accordingly, as more errors can be tolerated or corrected, the life of the modules, chips, and banks may be increased.
The memory module 102 may also comprise spare rows and columns of memory 106. In at least one example, these rows and columns 106 may be provided by the manufacturer for test purposes, and may be mapped into the memory array 104 by the manufacturer via fusible links if a defect is detected during manufacturing. However, if not used, the rows and columns are not removed from the memory module 102, but can be treated as spares. The spare rows and columns of memory 106 may provide backup to defective or error-prone rows and columns of the main memory array 104. For example, when a row in the memory array 104 is detected as defective, the row's contents may be written into a spare row 106. Afterwards, accesses to the defective row are diverted to the spare row including reads, writes, and refreshes. Accordingly, the defective row need not be error corrected, and the memory module 102 need not be replaced.
The memory module 102 may also comprise a register 108, which may comprise an address space 110, a row/column indicator 112, and a validity indicator 114. In at least one example, the register 108 is created for the memory module 102. The address space 110 may be used to contain addresses of defective or error-prone locations in the memory array 104 in at least one example. The validity indicator 114 may comprise a flag or a bit that indicates if the address in the address space 110 is valid. For example, the flag or bit may be marked or set to 1 if the address contained in the address space 110 is a valid reference to a location in the memory array 104. The flag or bit may be cleared or set to 0 if the address contained in the address space 110 is not a valid reference to a location in the memory array 104. Similarly, the row/column indicator may be a flag, bit, or set of bits that indicate if the address in address space 110 refers to a row or column.
The memory module 102 may also comprise row selection logic 116 and column selection logic 118. In at least one example, row selection logic 116 selects the spare row to be activated in place of the defective row if one or more conditions are met. The conditions may include: a received address from the address bus equals the value in the address space 110 of the register, the row/column indicator indicates row, the validity indicator indicates a valid register value in the address space 110, and an activate state is commanded for the memory array.
Similarly, column selection logic 118 may select the spare column to read from or written to in place of a defective column if one or more conditions are met. The conditions may include: a received address from the address bus equals the value in the address space 110 of the register, the row/column indicator indicates column, the validity indicator indicates a valid register value in the address space 110, and a read/write state is commanded for the memory array.
At 208, a spare row may be selected to be activated in place of the defective row if one or more conditions are met. The conditions may include: the received address from the address bus equals the value in the address space of the register, the row/column indicator indicates row, the validity indicator indicates a valid register value in the address space, and an activate state is commanded for the memory array. Similarly, a spare column may be selected to be read from or written to in place of a defective column if one or more conditions are met. The conditions may include: a received address from the address bus equals the value in the address space of the register, the row/column indicator indicates column, the validity indicator indicates a valid register value in the address space, and a read/write state is commanded for the memory array.
In at least one example, the method 200 further comprises writing the contents of the failed row or column of the memory array into the selected spare row or column. Subsequent reads or writes may be directed to the spare row or column instead of the defective row or column. Also, an inventory of rows and columns of memory not in the memory array may be maintained to allow multiple rows and columns of defective memory to be replaced by spare rows and columns.
Row selection logic 308 may be a logical AND in at least one example. In other examples, other circuit logic may be used depending on the combination of conditions desired for selecting spare rows. In at least one example, row selection logic 308 selects the spare row to be activated in place of the defective row if one or more conditions are met. The conditions may include: a received address from the address bus 304 equals the value in the address space of the register 302 as calculated by comparison logic 306, the row/column indicator indicates row, the validity indicator indicates a valid register value in the address space, and an activate state is commanded for the memory array.
Similarly, column selection logic 310 may be a logical AND in at least one example. In other examples, other circuit logic may be used depending on the combination of conditions desired for selecting spare columns. In at least one example, column selection logic 310 selects the spare column to be read from or written to in place of the defective column if one or more conditions are met. The conditions may include: a received address from the address bus 304 equals the value in the address space of the register 302 as calculated by comparison logic 306, the row/column indicator indicates column, the validity indicator indicates a valid register value in the address space, and a read/write state is commanded for the memory array.
The DIMM 402 may also comprise spare rows and columns of memory 406. In at least one example, these rows and columns 406 may be provided by the manufacturer for test purposes, and may be mapped into the DRAM array 404 by the manufacturer via fusible links if a defect is detected during manufacturing. However, if not so used, the rows and columns are not removed from the DIMM 402, but can be treated as spares. The spare rows and columns of memory 406 may provide backup to defective or error-prone rows and columns of the DRAM array 404. For example, when a row in the DRAM array 404 is detected as defective, the row's contents may be written into a spare row 406. Afterwards, accesses to the defective row are diverted to the spare row including reads, writes, and refreshes. Accordingly, the defective row need not be error corrected, and the DIMM 402 need not be replaced.
The DIMM 402 may also comprise a register 408, which may comprise an address space 410, a row/column indicator 412, and a validity indicator 414. In at least one example, the register 408 is created for the DIMM 402. The address space 410 may be used to contain addresses of defective or error-prone locations in the DRAM array 404 in at least one example. The validity indicator 414 may comprise a flag or a bit that indicates if the address in the address space 410 is valid. For example, the flag or bit may be marked or set to 1 if the address contained in the address space 410 is a valid reference to a location in the DRAM array 404. The flag or bit may be cleared or set to 0 if the address contained in the address space 410 is not a valid reference to a location in the memory array 404. Similarly, the row/column indicator may be a flag, bit, or set of bits that indicate if the address in address space 410 refers to a row or column.
The DIMM 402 may also comprise row selection logic 416 and column selection logic 418. In at least one example, row selection logic 416 selects the spare row to be activated in place of the defective row if one or more conditions are met. The conditions may include: a received address from the address bus equals the value in the address space 410 of the register, the row/column indicator 412 indicates row, the validity indicator 414 indicates a valid register value in the address space 410, and an activate state is commanded for the memory array.
Similarly, column selection logic 418 may select the spare column to read from or written to in place of a defective column if one or more conditions are met. The conditions may include: a received address from the address bus equals the value in the address space 410 of the register, the row/column indicator 412 indicates column, the validity indicator 414 indicates a valid register value in the address space 410, and a read/write state is commanded for the memory array.
The above discussion is meant to be illustrative of the principles and various embodiments of the present invention. Numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. It is intended that the following claims be interpreted to embrace all such variations and modifications.
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/US2012/037009 | 5/9/2012 | WO | 00 | 10/23/2014 |