Newer memories, such as double data ram version 4 (DDR4) include so-called post-package repair (PPR) capabilities. PPR capabilities enable a compatible memory controller to remap accesses from a faulty row of a memory module to a spare row of the memory module that is not faulty.
The following detailed description references the drawings, wherein:
Computing devices include various types of synchronous dynamic random access memory (SDRAM), such as double data rate (DDR) SDRAM. As the capacity of DDR SDRAM included in computing devices has grown, so too has the failure rate of DDR SDRAM modules. DDR SDRAM modules are referred to as DIMMs (Dynamic Inline Memory Modules).
Each DIMM comprises at least one memory chip. Each memory chip comprises rows and columns of dynamic RAM cells. A memory controller, which is coupled to a processor, such as a CPU, and/or GPU, issues memory transfer requests to read or write data to or from a particular address of a DIMM. The memory controller may also issue other non-data transfer commands to a DIMM, such as PPR commands.
When processing a memory transfer request associated with a particular address, the memory controller determines a DIMM that is associated with the address. The Memory controller also determines as well as a column address, and a row address of the DIMM that are associated with the address. To read or write data at the designated row and column, the memory controller applies an address signal to indicate a designated row and column of the DIMM to access.
DIMMs may have faulty rows, columns, chips, banks, or even for entire DIMMs to be faulty. Some of the faults may be transient (temporary) while other faults may be permanent. To address transient and non-transient memory failures, DDR4 DIMMs include so-called “post-package repair” (PPR) capability. Based on ECC data within a word, a memory controller may detect permanent or transient errors. PPR allows a compatible memory controller to remap the faulty row to a spare row.
The DDR4 standard defines two types of PPR remapping capabilities, referred to as “hard-PPR” and “soft-PPR.” Hard-PPR permanently remaps accesses from a designated faulty row to a designated spare row. A Hard-PPR row remapping survives power cycles. Soft-PPR remapping temporarily maps accesses from a faulty row to a designated spare row. A Soft-PPR row remapping will survive a “warm” reboot, but does not survive a power cycle.
Some techniques of this disclosure enable a memory controller to perform fault injection and testing of memory modules using hard- and/or soft-PPR capabilities of DRAM modules. A memory controller configured according to this disclosure may use PPR to remap memory transfer requests from a first row of a memory module to a designated spare row that is configured to have a particular memory failure pattern.
To ensure that the memory controller appropriately detects, and responds to failures, the memory controller may read from the spare row having the failure pattern. Based on how the memory controller reacts to the failure pattern, a processor or other testing hardware may validate that memory controller's error correction, and PPR capabilities work as intended. For example, a test system that includes a processor may compare a memory controller's execution in response to at least one failure pattern to previously-generated model test execution patterns for the same memory failure patterns. The test system may validate the memory controller's fault handling capability based on whether or not the memory controller's execution matches the previously-determined execution for the at least one failure pattern.
By using PPR-based fault injection as described herein, the techniques of this disclosure achieve several improvements. The techniques of this disclosure use existing PPR technology, which is already built-in to some DRAM modules. The techniques of this disclosure thus requiring minimal modification of memory modules. Some previous techniques for detecting memory errors modified the memory controller specifically for performing testing. Such modifications introduced greater potential for memory controller malfunction. Additionally, such modifications had to be designed specifically for each hardware vendor's chipset. The techniques of this disclosure work with any PPR-compatible memory controller regardless of the underlying memory controller architecture, thereby reducing complexity.
Some techniques for performing fault injection and memory controller validation used known-failing memory modules. Such failing memory modules had a single failed address, so a test system could not validate a memory controller's response to failures across a large address range. Additionally, such failing memory modules could act non-deterministically and unreliably. The techniques of this disclose enable a test system to validate a memory controller's response to memory failures over a broad (or even the entire) memory address range.
Additionally, because techniques did not allow a memory controller to inject a particular failure pattern into a row, these techniques could not provide that errors will be correctable or uncorrectable. The techniques of this disclosure also enable a computing device to inject a particular failure pattern. By enabling a memory controller to inject a particular failure pattern into a spare row, a computing system may test a memory controller's response to both correctable and uncorrectable errors while also maintaining deterministic memory module behavior.
Computing system 100 also includes system memory 106. Memory controller 104 and system memory 106 may be coupled with a memory bus 108. Memory bus 108 may comprise a data and/or memory bus. System memory 106 may comprise one or more memory modules, such as memory module 112A-112N (“memory modules 112”). Memory modules 112 may comprise DDR4 modules or any other type of memory module that includes PPR capability.
Each of memory modules 112 includes a plurality of rows. For example, memory module 112A includes rows 114A-114N (“rows 114”). In addition to rows 114, memory module 112A includes a spare row 116. Spare row 116 is illustrated as a single row for the purpose of example, and may comprise a plurality of spare rows in various examples.
Spare row 116 may include a memory failure pattern 118 in various examples. A memory failure pattern may comprise one or more “stuck-at faults.” Stuck-at faults as described herein are bits that have a fixed value, and do not change if written-to. For example, memory failure pattern may comprise a data word that includes one or more stuck-at 1's or stuck-at 0's. A stuck-at 1 value does not change from a one to a zero even if a zero is written to that bit. A stuck-at 0 value does not change from a zero to a one even if a one is written to that bit.
According to the techniques of this disclosure, memory controller 104 may be configured to use either soft- or hard-post PPR to remap a first row of one of rows 114 to spare row 116, having a particular memory failure pattern 118. By remapping one of rows 114 to row 116 having memory failure pattern 118, computing system 100 may test and/or validate the behavior of memory controller 104 in response to memory failure pattern 118.
In the example of
In the example of
In the example of
To remap row 114A to spare row 116, memory controller 104 issues at least one command to PPR control register 204. PPR control register 204 is a register within memory module 112A. PPR control register 204 controls the PPR remapping functionality of memory module 112A. PPR module 204 receives a command indicating a row that is to be remapped (e.g., row 114A), and/or data indicating the spare replacement row (spare row 116 in this example) that replaces the row to be remapped. Responsive to PPR control register 204 receiving a PPR remapping command, memory module 112A remaps accesses to row 114A to spare row 116.
Responsive to remapping row 114A to spare row 116, a processor, such as CPU 102, issues transfer requests to memory controller 104 to determine how memory controller 104 responds to various failure patterns. As an example, CPU 102 may issue transfer requests for memory address x, which has been remapped to be associated with spare row 116. The transfer request may cause memory controller 104 to write a particular value to spare row 116. However, as indicated above, spare row 116 includes failure pattern 202, which includes a number of stuck-at bits. Due to the stuck-at bits of failure pattern 202, during a write request, memory controller 104 is unable to change the values of the stuck-at bits of failure pattern 202.
Memory controller 104 and memory module 112A may include error correcting code (ECC) capability in some examples. For each word of data stored in memory module 112A, memory module 112A also includes additional bits used to store ECC data for that word. Memory controller 104 calculates the values of the ECC bits for each word during a write operation. Memory controller 104 uses the ECC bits to verify correctness of the data word during a read operation.
To validate memory controller 104, CPU 102 issues a memory transfer request at address x, which causes memory controller 104 to read from spare row 116. During a read, memory controller 104 may determine whether a correctable or an uncorrectable error is present based on the data read from spare row 116, as well as the additional ECC bits. Memory controller 104 records the occurrence of single-bit (correctable) or multiple-bit (uncorrectable) errors. If memory controller 104 detects a correctable error, memory controller 104 corrects the error.
CPU 102 may generate memory reads and writes patterns that are known to differ relative to memory failure pattern 118. As an example, CPU 102 may generate memory reads and writes that differ from memory failure pattern 118 by a single bit to test whether the ECC functionality of memory controller 104 properly corrects these one-bit errors. Similarly, memory controller 104 may generate errors that are known not to be correctable to ensure that memory controller 104 does not attempt to correct such errors, and to test whether memory controller 104 detects such errors as being uncorrectable.
CPU 102 or another processor may also issue transfer requests to spare row 116 to test the PPR functionality of memory controller 104. As an example, CPU 102 or another processor may issue a transfer request at address x corresponding to failure row 116. CPU 102 may issue the transfer requests in such a way so as to cause memory controller 104 to determine that spare row 116 has failed.
For example, CPU 102 may configure failure pattern 202 to be uncorrectable by setting a failure pattern and issuing a write request that varies by more than one bit relative to the failure pattern. CPU 102 may then issue multiple read requests to spare row 116 so as to cause memory controller 104 to identify repeated uncorrectable read failures. Memory controller 104 may determine that spare row 116 has failed once a threshold number of uncorrectable transfer operations have occurred in some examples.
Based on the determination that spare row 116 has failed, memory controller 104 may issue at least one command to PPR control register 204 to remap spare row 116, e.g. to another spare row using either hard- or soft-PPR functionality. In some examples, memory controller 104 may decide whether to use hard-PPR or soft-PPR row remapping to correct memory failure patterns based on the number of failed memory transfers, and/or the type (e.g., read or write) transfers, and whether the memory transfer errors were correctable.
To change the failure pattern, memory controller 104 may transmit a command to PPR control register 204. The command may indicate that memory controller 204 is supplying a new fault pattern to PPR control register 204. In the example of
By signaling PPR control register 204, the techniques of this disclosure enable a processor to test and validate the response of memory controller 104 to a particular failure pattern against a predetermined response. For example, system 100 may set failure pattern 118 to a particular failure pattern for which system 100 has previously determined response data for that failure pattern. CPU 102 may compare the response of memory controller 104 to the failure pattern with the predetermined response data to determine whether or not memory controller 104 is functioning properly.
In
In some examples, CPU 102 may cause memory controller 104 to change the address associated with spare row 116 from a first address to a second, different address. In some examples, CPU 102 may cause memory controller to associate spare row 116 associated with an address range (e.g. a starting and ending address range) or a plurality of address ranges. The address range(s) may be indicated by a command to PPR register 204.
Method 500 may start at block 502 and continue to block 504, where the system may map an address associated with a first memory row of a computing device to a spare memory row of the computing device. The spare memory row may have a memory failure pattern. At block 506, the system may read (e.g., via memory controller 104) data from the spare memory row. Method 500 may eventually continue to block 508, where method 500 may stop.
Method 600 may start at block 602 and continue to block 604, where the system may map an address associated with a first memory row of a computing device to a spare memory row of the computing device. The spare memory row may have a memory failure pattern. At block 606, the system may read (e.g., via memory controller 104) data from the spare memory row.
At block 608, in some examples, memory controller 104 may generate a write request to an address associated with the row having the memory failure pattern before reading the data from the spare memory. At block 610, memory controller 104 may change at least one bit of the memory failure pattern.
At block 612, in some examples, CPU 102 may determine a response of memory controller 104 to memory failure pattern 118, and at block 614, may compare the response of memory controller 104 to predetermined response to memory failure pattern 118.
At block 616, memory controller 104 may change at least one bit of memory failure pattern 118. At block 618, memory controller 104 may map spare row 116 to a second address. Method 600 may eventually continue to block 618, where method 600 may stop.
Processor 710 may be one or more central processing units (CPUs), microprocessors, and/or other hardware devices suitable for retrieval and execution of instructions stored in machine-readable storage medium 720. In the particular example shown in
Machine-readable storage medium 720 may be any electronic, magnetic, optical, or other physical storage device that stores executable instructions. Thus, machine-readable storage medium 720 may be, for example, Random Access Memory (RAM), an Electrically-Erasable Programmable Read-Only Memory (EEPROM), a storage drive, an optical disc, and the like. Machine-readable storage medium 720 may be disposed within system 700, as shown in
Referring to
Memory module 804 includes a row 806 and a spare row 810. Spare row 810 includes a memory failure pattern 812. In the example of
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/US2015/045683 | 8/18/2015 | WO | 00 |
Publishing Document | Publishing Date | Country | Kind |
---|---|---|---|
WO2017/030564 | 2/23/2017 | WO | A |
Number | Name | Date | Kind |
---|---|---|---|
4296494 | Ishikawa et al. | Oct 1981 | A |
4939694 | Eaton et al. | Jul 1990 | A |
5469390 | Sasaki et al. | Nov 1995 | A |
5640236 | Acosta et al. | Jun 1997 | A |
5936970 | Lee | Aug 1999 | A |
6018482 | Fujita | Jan 2000 | A |
6141267 | Kirihata et al. | Oct 2000 | A |
6154851 | Sher et al. | Nov 2000 | A |
6282689 | Seyyedy | Aug 2001 | B1 |
6704228 | Jang et al. | Mar 2004 | B2 |
7263019 | Nierle et al. | Aug 2007 | B2 |
7441060 | Gower et al. | Oct 2008 | B2 |
7839707 | Aakjer | Nov 2010 | B2 |
7948818 | Wu et al. | May 2011 | B1 |
7996710 | Nagaraj et al. | Aug 2011 | B2 |
8509014 | Shvydun et al. | Aug 2013 | B2 |
8601330 | Jeong et al. | Dec 2013 | B2 |
8670283 | Ong et al. | Mar 2014 | B2 |
8861277 | Rategh et al. | Oct 2014 | B1 |
8885426 | Burstein et al. | Nov 2014 | B1 |
9087615 | Cordero et al. | Jul 2015 | B2 |
9165679 | Oh et al. | Oct 2015 | B2 |
9349491 | Morgan | May 2016 | B1 |
9558851 | Wilson | Jan 2017 | B2 |
20040015754 | Callaway | Jan 2004 | A1 |
20040246774 | Van Brocklin et al. | Dec 2004 | A1 |
20050028038 | Pomaranski et al. | Feb 2005 | A1 |
20060036921 | Callaway et al. | Feb 2006 | A1 |
20060064618 | Wu et al. | Mar 2006 | A1 |
20070058470 | Nierle et al. | Mar 2007 | A1 |
20070133323 | Kim et al. | Jun 2007 | A1 |
20080304347 | Kenkare et al. | Dec 2008 | A1 |
20090190422 | Khoja et al. | Jul 2009 | A1 |
20090217093 | Co | Aug 2009 | A1 |
20110228614 | Shaeffer et al. | Sep 2011 | A1 |
20110280091 | Rooney et al. | Nov 2011 | A1 |
20110296258 | Schechter et al. | Dec 2011 | A1 |
20120030509 | Wood et al. | Feb 2012 | A1 |
20120266016 | Huang | Oct 2012 | A1 |
20130010557 | Rooney et al. | Jan 2013 | A1 |
20130021859 | Shvydun et al. | Jan 2013 | A1 |
20130070547 | Pyeon | Mar 2013 | A1 |
20130176768 | Wang | Jul 2013 | A1 |
20130223171 | Kim et al. | Aug 2013 | A1 |
20140003173 | Ku | Jan 2014 | A1 |
20140078842 | Oh et al. | Mar 2014 | A1 |
20160350191 | Chen | Dec 2016 | A1 |
Entry |
---|
Intel® 6400/6402 Advanced Memory Buffer, Datasheet, Oct. 2006, 250 pages. |
International Search Report and Written Opinion of the International Searching Authority dated Jun. 28, 2016; International Application No. PCT/US2015/045683; 9 pages. |
International Search Report and Written Opinion, dated Jan. 27, 2015, PCT/US2014/039622 , 11 Pages. |
Jae-Kyung Wee, “Antifuse Circuits and Their Applications to Post-Package of DRAMs”, Journal of Semiconductor Technology and Science, vol. 1. No. 4, Dec. 2001, 16 pages. |
Wada, O. et al., Post-packaging Auto Repair Techniques for Fast Row Cycle Embedded DRAM, (Research Paper), Jul. 16, 2004, 8 Pages. |
Yung-Fa Chou et al, Reactivation of Spares for off-Chip Memory Repair After Die Stacking in a 3-D IC With TSVs, In: IEEE Transactions on Circuits and Systems-I: Sep. 9, 2019, pp. 2343-2351. |
Lu et al., “Efficient Built-in Redundancy Analysis for Embedded Memories with 2-D Redundancy”, (Research Paper), May 10, 2005, 5 pages. |
Number | Date | Country | |
---|---|---|---|
20180247699 A1 | Aug 2018 | US |