KR102170776B1 - 타이어드 에러 정정 코드 시스템 및 그것의 에러 정정 방법 - Google Patents

타이어드 에러 정정 코드 시스템 및 그것의 에러 정정 방법 Download PDF

Info

Publication number
KR102170776B1
KR102170776B1 KR1020150098572A KR20150098572A KR102170776B1 KR 102170776 B1 KR102170776 B1 KR 102170776B1 KR 1020150098572 A KR1020150098572 A KR 1020150098572A KR 20150098572 A KR20150098572 A KR 20150098572A KR 102170776 B1 KR102170776 B1 KR 102170776B1
Authority
KR
South Korea
Prior art keywords
ecc
memory
memory device
chip
level
Prior art date
Application number
KR1020150098572A
Other languages
English (en)
Other versions
KR20160007440A (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 KR20160007440A publication Critical patent/KR20160007440A/ko
Application granted granted Critical
Publication of KR102170776B1 publication Critical patent/KR102170776B1/ko

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
    • G06F11/1008Adding 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/1044Adding 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
    • 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
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • 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
    • 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
    • G06F11/1008Adding 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/1012Adding 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 codes or arrangements adapted for a specific type of error
    • 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
    • G06F11/1008Adding 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/1012Adding 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 codes or arrangements adapted for a specific type of error
    • G06F11/1024Identification of the type of error
    • 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
    • G06F11/1008Adding 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/1048Adding 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
    • 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
    • G06F11/1008Adding 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/1048Adding 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
    • G06F11/106Correcting systematically all correctable errors, i.e. scrubbing
    • 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
    • G06F11/1008Adding 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/1064Adding 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 cache or content addressable memories
    • 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
    • G06F11/1008Adding 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/1072Adding 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 multilevel memories
    • 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
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1057Parity-multiple bits-RAID6, i.e. RAID 6 implementations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

본 발명에 따른 타이어드 에러 정정 코드(ECC) 시스템은, 특정 비트의 메모리 장치-레벨 실패를 정정하는 메모리 장치들의 적어도 일부에 포함되고, 그리고 상기 특정 비트보다 큰 메모리 장치-레벨 실패가 발생하는 경우 메모리 장치 실패 신호를 전송하는 장치-레벨 ECC 장치, 그리고 상기 메모리 장치 실패 신호의 수신에 관한 응답으로, 시스템 ECC 패리티에 기초하여 상기 특정 비트보다 큰 메모리 장치-레벨 실패를 정정하는 시스템-레벨 ECC 장치를 포함한다.

Description

타이어드 에러 정정 코드 시스템 및 그것의 에러 정정 방법{TIERED ERROR CORRECTION CODE SYSTEM AND ERROR CORRECTION METHOD THEROF}
본 발명은 에러 정정 코드에 관한 것으로, 좀 더 구체적으로는 타이어드 에러 정정 코드 시스템 및 그것의 에러 정정 방법에 관한 것이다.
원시 비트 에러율(Raw Bit Error Rate)이 메모리 기술 스케일링(memory technology scaling) 또는 새로운/미성숙한 메모리 기술에 의해 더욱 더 높아지기 때문에, 미래의 메모리 기술은 강력한 에러 정정 코드(error correction code, ECC) 관리를 요구한다. 표준 ECC 동적 랜덤 액세스 메모리(dynamic random-access memory, DRAM) 시스템들은, 싱글 데이터 비트의 에러의 경우에는 자동으로 정정되고, 2 데이터 비트 에러의 경우에는 보장된 검출을 제공한다. 이러한 능력은 종종 싱글 에러 정정/더블 에러 검출(Single Error Correction/Double Error Detection, SEC/DED)로 언급된다.
ECC 메모리에서 일부 비트들은 실제 데이터에 사용되고, 다른 일부 비트들은 ECC에 사용된다. 예를 들면, DRAM 장치들은 다양한 데이터 폭(장치 당 데이터 비트 수)들을 사용할 수 있다. 예를 들면, 서버에 사용되는 듀얼 인-라인 메모리 모듈(dual in-line memory module, DIMM)은 다중 x4(4 데이터 비트), x8, 또는 x16 DRAM 장치들을 사용하여 만들어질 수 있다.
장치의 데이터 폭과 관계없이, DRAM 장치들에서 발생하는 에러들의 많은 종류는 단지 하나의 데이터 비트 충돌이다. 하지만, 일부 에러 모드들은, DRAM 장치의 전체 데이터 폭까지, 하나 이상의 데이터 비트에서 오류를 일으킬 것이다. 표준 ECC에 의해서는 단지 싱글 비트만 정정할 수 있기 때문에, 이러한 멀티 비트 오류 모드들의 일부는 SEC/DED 메모리 시스템에서 치명적인 에러를 발생한다. DRAM 장치들은 더 밀집해지고 있기 때문에, 멀티 비트 오류가 발생할 확률은 증가한다. 칩킬(Chipkill) 정정은 DRAM 장치에서 멀티 비트 오류를 견딜 수 있는 메모리 시스템의 능력이다. 칩킬(Chipkill) 정정은 시스템 레벨의 비트 에러율(Bit Error Rate, BER)을 줄이기 위해 하이 엔드 서버(high-end server)들에서 상용적인 솔루션으로 광범위하게 사용된다.
본 발명의 목적은 더블 비트의 에러를 정정하고, 2 비트 이상의 에러를 검출하는 타이어드 에러 정정 코드 시스템 및 그것의 에러 정정 방법을 제공하는 데 있다.
상기 목적을 달성하기 위한 본 발명에 따른 타이어드 에러 정정 코드(ECC) 시스템은, 특정 비트의 메모리 장치-레벨 실패를 정정하는 메모리 장치들의 적어도 일부에 포함되고, 그리고 상기 특정 비트보다 큰 메모리 장치-레벨 실패가 발생하는 경우 메모리 장치 실패 신호를 전송하는 장치-레벨 ECC 장치, 그리고 상기 메모리 장치 실패 신호의 수신에 관한 응답으로, 시스템 ECC 패리티에 기초하여 상기 특정 비트보다 큰 메모리 장치-레벨 실패를 정정하는 시스템-레벨 ECC 장치를 포함한다.
실시 예로서, 상기 타이어드 ECC 시스템은 싱글 메모리 장치 실패를 정정하고, 메모리 모듈 내의 장치 실패들의 수 및 상기 장치 실패들의 위치들을 검출한다.
실시 예로서, 메모리 모듈 내의 메모리 칩들을 포함하고, 각 메모리 칩은 각각의 장치 ECC 엔진 및 ECC 패리티와 연관되는 메모리 장치-레벨, 그리고 시스템 ECC 엔진 및 시스템 장치 ECC 패리티를 포함하는 시스템-레벨을 포함한다.
실시 예로서, 특정한 메모리 장치 실패 신호의 수신에 따라 상기 시스템 ECC 엔진으로 상기 특정한 메모리 장치 실패 신호를 전송한 메모리 장치 및 에러의 위치를 자동으로 알려주기 위해, 상기 메모리 장치들의 적어도 일부의 각각은 추가적인 데이터-버스 버스트(burst) 또는 추가적인 핀(pin)을 사용하여 ECC 실패 신호를 전송한다.
실시 예로서, 상기 메모리 장치들과 연관되는 상기 ECC 패리티는 행 패리티 칩을 포함한다.
실시 예로서, 상기 행 패리티 칩은 상기 메모리 장치들에게 상기 특정 비트의 정정 능력을 제공하고, 그리고 싱글 칩 실패를 정정하기 위해 사용된다.
실시 예로서, 상기 메모리 장치 실패 신호는 데이터-버스 순환 중복 검사(CRC) 데이터로 통합된다.
실시 예로서, 상기 메모리 장치 실패 신호는 1비트를 포함하고, 상기 CRC 데이터는 7비트를 포함하고, 그리고 데이터-버스의 버스트(burst) 길이는 10까지 증가한다.
실시 예로서, 메모리 모듈을 포함하는 상기 메모리 장치들에서, 싱글-칩 칩킬 시스템의 싱글-칩 정정을 더블-칩 정정 및 실패들의 수를 검출을 수행하는 더블-칩 칩킬 시스템으로 확장하기 위하여 다이아고날(diagonal) 패리티 칩을 더 포함한다.
실시 예로서, 두 메모리 장치 실패 신호들을 수신하는 경우, 상기 시스템 ECC 엔진은 상기 다이아고날 패리티 칩 및 행 패리티 칩을 이용하여 실패된 메모리 장치들의 데이터를 복구한다.
실시 예로서, 둘 이상의 메모리 장치 실패 신호들을 수신하는 경우, 상기 시스템 ECC 엔진은 상기 둘 이상의 메모리 장치 실패 신호들에 기초하여 실패된 메모리 장치들의 수를 결정하고, 정정 불가능 에러 신호를 메모리 컨트롤러로 전송한다.
상기 목적을 달성하기 위한 본 발명에 따른 복수의 메모리 장치들을 포함하는 타이어드 에러 정정 코드(ECC) 시스템을 제공하는 에러 정정 방법은, 특정 비트의 메모리 장치-레벨 실패를 정정하고, 상기 특정 비트보다 큰 메모리 장치-레벨 실패가 발생하는 경우 메모리 장치 실패 신호를 전송하는 상기 메모리 장치들의 적어도 일부에서 장치-레벨 ECC를 통합하는 단계, 그리고 상기 메모리 장치 실패 신호의 수신에 관한 응답으로, 시스템 ECC 패리티에 기초하여 상기 특정 비트보다 큰 메모리 장치-레벨 실패를 정정하는 시스템-레벨 ECC 장치를 이용하는 단계를 포함한다.
실시 예로서, 싱글 메모리 장치 실패를 정정하고, 메모리 모듈 내의 장치 실패의 수 및 상기 장치 실패의 위치를 검출하기 위한 상기 타이어드 ECC 시스템을 이용하는 단계를 더 포함한다.
실시 예로서, 각 메모리 칩은 각각의 장치 ECC 엔진 및 ECC 패리티와 연관되는, 메모리 모듈 내의 메모리 칩들을 메모리 장치-레벨로 통합하는 단계, 그리고 시스템 ECC 엔진 및 시스템 장치 ECC 패리티를 시스템-레벨로 통합하는 단계를 더 포함한다.
실시 예로서, 특정한 메모리 장치 실패 신호가 수신된 경우, 에러 발생 메모리 장치 및 에러의 위치를 자동으로 알려주기 위해 상기 메모리 장치들의 적어도 일부분 각각은 추가적인 데이터-버스 버스트(burst) 또는 추가적인 핀(pin)을 사용하여 ECC 실패 신호를 전송한다.
실시 예로서, 상기 메모리 장치들과 연관되는 상기 ECC 패리티는 행 패리티 칩을 포함한다.
실시 예로서, 상기 행 패리티 칩은 상기 메모리 장치들에게 상기 특정 비트의 정정 능력을 제공하고, 그리고 싱글 칩 실패를 정정하기 위해 사용된다.
실시 예로서, 데이터-버스 순환 중복 검사(CRC) 데이터로 상기 메모리 장치 실패 신호를 통합하는 단계를 더 포함한다.
실시 예로서, 상기 메모리 장치 실패 신호는 1비트를 포함하고, 상기 CRC 데이터는 7비트를 포함하고, 그리고 데이터-버스의 버스트(burst) 길이는 10까지 증가한다.
실시 예로서, 상기 메모리 장치들에서, 싱글-칩 칩킬 시스템의 싱글-칩 정정을 더블-칩 정정 및 실패들의 수를 검출을 수행하는 더블-칩 칩킬 시스템으로 확장하기 위하여 상기 메모리 모듈로 다이아고날(diagonal) 패리티 칩을 제공하는 단계를 더 포함한다.
이상에서 설명된 본 발명의 실시 예에 따르면, 메모리-레벨 ECC 장치 및 시스템 ECC 장치를 사용하여 더블 비트의 에러를 정정하고, 2 비트 이상의 에러를 검출하는 타이어드 에러 정정 코드 시스템 및 그것의 에러 정정 방법을 제공할 수 있다.
도 1은 리드-솔로몬 에러 정정 코드(Reed-Solomon Error Correction Code)에 기초한 일반적인 칩킬 스킴(Chipkill scheme)을 예시적으로 보여주는 도면이다.
도 2는 본 발명에 따른 타이어드 에러 정정 코드 스킴(tiered error-correcting code scheme)에 대한 알고리즘을 보여주는 블록도이다.
도 3a 및 도 3b는 본 발명의 실시 예에 따른 메모리 장치-레벨에서 타이어드 에러 정정 코드 싱글-칩 칩킬 시스템의 구조적인 구현을 예시적으로 보여주는 도면이다.
도 4a는 본 발명에 따른 메모리 장치(202) 내의 프로세스를 예시적으로 보여주는 순서도이다.
도 4b는 본 발명에 따른 시스템 ECC 장치(212)에 의해 수행되는 프로세스를 예시적으로 보여주는 순서도이다.
도 5a 및 도 5b는 본 발명의 실시 예에 따른 메모리 장치-레벨에서 타이어드 ECC 더블-칩 칩킬(Chipkill) 시스템의 구조적인 구현을 예시적으로 보여주는 도면이다.
참조부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 이하에서 실시 예들은 도면들을 참조하여 본 발명을 설명하기 위해 묘사될 것이다.
실시 예들 및 첨부된 도면들의 자세한 설명에 의하면, 본 발명 및 방법들 달성에 따른 이점들과 특징들을 쉽게 이해할 수 있을 것이다. 하지만, 본 발명은 많은 다른 형태로 실시될 수 있으며, 여기에서 설명하는 실시 예에 한정되는 것으로 해석되어서는 안 된다. 오히려, 이러한 실시 예들은 이러한 개시가 철저하고 완전하게 되도록 제공되는 것이며, 이 기술 분야에 정통한 사람에게 본 발명의 개념을 충분히 전달하기 위한 것이다. 본 발명의 개념은 오직 청구항의 범주에 의해 정해질 것이다. 도면들에서, 레이어(layer) 및 영역의 두께는 명확성을 위해 과장되게 표시된 것이다.
"포함하다" 및 "가지다"의 용어는 달리 언급되는 않는 한 개방형 용어로 해석되어야 한다(즉, 포함하지만, 이에 한정되는 것은 아니다).
이하에서 "구성(component)" 또는 "모듈(module)"이라는 용어는, 특정한 일들을 수행하는 필드 프로그래머블 게이트 어레이(field programmable gate array, FPGA) 또는 주문형 집적 회로(application specific integrated circuit, ASIC)와 같이, 소프트웨어 또는 하드웨어 구성을 의미한다. 하지만, 이에 한정되지 않는다. 구성 또는 모듈은 어드레싱할 수 있는 저장 매체에 보관되도록, 그리고 하나 이상의 프로세서들에서 실행할 수 있도록 구성될 수 있다. 따라서 예시적으로, 구성 또는 모듈은, 소프트웨어 구성들, 객체-지향 소프트웨어 구성들, 클래스(class) 구성들 및 태스크(task) 구성들, 프로세스(process)들, 기능(function)들, 속성(attribute)들, 과정(procedures)들, 서브루틴(subroutine)들, 프로그램 코드의 세그먼트(segment)들, 드라이버(driver)들, 펌웨어(firmware), 마이크로코드(microcode), 회로, 데이터, 데이터베이스들, 데이터 구조들, 테이블들, 어레이들, 및 다양한 구성들과 같이, 구성들을 포함할 수 있다. 구성들, 그리고 구성 또는 모듈에 제공되는 기능은 더 적은 수의 구성들, 그리고 구성 또는 모듈로 결합되거나 추가적인 구성들, 그리고 구성 또는 모듈로 더 분리될 수 있다.
달리 정의되지 않는 한, 모든 기술적이고 과학적인 용어들은 본 발명이 속하는 기술 분야의 통상의 지식을 가진 자에 의해 이해되는 것과 동일한 의미를 가진다. 여기에 제공된 예시들 또는 예시적인 용어들은 본 발명을 좀 더 잘 조명하고, 달리 명시되지 않는 한 발명의 범위를 제한하지 않는다. 또한 달리 정의되지 않는 한, 일반적으로 사용되는 사전에 정의된 모든 용어들은 지나치게 해석되지 않을 수 있다.
예시적인 실시 예들은 타이어드(tiered) ECC 싱글-칩(single-chip) 및 더블-칩(double-chip) 칩킬(Chipkill) 시스템을 제공한다. 타이어드 싱글-칩 및 더블-칩 칩킬 시스템은 싱글 칩 오류를 정정하고, 시스템 레벨 ECC를 가진 메모리 장치 ECC 기능을 조정한다. 타이어드 싱글-칩 및 더블-칩 칩킬 시스템은 임의의 수의 칩 실패들을 검출하고(싱글-칩 칩킬(Chipkill)), 더블 칩 실패(double chip failure)들을 정정하고, 그리고 임의의 수의 칩 실패들을 검출할 수 있다(더블-칩 칩킬(Chipkill)). 실시 예로서, 복수의 메모리 장치들은 메모리 장치-레벨 실패들을 정정하는 장치 ECC를 가지도록 제공된다. 메모리 장치들 중 하나의 실패가 장치 ECC의 정정 능력을 넘어서는지에 대한 결정에 응답하여, 에러 신호는 장치-레벨 실패가 시스템 ECC에 의해 시스템-레벨에서 정정되는지 표시하기 위해 전송된다.
도 1은 리드-솔로몬 에러 정정 코드(Reed-Solomon Error Correction Code)에 기초한 일반적인 칩킬 스킴(Chipkill scheme)을 예시적으로 보여주는 도면이다. 듀얼 인-라인 메모리 모듈(Dual in-line memory module, DIMM; 100)들 각각은 각각 4비트(x4 칩)를 제공하는 18개의 메모리 칩들(102, #0 ~ #17)을 포함한다. 칩킬(Chipkill) 정정된 메모리를 제공하기 위해, 메모리 칩들(102) 중 하나의 각 데이터 비트는 구별된 “ECC 워드(ECC word)”에 포함된다. ECC 워드는 에러 검출 및 정정을 제공하기 위한 ECC 알고리즘에 의해 사용된다.
칩킬(Chipkill)은 록스텝(lockstep) 모드에서 128 데이터 비트들 및 16 ECC 비트들을 포함하는 144비트의 ECC 워드(104)를 만들기 위해 2개의 DIMM들로부터 36개(18+18)의 4비트 심볼들을 사용할 수 있다(2개의 메모리 채널들은 싱글 채널로 동작하고, 그래서 쓰기 및 읽기 동작은 2개의 채널 폭의 데이터 워드를 이동시킨다). 이러한 칩킬 스킴(Chipkill scheme)은 싱글 심볼 정정(single-symbol correcting, SSC) 또는 싱글 칩 에러 정정(single-chip error correction), 그리고 더블 심볼 검출(double-symbol detecting, DSD) 또는 더블 칩 에러 검출(double-chip error detection)을 달성한다. 하지만, 2-DIMM 록스텝(lockstep, x144 버스 폭을 가짐)은 칩킬 스킴(Chipkill scheme)이 요구되기 때문에, 싱글 DIMM 비 록스텝(non-lockstep) 동작에 비하여, 그것은 8 버스트 길이(burst length)의 하프(half) 및 더블(double) 프리패칭 에너지(prefetching energy)에 의해 랭크 레벨/뱅크 레벨(rank-level/bank-level) 병행을 줄인다.
도 2는 본 발명에 따른 타이어드 에러 정정 코드 스킴(tiered error-correcting code scheme)에 대한 알고리즘을 보여주는 블록도이다. 실시 예에 따르면, 메모리 장치-레벨 ECC(200)는 타이어드 ECC 싱글-칩 시스템(tiered ECC single-chip system, 210)을 생산하기 위해 시스템-레벨 ECC(206)과 결합된다. 메모리 장치-레벨 ECC(200)에서, 메모리 장치(198)는 일반적으로 통합된 또는 내부의 장치 ECC 패리티(204)(또는 장치 ECC)를 포함한다. 시스템-레벨 ECC(206)는 일반적으로 복수의 메모리 장치들(201-1, 201-2, … , 201-n) 및 시스템 ECC 패리티 장치(208)를 포함한다. 일반적으로 알려진 바와 같이, 패리티 검사(parity checking)는 메모리 에러들을 검출하는 방법이다. 모든 바이트(byte)는 연관된 패리티 비트를 가진다. 즉, 매 8 데이터 비트들 또는 1 바이트 마다 1 패리티 비트(parity bit)를 가진다. 패리티 비트(parity bit)는 일반적으로 비트들의 스트링 끝에 추가하고, 하나의 값을 가지는 스트링의 비트 수가 짝수 또는 홀수인지 표시한다. 패리티 비트(parity bit)는 쓰기 시에 설정되고, 데이터가 저장된 이후로 비트들 중 일부가 변했는지 결정하기 위해 읽기 시에 계산되고 비교된다.
실시 예에 따르면, 타이어드 ECC 싱글-칩 시스템(210)은 복수의 메모리 장치(198)들의 결합에 의해 생성되고, 시스템-레벨 ECC(206)를 가지는 장치 ECC 패리티(204)와 관련될 수 있다. 예를 들면, 타이어드 ECC 싱글-칩 칩킬 시스템(210)은 싱글 메모리 장치 실패를 정정할 수 있고, 임의의 수의 메모리 장치 실패들과 메모리 모듈에 포함된 그것들의 위치를 검출할 수 있다.
도시된 바와 같이, 타이어드 ECC 싱글-칩 시스템(210)은 메모리 장치-레벨(209) 및 시스템-레벨(213)을 포함한다. 메모리 장치-레벨(209)은, 장치 ECC 엔진(203-1 ~ 203-m) 및 ECC 패리티(205-1 ~ 205-m)와 각각 연관되는, 다수의 메모리 장치들(202-1 ~ 202-n)을 포함한다. 시스템-레벨(213)은, 하이-엔드 서버 또는 데이터 센터 서버와 같이, 시스템 ECC 엔진(212), 시스템 장치 ECC 패리티(210), 컴퓨터 메모리의 데이터 흐름을 관리하는 메모리 컨트롤러(216), 및 지시들을 수행하는 프로세서(218)를 포함하는 컴퓨터 시스템을 대표할 수 있다.
장치 ECC 엔진(203-1 ~ 203-m, 이하에서 총괄적으로 203으로 지칭)은 메모리 장치들(202)의 적어도 하나의 부분에 포함된다(예를 들어 ECC 패리티(205)의 일부분). 장치 ECC 엔진(203)은 메모리 장치들(202-1 ~ 202-n, 이하에서 총괄적으로 202로 지칭) 각각의 메모리 장치-레벨 실패들을 정정한다. 특히, 장치 ECC 엔진(203)은 n-비트 에러들을 정정하고, n-비트 에러들 이상을 검출할 수 있다. 메모리 장치들(202) 중 하나의 메모리 장치 실패가 대응하는 장치 ECC 엔진(203)의 정정 능력을 넘어서는 경우(즉, n-비트 에러보다 더 큰 경우), 장치 ECC 엔진(203)는 대응하는 메모리 장치(202)에 정정 불가능한 에러가 있음을 시스템-레벨(213)로 알리기 위해 에러 플래그(error flag)로서 메모리 장치 실패 신호(214)를 전송한다. 시스템 ECC 엔진(212)은 시스템 장치 ECC 패리티(210)에 기초하여 메모리 장치- 레벨 실패들을 정정하여 메모리 장치 실패 신호(214)의 수신에 응답한다. 실시 예로서, 시스템 ECC 엔진(212)은, 메모리 컨트롤러(216)와 메모리 장치들(202) 사이, 또는 메모리 컨트롤러(216)의 내부에서, 메모리 장치들(202)의 외부에 위치할 수 있다. 읽기 동작 동안, 시스템 ECC 엔진(212) 메모리 장치 실패 신호(214)의 부재 시에 메모리 장치(202)로부터 메모리 컨트롤러(216)로 되돌아온 데이터를 통과시킬 수 있다.
실시 예로서, 메모리 장치 실패 신호들(214)은 추가적인 데이터 버스트(burst) 또는 엑스트라(extra) 신호 라인(엑스트라(extra) 신호 라인은 엑스트라(extra) 핀(pin)을 가진다)을 가지는 데이터 신호 라인들을 통해 각 메모리 장치(202)에 의해 시스템 ECC 엔진(212)으로 전송된다. 따라서, 에러의 위치는 알려진다. 엑스트라(extra) 핀(pin)은 특별한 메모리 장치 실패 신호(214)의 수신을 통해 자동적으로 전송하는 메모리 장치(202)를 시스템 ECC 엔진(212)에 알린다.
시스템 ECC 엔진(212)이 하나 또는 두 메모리 장치들(202)로부터 메모리 장치 실패 신호(214)를 수신하면, 시스템 ECC 엔진(212)은 실패된 메모리 장치(202)로부터 데이터를 복구하기 위해 시스템 장치 ECC 패리티(210)를 사용한다. 이에 의해 싱글-칩/더블-칩(single-chip/double-chip) 칩킬(Chipkill)은 구현된다. 시스템 ECC 엔진(212)이 싱글-칩(single-chip) 칩킬(Chipkill)을 위한 하나의 메모리 장치(202), 또는 더블-칩(double-chip) 칩킬(Chipkill)을 위한 두 메모리 장치들(202) 이상의 메모리 장치들(202)로부터 메모리 장치 실패 신호(214)를 수신하면, 시스템 ECC 엔진(212)은 메모리 컨트롤러(216)로 정정 불가능한 에러 신호를 전송한다.
예를 들면, 타이어드 ECC 싱글-칩 칩킬 시스템(210)은 전통적인 칩킬 스킴(Chipkill scheme)들의 비용을 현저하게 줄일 수 있다: 록-스텝(lock-step) 동작은 요구되지 않음, 50% 이하의 에너지 세이빙(energy savings) 및 더블드 패래럴리즘(doubled parallelism), 그리고 장치 ECC 및 시스템 ECC에 의해 제공되는 신뢰성 향상 증배율(reliability improvement multiplication factor). 또한, 칩-레벨 실패 신호(chip-level failure signal, 214) 또는 에러 플래그(error flag)의 존재는 시스템 레벨 ECC 알고리즘을 좀 더 효과적으로 만들 것이다. as the 시스템 레벨 ECC 알고리즘은 에러의 위치를 알려주기 때문이다(반대로 표준 ECC 알고리즘들은 에러의 위치를 알려주지 않는다).
도 3a 및 도 3b는 본 발명의 실시 예에 따른 메모리 장치-레벨에서 타이어드 에러 정정 코드 싱글-칩 칩킬 시스템의 구조적인 구현을 예시적으로 보여주는 도면이다.
도 3a를 참조하면, 타이어드 ECC 싱글- 칩 칩킬 시스템(300)의 메모리 장치-레벨은 싱글 메모리 모듈(302)(즉, 듀얼 인-라인 메모리 모듈(DIMM))을 포함한다. 타이어드 ECC 싱글- 칩 칩킬 시스템(300)은 예시적으로 독립 모드로 동작하는 x4 DRAM으로 도시되었고, x8, x16, 및 이와 유사하게 확장될 수 있다. 실시 예로서, 메모리 모듈(302)은 총 17개의 칩들을 포함할 수 있다. 16개의 메모리 장치들(304)은 #0 내지 #15로 표시되고, 16개의 메모리 장치들(304)의 패리티 정보를 포함하는 추가적인 행 패리티 칩(row parity chip, 306)은 #16으로 표시된다. 행 패리티 칩(306)은 도 2의 ECC 패리티(205)의 구현이다.
도 3b는 메모리 장치 실패 신호(214) 정보를 포함하는 메모리 모듈(302) 내의 행 패리티 칩 구현을 보여주는 도면이다. 패리티 디지트(parity digit)들은 메모리 장치들(304)의 각 행을 교차하여 개별적으로 비트들을 합하여 계산될 수 있다. 예를 들면, 점선 상자(309)는 패리티 디지트 “P31”가 31행의 패리티를 지칭하는 것을 보여준다. 그것은 메모리 장치들(304)의 31행의 비트들을 합하여 계산될 수 있다. 실시 예로서, 행 패리티 칩(306)은 n-비트 정정 능력을 가지는 메모리 장치들(304) 각각을 제공할 수 있고, 싱글 칩 실패들을 정정하는 데 사용될 수 있다. 예를 들면, “n”은 1 또는 2일 수 있다.
예를 들면, 메모리 장치들(304)은 n-비트 에러를 가지는 대응하는 메모리 장치(304)를 표시하기 위해 메모리 장치 실패 신호(214, “-“으로 도시된)를 이슈(issue)하는 장치 ECC 엔진(203)을 포함할 수 있다. 그래서 그것의 시스템-레벨 ECC가 수행되도록 한다.
실시 예로서, 메모리 장치 실패 신호(214)는 시스템 레벨 데이터-버스 입출력 데이터 무결성을 보호하기 위해 데이터-버스 순환 중복 검사(cyclic redundancy check, CRC) 데이터(308)로 통합될 수 있다. 장치-레벨에서 데이터-버스 CRC 데이터(308, “*******”으로 도시된)는 시스템 레벨 데이터-버스 입출력 무결성을 보호한다. 잘 알려져 있는 바와 같이, CRC는 로우 데이터(raw data)의 우연한 변화들을 검출하기 위해 네트워크 및 스토리지 장치들에서 공통으로 사용되는 에러 검출 코드(error-detecting code)이다. 이러한 시스템들에 들어오는 데이터의 블록들은 첨부된 짧은 체크 값(check value)을 가지고, 검색 시에 체크 값(check value)들이 일치하지 않으면, 데이터 손상에 대해 수행되는 계산은 반복되는 정정 동작이다. 실시 예로서, 메모리 장치 실패 신호(214)는 1 비트를 포함한다. CRC 데이터(308)는 7비트를 포함한다. 데이터-버스의 버스트 길이(burst length)는 8비트부터 10비트까지 증가된다. CRC 데이터(308)는 선택적으로 총 10(2+8) 버스트 길이(burst length)의 버스트(burst)의 테일(tail)부터 헤더(header)까지 이동된다.
도 4a 및 도 4b는 본 발명의 실시 예에 따른 타이어드 ECC 싱글-칩 칩킬 스킴(Chipkill scheme)을 구현하기 위한 프로세스를 보여주는 순서도이다. 도 4a는 본 발명에 따른 메모리 장치(202) 내의 프로세스를 예시적으로 보여주는 순서도이다. 장치의 장치 ECC 엔진(203)에 의해 에러가 검출되지 않으면(단계 400), 메모리 장치에 포함된 데이터는 정상적으로 독출되어 시스템 ECC 엔진(212)으로 보내질 수 있다(단계 402). n-비트 또는 그 이하의 메모리 장치 에러들이 검출된 경우(단계 404), 장치 ECC 엔진(203)는 ECC 패리티(즉, 행 패리티 칩(306))를 이용하여 에러를 정정하고, 시스템 ECC 엔진(212)으로 데이터를 보낸다(단계 406). 예를 들면, 칩 #0이 페일(fail)이고 그것의 메모리 장치 실패 신호(memory device failure signal)가 전송된다고 가정하면, 행 패리티 칩(306)은 칩 #0의 데이터를 복구하기 위해 사용된다. n-비트 이상의 에러들이 검출되는 경우(단계 408), 장치 ECC 엔진(203)은, 데이터-버스 버스트(data-bus burst) 동안, 메모리 장치 실패 신호(214)를 전송한다(block 410).
도 4b는 본 발명에 따른 시스템 ECC 장치(212)에 의해 수행되는 프로세스를 예시적으로 보여주는 순서도이다. 메모리 장치 실패 신호들이 수신되는지 결정된다(단계 412). 메모리 장치 실패 신호들이 수신되지 않으면, 시스템 ECC 장치(212)는 메모리 장치들로부터 수신된 데이터를 메모리 컨트롤러(216)로 보낸다(block 414). 싱글-칩 칩킬(Chipkill)에 대한 하나의 메모리 장치 실패 신호(214) 또는 더블-칩 칩킬(Chipkill)에 대한 두 개의 메모리 장치 실패 신호(214)를 수신하는 시스템 ECC 엔진(212)에 대한 응답으로, 메모리 장치 실패 신호들에 기초하여 메모리 장치의 실패를 결정한다(단계 416). 시스템 ECC 엔진(212)은 실패된 메모리 장치의 데이터를 복구하기 위해 시스템 장치 ECC 패리티(210)를 사용한다(단계 418).
하나 이상의 메모리 장치 실패 신호들을 수신하는 시스템 ECC 엔진(212)에 대한 응답으로(단계 420), 시스템 ECC 엔진(212)은 그 메모리 장치들을 실패로 결정하고, 메모리 장치 실패 신호들에 기초하여 실패된 메모리 장치의 수를 결정하고, 메모리 컨트롤러(216)로 그 메모리 장치들에 대한 정정 불가능 에러 신호를 보낸다(단계 422).
도 5a 및 도 5b는 본 발명의 실시 예에 따른 메모리 장치-레벨에서 타이어드 ECC 더블-칩 칩킬(Chipkill) 시스템의 구조적인 구현을 예시적으로 보여주는 도면이다. 도 3a 및 도 3b와 동일한 구성은 동일한 참조번호로 표시하였다. 타이어드 ECC 더블-칩 칩킬 시스템(500)은 메모리 모듈(502)을 포함하는 메모리 장치들(504)에서 더블-칩 정정과 추가적으로 실패들의 수를 검출하는 능력을 제공하기 위해 이상에서 설명된 싱글-칩 칩킬 시스템의 싱글-칩 정정을 확장한다.
타이어드 ECC 싱글-칩 칩킬 시스템에서 #0 내지 #15로 표시된 16개의 메모리 장치들(304), #16으로 표시된 행 패리티 칩(306)에 추가하여, 타이어드 ECC 더블-칩 칩킬 시스템(500)는 16개의 메모리 장치들(504)의 패리티 정보를 포함하는 어크로스-칩 다이아고날 패리티 칩(across-chip diagonal parity chip, 506)으로서 제 2 추가적인 메모리 장치(#17)를 추가한다. 어크로스-칩 다이아고날 패리티 칩(506)은 다이아고날 패리티 체크(diagonal parity check)를 수행하고, 메모리 장치 실패 신호(214)을 이용하여 더블-칩 실패들을 정정하기 위해 RAID6 듀얼 패리티를 사용할 수 있다.
도 5b는 본 발명에 따른 메모리 장치 실패 신호(214) 정보를 포함하는 메모리 모듈(502)에서 RAID6 듀얼 패리티 체크 구현을 예시적으로 보여주는 도면이다. 어크로스-칩 다이아고날 패리티 칩(506), 즉, 장치(#17)에서 “Dy”는 메모리 장치 넘버를 표시한다. “y”는 0 내지 16이다. 따라서, 어크로스-칩 다이아고날 패리티 칩(506)은 “y” 위치에 메모리 장치들(504)의 모든 비트들의 패리티를 포함한다. 행 패리티 칩(306), 즉, 장치(#16)에서 “Px”는 “x”행의 패리티를 표시한다. 그것은 장치(#0) 내지 장치(#16)로 분산될 수 있다(즉, 리버스 다이아고날(reverse diagonal)).
동작 시 n 또는 n보다 작은 메모리 장치 레벨 에러들이 검출되는 경우, 메모리 장치에서 ECC 패리티(즉, 행 패리티 칩(306))를 사용하여 발생된 에러를 정정한다.
2개의 메모리 장치 레벨 실패들이 있는 경우, 그리고 2개의 서로 다른 메모리 장치 실패 신호들(214)이 대응하는 메모리 장치들에 의해 이슈(issue)된 경우, 시스템 ECC 엔진(212)은 실패된 메모리 장치들을 비트마다 대체하여 복구하기 위해 어크로스-칩 다이아고날 패리티 칩(506) 및 어크로스-칩 행 패리티 칩(306)을 사용한다(2*16비트들을 위해 32 사이클이 요구된다). 어크로스-칩 다이아고날 패리티 칩(506)의 D0는 모든 메모리 장치들(504)의 “0” 위치를 검사한다. 예를 들면, 장치(#0)에서, “0”은 첫 번째 위치에 있다. 장치(#1)에서, “0”은 존재하지 않는다. 장치(#2)에서, “0”은 마지막 위치에 있다.
예를 들어, 메모리 장치들(#0, #3)이 정정 불가능한 에러를 가진다고 가정하면, 대응하는 메모리 장치 실패 신호들(214)을 이슈(issue)한다. 복구하는 동안, 장치(#3)에는 “2”가 존재하지 않기 때문에, 시스템 ECC 엔진(212)의 시스템 ECC는 단지 장치(#0)의 “2” 위치를 정정하기 위해 D2를 사용한다. 이것은 다이아고날(diagonal) D2에는 단지 하나의 에러만 존재하는 것을 의미한다. 그러면, 시스템 ECC 엔진(212)은 장치(#3)에서 “5”를 정정하기 위해 P2를 사용하고, 장치(#0)에서 “5”를 정정하기 위해 D5를 사용하고, 장치(#3)에서 “8”을 정정하기 위해 P5를 사용하고, 그러면 장치(#0)에서 “8”을 정정하기 위해 D8을 사용하고, 장치(#3)에서 “11”을 정정하기 위해 P8을 사용하고, 이와 같은 방식으로 2*16 비트들이 정정될 때까지 계속된다.
2개 이상의 메모리 장치 실패 신호들(214)을 수신하는 시스템 ECC 엔진(212)에 대한 응답으로, 시스템 ECC 엔진(212)은 실패된 메모리 장치들의 메모리 장치 실패 신호들을 결정하고, 메모리 장치 실패 신호들에 기초하여 실패된 메모리 장치들의 수를 결정한다.
본 발명의 실시 예에 따른 타이어드 ECC 싱글-칩 및 더블-칩 칩킬 시스템은, 시스템 ECC를 가지는 메모리 장치 ECC 특성들의 조정을 통해, 싱글 칩 실패를 정정하고, 칩 실패들의 수를 검출하고(싱글 칩 칩킬의 실시 예에 있어서), 그리고 더블 칩 실패들을 정정하고, 칩 실패들을 검출한다(더블 칩 칩킬의 실시 예에 있어서). 본 발명의 실시 예에 따르면, 추가적인 메모리 장치들 각각의 추가적인 패리티 칩들은 에러들을 정정하기 위해 사용될 수 있다.
이상에서와 같이 도면과 명세서에서 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허 청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허 청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100: 듀얼 인-라인 메모리 모듈(DIMM)
102: 메모리 칩들
104: ECC 워드
198: 메모리 장치
200: 메모리 장치-레벨 ECC
201, 202: 메모리 장치들
203: 장치 ECC 엔진
204: 장치 ECC 패리티
205: ECC 패리티
206: 시스템-레벨 ECC
208: 시스템 ECC 패리티 장치
210: 타이어드 ECC 싱글-칩 시스템
212: 시스템 ECC 엔진
213: 시스템-레벨
214: 메모리 장치 실패 신호
216: 메모리 컨트롤러
218: 프로세서
300: 타이어드 ECC 싱글-칩 칩킬 시스템
302: 메모리 모듈
304: 메모리 장치들
306: 행 패리티 칩
308: CRC 데이터
500: 타이어드 ECC 더블-칩 칩킬 시스템
502: 메모리 모듈
504: 메모리 장치들
506: 어크로스-칩 다이아고날 패리티 칩

Claims (20)

  1. 타이어드(tiered) ECC(Error Correction Code) 시스템에 있어서:
    메모리 모듈 내의 복수의 메모리 장치들 및 상기 복수의 메모리 장치들과 연관된 장치 ECC 기구(apparatus)를 포함하는 메모리 장치-레벨; 및
    시스템-레벨 ECC 엔진 및 시스템 ECC 장치 패리티를 포함하는 시스템-레벨을 포함하되,
    상기 장치 ECC 기구는 상기 복수의 메모리 장치들 각각에서의 장치 ECC 엔진, 및 상기 복수의 메모리 장치들 중 하나를 포함하고 상기 복수의 메모리 장치들의 패리티 정보를 포함하는 행 패리티 칩을 포함하고,
    상기 장치 ECC 엔진은 상기 행 패리티 칩의 상기 패리티 정보를 사용하여 각각의 메모리 장치에서의 n-비트 메모리 장치-레벨 실패를 정정하고, 그리고 임의의 메모리 장치-레벨 실패가 n-비트보다 크고 장치 ECC 장치의 정정 능력을 초과하면, 메모리 장치 실패 신호를 전송하고,
    상기 시스템-레벨 ECC 엔진은 상기 복수의 메모리 장치들의 외부에 있고, 시스템 ECC 패리티를 기반으로 메모리 장치 실패를 정정하기 위해 상기 메모리 장치 실패 신호를 수신한 것에 응답하는 타이어드 ECC 시스템.
  2. 제 1 항에 있어서,
    상기 타이어드 ECC 시스템은 싱글 메모리 장치 실패를 정정하고, 그리고 상기 메모리 모듈 내의 장치 실패들의 수 및 상기 장치 실패들의 위치들을 검출하는 타이어드 ECC 시스템.
  3. 제 1 항에 있어서,
    상기 복수의 메모리 장치들에 의해 전송된 상기 메모리 장치 실패 신호는 ECC 실패 신호를 포함하고,
    상기 ECC 실패 신호는, 특정 메모리 장치 실패 신호의 수신이 자동적으로 시스템 ECC 엔진에 전송 메모리 장치의 정체(identity) 및 에러의 위치를 알리도록, 추가적인 데이터-버스 버스트(burst) 또는 엑스트라 핀을 사용하여 전송되는 타이어드 ECC 시스템.
  4. 제 1 항에 있어서,
    상기 행 패리티 칩은 상기 복수의 메모리 장치들에 n-비트 정정 능력을 제공하고, 그리고 싱글 칩 실패를 정정하기 위해 사용되고,
    상기 n은 1 또는 2인 타이어드 ECC 시스템.
  5. 타이어드(tiered) ECC(Error Correction Code) 시스템을 제공하는 방법에 있어서:
    메모리 모듈 내의 복수의 메모리 장치들을 포함하는 메모리 장치-레벨에서, 장치 ECC 기구(apparatus)를 상기 복수의 메모리 장치들과 연관시키는 단계;
    행 패리티 칩의 패리티 정보를 사용하여 각각의 메모리 장치에서의 n-비트 메모리 장치-레벨 실패를 정정하기 위해, 그리고 임의의 메모리 장치-레벨 실패가 n-비트보다 크고 장치 ECC 장치의 정정 능력을 초과하면, 메모리 장치 실패 신호를 전송하기 위해, 장치 ECC 엔진을 사용하는 단계; 및
    시스템-레벨 ECC 엔진 및 시스템 ECC 장치 패리티를 포함하는 시스템-레벨에서, 상기 복수의 메모리 장치들의 외부에 있고, 시스템 ECC 패리티를 기반으로 메모리 장치 실패를 정정하기 위해 상기 메모리 장치 실패 신호를 수신한 것에 응답하는 상기 시스템-레벨 ECC 엔진을 사용하는 단계를 포함하되,
    상기 장치 ECC 기구는 상기 복수의 메모리 장치들 각각에서의 상기 장치 ECC 엔진, 및 상기 복수의 메모리 장치들 중 하나를 포함하고 상기 복수의 메모리 장치들의 상기 패리티 정보를 포함하는 상기 행 패리티 칩을 포함하는 방법.
  6. 제 5 항에 있어서,
    싱글 메모리 장치 실패를 정정하기 위해, 그리고 상기 메모리 모듈 내의 장치 실패들의 수 및 상기 장치 실패들의 위치들을 검출하기 위해, 상기 타이어드 ECC 시스템을 사용하는 단계를 더 포함하는 방법.
  7. 제 5 항에 있어서,
    상기 복수의 메모리 장치들의 적어도 일부 각각에 의해 전송된 상기 메모리 장치 실패 신호는 ECC 실패 신호를 포함하고,
    상기 ECC 실패 신호는, 특정 메모리 장치 실패 신호의 수신이 자동적으로 시스템 ECC 엔진에 전송 메모리 장치의 정체(identity) 및 에러의 위치를 알리도록, 추가적인 데이터-버스 버스트(burst) 또는 엑스트라 핀을 사용하여 전송되는 방법.
  8. 제 5 항에 있어서,
    상기 행 패리티 칩은 상기 복수의 메모리 장치들에 n-비트 정정 능력을 제공하고, 그리고 싱글 칩 실패를 정정하기 위해 사용되고,
    상기 n은 1 또는 2인 방법.
  9. 타이어드(tiered) ECC(Error Correction Code) 시스템에 있어서:
    메모리 모듈 내의 복수의 메모리 장치들을 포함하는 메모리 장치-레벨;
    상기 복수의 메모리 장치들 각각에서의 장치 ECC 엔진;
    상기 복수의 메모리 장치들 중 하나를 포함하고 상기 복수의 메모리 장치들의 패리티 정보를 포함하는 행 패리티 칩; 및
    시스템-레벨 ECC 엔진 및 시스템 ECC 장치 패리티를 포함하는 시스템-레벨을 포함하되,
    상기 장치 ECC 엔진은 상기 행 패리티 칩의 상기 패리티 정보를 사용하여 각각의 메모리 장치에서의 n-비트 메모리 장치-레벨 실패를 정정하고, 그리고 임의의 메모리 장치-레벨 실패가 n-비트보다 크고 장치 ECC 장치의 정정 능력을 초과하면, 메모리 장치 실패 신호를 전송하고,
    상기 메모리 장치 실패 신호는 데이터-버스 순환 중복 검사(CRC) 데이터로 통합되고, 상기 메모리 장치 실패 신호는 1 비트를 포함하고, 상기 CRC 데이터는 7 비트를 포함하고, 데이터-버스의 버스트(burst) 길이는 10까지 증가하고,
    상기 시스템-레벨 ECC 엔진은 상기 복수의 메모리 장치들의 외부에 있고, 시스템 ECC 패리티를 기반으로 메모리 장치 실패를 정정하기 위해 상기 메모리 장치 실패 신호를 수신한 것에 응답하는 타이어드 ECC 시스템.
  10. 타이어드(tiered) ECC(Error Correction Code) 시스템에 있어서:
    메모리 모듈 내의 복수의 메모리 장치들을 포함하는 메모리 장치-레벨;
    상기 복수의 메모리 장치들 각각에서의 장치 ECC 엔진;
    상기 복수의 메모리 장치들 중 하나를 포함하고 상기 복수의 메모리 장치들의 패리티 정보를 포함하는 행 패리티 칩;
    싱글-칩 칩킬(chipkill) 시스템의 싱글-칩 정정을 타이어드 ECC 더블-칩 칩킬 시스템으로 확장하기 위한 다이아고날(diagonal) 패리티 칩; 및
    시스템-레벨 ECC 엔진 및 시스템 ECC 장치 패리티를 포함하는 시스템-레벨을 포함하되,
    상기 장치 ECC 엔진은 상기 행 패리티 칩의 상기 패리티 정보를 사용하여 각각의 메모리 장치에서의 n-비트 메모리 장치-레벨 실패를 정정하고, 그리고 임의의 메모리 장치-레벨 실패가 n-비트보다 크고 장치 ECC 장치의 정정 능력을 초과하면, 메모리 장치 실패 신호를 전송하고,
    상기 타이어드 ECC 더블-칩 칩킬 시스템은 상기 메모리 모듈에 포함된 상기 복수의 메모리 장치들에서의 실패의 수를 검출하는 능력을 더한 더블-칩 정정을 수행하고,
    상기 시스템-레벨 ECC 엔진은 상기 복수의 메모리 장치들의 외부에 있고, 시스템 ECC 패리티를 기반으로 메모리 장치 실패를 정정하기 위해 상기 메모리 장치 실패 신호를 수신한 것에 응답하는 타이어드 ECC 시스템.
  11. 제 10 항에 있어서,
    2개의 메모리 장치 실패들 및 2개의 대응하는 메모리 장치 실패 신호들이 있으면, 상기 시스템-레벨 ECC 엔진은 실패된 메모리 장치들로부터 데이터를 복구하기 위해 상기 다이아고날 패리티 칩 및 상기 행 패리티 칩을 대안적으로 사용하는 타이어드 ECC 시스템.
  12. 제 11 항에 있어서,
    상기 시스템-레벨 ECC 엔진이 2개보다 많은 메모리 장치 실패 신호들을 수신한 것에 응답하여, 상기 시스템-레벨 ECC 엔진은 상기 2개보다 많은 메모리 장치 실패 신호들을 기반으로 메모리 장치들 중 어느 것이 실패했는지 및 실패한 메모리 장치들의 수를 결정하고, 그리고 정정 불가능 에러 신호를 메모리 컨트롤러로 전송하는 타이어드 ECC 시스템.
  13. 타이어드(tiered) ECC(Error Correction Code) 시스템을 제공하는 방법에 있어서:
    메모리 모듈 내의 복수의 메모리 장치들을 포함하는 메모리 장치-레벨에서, 장치 ECC 기구(apparatus)를 상기 복수의 메모리 장치들과 연관시키는 단계;
    행 패리티 칩의 패리티 정보를 사용하여 각각의 메모리 장치에서의 n-비트 메모리 장치-레벨 실패를 정정하기 위해, 그리고 임의의 메모리 장치-레벨 실패가 n-비트보다 크고 장치 ECC 장치의 정정 능력을 초과하면, 메모리 장치 실패 신호를 전송하기 위해, 장치 ECC 엔진을 사용하는 단계;
    상기 메모리 장치 실패 신호를 데이터-버스 순환 중복 검사(CRC) 데이터로 통합하는 단계; 및
    시스템-레벨 ECC 엔진 및 시스템 ECC 장치 패리티를 포함하는 시스템-레벨에서, 상기 복수의 메모리 장치들의 외부에 있고, 시스템 ECC 패리티를 기반으로 메모리 장치 실패를 정정하기 위해 상기 메모리 장치 실패 신호를 수신한 것에 응답하는 상기 시스템-레벨 ECC 엔진을 사용하는 단계를 포함하되,
    상기 장치 ECC 기구는 상기 복수의 메모리 장치들 각각에서의 상기 장치 ECC 엔진, 및 상기 복수의 메모리 장치들 중 하나를 포함하고 상기 복수의 메모리 장치들의 상기 패리티 정보를 포함하는 상기 행 패리티 칩을 포함하고,
    상기 메모리 장치 실패 신호는 1 비트를 포함하고, 상기 CRC 데이터는 7 비트를 포함하고, 데이터-버스의 버스트(burst) 길이는 10까지 증가하는 방법.
  14. 제 13 항에 있어서,
    2개의 메모리 장치 실패들 및 2개의 대응하는 메모리 장치 실패 신호들이 있으면, 상기 시스템-레벨 ECC 엔진은 실패된 메모리 장치들로부터 데이터를 복구하기 위해 다이아고날 패리티 칩 및 상기 행 패리티 칩을 대안적으로 사용하는 방법.
  15. 제 14 항에 있어서,
    상기 시스템-레벨 ECC 엔진이 2개보다 많은 메모리 장치 실패 신호들을 수신한 것에 응답하여, 상기 시스템-레벨 ECC 엔진에 의해, 상기 2개보다 많은 메모리 장치 실패 신호들을 기반으로 메모리 장치들 중 어느 것이 실패했는지 및 실패한 메모리 장치들의 수를 결정하고, 그리고 정정 불가능 에러 신호를 메모리 컨트롤러로 전송하는 단계를 더 포함하는 방법.
  16. 타이어드(tiered) ECC(Error Correction Code) 시스템을 제공하는 방법에 있어서:
    메모리 모듈 내의 복수의 메모리 장치들을 포함하는 메모리 장치-레벨에서, 장치 ECC 기구(apparatus)를 상기 복수의 메모리 장치들과 연관시키는 단계;
    행 패리티 칩의 패리티 정보를 사용하여 각각의 메모리 장치에서의 n-비트 메모리 장치-레벨 실패를 정정하기 위해, 그리고 임의의 메모리 장치-레벨 실패가 n-비트보다 크고 장치 ECC 장치의 정정 능력을 초과하면, 메모리 장치 실패 신호를 전송하기 위해, 장치 ECC 엔진을 사용하는 단계;
    싱글-칩 칩킬(chipkill) 시스템의 싱글-칩 정정을 타이어드 ECC 더블-칩 칩킬 시스템으로 확장하기 위한 다이아고날(diagonal) 패리티 칩을 상기 메모리 모듈에 제공하는 단계; 및
    시스템-레벨 ECC 엔진 및 시스템 ECC 장치 패리티를 포함하는 시스템-레벨에서, 상기 복수의 메모리 장치들의 외부에 있고, 시스템 ECC 패리티를 기반으로 메모리 장치 실패를 정정하기 위해 상기 메모리 장치 실패 신호를 수신한 것에 응답하는 상기 시스템-레벨 ECC 엔진을 사용하는 단계를 포함하되,
    상기 장치 ECC 기구는 상기 복수의 메모리 장치들 각각에서의 상기 장치 ECC 엔진, 및 상기 복수의 메모리 장치들 중 하나를 포함하고 상기 복수의 메모리 장치들의 상기 패리티 정보를 포함하는 상기 행 패리티 칩을 포함하고,
    상기 타이어드 ECC 더블-칩 칩킬 시스템은 상기 메모리 모듈에 포함된 상기 복수의 메모리 장치들에서의 실패의 수를 검출하는 능력을 더한 더블-칩 정정을 수행하는 방법.
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020150098572A 2014-07-10 2015-07-10 타이어드 에러 정정 코드 시스템 및 그것의 에러 정정 방법 KR102170776B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201462022776P 2014-07-10 2014-07-10
US62/022,776 2014-07-10
US14/606,334 US9772900B2 (en) 2014-07-10 2015-01-27 Tiered ECC single-chip and double-chip Chipkill scheme
US14/606,334 2015-01-27

Publications (2)

Publication Number Publication Date
KR20160007440A KR20160007440A (ko) 2016-01-20
KR102170776B1 true KR102170776B1 (ko) 2020-10-28

Family

ID=55067666

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150098572A KR102170776B1 (ko) 2014-07-10 2015-07-10 타이어드 에러 정정 코드 시스템 및 그것의 에러 정정 방법

Country Status (3)

Country Link
US (1) US9772900B2 (ko)
KR (1) KR102170776B1 (ko)
CN (1) CN105260258B (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9852809B2 (en) * 2015-12-28 2017-12-26 Micron Technology, Inc. Test mode circuit for memory apparatus
EP3453022B1 (en) * 2016-05-02 2022-07-06 INTEL Corporation Internal error checking and correction (ecc) with extra system bits
US10268541B2 (en) 2016-08-15 2019-04-23 Samsung Electronics Co., Ltd. DRAM assist error correction mechanism for DDR SDRAM interface
US10169126B2 (en) * 2016-10-12 2019-01-01 Samsung Electronics Co., Ltd. Memory module, memory controller and systems responsive to memory chip read fail information and related methods of operation
KR20180061870A (ko) 2016-11-30 2018-06-08 삼성전자주식회사 메모리 모듈, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법
KR20180069179A (ko) * 2016-12-14 2018-06-25 에스케이하이닉스 주식회사 메모리 시스템 및 이의 에러 정정 방법
KR20180089104A (ko) 2017-01-31 2018-08-08 에스케이하이닉스 주식회사 메모리 모듈, 이를 포함하는 메모리 시스템 및 이의 에러 정정 방법
KR102479483B1 (ko) * 2017-10-19 2022-12-21 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법
KR20190062908A (ko) * 2017-11-29 2019-06-07 에스케이하이닉스 주식회사 에러 정정 방법 및 칩 킬 감지 방법
KR102387195B1 (ko) * 2017-11-30 2022-04-18 에스케이하이닉스 주식회사 메모리 시스템 및 이의 에러 정정 방법
US10621121B2 (en) * 2017-12-01 2020-04-14 Intel Corporation Measurement and optimization of command signal timing margins
US11265022B2 (en) 2018-05-18 2022-03-01 SK Hynix Inc. Memory system and operating method thereof
KR20190132238A (ko) 2018-05-18 2019-11-27 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR20190132237A (ko) * 2018-05-18 2019-11-27 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR20200074467A (ko) 2018-12-17 2020-06-25 삼성전자주식회사 에러 정정 코드 회로, 반도체 메모리 장치 및 메모리 시스템
TWI718709B (zh) * 2019-06-25 2021-02-11 慧榮科技股份有限公司 資料儲存裝置以及非揮發式記憶體控制方法
KR20210034726A (ko) 2019-09-20 2021-03-31 삼성전자주식회사 메모리 모듈, 그것을 제어하는 메모리 제어기의 에러 정정 방법, 및 그것을포함하는 컴퓨팅 시스템
KR20210089804A (ko) 2020-01-08 2021-07-19 삼성전자주식회사 메모리 모듈 및 이를 포함하는 메모리 시스템
US11327836B1 (en) 2020-09-29 2022-05-10 Xilinx, Inc. Protection of data on a data path in a memory system
WO2022228642A1 (en) * 2021-04-26 2022-11-03 Huawei Technologies Co., Ltd. Memory system and method for use in the memory system
US11640334B2 (en) 2021-05-21 2023-05-02 Microsoft Technology Licensing, Llc Error rates for memory with built in error correction and detection
US20220413568A1 (en) * 2021-06-29 2022-12-29 Nvidia Corporation Power delivery communication system

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070011562A1 (en) 2005-06-24 2007-01-11 Alexander James W Mitigating silent data corruption in a buffered memory module architecture

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4335459A (en) * 1980-05-20 1982-06-15 Miller Richard L Single chip random access memory with increased yield and reliability
US5228046A (en) * 1989-03-10 1993-07-13 International Business Machines Fault tolerant computer memory systems and components employing dual level error correction and detection with disablement feature
US5058115A (en) * 1989-03-10 1991-10-15 International Business Machines Corp. Fault tolerant computer memory systems and components employing dual level error correction and detection with lock-up feature
US5418796A (en) * 1991-03-26 1995-05-23 International Business Machines Corporation Synergistic multiple bit error correction for memory of array chips
US5535226A (en) * 1994-05-31 1996-07-09 International Business Machines Corporation On-chip ECC status
US6233716B1 (en) * 1998-09-24 2001-05-15 Sun Microsystems, Inc. Technique for partitioning data to correct memory part failures
US6771934B2 (en) * 2001-06-19 2004-08-03 Telcordia Technologies, Inc. Methods and systems for reducing interference across coverage cells
US7076686B2 (en) * 2002-02-20 2006-07-11 Hewlett-Packard Development Company, L.P. Hot swapping memory method and system
DE602004014371D1 (de) * 2004-09-10 2008-07-24 St Microelectronics Srl Speicher mit eingebauter Fehlerkorrekturkode-Einrichtung
US7307902B2 (en) * 2005-08-30 2007-12-11 Hewlett-Packard Development Company, L.P. Memory correction system and method
US7227797B2 (en) 2005-08-30 2007-06-05 Hewlett-Packard Development Company, L.P. Hierarchical memory correction system and method
KR101300810B1 (ko) * 2006-04-03 2013-08-26 삼성전자주식회사 데이터 인코딩 및 디코딩 방법과 그 장치, 저장 매체, 및저장 매체 구동 시스템
US7712010B2 (en) 2006-06-15 2010-05-04 International Business Machines Corporation Systems, methods and computer program products for utilizing a spare lane for additional checkbits
EP2256634A1 (en) 2009-05-27 2010-12-01 Robert Bosch Gmbh A data processing device and a method for error detection and error correction
US8615700B2 (en) * 2009-08-18 2013-12-24 Viasat, Inc. Forward error correction with parallel error detection for flash memories
JP5540969B2 (ja) 2009-09-11 2014-07-02 ソニー株式会社 不揮発性メモリ装置、メモリコントローラ、およびメモリシステム
US8335976B2 (en) 2010-05-24 2012-12-18 Oracle America, Inc. Memory system that provides guaranteed component-failure correction with double-error correction
WO2011159806A2 (en) * 2010-06-15 2011-12-22 Fusion-Io, Inc. Apparatus, system, and method for providing error correction
US8365015B1 (en) * 2010-08-09 2013-01-29 Nvidia Corporation Memory-based error recovery
KR20130027138A (ko) * 2011-09-07 2013-03-15 삼성전자주식회사 에러 정정 방법 및 이를 이용하는 메모리 장치
US8788904B2 (en) 2011-10-31 2014-07-22 Hewlett-Packard Development Company, L.P. Methods and apparatus to perform error detection and correction
US8806285B2 (en) 2012-05-31 2014-08-12 Intel Corporation Dynamically allocatable memory error mitigation
US8812915B2 (en) * 2012-09-27 2014-08-19 Hewlett-Packard Development Company, L.P. Determining whether a right to use memory modules in a reliability mode has been acquired

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070011562A1 (en) 2005-06-24 2007-01-11 Alexander James W Mitigating silent data corruption in a buffered memory module architecture

Also Published As

Publication number Publication date
KR20160007440A (ko) 2016-01-20
CN105260258A (zh) 2016-01-20
CN105260258B (zh) 2019-08-06
US20160011940A1 (en) 2016-01-14
US9772900B2 (en) 2017-09-26

Similar Documents

Publication Publication Date Title
KR102170776B1 (ko) 타이어드 에러 정정 코드 시스템 및 그것의 에러 정정 방법
US9037941B2 (en) Systems and methods for error checking and correcting for memory module
KR102198611B1 (ko) 메모리 내 에러 수정 방법
EP3504624B1 (en) Error correction hardware with fault detection
US8185800B2 (en) System for error control coding for memories of different types and associated methods
US20190206477A1 (en) Using dual channel memory as single channel memory with spares
US10884848B2 (en) Memory device, memory system including the same and operation method of the memory system
WO2013147794A1 (en) Enhanced storage of metadata utilizing improved error detection and correction in computer memory
US11726665B1 (en) Memory extension with error correction
US20190012230A1 (en) Memory device, memory system including the same, and operating method of memory system
US20160139988A1 (en) Memory unit
US11188417B2 (en) Memory system, memory module, and operation method of memory system
US10901842B2 (en) Memory system and operating method thereof
WO2016122515A1 (en) Erasure multi-checksum error correction code
US11265022B2 (en) Memory system and operating method thereof
US20150200685A1 (en) Recording and reproducing device, error correction method, and control device
US10915398B2 (en) Memory system and operating method thereof
US10810080B2 (en) Memory device selectively correcting an error in data during a read operation, memory system including the same, and operating method of memory system
CN106021012B (zh) 数据处理电路
US10740179B2 (en) Memory and method for operating the memory

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant