WO2023106434A1 - Dram assist error correction method using ddr sdram interface - Google Patents

Dram assist error correction method using ddr sdram interface Download PDF

Info

Publication number
WO2023106434A1
WO2023106434A1 PCT/KR2021/018371 KR2021018371W WO2023106434A1 WO 2023106434 A1 WO2023106434 A1 WO 2023106434A1 KR 2021018371 W KR2021018371 W KR 2021018371W WO 2023106434 A1 WO2023106434 A1 WO 2023106434A1
Authority
WO
WIPO (PCT)
Prior art keywords
dram
error
memory
memory controller
errors
Prior art date
Application number
PCT/KR2021/018371
Other languages
French (fr)
Korean (ko)
Inventor
변경수
Original Assignee
주식회사 딥아이
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 딥아이 filed Critical 주식회사 딥아이
Publication of WO2023106434A1 publication Critical patent/WO2023106434A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/409Read-write [R-W] circuits 
    • G11C11/4096Input/output [I/O] data management or control circuits, e.g. reading or writing circuits, I/O drivers or bit-line switches 
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check

Definitions

  • One or more aspects of embodiments in accordance with the present invention relate to methods and mechanisms for memory error correction.
  • Double data rate synchronous dynamic random-access memory is a type of memory integrated circuit (IC) used in computers.
  • DDR SDRAM can achieve a faster transfer rate by using timing control of electrical data and clock signals, and can transmit data at both the rising edge and falling edge of the clock signal, Doing so effectively doubles the data bus bandwidth compared to an SDR SDRAM (single data rate synchronous dynamic random-access memory) interface using the same clock frequency, and in doing so achieves approximately double the bandwidth. .
  • DRAM of various generations may use error-correcting code (ECC) memory during data storage to both detect and sometimes correct common types of data errors.
  • ECC memory is immune to single bit errors through the use of parity checking.
  • a parity check is an extra parity bit indicating the (odd or even) parity of data (eg, 1-byte data) stored in a memory (eg, a parity device or ECC chip in a DRAM module). , and independently calculating parity, and comparing the calculated parity with the stored parity to detect whether a data error/memory error has occurred.
  • DRAM dual in-line memory module
  • ECC Error Correction Code
  • the present invention is to solve the above-described technical problem, the present invention can provide a DRAM support error correction mechanism for a DDR SDRAM interface.
  • aspects of embodiments of the present disclosure relate to a new DDR interface that uses ECC in DRAM to correct errors.
  • Embodiments of the present invention provide an architecture capable of providing the same basic chipkill RAS features as provided by DDR4, reduced ECC chip overhead (i.e. one ECC chip per memory channel), reduced internal prefetch It is possible to provide these features while making reduced changes in size and the DDR interface to the interface corresponding to DDR4.
  • FIG. 1 is a block diagram illustrating an error correction mechanism for a DDR interface according to an embodiment of the present invention.
  • FIG. 2 is a block diagram illustrating an error correction mechanism for a DDR interface according to another embodiment of the present invention.
  • FIG. 3 is a block diagram illustrating an error correction mechanism for a DDR interface according to another embodiment of the present invention.
  • FIG. 4 is a block diagram illustrating an error correction mechanism for a DDR interface according to another embodiment of the present invention.
  • FIG. 5 is a block diagram illustrating an error correction mechanism for a DDR interface according to another embodiment of the present invention.
  • FIG. 6 is a block diagram illustrating an error correction mechanism for a DDR interface according to another embodiment of the present invention.
  • FIG. 7A and 7B are flow charts illustrating error detection, error type determination, and error handling using a DRAM assist error correction code (DAECC) mechanism in accordance with one or more embodiments of the present invention.
  • DECC DRAM assist error correction code
  • first,” “second,” “third,” and the like may be used herein to describe various components, components, regions, layers, and/or sections, such components , components, regions, layers and/or sections will be understood not to be limited by these terms. These terms are used to distinguish one element, component, region, layer or section from another element, component, region, layer or section. Thus, a first component, component, region, layer or section described below could be described as a second component, component, region, layer or section without departing from the spirit and scope of the present invention.
  • the x-axis, y-axis, and z-axis are not limited to the three axes of the Cartesian coordinate system and can be interpreted in a broad sense.
  • the x-axis, y-axis, and z-axis may be orthogonal to each other, or may represent other directions that are not orthogonal to each other.
  • the terms “approximately”, “about” and similar terms are used as terms of approximation, not terms of degree. It is intended to account for inherent variations in measured or calculated values identified by those skilled in the art. Also, the use of “may” when describing embodiments of the present invention means “one or more embodiments of the present invention”. As used herein, the terms “use”, “used”, and “used” may be considered synonyms for the terms “use”, “used”, and “used”, respectively. Also, the term “exemplary” means an example or illustration.
  • Electronic or electrical devices may be any suitable hardware, firmware (eg, Application Specific Integrated Circuit (ASIC)), software, or may be implemented using a combination of software, firmware, and hardware.
  • ASIC Application Specific Integrated Circuit
  • the various elements of these devices may be formed as one Integrated Circuit (IC) chip or as separate IC chips.
  • various elements of these devices may be implemented on a flexible printed circuit film (Flexible Printed Circuit Film), a Tape Carrier Package (TCP), a Printed Circuit Board (PCB), or formed on a single substrate.
  • IC Integrated Circuit
  • PCB Printed Circuit Board
  • the various elements of these devices may be processes or threads running on one or more computing devices or on one or more processors that execute computer program instructions and interact with other system elements to perform the various functions described herein.
  • Computer program instructions are stored in memory implemented in a computing device using standard memory devices, such as, for example, random access memory (RAM).
  • Computer program instructions may also be stored on other non-transitory computer readable media such as, for example, a CD-ROM, flash drive, or the like.
  • RAM random access memory
  • Computer program instructions may also be stored on other non-transitory computer readable media such as, for example, a CD-ROM, flash drive, or the like.
  • those skilled in the art will understand that the functions of various computing devices may be integrated or integrated into one computing device, and the functions of a specific computing device may be implemented in one or more other computing devices without departing from the spirit and scope of the exemplary embodiments of the present invention. It should be recognized that it can be dispersed in the field.
  • Embodiments of the present invention described below in relation to FIGS. 1 to 3 may provide a basic chip kill. Despite lacking the same coverage as DDR4's mechanism, the new DDR interface can provide a single die/chip correction despite including only one ECC chip per memory channel. Additionally, mechanisms described below may use ECC information provided from an ECC chip to identify a case in which a data chip has failed.
  • FIG. 1 is a block diagram illustrating an error correction mechanism for a DDR interface according to an embodiment of the present invention.
  • the present invention can use 16 bursts per memory transaction and use in-DRAM ECC (ECC) in a dynamic random-access memory module (DRAM) to protect the data of one data chip in multiple bursts. there is.
  • ECC ECC
  • DRAM dynamic random-access memory module
  • Embodiments of the invention may also be used to protect data from multiple chips in one or more bursts by allowing the memory controller to read information in ECC in DRAM when the ECC in DRAM determines that a system ECC error has occurred. Make the DIMM use system/memory controller ECC.
  • the system 100 includes a memory controller 110 including a DRAM assist error correction code engine (DAECC) engine 120 stored therein.
  • the memory controller 110 may transmit data to various chips 140a and 140b of a DDR DIMM/DRAM (double data rate synchronous dynamic random-access memory dual in-line memory module, 160), and the various chips 140a and 140b Data can be transmitted from In Figure 1, one memory channel 150 of a DRAM 160 (or DRAM module) is shown.
  • the memory controller 110 performs memory processes 130 for exchanging “normal” data 170 with the DRAM 160 through normal read and write processes.
  • each chip 140a, 140b of the DRAM 160 provides 4-bit information through 4 pins of the chip.
  • Each memory channel 150 of DRAM 160 includes eight 4-bit data chips (e.g., eight data devices, 140a) for receiving, storing, and transmitting data.
  • the DRAM 160 uses one 4-bit ECC chip per memory channel 150 to transmit ECC data to the memory controller 110. (eg, one parity device or parity chip, 140b).
  • the DRAM 160 of an embodiment of the present invention can provide in-system error correction and basic chip kill capabilities, which will be further described below. will be.
  • DRAM 160 performs memory processing(s) 130 with memory controller 110 using bursts, whereby otherwise normally required to transfer each portion of data in a separate process. DRAM 160 repeatedly transmits data while omitting other steps to be performed. Thus, DRAM 160 can transfer data faster than it can transfer without bursting, even for limited periods only under certain conditions.
  • DRAM 160 includes a burst length of 16, which is double the burst length of DIMMs used such as DDR4, which have a burst length of 8. That is, to compensate for the fact that each of the two memory channels 150 contains only half of the data width of the memory channel being used like DDR4, DRAM 160 has 4 Twice the number of bursts of data stored in each of the bit chips 140a and 140b may be internally prefetched.
  • the data width is 32 bits per memory channel 150
  • ECC The width is 4 bits per memory channel 150. This corresponds to a total of 576 bits per memory process 130 per channel (i.e., 36 bits per burst multiplied by 16 bursts per memory process 130), the total data block is 512 bits, and the remaining 64 bits are memory This corresponds to ECC data of the ECC chip 140b of the channel 150.
  • the system 100 of an embodiment of the present invention can achieve error correction within the DRAM 160 without the assistance of the memory controller 110 .
  • ECC in DRAM of DRAM 160 allows data in multiple data chips 140a to be protected within one or more bursts, whereas memory controller-assisted error correction allows data to be protected within multiple bursts.
  • internal error correction is performed without communication with the memory controller 110.
  • system 100 operates in combination with performing error correction on memory controller 110 and DRAM 160 may be used.
  • ECC in DRAM is internal to the chip.
  • One bit error can be corrected using ECC bits generated internally in .
  • Embodiments of the present invention do not provide any changes to memory applications beyond those in DDR4, and do not provide a different interface between DRAM 160 and memory controller 110.
  • error recovery information is not included in the normal data transfer 170 and is not communicated to the memory controller 110. Therefore, correction of errors by ECC chip 140b will not affect the speed or performance of memory processing 130 with memory controller 110 .
  • memory controller 110 detects an error in the data (e.g., DRAM 160 indicates the existence of an error to memory controller 110), only then does memory controller 110 attempt to correct the error. It will issue some command to DRAM 160. That is, only when a system/memory controller ECC error occurs, the memory controller 110 will send a specific command to the DIMM and receive information included in the ECC information output 180 in DRAM from the DRAM 160 . After that, the memory controller 110 will determine which of the eight data chips 140a of the corresponding memory channel 150 is the cause of the detected error. A method used by the memory controller 110 to locate a failed data chip will be described below with reference to FIGS. 7A and 7B.
  • FIG. 2 is a block diagram illustrating an error correction mechanism for a DDR interface according to another embodiment of the present invention. Similar to the error correction mechanism of the foregoing embodiment, the embodiment of the present invention performs 16 bursts per memory process.
  • the memory controller 210 includes a DAECC engine 220 stored therein, and each memory channel 250 of the DRAM 260 includes eight data chips 240a and one for general data exchange 270. of the ECC chip 240b.
  • the DRAM 260 notifies the memory controller 210 of an ECC error by sending a 1-bit ECC flag to the memory controller 210 through an additional pin.
  • system 200 of an embodiment of the present invention is similar to system 100 of an embodiment described with reference to FIG. 1 .
  • the DRAM/DDR DIMM 260 according to an embodiment of the present invention implements an additional pin 290 so that the DRAM 260 can easily transfer ECC information to the memory controller 210 .
  • the DRAM 260 can send an ALERT consisting of one 1-bit ECC flag. Uncorrectable errors in 260 are always exposed to the memory controller 210 immediately. Accordingly, when an error occurs, information is provided to the memory controller 210 from the ECC chip 240b in the DRAM among the chips 240a and 240b.
  • the pin 290 of the ECC chip 240b transmits 1 bit to inform the memory controller 210 that an error has occurred. It will be used to set the ECC flag.
  • memory controller 210 Upon sensing the 1-bit ECC flag via pin 290, memory controller 210 will issue a specific command to obtain more detailed information from DRAM 260 related to the error.
  • the memory controller 210 may obtain information from the DRAM 260 using the ECC information output 280 in the DRAM in a manner similar to the system 100 of the embodiment described with reference to FIG. 1 .
  • the DDR interface between the DRAM 260 and the memory controller 210 may be changed from DDR4.
  • the 1-bit ECC flag is sent over pin 290 along with the other 576 data bits, performance is not adversely affected and therefore the time per memory process 230 is not increased.
  • FIG. 3 is a block diagram illustrating an error correction mechanism for a DDR interface according to another embodiment of the present invention.
  • the embodiment of the present invention has a memory controller (with a DAECC engine 320 stored therein) 310), and each memory channel 350 of the DRAM 360 includes eight data chips 340a and one ECC chip 340b for general data 370 exchange.
  • each memory process 330 of system 300 of an embodiment of the present invention includes an additional burst contributing to a total burst length of 17 bursts.
  • the ECC information determined during in-DRAM error correction is transferred from DRAM/DDR DIMM 360 to memory controller 310 at in-DRAM ECC information output 380.
  • memory controller 310 may identify ECC information in DRAM at each memory process 330 at the cost of reduced performance associated with an additional burst for each memory process 330 .
  • the memory controller 110 outputs information of ECC information in the DRAM ( Unlike the system 100 of the embodiment of FIG. 1 performing 180), the memory controller 310 of the embodiment of the present invention outputs ECC information 380 in DRAM in every memory process 330 through an additional 17th burst. carry out Additionally, memory controller 310 will always perform the same operations to correct errors as performed by ECC in DRAM at the system level (eg, in DRAM 360 ).
  • the DAECC mechanism can be used for the new narrow DDR interface using 4-bit DRAM chips
  • the DRAM mechanism can be used for other narrow DDR interfaces using the new DDR interface if intra-DRAM ECC is performed inside the DRAM chip. It can be used with DRAM architectures, or in a DDR4-like interface.
  • FIG. 4 shows that the DAECC engine 420 can be used in conjunction with the new narrow DDR interface with 8-bit DRAM chips 440a and 440b.
  • each channel 450 includes four 8-bit DRAM chips 440a for storing data and one 8-bit DRAM chip 440b for storing system ECC. Therefore, the system ECC overhead of the embodiment of the present invention is 1/4 or 25%.
  • FIG. 5 shows that a DAECC engine can be used for a DDR interface with 4-bit DRAM chips 540a and 540b.
  • each channel 550 includes sixteen 4-bit DRAM chips 540a for storing data and one 4-bit DRAM chip 540b for storing system ECC. Therefore, in this embodiment, the system ECC overhead is 1/16 or 625%, half of the current ECC overhead of the DDR4 standard.
  • FIG. 6 shows that a DAECC engine can be used in a DDR4 interface with 8-bit DRAM chips 640a and 640b.
  • each channel 650 includes eight 8-bit DRAM chips 640a to store data and one 8-bit DRAM chip 640b to store system ECC. Therefore, the system ECC overhead is 1/8 or 125%.
  • the DAECC of the above embodiments uses ECC information in DRAM to use an additional ECC DRAM chip and to provide basic chipkill coverage for a memory system with any kind of structure. This is a general mechanism for
  • FIG. 7A and 7B are flow charts illustrating error detection, error type determination, and error handling using a DRAM assist error correction code (DAECC) mechanism in accordance with one or more embodiments of the present invention.
  • DECC DRAM assist error correction code
  • the memory controller may attempt to determine an error pattern. Depending on the error pattern, the memory controller may determine whether the error corresponds to a random error (non-permanent error), a permanent error, or a chipkill error. Depending on the determination of the type of error, the system may perform error correction.
  • a chipkill error generally corresponds to the permanent failure of one chip/die or chip that exceeds a threshold of bit errors.
  • a failure of one 4-bit data chip in a memory channel can cause a large number of 4-bit corresponding data chips to provide erroneous data in a large number of bursts during memory processing (e.g., corresponding data chips a large number of errors within 4-bit symbols)
  • embodiments of the present invention can detect when one chip has failed, and then deactivate that chip while continuing to provide one-chip correction. can do. That is, embodiments of the present invention may group 4 repetitive erroneous bits corresponding to one chip into one symbol, and correspond to a failed/dead/erased chip. A symbol-based mechanism may be used to recover the data to be retrieved.
  • each chip includes four data pins, and each pin outputs one of the four bits stored in the chip.
  • Each pin can be referred to as DQ. If one of the pins of a chip fails (as opposed to failing the entire chip), the data provided from that pin in each of the bursts is potentially erroneous. Thus, a pin failure can be referred to as a DQ error.
  • the described embodiments may use simple parity algorithms interleaved between each chip.
  • the described embodiments may use a redundant array of independent disks (RAID) configuration (eg, a configuration similar to RAID 4).
  • RAID 4 may include a dedicated parity disk and multiple disks (eg, a configuration similar to RAID 4).
  • RAID configuration that uses block-level striping across multiple disks. Disk striping involves dividing a group of data into blocks, and spreading the blocks across two or more storage devices (eg, data chips).
  • the data stored on the ECC chip will correspond to 4 parity bits, each bit from one of the 8 data chips contributes to a different parity bit stored by the ECC chip, and one from the corresponding pin of all the data chips.
  • a bit of s contributes to one of the parity bits (eg, one ECC group of an ECC chip).
  • the host memory controller detects one reoccurring 1-bit error corresponding to one pin using the data and ECC information, the host memory controller will identify the error from the same bit location out of 4 possible bit locations ( That is, the same parity bit of the ECC chip will contain errors that occur in some of the bursts)
  • information from the detected error pattern can be used to determine where the error is (e.g. e.g., which of the 8 data chips contains the pin causing the error)
  • an error is detected.
  • An error may be detected by any of the error detection methods described above with reference to FIGS. 1-3 (e.g., an ECC flag sensed by memory controller 210 via additional pin 290, or memory processing 330). error detected by the memory controller 310 in the ECC information output 380 in the DRAM during the 17th burst of ) and/or system ECC performed by the host memory controller (eg, parity check similar to RAID).
  • error detected by the memory controller 310 in the ECC information output 380 in the DRAM during the 17th burst of and/or system ECC performed by the host memory controller (eg, parity check similar to RAID).
  • step S702 determines that there are some errors from the DRAM/DDR DIMM in step S701, it is determined in step S702 how many bursts have errors. This can be done by running a parity check for each burst of memory processing. Since different types of faults include different error patterns, a threshold value, or reference number, “n” may be used to classify the type of detected error. For example, even if there is an ECC error in the same pin location of the ECC chip, the DQ fault will contain only a 1-bit parity error in all or many of the bursts of memory processing.
  • a chip failure will most likely involve a parity error in all of the bursts or multiple multiple bits (e.g., a 4-bit parity error).
  • a random error may correspond to a small number of errors, and there may be very few wrong bits in a small number of bursts (e.g., one 1-bit error in one burst).
  • the threshold it can be predicted that a DQ failure or chip failure has occurred. However, if the number of detected errors is less than or equal to the threshold value, it can be predicted that one or more random errors have occurred from one or more individual chips, which cannot be corrected by ECC in DRAM and memory for correction. Support from the controller is required.
  • step S702 it can be determined whether the number of bursts with errors in a given memory process exceeds the threshold “n”. Depending on whether the threshold is reached, either step S703 or step S710 proceeds. That is, if a sufficiently large number of bursts are determined to have parity errors (e.g., if the number of bursts with errors in a given memory process exceeds a threshold “n”), then there is a higher chance of a DQ failure or chip failure. high, the system will proceed with the chipkill mechanism.
  • step S701 if the number of bursts with detected error is less than threshold “n” (e.g., 4 bursts or less), then the error detected in step S701 is the result of random failures from the individual chip(s). It is highly likely that These random failures are not correctable by ECC in DRAM, but since the error will most likely not reoccur, the chipkill mechanism is not used.
  • threshold “n” e.g., 4 bursts or less
  • a threshold of four bursts is used as an example, it should be noted that other numbers may be used in other embodiments of the present invention. Moreover, the number can be adjusted in different embodiments (eg corresponding to a particular device). For example, if the corresponding memory device has a relatively high device error rate, and thus multiple random errors occur, the threshold value may be increased.
  • step S703 if it is determined in step S702 that the number of bursts with parity errors is greater than the threshold (eg greater than 4 bursts), the system determines whether one of the 8 data chips is dead or erased. or if there was an error in one or more of the eight data chips.
  • the threshold eg greater than 4 bursts
  • the system may determine at step S709 that a fatal and uncorrectable error has occurred.
  • the number of chips with errors is determined by the memory controller 110, 210, 310 at the ECC information output 180, 280, 380 in DRAM either by using a specific command or during the 17th burst of memory processing 330. can be detected by For example, if a chip dies from a DQ failure, chip failure, bank failure, or row failure, any additional DQ failure or chip failure will cause a catastrophic failure, and the system of an embodiment of the present invention may Since it contains only one ECC chip per channel, it will therefore no longer contain enough resources to perform error correction. Similarly, catastrophic failure occurs if multiple chips contain errors.
  • step S704 proceeds. For example, if no chip has been erased yet, and the detected error corresponds to only one chip, the system can identify the type of failure, and the memory controller can record the type of failure and potentially rectify the error. Additional steps may be taken to correct it.
  • step S704 it may be determined whether the detected errors occur on the same pin. That is, in step S704, the system determines whether a detected error occurs on the same pin for each of the bursts. If all the errors correspond to the same pin, at step S705a, the system in the DRAM may notify the memory controller so that the memory controller may record the failure type of the error as a DQ failure. If the system determines that the detected errors are not all on the same pin, at step S705b, the system in the DRAM can notify the memory controller so that the memory controller can record the failure type as a chip failure.
  • step S706 after the failure type is recorded as either a DQ failure or a chip failure, the memory controller is used to support chipkill detection.
  • the memory controller may start a diagnosis routine to determine how to correct the error. The diagnosis routine will be described later with reference to FIG. 7B.
  • step S706a the memory controller has already read ECC information in DRAM provided from ECC in DRAM in step S703 of FIG. ECC information output (180, 280, or 380) in DRAM of the ECC bits provided by ) Then, in step S706b, the memory controller will maintain all ongoing memory processes. Then, in step S706c, the memory controller stores the current data (e.g., 512 bits corresponding to the current data D[511:0] of eight 4-bit data chips) Then, in step S706d, The memory controller writes inverted data corresponding to current data (eg, 512 bits corresponding to inverted data D′[511:0]) to eight 4-bit data chips. Then, in step S706e, the memory controller outputs and reads data again. Then, in step S706f, the memory controller compares the newly read data with the known inverted data to identify the location(s) of the error(s).
  • the current data e.g., 512 bits corresponding to the current data
  • step S706 the memory controller determines whether all detected errors correspond to one chip in step S707. If only one data chip is erased, or multiple DQ errors are detected, but all multiple DQ errors correspond to the same chip, in step S708, the memory controller will write data back to the remaining, unerased chips. , and all subsequent memory processes will use the parity bits of a simple parity algorithm to recover the data corresponding to the erased chip. For example, upon reading the data, if the memory controller determines that multiple bits corresponding to one of the data chips do not match the corresponding bits of the inverted data written to the data chip in step S706d, the memory controller in step S708 will mark that data chip as erased.
  • the memory controller determines that only one of the bits corresponding to one pin of one of the data chips does not match the corresponding bit of the inverted data written to the data chip in step S706d. Then, in step S708, the memory controller will mark only one pin of one chip as erased.
  • step S709 the memory controller will determine that a fatal and uncorrectable error has occurred. That is, if there are errors in more than one chip, the DRAM will no longer have sufficient resources to perform parity, and there will be no additional chips in reserve, so any additional chip errors will be corrected requiring replacement of the DRAM. It can't be done, it would be a fatal error.
  • step S710 the memory controller by receiving an additional burst from the DRAM. Retry reading data from data chips.
  • step S710 After retrying to read the data in step S710, the memory controller determines whether there is still an error detected in step S711. If no additional error is detected in step S711, in step S712 the memory controller determines that a soft error or a transient error has occurred and correction is no longer required. However, if an additional error is detected in step S711 after the retry of reading data in step S710, it is determined in step S713 whether the error has the same error pattern as the error initially detected in step S701. By determining whether the errors have the same error pattern, the case of inconsistent soft errors (i.e., the case in which the soft error was initially detected in step S701) will be ignored, and any subsequent soft errors in step S710 of the memory controller will be ignored. Detected while retrying to read data from
  • step S713 If the error detected in step S713 does not have the same error pattern as the error initially detected in step S701, the process returns to step S710, and the memory controller retries reading data from the data chips again. Thus, if sequential and unequal soft errors occur, resulting in another error pattern, the memory controller can continue trying to read the data. However, if the error detected in step S713 has the same error pattern as the error initially detected in step S701, it is determined that a hard error (i.e., a non-temporary error) has occurred in step S714.
  • a hard error i.e., a non-temporary error
  • the DRAM corrects the hard error using the memory controller ECC mechanism in step S715. triggers the memory controller to support
  • the memory controller may, for example, support error correction by comparing the current address of the error (eg, chip and pin address) with an error address stored in an error register of one or more chips of the DRAM.
  • the memory controller may also support error correction using ECC information in DRAM. For example, if ECC information in DRAM indicates that only one chip has an ECC error in DRAM that cannot be corrected, the memory controller can use the ECC chip to repair the error.
  • step S716 it is determined whether the memory controller has successfully corrected the hard error. If the error correction is successful, in step S717, the operating system may record the error event, and the memory controller may erase ECC information (eg, chip error register) in DRAM in each chip to another specific command can be issued.
  • ECC information eg, chip error register
  • step S709 the memory controller will determine that a fatal error has occurred in step S709.
  • the operating system may perform system/application level error recovery. For example, an operating system can retire a physical page by relocating the contents of the page to another physical page, and the retired page is a physical page that should not subsequently be allocated by the virtual memory system. can be placed in a list of . As the number of retired physical pages increases (eg, as the number of uncorrectable errors increases), the effective memory capacity of the system decreases.
  • embodiments of the present invention provide an architecture capable of providing the same basic chipkill RAS features as provided by DDR4, with reduced (eg, minimal) ECC chip overhead (ie, one per memory channel). of ECC chip), reduced (e.g., minimum) internal prefetch size (prefetch size is the same size as DRAM internal ECC), and reduced (e.g., It is possible to provide these features with minimal) changes. Additionally, embodiments of the present invention provide 125% storage overhead for the new DDR interface with a narrower channel width than DDR4, support basic chip kill capabilities and system ECC, and support memory controller support error detection mechanisms. do.
  • embodiments of the present invention can provide basic chip kill capability and system ECC despite having only one ECC chip per memory channel.
  • Embodiments of the present invention also provide a mechanism for the memory controller to identify a failed chip with support from the DRAM device, and a mechanism for outputting ECC information in the DRAM (e.g., additional burst length, additional pins, or by using register outputs from DRAM), provide a retry mechanism to identify the type of error (e.g., soft error or hard error), and independent or lock-step memory
  • ECC capabilities are provided using one of the channels and using either SEC-DEC or chipkill ECC.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Databases & Information Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Provided is a method for correcting a memory error of a dynamic random-access memory module (DRAM) by using a double data rate (DDR) interface. The method comprises the steps of: performing a memory transaction including multiple bursts with a memory controller in order to transfer data from data chips of the DRAM to a memory controller; detecting one or more errors using an ECC chip of the DRAM; determining the number of the bursts having the errors, by using the ECC chip of the DRAM; determining whether the number of the bursts having the errors is greater than a threshold number; determining a type of the errors; and providing an instruction to the memory controller on the basis of the determined type of the errors, wherein the DRAM includes one ECC chip per memory channel.

Description

DDR SDRAM 인터페이스를 이용한 DRAM 지원 에러 정정 방법DRAM support error correction method using DDR SDRAM interface
본 발명에 따른 실시 예들의 하나 또는 그 이상의 양상들은 메모리 에러 정정을 위한 방법들 및 메커니즘들에 관한 것이다.One or more aspects of embodiments in accordance with the present invention relate to methods and mechanisms for memory error correction.
DDR SDRAM(Double data rate synchronous dynamic random-access memory)은 컴퓨터들에서 이용되는 메모리 집적 회로(integrated circuit; IC)의 한 종류이다. DDR SDRAM은 전기적인 데이터 및 클락 신호들의 타이밍 제어를 이용하여 좀 더 빠른 전송 속도를 달성할 수 있고, 클락 신호의 상승 엣지(rising edge) 및 하강 엣지(falling edge) 전부에서 데이터를 전송할 수 있고, 그렇게 함으로써 동일한 클락 주파수를 이용하는 SDR SDRAM(single data rate synchronous dynamic random-access memory) 인터페이스와 비교하면 데이터 버스 대역폭(data bus bandwidth)을 효율적으로 두 배로 높이고, 그리고 그렇게 함으로써 약 두 배의 대역폭을 달성한다.Double data rate synchronous dynamic random-access memory (DDR SDRAM) is a type of memory integrated circuit (IC) used in computers. DDR SDRAM can achieve a faster transfer rate by using timing control of electrical data and clock signals, and can transmit data at both the rising edge and falling edge of the clock signal, Doing so effectively doubles the data bus bandwidth compared to an SDR SDRAM (single data rate synchronous dynamic random-access memory) interface using the same clock frequency, and in doing so achieves approximately double the bandwidth. .
다양한 세대들의 DRAM은 데이터 오류의 일반적인 유형들을 감지하고 때때로 정정 모두를 하기 위해 데이터 저장 중에 ECC(error-correcting code) 메모리를 이용할 수 있다. ECC 메모리는 패리티 검사(parity checking)의 이용을 통해 하나의 비트 에러들에 영향을 받지 않는다. DRAM 시스템들에서, 패리티 검사는, 메모리(예를 들면, DRAM 모듈의 패리티 장치 또는 ECC 칩)에 저장되는 데이터(예를 들면, 1 바이트 데이터)의 (홀수 또는 짝수) 패리티를 나타내는 여분의 패리티 비트를 저장하고, 독립적으로 패리티를 계산하고, 그리고 데이터 에러/메모리 에러가 발생했는지 여부를 감지하기 위해 저장된 패리티와 계산된 패리티를 비교하는 것에 의해 달성될 수 있다.DRAM of various generations may use error-correcting code (ECC) memory during data storage to both detect and sometimes correct common types of data errors. ECC memory is immune to single bit errors through the use of parity checking. In DRAM systems, a parity check is an extra parity bit indicating the (odd or even) parity of data (eg, 1-byte data) stored in a memory (eg, a parity device or ECC chip in a DRAM module). , and independently calculating parity, and comparing the calculated parity with the stored parity to detect whether a data error/memory error has occurred.
따라서, DRAM 모듈(예를 들면, DIMM(dual in-line memory module))에서 회수된(retrieved), 데이터 워드(data word) 또는 데이터 심볼(data symbol)에 대응할 수 있는, 데이터가 DRAM 모듈에 쓰여진 데이터와 동일한 것을 보장하기 위해, ECC는 데이터의 하나 또는 그 이상의 비트들이 잘못된 상태로 뒤집히는 경우에 발생하는 에러들을 정정할 수 있다.Thus, data, which may correspond to a data word or data symbol, retrieved from a DRAM module (eg, a dual in-line memory module (DIMM)) is written to the DRAM module. To ensure that data is identical, ECC can correct errors that occur when one or more bits of data are flipped to the wrong state.
본 발명은 상술한 기술적 과제를 해결하기 위한 것으로, 본 발명은 DDR SDRAM 인터페이스를 위한 DRAM 지원 에러 정정 메커니즘을 제공할 수 있다.The present invention is to solve the above-described technical problem, the present invention can provide a DRAM support error correction mechanism for a DDR SDRAM interface.
본 개시의 실시 예들의 양상들은 에러를 정정하기 위해 DRAM 내 ECC를 이용하는 새로운 DDR 인터페이스에 관한 것이다.Aspects of embodiments of the present disclosure relate to a new DDR interface that uses ECC in DRAM to correct errors.
본 발명의 실시 예들은 DDR4에 의해 제공되는 것과 같은 기본 칩킬 RAS 특징들을 제공할 수 있는 아키텍처를 제공하는데, 감소된 ECC 칩 오버헤드(즉, 메모리 채널 당 하나의 ECC 칩), 감소된 내부 프리패치 크기, 그리고 DDR4에 대응하는 인터페이스에 대한 DDR 인터페이스의 감소된 변경들을 하면서도 이러한 특징들을 제공하는 것이 가능하다.Embodiments of the present invention provide an architecture capable of providing the same basic chipkill RAS features as provided by DDR4, reduced ECC chip overhead (i.e. one ECC chip per memory channel), reduced internal prefetch It is possible to provide these features while making reduced changes in size and the DDR interface to the interface corresponding to DDR4.
도 1은 본 발명의 실시 예에 따른 DDR 인터페이스를 위한 에러 정정 메커니즘을 도시한 블록도이다.1 is a block diagram illustrating an error correction mechanism for a DDR interface according to an embodiment of the present invention.
도 2는 본 발명의 다른 실시 예에 따른 DDR 인터페이스를 위한 에러 정정 메커니즘을 도시한 블록도이다.2 is a block diagram illustrating an error correction mechanism for a DDR interface according to another embodiment of the present invention.
도 3은 본 발명의 또 다른 실시 예에 따른 DDR 인터페이스를 위한 에러 정정 메커니즘을 도시한 블록도이다.3 is a block diagram illustrating an error correction mechanism for a DDR interface according to another embodiment of the present invention.
도 4는 본 발명의 또 다른 실시 예에 따른 DDR 인터페이스를 위한 에러 정정 메커니즘을 도시한 블록도이다.4 is a block diagram illustrating an error correction mechanism for a DDR interface according to another embodiment of the present invention.
도 5는 본 발명의 또 다른 실시 예에 따른 DDR 인터페이스를 위한 에러 정정 메커니즘을 도시한 블록도이다.5 is a block diagram illustrating an error correction mechanism for a DDR interface according to another embodiment of the present invention.
도 6은 본 발명의 또 다른 실시 예에 따른 DDR 인터페이스를 위한 에러 정정 메커니즘을 도시한 블록도이다.6 is a block diagram illustrating an error correction mechanism for a DDR interface according to another embodiment of the present invention.
도 7a 및 도 7b는 본 발명의 하나 이상의 실시 예들에 따라 DAECC(DRAM assist error correction code) 메커니즘을 이용해 에러의 감지, 에러 종류의 결정, 그리고 에러를 핸들링(handling)하는 것을 도시한 순서도들이다.7A and 7B are flow charts illustrating error detection, error type determination, and error handling using a DRAM assist error correction code (DAECC) mechanism in accordance with one or more embodiments of the present invention.
본 발명의 특징들 및 이를 달성하는 방법들은 이하의 실시 예들 및 첨부된 도면들의 상세한 설명을 참조하면 좀 더 쉽게 이해될 수 있다. 이하, 본 발명의 실시 예들은 동일한 참조 번호들은 동일한 구성 요소들을 참조하는 첨부된 도면들을 참조하여 좀 더 상세하게 설명될 것이다. 그러나, 본 발명은 다양한 형태로 구체화 될 수 있고, 본 명세서에서 도시된 실시 예들에만 한정되는 것으로 해석되지 않는다. 오히려, 이러한 실시 예들은 본 발명이 철저하고 완전하며 본 발명의 양상 및 특징을 당업자에게 충분히 전달할 수 있도록 예들로서 제공된다.The features of the present invention and the methods of achieving the same may be more readily understood with reference to the following detailed description of the embodiments and accompanying drawings. Hereinafter, embodiments of the present invention will be described in more detail with reference to the accompanying drawings in which like reference numerals refer to like elements. However, this invention may be embodied in various forms and should not be construed as being limited only to the embodiments shown herein. Rather, these embodiments are provided as examples so that this disclosure will be thorough and complete, and will fully convey its aspects and features to those skilled in the art.
따라서, 본 발명의 양상들 및 특징들의 완전한 이해를 위해 당업자에게 불필요한 프로세스들, 요소들, 및 기술들은 설명되지 않을 수 있다. 또 다른 언급이 없는 한, 첨부 도면 및 상세한 설명 전반에 걸쳐 동일한 참조 부호는 동일한 요소를 나타내며, 따라서 그 설명은 반복하지 않을 것이다. 도면에서, 요소들, 층들, 및 영역들의 상대적 크기들은 명확성을 위해 과장될 수 있다.Accordingly, processes, elements, and techniques may not be described that are unnecessary to those skilled in the art for a thorough understanding of the aspects and features of the present invention. Unless otherwise indicated, like reference numbers indicate like elements throughout the accompanying drawings and detailed description, and thus the description will not be repeated. In the drawings, the relative sizes of elements, layers, and regions may be exaggerated for clarity.
"제 1", "제 2", "제 3"등의 용어는 본 명세서에서 다양한 구성 요소들, 성분들, 영역들, 층들 및/또는 섹션들을 설명하기 위해 이용될 수 있지만, 이러한 구성 요소들, 성분들, 영역들, 층들 및/또는 섹션들은 이러한 용어들에 의해 제한되지 않는 것으로 이해될 것이다. 이러한 용어들은 하나의 요소, 성분, 영역, 층 또는 섹션을 다른 요소, 성분, 영역, 층 또는 섹션과 구별하기 위해 이용된다. 따라서, 이하에서 설명되는 제 1 구성 요소, 성분, 영역, 층 또는 섹션은 본 발명의 사상 및 범위를 벗어나지 않고 제 2 구성 요소, 성분, 영역, 층 또는 섹션으로 설명될 수 있다.Although the terms “first,” “second,” “third,” and the like may be used herein to describe various components, components, regions, layers, and/or sections, such components , components, regions, layers and/or sections will be understood not to be limited by these terms. These terms are used to distinguish one element, component, region, layer or section from another element, component, region, layer or section. Thus, a first component, component, region, layer or section described below could be described as a second component, component, region, layer or section without departing from the spirit and scope of the present invention.
하나의 요소 또는 도면에서 도시된 다른 구성 요소(들) 또는 특징(들)과의 특징적인 관계를 설명하기 위한 설명을 용이하게 하기 위해 “아래의”, “아래”, “낮은”, “특정 부분 아래”, “위에”, “상부”와 같은 공간적이고 상대적인 용어들이 여기에서 이용될 수 있다. 공간적이고 상대적인 용어들은 도면에서 묘사된 방향에 더해 이용 또는 동작에서 장치의 다른 방향들을 포함하도록 의도된 것이 이해될 것이다. 예를 들면, 만약 도면의 장치가 뒤집어지면, 다른 구성 요소들 또는 특징들의 “아래” 또는 “아래의” 또는 “특정 부분 아래”로 설명된 구성요소들은 다른 구성 요소들 또는 특징들의 “위로” 맞춰지게 된다. 따라서, “아래의” 또는 “특정 부분 아래”의 예시적인 용어들은 위 또는 아래 방향 모두를 포함할 수 있다. 장치는 다르게 맞춰질 수 있으며(예를 들면, 90도 도는 다른 방향으로 회전됨) 그리고 공간적으로 상대적인 기술어들은 그에 따라 해석되어야 한다.“Under,” “below,” “lower,” “particular” to facilitate description to describe one element or its characteristic relationship to another component(s) or feature(s) shown in a drawing. Spatial and relative terms such as "below," "above," and "above" may be used herein. It will be understood that spatial and relative terms are intended to include other orientations of the device in use or operation in addition to the orientation depicted in the figures. For example, if the device in the drawings is turned over, components described as “below” or “below” or “under certain parts” of other components or features fit “above” other components or features. will lose Thus, exemplary terms of “below” or “below a particular portion” may include both an up or down direction. Devices can be tailored differently (eg rotated 90 degrees in other directions) and spatially relative descriptors should be interpreted accordingly.
구성 요소, 층, 영역, 또는 성분이 다른 구성 요소, 층, 영역 또는 성분 “에”, “에 연결된”, “에 결합된”것으로 언급되는 때, 그것은 다른 요소, 층, 영역, 또는 성분 “에 직접적으로”, “에 직접적으로 연결된”,“에 직접적으로 결합된”일 수 있거나, 하나 또는 그 이상의 사이의 구성 요소들, 층들, 영역들, 또는 성분들이 존재할 수 있다. 또한, 구성 요소 또는 층이 두 개의 요소들 또는 층들 사이로 언급되는 때, 그것은 단지 요소 또는 층이 두 구성 요소들 또는 층들 사이에 있을 수 있거나, 또는 하나 또는 그 이상의 사이의 구성 요소들 또는 층들이 또한 존재할 수 있다.When an element, layer, region, or component is referred to as “to,” “connected to,” or “coupled to” another element, layer, region, or component, it refers to “to” the other element, layer, region, or component. It may be "directly", "directly connected to", "directly coupled to", or there may be one or more intervening components, layers, regions, or components. Also, when an element or layer is referred to as between two elements or layers, it may only be that the element or layer is between two elements or layers, or that one or more intervening elements or layers may also be present. can exist
다음의 예들에서, x축, y축, 그리고 z축은 직각 좌표 시스템의 3가지 축들로 한정되지 않고, 넓은 의미로 해석될 수 있다. 예를 들어, x축, y축, 그리고 z축은 서로 직교할 수 있고, 또는 서로 직교하지 않은 다른 방향들을 나타낼 수 있다.In the following examples, the x-axis, y-axis, and z-axis are not limited to the three axes of the Cartesian coordinate system and can be interpreted in a broad sense. For example, the x-axis, y-axis, and z-axis may be orthogonal to each other, or may represent other directions that are not orthogonal to each other.
본 명세서에서 이용된 용어들은 단지 특정한 실시 예들을 설명하기 위한 것이고, 본 발명을 제한하려는 것으로 의도되지 않았다. 본 명세서에서 이용된 바와 같이, 문맥상 명백하게 다르게 뜻하지 않는 한, 단수 형태 “하나”는 복수의 형태도 포함하는 것으로 의도된다. “구성되는”, “구성되고 있는”, “포함하는”, 그리고 “포함하고 있는” 용어들이 본 명세서에서 이용될 때, 이러한 용어들은 정해진 특징들, 정수들, 단계들, 동작들, 요소들, 그리고/또는 성분들이 존재를 명시하나, 하나 또는 그 이상의 다른 특징들, 정수들, 단계들, 동작들, 요소들, 성분들, 그리고/또는 그것들의 그룹들의 추가 또는 존재를 불가능하게 하지 않는다. 본 명세서에서 이용된 바와 같이, “그리고/또는” 용어는 하나 또는 그 이상의 열거된 항목들과 연관된 임의의 그리고 모든 조합들 포함한다. “적어도 하나”와 같은 표현들은 요소들 전체 리스트를 수정하고 그리고 리스트의 개별 요소들을 수정하지 않는다.The terms used herein are merely for describing specific embodiments and are not intended to limit the present invention. As used herein, the singular form “a” is intended to include the plural form as well, unless the context clearly dictates otherwise. When the terms "comprising," "comprising," "comprising," and "including" are used herein, these terms refer to specified features, integers, steps, operations, elements, and/or elements specify the presence, but do not preclude the addition or presence of one or more other features, integers, steps, operations, elements, components, and/or groups thereof. As used herein, the term "and/or" includes any and all combinations of one or more of the listed items. Expressions such as “at least one” modify the entire list of elements and do not modify individual elements of the list.
본 명세서에서 이용된 바와 같이, “대체로”, “약” 용어 그리고 이와 유사한 용어들은 근사치의 용어들로서 이용되고, 정도의 용어들로서 이용되지 않고. 본 발명의 당업자에 의해 식별되는 측정된 또는 계산된 값들의 고유한 변동을 고려하기 위한 것이다. 또한, 본 발명의 실시 예들을 기술할 때 "할 수 있다"의 이용은 "본 발명의 하나 이상의 실시 예들"을 의미한다. 본 명세서에서 이용된 바와 같이, “이용”, “이용되는”, 그리고 “이용된” 용어들은 “이용”, “이용되는”, 그리고 “이용된” 용어들의 동의어로 각각 간주 될 수 있다. 또한, "예시" 용어는 예 또는 그림을 의미한다.As used herein, the terms “approximately”, “about” and similar terms are used as terms of approximation, not terms of degree. It is intended to account for inherent variations in measured or calculated values identified by those skilled in the art. Also, the use of “may” when describing embodiments of the present invention means “one or more embodiments of the present invention”. As used herein, the terms “use”, “used”, and “used” may be considered synonyms for the terms “use”, “used”, and “used”, respectively. Also, the term "exemplary" means an example or illustration.
특정 실시 예는 상이하게 구현 될 수 있는 경우, 특정 프로세스 순서는 설명 된 순서와 다르게 수행 될 수 있다. 예를 들면, 설명된 연속적인 두 개의 프로세서들은 동시에 대체적으로 수행되거나 설명된 순서와 반대 순서로 수행될 수도 있다.In cases where particular embodiments may be implemented differently, certain processes may be performed in an order other than the order described. For example, two processes in succession described may alternatively be performed concurrently or in an order reverse to that described.
본 명세서에서 기술된 본 발명의 실시 예에 따른 전자 또는 전기 장치들 그리고/또는 다른 임의의 관련된 장치들 또는 요소들은 임의의 적합한 하드웨어, 펌웨어(예를 들면, Application Specific Integrated Circuit; ASIC), 소프트웨어, 또는 소프트웨어, 펌웨어, 그리고 하드웨어의 조합을 이용하여 구현될 수 있다. 예를 들어, 이러한 장치들의 다양한 요소들은 하나의 집적 회로(Integrated Circuit; IC) 칩 또는 분리된 IC 칩들로 형성될 수 있다. 또한, 이러한 장치들의 다양한 요소들은 유연한 인쇄 회로 필름(Flexible Printed Circuit Film), TCP(Tape Carrier Package), 인쇄 회로 기판(Printed Circuit Board; PCB) 위에 구현되거나 하나의 기판 위에서 형성될 수 있다. 또한, 이러한 장치들의 다양한 요소들은 컴퓨터 프로그램 명령들을 실행하고 본 명세서에서 설명된 다양한 기능들을 수행하기 위한 다른 시스템 요소들과 상호 작용하는 하나 이상의 컴퓨팅 장치들에서 또는 하나 이상의 프로세서들에서 수행되는 프로세스 또는 스레드(Thread)일 수 있다. 컴퓨터 프로그램 명령들은 예를 들면 RAM(Random Access Memory)과 같은 표준 메모리 장치를 이용하는 컴퓨팅 장치에서 구현되는 메모리 내에 저장된다. 컴퓨터 프로그램 명령들은 또한 예를 들면 CD-ROM, 플래시 드라이브(Flash Drive), 또는 그와 같은 다른 일시적이지 않은 컴퓨터 읽기 가능한 미디어(Non-transitory Computer Readable Media)에 저장될 수도 있다. 또한, 본 발명의 당업자는 본 발명의 예시적인 실시 예들의 사상 및 범위를 벗어나지 않고 다양한 컴퓨팅 장치들의 기능은 하나의 컴퓨팅 장치에 통합되거나 집적되고, 특정 컴퓨팅 장치의 기능이 하나 또는 그 이상의 다른 컴퓨팅 장치들에 분산될 수 있음을 인식해야 한다.Electronic or electrical devices according to embodiments of the invention described herein and/or any other related devices or elements may be any suitable hardware, firmware (eg, Application Specific Integrated Circuit (ASIC)), software, or may be implemented using a combination of software, firmware, and hardware. For example, the various elements of these devices may be formed as one Integrated Circuit (IC) chip or as separate IC chips. In addition, various elements of these devices may be implemented on a flexible printed circuit film (Flexible Printed Circuit Film), a Tape Carrier Package (TCP), a Printed Circuit Board (PCB), or formed on a single substrate. Additionally, the various elements of these devices may be processes or threads running on one or more computing devices or on one or more processors that execute computer program instructions and interact with other system elements to perform the various functions described herein. (Thread). Computer program instructions are stored in memory implemented in a computing device using standard memory devices, such as, for example, random access memory (RAM). Computer program instructions may also be stored on other non-transitory computer readable media such as, for example, a CD-ROM, flash drive, or the like. In addition, those skilled in the art will understand that the functions of various computing devices may be integrated or integrated into one computing device, and the functions of a specific computing device may be implemented in one or more other computing devices without departing from the spirit and scope of the exemplary embodiments of the present invention. It should be recognized that it can be dispersed in the field.
다르게 정의되지 않는 한, 본 명세서에서 이용된 모든 용어들(기술적 그리고 과학적 용어들을 포함하는)은 본 발명이 속한 기술 분야에서 당업자에 의해 일반적으로 이해되는 동일한 의미를 포함한다. 일반적으로 이용되는 사전에 정의된 이러한 용어들은 본 명세서 그리고/또는 관련 기술의 문맥에서 그들의 의미와 일치하는 의미를 포함하는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의되지 않는 한 이상화되거나 지나지게 형식적인 감각으로 해석되지 않아야 한다.Unless defined otherwise, all terms (including technical and scientific terms) used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. These terms, defined in commonly used dictionaries, should be interpreted to include meanings consistent with their meanings in the context of this specification and/or related art, unless expressly defined herein in an idealized or overly formal sense. should not be interpreted as
도 1 내지 도 3과 관련되어 이하에서 설명되는 본 발명의 실시 예들은 기본 칩킬을 제공할 수 있다. DDR4의 메커니즘과 동일한 커버리지(coverage)가 부족함에도 불구하고, 새로운 DDR 인터페이스는 메모리 채널당 단지 하나의 ECC 칩을 포함함에도 불구하고 하나의 다이/칩 정정을 제공할 수 있다. 추가적으로, 이하에서 설명되는 메커니즘들은 데이터 칩이 페일(Fail)된 경우를 식별하기 위해 ECC 칩으로부터 제공되는 ECC 정보를 이용할 수 있다.Embodiments of the present invention described below in relation to FIGS. 1 to 3 may provide a basic chip kill. Despite lacking the same coverage as DDR4's mechanism, the new DDR interface can provide a single die/chip correction despite including only one ECC chip per memory channel. Additionally, mechanisms described below may use ECC information provided from an ECC chip to identify a case in which a data chip has failed.
도 1은 본 발명의 실시 예에 따른 DDR 인터페이스를 위한 에러 정정 메커니즘을 도시한 블록도이다. 본 발명은 메모리 처리(transaction)당 16개 버스트들을 이용하고, 다중 버스트들 내 하나의 데이터 칩의 데이터를 보호하기 위해 DRAM(dynamic random-access memory module) 내 ECC(in-DRAM ECC)를 이용할 수 있다. 본 발명의 실시예는 또한 메모리 컨트롤러가 DRAM 내 ECC가 시스템 ECC 에러가 발생한 것으로 결정한 때 DRAM 내 ECC의 정보를 읽도록 허용하는 것에 의해 하나 또는 그 이상의 버스트들 내 다중 칩들로부터 데이터를 보호하기 위해 DRAM DIMM이 시스템/메모리 컨트롤러 ECC를 이용하게 한다.1 is a block diagram illustrating an error correction mechanism for a DDR interface according to an embodiment of the present invention. The present invention can use 16 bursts per memory transaction and use in-DRAM ECC (ECC) in a dynamic random-access memory module (DRAM) to protect the data of one data chip in multiple bursts. there is. Embodiments of the invention may also be used to protect data from multiple chips in one or more bursts by allowing the memory controller to read information in ECC in DRAM when the ECC in DRAM determines that a system ECC error has occurred. Make the DIMM use system/memory controller ECC.
도 1에 도시된 바와 같이, 본 발명의 실시 예의 시스템(100)은 내부에 저장된 DAECC 엔진(DRAM assist error correction code engine, 120)을 포함하는 메모리 컨트롤러(110)를 포함한다. 메모리 컨트롤러(110)는 DDR DIMM/DRAM(double data rate synchronous dynamic random-access memory dual in-line memory module, 160)의 다양한 칩들(140a, 140b)에 데이터를 전송할 수 있고 다양한 칩들(140a, 140b)로부터 데이터를 전송 받을 수 있다. 도 1에서, DRAM(160, 혹은 DRAM 모듈)의 하나의 메모리 채널(150)이 도시되어 있다. 메모리 컨트롤러(110)는 일반적인 읽기 및 쓰기 과정들을 통해 DRAM(160)과 “일반” 데이터(170) 교환을 위한 메모리 처리들(130)을 수행한다. 본 발명의 실시 예에서, DRAM(160)의 각 칩(140a, 140b)은 칩의 4개 핀들을 통해 4비트 정보를 제공한다.As shown in FIG. 1 , the system 100 according to an embodiment of the present invention includes a memory controller 110 including a DRAM assist error correction code engine (DAECC) engine 120 stored therein. The memory controller 110 may transmit data to various chips 140a and 140b of a DDR DIMM/DRAM (double data rate synchronous dynamic random-access memory dual in-line memory module, 160), and the various chips 140a and 140b Data can be transmitted from In Figure 1, one memory channel 150 of a DRAM 160 (or DRAM module) is shown. The memory controller 110 performs memory processes 130 for exchanging “normal” data 170 with the DRAM 160 through normal read and write processes. In an embodiment of the present invention, each chip 140a, 140b of the DRAM 160 provides 4-bit information through 4 pins of the chip.
DRAM(160)의 각 메모리 채널(150)은 데이터의 수신, 저장, 및 전송을 위해 8개의 4비트 데이터 칩들(예를 들면, 8개의 데이터 장치들, 140a)을 포함한다. DIMM/DRAM의 메모리 채널당 두 개의 ECC 칩들을 이용하는 DDR4와 달리, 본 발명의 실시 예의 DRAM(160)은 메모리 컨트롤러(110)에 ECC 데이터를 전송하기 위해 메모리 채널(150)당 하나의 4비트 ECC 칩(예를 들면, 하나의 패리티 장치 또는 패리티 칩, 140b)을 포함한다. 메모리 채널(150)당 단지 하나의 ECC 칩(140b)만 포함함에도 불구하고, 본 발명의 실시 예의 DRAM(160)은 시스템 내 에러 정정 및 기본적인 칩킬 능력을 제공할 수 있고, 이는 이하에서 더 설명될 것이다.Each memory channel 150 of DRAM 160 includes eight 4-bit data chips (e.g., eight data devices, 140a) for receiving, storing, and transmitting data. Unlike DDR4, which uses two ECC chips per memory channel of DIMM/DRAM, the DRAM 160 according to an embodiment of the present invention uses one 4-bit ECC chip per memory channel 150 to transmit ECC data to the memory controller 110. (eg, one parity device or parity chip, 140b). Despite including only one ECC chip 140b per memory channel 150, the DRAM 160 of an embodiment of the present invention can provide in-system error correction and basic chip kill capabilities, which will be further described below. will be.
본 발명의 실시 예에서, DRAM(160)은 버스트들을 이용하여 메모리 컨트롤러(110)와 메모리 처리(들130)을 수행하는데, 이에 의해, 분리된 처리에서 데이터의 각 부분을 전송하기 위해 달리 보통 요구되는 다른 단계들을 생략하면서 DRAM(160)은 반복적으로 데이터를 전송한다. 따라서, DRAM(160)은 단지 특정 조건하에 제한된 기간에서도, 버스팅(bursting)없이 전송할 수 있는 것보다 데이터를 더 빠르게 전송할 수 있다.In an embodiment of the invention, DRAM 160 performs memory processing(s) 130 with memory controller 110 using bursts, whereby otherwise normally required to transfer each portion of data in a separate process. DRAM 160 repeatedly transmits data while omitting other steps to be performed. Thus, DRAM 160 can transfer data faster than it can transfer without bursting, even for limited periods only under certain conditions.
DRAM(160)의 더 좁은 메모리 채널 폭을 보상하기 위해, DRAM(160)은, 8의 버스트 랭스를 포함하는 DDR4와 같이 이용되는 DIMM의 버스트 랭스의 두 배인 16의 버스트 랭스를 포함한다. 즉, 두 개의 메모리 채널들(150) 각각이 DDR4와 같이 이용되는 메모리 채널의 데이터 폭의 단지 절반만 포함하는 것을 보상하기 위해, DRAM(160)은 DDR4와 비교하여 각 메모리 처리(130)에서 4비트 칩들(140a, 140b) 각각에 저장된 데이터의 버스트들 수의 두 배를 내부적으로 프리패치 할 수 있다.To compensate for the narrower memory channel width of DRAM 160, DRAM 160 includes a burst length of 16, which is double the burst length of DIMMs used such as DDR4, which have a burst length of 8. That is, to compensate for the fact that each of the two memory channels 150 contains only half of the data width of the memory channel being used like DDR4, DRAM 160 has 4 Twice the number of bursts of data stored in each of the bit chips 140a and 140b may be internally prefetched.
따라서, 메모리 채널(150)당 36비트(즉, 9개 칩들(140a, 140b) 각각에서 칩 당 4비트씩)가 각 버스트마다 보내지고, 데이터 폭은 메모리 채널(150)당 32비트이고, ECC 폭은 메모리 채널(150)당 4비트 이다. 이것은 채널당 메모리 처리(130)당 총 576 비트에 해당하고(즉, 버스트당 36비트에 메모리 처리(130)당 16개의 버스트들을 곱함.), 전체 데이터 블락은 512 비트이고, 남아있는 64 비트는 메모리 채널(150)의 ECC 칩(140b)의 ECC 데이터에 해당한다.Thus, 36 bits per memory channel 150 (i.e., 4 bits per chip in each of the 9 chips 140a and 140b) are sent for each burst, the data width is 32 bits per memory channel 150, and ECC The width is 4 bits per memory channel 150. This corresponds to a total of 576 bits per memory process 130 per channel (i.e., 36 bits per burst multiplied by 16 bursts per memory process 130), the total data block is 512 bits, and the remaining 64 bits are memory This corresponds to ECC data of the ECC chip 140b of the channel 150.
추가적으로, DDR4와 달리, 본 발명의 실시 예의 시스템(100)은 메모리 컨트롤러(110)의 지원 없이 DRAM(160) 내부에서 에러 정정을 달성할 수 있다. 메모리 컨트롤러 지원되는 에러 정정(memory controller-assisted error correction)이 하나 또는 그 이상의 버스트들 내에서 다중 데이터 칩들(140a) 내 데이터가 보호되도록 하는데 비해, DRAM(160)의 DRAM 내 ECC는 다중 버스트들 내 데이터 칩들(140a) 중 어느 하나에서 데이터가 보호되도록 하기 위해, 메모리 컨트롤러(110)와 통신 없이 내부 에러 정정을 수행한다. 따라서, DRAM(160)의 DRAM 내 ECC로부터 내부적으로 제공된 정보와 함께 메모리 컨트롤러(110)의 ECC를 이용하여, 시스템(100)은 에러 정정을 수행하는 것과 결합하여 동작하기 위해 메모리 컨트롤러(110) 및 DRAM(160)을 이용할 수 있다.Additionally, unlike DDR4, the system 100 of an embodiment of the present invention can achieve error correction within the DRAM 160 without the assistance of the memory controller 110 . ECC in DRAM of DRAM 160 allows data in multiple data chips 140a to be protected within one or more bursts, whereas memory controller-assisted error correction allows data to be protected within multiple bursts. In order to protect data in one of the data chips 140a, internal error correction is performed without communication with the memory controller 110. Thus, using the ECC of memory controller 110 in conjunction with information provided internally from the ECC in DRAM of DRAM 160, system 100 operates in combination with performing error correction on memory controller 110 and DRAM 160 may be used.
DRAM 내 128비트의 매 그룹마다, DRAM 레벨(즉, 메모리 컨트롤러(110)의 지원 없이))에서 내부 에러 감지를 수행하기 위해 하나의 ECC 칩(140b)을 이용하는 것에 의해, DRAM 내 ECC는 칩 내부에서 내부적으로 생성된 ECC 비트들을 이용하여 하나의 비트 에러를 정정할 수 있다. 본 발명의 실시 예는 DDR4에서의 것을 넘어서는 메모리 어플리케이션에 어떠한 변경도 제공하지 않고, 그리고 DRAM(160) 및 메모리 컨트롤러(110) 사이에 상이한 인터페이스를 제공하지 않는다. 따라서, 내부 ECC를 제공하는 것에 의해, 에러 복원 정보는 일반적인 데이터 전송(170) 내 포함되지 않고, 그리고 메모리 컨트롤러(110)에 전달되지 않는다. 그러므로 ECC 칩(140b)에 의한 에러들의 정정은 메모리 컨트롤러(110)와의 메모리 처리(130)의 속도 또는 성능에 영향을 주지 않을 것이다.For every group of 128 bits in DRAM, by using one ECC chip 140b to perform internal error detection at the DRAM level (i.e., without the assistance of memory controller 110), ECC in DRAM is internal to the chip. One bit error can be corrected using ECC bits generated internally in . Embodiments of the present invention do not provide any changes to memory applications beyond those in DDR4, and do not provide a different interface between DRAM 160 and memory controller 110. Thus, by providing internal ECC, error recovery information is not included in the normal data transfer 170 and is not communicated to the memory controller 110. Therefore, correction of errors by ECC chip 140b will not affect the speed or performance of memory processing 130 with memory controller 110 .
그러나 에러들의 특정한 종류들은 ECC 칩(140b) 단독에 의해 정정되지 않을 수 있다. 메모리 컨트롤러(110)가 데이터 내 에러를 감지하면(예를 들면, DRAM(160)이 메모리 컨트롤러(110)에 에러의 존재를 나타내면), 오직 이 때만 메모리 컨트롤러(110)는 에러 정정을 시도하기 위해 DRAM(160)에 일부 명령을 발행(issue)할 것이다. 즉, 시스템/메모리 컨트롤러 ECC 에러가 발생했을 때에만, 메모리 컨트롤러(110)는 DIMM에 특정 명령을 보낼 것이고 DRAM(160)으로부터 DRAM 내 ECC 정보 출력(180)에 포함된 정보를 수신할 것이다. 그 후에, 메모리 컨트롤러(110)는 대응하는 메모리 채널(150)의 8개 데이터 칩들(140a) 중 어느 것이 감지된 에러의 원인인지를 결정할 것이다. 메모리 컨트롤러(110)가 고장이 있는 데이터 칩의 위치를 찾아내기 위해 이용하는 방법은 도 7a 내지 도 7b를 참조하여 이하에서 설명된다.However, certain kinds of errors may not be corrected by the ECC chip 140b alone. If memory controller 110 detects an error in the data (e.g., DRAM 160 indicates the existence of an error to memory controller 110), only then does memory controller 110 attempt to correct the error. It will issue some command to DRAM 160. That is, only when a system/memory controller ECC error occurs, the memory controller 110 will send a specific command to the DIMM and receive information included in the ECC information output 180 in DRAM from the DRAM 160 . After that, the memory controller 110 will determine which of the eight data chips 140a of the corresponding memory channel 150 is the cause of the detected error. A method used by the memory controller 110 to locate a failed data chip will be described below with reference to FIGS. 7A and 7B.
도 2는 본 발명의 다른 실시 예에 따른 DDR 인터페이스를 위한 에러 정정 메커니즘을 도시한 블록도이다. 전술한 실시 예의 에러 정정 메커니즘과 유사하게, 본 발명의 실시 예는 메모리 처리당 16개의 버스트들을 수행한다. 유사하게, 메모리 컨트롤러(210)는 내부에 저장된 DAECC 엔진(220)을 포함하고, DRAM(260)의 각 메모리 채널(250)은 일반적인 데이터 교환(270)을 위해 8개의 데이터 칩들(240a) 및 하나의 ECC 칩(240b)을 포함한다. 그러나, 전술한 실시 예와 달리, DRAM(260)은 추가적인 핀을 통해 메모리 컨트롤러(210)에 1비트 ECC 플래그(Flag)를 보내는 것에 의해 ECC 에러를 메모리 컨트롤러(210)에 알린다.2 is a block diagram illustrating an error correction mechanism for a DDR interface according to another embodiment of the present invention. Similar to the error correction mechanism of the foregoing embodiment, the embodiment of the present invention performs 16 bursts per memory process. Similarly, the memory controller 210 includes a DAECC engine 220 stored therein, and each memory channel 250 of the DRAM 260 includes eight data chips 240a and one for general data exchange 270. of the ECC chip 240b. However, unlike the above-described embodiment, the DRAM 260 notifies the memory controller 210 of an ECC error by sending a 1-bit ECC flag to the memory controller 210 through an additional pin.
도 2를 참조하면, 본 발명의 실시 예의 시스템(200)은 도 1을 참조하여 설명된 실시 예의 시스템(100)과 유사하다. 그러나, 본 발명의 실시 예의 DRAM/DDR DIMM(260)은 DRAM(260)이 쉽게 ECC 정보를 메모리 컨트롤러(210)에 전달하게 하기 위해 추가적인 하나의 핀(290)을 구현한다. 전술한 실시 예와 달리, 16개 버스트들을 포함하는 메모리 처리(230)동안에 에러가 발생하는 때, DRAM(260)은 하나의 1비트 ECC 플래그로 구성되는 경보(ALERT)를 전송할 수 있기 때문에, DRAM(260) 내 정정할 수 없는 에러들은 항상 즉각적으로 메모리 컨트롤러(210)에 노출된다. 따라서, 에러가 발생하는 때 정보는 칩들(240a, 240b) 중 DRAM 내 ECC 칩(240b)으로부터 메모리 컨트롤러(210)로 제공된다.Referring to FIG. 2 , system 200 of an embodiment of the present invention is similar to system 100 of an embodiment described with reference to FIG. 1 . However, the DRAM/DDR DIMM 260 according to an embodiment of the present invention implements an additional pin 290 so that the DRAM 260 can easily transfer ECC information to the memory controller 210 . Unlike the previous embodiment, when an error occurs during the memory process 230, which includes 16 bursts, the DRAM 260 can send an ALERT consisting of one 1-bit ECC flag. Uncorrectable errors in 260 are always exposed to the memory controller 210 immediately. Accordingly, when an error occurs, information is provided to the memory controller 210 from the ECC chip 240b in the DRAM among the chips 240a and 240b.
따라서, 8개 데이터 칩들(240a) 중 하나에 대응하는 메모리 에러가 발생하면, 본 발명의 실시 예의 ECC 칩(240b)의 핀(290)은 메모리 컨트롤러(210)에 에러가 발생한 것을 알리기 위해 1비트 ECC 플래그를 설정하기 위해 이용될 것이다. 핀(290)을 통해 1비트 ECC 플래그를 감지함에 따라, 메모리 컨트롤러(210)는 에러와 관련된 DRAM(260)으로부터 좀 더 상세한 정보를 얻기 위해 특정 명령을 발행할 것이다. 메모리 컨트롤러(210)는 도 1을 참조하여 설명된 실시 예의 시스템(100)과 유사한 방식으로 DRAM 내 ECC 정보 출력(280)을 이용하여 DRAM(260)으로부터 정보를 얻을 수 있다.Therefore, when a memory error corresponding to one of the eight data chips 240a occurs, the pin 290 of the ECC chip 240b according to an embodiment of the present invention transmits 1 bit to inform the memory controller 210 that an error has occurred. It will be used to set the ECC flag. Upon sensing the 1-bit ECC flag via pin 290, memory controller 210 will issue a specific command to obtain more detailed information from DRAM 260 related to the error. The memory controller 210 may obtain information from the DRAM 260 using the ECC information output 280 in the DRAM in a manner similar to the system 100 of the embodiment described with reference to FIG. 1 .
도 1을 참조하여 설명된 시스템(100)의 실시 예와 달리, DRAM(260) 및 메모리 컨트롤러(210) 사이의 DDR 인터페이스는 DDR4로부터 변경될 수 있다. 그러나, 다른 576 데이터 비트와 함께 핀(290)을 통해 1비트 ECC 플래그가 전송되기 때문에, 성능은 나쁘게 영향 받지 않고, 그러므로 메모리 처리(230) 당 시간이 증가하지 않는다.Unlike the embodiment of the system 100 described with reference to FIG. 1 , the DDR interface between the DRAM 260 and the memory controller 210 may be changed from DDR4. However, since the 1-bit ECC flag is sent over pin 290 along with the other 576 data bits, performance is not adversely affected and therefore the time per memory process 230 is not increased.
도 3은 본 발명의 또 다른 실시 예에 따른 DDR 인터페이스를 위한 에러 정정 메커니즘을 도시한 블록도이다.3 is a block diagram illustrating an error correction mechanism for a DDR interface according to another embodiment of the present invention.
도 3을 참조하면, 도 1 및 도 2를 각각 참조하여 설명된 실시 예들의 시스템들(100, 200)과 비교하면, 본 발명의 실시 예는 내부에 저장된 DAECC 엔진(320)과 함께 메모리 컨트롤러(310)를 포함하고, DRAM(360)의 각 메모리 채널(350)은 일반적인 데이터(370) 교환을 위해 8개의 데이터 칩들(340a) 및 하나의 ECC 칩(340b)을 포함한다.Referring to FIG. 3, compared to the systems 100 and 200 of the embodiments described with reference to FIGS. 1 and 2, respectively, the embodiment of the present invention has a memory controller (with a DAECC engine 320 stored therein) 310), and each memory channel 350 of the DRAM 360 includes eight data chips 340a and one ECC chip 340b for general data 370 exchange.
그러나, 본 발명의 실시 예의 시스템(300)의 각 메모리 처리(330)는 17개 버스트들의 총 버스트 길이에 기여하는 추가적인 버스트를 포함한다. 그러나, 메모리 처리(330)의 17번째 버스트 동안, DRAM 내 에러 정정 동안에 결정된 ECC 정보는 DRAM 내 ECC 정보 출력(380)에서 DRAM/DDR DIMM(360)으로부터 메모리 컨트롤러(310)로 전송된다. 따라서, 메모리 컨트롤러(310)는 각 메모리 처리(330)를 위한 추가적인 버스트와 연관되어 감소된 성능을 희생하여 각 메모리 처리(330)에서 DRAM 내 ECC 정보를 식별할 수 있다.However, each memory process 330 of system 300 of an embodiment of the present invention includes an additional burst contributing to a total burst length of 17 bursts. However, during the 17th burst of memory processing 330, the ECC information determined during in-DRAM error correction is transferred from DRAM/DDR DIMM 360 to memory controller 310 at in-DRAM ECC information output 380. Accordingly, memory controller 310 may identify ECC information in DRAM at each memory process 330 at the cost of reduced performance associated with an additional burst for each memory process 330 .
따라서, 시스템/메모리 컨트롤러 ECC 에러가 생긴 때에만(예를 들면, DRAM(160)의 ECC 칩(140b)에 의해 수정될 수 없는 에러) 단지 메모리 컨트롤러(110)가 DRAM 내 ECC 정보의 정보 출력(180)을 수행하는 도 1의 실시 예의 시스템(100)과 달리, 본 발명의 실시 예의 메모리 컨트롤러(310)는 추가적인 17번째 버스트를 통해 매 메모리 처리(330)에서 DRAM 내 ECC 정보 출력(380)을 수행한다. 추가적으로, 메모리 컨트롤러(310)는 시스템 레벨의 DRAM 내 ECC에 의해 수행되는 것과 같이 에러를 정정하기 위한 동일한 동작들을 항상 수행할 것이다(예를 들면, DRAM(360) 내에서).Therefore, only when a system/memory controller ECC error occurs (eg, an error that cannot be corrected by the ECC chip 140b of the DRAM 160), the memory controller 110 outputs information of ECC information in the DRAM ( Unlike the system 100 of the embodiment of FIG. 1 performing 180), the memory controller 310 of the embodiment of the present invention outputs ECC information 380 in DRAM in every memory process 330 through an additional 17th burst. carry out Additionally, memory controller 310 will always perform the same operations to correct errors as performed by ECC in DRAM at the system level (eg, in DRAM 360 ).
비록 전술한 실시 예들은 DAECC 메커니즘이 4비트 DRAM 칩들을 이용하여 새로운 좁은 DDR 인터페이스에 이용될 수 있는 것을 설명하지만, DAECC 메커니즘은 만약 DRAM 칩 내부에서 DRAM 내 ECC가 수행되면, 새로운 DDR 인터페이스를 이용하는 다른 DRAM 아키텍처들과 함께 이용되거나, DDR4와 유사한 인터페이스에서 이용될 수 있다.Although the foregoing embodiments illustrate that the DAECC mechanism can be used for the new narrow DDR interface using 4-bit DRAM chips, the DRAM mechanism can be used for other narrow DDR interfaces using the new DDR interface if intra-DRAM ECC is performed inside the DRAM chip. It can be used with DRAM architectures, or in a DDR4-like interface.
예를 들면, 도 4는 DAECC 엔진(420)이 8비트 DRAM 칩들(440a, 440b)과 함께 새로운 좁은 DDR 인터페이스와 관련되어 이용될 수 있는 것을 보여준다. 이러한 실시 예에서, 각 채널(450)은 데이터를 저장하기 위한 4개의 8비트 DRAM 칩들(440a)을 포함하고, 시스템 ECC를 저장하기 위한 1개의 8비트 DRAM 칩(440b)을 포함한다. 그러므로, 본 발명의 실시 예의 시스템 ECC 오버헤드는 1/4 또는 25%이다. For example, FIG. 4 shows that the DAECC engine 420 can be used in conjunction with the new narrow DDR interface with 8- bit DRAM chips 440a and 440b. In this embodiment, each channel 450 includes four 8-bit DRAM chips 440a for storing data and one 8-bit DRAM chip 440b for storing system ECC. Therefore, the system ECC overhead of the embodiment of the present invention is 1/4 or 25%.
다른 예를 들면, 도 5는 DAECC 엔진이 4비트 DRAM 칩들(540a, 540b)과 함께 DDR 인터페이스에 이용될 수 있는 것을 보여준다. 본 발명의 실시 예에서, 각 채널(550)은 데이터를 저장하기 위한 16개의 4비트 DRAM 칩들(540a)을 포함하고, 시스템 ECC를 저장하기 위한 하나의 4비트 DRAM 칩(540b)을 포함한다. 그러므로, 이러한 실시예에서, 시스템 ECC 오버헤드는 DDR4 표준의 현재 ECC 오버헤드의 절반인 1/16 또는 625%이다.As another example, FIG. 5 shows that a DAECC engine can be used for a DDR interface with 4- bit DRAM chips 540a and 540b. In an embodiment of the present invention, each channel 550 includes sixteen 4-bit DRAM chips 540a for storing data and one 4-bit DRAM chip 540b for storing system ECC. Therefore, in this embodiment, the system ECC overhead is 1/16 or 625%, half of the current ECC overhead of the DDR4 standard.
또 다른 예를 들면, 도 6은 DAECC 엔진이 8비트 DRAM 칩들(640a, 640b)과 함께 DDR4 인터페이스에서 이용될 수 있는 것을 보여준다. 이러한 실시 예에서, 각 채널(650)은 데이터를 저장하기 위해 8개의 8비트 DRAM 칩들(640a)을 포함하고, 시스템 ECC를 저장하기 위해 하나의 8비트 DRAM 칩(640b)를 포함한다. 그러므로, 시스템 ECC 오버헤드는 1/8 또는 125%이다.As another example, FIG. 6 shows that a DAECC engine can be used in a DDR4 interface with 8- bit DRAM chips 640a and 640b. In this embodiment, each channel 650 includes eight 8-bit DRAM chips 640a to store data and one 8-bit DRAM chip 640b to store system ECC. Therefore, the system ECC overhead is 1/8 or 125%.
정리하면, 전술한 실시 예들의 DAECC는 추가적인 하나의 ECC DRAM 칩을 이용하기 위한, 그리고 임의의 종류의 구조와 함께 메모리 시스템을 위한 기본적인 칩킬 범위(chipkill coverage)를 제공하기 위해 DRAM 내 ECC 정보를 이용하기 위한 일반적인 메커니즘이다.In summary, the DAECC of the above embodiments uses ECC information in DRAM to use an additional ECC DRAM chip and to provide basic chipkill coverage for a memory system with any kind of structure. This is a general mechanism for
도 7a 및 도 7b는 본 발명의 하나 이상의 실시 예들에 따라 DAECC(DRAM assist error correction code) 메커니즘을 이용해 에러의 감지, 에러 종류의 결정, 그리고 에러를 핸들링(handling)하는 것을 도시한 순서도들이다.7A and 7B are flow charts illustrating error detection, error type determination, and error handling using a DRAM assist error correction code (DAECC) mechanism in accordance with one or more embodiments of the present invention.
이하에서 설명되는 순서도는 도 1 내지 도 6을 참조하여 각각 설명된 임의의 시스템들에서 구현될 수 있다. 메모리 컨트롤러가 DRAM 내 에러 발생을 인식하면, 메모리 컨트롤러는 에러 패턴(error pattern)을 결정하도록 시도할 수 있다. 에러 패턴에 따라, 메모리 컨트롤러는 에러가 랜덤 에러(random error, 비영구적인 에러), 영구적인 에러(permanent error), 또는 칩킬 에러(chipkill error)에 대응하는지를 결정할 수 있을 것이다. 에러의 종류 결정에 따라, 시스템은 에러 정정을 수행할 수 있다.The flowchart described below may be implemented in any of the systems described with reference to FIGS. 1-6 respectively. When the memory controller recognizes the occurrence of an error in the DRAM, the memory controller may attempt to determine an error pattern. Depending on the error pattern, the memory controller may determine whether the error corresponds to a random error (non-permanent error), a permanent error, or a chipkill error. Depending on the determination of the type of error, the system may perform error correction.
에러들의 상이한 종류들 중에서, 에러의 한 종류는 칩킬 에러로 언급된다. 칩킬 에러는 비트 에러들의 문턱값을 초과한 하나의 칩/다이 또는 칩의 영구적인 고장(failure)과 일반적으로 대응한다. 메모리 채널의 하나의 4비트 데이터 칩의 고장은 메모리 처리 동안 많은 수의 버스트들에서 잘못된 데이터를 제공하는 데이터 칩에 대응하는 많은 수의 4비트를 야기할 수 있다(예를 들면, 데이터 칩에 대응하는 4비트 심볼들 내 많은 수의 에러들) 따라서, 본 발명의 실시 예들은 하나의 칩이 페일(fail)된 경우를 감지할 수 있고, 그 후에 하나의 칩 정정을 계속 제공하면서 그 칩을 비활성화할 수 있다. 즉, 본 발명의 실시 예들은 하나의 칩에 대응하는 4개의 반복적인 잘못된 비트를 하나의 심볼(symbol)로 그룹화할 수 있고, 페일(failed)/죽은(dead)/소거(erased) 칩에 대응하는 데이터를 복구하기 위한 심볼에 기초한 메커니즘(symbol-based mechanism)을 이용할 수 있다.Among the different types of errors, one type of error is referred to as a chip kill error. A chipkill error generally corresponds to the permanent failure of one chip/die or chip that exceeds a threshold of bit errors. A failure of one 4-bit data chip in a memory channel can cause a large number of 4-bit corresponding data chips to provide erroneous data in a large number of bursts during memory processing (e.g., corresponding data chips a large number of errors within 4-bit symbols) Thus, embodiments of the present invention can detect when one chip has failed, and then deactivate that chip while continuing to provide one-chip correction. can do. That is, embodiments of the present invention may group 4 repetitive erroneous bits corresponding to one chip into one symbol, and correspond to a failed/dead/erased chip. A symbol-based mechanism may be used to recover the data to be retrieved.
에러의 다른 종류는 DQ 에러로 언급된다. 전술한대로, 설명된 실시 예들의 DRAM에서, 각 칩은 4개의 데이터 핀들을 포함하고, 각 핀은 칩에 저장된 4개의 비트 중 하나를 출력한다. 각 핀은 DQ로 언급될 수 있다. 만약 하나의 칩의 핀들 중 하나가 페일이면(전체 칩의 고장과 대조적으로), 버스트들 각각에서 그 핀으로부터 제공되는 데이터는 잠재적으로 오류가 있다. 따라서, 핀 고장은 DQ 에러로 언급될 수 있다.Another kind of error is referred to as DQ error. As described above, in the DRAM of the described embodiments, each chip includes four data pins, and each pin outputs one of the four bits stored in the chip. Each pin can be referred to as DQ. If one of the pins of a chip fails (as opposed to failing the entire chip), the data provided from that pin in each of the bursts is potentially erroneous. Thus, a pin failure can be referred to as a DQ error.
설명된 실시 예들은 각 칩 사이에 인터리브되는(interleaved) 간단한 패리티 알고리즘(parity algorithms)을 이용할 수 있다. 예를 들면, 설명된 실시 예들은 RAID(redundant array of independent disks) 구성을 이용할 수 있다(예를 들면, RAID 4와 유사한 구성) RAID 4는 전용 패리티 디스크(dedicated parity disk) 및 다중 디스크들(예를 들면, 칩들)에 걸친 블록 레벨 스트라이핑(block-level striping across multiple disks)을 이용하는 RAID 구성이다. 디스크 스트라이핑은 데이터의 그룹을 블록들로 분할, 그리고 두 개 또는 그 이상의 저장 장치들(예를 들면, 데이터 칩들)에 걸쳐 블록들을 퍼지게 하는 것을 포함한다.The described embodiments may use simple parity algorithms interleaved between each chip. For example, the described embodiments may use a redundant array of independent disks (RAID) configuration (eg, a configuration similar to RAID 4). RAID 4 may include a dedicated parity disk and multiple disks (eg, a configuration similar to RAID 4). For example, a RAID configuration that uses block-level striping across multiple disks. Disk striping involves dividing a group of data into blocks, and spreading the blocks across two or more storage devices (eg, data chips).
따라서, ECC 칩에 저장된 데이터는 4개 패리티 비트와 대응할 것이고, 8개 데이터 칩들 중 하나로부터의 각 비트는 ECC 칩에 의해 저장된 서로 다른 패리티 비트에 기여하고, 모든 데이터 칩들 중 대응하는 핀으로부터의 하나의 비트는 패리티 비트들(예를 들면, ECC 칩의 하나의 ECC 그룹) 중 하나에 기여한다. 만약 호스트 메모리 컨트롤러가 데이터 및 ECC 정보를 이용하여 하나의 핀에 대응하는 재발생하는 하나의 1비트 에러를 감지하면, 호스트 메모리 컨트롤러는 4개의 가능한 비트 위치들 중 동일한 비트 위치로부터 에러를 식별할 것이다(즉, ECC 칩의 동일 패리티 비트는 버스트들 중 일부에서 발생하는 에러들을 포함할 것이다) 이하에서 설명되는 것처럼, 감지된 에러 패턴으로부터의 정보는 에러가 어디에 있는지를 결정하기 위해 이용될 수 있다(예를 들면, 8개 데이터 칩들 중 어떤 것이 에러를 야기하는 핀을 포함하는지)Thus, the data stored on the ECC chip will correspond to 4 parity bits, each bit from one of the 8 data chips contributes to a different parity bit stored by the ECC chip, and one from the corresponding pin of all the data chips. A bit of s contributes to one of the parity bits (eg, one ECC group of an ECC chip). If the host memory controller detects one reoccurring 1-bit error corresponding to one pin using the data and ECC information, the host memory controller will identify the error from the same bit location out of 4 possible bit locations ( That is, the same parity bit of the ECC chip will contain errors that occur in some of the bursts) As described below, information from the detected error pattern can be used to determine where the error is (e.g. e.g., which of the 8 data chips contains the pin causing the error)
도 7a를 참조하면, S701 단계에서, 에러가 감지된다. 에러는 도 1 내지 도 3을 참조하여 전술한 임의의 에러 감지 방법들에 의해(예를 들면, 추가적인 핀(290)을 통해 메모리 컨트롤러(210)에 의해 감지되는 ECC 플래그, 또는 메모리 처리(330)의 17번째 버스트 동안 DRAM 내 ECC 정보 출력(380)에서 메모리 컨트롤러(310)에 의해 감지되는 에러) 및/또는 호스트 메모리 컨트롤러에서 수행되는 시스템 ECC(예를 들면, RAID와 유사한 패리티 체크) 의해 감지될 수 있다.Referring to FIG. 7A , in step S701, an error is detected. An error may be detected by any of the error detection methods described above with reference to FIGS. 1-3 (e.g., an ECC flag sensed by memory controller 210 via additional pin 290, or memory processing 330). error detected by the memory controller 310 in the ECC information output 380 in the DRAM during the 17th burst of ) and/or system ECC performed by the host memory controller (eg, parity check similar to RAID). can
일단 시스템이 S701 단계에서 DRAM/DDR DIMM으로부터 일부 에러가 있는 것으로 결정하면, S702 단계에서 얼마나 많은 버스트들이 에러를 갖는지 결정된다. 이것은 메모리 처리의 각 버스트마다 패리티 체크를 진행하여 수행될 수 있다. 고장들의 상이한 종류들은 상이한 에러 패턴들을 포함하므로, 문턱값, 또는 참조 숫자, “n”은 감지된 에러의 종류를 분류하기 위해 이용될 수 있다. 예를 들면, ECC 칩의 동일한 핀 위치에 ECC 에러가 있을지라도, DQ 고장은 메모리 처리의 버스트들 전부 또는 다수에서 단지 1비트 패리티 에러만을 포함할 것이다.Once the system determines that there are some errors from the DRAM/DDR DIMM in step S701, it is determined in step S702 how many bursts have errors. This can be done by running a parity check for each burst of memory processing. Since different types of faults include different error patterns, a threshold value, or reference number, “n” may be used to classify the type of detected error. For example, even if there is an ECC error in the same pin location of the ECC chip, the DQ fault will contain only a 1-bit parity error in all or many of the bursts of memory processing.
그러나, 칩 고장은 버스트들 전부 또는 다수의 다중 비트들(예를 들면, 4비트 패리티 에러)에서 패리티 에러를 포함할 가능성이 클 것이다. 추가적으로, 랜덤 에러는 얼마 안 되는 에러들에 대응할 수 있고, 얼마 안 되는 버스트들에 극히 소수의 잘못된 비트들이 있을 수 있다(예를 들면, 하나의 버스트에서 하나의 1비트 에러)However, a chip failure will most likely involve a parity error in all of the bursts or multiple multiple bits (e.g., a 4-bit parity error). Additionally, a random error may correspond to a small number of errors, and there may be very few wrong bits in a small number of bursts (e.g., one 1-bit error in one burst).
따라서, 감지된 에러들의 수가 문턱값보다 큰 경우, DQ 고장 또는 칩 고장이 발생한 것으로 예측될 수 있다. 그러나, 감지된 에러의 수가 문턱값보다 작거나 같은 경우, 하나 또는 그 이상의 개별적인 칩들로부터 하나 또는 그 이상의 랜덤 에러가 발생한 것으로 예측될 수 있으며, 이는 DRAM 내 ECC로 정정 가능하지 않고, 정정을 위해 메모리 컨트롤러로부터 지원이 필요하다.Thus, if the number of detected errors is greater than the threshold, it can be predicted that a DQ failure or chip failure has occurred. However, if the number of detected errors is less than or equal to the threshold value, it can be predicted that one or more random errors have occurred from one or more individual chips, which cannot be corrected by ECC in DRAM and memory for correction. Support from the controller is required.
그러므로, S702 단계에서, 주어진 메모리 처리에서 에러를 갖는 다수의 버스트들이 문턱값 “n”을 초과하는지가 결정될 수 있다. 문턱값에 도달했는지에 따라, S703 단계 또는 S710 단계 중 어느 하나가 진행된다. 즉, 충분히 많은 수의 버스트들이 패리티 에러를 갖는 것으로 결정되면(예를 들면, 주어진 메모리 처리에서 에러를 갖는 버스트들의 수가 문턱값 “n”을 넘는 경우), DQ 고장 또는 칩 고장이 있을 가능성이 더 높고, 시스템은 칩킬 메커니즘을 진행할 것이다. 그러나, 감지된 에러를 갖는 버스트들의 수가 문턱값 “n”보다 작으면(예를 들면, 4개의 버스트들 또는 이보다 작은), S701 단계에서 감지된 에러는 개별적인 칩(들)으로부터의 랜덤 고장들의 결과일 가능성이 높다. 이러한 랜덤 고장들은 DRAM 내 ECC에 의해 정정 가능하지 않으나, 에러는 재발생하지 않을 가능성이 클 것이므로, 칩킬 메커니즘은 이용되지 않는다.Therefore, in step S702, it can be determined whether the number of bursts with errors in a given memory process exceeds the threshold “n”. Depending on whether the threshold is reached, either step S703 or step S710 proceeds. That is, if a sufficiently large number of bursts are determined to have parity errors (e.g., if the number of bursts with errors in a given memory process exceeds a threshold “n”), then there is a higher chance of a DQ failure or chip failure. high, the system will proceed with the chipkill mechanism. However, if the number of bursts with detected error is less than threshold “n” (e.g., 4 bursts or less), then the error detected in step S701 is the result of random failures from the individual chip(s). It is highly likely that These random failures are not correctable by ECC in DRAM, but since the error will most likely not reoccur, the chipkill mechanism is not used.
비록 예로써 4개 버스트들의 문턱값이 이용되어도, 다른 수가 본 발명의 다른 실시 예들에 이용될 수 있음에 유의해야 한다. 게다가, 그 수는 다른 실시 예들(예를 들면, 특정 장치에 대응하는)에서 조정될 수 있다. 예를 들면, 대응하는 메모리 장치가 상대적으로 높은 장치 에러율을 가지면, 이에 따라 다중 랜덤 에러들이 발생하면, 문턱값이 증가될 수 있다.Although a threshold of four bursts is used as an example, it should be noted that other numbers may be used in other embodiments of the present invention. Moreover, the number can be adjusted in different embodiments (eg corresponding to a particular device). For example, if the corresponding memory device has a relatively high device error rate, and thus multiple random errors occur, the threshold value may be increased.
S703 단계에서, S702 단계에서 패리티 에러를 갖는 버스트들의 수가 문턱값보다 큰 것으로 결정되면(예를 들면, 4개 버스트들보다 큰), 시스템은 8개 데이터 칩들 중 하나가 죽었는지 또는 소거되었는지를 결정하거나, 또는 8개 데이터 칩들 중 하나 이상에서 에러가 있었는지를 결정한다.In step S703, if it is determined in step S702 that the number of bursts with parity errors is greater than the threshold (eg greater than 4 bursts), the system determines whether one of the 8 data chips is dead or erased. or if there was an error in one or more of the eight data chips.
S703 단계에서 칩이 이미 사전에 소거되었거나 또는 8개 데이터 칩들 중 하나보다 더 많은 칩에서 에러가 있는 것으로 결정되면, 시스템은 S709 단계에서 치명적이고 정정 가능하지 않은 에러가 발생한 것으로 결정할 수 있다. 에러를 갖는 칩들의 수는 특정 명령을 이용하거나 메모리 처리(330)의 17번째 버스트 동안 중 어느 하나에 의해 DRAM 내 ECC 정보 출력(180, 280, 380)에서 메모리 컨트롤러(110, 210, 310)에 의해 감지될 수 있다. 예를 들면, 칩이 DQ 고장, 칩 고장, 뱅크(bank) 고장, 또는 로우(row) 고장으로 죽으면, 임의의 추가적인 DQ 고장 또는 칩 고장은 치명적인 고장을 야기하고, 본 발명의 실시 예의 시스템은 메모리 채널당 단지 하나의 ECC 칩을 포함하므로, 그러므로 에러 정정을 수행하기 위한 충분한 자원들을 더 이상 포함하지 않을 것이다. 유사하게, 다중 칩들이 에러를 포함하면, 치명적인 고장이 발생한다.If it is determined at step S703 that the chip has already been previously erased or that there is an error in more than one of the eight data chips, the system may determine at step S709 that a fatal and uncorrectable error has occurred. The number of chips with errors is determined by the memory controller 110, 210, 310 at the ECC information output 180, 280, 380 in DRAM either by using a specific command or during the 17th burst of memory processing 330. can be detected by For example, if a chip dies from a DQ failure, chip failure, bank failure, or row failure, any additional DQ failure or chip failure will cause a catastrophic failure, and the system of an embodiment of the present invention may Since it contains only one ECC chip per channel, it will therefore no longer contain enough resources to perform error correction. Similarly, catastrophic failure occurs if multiple chips contain errors.
그러나, S703 단계에서 소거된 칩이 없고, 그리고 감지된 에러가 단지 하나의 데이터 칩에 대응하는 것으로 결정되면, S704 단계가 진행된다. 예를 들면, 아직 소거된 칩이 없으면, 그리고 감지된 에러가 단지 하나의 칩에 대응하면, 시스템은 고장의 종류를 식별할 수 있고, 메모리 컨트롤러는 고장의 종류를 기록할 수 있고 잠재적으로 에러를 정정하기 위해 추가 조치를 취할 수 있다.However, if it is determined that no chip has been erased in step S703 and that the detected error corresponds to only one data chip, step S704 proceeds. For example, if no chip has been erased yet, and the detected error corresponds to only one chip, the system can identify the type of failure, and the memory controller can record the type of failure and potentially rectify the error. Additional steps may be taken to correct it.
S704 단계에서, 감지된 에러들이 동일한 핀에서 발생하는지가 결정될 수 있다. 즉, S704 단계에서, 시스템은 버스트들 각각에 대해 동일한 핀에서 감지된 에러가 발생하는지를 결정한다. 모든 에러들이 동일한 핀에 대응하면, S705a 단계에서, DRAM 내 시스템은 메모리 컨트롤러에 알릴 수 있고 그렇게 함으로써 메모리 컨트롤러는 에러의 고장 종류를 DQ 고장으로 기록할 수 있다. 시스템이 감지된 에러들이 모두 동일한 핀에 있지 않은 것으로 결정하면, S705b 단계에서, DRAM 내 시스템은 메모리 컨트롤러에 알릴 수 있고 그렇게 함으로써 메모리 컨트롤러는 고장 종류를 칩 고장으로 기록할 수 있다.At step S704, it may be determined whether the detected errors occur on the same pin. That is, in step S704, the system determines whether a detected error occurs on the same pin for each of the bursts. If all the errors correspond to the same pin, at step S705a, the system in the DRAM may notify the memory controller so that the memory controller may record the failure type of the error as a DQ failure. If the system determines that the detected errors are not all on the same pin, at step S705b, the system in the DRAM can notify the memory controller so that the memory controller can record the failure type as a chip failure.
S706 단계에서, 고장 종류가 DQ 고장 또는 칩 고장 중 어느 하나로 기록된 후, 메모리 컨트롤러는 칩킬 감지(chipkill detection)를 지원하기 위해 이용된다. S706 단계에서, 메모리 컨트롤러는 어떻게 에러를 정정할지 결정하기 위해 진단 루틴(diagnosis routine)을 시작할 수 있다. 진단 루틴은 도 7b를 참조하여 후술될 것이다.In step S706, after the failure type is recorded as either a DQ failure or a chip failure, the memory controller is used to support chipkill detection. At step S706, the memory controller may start a diagnosis routine to determine how to correct the error. The diagnosis routine will be described later with reference to FIG. 7B.
도 7b를 참조하면, S706a 단계에서, 메모리 컨트롤러는 이후에 에러 감지를 수행할 수 있도록, 도 7a의 S703 단계에서 DRAM 내 ECC로부터 제공되는 DRAM 내 ECC 정보를 이미 읽었다(예를 들면, ECC 칩에 의해 제공되는 ECC 비트들의 DRAM 내 ECC 정보 출력(180, 280, 또는 380)) 그 후에, S706b 단계에서, 메모리 컨트롤러는 모든 진행중인 메모리 처리들을 유지할 것이다. 그 다음에, S706c 단계에서, 메모리 컨트롤러는 현재 데이터를 저장한다(예를 들면, 8개의 4비트 데이터 칩들의 현재 데이터 D[511:0]에 대응하는 512 비트) 그 다음에, S706d 단계에서, 메모리 컨트롤러는 현재 데이터에 대응하는 반전된 데이터(예를 들면, 반전된 데이터 D'[511:0]에 대응하는 512 비트)를 8개의 4비트 데이터 칩들에 쓴다. 그 다음에, S706e 단계에서, 메모리 컨트롤러는 다시 데이터를 출력하여 읽는다. 그 다음에, S706f 단계에서, 메모리 컨트롤러는 에러(들)의 위치(들)을 식별하기 위해 새롭게 읽은 데이터와 알고 있는 반전된 데이터를 비교한다.Referring to FIG. 7B , in step S706a, the memory controller has already read ECC information in DRAM provided from ECC in DRAM in step S703 of FIG. ECC information output (180, 280, or 380) in DRAM of the ECC bits provided by ) Then, in step S706b, the memory controller will maintain all ongoing memory processes. Then, in step S706c, the memory controller stores the current data (e.g., 512 bits corresponding to the current data D[511:0] of eight 4-bit data chips) Then, in step S706d, The memory controller writes inverted data corresponding to current data (eg, 512 bits corresponding to inverted data D′[511:0]) to eight 4-bit data chips. Then, in step S706e, the memory controller outputs and reads data again. Then, in step S706f, the memory controller compares the newly read data with the known inverted data to identify the location(s) of the error(s).
도 7a를 참조하면, S706 단계에서 메모리 컨트롤러가 칩킬 감지를 지원한 후, S707 단계에서, 메모리 컨트롤러는 감지된 모든 에러들이 하나의 칩에 대응하는지를 결정한다. 만약 단지 하나의 데이터 칩이 소거되면, 또는 다중 DQ 에러들이 감지되지만, 하지만 모든 다중 DQ 에러들이 동일한 칩에 대응하면, S708 단계에서, 메모리 컨트롤러는 남아있는, 소거되지 않은 칩들에 데이터를 다시 쓸 것이고, 그리고 다음의 모든 메모리 처리들은 소거된 칩에 대응하는 데이터를 복원하기 위해 간단한 패리티 알고리즘의 패리티 비트를 이용할 것이다. 예를 들면, 데이터를 읽음에 따라, 메모리 컨트롤러가 데이터 칩들 중 하나에 대응하는 다중 비트들이 S706d 단계에서 데이터 칩에 쓰여진 반전된 데이터의 해당 비트들과 일치하지 않는 것으로 결정하면, S708 단계에서 메모리 컨트롤러는 해당 데이터 칩을 소거된 것으로 표시할 것이다. 그러나, 데이터를 읽음에 따라, 메모리 컨트롤러가 데이터 칩들 중 하나의 데이터 칩에 하나의 핀에 대응하는 비트들 중 단지 하나가 S706d 단계에서 데이터 칩에 쓰여진 반전된 데이터의 해당 비트와 일치하지 않는 것으로 결정하면, S708 단계에서 메모리 컨트롤러는 단지 하나의 칩의 하나의 핀만을 소거된 것으로 표시할 것이다.Referring to FIG. 7A , after the memory controller supports chip kill detection in step S706, the memory controller determines whether all detected errors correspond to one chip in step S707. If only one data chip is erased, or multiple DQ errors are detected, but all multiple DQ errors correspond to the same chip, in step S708, the memory controller will write data back to the remaining, unerased chips. , and all subsequent memory processes will use the parity bits of a simple parity algorithm to recover the data corresponding to the erased chip. For example, upon reading the data, if the memory controller determines that multiple bits corresponding to one of the data chips do not match the corresponding bits of the inverted data written to the data chip in step S706d, the memory controller in step S708 will mark that data chip as erased. However, as the data is read, the memory controller determines that only one of the bits corresponding to one pin of one of the data chips does not match the corresponding bit of the inverted data written to the data chip in step S706d. Then, in step S708, the memory controller will mark only one pin of one chip as erased.
그러나, 하나보다 많은 칩이 소거된 것으로 표시되면, S709 단계에서, 메모리 컨트롤러는 치명적이고 정정할 수 없는 에러가 발생한 것으로 판단할 것이다. 즉, 하나보다 많은 칩에서 에러들이 있으면, DRAM은 패리티를 수행하기 위한 충분한 자원들을 더 이상 가질 수 없고, 예비의 추가적인 칩들은 없을 것이기 때문에, 임의의 추가적인 칩 에러는 DRAM의 교체를 필요로 하는 정정할 수 없고, 치명적인 에러일 것이다.However, if more than one chip is marked as erased, in step S709, the memory controller will determine that a fatal and uncorrectable error has occurred. That is, if there are errors in more than one chip, the DRAM will no longer have sufficient resources to perform parity, and there will be no additional chips in reserve, so any additional chip errors will be corrected requiring replacement of the DRAM. It can't be done, it would be a fatal error.
S702 단계로 돌아가서, 에러들 수가 문턱값보다 낮은 것으로 결정되면(예를 들면, 메모리 처리의 단지 얼마 안되는 버스트들이 에러를 갖는 경우), S710 단계에서, 메모리 컨트롤러는 DRAM으로부터 추가적인 버스트를 수신하는 것에 의해 데이터 칩들로부터 데이터를 읽는 것을 재시도한다.Returning to step S702, if it is determined that the number of errors is lower than the threshold (eg, if only a few bursts of memory processing have errors), then in step S710 the memory controller by receiving an additional burst from the DRAM. Retry reading data from data chips.
S710 단계에서 데이터 읽기를 재시도한 후에, S711 단계에서 메모리 컨트롤러는 여전히 감지된 에러가 있는지를 결정한다. S711 단계에서 추가적인 에러가 감지되지 않으면, S712 단계에서 메모리 컨트롤러는 소프트 에러(soft error), 또는 일시적 에러(transient error)가 발생했고, 더 이상 정정이 필요하지 않음을 결정한다. 그러나, S710 단계에서 데이터 읽기 재시도 후에 추가적인 에러가 S711 단계에서 감지되면, S713 단계에서 에러가 S701 단계에서 초기에 감지된 에러와 동일한 에러 패턴을 갖는지가 결정된다. 에러가 동일한 에러 패턴을 갖는지 결정하는 것에 의해, 일치하지 않는 소프트 에러들의 케이스(즉, 소프트 에러가 S701 단계에서 초기에 감지된 케이스)는 무시될 것이고, 후속의 다른 소프트 에러는 메모리 컨트롤러의 S710 단계에서 데이터 읽기를 재시도하는 동안 감지된다.After retrying to read the data in step S710, the memory controller determines whether there is still an error detected in step S711. If no additional error is detected in step S711, in step S712 the memory controller determines that a soft error or a transient error has occurred and correction is no longer required. However, if an additional error is detected in step S711 after the retry of reading data in step S710, it is determined in step S713 whether the error has the same error pattern as the error initially detected in step S701. By determining whether the errors have the same error pattern, the case of inconsistent soft errors (i.e., the case in which the soft error was initially detected in step S701) will be ignored, and any subsequent soft errors in step S710 of the memory controller will be ignored. Detected while retrying to read data from
S713 단계에서 감지된 에러가 S701 단계에서 초기에 감지된 에러와 동일한 에러 패턴을 갖지 않으면, S710 단계로 되돌아가고, 메모리 컨트롤러는 데이터 칩들로부터 데이터 읽기를 다시 재시도한다. 따라서, 순차적이고 동일하지 않은 소프트 에러들이 발생하면, 그렇게 됨으로써 다른 에러 패턴이 야기되면, 메모리 컨트롤러는 데이터 읽기 시도를 계속할 수 있다. 그러나, S713 단계에서 감지된 에러가 S701 단계에서 초기에 감지된 에러와 동일한 에러 패턴을 가지면, S714 단계에서 하드 에러(hard error, 즉 일시적이지 않은 에러)가 발생한 것으로 결정된다.If the error detected in step S713 does not have the same error pattern as the error initially detected in step S701, the process returns to step S710, and the memory controller retries reading data from the data chips again. Thus, if sequential and unequal soft errors occur, resulting in another error pattern, the memory controller can continue trying to read the data. However, if the error detected in step S713 has the same error pattern as the error initially detected in step S701, it is determined that a hard error (i.e., a non-temporary error) has occurred in step S714.
S714 단계에서 하드 에러(일시적이지 않은 에러)의 존재가 결정되는 것에 따라, 그리고 어떤 칩도 아직 소거된 것으로 표시되지 않은 것으로 가정하면, DRAM은 S715 단계에서 메모리 컨트롤러 ECC 메커니즘을 이용하여 하드 에러의 정정을 지원하기 위해 메모리 컨트롤러를 트리거(trigger)한다. 메모리 컨트롤러는 예를 들면, 에러의 현재 주소(예를 들면, 칩 및 핀 어드레스)와 DRAM의 하나 또는 그 이상의 칩들의 에러 레지스터에 저장된 에러 주소를 비교하여 에러 정정을 지원할 수 있다. 메모리 컨트롤러는 또한 DRAM 내 ECC 정보를 이용하여 에러 정정을 지원할 수 있다. 예를 들면, DRAM 내 ECC 정보가 단지 하나의 칩이 정정할 수 없는 DRAM 내 ECC 에러를 갖는 것으로 나타내면, 메모리 컨트롤러는 에러를 복구하기 위해 ECC 칩을 이용할 수 있다.Assuming that the presence of a hard error (non-transient error) is determined in step S714, and assuming that no chip has yet been marked as erased, the DRAM corrects the hard error using the memory controller ECC mechanism in step S715. triggers the memory controller to support The memory controller may, for example, support error correction by comparing the current address of the error (eg, chip and pin address) with an error address stored in an error register of one or more chips of the DRAM. The memory controller may also support error correction using ECC information in DRAM. For example, if ECC information in DRAM indicates that only one chip has an ECC error in DRAM that cannot be corrected, the memory controller can use the ECC chip to repair the error.
S716 단계에서, 메모리 컨트롤러가 성공적으로 하드 에러를 정정했는지 여부가 결정된다. 에러 정정이 성공이면, S717 단계에서, 운영 체제(operating system)는 에러 이벤트를 기록할 수 있고, 메모리 컨트롤러는 각 칩에서 DRAM 내 ECC 정보(예를 들면, 칩 에러 레지스터)를 소거하기 위해 다른 특정 명령을 발행할 수 있다.In step S716, it is determined whether the memory controller has successfully corrected the hard error. If the error correction is successful, in step S717, the operating system may record the error event, and the memory controller may erase ECC information (eg, chip error register) in DRAM in each chip to another specific command can be issued.
그러나, 에러 정정이 성공이 아니면(예를 들면, 하나의 칩은 이미 소거되었고, 그러므로 시스템은 더 이상 ECC 능력을 갖지 않는 경우), 메모리 컨트롤러는 S709 단계에서 치명적인 에러가 발생한 것으로 결정할 것이다.However, if error correction is not successful (eg, one chip has already been erased, and therefore the system no longer has ECC capability), the memory controller will determine that a fatal error has occurred in step S709.
메모리 컨트롤러가 치명적이고 정정 가능하지 않은 에러를 S709 단계에서 식별하면, 운영 체제는 시스템/어플리케이션 레벨의 에러 복구를 수행할 수 있다. 예를 들면, 운영 체제는 페이지의 콘텐츠(content)를 다른 물리적 페이지로 재배치하여 해당 물리적 페이지를 리타이어(retire)할 수 있고, 리타이어된 페이지를 가상 메모리 시스템에 의해 후속적으로 할당되지 않아야 하는 물리적 페이지들의 리스트에 배치할 수 있다. 리타이어된 물리적 페이지들의 수가 증가함에 따라(예를 들면, 정정할 수 없는 에러들의 수가 증가함에 따라), 시스템의 유효한 메모리 용량은 감소된다.If the memory controller identifies a fatal and uncorrectable error in step S709, the operating system may perform system/application level error recovery. For example, an operating system can retire a physical page by relocating the contents of the page to another physical page, and the retired page is a physical page that should not subsequently be allocated by the virtual memory system. can be placed in a list of . As the number of retired physical pages increases (eg, as the number of uncorrectable errors increases), the effective memory capacity of the system decreases.
따라서, 본 발명의 실시 예들은 DDR4에 의해 제공되는 것과 같은 기본 칩킬 RAS 특징들을 제공할 수 있는 아키텍처를 제공하는데, 감소된(예를 들면, 최소의) ECC 칩 오버헤드(즉, 메모리 채널 당 하나의 ECC 칩), 감소된(예를 들면, 최소의) 내부 프리패치 크기(프리패치 크기는 DRAM 내부 ECC와 동일한 사이즈), 그리고 DDR4에 대응하는 인터페이스에 대한 DDR 인터페이스의 감소된(예를 들면, 최소의) 변경들을 하면서도 이러한 특징들을 제공하는 것이 가능하다. 추가적으로, 본 발명의 실시 예들은 DDR4 보다 좁은 채널 폭과 함께 새로운 DDR 인터페이스를 위해 125%의 저장 장치 오버헤드를 제공하고, 기본 칩킬 능력 및 시스템 ECC를 지원하고, 그리고 메모리 컨트롤러 지원 에러 감지 메커니즘을 지원한다.Accordingly, embodiments of the present invention provide an architecture capable of providing the same basic chipkill RAS features as provided by DDR4, with reduced (eg, minimal) ECC chip overhead (ie, one per memory channel). of ECC chip), reduced (e.g., minimum) internal prefetch size (prefetch size is the same size as DRAM internal ECC), and reduced (e.g., It is possible to provide these features with minimal) changes. Additionally, embodiments of the present invention provide 125% storage overhead for the new DDR interface with a narrower channel width than DDR4, support basic chip kill capabilities and system ECC, and support memory controller support error detection mechanisms. do.
뿐만 아니라, 본 발명의 실시 예들은 메모리 채널 당 단지 하나의 ECC 칩을 가짐에도 불구하고 기본적인 칩킬 능력 및 시스템 ECC를 제공할 수 있다. 본 발명의 실시 예들은 또한 메모리 컨트롤러가 DRAM 장치로부터의 지원과 함께 고장 칩을 식별하게 하는 메커니즘을 제공하고, DRAM 내 ECC 정보를 출력하기 위한 메커니즘(예를 들면, 추가적인 버스트 랭스, 추가 핀, 또는 DRAM으로부터 레지스터 출력을 이용하는 것에 의한)을 제공하고, 에러 종류(예를 들면, 소프트 에러 또는 하드 에러)를 식별하기 위한 재시도 메커니즘을 제공하고, 그리고 독립적인 또는 같은 방식(lock-step)의 메모리 채널 중 하나를 이용하여, 그리고 SEC-DEC 또는 칩킬 ECC를 이용하여 상이한 ECC 능력을 제공한다.In addition, embodiments of the present invention can provide basic chip kill capability and system ECC despite having only one ECC chip per memory channel. Embodiments of the present invention also provide a mechanism for the memory controller to identify a failed chip with support from the DRAM device, and a mechanism for outputting ECC information in the DRAM (e.g., additional burst length, additional pins, or by using register outputs from DRAM), provide a retry mechanism to identify the type of error (e.g., soft error or hard error), and independent or lock-step memory Different ECC capabilities are provided using one of the channels and using either SEC-DEC or chipkill ECC.
상기 설명은 예시적인 실시 예들을 설명하기 위한 것이며, 본 발명을 제한하는 것으로 해석되지 않는다. 비록 몇몇의 예시적인 실시 예들이 설명되었지만, 당업자는 예시적인 실시 예의 신규한 교시 및 이점으로부터 실질적으로 벗어나지 않고도 예시적인 실시 예에서 많은 수정이 가능하다는 것을 용이하게 이해할 것이다. 따라서, 그러한 모든 수정은 청구항에 정의된 예시적인 실시 예들의 범위 내에 포함되도록 의도된다. 청구 범위에서, 기능식 표현은 구조적 등가물뿐만 아니라 등가 구조를 열거하여 본 명세서에서 설명된 구조를 포함하도록 의도되었다. 그러므로, 상기 설명은 예시적인 실시 예들을 설명하기 위한 것이며, 개시된 특정 실시 예들에 한정되는 것으로 해석되어서는 안되며, 개시된 예시적인 실시 예들뿐만 아니라 다른 예시적인 실시 예들에 대한 수정이 포함되는 것으로 이해되어야 한다. 첨부된 청구 범위의 범주 내에서 본 발명의 개념은 다음의 청구 범위에 의해 정의되고, 청구 범위의 균등물도 포함된다.The above description is intended to describe exemplary embodiments and is not to be construed as limiting the present invention. Although several exemplary embodiments have been described, those skilled in the art will readily appreciate that many modifications are possible in the exemplary embodiments without substantially departing from the novel teachings and advantages of the exemplary embodiments. Accordingly, all such modifications are intended to be included within the scope of the exemplary embodiments defined in the claims. In the claims, functional expression expressions are intended to include structures described herein by reciting equivalent structures as well as structural equivalents. Therefore, the above description is intended to explain exemplary embodiments, and should not be construed as being limited to the specific disclosed embodiments, and it should be understood that modifications to the disclosed exemplary embodiments as well as other exemplary embodiments are included. . The inventive concept within the scope of the appended claims is defined by the following claims, including the equivalents of the claims.

Claims (5)

  1. DDR(double data rate) 인터페이스를 이용하여 DRAM(dynamic random-access memory module)의 메모리 에러를 정정하는 방법에 있어서,A method for correcting a memory error of a dynamic random-access memory module (DRAM) using a double data rate (DDR) interface,
    상기 DRAM의 데이터 칩들로부터 메모리 컨트롤러로 데이터를 보내기 위해 다중 버스트들을 포함하는 메모리 처리(transaction)를 상기 메모리 컨트롤러와 함께 수행하는 단계;performing a memory transaction including multiple bursts with the memory controller to send data from data chips of the DRAM to the memory controller;
    상기 DRAM의 ECC 칩을 이용하여 하나 또는 그 이상의 에러들을 감지하는 단계;detecting one or more errors using an ECC chip of the DRAM;
    상기 DRAM의 상기 ECC 칩을 이용하여 상기 에러들을 갖는 상기 버스트들의 수를 결정하는 단계;determining the number of bursts with the errors using the ECC chip of the DRAM;
    상기 에러들을 갖는 상기 버스트들의 수가 문턱값(threshold number)보다 큰지 여부를 결정하는 단계;determining whether the number of bursts with errors is greater than a threshold number;
    상기 에러들의 종류를 결정하는 단계; 및determining the type of errors; and
    상기 결정된 상기 에러들의 종류에 기초하여 상기 메모리 컨트롤러를 지시하는 단계를 포함하되,Instructing the memory controller based on the determined types of errors,
    상기 DRAM은 메모리 채널당 하나의 ECC 칩을 포함하는 방법.wherein the DRAM comprises one ECC chip per memory channel.
  2. 청구항 1에 있어서,The method of claim 1,
    상기 DRAM의 상기 ECC 칩을 이용하여 상기 하나 또는 그 이상의 에러들을 감지하는 단계는:Detecting the one or more errors using the ECC chip of the DRAM comprises:
    상기 ECC 칩을 이용하여 상기 버스트들 각각마다 패리티 체크(parity check0를 수행하는 단계를 포함하는 방법.And performing a parity check (parity check0) for each of the bursts using the ECC chip.
  3. 청구항 1에 있어서,The method of claim 1,
    상기 에러들을 갖는 상기 버스트들의 수가 상기 문턱값보다 크지 않으면 상기 DRAM으로부터 메모리 읽기를 재시도하도록 상기 메모리 컨트롤러를 지시하는 단계를 더 포함하는 방법.instructing the memory controller to retry a memory read from the DRAM if the number of bursts with errors is greater than the threshold.
  4. 청구항 3에 있어서,The method of claim 3,
    상기 메모리 컨트롤러가 상기 메모리 읽기를 재시도하면 추가적인 에러를 감지하는 단계; 및detecting an additional error when the memory controller retries reading the memory; and
    상기 추가적인 에러가 상기 감지된 하나 또는 그 이상의 에러들과 동일한 에러 패턴을 갖는지 여부를 결정하는 단계를 더 포함하는 방법.The method further comprising determining whether the additional error has the same error pattern as the detected one or more errors.
  5. 청구항 4에 있어서,The method of claim 4,
    상기 추가적인 에러가 상기 감지된 하나 또는 그 이상의 에러들과 상이한 에러 패턴을 갖는 것으로 결정되면 상기 DRAM으로부터 메모리 읽기를 다시 재시도하도록 상기 메모리 컨트롤러를 지시하는 단계를 더 포함하는 방법.instructing the memory controller to again retry a memory read from the DRAM if it is determined that the additional error has a different error pattern than the one or more detected errors.
PCT/KR2021/018371 2021-12-06 2021-12-06 Dram assist error correction method using ddr sdram interface WO2023106434A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2021-0173109 2021-12-06
KR20210173109 2021-12-06

Publications (1)

Publication Number Publication Date
WO2023106434A1 true WO2023106434A1 (en) 2023-06-15

Family

ID=86730649

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2021/018371 WO2023106434A1 (en) 2021-12-06 2021-12-06 Dram assist error correction method using ddr sdram interface

Country Status (1)

Country Link
WO (1) WO2023106434A1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090118031A (en) * 2007-06-28 2009-11-17 인터내셔널 비지네스 머신즈 코포레이션 System and method for error correction and detection in a memory system
KR20160030978A (en) * 2013-07-31 2016-03-21 후아웨이 테크놀러지 컴퍼니 리미티드 Access method and device for message-type memory module
KR20180019473A (en) * 2016-08-15 2018-02-26 삼성전자주식회사 A dram assist error correction mechanism for ddr sdram interface
KR20190049710A (en) * 2016-09-30 2019-05-09 인텔 코포레이션 Extended application of error checking and correction codes in memory
KR20210055793A (en) * 2018-10-16 2021-05-17 마이크론 테크놀로지, 인크 Error correction method and device

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090118031A (en) * 2007-06-28 2009-11-17 인터내셔널 비지네스 머신즈 코포레이션 System and method for error correction and detection in a memory system
KR20160030978A (en) * 2013-07-31 2016-03-21 후아웨이 테크놀러지 컴퍼니 리미티드 Access method and device for message-type memory module
KR20180019473A (en) * 2016-08-15 2018-02-26 삼성전자주식회사 A dram assist error correction mechanism for ddr sdram interface
KR20190049710A (en) * 2016-09-30 2019-05-09 인텔 코포레이션 Extended application of error checking and correction codes in memory
KR20210055793A (en) * 2018-10-16 2021-05-17 마이크론 테크놀로지, 인크 Error correction method and device

Similar Documents

Publication Publication Date Title
KR102191223B1 (en) A dram assist error correction mechanism for ddr sdram interface
CN108268340B (en) Method for correcting errors in memory
EP2311043B1 (en) Method and apparatus for repairing high capacity/high bandwidth memory devices
US7096407B2 (en) Technique for implementing chipkill in a memory system
US8811065B2 (en) Performing error detection on DRAMs
US6598199B2 (en) Memory array organization
JP2021509499A (en) How to operate the memory controller, how to switch from dual channel mode to single channel mode, and the memory controller
EP1194849B1 (en) A system and method for improving multi-bit error protection in computer memory systems
WO2023106434A1 (en) Dram assist error correction method using ddr sdram interface
CN116486891A (en) Shadow DRAM with CRC+RAID architecture for high RAS features in CXL drives, system and method
JPH02159649A (en) Storage circuit

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 21967307

Country of ref document: EP

Kind code of ref document: A1