KR20190005116A - 메모리 장치, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법 - Google Patents

메모리 장치, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법 Download PDF

Info

Publication number
KR20190005116A
KR20190005116A KR1020180076053A KR20180076053A KR20190005116A KR 20190005116 A KR20190005116 A KR 20190005116A KR 1020180076053 A KR1020180076053 A KR 1020180076053A KR 20180076053 A KR20180076053 A KR 20180076053A KR 20190005116 A KR20190005116 A KR 20190005116A
Authority
KR
South Korea
Prior art keywords
memory
error
error correction
data
memory device
Prior art date
Application number
KR1020180076053A
Other languages
English (en)
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 KR20190005116A publication Critical patent/KR20190005116A/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/1068Adding 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
    • 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/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • 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/102Error in check bits
    • 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/1032Simple parity
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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/109Sector level checksum or ECC, i.e. sector or stripe level checksum or ECC in addition to the RAID parity calculation
    • 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
    • G11C2029/0411Online error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Abstract

메모리 장치는, 라이트 동작시에 수신된 에러 정정 코드를 수신된 데이터의 에러를 검출하는 라이트 에러 체크 회로; 및 상기 라이트 에러 체크 회로에 의해 에러가 검출되지 않은 경우에, 상기 수신된 데이터와 상기 수신된 에러 정정 코드를 저장하는 메모리 코어를 포함할 수 있다.

Description

메모리 장치, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법 {MEMORY DEVICE, MEMORY SYSTEM INCLUDING THE SAME AND OPERATION METHOD OF THE MEMORY SYSTEM}
본 특허 문헌은 메모리 장치 및 이를 포함하는 메모리 시스템에 관한 것이다.
반도체 메모리 산업 초기에는 반도체 제조 프로세스를 통과한 메모리 칩에서 불량 메모리 셀이 하나도 존재하지 않는 오리지날 굿 다이(original good die)가 웨이퍼(wafer) 상에 다수 분포하였다. 그러나 메모리 장치의 용량이 점차로 증가하면서 불량 메모리 셀이 하나도 존재하지 않는 메모리 장치를 만드는 것이 어려워졌으며, 현재에는 이러한 메모리 장치가 제조될 확률은 없다고 봐도 무방하다. 이러한 상황을 타개하기 위한 하나의 방편으로 메모리 장치의 불량 메모리 셀들을 리던던시 메모리 셀들로 리페어하는 방법이 사용되고 있다.
그리고 또 하나의 방편으로 메모리 시스템에서 에러를 정정하는 에러 정정 회로(ECC 회로)를 사용해 메모리 셀에서 발생하는 에러 및 메모리 시스템의 리드 및 라이트 과정에서 데이터가 전송되면서 발생하는 에러를 정정하고 있다.
본 발명의 실시예들은, 메모리 시스템에서의 에러 정정의 효율성을 높이는 기술을 제공할 수 있다.
본 발명의 일실시예에 따른 메모리 장치는, 데이터와 에러 정정 코드의 송수신을 위한 데이터 송수신 회로; 라이트 동작시에 상기 데이터 송수신 회로를 통해 수신된 에러 정정 코드를 이용해 상기 데이터 송수신 회로를 통해 수신된 데이터의 에러를 검출하는 라이트 에러 체크 회로; 및 상기 라이트 에러 체크 회로에 의해 에러가 검출되지 않은 경우에, 상기 데이터 송수신 회로를 통해 수신된 데이터와 에러 정정 코드를 저장하는 메모리 코어를 포함할 수 있다.
본 발명의 일실시예에 따른 메모리 시스템은, 메모리 장치와 메모리 콘트롤러를 포함하고, 상기 메모리 장치는 라이트 동작시에 상기 메모리 콘트롤러로부터 수신된 에러 정정 코드를 이용해 상기 메모리 콘트롤러로부터 수신된 데이터의 에러를 검출하는 라이트 에러 체크 회로; 및 상기 라이트 에러 체크 회로에 의해 에러가 검출되지 않은 경우에, 상기 수신된 데이터와 상기 수신된 에러 정정 코드를 저장하는 메모리 코어를 포함하고, 상기 메모리 콘트롤러는 상기 메모리 장치로 전달될 데이터를 이용해 상기 메모리 장치로 전달될 에러 정정 코드를 생성하는 에러 정정 코드 생성 회로; 및 상기 메모리 장치로부터 전달된 에러 정정 코드를 이용해 상기 메모리 장치로부터 전달된 데이터에 에러가 존재하는 경우에 이를 정정하는 에러 정정 회로를 포함할 수 있다.
본 발명의 일실시예에 따른 메모리 시스템의 동작 방법은, 메모리 콘트롤러가 라이트 데이터를 이용해 에러 정정 코드를 생성하는 단계; 라이트 커맨드, 상기 라이트 데이터 및 상기 에러 정정 코드가 상기 메모리 콘트롤러로부터 메모리 장치로 전달되는 단계; 상기 메모리 장치가 상기 에러 정정 코드를 이용해 상기 라이트 데이터의 에러를 검출하는 단계; 및 상기 라이트 데이터의 에러가 검출되지 않은 경우에, 상기 라이트 데이터와 상기 에러 정정 코드가 상기 메모리 장치의 메모리 코어에 저장되는 단계를 포함할 수 있다.
본 발명의 실시예들에 따르면, 메모리 시스템에서의 에러 정정의 효율성을 높일 수 있다.
도 1은 본 발명의 일실시예에 따른 메모리 시스템(100)의 구성도.
도 2는 도 1의 메모리 장치(121)의 일실시예 구성도.
도 3은 본 발명의 다른 실시예에 따른 메모리 시스템(300)의 구성도.
도 4는 도 3의 메모리 장치(320)의 일실시예 구성도.
도 5A와 도 5B는 인-메모리 에러 정정 회로(420)의 동작을 설명하기 위한 도면.
도 6은 도 3의 메모리 장치(320)의 다른 실시예 구성도.
도 7은 도 3 및 도 6과 같이 구성된 메모리 시스템(300)의 라이트 동작을 도시한 도면.
도 8은 도 3 및 도 6과 같이 구성된 메모리 시스템(300)의 리드 동작을 도시한 도면.
도 9는 본 발명의 또 다른 실시예에 따른 메모리 시스템(900)의 구성도.
도 10은 도 9의 메모리 장치(920)의 일실시예 구성도.
도 11은 도 9의 메모리 시스템(900)의 라이트 동작을 도시한 도면.
이하, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 상세히 설명하기 위하여, 본 발명의 가장 바람직한 실시예를 첨부 도면을 참조하여 설명하기로 한다. 본 발명을 설명함에 있어서, 본 발명의 요지와 무관한 공지의 구성은 생략될 수 있다. 각 도면의 구성요소들에 참조 번호를 부가함에 있어서, 동일한 구성요소들에 한해서는 비록 다른 도면 상에 표시되더라도 가능한 한 동일한 번호를 가지도록 하고 있음에 유의하여야 한다.
도 1은 본 발명의 일실시예에 따른 메모리 시스템(100)의 구성도이다. 도 1에서는 메모리 시스템(100)에서 데이터의 저장 및 데이터의 에러 정정과 직접적으로 관련된 부분만을 도시했다.
도 1을 참조하면, 메모리 시스템(100)은 메모리 콘트롤러(110)와 메모리 모듈(120)을 포함할 수 있다.
메모리 콘트롤러(110)는 호스트(host)의 요청에 따라 메모리 모듈(120)의 리드(read) 및 라이트(write) 등의 동작을 제어할 수 있다. 메모리 콘트롤러(110)는 라이트 동작시에 에러 정정 코드(ECC)를 생성하기 위한 에러 정정 코드 생성 회로(111)와 리드 동작시에 에러 정정 코드(ECC)를 이용해 데이터(DATA)의 에러를 정정하기 위한 에러 정정 회로(112)를 포함할 수 있다.
에러 정정 코드 생성 회로(111)는 라이트 동작시에 호스트로부터 전달된 데이터(HOST_DATA)를 이용해 에러를 정정하기 위한 에러 정정 코드(ECC)를 생성할 수 있다. 여기서는 한 번의 라이트 동작시에 처리되는 데이터의 단위, 즉 데이터 워드(data word)의 단위, 가 256비트인 것을 예시했는데, 이 경우에 에러 정정 코드 생성 회로(111)는 256비트의 데이터(HOST_DATA)를 이용해 32비트의 에러 정정 코드(ECC)를 생성할 수 있다. 에러 정정 코드 중 16비트는 256비트의 데이터에 대한 CRC(Cyclic Redundancy Check) 코드이고 나머지 16비트는 256비트의 데이터와 16비트의 CRC 코드에 대한 심플(simple) 패리티 (PARITY) 코드일 수 있다. 라이트 동작시에는 에러 정정 코드(ECC)만 생성될 뿐 에러의 정정 동작이 수행되지는 않으므로 호스트로부터 전달된 데이터(HOST_DATA)와 메모리 콘트롤러(110)로부터 메모리 모듈(120)로 전달되는 데이터(DATA)는 동일할 수 있다. 코드워드(codeword)는 데이터(DATA)와 에러 정정 코드(ECC)의 합을 말하는데, 288비트의 코드워드는 18개의 심볼(symbol)로 나누어질 수 있다. 1개의 심볼을 16비트라 가정할 때, 256비트의 데이터(DATA)는 16개의 심볼로 나누어질 수 있으며, 32비트의 에러 정정 코드(ECC)는 1심볼의 CRC 코드와 1심볼의 심플 패리티(PARITY) 코드로 나누어질 수 있다. 여기서 CRC 코드는 상세하게 CRC-16 코드일 수 있으며, 심플 패리티(PARITY) 코드는 전체 코드워드에서 심플 패리티(PARITY)를 제외한 나머지 심볼들을 심볼 단위로 XOR연산해 생성될 수 있다.
에러 정정 회로(112)는 리드 동작시에 메모리 모듈(120)로부터 전달된 에러 정정 코드(ECC)를 이용해 메모리 모듈(120)로부터 전달된 데이터(DATA)의 에러를 정정할 수 있다. 에러 정정 회로(112)는 CRC 코드를 이용해 에러를 감지하고 심플 패리티(PARITY) 코드를 이용해 심볼을 복원하는 방식으로 데이터의 에러를 정정할 수 있다. 예를 들어, CRC 코드를 이용한 CRC 연산으로 에러 유무 감지 -> 첫번째 심볼에 에러가 있다고 가정하고, 첫번째 심볼을 패리티 코드를 이용한 패리티 연산으로 복원 -> 첫번째 심볼이 복원된 상태에서 CRC 연산으로 에러 유무 감지 -> 두번째 심볼에 에러가 있다고 가정하고 두번째 심볼을 패리티 코드를 이용한 패리티 연산으로 복원 -> 두번째 심볼이 복원된 상태에서 CRC 연산으로 에러 유무 감지 -> 세번째 심볼에 에러가 있다고 가정하고 세번째 심볼을 패리티 코드를 이용한 패리티 연산으로 복원 -> 세번째 심볼이 복원된 상태에서 CRC 연산으로 에러 유무 감지........ 와 같은 동작을 에러가 검출되지 않을 때까지 반복할 수 있다. 이와 같은 방식으로 에러 정정 회로(112)는 1개 심볼의 에러를 정정할 수 있다.
메모리 모듈(120)은 18개의 메모리 장치들(121~138)을 포함할 수 있다. 메모리 장치들(121~138) 각각은 DRAM, PCRAM(Phase Change Random Access Memory), Flash memory 등 모든 종류의 메모리 중 하나일 수 있다. 메모리 모듈(120)은 DIMM (Dual In-Line Memory Module) 타입일 수 있다. 18개의 메모리 장치들(121~128)은 256비트의 데이터(DATA)와 32비트의 에러 정정 코드(ECC)를 포함하는 288비트의 코드워드, 즉 18개 심볼의 코드워드,를 분산 저장할 수 있다. 한번의 라이트 동작시에 코드워드를 구성하는 18개의 심볼은 18개의 메모리 장치들(121~138)에 1심볼씩 라이트될 수 있으며, 한번의 리드 동작시에 18개의 메모리 장치들(121~138)로부터 1심볼씩 총 18개의 심볼이 리드될 수 있다. 도면의 메모리 장치들 각각에는 해당 메모리 장치가 저장하는 코드워드를 표시했다. 예를 들어, 메모리 장치(123)는 16비트의 데이터 1심볼을 저장할 수 있으며, 메모리 장치(138)는 16비트의 ECC 코드 1심볼 (ECC 중 CRC 코드)를 저장할 수 있다.
도 2는 도 1의 메모리 장치(121)의 일실시예 구성도이다. 도 2에는 메모리 장치(121)에서 데이터의 저장 및 데이터의 에러 정정과 직접적으로 관련된 부분만을 도시했다. 도 1의 메모리 장치들(122~138)도 도 2와 동일하게 구성될 수 있다.
도 2를 참조하면, 메모리 장치(121)는 인-메모리 에러 정정 코드 생성 회로(210), 인-메모리 에러 정정 회로(220) 및 메모리 코어(230)를 포함할 수 있다.
인-메모리 에러 정정 코드 생성 회로(210)는 메모리 장치(121)가 수신한 데이터(DATA)를 이용해 에러 정정을 위한 인-메모리 에러 정정 코드(ECC_IN_MEMORY)를 생성할 수 있다. 예를 들어, 인-메모리 에러 정정 코드 생성 회로(210)는 16비트의 데이터(DATA)를 이용해 데이터(DATA)의 에러 정정을 위한 5비트의 인-메모리 에러 정정 코드(ECC_IN_MEMORY)를 생성할 수 있다. 여기서 인-메모리 에러 정정 코드(ECC_IN_MEMORY)는 해밍(Hamming) 코드일 수 있다. 라이트 동작시에는 에러 정정 동작이 수행되지 않으므로, 메모리 장치(121)가 수신한 데이터(DATA)와 메모리 코어(230)로 전달되는 데이터(DATA')가 동일할 수 있다.
메모리 코어(230)는 메모리 장치(121)에서 데이터(DATA')와 인-메모리 에러 정정 코드(ECC_IN_MEMORY)를 저장하기 위한 것일 수 있다. 메모리 코어(230)는 다수의 셀 어레이들 및 다수의 셀 어레이들에 데이터(DATA')와 인-메모리 에러 정정 코드(ECC_IN_MEMORY)를 라이트하고 다수의 셀 어레이들로부터 데이터(DATA')와 인-메모리 에러 정정 코드(ECC_IN_MEMORY)를 리드하기 위한 회로들을 포함할 수 있다. 라이트 동작시에 메모리 장치(121)가 수신한 데이터(DATA')와 인-메모리 에러 정정 코드 생성 회로(210)에서 생성된 인-메모리 에러 정정 코드(ECC_IN_MEMORY)가 메모리 코어(230)에 라이트될 수 있다. 또한, 리드 동작시에 메모리 코어(230)로부터 데이터(DATA')와 인-메모리 에러 정정 코드(ECC_IN_MEMORY)가 리드될 수 있다.
인-메모리 에러 정정 회로(220)는 메모리 코어(230)로부터 리드된 인-메모리 에러 정정 코드(ECC_IN_MEMORY)를 이용해 메모리 코어(230)로부터 리드된 데이터(DATA')의 에러를 정정할 수 있다. 인-메모리 에러 정정 회로(220)에 의해 에러가 정정된 데이터(DATA)는 메모리 장치(121)로부터 메모리 콘트롤러(110)로 전송될 수 있다. 인-메모리 에러 정정 회로(220)는 일반적으로 메모리 장치에서 발생한 1비트의 에러를 정정 가능할 수 있다.
인-메모리 에러 정정을 위한 회로들(210, 220)은 메모리 장치(121)의 자체적인 에러 정정 동작을 수행하기 위한 것으로, 메모리 콘트롤러(110)에게는 히든(hidden)으로 에러 정정 동작이 수행될 수 있다. 즉, 메모리 콘트롤러(110)는 메모리 장치(121)에 추가적인 인-메모리 에러 정정 코드(ECC_IN_MEMORY)가 저장되는지도 알지 못하고, 메모리 장치(121) 내부적으로 인-메모리 에러 정정 동작이 수행되는지도 알지 못할 수 있다.
인-메모리 에러 정정 회로(220)의 에러 정정 동작은 히든으로 짧은 시간 내에 수행되어야 하므로, 에러 정정의 능력이 작을 수밖에 없다. 예를 들어, 인-메모리 에러 정정 회로(220)는 1비트까지의 에러만 정정할 수 있다. 또한, 인-메모리 에러 정정 회로(220)의 에러 정정 능력을 초과하는 에러가 발생한 경우에는 오동작에 의해 에러가 오히려 증가될 수 있다. 예를 들어, 2비트의 에러가 발생한 경우 인-메모리 에러 정정 회로(220)는 에러를 정정하기 못하고 에러를 3비트로 늘릴 수도 있다.
인-메모리 에러 정정 회로(220)의 에러 정정 능력을 벗어나 오동작에 의해 에러가 크게 증가하더라도 메모리 시스템(100)의 동작에는 문제가 없을 수 있다. 메모리 장치(121)는 18개의 심볼로 구성된 전체 코드워드 중 하나의 심볼을 저장할 뿐이므로, 인-메모리 에러 정정 회로(220)에 의해 에러가 증가하더라도 증가 된 에러는 전체 코드워드에서 하나의 심볼 내에만 존재하고, 메모리 콘트롤러(110)의 에러 정정 회로(112)에 의해 에러가 정정될 수 있기 때문이다.
도 3은 본 발명의 다른 실시예에 따른 메모리 시스템(300)의 구성도이다. 도 3에서는 메모리 시스템(300)에서 데이터의 저장 및 데이터의 에러 정정과 직접적으로 관련된 부분만을 도시했다.
도 3을 참조하면, 메모리 시스템(300)은 메모리 콘트롤러(310)와 메모리 장치(320)를 포함할 수 있다.
메모리 콘트롤러(310)는 호스트(host)의 요청에 따라 메모리 장치(320)의 리드 및 라이트 등의 동작을 제어할 수 있다. 메모리 콘트롤러(310)는 라이트 동작시에 에러 정정 코드(ECC)를 생성하기 위한 에러 정정 코드 생성 회로(311)와 리드 동작시에 에러 정정 코드(ECC)를 이용해 데이터(DATA)의 에러를 정정하기 위한 에러 정정 회로(312)를 포함할 수 있다.
에러 정정 코드 생성 회로(311)는 라이트 동작시에 호스트로부터 전달된 데이터(HOST_DATA)를 이용해 에러를 정정하기 위한 에러 정정 코드(ECC)를 생성할 수 있다. 여기서는 한 번의 라이트 동작시에 처리되는 데이터의 단위, 즉 데이터 워드(data word)의 단위, 가 256비트인 것을 예시했는데, 이 경우에 에러 정정 코드 생성 회로(311)는 256비트의 데이터(HOST_DATA)를 이용해 32비트의 에러 정정 코드(ECC)를 생성할 수 있다. 에러 정정 코드 중 16비트는 256비트의 데이터에 대한 CRC(Cyclic Redundancy Check) 코드이고 나머지 16비트는 256비트의 데이터와 16비트의 CRC 코드에 대한 심플(simple) 패리티 (PARITY) 코드일 수 있다. 라이트 동작시에는 에러 정정 코드(ECC)만 생성될 뿐 에러의 정정 동작이 수행되지는 않으므로 호스트로부터 전달된 데이터(HOST_DATA)와 메모리 콘트롤러(310)로부터 메모리 장치(320)로 전달되는 데이터(DATA)는 동일할 수 있다. 코드워드(codeword)는 데이터(DATA)와 에러 정정 코드(ECC)의 합을 말하는데, 288비트의 코드워드는 18개의 심볼(symbol)로 나누어질 수 있다. 1개의 심볼을 16비트라 가정할 때, 256비트의 데이터(DATA)는 16개의 심볼로 나누어질 수 있으며, 32비트의 에러 정정 코드(ECC)는 1심볼의 CRC 코드와 1심볼의 심플 패리티(PARITY) 코드로 나누어질 수 있다. 여기서 CRC 코드는 상세하게 CRC-16 코드일 수 있으며, 심플 패리티(PARITY) 코드는 전체 코드워드에서 심플 패리티(PARITY)를 제외한 나머지 심볼들을 심볼 단위로 XOR연산해 생성될 수 있다.
에러 정정 회로(312)는 리드 동작시에 메모리 장치(320)로부터 전달된 에러 정정 코드(ECC)를 이용해 메모리 장치(320)로부터 전달된 데이터(DATA)의 에러를 정정할 수 있다. 에러 정정 회로(312)는 CRC 코드를 이용해 에러를 감지하고 심플 패리티(PARITY) 코드를 이용해 심볼을 복원하는 방식으로 데이터의 에러를 정정할 수 있다. 예를 들어, CRC 코드를 이용한 CRC 연산으로 에러 유무 감지 -> 첫번째 심볼에 에러가 있다고 가정하고, 첫번째 심볼을 패리티 코드를 이용한 패리티 연산으로 복원 -> 첫번째 심볼이 복원된 상태에서 CRC 연산으로 에러 유무 감지 -> 두번째 심볼에 에러가 있다고 가정하고 두번째 심볼을 패리티 코드를 이용한 패리티 연산으로 복원 -> 두번째 심볼이 복원된 상태에서 CRC 연산으로 에러 유무 감지 -> 세번째 심볼에 에러가 있다고 가정하고 세번째 심볼을 패리티 코드를 이용한 패리티 연산으로 복원 -> 세번째 심볼이 복원된 상태에서 CRC 연산으로 에러 유무 감지........ 와 같은 동작을 에러가 검출되지 않을 때까지 반복할 수 있다. 이와 같은 방식으로 에러 정정 회로(312)는 1개 심볼의 에러를 정정할 수 있다.
메모리 장치(320)는 데이터(DATA)와 에러 정정 코드(ECC)를 포함하는 288비트의 코드워드, 즉 18개 심볼의 코드워드, 전체를 저장할 수 있다. 한 번의 라이트 동작시에 코드워드를 구성하는 18개의 심볼 전체는 메모리 장치(320)에 저장되고, 한번의 리드 동작시에 메모리 장치(320)로부터 18개의 심볼이 리드될 수 있다. 메모리 장치(320)는 HBM(High Bandwidth Memory)일 수 있다. HBM은 기존의 메모리보다 높은 대역폭(bandwidth)과 용량(density)를 가지는 메모리로, 3D-TSV 기술을 바탕으로 메모리 칩들을 적층하고, I/O 대역폭을 높이기 위해 많은 수의 데이터 핀을 두어 동작시키는 것을 특징으로 하는 메모리이다. HBM의 경우 라이트 동작시에 하나의 라이트 커맨드에 대응하는 코드워드 전체가 하나의 메모리 장치에 라이트되고, 리드 동작시에도 하나의 리드 커맨드에 대응하는 코드워드 전체가 하나의 메모리 장치로부터 리드될 수 있다. 도 3의 메모리 시스템에서 메모리 장치(320)의 특징은 코드워드 전체가 하나의 메모리 장치(320)에 라이트되고 코드워드 전체가 하나의 메모리 장치(320)로부터 리드된다는 것으로, 이러한 조건을 만족하는 한 HBM 이외에 다른 종류의 메모리가 메모리 시스템(300)의 메모리 장치(320)로 사용될 수 있다.
도 4는 도 3의 메모리 장치(320)의 일실시예 구성도이다. 도 4에서는 메모리 장치(320)에서 데이터의 저장 및 에러 정정과 직접적인 관련이 있는 부분만을 도시했다.
도 4를 참조하면, 메모리 장치(320)는 인-메모리 에러 정정 코드 생성 회로(410), 인-메모리 에러 정정 회로(420) 및 메모리 코어(430)를 포함할 수 있다.
인-메모리 에러 정정 코드 생성 회로(410)는 메모리 장치(320)가 수신한 데이터(DATA)와 에러 정정 코드(ECC)를 이용해 데이터(DATA)와 에러 정정 코드(ECC)의 에러를 정정하기 위한 인-메모리 에러 정정 코드(ECC_IN_MEMORY)를 생성할 수 있다. 예를 들어, 인-메모리 에러 정정 코드 생성 회로(410)는 256비트의 데이터와 32비트의 에러 정정 코드, 즉, 전체 288비트의 메세지(message), 를 이용해 9비트의 인-메모리 에러 정정 코드(ECC_IN_MEMORY)를 생성할 수 있다. 여기서 인-메모리 에러 정정 코드(ECC_IN_MEMORY)는 해밍 코드일 수 있다. 라이트 동작시에는 에러 정정 동작이 수행되지 않으므로, 메모리 장치(320)가 수신한 데이터(DATA)와 에러 정정 코드(ECC)는 메모리 코어(430)로 전달되는 데이터(DATA')와 에러 정정 코드(ECC')와 동일할 수 있다.
메모리 코어(430)는 메모리 장치(320)에서 데이터(DATA'), 에러 정정 코드(ECC') 및 인-메모리 에러 정정 코드(ECC_IN_MEMORY)를 저장하기 위한 것일 수 있다. 메모리 코어(430)는 다수의 셀 어레이들 및 다수의 셀 어레이들에 데이터(DATA'), 에러 정정 코드(ECC') 및 인-메모리 에러 정정 코드(ECC_IN_MEMORY)를 라이트하고 다수의 셀 어레이들로부터 데이터(DATA'), 에러 정정 코드(ECC') 및 인-메모리 에러 정정 코드(ECC_IN_MEMORY)를 리드하기 위한 회로들을 포함할 수 있다.
인-메모리 에러 정정 회로(420)는 메모리 코어(430)로부터 리드된 인-메모리 에러 정정 코드(ECC_IN_MEMORY)를 이용해 메모리 코어(430)로부터 리드된 데이터(DATA')와 에러 정정 코드(ECC')의 에러를 정정할 수 있다. 인-메모리 에러 정정 회로(420)에 의해 에러가 정정된 데이터(DATA)와 에러 정정 코드(ECC)는 메모리 장치(320)로부터 메모리 콘트롤러(310)로 전송될 수 있다. 인-메모리 에러 정정 회로(420)는 메모리 장치(320)에서 발생한 1비트의 에러를 정정 가능할 수 있다.
인-메모리 에러 정정을 위한 회로들(410, 420)은 메모리 장치(320)의 자체적인 에러 정정 동작을 수행하기 위한 것으로, 메모리 콘트롤러(310)에게는 히든(hidden)으로 에러 정정 동작이 수행될 수 있다. 즉, 메모리 콘트롤러(310)는 메모리 장치(320)에 추가적인 인-메모리 에러 정정 코드(ECC_IN_MEMORY)가 저장되는지도 알지 못하고, 메모리 장치(320) 내부적으로 인-메모리 에러 정정 동작이 수행되는지도 알지 못할 수 있다.
인-메모리 에러 정정 회로(420)의 에러 정정 동작은 히든으로 짧은 시간 내에 수행되어야 하므로, 에러 정정의 능력이 작을 수밖에 없다. 예를 들어, 인-메모리 에러 정정 회로(420)는 1비트까지의 에러만 정정할 수 있다. 또한, 인-메모리 에러 정정 회로(420)의 에러 정정 능력을 초과하는 에러가 발생한 경우에는 오동작에 의해 에러가 오히려 증가될 수 있다. 예를 들어, 2비트의 에러가 발생한 경우 인-메모리 에러 정정 회로(420)는 에러를 정정하지 못하고 에러를 3비트로 늘릴 수도 있다.
도 1 및 도 2의 메모리 시스템(200)에서와 다르게, 도 3과 도 4의 메모리 시스템(300)에서는 인-메모리 에러 정정 회로(420)의 오동작이 문제를 일으킬 수 있는데, 도 5A 내지 도 5B를 참조해 이에 대해 알아보기로 한다.
도 5A는 메모리 시스템(300)의 메모리 장치(320)의 메모리 코어(430)로부터 리드된 288비트의 데이터(DATA')와 에러 정정 코드(ECC')를 나타낸다. 실선으로 구획된 부분들은 18개의 심볼들을 나타내고, 심볼들 내의 점선으로 구획된 부분들은 각각의 심볼 내의 16비트의 데이터를 나타낼 수 있다. 도면의 X로 표기된 4비트는 에러 비트를 나타낼 수 있다. 도 5A를 참조하면, 4비트의 에러가 하나의 심볼 내에 포함된 것을 확인할 수 있다.
도 5B는 도 5A의 데이터(DATA')와 에러 정정 코드(ECC')를 인-메모리 에러 정정 회로(420)가 인-메모리 에러 정정 코드(ECC_IN_MEMORY)를 이용해 에러 정정 동작을 수행한 이후의 데이터(DATA)와 에러 정정 코드(ECC)를 나타낸다. 에러의 개수가 인-메모리 에러 정정 회로(420)의 에러 정정 가능한 비트수를 추가하므로, 인-메모리 에러 정정 회로(420)의 에러 정정 동작에 의해 오히려 1비트의 에러가 증가한 것을 확인할 수 있다. 도 5A에서는 4비트의 에러가 하나의 심볼 내에 포함되어 있었는데, 인-메모리 에러 정정 회로(420)의 오동작에 의해 도 5B에서는 도 5A와 동일한 심볼 내에 4비트 에러 및 또 다른 심볼 내에 1비트의 에러가 포함된 것을 확인할 수 있다.
인-메모리 에러 정정 회로(420)의 도 5A에서 도 5B로의 에러 정정 동작은 메모리 시스템(300)의 동작에 에러를 발생시킬 수 있다. 도 5A에서는 에러가 하나의 심볼 내에 포함되어 있었으므로, 메모리 콘트롤러(310)의 에러 정정 회로(312)의 에러 정정 동작에 의해 에러가 정정될 수 있었지만, 도 5B에서는 에러가 2개의 심볼 내에 포함되어 있으므로, 에러 정정 회로(312)의 에러 정정 동작에 의해서도 에러가 정정될 수 없다. 즉, 인-메모리 에러 정정 회로(420)의 에러 정정 동작이 없었다면 정정 가능했던 에러가 인-메모리 에러 정정 회로(420)의 에러 정정 동작에 의해 에러 정정 회로(312)에 의해서도 정정 불가능해지는 문제가 발생할 수 있다.
도 6은 도 3의 메모리 장치(320)의 다른 실시예 구성도이다. 도 6에서는 메모리 장치(320)에서 데이터의 저장 및 에러 정정과 직접적으로 관련된 부분만을 도시했다.
도 6을 참조하면, 메모리 장치(320)는 인-메모리 에러 정정 회로(620) 및 메모리 코어(630)를 포함할 수 있다.
도 6의 메모리 장치(320)는 도 3과 다르게 인-메모리 에러 정정 코드 생성 회로(410)를 포함하지 않는다. 따라서 인-메모리 에러 정정 코드(ECC_IN_MEMORY)는 존재하지 않으며, 메모리 코어(630)에도 인-메모리 에러 정정 코드(ECC_IN_MEMORY)는 저장되지 않고, 데이터(DATA')와 에러 정정 코드(ECC')가 저장될 수 있다. 라이트 동작시에는 에러 정정 동작이 수행되지 않으므로, 데이터(DATA)와 데이터(DATA')는 동일하고, 에러 정정 코드(ECC)와 에러 정정 코드(ECC')는 동일할 수 있다.
메모리 코어(630)는 메모리 장치(320)에서 데이터(DATA')와 에러 정정 코드(ECC')를 저장하기 위한 것일 수 있다. 메모리 코어(630)는 다수의 셀 어레이들 및 다수의 셀 어레이들에 데이터(DATA')와 에러 정정 코드(ECC')를 라이트하고 다수의 셀 어레이들로부터 데이터(DATA')와 에러 정정 코드(ECC')를 리드하기 위한 회로들을 포함할 수 있다.
인-메모리 에러 정정 회로(620)는 메모리 코어(630)로부터 리드된 에러 정정 코드(ECC')를 이용해 데이터(DATA')의 에러를 정정할 수 있다. 인-메모리 에러 정정 회로(620)는 메모리 콘트롤러(310)의 에러 정정 회로(312)와 동일한 에러 정정 코드(ECC')를 사용하므로, 메모리 콘트롤러(310)의 에러 정정 회로(312)와 동일한 에러 정정 능력을 가지도록 설계될 수도 있겠지만, 이 경우 에러 정정 시간이 지나치게 늘어나 메모리 장치(320)의 에러 정정 동작이 히든(hidden)으로 수행되기 어렵다. 따라서, 인-메모리 에러 정정 회로(620)는 메모리 콘트롤러(310)의 에러 정정 회로(312)보다 낮은 에러 정정 능력을 가지도록 설계될 수 있다. 즉, 에러 정정 회로(312)가 최대 M비트의 에러 정정 능력을 가진다면, 인-메모리 에러 정정 회로(620)는 최대 N비트의 에러 정정 능력을 가지도록 설계될 수 있다. 여기서 N과 M은 모두 1 이상의 정수이며 M > N일 수 있다. 또한, 인-메모리 에러 정정 회로(620)는 특정 조건에 부합하는 경우에만 에러 정정 동작을 수행할 수 있다. 예를 들어, 감지된 에러가 1비트 이상 N비트 이하이어서, 자신에 정정 가능한 경우에만 에러 정정 동작을 수행할 수 있다. 이하에서는 설명의 편의를 위해 N은 1, M은 16이라 가정하기로 한다.
인-메모리 에러 정정 회로(620)는 에러 정정 코드(ECC')에서 16비트의 CRC 코드를 이용해 CRC 연산을 수행해 에러의 유무를 확인할 수 있다. 그리고 에러 정정 코드(ECC')에서 16비트의 심플 패리티 코드를 이용해 패리티 연산을 수행한 후, 연산 결과 16비트 중 1의 개수가 1개인 경우에 에러가 1비트만 존재한다고 확인할 수 있다. 즉, (1)CRC 연산을 통해 에러가 있다고 확인. (2)패리티 연산 결과 1의 개수가 1개라는 것을 확인.할 수 있다. (1)과 (2)가 모두 만족된 경우에, 인-메모리 에러 정정 회로(620)는 CRC 코드를 이용해 1비트의 에러를 정정할 수 있다. 앞서 CRC 코드가 CRC-16 코드라고 예시했는데, CRC-16 코드는 SECDED(Single Error Correction and Dual Error Detection) 코드이기도 하므로, CRC 코드를 이용해 1비트의 에러를 수정할 수 있다. 이와 같이 정정 동작을 수행한 후 다시 패리티 연산을 수행한 결과 1의 개수가 0개인 경우 1비트 정정 동작이 정상적으로 이루어 졌음을 확인할 수 있다. 만약 CRC-16 코드로 1비트 정정 동작을 수행한 후 다시 심플 패리티 연산을 수행한 결과 1의 개수가 0개가 아닌 경우에 이것은 1비트 에러라는 가정이 잘 못된 것이므로 정정 동작을 취소하고 256비트의 데이터(DATA)와 32비트의 에러 정정 코드(ECC)를 출력할 수 있다.
인-메모리 에러 정정 회로(620)에 의해 에러가 정정된 또는 에러가 정정되지 않은 데이터(DATA)와 에러 정정 코드(ECC)는 메모리 장치(320)로부터 메모리 콘트롤러(310)로 전달될 수 있다.
도 3 및 도 6와 같이 구성된 메모리 시스템(300)에서는 인-메모리 에러 정정 회로(620)가 에러 정정 회로(312)와 동일한 에러 정정 코드(ECC)를 사용하며, 인-메모리 에러 정정 회로(620)가 정정 가능한 에러만을 정정한다. 따라서, 인-메모리 에러 정정 회로(620)의 오동작에 의해 에러 정정 회로(312)의 에러 정정 능력을 저해하는 문제가 발생하지 않는다. 또한, 메모리 시스템(300)에서 발생하는 대부분의 에러는 1비트의 에러와 같이 작은 에러이기 때문에, 인-메모리 에러 정정 회로(620)에 의해 대부분의 에러의 정정이 가능하며, 에러 정정 회로(312)는 드물게 발생하는 큰 에러만을 정정하면 된다.
도 7은 도 3 및 도 6과 같이 구성된 메모리 시스템(300)의 라이트 동작을 도시한 도면이다.
도 7을 참조하면, 메모리 콘트롤러(310)의 에러 정정 코드 생성 회로(311)는 호스트로부터 전달된 데이터(HOST_DATA)를 이용해 에러 정정 코드(ECC)를 생성할 수 있다(S710). 여기서 데이터는 256비트일 수 있으며, 에러 정정 코드(ECC)는 32비트일 수 있다. 에러 정정 코드(ECC) 32비트 중 16비트는 CRC 코드이고 나머지 16비트는 심플 패리티 코드일 수 있다.
메모리 콘트롤러(310)는 메모리 장치(320)로 데이터(DATA)와 에러 정정 코드(ECC)를 전달할 수 있다(S720). 그리고 메모리 장치는 데이터(DATA')와 에러 정정 코드(DATA')를 메모리 코어(630)로 라이트할 수 있다(S730).
즉, 라이트 동작시에 메모리 콘트롤러(310)에서 에러 정정 코드(ECC)가 생성되고, 메모리 장치(320)는 전달받은 데이터(DATA)와 에러 정정 코드(ECC)를 저장할 수 있다.
도 8은 도 3 및 도 6과 같이 구성된 메모리 시스템(300)의 리드 동작을 도시한 도면이다.
도 8을 참조하면, 메모리 장치(320)의 메모리 코어(630)로부터 데이터(DATA')와 에러 정정 코드(ECC')가 리드될 수 있다(S810).
메모리 장치(320)의 인-메모리 에러 정정 회로(620)는 에러 정정 코드(ECC')를 이용해 에러 정정의 조건이 충족되는지를 확인할 수 있다(S820). 즉, 인-메모리 에러 정정 회로(620)는 에러가 1비트인지 아닌지를 확인할 수 있다. 인-메모리 에러 정정 회로(620)는 (1)CRC 연산을 통해 에러가 있는지 여부를 확인. (2)패리티 연산 결과 1의 개수가 1개라는 것을 확인. 의 (1)과(2)의 조건이 모두 충족되는 경우에 에러가 1비트라고 확인할 수 있다.
에러 정정의 조건이 충족되는 경우에(S820에서 Y), 인-메모리 에러 정정 회로는 에러 정정 코드(ECC')를 이용해 데이터(DATA')의 에러를 정정할 수 있다(S830). 에러 정정의 조건이 충족되지 않는 경우에(S820에서 N), 에러 정정 동작(S830)은 스킵될 수 있다.
이후에 메모리 장치(320)로부터 메모리 콘트롤러(310)로 데이터(DATA)와 에러 정정 코드(ECC)가 전달될 수 있다(S840).
그리고 메모리 콘트롤러(310)의 에러 정정 회로(S850)가 에러 정정 코드(ECC)를 이용해 데이터(DATA)의 에러를 정정할 수 있다(S850). 대부분의 경우에 데이터(DATA)에 에러가 존재하지 않거나 데이터(DATA)에 존재하는 작은 에러는 단계(S830)에서 정정되었을 것이므로, 단계(S850)에서는 데이터(DATA)의 큰 에러가 정정될 수 있다.
도 9는 본 발명의 또 다른 실시예에 따른 메모리 시스템(900)의 구성도이다.
도 9를 참조하면, 메모리 시스템(900)은 메모리 콘트롤러(910)와 메모리 장치(920)를 포함할 수 있다.
메모리 콘트롤러(910)는 호스트(host)의 요청에 따라 메모리 장치(920)의 리드 및 라이트 등의 동작을 제어할 수 있다. 메모리 콘트롤러(910)는 에러 정정 코드 생성 회로(311), 에러 정정 회로(312), 호스트 인터페이스(911), 스케쥴러(912), 커맨드 생성기(913) 및 메모리 인터페이스(914)를 포함할 수 있다.
에러 정정 코드 생성 회로(311)와 에러 정정 회로(312)는 도 3의 실시예에서 설명한 것과 동일한 방식으로 설계되고 동작할 수 있다.
호스트 인터페이스(911)는 메모리 콘트롤러(910)와 호스트 간의 인터페이스를 위한 것일 수 있다. 호스트 인터페이스(911)를 통해 호스트의 요청들이 수신될 수 있으며, 요청의 처리 결과들이 호스트로 전송될 수 있다. 호스트 인터페이스(911)를 통해서 메모리 콘트롤러(910)와 호스트 간에 여러 정보들이 송수신될 수 있으나, 도 9에서는 호스트와 메모리 콘트롤러(910) 간에 송수신되는 여러 정보들 중 본 발명과 직접적인 관련이 있는 데이터(HOST_DATA)만을 도시했다.
스케쥴러(912)는 호스트로부터의 요청들 중 메모리 장치(920)에 지시할 요청의 순서를 정할 수 있다. 스케쥴러(912)는 메모리 장치(920)의 퍼포먼스 향상을 위해 호스트(HOST)로부터 요청들이 수신된 순서와 메모리 장치(920)로 지시할 동작의 순서를 다르게 할 수 있다. 예를 들어, 호스트가 메모리 장치(920)의 리드 동작을 먼저 요청하고 라이트 동작을 이후에 요청했다고 하더라도, 라이트 동작이 리드 동작보다 먼저 수행되도록 순서를 조정할 수 있다. 한편, 스케쥴러(912)는 메모리 장치(920)에게 라이트 동작을 지시한 이후에, 메모리 장치(920)로부터 라이트 데이터에 에러가 있다는 것을 통보받은 경우에는 해당 라이트 동작이 다시 수행되도록 스케쥴링할 수 있다.
커맨드 생성기(913)는 스케쥴러(912)에 의해 정해진 동작의 순서에 맞게 메모리 장치(920)로 인가할 커맨드를 생성할 수 있다.
메모리 인터페이스(914)는 메모리 콘트롤러(910)와 메모리 장치(920) 간의 인터페이스를 위한 것일 수 있다. 메모리 인터페이스(914)를 통해 메모리 콘트롤러(910)로부터 메모리 장치(920)로 커맨드와 어드레스가 전달되고 데이터가 송/수신될 수 있다. 메모리 인터페이스(914)를 PHY 인터페이스라고도 한다. 도 9에서는 메모리 콘트롤러(910)와 메모리 장치(920) 간에 송수신되는 여러 정보들 중 본 발명과 직접적인 관련이 있는 데이터(DATA), 에러 정정 코드(ECC(CRC, PARITY)) 및 경고 신호(ALERT)만을 도시했다.
메모리 장치(920)는 데이터(DATA)와 에러 정정 코드(ECC)를 포함하는 288비트의 코드워드, 즉 18개 심볼의 코드워드, 전체를 저장할 수 있다. 한 번의 라이트 동작시에 코드워드를 구성하는 18개의 심볼 전체는 메모리 장치(920)에 저장되고, 한번의 리드 동작시에 메모리 장치(920)로부터 18개의 심볼이 리드될 수 있다. 메모리 장치(920)는 HBM(High Bandwidth Memory)일 수 있다. HBM은 기존의 메모리보다 높은 대역폭(bandwidth)과 용량(density)를 가지는 메모리로, 3D-TSV 기술을 바탕으로 메모리 칩들을 적층하고, I/O 대역폭을 높이기 위해 많은 수의 데이터 핀을 두어 동작시키는 것을 특징으로 하는 메모리이다. HBM의 경우 라이트 동작시에 하나의 라이트 커맨드에 대응하는 코드워드 전체가 하나의 메모리 장치에 라이트되고, 리드 동작시에도 하나의 리드 커맨드에 대응하는 코드워드 전체가 하나의 메모리 장치로부터 리드될 수 있다. 도 9의 메모리 시스템(900)에서 메모리 장치(920)의 특징은 코드워드 전체가 하나의 메모리 장치(920)에 라이트되고 코드워드 전체가 하나의 메모리 장치(920)로부터 리드된다는 것으로, 이러한 조건을 만족하는 한 HBM 이외에 다른 종류의 메모리가 메모리 시스템(900)의 메모리 장치(920)로 사용될 수 있다.
도 10은 도 9의 메모리 장치(920)의 일실시예 구성도이다. 도 10에서는 메모리 장치(920)에서 데이터의 저장 및 에러 정정과 직접적으로 관련된 부분만을 도시했다.
도 10을 참조하면, 메모리 장치(920)는 인-메모리 에러 정정 회로(620), 라이트 에러 체크 회로(1010) 및 메모리 코어(1030)를 포함할 수 있다.
라이트 에러 체크 회로(1010)는 라이트 동작시에 메모리 콘트롤러(910)로부터 수신된 에러 정정 코드(ECC)를 이용해 메모리 콘트롤러(910)로부터 수신된 데이터(DATA)의 에러를 검출할 수 있다. 에러 정정 코드(ECC)에는 CRC 코드가 포함되어 있는데, 이 코드를 이용해 에러의 유무를 판단할 수 있다. 에러 검출 결과 데이터(DATA)에 에러가 존재하는 경우에 라이트 에러 체크 회로(1010)는 경고 신호(ALERT)를 활성화할 수 있다. 경고 신호(ALERT)가 활성화되면 메모리 코어(1030)에서는 라이트 동작이 수행되지 않을 수 있다. 한편, 경고 신호(ALERT)는 메모리 콘트롤러(920)로 전달될 수 있다. 라이트 에러 체크 회로(1010)의 에러 검출 결과 데이터(DATA)에 에러가 없는 경우에는 데이터(DATA)와 에러 정정 코드(ECC)가 메모리 코어(1030)에 라이트될 수 있다. 라이트 동작시에는 에러 정정 동작이 수행되지 않으므로, 데이터(DATA)와 데이터(DATA')는 동일하고, 에러 정정 코드(ECC)와 에러 정정 코드(ECC')는 동일할 수 있다.
메모리 코어(1030)는 메모리 장치(920)에서 데이터(DATA')와 에러 정정 코드(ECC')를 저장하기 위한 것일 수 있다. 메모리 코어(1030)는 다수의 셀 어레이들 및 다수의 셀 어레이들에 데이터(DATA')와 에러 정정 코드(ECC')를 라이트하고 다수의 셀 어레이들로부터 데이터(DATA')와 에러 정정 코드(ECC')를 리드하기 위한 회로들을 포함할 수 있다. 한편, 라이트 동작시에 경고 신호(ALERT)가 활성화되는 경우에는 데이터(DATA')와 에러 정정 코드(ECC')가 메모리 코어(1030)에 라이트되지 않을 수 있다.
인-메모리 에러 정정 회로(660)는 도 6에서와 동일하게 설계되고 동작할 수 있다. 즉, 인-메모리 에러 정정 회로(660)는 에러 정정 코드(ECC)를 이용해 검출된 에러가 1비트 이상 N비트 이하인 경우에만 에러 정정 코드(ECC)를 이용해 에러를 정정할 수 있다.
도 10의 메모리 장치(920)에서는 라이트 에러 체크 회로(1010)에 의해 에러가 존재한다고 확인된 경우에는, 라이트 동작을 수행하지 않아 이후에 발생하는 에러를 방지할 수 있다.
도 11은 도 9의 메모리 시스템(900)의 라이트 동작을 도시한 도면이다.
도 11을 참조하면, 메모리 콘트롤러(910)의 에러 정정 코드 생성 회로(311)는 호스트 인터페이스(9100)를 통해 호스트로부터 전달된 데이터(HOST_DATA)를 이용해 에러 정정 코드(ECC)를 생성할 수 있다(S1110). 여기서 데이터는 256비트일 수 있으며, 에러 정정 코드(ECC)는 32비트일 수 있다. 에러 정정 코드(ECC) 32비트 중 16비트는 CRC 코드이고 나머지 16비트는 심플 패리티 코드일 수 있다.
메모리 콘트롤러(910)는 메모리 장치(920)로 데이터(DATA)와 에러 정정 코드(ECC)를 전달할 수 있다(S1120). 데이터(DATA)와 에러 정정 코드(ECC)는 메모리 인터페이스(914)를 통해 메모리 장치로 전달될 수 있다.
메모리 장치(920)의 라이트 에러 체크 회로(1010)는 에러 정정 코드(ECC)를 이용해 데이터(DATA)의 에러를 검출할 수 있다(S1130).
에러가 검출된 경우에(S1130에서 Y), 메모리 장치(920)에서는 라이트 동작이 수행되지 않고, 에러가 검출되었음이 메모리 장치(920)로부터 메모리 콘트롤러(910)로 전달될 수 있다(S1140). 에러가 검출되었음을 메모리 콘트롤러(910)로 전달한 이후에 해당 라이트 동작은 종료될 수 있다. 에러가 검출되었음을 통보받은 메모리 콘트롤러(910)의 스케쥴러(912)는 수행되지 못한 라이트 동작을 다시 스케쥴링하고, 메모리 콘트롤러(910)는 메모리 장치(92)로 동일한 라이트 동작을 새롭게 지시할 수 있다. 이 경우에 도 11의 동작들이 다시 수행될 수 있다.
에러가 검출되지 않은 경우에(S1130에서 N), 데이터(DATA')와 에러 정정 코드(DATA')가 메모리 코어(1030)에 라이트될 수 있다(S1150).
메모리 시스템(900)의 리드 동작은 도 8과 동일하게 수행될 수 있으므로, 이에 대한 상세한 설명은 생략하기로 한다.
본 발명의 기술사상은 상기 바람직한 실시예에 따라 구체적으로 기술되었으나, 상기한 실시예는 그 설명을 위한 것이며 그 제한을 위한 것이 아님을 주의하여야 한다. 또한, 본 발명의 기술분야의 전문가라면 본 발명의 기술사상의 범위 내에서 다양한 실시예가 가능함을 알 수 있을 것이다.
900: 메모리 시스템 910: 메모리 콘트롤러
920: 메모리 장치

Claims (20)

  1. 라이트 동작시에 수신된 에러 정정 코드를 수신된 데이터의 에러를 검출하는 라이트 에러 체크 회로; 및
    상기 라이트 에러 체크 회로에 의해 에러가 검출되지 않은 경우에, 상기 수신된 데이터와 상기 수신된 에러 정정 코드를 저장하는 메모리 코어
    를 포함하는 메모리 장치.
  2. 제 1항에 있어서,
    리드 동작시에 상기 메모리 코어로부터 리드된 에러 정정 코드를 이용해 상기 메모리 코어로부터 리드된 데이터의 에러를 체크하고, 에러가 1비트 이상 N비트(N은 1이상의 정수) 이하인 경우에 상기 에러 정정 코드를 이용해 상기 리드된 데이터의 에러를 정정하는 인-메모리 에러 정정 회로
    를 더 포함하는 메모리 장치.
  3. 제 1항에 있어서,
    상기 라이트 에러 체크 회로에 의해 에러가 검출된 경우에, 상기 데이터 송수신 회로를 통해 수신된 에러 정정 코드와 데이터는 상기 메모리 코어에 저장되지 않고,
    상기 메모리 장치는 상기 에러의 검출을 메모리 콘트롤러에게 알리는
    메모리 장치.
  4. 제 2항에 있어서,
    상기 에러 정정 코드로 정정 가능한 에러의 최대 비트수는 M비트(M은 N보다 큰 정수)인
    메모리 장치.
  5. 제 2항에 있어서,
    상기 에러 정정 코드는 CRC(Cyclic Redundancy Check) 코드와 심플 패리티(Simple Parity) 코드를 포함하는
    메모리 장치.
  6. 제 2항에 있어서,
    상기 메모리 장치는 HBM(High Bandwidth Memory)인
    메모리 장치.
  7. 메모리 장치와 메모리 콘트롤러를 포함하는 메모리 시스템에 있어서,
    상기 메모리 장치는
    라이트 동작시에 상기 메모리 콘트롤러로부터 수신된 에러 정정 코드를 이용해 상기 메모리 콘트롤러로부터 수신된 데이터의 에러를 검출하는 라이트 에러 체크 회로; 및
    상기 라이트 에러 체크 회로에 의해 에러가 검출되지 않은 경우에, 상기 수신된 데이터와 상기 수신된 에러 정정 코드를 저장하는 메모리 코어를 포함하고,
    상기 메모리 콘트롤러는
    상기 메모리 장치로 전달될 데이터를 이용해 상기 메모리 장치로 전달될 에러 정정 코드를 생성하는 에러 정정 코드 생성 회로; 및
    상기 메모리 장치로부터 전달된 에러 정정 코드를 이용해 상기 메모리 장치로부터 전달된 데이터에 에러가 존재하는 경우에 이를 정정하는 에러 정정 회로를 포함하는
    메모리 시스템.
  8. 제 7항에 있어서,
    상기 메모리 장치는
    리드 동작시에 상기 메모리 코어로부터 리드된 에러 정정 코드를 이용해 상기 메모리 코어로부터 리드된 데이터의 에러를 체크하고, 에러가 1비트 이상 N비트(N은 1이상의 정수) 이하인 경우에 상기 에러 정정 코드를 이용해 상기 리드된 데이터의 에러를 정정하는 인-메모리 에러 정정 회로를 더 포함하는
    메모리 시스템.
  9. 제 7항에 있어서,
    상기 라이트 에러 체크 회로에 의해 에러가 검출된 경우에, 상기 수신된 에러 정정 코드와 상기 수신된 데이터는 상기 메모리 코어에 저장되지 않고,
    상기 메모리 장치는 상기 에러의 검출을 상기 메모리 콘트롤러에게 알리는
    메모리 시스템.
  10. 제 8항에 있어서,
    상기 에러 정정 회로는 M비트(M은 N보다 큰 정수)의 에러 정정 능력을 가지는
    메모리 시스템.
  11. 제 7항에 있어서,
    상기 메모리 장치는 하나의 라이트 커맨드에 대응하는 코드워드를 단독으로 라이트하고, 하나의 리드 커맨드에 대응하는 코드워드를 단독으로 리드하는
    메모리 시스템.
  12. 제 7항에 있어서,
    상기 메모리 장치는 HBM(High Bandwidth Memory)인
    메모리 시스템.
  13. 제 7항에 있어서,
    상기 에러 정정 코드는 CRC(Cyclic Redundancy Check) 코드와 심플 패리티(Simple Parity) 코드를 포함하는
    메모리 시스템.
  14. 메모리 콘트롤러가 라이트 데이터를 이용해 에러 정정 코드를 생성하는 단계;
    라이트 커맨드, 상기 라이트 데이터 및 상기 에러 정정 코드가 상기 메모리 콘트롤러로부터 메모리 장치로 전달되는 단계;
    상기 메모리 장치가 상기 에러 정정 코드를 이용해 상기 라이트 데이터의 에러를 검출하는 단계; 및
    상기 라이트 데이터의 에러가 검출되지 않은 경우에, 상기 라이트 데이터와 상기 에러 정정 코드가 상기 메모리 장치의 메모리 코어에 저장되는 단계
    를 포함하는 메모리 시스템의 동작 방법.
  15. 제 14항에 있어서,
    상기 라이트 데이터의 에러가 검출된 경우에, 상기 메모리 장치가 라이트 동작을 수행하지 않고, 상기 라이트 데이터의 에러가 검출되었음을 상기 메모리 콘트롤러에 알리는 단계
    를 더 포함하는 메모리 시스템의 동작 방법.
  16. 제 15항에 있어서,
    리드 커맨드가 상기 메모리 콘트롤러로부터 상기 메모리 장치로 전달되는 단계;
    상기 메모리 장치의 상기 메모리 코어로부터 데이터와 에러 정정 코드가 리드되는 단계;
    상기 메모리 장치가 상기 메모리 코어로부터 리드된 에러 정정 코드를 이용해 상기 메모리 코어로부터 리드된 데이터의 에러를 검출하는 단계;
    상기 리드된 데이터의 에러가 1비트 이상 N비트(N은 1이상의 정수)인 경우에, 상기 메모리 장치가 상기 리드된 에러 정정 코드를 이용해 상기 리드된 데이터의 에러를 정정하고, 상기 메모리 장치로부터 상기 메모리 콘트롤러로 에러가 정정된 데이터와 상기 리드된 에러 정정 코드가 전달되는 단계;
    상기 리드된 데이터의 에러가 없거나 상기 N비트를 초과하는 경우에, 상기 메모리 장치로부터 상기 메모리 콘트롤러로 상기 리드된 데이터와 상기 리드된 에러 정정 코드가 전달되는 단계; 및
    상기 메모리 콘트롤러가 상기 메모리 장치로부터 전달된 데이터에 에러가 존재하는 경우에 상기 메모리 장치로부터 전달된 에러 정정 코드를 이용해 정정하는 단계
    를 더 포함하는 메모리 시스템의 동작 방법.
  17. 제 16항에 있어서,
    상기 메모리 콘트롤러는 M비트(M은 N보다 큰 정수)의 에러 정정 능력을 가지는
    메모리 시스템의 동작 방법.
  18. 제 16항에 있어서,
    상기 메모리 장치로 전달되는 상기 라이트 데이터와 상기 에러 정정 코드가 상기 메모리 장치로 전달되는 상기 라이트 커맨드에 대응하는 전체 코드워드인
    메모리 시스템의 동작 방법.
  19. 제 14항에 있어서,
    상기 에러 정정 코드는 CRC(Cyclic Redundancy Check) 코드와 심플 패리티(Simple Parity) 코드를 포함하는
    메모리 시스템의 동작 방법.
  20. 제 14항에 있어서,
    상기 메모리 장치는 HBM(High Bandwidth Memory)인
    메모리 시스템의 동작 방법.
KR1020180076053A 2017-07-05 2018-06-29 메모리 장치, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법 KR20190005116A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762528849P 2017-07-05 2017-07-05
US62/528,849 2017-07-05
US201862644149P 2018-03-16 2018-03-16
US62/644,149 2018-03-16

Publications (1)

Publication Number Publication Date
KR20190005116A true KR20190005116A (ko) 2019-01-15

Family

ID=64902747

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180076053A KR20190005116A (ko) 2017-07-05 2018-06-29 메모리 장치, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법

Country Status (2)

Country Link
US (1) US11030040B2 (ko)
KR (1) KR20190005116A (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10740177B2 (en) * 2018-01-16 2020-08-11 International Business Machines Corporation Optimizing error correcting code in three-dimensional stacked memory
US11747985B2 (en) 2019-12-06 2023-09-05 SK Hynix Inc. Memory system, integrated circuit system, and operation method of memory system
US11322219B2 (en) * 2019-12-06 2022-05-03 SK Hynix Inc. Memory system, integrated circuit system, and operation method of memory system
US11170869B1 (en) 2020-06-04 2021-11-09 Western Digital Technologies, Inc. Dual data protection in storage devices

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6898036B2 (en) * 2001-12-31 2005-05-24 Storage Technology Corporation System and method for recovery from writing errors during data storage
US8042023B2 (en) 2008-01-14 2011-10-18 Qimonda Ag Memory system with cyclic redundancy check
US8245105B2 (en) * 2008-07-01 2012-08-14 International Business Machines Corporation Cascade interconnect memory system with enhanced reliability
JP4940322B2 (ja) * 2010-03-16 2012-05-30 株式会社東芝 半導体メモリ映像蓄積再生装置及びデータ書込み/読出し方法
US8694857B2 (en) * 2011-04-13 2014-04-08 Inphi Corporation Systems and methods for error detection and correction in a memory module which includes a memory buffer
US10204008B2 (en) * 2012-12-21 2019-02-12 Hewlett Packard Enterprise Development Lp Memory module having error correction logic
KR20150135311A (ko) * 2013-03-25 2015-12-02 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. 에러 정정 로직을 갖는 메모리 디바이스
US9965352B2 (en) * 2015-11-20 2018-05-08 Qualcomm Incorporated Separate link and array error correction in a memory system
US10140175B2 (en) * 2015-11-20 2018-11-27 Qualcomm Incorporated Protecting an ECC location when transmitting correction data across a memory link
US10346268B2 (en) * 2016-07-21 2019-07-09 SK Hynix Inc. Efficient data recovery for write path errors

Also Published As

Publication number Publication date
US20190012230A1 (en) 2019-01-10
US11030040B2 (en) 2021-06-08

Similar Documents

Publication Publication Date Title
US11734106B2 (en) Memory repair method and apparatus based on error code tracking
KR102553780B1 (ko) 메모리 장치, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법
US10503588B2 (en) Memory systems including memory controllers and memory modules and methods of processing data in the memory systems
CN102378967B (zh) 扩展式单位错误校正及多位错误检测
US8869007B2 (en) Three dimensional (3D) memory device sparing
KR20190005116A (ko) 메모리 장치, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법
US10467091B2 (en) Memory module, memory system including the same, and error correcting method thereof
US10353770B2 (en) Memory system and error correcting method of the same
US10795763B2 (en) Memory system and error correcting method thereof
US11188417B2 (en) Memory system, memory module, and operation method of memory system
US11265022B2 (en) Memory system and operating method thereof
KR20180123207A (ko) 메모리 장치, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법
US20200321979A1 (en) Ecc memory chip encoder and decoder
US10915398B2 (en) Memory system and operating method thereof
US10901842B2 (en) Memory system and operating method thereof
US11934263B2 (en) Parity protected memory blocks merged with error correction code (ECC) protected blocks in a codeword for increased memory utilization
KR20190040613A (ko) 메모리 장치 및 이의 동작 방법
US20210334033A1 (en) Memory device and method reading data
US10191807B2 (en) Memory systems and operation method thereof
US11747985B2 (en) Memory system, integrated circuit system, and operation method of memory system
US20240022263A1 (en) Memory, memory module, memory system, and operation method of memory system
US11462293B2 (en) System and method for error correction
US20230315571A1 (en) Integrated error correction code (ecc) and parity protection in memory control circuits for increased memory utilization

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal