KR20180019473A - Ddr sdram 인터페이스를 위한 dram 지원 에러 정정 메커니즘 - Google Patents
Ddr sdram 인터페이스를 위한 dram 지원 에러 정정 메커니즘 Download PDFInfo
- Publication number
- KR20180019473A KR20180019473A KR1020170049215A KR20170049215A KR20180019473A KR 20180019473 A KR20180019473 A KR 20180019473A KR 1020170049215 A KR1020170049215 A KR 1020170049215A KR 20170049215 A KR20170049215 A KR 20170049215A KR 20180019473 A KR20180019473 A KR 20180019473A
- Authority
- KR
- South Korea
- Prior art keywords
- error
- dram
- chip
- ecc
- memory
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1044—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0617—Improving the reliability of storage systems in relation to availability
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital 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/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/409—Read-write [R-W] circuits
- G11C11/4096—Input/output [I/O] data management or control circuits, e.g. reading or writing circuits, I/O drivers or bit-line switches
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C5/00—Details of stores covered by group G11C11/00
- G11C5/02—Disposition of storage elements, e.g. in the form of a matrix array
- G11C5/04—Supports for storage elements, e.g. memory modules; Mounting or fixing of storage elements on such supports
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Dram (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
- Detection And Correction Of Errors (AREA)
- Retry When Errors Occur (AREA)
Abstract
DDR(double data rate) 인터페이스를 이용하여 DRAM(dynamic random-access memory module)의 메모리 에러를 정정하는 방법에 있어서, 방법은 상기 DRAM의 데이터 칩들로부터 메모리 컨트롤러로 데이터를 보내기 위해 다중 버스트들을 포함하는 메모리 처리(transaction)를 상기 메모리 컨트롤러와 함께 수행하는 단계, 상기 DRAM의 ECC 칩을 이용하여 하나 또는 그 이상의 에러들을 감지하는 단계, 상기 DRAM의 상기 ECC 칩을 이용하여 상기 에러들을 갖는 상기 버스트들의 수를 결정하는 단계, 상기 에러들을 갖는 상기 버스트들의 수가 문턱값(threshold number)보다 큰지 여부를 결정하는 단계, 상기 에러들의 종류를 결정하는 단계, 및 상기 결정된 상기 에러들의 종류에 기초하여 상기 메모리 컨트롤러를 지시하는 단계를 포함하되, 상기 DRAM은 메모리 채널당 하나의 ECC 칩을 포함한다.
Description
본 발명에 따른 실시 예들의 하나 또는 그 이상의 양상들은 메모리 에러 정정을 위한 방법들 및 메커니즘들에 관한 것이다.
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)을 효율적으로 두 배로 높이고, 그리고 그렇게 함으로써 약 두 배의 대역폭을 달성한다.
다양한 세대들의 DRAM은 데이터 오류의 일반적인 유형들을 감지하고 때때로 정정 모두를 하기 위해 데이터 저장 중에 ECC(error-correcting code) 메모리를 이용할 수 있다. ECC 메모리는 패리티 검사(parity checking)의 이용을 통해 하나의 비트 에러들에 영향을 받지 않는다. DRAM 시스템들에서, 패리티 검사는, 메모리(예를 들면, DRAM 모듈의 패리티 장치 또는 ECC 칩)에 저장되는 데이터(예를 들면, 1 바이트 데이터)의 (홀수 또는 짝수) 패리티를 나타내는 여분의 패리티 비트를 저장하고, 독립적으로 패리티를 계산하고, 그리고 데이터 에러/메모리 에러가 발생했는지 여부를 감지하기 위해 저장된 패리티와 계산된 패리티를 비교하는 것에 의해 달성될 수 있다.
따라서, DRAM 모듈(예를 들면, DIMM(dual in-line memory module))에서 회수된(retrieved), 데이터 워드(data word) 또는 데이터 심볼(data symbol)에 대응할 수 있는, 데이터가 DRAM 모듈에 쓰여진 데이터와 동일한 것을 보장하기 위해, ECC는 데이터의 하나 또는 그 이상의 비트들이 잘못된 상태로 뒤집히는 경우에 발생하는 에러들을 정정할 수 있다.
즉, ECC 리던던시(Redundancy)를 이용하여, ECC 칩은 SEC-DED(single error correction double error detection)를 할 수 있다. SEC-DED는 ECC 칩이 하나의 버스트(burst)에서 발생하는 두 개의 에러들의 존재를 감지할 수 있고, 그리고 또한 별개로 발생하는 경우에 한 개의 잘못된 비트를 정정할 수 있는 것을 의미한다. 즉, 하나의 데이터 칩이 오류가 있거나 손실되면, 남아있는 데이터 칩들의 데이터 및 ECC 칩의 ECC 데이터를 이용하여, 오류가 있거나 분실된 데이터 칩의 데이터는 복원될 수 있다.
추가적으로, DRAM 시스템들은 비기능적(nonfunctional)인 데이터 칩들의 지우기(erasing), 또는 불능화(disabling)를 위한 칩킬(chipkill) 메커니즘들을 포함할 수 있다. DDR4의 다양한 칩킬 메커니즘들은 비기능적인 칩들을 감지하고, 위치를 찾아내고, 그리고 지우기 위해 메모리 채널당 두 개 또는 그 이상의 ECC 장치들/칩들을 이용할 수 있다.
예를 들면, 일반 DDR4는 8n의 프리패치 랭스(prefetch length), 8의 버스트 랭스(burst length, 즉, 메모리 처리(memory transaction)당 8개의 버스트들), 그리고 64비트의 메모리 채널 폭(width)을 포함한다. 여기서 n은 해당 시스템 구조에서 이용되는 데이터의 인터페이스 폭(interface width)의 비트 수이다. (예를 들면, 인터페이스 폭이 4비트면, 그러면 해당 DDR4 시스템의 프리패치 랭스는 32비트다.) 따라서, DDR4는 각 메모리 처리마다 512비트를 전송할 것이다.
DDR 인터페이스 대역폭을 증가를 계속하기 위해, 새로운 DDR 인터페이스는 프리패치 랭스를 증가시킬 수 있다. 이러한 새로운 DDR 인터페이스는 현재 DDR4 인터페이스의 프리패치 랭스의 두 배인 16n의 프리패치 랭스를 포함할 수 있다. 그러므로, 새로운 DDR 인터페이스는 각 메모리 처리마다 DDR4 시스템에 의해 전송되는 데이터 양의 두 배를 전송할 것이다. 이러한 새로운 DDR 인터페이스는 또한 16의 버스트 랭스(즉, 각 개별적 메모리 처리에서 데이터의 16개 버스트들), 및 메모리 채널당 32비트의 메모리 채널 폭을 포함할 수 있고, 그러므로 각 메모리 처리마다 메모리 채널당 512비트를 또한 전송할 것이다. 그러나, 이러한 DDR 인터페이스는 DIMM당 두 개의 메모리 채널들을 포함하고, 각 DIMM은 컴퓨터 마더보드(motherboard)와 연결을 가능하게 하는 칩 핀들(chip pins)을 포함하는 회로 기판(circuit board) 상에 다중 DRAM 칩들을 포함하는 모듈이다. DDR DIMM의 두 개의 메모리 채널들은 서로 독립적으로 효과적으로 동작한다.
DDR4보다 좁은 메모리 채널을 포함함에도 불구하고, 새로운 DDR 인터페이스는 각 메모리 채널에서 데이터를 저장하고 전송하도록 구성되는 8개 데이터 장치들(예를 들면, 4비트의 데이터 칩들)과 함께 메모리 채널당 32비트의 데이터 폭을 포함한다. 이러한 새로운 DDR 인터페이스는 또한 각 메모리 채널을 위한 하나의 4비트 ECC 칩과 함께 메모리 채널당 4비트의 ECC 폭을 포함한다. 따라서, DDR4의 메모리 채널 폭의 절반을 갖는 것을 보상하기 위해, 이러한 새로운 DDR 인터페이스는 DDR4의 두 배인 버스트 랭스를 포함한다. 이러한 새로운 DDR 인터페이스는 두 개의 메모리 채널들을 포함하고, 각 메모리 채널은 데이터를 저장하기 위한 전용의 8개의 4비트 데이터 칩들을 포함하기 때문에, 버스트당 총 64비트의 메모리 데이터가 있다.
뿐만 아니라, 메모리 채널당 두 개의 ECC 칩들을 포함하는 DDR4와 달리, 이러한 새로운 DDR 인터페이스는 데이터를 저장하기 위해 이용되는 16개 데이터 칩들을 보호하기 위해, 메모리 채널당 하나의 ECC 칩, 또는 심지어 DIMM당 하나의 ECC 칩을 포함할 수 있다. 그러므로 새로운 DDR 인터페이스는 DDR4에 비해 ECC 오버헤드(overhead)를 줄일 수 있다. 따라서, 새로운 DDR 인터페이스가 메모리 채널당 하나의 ECC 칩을 이용하면, 버스트마다 두 개의 4비트 ECC 칩들에 대응하는 8비트의 ECC 데이터가 있을 것이다. 여기서 하나의 ECC 칩은 DIMM의 두 개의 메모리 채널들 각각에 있다. 따라서, 이러한 새로운 DDR 인터페이스는 버스트마다 72비트의 데이터를 전송할 것이다.
시스템 ECC 오버헤드는 데이터 폭의 감소에 대응하여 증가하므로, 현재 DDR4 기술들을 이용하여 DDR RAS(reliability, availability, and serviceability)를 유지하는 것은 어려울 수 있다. 뿐만 아니라, 칩킬 기술들은 증가된 DIMM당 메모리 채널들의 수로 인한 추가적인 ECC 오버헤드를 필요로 한다.
따라서, 에러 정정 및 데이터 복원의 새로운 방법들을 제공하는 것, 그리고 메모리 컨트롤러로부터의 지원 없이 내부적으로 메모리 에러들의 일부 유형들을 정정하는 것이 가능하고 그리고 DRAM이 내부적으로 정정할 수 없는 에러들의 다른 유형들을 위한 메모리 정정을 지원하기 위해 메모리 컨트롤러를 지시하는 것이 가능한 DRAM DIMM을 제공하는 것이 유용할 수 있다..
본 발명은 상술한 기술적 과제를 해결하기 위한 것으로, 본 발명은 DDR SDRAM 인터페이스를 위한 DRAM 지원 에러 정정 메커니즘을 제공할 수 있다.
본 개시의 실시 예들의 양상들은 에러를 정정하기 위해 DRAM 내 ECC를 이용하는 새로운 DDR 인터페이스에 관한 것이다.
본 발명의 실시 예에 따르면, DDR(double data rate) 인터페이스를 이용하여 DRAM(dynamic random-access memory module)의 메모리 에러를 정정하는 방법이 제공된다. 방법은 상기 DRAM의 데이터 칩들로부터 메모리 컨트롤러로 데이터를 보내기 위해 다중 버스트들을 포함하는 메모리 처리(transaction)를 상기 메모리 컨트롤러와 함께 수행하는 단계, 상기 DRAM의 ECC 칩을 이용하여 하나 또는 그 이상의 에러들을 감지하는 단계, 상기 DRAM의 상기 ECC 칩을 이용하여 상기 에러들을 갖는 상기 버스트들의 수를 결정하는 단계, 상기 에러들을 갖는 상기 버스트들의 수가 문턱값(threshold number)보다 큰지 여부를 결정하는 단계, 상기 에러들의 종류를 결정하는 단계, 및 상기 결정된 상기 에러들의 종류에 기초하여 상기 메모리 컨트롤러를 지시하는 단계를 포함하되, 상기 DRAM은 메모리 채널당 하나의 ECC 칩을 포함한다.
상기 DRAM의 상기 ECC 칩을 이용하여 상기 하나 또는 그 이상의 에러들을 감지하는 단계는 상기 ECC 칩을 이용하여 상기 버스트들 각각마다 패리티 체크(parity check)를 수행하는 단계를 포함할 수 있다.
방법은 상기 에러들을 갖는 상기 버스트들의 수가 상기 문턱값보다 크지 않으면 상기 DRAM으로부터 메모리 읽기를 재시도하도록 상기 메모리 컨트롤러를 지시하는 단계를 더 포함할 수 있다.
방법은 상기 메모리 컨트롤러가 상기 메모리 읽기를 재시도하면 추가적인 에러를 감지하는 단계, 및 상기 추가적인 에러가 상기 감지된 하나 또는 그 이상의 에러들과 동일한 에러 패턴을 갖는지 여부를 결정하는 단계를 더 포함할 수 있다.
방법은 상기 추가적인 에러가 상기 감지된 하나 또는 그 이상의 에러들과 상이한 에러 패턴을 갖는 것으로 결정되면 상기 DRAM으로부터 메모리 읽기를 다시 재시도하도록 상기 메모리 컨트롤러를 지시하는 단계를 더 포함할 수 있다.
방법은 상기 추가적인 에러가 상기 감지된 하나 또는 그 이상의 에러들과 같이 동일한 에러 패턴을 갖는 것으로 결정되면 하드 에러(hard error)를 식별하는 단계, 에러 정정에서 상기 DRAM을 지원하도록 상기 메모리 컨트롤러를 지시하는 단계, 및 상기 에러의 어드레스(address)를 기록하는 단계를 더 포함할 수 있다.
방법은 상기 에러들을 갖는 상기 버스트들의 수가 상기 문턱값보다 크면 상기 하나 또는 그 이상의 에러들이 동일한 칩의 동일한 핀에 대응하는지 여부를 결정하는 단계를 더 포함할 수 있다.
방법은 상기 하나 또는 그 이상의 에러들이 상기 DRAM의 동일한 칩의 동일한 핀에 대응하는 것으로 결정되면 상기 에러는 DQ 고장(DQ failure)에 대응하는 것으로 결정하는 단계, 및 상기 하나 또는 그 이상의 에러들이 상기 동일한 칩의 상기 동일한 핀에 대응하지 않는 것으로 결정되면 상기 하나 또는 그 이상의 에러들은 칩 고장(chip failure)에 대응하는 것으로 결정하는 단계를 더 포함할 수 있다.
상기 메모리 컨트롤러를 지시하는 단계는 상기 하나 또는 그 이상의 에러들이 상기 DQ 고장 또는 상기 칩 고장에 대응하면 칩킬 감지(chipkill detection)를 지원하도록 메모리 컨트롤러를 지시하는 단계를 포함할 수 있다.
방법은 상기 에러들을 갖는 상기 버스트들의 수가 상기 문턱값보다 크면 상기 하나 또는 그 이상의 에러들이 상기 DRAM의 하나보다 많은 칩에 대응하는지 여부를 결정하는 단계, 상기 하나 또는 그 이상의 에러들이 상기 DRAM의 동일한 칩에 대응하는 것으로 결정되면 상기 DRAM의 해당 칩은 소거된 것으로 표시하는 단계, 및 상기 하나 또는 그 이상의 에러들이 상기 DRAM의 하나보다 많은 칩에 대응하는 것으로 결정되면 치명적인 에러(fatal error)를 식별하는 단계를 더 포함할 수 있다.
방법은 상기 에러들을 갖는 상기 버스트들의 수가 상기 문턱값보다 크면 상기 DRAM의 다른 칩이 이전에 소거되었는지 여부를 결정하는 단계, 및 상기 DRAM의 상기 다른 칩이 이전에 소거되었으면 치명적인 에러를 식별하는 단계를 더 포함할 수 있다.
본 발명의 다른 실시 예에 따르면, DDR(double data rate) 인터페이스를 통해 메모리 컨트롤러와 통신하는 DRAM(dynamic random-access memory module)이 제공되고, DRAM은 두 개의 메모리 채널들을 포함하되, 각 메모리 채널들은, 내부에 데이터를 저장하고, 하나의 메모리 처리(transaction)에 대응하는 각각의 다중 버스트들 동안 상기 메모리 컨트롤러로 한번 데이터를 전달하는 다중 데이터 칩들 및 상기 데이터 칩들의 하나 또는 그 이상에 대응하는 메모리 에러를 갖는 상기 다중 버스트들의 수를 결정하는 하나의 ECC(error-correction code) 칩을 포함한다.
상기 ECC 칩은 에러를 감지하고, 상기 감지된 에러의 종류를 DQ 고장(DQ failure), 칩 고장(chip failure), 소프트 에러(soft error) 또는 하드 에러(hard error) 중 어느 하나로 결정할 수 있다.
상기 ECC 칩은 칩킬 감지(chipkill detection) 지원하거나 또는 상기 감지된 에러의 상기 결정된 종류에 따라 에러 정정을 지원하도록 메모리 컨트롤러에 지시할 수 있다.
상기 ECC 칩이 에러를 감지하면 상기 메모리 컨트롤러가 상기 ECC 칩의 정보 출력을 수행하도록 상기 ECC 칩은 상기 메모리 컨트롤러로 명령을 발행할 수 있다.
DRAM은 상기 ECC 칩이 하나의 비트의 ECC 플래그(1-bit ECC flag)를 이용하여 에러를 감지하면 상기 메모리 처리 동안 상기 메모리 컨트롤러로 알리는(alert) 상기 ECC 칩과 연결된 하나의 핀을 더 포함할 수 있다.
상기 데이터 칩들 및 상기 ECC 칩은 각 메모리 처리 동안 상기 메모리 컨트롤러로 ECC 칩의 정보 출력을 제공하기 위해 상기 다중 버스트들에 더해 추가적인 버스트를 상기 메모리 컨트롤러로 전달할 수 있다.
본 발명의 다른 실시 예에 따르면, 메모리 컨트롤러 및 데이터 칩들과 ECC(error-correction code) 칩들을 포함하는 DRAM(dynamic random-access memory module)을 포함하되, 상기 ECC 칩들 각각은 상기 DRAM의 해당 메모리 채널의 일부 에러들을 정정하고, 상기 메모리 컨트롤러는 상기 ECC 칩들이 정정할 수 없는 다른 에러들을 정정하기 위해 상기 ECC 칩들을 지원하는 메모리 시스템이 제공된다.
상기 ECC 칩들 각각은 에러 감지에 따라 상기 메모리 컨트롤러로 하나의 비트의 ECC 플래그(1-bit ECC flag)를 보내기 위한 핀을 포함할 수 있다.
상기 DRAM은 복수의 메모리 채널들을 포함할 수 있고, 상기 DRAM의 상기 복수의 메모리 채널들 각각은 상기 ECC 칩들 중 하나를 포함할 수 있다.
본 발명의 실시 예들은 DDR4에 의해 제공되는 것과 같은 기본 칩킬 RAS 특징들을 제공할 수 있는 아키텍처를 제공하는데, 감소된 ECC 칩 오버헤드(즉, 메모리 채널 당 하나의 ECC 칩), 감소된 내부 프리패치 크기, 그리고 DDR4에 대응하는 인터페이스에 대한 DDR 인터페이스의 감소된 변경들을 하면서도 이러한 특징들을 제공하는 것이 가능하다.
본 발명의 이들 및 다른 양상들은 본 명세서, 청구 범위 및 첨부 도면을 참조하여 인식되고 이해될 것이다.
도 1은 본 발명의 실시 예에 따른 DDR 인터페이스를 위한 에러 정정 메커니즘을 도시한 블록도이다.
도 2는 본 발명의 다른 실시 예에 따른 DDR 인터페이스를 위한 에러 정정 메커니즘을 도시한 블록도이다.
도 3은 본 발명의 또 다른 실시 예에 따른 DDR 인터페이스를 위한 에러 정정 메커니즘을 도시한 블록도이다.
도 4는 본 발명의 또 다른 실시 예에 따른 DDR 인터페이스를 위한 에러 정정 메커니즘을 도시한 블록도이다.
도 5는 본 발명의 또 다른 실시 예에 따른 DDR 인터페이스를 위한 에러 정정 메커니즘을 도시한 블록도이다.
도 6은 본 발명의 또 다른 실시 예에 따른 DDR 인터페이스를 위한 에러 정정 메커니즘을 도시한 블록도이다.
도 7a 및 도 7b는 본 발명의 하나 이상의 실시 예들에 따라 DAECC(DRAM assist error correction code) 메커니즘을 이용해 에러의 감지, 에러 종류의 결정, 그리고 에러를 핸들링(handling)하는 것을 도시한 순서도들이다.
도 1은 본 발명의 실시 예에 따른 DDR 인터페이스를 위한 에러 정정 메커니즘을 도시한 블록도이다.
도 2는 본 발명의 다른 실시 예에 따른 DDR 인터페이스를 위한 에러 정정 메커니즘을 도시한 블록도이다.
도 3은 본 발명의 또 다른 실시 예에 따른 DDR 인터페이스를 위한 에러 정정 메커니즘을 도시한 블록도이다.
도 4는 본 발명의 또 다른 실시 예에 따른 DDR 인터페이스를 위한 에러 정정 메커니즘을 도시한 블록도이다.
도 5는 본 발명의 또 다른 실시 예에 따른 DDR 인터페이스를 위한 에러 정정 메커니즘을 도시한 블록도이다.
도 6은 본 발명의 또 다른 실시 예에 따른 DDR 인터페이스를 위한 에러 정정 메커니즘을 도시한 블록도이다.
도 7a 및 도 7b는 본 발명의 하나 이상의 실시 예들에 따라 DAECC(DRAM assist error correction code) 메커니즘을 이용해 에러의 감지, 에러 종류의 결정, 그리고 에러를 핸들링(handling)하는 것을 도시한 순서도들이다.
본 발명의 특징들 및 이를 달성하는 방법들은 이하의 실시 예들 및 첨부된 도면들의 상세한 설명을 참조하면 좀 더 쉽게 이해될 수 있다. 이하, 본 발명의 실시 예들은 동일한 참조 번호들은 동일한 구성 요소들을 참조하는 첨부된 도면들을 참조하여 좀 더 상세하게 설명될 것이다. 그러나, 본 발명은 다양한 형태로 구체화 될 수 있고, 본 명세서에서 도시된 실시 예들에만 한정되는 것으로 해석되지 않는다. 오히려, 이러한 실시 예들은 본 발명이 철저하고 완전하며 본 발명의 양상 및 특징을 당업자에게 충분히 전달할 수 있도록 예들로서 제공된다. 따라서, 본 발명의 양상들 및 특징들의 완전한 이해를 위해 당업자에게 불필요한 프로세스들, 요소들, 및 기술들은 설명되지 않을 수 있다. 또 다른 언급이 없는 한, 첨부 도면 및 상세한 설명 전반에 걸쳐 동일한 참조 부호는 동일한 요소를 나타내며, 따라서 그 설명은 반복하지 않을 것이다. 도면에서, 요소들, 층들, 및 영역들의 상대적 크기들은 명확성을 위해 과장될 수 있다.
"제 1", "제 2", "제 3"등의 용어는 본 명세서에서 다양한 구성 요소들, 성분들, 영역들, 층들 및/또는 섹션들을 설명하기 위해 이용될 수 있지만, 이러한 구성 요소들, 성분들, 영역들, 층들 및/또는 섹션들은 이러한 용어들에 의해 제한되지 않는 것으로 이해될 것이다. 이러한 용어들은 하나의 요소, 성분, 영역, 층 또는 섹션을 다른 요소, 성분, 영역, 층 또는 섹션과 구별하기 위해 이용된다. 따라서, 이하에서 설명되는 제 1 구성 요소, 성분, 영역, 층 또는 섹션은 본 발명의 사상 및 범위를 벗어나지 않고 제 2 구성 요소, 성분, 영역, 층 또는 섹션으로 설명될 수 있다.
하나의 요소 또는 도면에서 도시된 다른 구성 요소(들) 또는 특징(들)과의 특징적인 관계를 설명하기 위한 설명을 용이하게 하기 위해 “아래의”, “아래”, “낮은”, “특정 부분 아래”, “위에”, “상부”와 같은 공간적이고 상대적인 용어들이 여기에서 이용될 수 있다. 공간적이고 상대적인 용어들은 도면에서 묘사된 방향에 더해 이용 또는 동작에서 장치의 다른 방향들을 포함하도록 의도된 것이 이해될 것이다. 예를 들면, 만약 도면의 장치가 뒤집어지면, 다른 구성 요소들 또는 특징들의 “아래” 또는 “아래의” 또는 “특정 부분 아래”로 설명된 구성요소들은 다른 구성 요소들 또는 특징들의 “위로” 맞춰지게 된다. 따라서, “아래의” 또는 “특정 부분 아래”의 예시적인 용어들은 위 또는 아래 방향 모두를 포함할 수 있다. 장치는 다르게 맞춰질 수 있으며(예를 들면, 90도 도는 다른 방향으로 회전됨) 그리고 공간적으로 상대적인 기술어들은 그에 따라 해석되어야 한다.
구성 요소, 층, 영역, 또는 성분이 다른 구성 요소, 층, 영역 또는 성분 “에”, “에 연결된”, “에 결합된” 것으로 언급되는 때, 그것은 다른 요소, 층, 영역, 또는 성분 “에 직접적으로”, “에 직접적으로 연결된”, “에 직접적으로 결합된”일 수 있거나, 하나 또는 그 이상의 사이의 구성 요소들, 층들, 영역들, 또는 성분들이 존재할 수 있다. 또한, 구성 요소 또는 층이 두 개의 요소들 또는 층들 사이로 언급되는 때, 그것은 단지 요소 또는 층이 두 구성 요소들 또는 층들 사이에 있을 수 있거나, 또는 하나 또는 그 이상의 사이의 구성 요소들 또는 층들이 또한 존재할 수 있다.
다음의 예들에서, x축, y축, 그리고 z축은 직각 좌표 시스템의 3가지 축들로 한정되지 않고, 넓은 의미로 해석될 수 있다. 예를 들어, x축, y축, 그리고 z축은 서로 직교할 수 있고, 또는 서로 직교하지 않은 다른 방향들을 나타낼 수 있다.
본 명세서에서 이용된 용어들은 단지 특정한 실시 예들을 설명하기 위한 것이고, 본 발명을 제한하려는 것으로 의도되지 않았다. 본 명세서에서 이용된 바와 같이, 문맥상 명백하게 다르게 뜻하지 않는 한, 단수 형태 “하나”는 복수의 형태도 포함하는 것으로 의도된다. “구성되는”, “구성되고 있는”, “포함하는”, 그리고 “포함하고 있는” 용어들이 본 명세서에서 이용될 때, 이러한 용어들은 정해진 특징들, 정수들, 단계들, 동작들, 요소들, 그리고/또는 성분들이 존재를 명시하나, 하나 또는 그 이상의 다른 특징들, 정수들, 단계들, 동작들, 요소들, 성분들, 그리고/또는 그것들의 그룹들의 추가 또는 존재를 불가능하게 하지 않는다. 본 명세서에서 이용된 바와 같이, “그리고/또는” 용어는 하나 또는 그 이상의 열거된 항목들과 연관된 임의의 그리고 모든 조합들 포함한다. “적어도 하나”와 같은 표현들은 요소들 전체 리스트를 수정하고 그리고 리스트의 개별 요소들을 수정하지 않는다.
본 명세서에서 이용된 바와 같이, “대체로”, “약” 용어 그리고 이와 유사한 용어들은 근사치의 용어들로서 이용되고, 정도의 용어들로서 이용되지 않고. 본 발명의 당업자에 의해 식별되는 측정된 또는 계산된 값들의 고유한 변동을 고려하기 위한 것이다. 또한, 본 발명의 실시 예들을 기술할 때 "할 수 있다"의 이용은 "본 발명의 하나 이상의 실시 예들"을 의미한다. 본 명세서에서 이용된 바와 같이, “이용”, “이용되는”, 그리고 “이용된” 용어들은 “이용”, “이용되는”, 그리고 “이용된” 용어들의 동의어로 각각 간주 될 수 있다. 또한, "예시" 용어는 예 또는 그림을 의미한다.
특정 실시 예는 상이하게 구현 될 수 있는 경우, 특정 프로세스 순서는 설명 된 순서와 다르게 수행 될 수 있다. 예를 들면, 설명된 연속적인 두 개의 프로세서들은 동시에 대체적으로 수행되거나 설명된 순서와 반대 순서로 수행될 수도 있다.
본 명세서에서 기술된 본 발명의 실시 예에 따른 전자 또는 전기 장치들 그리고/또는 다른 임의의 관련된 장치들 또는 요소들은 임의의 적합한 하드웨어, 펌웨어(예를 들면, 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)에 저장될 수도 있다. 또한, 본 발명의 당업자는 본 발명의 예시적인 실시 예들의 사상 및 범위를 벗어나지 않고 다양한 컴퓨팅 장치들의 기능은 하나의 컴퓨팅 장치에 통합되거나 집적되고, 특정 컴퓨팅 장치의 기능이 하나 또는 그 이상의 다른 컴퓨팅 장치들에 분산될 수 있음을 인식해야 한다.
다르게 정의되지 않는 한, 본 명세서에서 이용된 모든 용어들(기술적 그리고 과학적 용어들을 포함하는)은 본 발명이 속한 기술 분야에서 당업자에 의해 일반적으로 이해되는 동일한 의미를 포함한다. 일반적으로 이용되는 사전에 정의된 이러한 용어들은 본 명세서 그리고/또는 관련 기술의 문맥에서 그들의 의미와 일치하는 의미를 포함하는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의되지 않는 한 이상화되거나 지나지게 형식적인 감각으로 해석되지 않아야 한다.
도 1 내지 도 3과 관련되어 이하에서 설명되는 본 발명의 실시 예들은 기본 칩킬을 제공할 수 있다. DDR4의 메커니즘과 동일한 커버리지(coverage)가 부족함에도 불구하고, 새로운 DDR 인터페이스는 메모리 채널당 단지 하나의 ECC 칩을 포함함에도 불구하고 하나의 다이/칩 정정을 제공할 수 있다. 추가적으로, 이하에서 설명되는 메커니즘들은 데이터 칩이 페일(Fail)된 경우를 식별하기 위해 ECC 칩으로부터 제공되는 ECC 정보를 이용할 수 있다.
도 1은 본 발명의 실시 예에 따른 DDR 인터페이스를 위한 에러 정정 메커니즘을 도시한 블록도이다. 본 발명은 메모리 처리(transaction)당 16개 버스트들을 이용하고, 다중 버스트들 내 하나의 데이터 칩의 데이터를 보호하기 위해 DRAM(dynamic random-access memory module) 내 ECC(in-DRAM ECC)를 이용할 수 있다. 본 발명의 실시 예는 또한 메모리 컨트롤러가 DRAM 내 ECC가 시스템 ECC 에러가 발생한 것으로 결정한 때 DRAM 내 ECC의 정보를 읽도록 허용하는 것에 의해 하나 또는 그 이상의 버스트들 내 다중 칩들로부터 데이터를 보호하기 위해 DRAM DIMM이 시스템/메모리 컨트롤러 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비트 정보를 제공한다.
DRAM(160)의 각 메모리 채널(150)은 데이터의 수신, 저장, 및 전송을 위해 8개의 4비트 데이터 칩들(예를 들면, 8개의 데이터 장치들, 140a)을 포함한다. DIMM/DRAM의 메모리 채널당 두 개의 ECC 칩들을 이용하는 DDR4와 달리, 본 발명의 실시 예의 DRAM(160)은 메모리 컨트롤러(110)에 ECC 데이터를 전송하기 위해 메모리 채널(150)당 하나의 4비트 ECC 칩(예를 들면, 하나의 패리티 장치 또는 패리티 칩, 140b)을 포함한다. 메모리 채널(150)당 단지 하나의 ECC 칩(140b)만 포함함에도 불구하고, 본 발명의 실시 예의 DRAM(160)은 시스템 내 에러 정정 및 기본적인 칩킬 능력을 제공할 수 있고, 이는 이하에서 더 설명될 것이다.
본 발명의 실시 예에서, DRAM(160)은 버스트들을 이용하여 메모리 컨트롤러(110)와 메모리 처리(들130)을 수행하는데, 이에 의해, 분리된 처리에서 데이터의 각 부분을 전송하기 위해 달리 보통 요구되는 다른 단계들을 생략하면서 DRAM(160)은 반복적으로 데이터를 전송한다. 따라서, DRAM(160)은 단지 특정 조건하에 제한된 기간에서도, 버스팅(bursting)없이 전송할 수 있는 것보다 데이터를 더 빠르게 전송할 수 있다.
DRAM(160)의 더 좁은 메모리 채널 폭을 보상하기 위해, DRAM(160)은, 8의 버스트 랭스를 포함하는 DDR4와 같이 이용되는 DIMM의 버스트 랭스의 두 배인 16의 버스트 랭스를 포함한다. 즉, 두 개의 메모리 채널들(150) 각각이 DDR4와 같이 이용되는 메모리 채널의 데이터 폭의 단지 절반만 포함하는 것을 보상하기 위해, DRAM(160)은 DDR4와 비교하여 각 메모리 처리(130)에서 4비트 칩들(140a, 140b) 각각에 저장된 데이터의 버스트들 수의 두 배를 내부적으로 프리패치 할 수 있다.
따라서, 메모리 채널(150)당 36비트(즉, 9개 칩들(140a, 140b) 각각에서 칩 당 4비트씩)가 각 버스트마다 보내지고, 데이터 폭은 메모리 채널(150)당 32비트이고, ECC 폭은 메모리 채널(150)당 4비트 이다. 이것은 채널당 메모리 처리(130)당 총 576 비트에 해당하고(즉, 버스트당 36비트에 메모리 처리(130)당 16개의 버스트들을 곱함.), 전체 데이터 블락은 512 비트이고, 남아있는 64 비트는 메모리 채널(150)의 ECC 칩(140b)의 ECC 데이터에 해당한다.
추가적으로, 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)을 이용할 수 있다.
DRAM 내 128비트의 매 그룹마다, DRAM 레벨(즉, 메모리 컨트롤러(110)의 지원 없이))에서 내부 에러 감지를 수행하기 위해 하나의 ECC 칩(140b)을 이용하는 것에 의해, DRAM 내 ECC는 칩 내부에서 내부적으로 생성된 ECC 비트들을 이용하여 하나의 비트 에러를 정정할 수 있다. 본 발명의 실시 예는 DDR4에서의 것을 넘어서는 메모리 어플리케이션에 어떠한 변경도 제공하지 않고, 그리고 DRAM(160) 및 메모리 컨트롤러(110) 사이에 상이한 인터페이스를 제공하지 않는다. 따라서, 내부 ECC를 제공하는 것에 의해, 에러 복원 정보는 일반적인 데이터 전송(170) 내 포함되지 않고, 그리고 메모리 컨트롤러(110)에 전달되지 않는다. 그러므로 ECC 칩(140b)에 의한 에러들의 정정은 메모리 컨트롤러(110)와의 메모리 처리(130)의 속도 또는 성능에 영향을 주지 않을 것이다.
그러나 에러들의 특정한 종류들은 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를 참조하여 이하에서 설명된다.
도 2는 본 발명의 다른 실시 예에 따른 DDR 인터페이스를 위한 에러 정정 메커니즘을 도시한 블록도이다. 전술한 실시 예의 에러 정정 메커니즘과 유사하게, 본 발명의 실시 예는 메모리 처리당 16개의 버스트들을 수행한다. 유사하게, 메모리 컨트롤러(210)는 내부에 저장된 DAECC 엔진(220)을 포함하고, DRAM(260)의 각 메모리 채널(250)은 일반적인 데이터 교환(270)을 위해 8개의 데이터 칩들(240a) 및 하나의 ECC 칩(240b)을 포함한다. 그러나, 전술한 실시 예와 달리, DRAM(260)은 추가적인 핀을 통해 메모리 컨트롤러(210)에 1비트 ECC 플래그(Flag)를 보내는 것에 의해 ECC 에러를 메모리 컨트롤러(210)에 알린다.
도 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)로 제공된다.
따라서, 8개 데이터 칩들(240a) 중 하나에 대응하는 메모리 에러가 발생하면, 본 발명의 실시 예의 ECC 칩(240b)의 핀(290)은 메모리 컨트롤러(210)에 에러가 발생한 것을 알리기 위해 1비트 ECC 플래그를 설정하기 위해 이용될 것이다. 핀(290)을 통해 1비트 ECC 플래그를 감지함에 따라, 메모리 컨트롤러(210)는 에러와 관련된 DRAM(260)으로부터 좀 더 상세한 정보를 얻기 위해 특정 명령을 발행할 것이다. 메모리 컨트롤러(210)는 도 1을 참조하여 설명된 실시 예의 시스템(100)과 유사한 방식으로 DRAM 내 ECC 정보 출력(280)을 이용하여 DRAM(260)으로부터 정보를 얻을 수 있다.
도 1을 참조하여 설명된 시스템(100)의 실시 예와 달리, DRAM(260) 및 메모리 컨트롤러(210) 사이의 DDR 인터페이스는 DDR4로부터 변경될 수 있다. 그러나, 다른 576 데이터 비트와 함께 핀(290)을 통해 1비트 ECC 플래그가 전송되기 때문에, 성능은 나쁘게 영향 받지 않고, 그러므로 메모리 처리(230) 당 시간이 증가하지 않는다.
도 3은 본 발명의 또 다른 실시 예에 따른 DDR 인터페이스를 위한 에러 정정 메커니즘을 도시한 블록도이다.
도 3을 참조하면, 도 1 및 도 2를 각각 참조하여 설명된 실시 예들의 시스템들(100, 200)과 비교하면, 본 발명의 실시 예는 내부에 저장된 DAECC 엔진(320)과 함께 메모리 컨트롤러(310)를 포함하고, DRAM(360)의 각 메모리 채널(350)은 일반적인 데이터(370) 교환을 위해 8개의 데이터 칩들(340a) 및 하나의 ECC 칩(340b)을 포함한다. 그러나, 본 발명의 실시 예의 시스템(300)의 각 메모리 처리(330)는 17개 버스트들의 총 버스트 길이에 기여하는 추가적인 버스트를 포함한다. 그러나, 메모리 처리(330)의 17번째 버스트 동안, DRAM 내 에러 정정 동안에 결정된 ECC 정보는 DRAM 내 ECC 정보 출력(380)에서 DRAM/DDR DIMM(360)으로부터 메모리 컨트롤러(310)로 전송된다. 따라서, 메모리 컨트롤러(310)는 각 메모리 처리(330)를 위한 추가적인 버스트와 연관되어 감소된 성능을 희생하여 각 메모리 처리(330)에서 DRAM 내 ECC 정보를 식별할 수 있다.
따라서, 시스템/메모리 컨트롤러 ECC 에러가 생긴 때에만(예를 들면, DRAM(160)의 ECC 칩(140b)에 의해 수정될 수 없는 에러) 단지 메모리 컨트롤러(110)가 DRAM 내 ECC 정보의 정보 출력(180)을 수행하는 도 1의 실시 예의 시스템(100)과 달리, 본 발명의 실시 예의 메모리 컨트롤러(310)는 추가적인 17번째 버스트를 통해 매 메모리 처리(330)에서 DRAM 내 ECC 정보 출력(380)을 수행한다. 추가적으로, 메모리 컨트롤러(310)는 시스템 레벨의 DRAM 내 ECC에 의해 수행되는 것과 같이 에러를 정정하기 위한 동일한 동작들을 항상 수행할 것이다(예를 들면, DRAM(360) 내에서).
비록 전술한 실시 예들은 DAECC 메커니즘이 4비트 DRAM 칩들을 이용하여 새로운 좁은 DDR 인터페이스에 이용될 수 있는 것을 설명하지만, DAECC 메커니즘은 만약 DRAM 칩 내부에서 DRAM 내 ECC가 수행되면, 새로운 DDR 인터페이스를 이용하는 다른 DRAM 아키텍처들과 함께 이용되거나, DDR4와 유사한 인터페이스에서 이용될 수 있다.
예를 들면, 도 4는 DAECC 엔진(420)이 8비트 DRAM 칩들(440a, 440b)과 함께 새로운 좁은 DDR 인터페이스와 관련되어 이용될 수 있는 것을 보여준다. 이러한 실시 예에서, 각 채널(450)은 데이터를 저장하기 위한 4개의 8비트 DRAM 칩들(440a)을 포함하고, 시스템 ECC를 저장하기 위한 1개의 8비트 DRAM 칩(440b)을 포함한다. 그러므로, 본 발명의 실시 예의 시스템 ECC 오버헤드는 1/4 또는 25%이다.
다른 예를 들면, 도 5는 DAECC 엔진이 4비트 DRAM 칩들(540a, 540b)과 함께 DDR 인터페이스에 이용될 수 있는 것을 보여준다. 본 발명의 실시 예에서, 각 채널(550)은 데이터를 저장하기 위한 16개의 4비트 DRAM 칩들(540a)을 포함하고, 시스템 ECC를 저장하기 위한 하나의 4비트 DRAM 칩(540b)을 포함한다. 그러므로, 이러한 실시 예에서, 시스템 ECC 오버헤드는 DDR4 표준의 현재 ECC 오버헤드의 절반인 1/16 또는 6.25%이다.
또 다른 예를 들면, 도 6은 DAECC 엔진이 8비트 DRAM 칩들(640a, 640b)과 함께 DDR4 인터페이스에서 이용될 수 있는 것을 보여준다. 이러한 실시 예에서, 각 채널(650)은 데이터를 저장하기 위해 8개의 8비트 DRAM 칩들(640a)을 포함하고, 시스템 ECC를 저장하기 위해 하나의 8비트 DRAM 칩(640b)를 포함한다. 그러므로, 시스템 ECC 오버헤드는 1/8 또는 12.5%이다.
정리하면, 전술한 실시 예들의 DAECC는 추가적인 하나의 ECC DRAM 칩을 이용하기 위한, 그리고 임의의 종류의 구조와 함께 메모리 시스템을 위한 기본적인 칩킬 범위(chipkill coverage)를 제공하기 위해 DRAM 내 ECC 정보를 이용하기 위한 일반적인 메커니즘이다.
도 7a 및 도 7b는 본 발명의 하나 이상의 실시 예들에 따라 DAECC(DRAM assist error correction code) 메커니즘을 이용해 에러의 감지, 에러 종류의 결정, 그리고 에러를 핸들링(handling)하는 것을 도시한 순서도들이다.
이하에서 설명되는 순서도는 도 1 내지 도 6을 참조하여 각각 설명된 임의의 시스템들에서 구현될 수 있다. 메모리 컨트롤러가 DRAM 내 에러 발생을 인식하면, 메모리 컨트롤러는 에러 패턴(error pattern)을 결정하도록 시도할 수 있다. 에러 패턴에 따라, 메모리 컨트롤러는 에러가 랜덤 에러(random error, 비영구적인 에러), 영구적인 에러(permanent error), 또는 칩킬 에러(chipkill error)에 대응하는지를 결정할 수 있을 것이다. 에러의 종류 결정에 따라, 시스템은 에러 정정을 수행할 수 있다.
에러들의 상이한 종류들 중에서, 에러의 한 종류는 칩킬 에러로 언급된다. 칩킬 에러는 비트 에러들의 문턱값을 초과한 하나의 칩/다이 또는 칩의 영구적인 고장(failure)과 일반적으로 대응한다. 메모리 채널의 하나의 4비트 데이터 칩의 고장은 메모리 처리 동안 많은 수의 버스트들에서 잘못된 데이터를 제공하는 데이터 칩에 대응하는 많은 수의 4비트를 야기할 수 있다(예를 들면, 데이터 칩에 대응하는 4비트 심볼들 내 많은 수의 에러들). 따라서, 본 발명의 실시 예들은 하나의 칩이 페일(fail)된 경우를 감지할 수 있고, 그 후에 하나의 칩 정정을 계속 제공하면서 그 칩을 비활성화할 수 있다. 즉, 본 발명의 실시 예들은 하나의 칩에 대응하는 4개의 반복적인 잘못된 비트를 하나의 심볼(symbol)로 그룹화할 수 있고, 페일(failed)/죽은(dead)/소거(erased) 칩에 대응하는 데이터를 복구하기 위한 심볼에 기초한 메커니즘(symbol-based mechanism)을 이용할 수 있다.
에러의 다른 종류는 DQ 에러로 언급된다. 전술한대로, 설명된 실시 예들의 DRAM에서, 각 칩은 4개의 데이터 핀들을 포함하고, 각 핀은 칩에 저장된 4개의 비트 중 하나를 출력한다. 각 핀은 DQ로 언급될 수 있다. 만약 하나의 칩의 핀들 중 하나가 페일이면(전체 칩의 고장과 대조적으로), 버스트들 각각에서 그 핀으로부터 제공되는 데이터는 잠재적으로 오류가 있다. 따라서, 핀 고장은 DQ 에러로 언급될 수 있다.
설명된 실시 예들은 각 칩 사이에 인터리브되는(interleaved) 간단한 패리티 알고리즘(parity algorithms)을 이용할 수 있다. 예를 들면, 설명된 실시 예들은 RAID(redundant array of independent disks) 구성을 이용할 수 있다(예를 들면, RAID 4와 유사한 구성). RAID 4는 전용 패리티 디스크(dedicated parity disk) 및 다중 디스크들(예를 들면, 칩들)에 걸친 블록 레벨 스트라이핑(block-level striping across multiple disks)을 이용하는 RAID 구성이다. 디스크 스트라이핑은 데이터의 그룹을 블록들로 분할, 그리고 두 개 또는 그 이상의 저장 장치들(예를 들면, 데이터 칩들)에 걸쳐 블록들을 퍼지게 하는 것을 포함한다.
따라서, ECC 칩에 저장된 데이터는 4개 패리티 비트와 대응할 것이고, 8개 데이터 칩들 중 하나로부터의 각 비트는 ECC 칩에 의해 저장된 서로 다른 패리티 비트에 기여하고, 모든 데이터 칩들 중 대응하는 핀으로부터의 하나의 비트는 패리티 비트들(예를 들면, ECC 칩의 하나의 ECC 그룹) 중 하나에 기여한다. 만약 호스트 메모리 컨트롤러가 데이터 및 ECC 정보를 이용하여 하나의 핀에 대응하는 재발생하는 하나의 1비트 에러를 감지하면, 호스트 메모리 컨트롤러는 4개의 가능한 비트 위치들 중 동일한 비트 위치로부터 에러를 식별할 것이다(즉, ECC 칩의 동일 패리티 비트는 버스트들 중 일부에서 발생하는 에러들을 포함할 것이다). 이하에서 설명되는 것처럼, 감지된 에러 패턴으로부터의 정보는 에러가 어디에 있는지를 결정하기 위해 이용될 수 있다(예를 들면, 8개 데이터 칩들 중 어떤 것이 에러를 야기하는 핀을 포함하는지).
도 7a를 참조하면, S701 단계에서, 에러가 감지된다. 에러는 도 1 내지 도 3을 참조하여 전술한 임의의 에러 감지 방법들에 의해(예를 들면, 추가적인 핀(290)을 통해 메모리 컨트롤러(210)에 의해 감지되는 ECC 플래그, 또는 메모리 처리(330)의 17번째 버스트 동안 DRAM 내 ECC 정보 출력(380)에서 메모리 컨트롤러(310)에 의해 감지되는 에러) 및/또는 호스트 메모리 컨트롤러에서 수행되는 시스템 ECC(예를 들면, RAID와 유사한 패리티 체크)의해 감지될 수 있다.
일단 시스템이 S701 단계에서 DRAM/DDR DIMM으로부터 일부 에러가 있는 것으로 결정하면, S702 단계에서 얼마나 많은 버스트들이 에러를 갖는지 결정된다. 이것은 메모리 처리의 각 버스트마다 패리티 체크를 진행하여 수행될 수 있다. 고장들의 상이한 종류들은 상이한 에러 패턴들을 포함하므로, 문턱값, 또는 참조 숫자, “n”은 감지된 에러의 종류를 분류하기 위해 이용될 수 있다. 예를 들면, ECC 칩의 동일한 핀 위치에 ECC 에러가 있을지라도, DQ 고장은 메모리 처리의 버스트들 전부 또는 다수에서 단지 1비트 패리티 에러만을 포함할 것이다. 그러나, 칩 고장은 버스트들 전부 또는 다수의 다중 비트들(예를 들면, 4비트 패리티 에러)에서 패리티 에러를 포함할 가능성이 클 것이다. 추가적으로, 랜덤 에러는 얼마 안 되는 에러들에 대응할 수 있고, 얼마 안 되는 버스트들에 극히 소수의 잘못된 비트들이 있을 수 있다(예를 들면, 하나의 버스트에서 하나의 1비트 에러).
따라서, 감지된 에러들의 수가 문턱값보다 큰 경우, DQ 고장 또는 칩 고장이 발생한 것으로 예측될 수 있다. 그러나, 감지된 에러의 수가 문턱값보다 작거나 같은 경우, 하나 또는 그 이상의 개별적인 칩들로부터 하나 또는 그 이상의 랜덤 에러가 발생한 것으로 예측될 수 있으며, 이는 DRAM 내 ECC로 정정 가능하지 않고, 정정을 위해 메모리 컨트롤러로부터 지원이 필요하다.
그러므로, S702 단계에서, 주어진 메모리 처리에서 에러를 갖는 다수의 버스트들이 문턱값 “n”을 초과하는지가 결정될 수 있다. 문턱값에 도달했는지에 따라, S703 단계 또는 S710 단계 중 어느 하나가 진행된다. 즉, 충분히 많은 수의 버스트들이 패리티 에러를 갖는 것으로 결정되면(예를 들면, 주어진 메모리 처리에서 에러를 갖는 버스트들의 수가 문턱값 “n”을 넘는 경우), DQ 고장 또는 칩 고장이 있을 가능성이 더 높고, 시스템은 칩킬 메커니즘을 진행할 것이다. 그러나, 감지된 에러를 갖는 버스트들의 수가 문턱값 “n”보다 작으면(예를 들면, 4개의 버스트들 또는 이보다 작은), S701 단계에서 감지된 에러는 개별적인 칩(들)으로부터의 랜덤 고장들의 결과일 가능성이 높다. 이러한 랜덤 고장들은 DRAM 내 ECC에 의해 정정 가능하지 않으나, 에러는 재발생하지 않을 가능성이 클 것이므로, 칩킬 메커니즘은 이용되지 않는다.
비록 예로써 4개 버스트들의 문턱값이 이용되어도, 다른 수가 본 발명의 다른 실시 예들에 이용될 수 있음에 유의해야 한다. 게다가, 그 수는 다른 실시 예들(예를 들면, 특정 장치에 대응하는)에서 조정될 수 있다. 예를 들면, 대응하는 메모리 장치가 상대적으로 높은 장치 에러율을 가지면, 이에 따라 다중 랜덤 에러들이 발생하면, 문턱값이 증가될 수 있다.
S703 단계에서, S702 단계에서 패리티 에러를 갖는 버스트들의 수가 문턱값보다 큰 것으로 결정되면(예를 들면, 4개 버스트들보다 큰), 시스템은 8개 데이터 칩들 중 하나가 죽었는지 또는 소거되었는지를 결정하거나, 또는 8개 데이터 칩들 중 하나 이상에서 에러가 있었는지를 결정한다.
S703 단계에서 칩이 이미 사전에 소거되었거나 또는 8개 데이터 칩들 중 하나보다 더 많은 칩에서 에러가 있는 것으로 결정되면, 시스템은 S709 단계에서 치명적이고 정정 가능하지 않은 에러가 발생한 것으로 결정할 수 있다. 에러를 갖는 칩들의 수는 특정 명령을 이용하거나 메모리 처리(330)의 17번째 버스트 동안 중 어느 하나에 의해 DRAM 내 ECC 정보 출력(180, 280, 380)에서 메모리 컨트롤러(110, 210, 310)에 의해 감지될 수 있다. 예를 들면, 칩이 DQ 고장, 칩 고장, 뱅크(bank) 고장, 또는 로우(row) 고장으로 죽으면, 임의의 추가적인 DQ 고장 또는 칩 고장은 치명적인 고장을 야기하고, 본 발명의 실시 예의 시스템은 메모리 채널당 단지 하나의 ECC 칩을 포함하므로, 그러므로 에러 정정을 수행하기 위한 충분한 자원들을 더 이상 포함하지 않을 것이다. 유사하게, 다중 칩들이 에러를 포함하면, 치명적인 고장이 발생한다.
그러나, S703 단계에서 소거된 칩이 없고, 그리고 감지된 에러가 단지 하나의 데이터 칩에 대응하는 것으로 결정되면, S704 단계가 진행된다. 예를 들면, 아직 소거된 칩이 없으면, 그리고 감지된 에러가 단지 하나의 칩에 대응하면, 시스템은 고장의 종류를 식별할 수 있고, 메모리 컨트롤러는 고장의 종류를 기록할 수 있고 잠재적으로 에러를 정정하기 위해 추가 조치를 취할 수 있다.
S704 단계에서, 감지된 에러들이 동일한 핀에서 발생하는지가 결정될 수 있다. 즉, S704 단계에서, 시스템은 버스트들 각각에 대해 동일한 핀에서 감지된 에러가 발생하는지를 결정한다. 모든 에러들이 동일한 핀에 대응하면, S705a 단계에서, DRAM 내 시스템은 메모리 컨트롤러에 알릴 수 있고 그렇게 함으로써 메모리 컨트롤러는 에러의 고장 종류를 DQ 고장으로 기록할 수 있다. 시스템이 감지된 에러들이 모두 동일한 핀에 있지 않은 것으로 결정하면, S705b 단계에서, DRAM 내 시스템은 메모리 컨트롤러에 알릴 수 있고 그렇게 함으로써 메모리 컨트롤러는 고장 종류를 칩 고장으로 기록할 수 있다.
S706 단계에서, 고장 종류가 DQ 고장 또는 칩 고장 중 어느 하나로 기록된 후, 메모리 컨트롤러는 칩킬 감지(chipkill detection)를 지원하기 위해 이용된다. S706 단계에서, 메모리 컨트롤러는 어떻게 에러를 정정할지 결정하기 위해 진단 루틴(diagnosis routine)을 시작할 수 있다. 진단 루틴은 도 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 단계에서, 메모리 컨트롤러는 에러(들)의 위치(들)을 식별하기 위해 새롭게 읽은 데이터와 알고 있는 반전된 데이터를 비교한다.
도 7a를 참조하면, S706 단계에서 메모리 컨트롤러가 칩킬 감지를 지원한 후, S707 단계에서, 메모리 컨트롤러는 감지된 모든 에러들이 하나의 칩에 대응하는지를 결정한다. 만약 단지 하나의 데이터 칩이 소거되면, 또는 다중 DQ 에러들이 감지되지만, 하지만 모든 다중 DQ 에러들이 동일한 칩에 대응하면, S708 단계에서, 메모리 컨트롤러는 남아있는, 소거되지 않은 칩들에 데이터를 다시 쓸 것이고, 그리고 다음의 모든 메모리 처리들은 소거된 칩에 대응하는 데이터를 복원하기 위해 간단한 패리티 알고리즘의 패리티 비트를 이용할 것이다. 예를 들면, 데이터를 읽음에 따라, 메모리 컨트롤러가 데이터 칩들 중 하나에 대응하는 다중 비트들이 S706d 단계에서 데이터 칩에 쓰여진 반전된 데이터의 해당 비트들과 일치하지 않는 것으로 결정하면, S708 단계에서 메모리 컨트롤러는 해당 데이터 칩을 소거된 것으로 표시할 것이다. 그러나, 데이터를 읽음에 따라, 메모리 컨트롤러가 데이터 칩들 중 하나의 데이터 칩에 하나의 핀에 대응하는 비트들 중 단지 하나가 S706d 단계에서 데이터 칩에 쓰여진 반전된 데이터의 해당 비트와 일치하지 않는 것으로 결정하면, S708 단계에서 메모리 컨트롤러는 단지 하나의 칩의 하나의 핀만을 소거된 것으로 표시할 것이다.
그러나, 하나보다 많은 칩이 소거된 것으로 표시되면, S709 단계에서, 메모리 컨트롤러는 치명적이고 정정할 수 없는 에러가 발생한 것으로 판단할 것이다. 즉, 하나보다 많은 칩에서 에러들이 있으면, DRAM은 패리티를 수행하기 위한 충분한 자원들을 더 이상 가질 수 없고, 예비의 추가적인 칩들은 없을 것이기 때문에, 임의의 추가적인 칩 에러는 DRAM의 교체를 필요로 하는 정정할 수 없고, 치명적인 에러일 것이다.
S702 단계로 돌아가서, 에러들 수가 문턱값보다 낮은 것으로 결정되면(예를 들면, 메모리 처리의 단지 얼마 안 되는 버스트들이 에러를 갖는 경우), S710 단계에서, 메모리 컨트롤러는 DRAM으로부터 추가적인 버스트를 수신하는 것에 의해 데이터 칩들로부터 데이터를 읽는 것을 재시도한다.
S710 단계에서 데이터 읽기를 재시도한 후에, S711 단계에서 메모리 컨트롤러는 여전히 감지된 에러가 있는지를 결정한다. S711 단계에서 추가적인 에러가 감지되지 않으면, S712 단계에서 메모리 컨트롤러는 소프트 에러(soft error), 또는 일시적 에러(transient error)가 발생했고, 더 이상 정정이 필요하지 않음을 결정한다. 그러나, S710 단계에서 데이터 읽기 재시도 후에 추가적인 에러가 S711 단계에서 감지되면, S713 단계에서 에러가 S701 단계에서 초기에 감지된 에러와 동일한 에러 패턴을 갖는지가 결정된다. 에러가 동일한 에러 패턴을 갖는지 결정하는 것에 의해, 일치하지 않는 소프트 에러들의 케이스(즉, 소프트 에러가 S701 단계에서 초기에 감지된 케이스)는 무시될 것이고, 후속의 다른 소프트 에러는 메모리 컨트롤러의 S710 단계에서 데이터 읽기를 재시도하는 동안 감지된다.
S713 단계에서 감지된 에러가 S701 단계에서 초기에 감지된 에러와 동일한 에러 패턴을 갖지 않으면, S710 단계로 되돌아가고, 메모리 컨트롤러는 데이터 칩들로부터 데이터 읽기를 다시 재시도한다. 따라서, 순차적이고 동일하지 않은 소프트 에러들이 발생하면, 그렇게 됨으로써 다른 에러 패턴이 야기되면, 메모리 컨트롤러는 데이터 읽기 시도를 계속할 수 있다. 그러나, S713 단계에서 감지된 에러가 S701 단계에서 초기에 감지된 에러와 동일한 에러 패턴을 가지면, S714 단계에서 하드 에러(hard error, 즉 일시적이지 않은 에러)가 발생한 것으로 결정된다.
S714 단계에서 하드 에러(일시적이지 않은 에러)의 존재가 결정되는 것에 따라, 그리고 어떤 칩도 아직 소거된 것으로 표시되지 않은 것으로 가정하면, DRAM은 S715 단계에서 메모리 컨트롤러 ECC 메커니즘을 이용하여 하드 에러의 정정을 지원하기 위해 메모리 컨트롤러를 트리거(trigger)한다. 메모리 컨트롤러는 예를 들면, 에러의 현재 주소(예를 들면, 칩 및 핀 어드레스)와 DRAM의 하나 또는 그 이상의 칩들의 에러 레지스터에 저장된 에러 주소를 비교하여 에러 정정을 지원할 수 있다. 메모리 컨트롤러는 또한 DRAM 내 ECC 정보를 이용하여 에러 정정을 지원할 수 있다. 예를 들면, DRAM 내 ECC 정보가 단지 하나의 칩이 정정할 수 없는 DRAM 내 ECC 에러를 갖는 것으로 나타내면, 메모리 컨트롤러는 에러를 복구하기 위해 ECC 칩을 이용할 수 있다.
S716 단계에서, 메모리 컨트롤러가 성공적으로 하드 에러를 정정했는지 여부가 결정된다. 에러 정정이 성공이면, S717 단계에서, 운영 체제(operating system)는 에러 이벤트를 기록할 수 있고, 메모리 컨트롤러는 각 칩에서 DRAM 내 ECC 정보(예를 들면, 칩 에러 레지스터)를 소거하기 위해 다른 특정 명령을 발행할 수 있다. 그러나, 에러 정정이 성공이 아니면(예를 들면, 하나의 칩은 이미 소거되었고, 그러므로 시스템은 더 이상 ECC 능력을 갖지 않는 경우), 메모리 컨트롤러는 S709 단계에서 치명적인 에러가 발생한 것으로 결정할 것이다.
메모리 컨트롤러가 치명적이고 정정 가능하지 않은 에러를 S709 단계에서 식별하면, 운영 체제는 시스템/어플리케이션 레벨의 에러 복구를 수행할 수 있다. 예를 들면, 운영 체제는 페이지의 콘텐츠(content)를 다른 물리적 페이지로 재배치하여 해당 물리적 페이지를 리타이어(retire)할 수 있고, 리타이어된 페이지를 가상 메모리 시스템에 의해 후속적으로 할당되지 않아야 하는 물리적 페이지들의 리스트에 배치할 수 있다. 리타이어된 물리적 페이지들의 수가 증가함에 따라(예를 들면, 정정할 수 없는 에러들의 수가 증가함에 따라), 시스템의 유효한 메모리 용량은 감소된다.
따라서, 본 발명의 실시 예들은 DDR4에 의해 제공되는 것과 같은 기본 칩킬 RAS 특징들을 제공할 수 있는 아키텍처를 제공하는데, 감소된(예를 들면, 최소의) ECC 칩 오버헤드(즉, 메모리 채널 당 하나의 ECC 칩), 감소된(예를 들면, 최소의) 내부 프리패치 크기(프리패치 크기는 DRAM 내부 ECC와 동일한 사이즈), 그리고 DDR4에 대응하는 인터페이스에 대한 DDR 인터페이스의 감소된(예를 들면, 최소의) 변경들을 하면서도 이러한 특징들을 제공하는 것이 가능하다. 추가적으로, 본 발명의 실시 예들은 DDR4 보다 좁은 채널 폭과 함께 새로운 DDR 인터페이스를 위해 12.5%의 저장 장치 오버헤드를 제공하고, 기본 칩킬 능력 및 시스템 ECC를 지원하고, 그리고 메모리 컨트롤러 지원 에러 감지 메커니즘을 지원한다.
뿐만 아니라, 본 발명의 실시 예들은 메모리 채널 당 단지 하나의 ECC 칩을 가짐에도 불구하고 기본적인 칩킬 능력 및 시스템 ECC를 제공할 수 있다. 본 발명의 실시 예들은 또한 메모리 컨트롤러가 DRAM 장치로부터의 지원과 함께 고장 칩을 식별하게 하는 메커니즘을 제공하고, DRAM 내 ECC 정보를 출력하기 위한 메커니즘(예를 들면, 추가적인 버스트 랭스, 추가 핀, 또는 DRAM으로부터 레지스터 출력을 이용하는 것에 의한)을 제공하고, 에러 종류(예를 들면, 소프트 에러 또는 하드 에러)를 식별하기 위한 재시도 메커니즘을 제공하고, 그리고 독립적인 또는 같은 방식(lock-step)의 메모리 채널 중 하나를 이용하여, 그리고 SEC-DEC 또는 칩킬 ECC를 이용하여 상이한 ECC 능력을 제공한다.
상기 설명은 예시적인 실시 예들을 설명하기 위한 것이며, 본 발명을 제한하는 것으로 해석되지 않는다. 비록 몇몇의 예시적인 실시 예들이 설명되었지만, 당업자는 예시적인 실시 예의 신규한 교시 및 이점으로부터 실질적으로 벗어나지 않고도 예시적인 실시 예에서 많은 수정이 가능하다는 것을 용이하게 이해할 것이다. 따라서, 그러한 모든 수정은 청구항에 정의된 예시적인 실시 예들의 범위 내에 포함되도록 의도된다. 청구 범위에서, 기능식 표현은 구조적 등가물뿐만 아니라 등가 구조를 열거하여 본 명세서에서 설명된 구조를 포함하도록 의도되었다. 그러므로, 상기 설명은 예시적인 실시 예들을 설명하기 위한 것이며, 개시된 특정 실시 예들에 한정되는 것으로 해석되어서는 안되며, 개시된 예시적인 실시 예들뿐만 아니라 다른 예시적인 실시 예들에 대한 수정이 포함되는 것으로 이해되어야 한다. 첨부된 청구 범위의 범주 내에서 본 발명의 개념은 다음의 청구 범위에 의해 정의되고, 청구 범위의 균등물도 포함된다.
100: 시스템
110: 메모리 컨트롤러
120: DAECC 엔진
130: 메모리 처리
140a, 140b: 칩
150: 메모리 채널
160: DDR DIMM/DRAM
110: 메모리 컨트롤러
120: DAECC 엔진
130: 메모리 처리
140a, 140b: 칩
150: 메모리 채널
160: DDR DIMM/DRAM
Claims (20)
- DDR(double data rate) 인터페이스를 이용하여 DRAM(dynamic random-access memory module)의 메모리 에러를 정정하는 방법에 있어서,
상기 DRAM의 데이터 칩들로부터 메모리 컨트롤러로 데이터를 보내기 위해 다중 버스트들을 포함하는 메모리 처리(transaction)를 상기 메모리 컨트롤러와 함께 수행하는 단계;
상기 DRAM의 ECC 칩을 이용하여 하나 또는 그 이상의 에러들을 감지하는 단계;
상기 DRAM의 상기 ECC 칩을 이용하여 상기 에러들을 갖는 상기 버스트들의 수를 결정하는 단계;
상기 에러들을 갖는 상기 버스트들의 수가 문턱값(threshold number)보다 큰지 여부를 결정하는 단계;
상기 에러들의 종류를 결정하는 단계; 및
상기 결정된 상기 에러들의 종류에 기초하여 상기 메모리 컨트롤러를 지시하는 단계를 포함하되,
상기 DRAM은 메모리 채널당 하나의 ECC 칩을 포함하는 방법. - 제 1 항에 있어서,
상기 DRAM의 상기 ECC 칩을 이용하여 상기 하나 또는 그 이상의 에러들을 감지하는 단계는:
상기 ECC 칩을 이용하여 상기 버스트들 각각마다 패리티 체크(parity check0를 수행하는 단계를 포함하는 방법. - 제 1 항에 있어서,
상기 에러들을 갖는 상기 버스트들의 수가 상기 문턱값보다 크지 않으면 상기 DRAM으로부터 메모리 읽기를 재시도하도록 상기 메모리 컨트롤러를 지시하는 단계를 더 포함하는 방법. - 제 3 항에 있어서,
상기 메모리 컨트롤러가 상기 메모리 읽기를 재시도하면 추가적인 에러를 감지하는 단계; 및
상기 추가적인 에러가 상기 감지된 하나 또는 그 이상의 에러들과 동일한 에러 패턴을 갖는지 여부를 결정하는 단계를 더 포함하는 방법. - 제 4 항에 있어서,
상기 추가적인 에러가 상기 감지된 하나 또는 그 이상의 에러들과 상이한 에러 패턴을 갖는 것으로 결정되면 상기 DRAM으로부터 메모리 읽기를 다시 재시도하도록 상기 메모리 컨트롤러를 지시하는 단계를 더 포함하는 방법. - 제 4 항에 있어서,
상기 추가적인 에러가 상기 감지된 하나 또는 그 이상의 에러들과 같이 동일한 에러 패턴을 갖는 것으로 결정되면 하드 에러(hard error)를 식별하는 단계;
에러 정정에서 상기 DRAM을 지원하도록 상기 메모리 컨트롤러를 지시하는 단계; 및
상기 에러의 어드레스(address)를 기록하는 단계를 더 포함하는 방법. - 제 1 항에 있어서,
상기 에러들을 갖는 상기 버스트들의 수가 상기 문턱값보다 크면 상기 하나 또는 그 이상의 에러들이 동일한 칩의 동일한 핀에 대응하는지 여부를 결정하는 단계를 더 포함하는 방법. - 제 7 항에 있어서,
상기 하나 또는 그 이상의 에러들이 상기 DRAM의 동일한 칩의 동일한 핀에 대응하는 것으로 결정되면 상기 에러는 DQ 고장(DQ failure)에 대응하는 것으로 결정하는 단계; 및
상기 하나 또는 그 이상의 에러들이 상기 동일한 칩의 상기 동일한 핀에 대응하지 않는 것으로 결정되면 상기 하나 또는 그 이상의 에러들은 칩 고장(chip failure)에 대응하는 것으로 결정하는 단계를 더 포함하는 방법. - 제 8 항에 있어서,
상기 메모리 컨트롤러를 지시하는 단계는:
상기 하나 또는 그 이상의 에러들이 상기 DQ 고장 또는 상기 칩 고장에 대응하면 칩킬 감지(chipkill detection)를 지원하도록 메모리 컨트롤러를 지시하는 단계를 포함하는 방법. - 제 1 항에 있어서,
상기 에러들을 갖는 상기 버스트들의 수가 상기 문턱값보다 크면 상기 하나 또는 그 이상의 에러들이 상기 DRAM의 하나보다 많은 칩에 대응하는지 여부를 결정하는 단계;
상기 하나 또는 그 이상의 에러들이 상기 DRAM의 동일한 칩에 대응하는 것으로 결정되면 상기 DRAM의 해당 칩은 소거된 것으로 표시하는 단계; 및
상기 하나 또는 그 이상의 에러들이 상기 DRAM의 하나보다 많은 칩에 대응하는 것으로 결정되면 치명적인 에러(fatal error)를 식별하는 단계를 더 포함하는 방법. - 제 1 항에 있어서,
상기 에러들을 갖는 상기 버스트들의 수가 상기 문턱값보다 크면 상기 DRAM의 다른 칩이 이전에 소거되었는지 여부를 결정하는 단계; 및
상기 DRAM의 상기 다른 칩이 이전에 소거되었으면 치명적인 에러를 식별하는 단계를 더 포함하는 방법. - DDR(double data rate) 인터페이스를 통해 메모리 컨트롤러와 통신하는 DRAM(dynamic random-access memory module)에 있어서,
두 개의 메모리 채널들을 포함하되,
각 메모리 채널들은:
내부에 데이터를 저장하고, 하나의 메모리 처리(transaction)에 대응하는 각각의 다중 버스트들 동안 상기 메모리 컨트롤러로 한번 데이터를 전달하는 다중 데이터 칩들; 및
상기 데이터 칩들의 하나 또는 그 이상에 대응하는 메모리 에러를 갖는 상기 다중 버스트들의 수를 결정하는 하나의 ECC(error-correction code) 칩을 포함하는 DRAM. - 제 12 항에 있어서,
상기 ECC 칩은 에러를 감지하고, 상기 감지된 에러의 종류를 DQ 고장(DQ failure), 칩 고장(chip failure), 소프트 에러(soft error) 또는 하드 에러(hard error) 중 어느 하나로 결정하는 DRAM. - 제 13 항에 있어서,
상기 ECC 칩은 칩킬 감지(chipkill detection) 지원하거나 또는 상기 감지된 에러의 상기 결정된 종류에 따라 에러 정정을 지원하도록 메모리 컨트롤러에 지시하는 DRAM. - 제 12 항에 있어서,
상기 ECC 칩이 에러를 감지하면 상기 메모리 컨트롤러가 상기 ECC 칩의 정보 출력을 수행하도록 상기 ECC 칩은 상기 메모리 컨트롤러로 명령을 발행하는 DRAM. - 제 12 항에 있어서,
상기 ECC 칩이 하나의 비트의 ECC 플래그(1-bit ECC flag)를 이용하여 에러를 감지하면 상기 메모리 처리 동안 상기 메모리 컨트롤러로 알리는(alert) 상기 ECC 칩과 연결된 하나의 핀을 더 포함하는 DRAM. - 제 12 항에 있어서,
상기 데이터 칩들 및 상기 ECC 칩은 각 메모리 처리 동안 상기 메모리 컨트롤러로 ECC 칩의 정보 출력을 제공하기 위해 상기 다중 버스트들에 더해 추가적인 버스트를 상기 메모리 컨트롤러로 전달하는 DRAM. - 메모리 컨트롤러; 및
데이터 칩들과 ECC(error-correction code) 칩들을 포함하는 DRAM(dynamic random-access memory module)을 포함하되,
상기 ECC 칩들 각각은 상기 DRAM의 해당 메모리 채널의 일부 에러들을 정정하고,
상기 메모리 컨트롤러는 상기 ECC 칩들이 정정할 수 없는 다른 에러들을 정정하기 위해 상기 ECC 칩들을 지원하는 메모리 시스템. - 제 18 항에 있어서,
상기 ECC 칩들 각각은 에러 감지에 따라 상기 메모리 컨트롤러로 하나의 비트의 ECC 플래그(1-bit ECC flag)를 보내기 위한 핀을 포함하는 메모리 시스템. - 제 18 항에 있어서,
상기 DRAM은 복수의 메모리 채널들을 포함하고,
상기 DRAM의 상기 복수의 메모리 채널들 각각은 상기 ECC 칩들 중 하나를 포함하는 메모리 시스템.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662375381P | 2016-08-15 | 2016-08-15 | |
US62/375,381 | 2016-08-15 | ||
US15/286,460 | 2016-10-05 | ||
US15/286,460 US10268541B2 (en) | 2016-08-15 | 2016-10-05 | DRAM assist error correction mechanism for DDR SDRAM interface |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180019473A true KR20180019473A (ko) | 2018-02-26 |
KR102191223B1 KR102191223B1 (ko) | 2020-12-16 |
Family
ID=61159099
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170049215A KR102191223B1 (ko) | 2016-08-15 | 2017-04-17 | Ddr sdram 인터페이스를 위한 dram 지원 에러 정정 메커니즘 |
Country Status (5)
Country | Link |
---|---|
US (5) | US10268541B2 (ko) |
JP (1) | JP6882115B2 (ko) |
KR (1) | KR102191223B1 (ko) |
CN (1) | CN107766172B (ko) |
TW (1) | TWI710892B (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190134293A (ko) * | 2018-05-25 | 2019-12-04 | 에스케이하이닉스 주식회사 | 머신 러닝 장치 및 이를 이용한 머신 러닝 시스템 |
WO2023106434A1 (ko) * | 2021-12-06 | 2023-06-15 | 주식회사 딥아이 | Ddr sdram 인터페이스를 이용한 dram 지원 에러 정정 방법 |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10503435B2 (en) * | 2016-12-01 | 2019-12-10 | Qualcomm Incorporated | Providing extended dynamic random access memory (DRAM) burst lengths in processor-based systems |
KR20190062908A (ko) * | 2017-11-29 | 2019-06-07 | 에스케이하이닉스 주식회사 | 에러 정정 방법 및 칩 킬 감지 방법 |
WO2019217118A1 (en) | 2018-05-11 | 2019-11-14 | Rambus Inc. | Efficient storage of error correcting code information |
US10884850B2 (en) * | 2018-07-24 | 2021-01-05 | Arm Limited | Fault tolerant memory system |
US11216333B2 (en) * | 2018-10-16 | 2022-01-04 | Micron Technology, Inc. | Methods and devices for error correction |
CN110718263B (zh) * | 2019-09-09 | 2021-08-10 | 无锡江南计算技术研究所 | 芯片访存通路的高效分段测试***、方法 |
CN110727401B (zh) * | 2019-09-09 | 2021-03-02 | 无锡江南计算技术研究所 | 一种访存*** |
CN110781053A (zh) | 2019-09-29 | 2020-02-11 | 苏州浪潮智能科技有限公司 | 一种检测内存降级错误的方法和装置 |
KR20210045073A (ko) | 2019-10-16 | 2021-04-26 | 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. | 효율적인 메모리 배치 |
US11210167B2 (en) * | 2019-10-28 | 2021-12-28 | Intel Corporation | Memory wordline isolation for improvement in reliability, availability, and scalability (RAS) |
KR20210051668A (ko) | 2019-10-31 | 2021-05-10 | 삼성전자주식회사 | 메모리 컨트롤러, 메모리 시스템 및 메모리 모듈 |
KR20210089016A (ko) | 2020-01-07 | 2021-07-15 | 삼성전자주식회사 | 메모리 컨트롤러 및 메모리 시스템 |
US11437114B1 (en) * | 2020-05-04 | 2022-09-06 | Meta Platforms, Inc. | Reduced error correction code for dual channel DDR dynamic random-access memory |
CN112115077B (zh) * | 2020-08-31 | 2022-04-19 | 瑞芯微电子股份有限公司 | 一种dram内存驱动优化方法和装置 |
WO2022041216A1 (en) * | 2020-08-31 | 2022-03-03 | Micron Technology, Inc. | Debug capabilities of memory system with pin |
US11593197B2 (en) * | 2020-12-23 | 2023-02-28 | Samsung Electronics Co., Ltd. | Storage device with data quality metric and selectable data recovery scheme |
US11409601B1 (en) | 2021-01-26 | 2022-08-09 | Micron Technology, Inc. | Memory device protection |
KR20220143450A (ko) * | 2021-04-16 | 2022-10-25 | 에스케이하이닉스 주식회사 | 시스템 버퍼를 포함하는 메모리 시스템 및 이의 동작 방법 |
DE112022002423T5 (de) * | 2021-04-27 | 2024-02-29 | Microchip Technology Inc. | System und Verfahren zur Chipkill-Wiederherstellung bei doppelter Datenrate (DDR) |
US12014068B2 (en) * | 2021-04-27 | 2024-06-18 | Microchip Technology Inc. | System and method for double data rate (DDR) chip-kill recovery |
US11934696B2 (en) | 2021-05-18 | 2024-03-19 | Microchip Technology Inc. | Machine learning assisted quality of service (QoS) for solid state drives |
CN117280328A (zh) | 2021-06-01 | 2023-12-22 | 微芯片技术股份有限公司 | 存储器地址保护 |
KR20230003766A (ko) | 2021-06-30 | 2023-01-06 | 삼성전자주식회사 | 메모리 컨트롤러의 구동 방법, 이를 수행하는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 |
DE112022002131T5 (de) | 2021-09-28 | 2024-04-11 | Microchip Technology Inc. | Ldpc-dekodierung mit trapped-block-management |
CN114049905B (zh) * | 2021-12-16 | 2024-04-09 | 西安紫光国芯半导体有限公司 | 非易失三维存储单元、存储方法、芯片组件和电子设备 |
CN114464242B (zh) * | 2022-01-13 | 2024-06-14 | 深圳市金泰克半导体有限公司 | 一种ddr测试方法、装置、控制器及存储介质 |
CN114153402B (zh) * | 2022-02-09 | 2022-05-03 | 阿里云计算有限公司 | 存储器及其数据读写方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080162991A1 (en) * | 2007-01-02 | 2008-07-03 | International Business Machines Corporation | Systems and methods for improving serviceability of a memory system |
US20110154152A1 (en) * | 2009-12-22 | 2011-06-23 | Brzezinski Dennis W | Error correction mechanisms for 8-bit memory devices |
KR20160007440A (ko) * | 2014-07-10 | 2016-01-20 | 삼성전자주식회사 | 타이어드 에러 정정 코드 시스템 및 그것의 에러 정정 방법 |
Family Cites Families (57)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS59165300A (ja) * | 1983-03-10 | 1984-09-18 | Fujitsu Ltd | メモリ障害訂正方式 |
US5631909A (en) * | 1995-05-31 | 1997-05-20 | Quantum Corporation | Method and apparatus for determining burst errors in an error pattern |
US5841782A (en) * | 1995-08-22 | 1998-11-24 | Motorola, Inc. | System and method for indicating errored messages |
US5740188A (en) * | 1996-05-29 | 1998-04-14 | Compaq Computer Corporation | Error checking and correcting for burst DRAM devices |
US6216247B1 (en) * | 1998-05-29 | 2001-04-10 | Intel Corporation | 32-bit mode for a 64-bit ECC capable memory subsystem |
US6438560B1 (en) * | 1999-09-16 | 2002-08-20 | International Business Machines Corporation | Reuse of immutable objects during object creation |
US6779149B1 (en) * | 2000-07-31 | 2004-08-17 | Oak Technology, Inc. | Burst error correction on DVD data |
JP2003044349A (ja) | 2001-07-30 | 2003-02-14 | Elpida Memory Inc | レジスタ及び信号生成方法 |
US7028213B2 (en) * | 2001-09-28 | 2006-04-11 | Hewlett-Packard Development Company, L.P. | Error indication in a raid memory system |
US7043679B1 (en) * | 2002-06-27 | 2006-05-09 | Advanced Micro Devices, Inc. | Piggybacking of ECC corrections behind loads |
US7080295B2 (en) * | 2002-11-01 | 2006-07-18 | Broadcom Corporation | Methods and systems for detecting symbol erasures |
US7484065B2 (en) * | 2004-04-20 | 2009-01-27 | Hewlett-Packard Development Company, L.P. | Selective memory allocation |
US7509568B2 (en) * | 2005-01-11 | 2009-03-24 | International Business Machines Corporation | Error type identification circuit for identifying different types of errors in communications devices |
US7722081B2 (en) | 2006-05-04 | 2010-05-25 | Conax Florida Corporation | Combat vehicle restraint system |
US7949931B2 (en) | 2007-01-02 | 2011-05-24 | International Business Machines Corporation | Systems and methods for error detection in a memory system |
TWI499909B (zh) | 2007-01-26 | 2015-09-11 | Cheriton David | 階層式不可改變的內容可定址的記憶體處理器 |
US20080270842A1 (en) * | 2007-04-26 | 2008-10-30 | Jenchang Ho | Computer operating system handling of severe hardware errors |
US8041990B2 (en) | 2007-06-28 | 2011-10-18 | International Business Machines Corporation | System and method for error correction and detection in a memory system |
CN100527091C (zh) * | 2007-08-22 | 2009-08-12 | 杭州华三通信技术有限公司 | 一种实现差错检查与纠正功能的装置 |
JP4617405B2 (ja) * | 2008-02-05 | 2011-01-26 | 富士通株式会社 | 不良メモリを検出する電子機器、不良メモリ検出方法およびそのためのプログラム |
JP5335779B2 (ja) * | 2008-05-12 | 2013-11-06 | パナソニック株式会社 | 半導体記録装置 |
JP5094593B2 (ja) * | 2008-06-27 | 2012-12-12 | キヤノン株式会社 | 送信装置、受信装置、及び方法、プログラム |
US8327225B2 (en) | 2010-01-04 | 2012-12-04 | Micron Technology, Inc. | Error correction in a stacked memory |
US8566669B2 (en) | 2010-07-07 | 2013-10-22 | Ocz Technology Group Inc. | Memory system and method for generating and transferring parity information |
CN102480486B (zh) | 2010-11-24 | 2015-07-22 | 阿尔卡特朗讯公司 | 验证通信会话的方法、设备及*** |
DE112011106021B4 (de) | 2011-12-22 | 2018-05-03 | Intel Corporation | Zugreifen auf Daten, die in einem Befehls-/Adressregister-Gerät gespeichert sind |
US8996950B2 (en) | 2012-02-23 | 2015-03-31 | Sandisk Technologies Inc. | Erasure correction using single error detection parity |
US9218876B2 (en) * | 2012-05-08 | 2015-12-22 | Micron Technology, Inc. | Methods, articles and devices for pulse adjustments to program a memory cell |
WO2013180714A1 (en) | 2012-05-31 | 2013-12-05 | Hewlett-Packard Development Company, L.P. | Local error detection and global error correction |
US8996960B1 (en) * | 2012-06-26 | 2015-03-31 | Inphi Corporation | Vertical error correction code for DRAM memory |
KR102002925B1 (ko) | 2012-11-01 | 2019-07-23 | 삼성전자주식회사 | 메모리 모듈, 그것을 포함하는 메모리 시스템, 그것의 구동 방법 |
US8935592B2 (en) * | 2012-11-20 | 2015-01-13 | Arm Limited | Apparatus and method for correcting errors in data accessed from a memory device |
EP2926341B1 (en) * | 2012-11-30 | 2020-02-19 | Hewlett-Packard Enterprise Development LP | Memory controllers to form symbols based on bursts |
US8966348B2 (en) * | 2012-11-30 | 2015-02-24 | Hewlett-Packard Development Company, L.P. | Memory error identification based on corrupted symbol patterns |
US9043674B2 (en) * | 2012-12-26 | 2015-05-26 | Intel Corporation | Error detection and correction apparatus and method |
JP2014186761A (ja) | 2013-03-21 | 2014-10-02 | Toshiba Corp | 半導体記憶装置、コントローラ、及びメモリシステム |
US10031802B2 (en) * | 2013-06-28 | 2018-07-24 | Intel Corporation | Embedded ECC address mapping |
WO2015016880A1 (en) * | 2013-07-31 | 2015-02-05 | Hewlett-Packard Development Company, L.P. | Global error correction |
US9280418B2 (en) | 2013-08-01 | 2016-03-08 | Integrated Silicon Solution, Inc. | Memory device implementing reduced ECC overhead |
US10185515B2 (en) * | 2013-09-03 | 2019-01-22 | Qualcomm Incorporated | Unified memory controller for heterogeneous memory on a multi-chip package |
US9281970B2 (en) * | 2013-10-11 | 2016-03-08 | Intel Corporation | Error burst detection for assessing reliability of a communication link |
US9165639B2 (en) * | 2013-11-11 | 2015-10-20 | Rambus Inc. | High capacity memory system using standard controller component |
US9116702B2 (en) * | 2013-11-21 | 2015-08-25 | International Business Machines Corporation | Computer memory power management |
US9263157B2 (en) * | 2013-12-23 | 2016-02-16 | International Business Machines Corporation | Detecting defective connections in stacked memory devices |
US9887008B2 (en) | 2014-03-10 | 2018-02-06 | Futurewei Technologies, Inc. | DDR4-SSD dual-port DIMM device |
US9431129B2 (en) | 2014-04-30 | 2016-08-30 | Qualcomm Incorporated | Variable read delay system |
TWI618891B (zh) * | 2014-07-18 | 2018-03-21 | 王柏豐 | 具可拆式光源之導光線體組之裝置 |
US9442801B2 (en) | 2014-09-26 | 2016-09-13 | Hewlett Packard Enterprise Development Lp | Platform error correction |
CN105575425A (zh) * | 2014-10-09 | 2016-05-11 | 宏碁股份有限公司 | 存储器晶片、其资料读取方法以及资料储存*** |
US9710324B2 (en) * | 2015-02-03 | 2017-07-18 | Qualcomm Incorporated | Dual in-line memory modules (DIMMs) supporting storage of a data indicator(s) in an error correcting code (ECC) storage unit dedicated to storing an ECC |
US9691505B2 (en) | 2015-03-27 | 2017-06-27 | Intel Corporation | Dynamic application of error correction code (ECC) based on error type |
KR102290020B1 (ko) * | 2015-06-05 | 2021-08-19 | 삼성전자주식회사 | 스택드 칩 구조에서 소프트 데이터 페일 분석 및 구제 기능을 제공하는 반도체 메모리 장치 |
US9760435B2 (en) * | 2015-10-14 | 2017-09-12 | Intel Corporation | Apparatus and method for generating common locator bits to locate a device or column error during error correction operations |
US10025508B2 (en) * | 2015-12-02 | 2018-07-17 | International Business Machines Corporation | Concurrent upgrade and backup of non-volatile memory |
US10628248B2 (en) | 2016-03-15 | 2020-04-21 | International Business Machines Corporation | Autonomous dram scrub and error counting |
US11481126B2 (en) * | 2016-05-24 | 2022-10-25 | Micron Technology, Inc. | Memory device error based adaptive refresh rate systems and methods |
US10379939B2 (en) | 2017-01-04 | 2019-08-13 | Samsung Electronics Co., Ltd. | Memory apparatus for in-chip error correction |
-
2016
- 2016-10-05 US US15/286,460 patent/US10268541B2/en active Active
-
2017
- 2017-04-17 KR KR1020170049215A patent/KR102191223B1/ko active IP Right Grant
- 2017-05-25 CN CN201710376331.9A patent/CN107766172B/zh active Active
- 2017-06-29 TW TW106121723A patent/TWI710892B/zh active
- 2017-08-14 JP JP2017156564A patent/JP6882115B2/ja active Active
-
2019
- 2019-02-14 US US16/276,369 patent/US11010242B2/en active Active
- 2019-02-14 US US16/276,304 patent/US10977118B2/en active Active
-
2021
- 2021-05-13 US US17/319,844 patent/US11625296B2/en active Active
-
2023
- 2023-03-28 US US18/127,329 patent/US20230229555A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080162991A1 (en) * | 2007-01-02 | 2008-07-03 | International Business Machines Corporation | Systems and methods for improving serviceability of a memory system |
US20110154152A1 (en) * | 2009-12-22 | 2011-06-23 | Brzezinski Dennis W | Error correction mechanisms for 8-bit memory devices |
KR20160007440A (ko) * | 2014-07-10 | 2016-01-20 | 삼성전자주식회사 | 타이어드 에러 정정 코드 시스템 및 그것의 에러 정정 방법 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190134293A (ko) * | 2018-05-25 | 2019-12-04 | 에스케이하이닉스 주식회사 | 머신 러닝 장치 및 이를 이용한 머신 러닝 시스템 |
US11972328B2 (en) | 2018-05-25 | 2024-04-30 | SK Hynix Inc. | Machine learning device and machine learning system using the same |
WO2023106434A1 (ko) * | 2021-12-06 | 2023-06-15 | 주식회사 딥아이 | Ddr sdram 인터페이스를 이용한 dram 지원 에러 정정 방법 |
Also Published As
Publication number | Publication date |
---|---|
KR102191223B1 (ko) | 2020-12-16 |
US20190179705A1 (en) | 2019-06-13 |
JP6882115B2 (ja) | 2021-06-02 |
US20230229555A1 (en) | 2023-07-20 |
US20210294697A1 (en) | 2021-09-23 |
CN107766172A (zh) | 2018-03-06 |
JP2018028910A (ja) | 2018-02-22 |
US10268541B2 (en) | 2019-04-23 |
US11625296B2 (en) | 2023-04-11 |
US11010242B2 (en) | 2021-05-18 |
TW201818245A (zh) | 2018-05-16 |
CN107766172B (zh) | 2022-06-28 |
US20180046541A1 (en) | 2018-02-15 |
TWI710892B (zh) | 2020-11-21 |
US20190179704A1 (en) | 2019-06-13 |
US10977118B2 (en) | 2021-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11625296B2 (en) | DRAM assist error correction mechanism for DDR SDRAM interface | |
CN108268340B (zh) | 校正存储器中的错误的方法 | |
EP2715550B1 (en) | Apparatus and methods for providing data integrity | |
US11037619B2 (en) | Using dual channel memory as single channel memory with spares | |
CN107943609B (zh) | 存储器模块、存储器控制器和***及其相应操作方法 | |
KR101536853B1 (ko) | 데이터 무결성을 제공하기 위한 방법 및 장치 | |
US7096407B2 (en) | Technique for implementing chipkill in a memory system | |
US8566669B2 (en) | Memory system and method for generating and transferring parity information | |
CN112612637B (zh) | 内存数据存储方法、内存控制器、处理器芯片及电子设备 | |
US20220382631A1 (en) | Memory device protection | |
US11030040B2 (en) | Memory device detecting an error in write data during a write operation, memory system including the same, and operating method of memory system | |
WO2023106434A1 (ko) | Ddr sdram 인터페이스를 이용한 dram 지원 에러 정정 방법 | |
KR20230121611A (ko) | 시스템 메모리 신뢰성, 가용성 및 서비스 가능성(ras)을개선하기 위한 적응형 오류 정정 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |