KR20210157829A - 메모리 및 메모리의 동작 방법 - Google Patents

메모리 및 메모리의 동작 방법 Download PDF

Info

Publication number
KR20210157829A
KR20210157829A KR1020200150006A KR20200150006A KR20210157829A KR 20210157829 A KR20210157829 A KR 20210157829A KR 1020200150006 A KR1020200150006 A KR 1020200150006A KR 20200150006 A KR20200150006 A KR 20200150006A KR 20210157829 A KR20210157829 A KR 20210157829A
Authority
KR
South Korea
Prior art keywords
error correction
data
correction code
group
memory
Prior art date
Application number
KR1020200150006A
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 에스케이하이닉스 주식회사
Priority to CN202110631857.3A priority Critical patent/CN114121128A/zh
Publication of KR20210157829A publication Critical patent/KR20210157829A/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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • 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
    • 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/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
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/08Word line control circuits, e.g. drivers, boosters, pull-up circuits, pull-down circuits, precharging circuits, for word lines
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/616Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations

Abstract

메모리는, 각각 K비트 데이터를 포함하는 N개 데이터 그룹들을 포함하는 메세지를 이용해 M비트 에러 정정 코드를 생성하는 에러 정정 코드 생성 회로 -K, N 및 M은 양의 정수-; 상기 N개 데이터 그룹과 상기 에러 정정 코드를 저장하는 N+1개 셀 영역들을 포함하는 메모리 코어; 및 상기 메모리 코어로부터 리드된 상기 에러 정정 코드를 이용해 상기 메모리 코어로부터 리드된 상기 N개 데이터 그룹들의 에러를 정정하는 에러 정정 회로를 포함하고, 상기 에러 정정 코드 생성 회로는 M x [(K*N)+M] 체크 메트릭스를 이용해 상기 M비트 에러 정정 코드를 생성하고, 상기 체크 메트릭스에서 상기 메세지 부분은 상기 N개 데이터 그룹들 각각에 대응해 상기 N개의 그룹들을 구별하기 위한 N개 그룹 인디케이터 파트와, 상기 N개 데이터 그룹들 내부의 K비트 데이터를 구별하기 위한 N개 비트 인디케이터 파트를 포함하고, 상기 N개 그룹 인디케이터들 중 인접한 데이터 그룹들의 그룹 인디케이터들 간의 해밍 디스턴스(hamming distance) 차이는 1과 M/2 중 하나일 수 있다.

Description

메모리 및 메모리의 동작 방법 {MEMORY AND OPERATION METHOD OF MEMORY}
본 특허 문헌은 메모리에 관한 것으로, 특히 메모리의 에러 정정과 관련된 것이다.
반도체 메모리 산업 초기에는 반도체 제조 프로세스를 통과한 메모리에서 불량 메모리 셀이 하나도 존재하지 않는 오리지날 굿 다이(original good die)가 웨이퍼(wafer) 상에 다수 분포하였다. 그러나 메모리의 용량이 점차로 증가하면서 불량 메모리 셀이 하나도 존재하지 않는 메모리를 만드는 것이 어려워졌으며, 현재에는 이러한 메모리가 제조될 확률은 없다고 봐도 무방하다. 이러한 상황을 타개하기 위한 하나의 방편으로 메모리의 불량 메모리 셀들을 리던던시 메모리 셀들로 리페어하는 방법이 사용되고 있다.
그리고 또 하나의 방편으로 메모리 시스템에서 에러를 정정하는 에러 정정 회로(ECC 회로)를 사용해 메모리 셀에서 발생하는 에러 및 메모리 시스템의 리드 및 라이트 과정에서 데이터가 전송되면서 발생하는 에러를 정정하고 있다.
본 발명의 실시예들은, 메모리에서의 에러 정정의 오류를 줄이는 기술을 제공할 수 있다.
본 발명의 일실시예에 따른 메모리는, 각각 K비트 데이터를 포함하는 N개 데이터 그룹들을 포함하는 메세지를 이용해 M비트 에러 정정 코드를 생성하는 에러 정정 코드 생성 회로 -K, N 및 M은 양의 정수-; 상기 N개 데이터 그룹과 상기 에러 정정 코드를 저장하는 N+1개 셀 영역들을 포함하는 메모리 코어; 및 상기 메모리 코어로부터 리드된 상기 에러 정정 코드를 이용해 상기 메모리 코어로부터 리드된 상기 N개 데이터 그룹들의 에러를 정정하는 에러 정정 회로를 포함하고, 상기 에러 정정 코드 생성 회로는 M x [(K*N)+M] 체크 메트릭스를 이용해 상기 M비트 에러 정정 코드를 생성하고, 상기 체크 메트릭스에서 상기 메세지 부분은 상기 N개 데이터 그룹들 각각에 대응해 상기 N개의 그룹들을 구별하기 위한 N개 그룹 인디케이터 파트와, 상기 N개 데이터 그룹들 내부의 K비트 데이터를 구별하기 위한 N개 비트 인디케이터 파트를 포함하고, 상기 N개 그룹 인디케이터들 중 인접한 데이터 그룹들의 그룹 인디케이터들 간의 해밍 디스턴스(hamming distance) 차이는 1과 M/2 중 하나일 수 있다.
본 발명의 일실시예에 따른 메모리의 동작 방법은, 각각 K비트 데이터를 포함하는 N개 데이터 그룹들을 수신하는 단계 -K 및 N은 양의 정수-; 상기 N개 데이터 그룹들을 메시지로 이용해 M비트 에러 정정 코드를 생성하는 단계 - M은 양의 정수-; 및 메모리 코어의 N+1개 셀 영역들에 상기 N개 데이터 그룹들과 상기 에러 정정 코드를 저장하는 단계를 포함하고, 상기 에러 정정 코드의 생성하는 단계에서는 M x [(K*N)+M] 체크 메트릭스를 이용해 상기 M비트 에러 정정 코드를 생성하고, 상기 체크 메트릭스에서 상기 메세지 부분은 상기 N개 데이터 그룹들 각각에 대응해 상기 N개의 그룹들을 구별하기 위한 N개 그룹 인디케이터 파트와, 상기 N개 데이터 그룹들 내부의 K비트 데이터를 구별하기 위한 N개 비트 인디케이터 파트를 포함하고, 상기 N개 그룹 인디케이터들 중 인접한 데이터 그룹들의 그룹 인디케이터들 간의 해밍 디스턴스(hamming distance) 차이는 1과 M/2 중 하나일 수 있다.
본 발명의 일실시예에 따른 메모리는, 각각 16비트의 데이터를 포함하는 8개 데이터 그룹들을 포함하는 메세지를 이용해 8비트 에러 정정 코드를 생성하는 에러 정정 코드 생성 회로; 상기 8개 데이터 그룹과 상기 에러 정정 코드를 저장하는 9개 셀 영역들을 포함하는 메모리 코어; 및 상기 메모리 코어로부터 리드된 상기 에러 정정 코드를 이용해 상기 메모리 코어로부터 리드된 상기 8개 데이터 그룹들의 에러를 정정하는 에러 정정 회로를 포함하고, 상기 에러 정정 코드 생성 회로는 8 x 136 체크 메트릭스를 이용해 상기 8비트 에러 정정 코드를 생성하고, 상기 체크 메트릭스에서 상기 메세지 부분은 상기 8개 데이터 그룹들 각각에 대응해 상기 8개의 그룹들을 구별하기 위한 8개 그룹 인디케이터 파트와, 상기 8개 데이터 그룹들 내부의 16비트 데이터를 구별하기 위한 8개 비트 인디케이터 파트를 포함하고, 상기 8개 그룹 인디케이터들 중 인접한 데이터 그룹들의 그룹 인디케이터들 간의 해밍 디스턴스(hamming distance) 차이는 1과 4 중 하나일 수 있다.
본 발명의 일실시예에 따른 메모리는, 각각 K비트 데이터를 포함하는 N개 데이터 그룹들을 포함하는 메세지를 이용해 M비트 에러 정정 코드를 생성하는 에러 정정 코드 생성 회로 -K, N 및 M은 양의 정수-; 상기 N개 데이터 그룹과 상기 에러 정정 코드를 저장하는 N+1개 셀 영역들을 포함하는 메모리 코어; 및 상기 메모리 코어로부터 리드된 상기 에러 정정 코드를 이용해 상기 메모리 코어로부터 리드된 상기 N개 데이터 그룹들의 에러를 정정하는 에러 정정 회로를 포함하고, 상기 에러 정정 코드 생성 회로는 M x [(K*N)+M] 체크 메트릭스를 이용해 상기 M비트 에러 정정 코드를 생성하고, 상기 체크 메트릭스에서 상기 메세지 부분은 상기 N개 데이터 그룹들 각각에 대응해 상기 N개의 그룹들을 구별하기 위한 N개 그룹 인디케이터 파트와, 상기 N개 데이터 그룹들 내부의 K비트 데이터를 구별하기 위한 N개 비트 인디케이터 파트를 포함하고, 상기 N개 그룹 인디케이터들 중 인접한 데이터 그룹들의 그룹 인디케이터들의 합은 상기 N개 그룹 인디케이터들 중 그 어떤 것과도 상이할 수 있다.
본 발명의 실시예들에 따르면, 메모리에서의 에러 정정의 오류를 줄일 수 있다.
도 1은 본 발명의 일실시예에 따른 에러 정정 코드 생성 회로(110)와 에러 정정 회로(120)를 도시한 도면.
도 2는 에러 정정 코드 생성 회로(110)와 에러 정정 회로(120)가 사용하는 체크 메트릭스의 일 예를 도시한 도면.
도 3은 에러 정정 코드 생성 회로(110)가 체크 메트릭스를 어떻게 사용하는지를 나타낸 도면.
도 4는 에러 정정 코드 생성 회로(110)가 도 2의 체크 메트릭스를 이용해 데이터(DATA) (1,1,0,0,1,0,1,0)에 대한 에러 정정 코드(ECC) (0,1,1,0)를 생성한 결과를 나타낸 도면.
도 5는 에러 정정 회로(120)가 에러 정정 코드(ECC)를 이용해 에러를 정정하는 과정을 나타낸 도면.
도 6는 에러 정정 회로(120)가 에러 정정 코드(ECC)를 이용해 에러를 정정하는 또 다른 과정을 나타낸 도면.
도 7은 에러 정정 회로(120)가 에러 정정 코드(ECC)를 이용해 에러를 정정하는 또 다른 과정을 나타낸 도면.
도 8은 본 발명의 일실시예에 따른 메모리(800)의 구성도.
도 9는 도 8의 ECC 블록(820)의 에러 정정 코드 생성 회로(821)와 에러 정정 회로(822)에서 사용하는 체크 메트릭스의 일 예를 도시한 도면.
도 10은 규칙 (1)과 규칙 (2)를 만족하는 그룹 인디케이터들의 일 실시예를 도시한 도면.
도 11은 규칙 (1)과 규칙 (2)를 만족하는 그룹 인디케이터의 다른 실시예를 도시한 도면.
이하, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 상세히 설명하기 위하여, 본 발명의 가장 바람직한 실시예를 첨부 도면을 참조하여 설명하기로 한다. 본 발명을 설명함에 있어서, 본 발명의 요지와 무관한 공지의 구성은 생략될 수 있다. 각 도면의 구성요소들에 참조 번호를 부가함에 있어서, 동일한 구성요소들에 한해서는 비록 다른 도면 상에 표시되더라도 가능한 한 동일한 번호를 가지도록 하고 있음에 유의하여야 한다.
도 1은 본 발명의 일실시예에 따른 에러 정정 코드 생성 회로(110)와 에러 정정 회로(120)를 도시한다.
에러 정정 코드 생성 회로(110)는 라이트 동작시에 메모리 외부로부터 전달된(메모리 콘트롤러로부터 전달된) 데이터(DATA)를 이용해 에러 정정 코드(ECC)를 생성할 수 있다. 즉, 에러 정정 코드 생성 회로(110)는 데이터(DATA)를 인코딩해 데이터(DATA)의 에러를 정정하기 위한 에러 정정 코드(ECC)를 생성할 수 있다. 에러 정정 코드(ECC) 생성 과정에서 인코딩 대상이 되는 데이터(DATA)를 메세지(message)라고도 한다. 라이트 동작시에는 에러 정정 코드(ECC)가 생성될 뿐 에러의 정정 동작이 수행되지는 않으므로, 에러 정정 코드 생성 회로(110)로 입력되는 데이터(DATA)와 에러 정정 코드 생성 회로(110)로부터 출력되는 데이터(DATA')가 동일할 수 있다.
라이트 동작시에 데이터(DATA')와 에러 정정 코드(ECC)는 메모리 코어(미도시)에 저장될 수 있다. 또한, 리드 동작시에 메모리 코어로부터 데이터(DATA') 및 에러 정정 코드(ECC)가 리드되어 에러 정정 회로(120)로 전달될 수 있다.
리드 동작시에 에러 정정 회로(120)는 에러 정정 코드(ECC)를 이용해 데이터(DATA')의 에러를 정정할 수 있다. 여기서 에러를 정정한다는 것은 에러 정정 코드(ECC)를 이용해 데이터(DATA')의 에러를 검출하고 에러가 검출된 경우에 이를 정정한다는 것을 의미할 수 있다. 에러 정정 회로(120)에 의해 에러가 정정된 데이터(DATA)는 메모리 외부로 출력될 수 있다. 즉, 데이터(DATA)는 메모리 콘트롤러로 전달될 수 있다. 에러 정정 회로(120)는 데이터(DATA') 뿐만이 아니라 에러 정정 코드(ECC)에서 발생한 에러도 정정할 수 있다.
에러 정정 코드 생성 회로(110)와 에러 정정 회로(120)는 H 메트릭스(matrix)라고도 불리는 체크 메트릭스(check matrix)를 이용해 에러 정정 코드(ECC)를 생성하고, 에러 정정 코드(ECC)를 이용해 에러를 정정할 수 있는데, 이하에서는 이에 대해 알아보기로 한다.
도 2는 에러 정정 코드 생성 회로(110)와 에러 정정 회로(120)가 사용하는 체크 메트릭스의 일 예를 도시한 도면이다. 여기서는 설명의 편의를 위해 데이터가 8비트(D0~D7)이고 에러 정정 코드(ECC)가 4비트(E0~E3)라고 가정하기로 한다.
체크 메트릭스는 (에러 정정 코드의 비트수) x (에러 정정 코드의 비트수 + 데이터의 비트수)의 메트릭스로 구성될 수 있다. 여기서는 에러 정정 코드가 4비트이고 데이터가 8비트이므로, 체크 메트릭스는 4 x 12 메트릭스로 구성될 수 있다. 체크 메트릭스의 각 성분들은 1 또는 0의 값을 가질 수 있다.
체크 메트릭스의 컬럼 벡터들 각각은 데이터(DATA)의 각 비트들(D0~D7) 및 에러 정정 코드(ECC)의 각 비트들(E0~E3)에 대응할 수 있다. 예를 들어 12개의 컬럼 벡터들 중 8개의 컬럼 벡터들은 데이터(DATA)의 각 비트들(D0~D7)에 대응하고, 4개의 컬럼 벡터들은 에러 정정 코드(ECC)의 각 비트들(E0~E3)에 대응할 수 있다. 도 2에서 D1은 '1101'의 값을 가지는 컬럼 벡터에 대응하고, E2는 '0010'의 값을 가지는 컬럼 벡터에 대응한다는 것을 확인할 수 있다.
도 3은 에러 정정 코드 생성 회로(110)가 체크 메트릭스를 어떻게 사용하는지를 나타낸 도면이다.
에러 정정 코드 생성 회로(110)는 체크 메트릭스의 컬럼 벡터들 각각을 대응하는 비트들과 곱셈한 후에, 로우들 각각의 합이 0(즉, 짝수)이 될 수 있도록 에러 정정 코드(ECC)를 생성할 수 있다.
즉, 하기 4개의 수학식이 모두 만족될 수 있도록 에러 정정 코드(ECC)가 생성될 수 있다.
[수학식 1]
1*D0+1*D1+1*D2+0*D3+1*D4+1*D5+1*D6+1*D7+1*E0+0*E1+0*E2+0*E3 = 0
[수학식 2]
1*D0+1*D1+0*D2+1*D3+1*D4+0*D5+0*D6+1*D7+0*E0+1*E1+0*E2+0*E3 = 0
[수학식 3]
1*D0+0*D1+1*D2+1*D3+0*D4+1*D5+0*D6+1*D7+0*E0+0*E1+1*E2+0*E3 = 0
[수학식 4]
0*D0+1*D1+1*D2+1*D3+0*D4+0*D5+1*D6+1*D7+0*E0+0*E1+0*E2+1*E3 = 0
도 4는 에러 정정 코드 생성 회로(110)가 도 2의 체크 메트릭스를 이용해 데이터(DATA) (1,1,0,0,1,0,1,0)에 대한 에러 정정 코드(ECC) (0,1,1,0)를 생성한 결과를 나타낸 도면이다.
데이터(DATA) (1,1,0,0,1,0,1,0)와 에러 정정 코드(ECC) (0,1,1,0)을 상기 4개의 수학식에 대입해 보면,
1*1+1*1+1*0+0*0+1*1+1*0+1*1+1*0+1*0+0*1+0*1+0*0 = 0
1*1+1*1+0*0+1*0+1*1+0*0+0*1+1*0+0*0+1*1+0*1+0*0 = 0
1*1+0*1+1*0+1*0+0*1+1*0+0*1+1*0+0*0+0*1+1*1+0*0 = 0
0*1+1*1+1*0+1*0+0*1+0*0+1*1+1*0+0*0+0*1+0*1+1*0 = 0
을 만족함을 확인할 수 있다.
에러 정정 회로(120)가 에러 정정 코드(ECC)를 이용해 데이터(DATA)와 에러 정정 코드(ECC)의 에러를 정정하는 과정에서도 수학식 1-4가 사용될 수 있다. 상기 4개의 식을 연산한 결과 값이 수학식1 = 0, 수학식2 = 0, 수학식3 = 0, 수학식4 = 0이면 에러가 없다는 것을 나타내고, 그렇지 않은 경우에는 그 결과가 나타내는 위치에 에러가 존재한다는 것을 나타낼 수 있다.
도 5는 에러 정정 회로(120)가 에러 정정 코드(ECC)를 이용해 에러를 정정하는 과정을 나타낸 도면이다.
여기서는 데이터(DATA) (1,1,0,0,1,0,1,0) 중 D6가 1->0으로 변경되는 에러가 발생해 데이터(DATA)가 (1,1,0,0,1,0,0,0)으로 되었다고 가정하기로 한다.
에러가 있는 데이터(DATA) (1,1,0,0,1,0,0,0)와 에러 정정 코드(ECC) (0,1,1,0)을 체크 메트릭스에 대입해 수학식 1-4을 계산하면 다음의 결과가 나온다.
1*1+1*1+1*0+0*0+1*1+1*0+1*0+1*0+1*0+0*1+0*1+0*0 = 1
1*1+1*1+0*0+1*0+1*1+0*0+0*0+1*0+0*0+1*1+0*1+0*0 = 0
1*1+0*1+1*0+1*0+0*1+1*0+0*0+1*0+0*0+0*1+1*1+0*0 = 0
0*1+1*1+1*0+1*0+0*1+0*0+1*0+1*0+0*0+0*1+0*1+1*0 = 1
이 결과 1,0,0,1은 에러의 위치를 나타낸다. 체크 메트릭스의 컬럼 벡터들 중 1,0,0,1의 값을 가지는 컬럼 벡터는 D6에 해당하는 컬럼 벡터이므로, 에러 정정 회로(120)는 D6에 에러가 있다고 판단하고 D6를 0->1로 반전해 에러를 정정할 수 있다. 즉, 에러가 올바르게 정정될 수 있다.
도 6는 에러 정정 회로(120)가 에러 정정 코드(ECC)를 이용해 에러를 정정하는 또 다른 과정을 나타낸 도면이다.
여기서는 데이터(DATA) (1,1,0,0,1,0,1,0) 중 D0와 D3에 에러가 발생해, 데이터(DATA)가 (0,1,0,1,1,0,1,0)로 되었다고 가정하기로 한다.
에러가 있는 데이터(DATA) (0,1,0,1,1,0,1,0)와 에러 정정 코드(ECC) (0,1,1,0)을 체크 메트릭스에 대입해 수학식 1-4를 계산하면 다음의 결과가 나온다.
1*0+1*1+1*0+0*1+1*1+1*0+1*1+1*0+1*0+0*1+0*1+0*0 = 1
1*0+1*1+0*0+1*1+1*1+0*0+0*1+1*0+0*0+1*1+0*1+0*0 = 0
1*0+0*1+1*0+1*1+0*1+1*0+0*1+1*0+0*0+0*1+1*1+0*0 = 0
0*0+1*1+1*0+1*1+0*1+0*0+1*1+1*0+0*0+0*1+0*1+1*0 = 1
이 결과 1,0,0,1은 에러의 위치를 나타내며, 체크 메트릭스의 컬럼 벡터들 중 1,0,0,1의 값을 가지는 컬럼 벡터는 D6에 해당하는 컬럼 벡터이므로, 에러 정정 회로(120)는 D6에 에러가 있다고 판단하고, D6를 1->9으로 반전해 에러를 정정할 수 있다. 이러한 에러 정정에 의해 데이터는 (0,1,0,1,1,0,0,0)이 될 수 있다. 이와 같이 데이터(DATA)에 2비트(D0, D3)의 에러가 존재하는 경우 에러 정정 회로(120)는 에러를 정정하지 못하며 오히려 에러가 없는 D6를 오정정(miscorrection)해 데이터(DATA)의 에러를 3비트로 늘릴 수 있다. 이 경우에 에러 정정 회로(120)가 메모리의 오류를 줄이지는 못하고 오히려 증가시키게 된다.
도 7은 에러 정정 회로(120)가 에러 정정 코드(ECC)를 이용해 에러를 정정하는 또 다른 과정을 나타낸 도면이다.
여기서는 데이터(DATA) (1,1,0,0,1,0,1,0) 중 D2와 D7에 에러가 발생해, 데이터(DATA)가 (1,1,1,0,1,0,1,1)로 되었다고 가정하기로 한다.
에러가 있는 데이터(DATA) (1,1,1,0,1,0,1,1)와 에러 정정 코드(ECC) (0,1,1,0)을 체크 메트릭스에 대입해 수학식 1-4를 계산하면 다음의 결과가 나온다.
1*1+1*1+1*1+0*0+1*1+1*0+1*1+1*1+1*0+0*1+0*1+0*0 = 0
1*1+1*1+0*1+1*0+1*1+0*0+0*1+1*1+0*0+1*1+0*1+0*0 = 1
1*1+0*1+1*1+1*0+0*1+1*0+0*1+1*1+0*0+0*1+1*1+0*0 = 0
0*1+1*1+1*1+1*0+0*1+0*0+1*1+1*1+0*0+0*1+0*1+1*0 = 0
이 결과 0,1,0,0은 에러의 위치를 나타내며, 체크 메트릭스의 컬럼 벡터들 중 0,1,0,0의 값을 가지는 컬럼 벡터는 E1에 해당하는 컬럼 벡터이므로, 에러 정정 회로(120)는 E1에 에러가 있다고 판단하고, E1을 1->0으로 반전해 에러를 정정할 수 있다. 이러한 에러 정정에 의해 데이터는 (1,1,1,0,1,0,1,1)로 그대로 유지되고 에러 정정 코드(ECC)가 (0,0,1,0)이 될 수 있다. 즉, 데이터(DATA)의 2비트 에러는 그대로 유지되고, 오정정에 의해 에러 정정 코드(ECC)에 1비트 에러가 추가될 수 있다.
이 경우 오정정은 에러 정정 코드(ECC)에만 발생하고 데이터(DATA)에는 발생하지 않는다. 에러 정정 코드(ECC)는 에러 정정 동작에서만 사용되고 메모리 외부로는 출력되지 않으므로, 메모리를 포함하는 시스템의 안정성에는 아무런 영향을 주지 않을 수 있다.
도 6과 도 7의 에러 정정 과정들 모두에서 에러 정정 회로(120)의 오정정에 의해 에러가 증가하지만, 도 6에서는 데이터(DATA)의 에러가 증가해 메모리의 오류를 증가시키고, 도 7에서는 에러 정정 코드(ECC)의 에러가 증가해 메모리를 포함하는 시스템의 안정성에는 아무런 영향을 주지 않을 수 있다. 이에 오정정이 데이터(DATA)가 아닌 에러 정정 코드(ECC)에서 발생하도록 할 수 있다면 메모리 시스템(100)의 안정성을 개선할 수 있다.
도 8은 본 발명의 일실시예에 따른 메모리(800)의 구성도이다.
도 8을 참조하면, 메모리(800)는 데이터 패드들(DQ0~DQ7), 데이터 입/출력 회로들(811~818), ECC 블록(820) 및 메모리 코어(830)를 포함할 수 있다.
데이터 입/출력 회로들(811~818)은 데이터 패드들(DQ0~DQ7)을 통해 데이터(D0~D127)를 입/출력할 수 있다. 라이트 동작시에는 하나의 데이터 패드를 통해 16비트의 데이터가 입력되고, 리드 동작시에는 하나의 데이터 패드를 통해 16비트의 데이터가 출력될 수 있다. 메모리(800)에는 8개의 데이터 패드들(DQ0~DQ7)이 존재하므로, 라이트 동작시에는 메모리(800)로 128비트의 데이터(D0~D127)가 입력되고, 리드 동작시에는 메모리(800)로부터 128비트의 데이터(D0~D127)가 출력될 수 있다.
ECC 블록(820)은 에러 정정 코드 생성 회로(821)와 에러 정정 회로(822)를 포함할 수 있다. 에러 정정 코드 생성 회로(821)는 라이트 동작시에 데이터 입/출력 회로들(811~818)을 통해 수신된 128비트의 데이터(D0~D127)를 이용해 8비트의 에러 정정 코드(ECC)를 생성할 수 있다. 즉, 에러 정정 코드 생성 회로(821)는 128비트의 데이터(D0~D127)를 메세지로 이용해 8비트의 에러 정정 코드(ECC)를 생성할 수 있다. 라이트 동작시에는 에러 정정 코드 생성 회로(821)에 의해 에러 정정 코드(ECC)가 생성될 뿐 에러의 정정 동작이 수행되지는 않으므로, 라이트 동작시에 ECC 블록(820)으로 입력되는 데이터(D0~D127)와 ECC 블록(820)으로부터 출력되는 데이터(D0'~D127')는 동일할 수 있다.
에러 정정 회로(822)는 메모리 코어(830)로부터 전달된 에러 정정 코드(ECC)를 이용해 메모리 코어(830)로부터 전달된 데이터(D0'~D127')의 에러를 정정할 수 있다. 여기서 에러를 정정한다는 것은 에러 정정 코드(ECC)를 이용해 데이터(D0'~D127')의 에러를 검출하고 에러가 검출된 경우에 이를 정정한다는 것을 의미할 수 있다. 에러 정정 회로(822)에 의해 에러가 정정된 데이터(D0~D127)는 데이터 입/출력 회로들(811~818)에 의해 메모리(800) 외부로 출력될 수 있다.
메모리 코어(830)는 다수의 셀 영역들(831~839)을 포함할 수 있다. 셀 영역들(831~838)과 데이터 입/출력 회로들(811~818)은 1:1로 대응할 수 있다. 예를 들어, 셀 영역(831)은 데이터 입/출력 회로(811)를 통해 수신된 데이터(D0'~D15')를 저장하고, 셀 영역(833)은 데이터 입/출력 회로(813)를 통해 수신된 데이터(D32'~D47')를 저장할 수 있다. 또한, 셀 영역(839)은 에러 정정 코드(ECC)를 저장할 수 있다. 셀 영역들(831~839) 사이 사이의 사각형들은 서브 워드라인 드라이버들을 나타내며, 서브 워드라인 드라이버들 좌우로 뻗은 라인들은 서브 워드라인들을 나타낼 수 있다. 실제로는 훨씬 많은 개수의 서브 워드라인 드라이버들과 서브 워드라인들이 존재하지만 여기서는 그 간단한 구조를 나타내기 위해 일부만 도시했다. 셀 영역들(831~839) 중 인접한 셀 영역들은 서브 워드라인 드라이버들을 공유하므로, 서브 워드라인 드라이버에서 에러가 발생하는 경우에는 서브 워드라인 드라이버의 양 옆의 셀 영역들에서 에러가 발생할 가능성이 높다. 예를 들어, 셀 영역(833)과 셀 영역(834)은 서브 워드라인 드라이버를 공유하므로, 셀 영역들(833, 834)이 공유하는 서브 워드라인 드라이버에서 에러가 발생하는 경우에 셀 영역들(833, 834)에서 동시에 에러가 발생할 수 있다.
도 8에서는 한번의 라이트 및 리드 동작시에 메모리(800)에서 128비트의 데이터(D0~D127)가 입출력되고, 8비트의 에러 정정 코드(ECC)가 사용되는 것을 예시했지만, 이는 예시일 뿐이며, 데이터의 비트수 및 에러 정정 코드의 비트수가 도 8의 예시와 달라질 수도 있음은 당연하다.
도 9는 도 8의 ECC 블록(820)의 에러 정정 코드 생성 회로(821)와 에러 정정 회로(822)에서 사용하는 체크 메트릭스의 일 예를 도시한 도면이다.
체크 메트릭스는 (에러 정정 코드의 비트수) x (에러 정정 코드의 비트수 + 데이터의 비트수)의 메트릭스로 구성될 수 있다. 여기서는 에러 정정 코드가 8비트이고 데이터가 128비트이므로, 체크 메트릭스는 8 x 136 메트릭스로 구성될 수 있다. 체크 메트릭스의 각 성분들은 1 또는 0의 값을 가질 수 있다.
메세지(D0~D127)는 8개의 데이터 그룹들(DQ0_Group~DQ7_Group)로 나뉘어질 수 있다. 여기서는 동일한 데이터 패드를 통해 수신된 데이터를 동일한 그룹으로 나누었다. 예를 들어, 데이터 패드(DQ0)를 통해 수신된 16비트의 데이터(D0~D15)는 데이터 그룹(DQ0_Group)에 속하며, 데이터 패드(DQ6)를 통해 수신된 16비트의 데이터(D96~D111)는 데이터 그룹(DQ6_Group)에 속할 수 있다.
체크 메트릭스에서 메시지 부분은 8개의 데이터 그룹들(DQ0_Group~DQ7_Group) 각각에 대응해 8개의 그룹들(DQ0_Group~DQ7_Group)을 서로 구별하기 위한 8개의 그룹 인디케이터(group indicator) 파트와 8개 데이터 그룹들(DQ0_Group~DQ7_Group) 내부의 16비트 데이터를 구별하기 위한 8개의 비트 인디케이터(bit indicator) 파트를 포함할 수 있다. 데이터 그룹들(DQ0_Group~DQ7_Group) 각각에 대응하는 굵은 박스 내의 부분이 바로 그룹 인디케이터 파트에 해당한다.
도 9를 기준으로, D0~D15 및 CB0~CB3가 바로 데이터 그룹(DQ0_Group)의 그룹 인디케이터이고, D0~D15 및 CB4~CB7이 바로 데이터 그룹(DQ0_Group)의 비트 인디케이터이다. 또한, D32~D47 및 CB0~CB3가 바로 데이터 그룹(DQ2_Group)의 그룹 인디케이터이고, D32~D47 및 CB4~CB7이 바로 데이터 그룹(DQ2_Group)의 비트 인디케이터이다. 도 9를 참조하면, 그룹 인디케이터들은 동일한 그룹 인디케이터 내에서는 모든 컬럼들이 동일한 값을 가진다는 것을 확인할 수 있다. 예를 들어, 데이터 그룹(DQ3_Group)의 그룹 인디케이터의 모든 컬럼들은 '1101'의 값을 가지고, 데이터 그룹(DQ5_Group)의 그룹 인디케이터의 모든 컬럼들은 '0101'의 값을 가질 수 있다. 또한, 비트 인디케이터들은 모든 데이터 그룹에서 동일한 값을 가진다는 것을 확인할 수 있다. 예를 들어, 데이터 그룹(DQ0_Group)에 대응하는 4 x 16의 비트 인디케이터와 다른 데이터 그룹들(DQ1_Group~DQ7_Group)에 대응하는 4 x 16의 비트 인디케이터들과 동일한 값을 가질 수 있다.
에러 정정 코드 생성 회로(821)와 에러 정정 회로(822)는 도 3 내지 도 7에서 설명한 것과 동일한 방식으로 도 9의 체크 메트릭스를 이용해 에러 정정 코드(ECC)를 생성하고, 데이터(D0'~D127')의 에러를 정정할 수 있다.
셀 영역들(831~839) 중 하나의 셀 영역에서만 다수개의 에러가 발생하는 경우에, 즉 데이터 그룹들(DQ0_Group~DQ7_Group) 중 하나의 데이터 그룹 내에서만 다수개의 에러가 발생하는 경우에, 오정정(miscorrection)은 해당 데이터 그룹 내에서만 발생하거나 발생하지 않을 수 있다. 예를 들어, 데이터 그룹(DQ1_Group) 내에서만 짝수개의 에러가 발생하는 경우에, 에러가 발생한 위치의 그룹 인디케이터들을 합하면 '0000'이 될 것이고(예, 1001 + 1001 = 0000) 그룹 인디케이터 '0000'에 대응하는 데이터 그룹은 존재하지 않으므로 오정정은 발생하지 않는다. 또한, 데이터 그룹(DQ1_Group) 내에서만 홀수개의 에러가 발생하는 경우에, 에러가 발생한 위치의 그룹 인디케이터들을 합하면 '1001'이 되므로(예, 1001 + 1001 + 1001 = 1001) 데이터 그룹(DQ1_Group) 내에서 오정정이 발생할 수 있다. 에러가 발생한 데이터 그룹 내에서 오정정에 의해 에러가 증가하는 것은 시스템의 안정성에 별다른 문제를 일으키지 않을 수 있다. 이는 메모리(800)를 제어하는 메모리 콘트롤러에서는 데이터 그룹들(DQ0_Group~DQ7_Group) 각각을 하나의 심볼로 인식하고 심볼 단위로 에러 정정 동작을 수행하므로, 하나의 심볼 내에서 에러의 개수가 증가하더라도 에러의 정정이 가능하기 때문이다.
셀 영역들(831~839)은 인접한 셀 영역들끼리 서브 워드라인 드라이버를 공유하므로, 인접한 셀 영역들에서 동시에 에러가 발생할 가능성이 높다. 예를 들어, 셀 영역(831)에서 에러가 발생하는 경우에 셀 영역(832)에서도 에러가 발생할 가능성이 높다. 만약에, 셀 영역(831)에 대응하는 데이터 그룹(DQ0_Group)에서 홀수개의 에러가 발생하고, 셀 영역(832)에 대응하는 데이터 그룹(DQ1_Group)에서 홀수개의 에러가 발생하는 경우에, 두 그룹 인디케이터의 합은 0011 + 1001 = 1010 이므로, 그룹 인디케이터 '1010'에 대응하는 데이터 그룹(DQ7_Group)에서 오정정이 발생할 수 있다. 오정정에 의해 에러가 없던 데이터 그룹(DQ7_Group)에서 새로운 에러가 발생하므로, 이는 메모리(800)를 포함하는 시스템의 안정성을 크게 악화시킬 수 있다.
메모리를 포함하는 시스템의 안정성을 높이기 위해서는 다음의 (A)와 (B)의 목표가 달성되어야 한다.
(A) 하나의 데이터 그룹에서 다수개의 에러가 발생하는 경우에는 오정정이 없거나 해당 데이터 그룹 내에서만 오정정이 발생해야 함.
(B) 인접한 두 셀 영역들에 대응하는 두 데이터 그룹들 각각에서 동시에 홀수개의 에러가 발생하는 경우에는 다른 데이터 그룹에서는 오정정이 발생하지 않아야 함. 에러 정정 코드에서 오정정이 발생하는 것은 문제 없음.
상기 (A)와 (B)를 지키기 위해서는 체크 메트릭스가 다음의 규칙들을 만족해야 한다.
규칙 (1): 그룹 인디케이터의 도입. 도 9와 같이 데이터 그룹들(DQ0_Group~DQ7_Group)을 구별하기 위한 그룹 인디케이터를 도입하는 것에 의해 상기 (A)는 달성될 수 있다. 그룹 인디케이터가 도입되는 것에 의해 하나의 데이터 그룹 내에서 짝수개의 에러가 발생하는 경우에는 오정정이 발생하지 않을 수 있으며, 하나의 데이터 그룹 내에서 홀수개의 에러가 발생하는 경우에는 해당 데이터 그룹 내에서만 오정정이 발생할 수 있다.
규칙 (2): 인접한 데이터 그룹들 간의 해밍 디스턴스(hamming distance)는 1 또는 4 (즉, 에러 정정 코드 비트수의 절반)이 되도록 한다. 여기서 인접한 데이터 그룹들이란 인접한 셀 영역들에 대응하는 데이터 그룹들을 의미한다. 예를 들어, 데이터 그룹(DQ0_Group)은 셀 영역(831)에 대응하고 데이터 그룹(DQ1_Group)은 셀 영역(832)에 대응하는데 셀 영역들(831, 832)은 인접해있으므로 데이터 그룹들(DQ0_Group, DQ1_Group)은 인접한 데이터 그룹들일 수 있다. 그러나 데이터 그룹(DQ3_Group)은 셀 영역(834)에 대응하고 데이터 그룹(DQ4_Group)은 셀 영역(835)에 대응하는데, 셀 영역들(834, 835) 사이에는 셀 영역(839)이 존재해 셀 영역들(834, 835)은 인접하지는 않으므로 데이터 그룹들(DQ3_Group)은 서로 인접한 데이터 그룹들이 아닐 수 있다. 규칙 (2)는 인접한 데이터 그룹들의 그룹 인디케이터들의 합이 그 어떤 그룹 인디케이터와도 다른 값을 가지도록 하기 위한 규칙이다.
도 9의 체크 메트릭스는 규칙 (1)은 만족하지만, 규칙 (2)는 만족하지 못한다.
도 10은 규칙 (1)과 규칙 (2)를 만족하는 그룹 인디케이터들의 일 실시예를 도시한다. 체크 메트릭스에서 에러 정정 코드(ECC)에 대응하는 부분 및 비트 인디케이터들은 도 9와 동일할 수 있다.
도 10을 참조하면, 인접한 데이터 그룹들(DQ0_Group, DQ1_Group)의 그룹 인디케이터들 (0,0,1,1), (1,0,1,1) 간에는 해밍 디스턴스가 1이고, 인접한 데이터 그룹들(DQ1_Group, DQ2_Group)의 그룹 인디케이터들 (1,0,1,1), (1,0,0,1) 간에는 해밍 디스턴스가 1이고, 인접한 데이터 그룹들(DQ2_Group, DQ3_Group) 간의 그룹 인디케이터들 (1,0,0,1), (1,1,0,1) 간에는 해밍 디스턴스가 1인 것을 확인할 수 있다. 또한, 인접한 데이터 그룹들(DQ4_Group, DQ5_Group)의 그룹 인디케이터들 (0,1,1,0), (0,1,1,1) 간에는 해밍 디스턴스가 1이고, 인접한 데이터 그룹들(DQ5_Group, DQ6_Group)의 그룹 인디케이터들 (0,1,1,1), (0,1,0,1) 간에는 해밍 디스턴스가 1이고, 인접한 데이터 그룹들(DQ6_Group, DQ7_Group) 간의 그룹 인디케이터들 (0,1,0,1), (1,0,1,0) 간에는 해밍 디스턴스가 4인 것을 확인할 수 있다.
도 10과 같이 그룹 인디케이터가 배정되는 경우에는 인접한 데이터 그룹들에서 동시에 에러가 발생하더라도 시스템의 안정성을 저해하지 않을 수 있다.
인접한 데이터 그룹들(DQ0_Group, DQ1_Group) 각각에서 홀수개의 에러가 발생하는 경우에, 데이터 그룹들(DQ0_Group, DQ1_Group)의 그룹 인디케이터들을 합한 (0,0,1,1) + (1,0,1,1) = (1,0,0,0)의 위치에서 오정정이 발생할 수 있다. (1,0,0,0)은 에러 정정 코드(E0)의 위치이므로 에러 정정 코드(E0)에서 오정정이 발생할 수 있다. 에러 정정 코드(E0)는 메모리 외부로 출력되지 않으므로, 에러 정정 코드의 오정정은 메모리를 포함하는 시스템의 안정성에 아무런 영향을 주지 않을 수 있다.
또한, 인접한 데이터 그룹들(DQ6_Group, DQ7_Group) 각각에서 홀수개의 에러가 발생하는 경우에, 데이터 그룹들(DQ6_Group, DQ7_Group)의 그룹 인디케이터들을 합한 (0,1,0,1) + (1,0,1,0) = (1,1,1,1)의 위치에서 오정정이 발생할 수 있다. 그런데 (1,1,1,1)에 해당하는 그룹 인디케이터는 존재하지 않으므로, 결국 오정정은 발생하지 않을 수 있다.
도 10과 같이 데이터 그룹들(DQ0_Group~DQ7_Group)에 그룹 인디케이터들을 배정하면 메모리(800)를 포함하는 시스템의 안정성을 크게 향상시킬 수 있다.
도 11은 규칙 (1)과 규칙 (2)를 만족하는 그룹 인디케이터의 다른 실시예를 도시한다. 체크 메트릭스에서 에러 정정 코드(ECC)에 대응하는 부분 및 비트 인디케이터들은 도 9와 동일할 수 있다.
도 11을 참조하면, 인접한 데이터 그룹들(DQ0_Group, DQ1_Group)의 그룹 인디케이터들 (0,0,1,1), (1,0,1,1) 간에는 해밍 디스턴스가 1이고, 인접한 데이터 그룹들(DQ1_Group, DQ2_Group)의 그룹 인디케이터들 (1,0,1,1), (1,0,0,1) 간에는 해밍 디스턴스가 1이고, 인접한 데이터 그룹들(DQ2_Group, DQ3_Group) 간의 그룹 인디케이터들 (1,0,0,1), (0,1,1,0) 간에는 해밍 디스턴스가 4인 것을 확인할 수 있다. 또한, 인접한 데이터 그룹들(DQ4_Group, DQ5_Group)의 그룹 인디케이터들 (0,1,1,1), (0,1,0,1) 간에는 해밍 디스턴스가 1이고, 인접한 데이터 그룹들(DQ5_Group, DQ6_Group)의 그룹 인디케이터들 (0,1,0,1), (1,0,1,0) 간에는 해밍 디스턴스가 1이고, 인접한 데이터 그룹들(DQ6_Group, DQ7_Group) 간의 그룹 인디케이터들 (1,0,1,0), (1,1,1,0) 간에는 해밍 디스턴스가 1인 것을 확인할 수 있다.
도 11에서도 데이터 그룹들(DQ0_Group~DQ7_Group)의 그룹 인디케이터들이 규칙 (l)과 규칙 (2)를 만족하도록 배정되었으므로, 도 11과 같이 데이터 그룹들(DQ0_Group~DQ7_Group)에 그룹 인디케이터들을 배정하면 메모리(800)를 포함하는 시스템의 안정성을 크게 향상시킬 수 있다.
본 발명의 기술사상은 상기 바람직한 실시예에 따라 구체적으로 기술되었으나, 상기한 실시예는 그 설명을 위한 것이며 그 제한을 위한 것이 아님을 주의하여야 한다. 또한, 본 발명의 기술분야의 전문가라면 본 발명의 기술사상의 범위 내에서 다양한 실시예가 가능함을 알 수 있을 것이다.
800: 메모리
DQ0~DQ7: 데이터 패드들
811~818: 데이터 입/출력 회로들
820: ECC 블록
830: 메모리 코어

Claims (17)

  1. 각각 K비트 데이터를 포함하는 N개 데이터 그룹들을 포함하는 메세지를 이용해 M비트 에러 정정 코드를 생성하는 에러 정정 코드 생성 회로 -K, N 및 M은 양의 정수-;
    상기 N개 데이터 그룹과 상기 에러 정정 코드를 저장하는 N+1개 셀 영역들을 포함하는 메모리 코어; 및
    상기 메모리 코어로부터 리드된 상기 에러 정정 코드를 이용해 상기 메모리 코어로부터 리드된 상기 N개 데이터 그룹들의 에러를 정정하는 에러 정정 회로를 포함하고,
    상기 에러 정정 코드 생성 회로는 M x [(K*N)+M] 체크 메트릭스를 이용해 상기 M비트 에러 정정 코드를 생성하고,
    상기 체크 메트릭스에서 상기 메세지 부분은 상기 N개 데이터 그룹들 각각에 대응해 상기 N개의 그룹들을 구별하기 위한 N개 그룹 인디케이터 파트와, 상기 N개 데이터 그룹들 내부의 K비트 데이터를 구별하기 위한 N개 비트 인디케이터 파트를 포함하고,
    상기 N개 그룹 인디케이터들 중 인접한 데이터 그룹들의 그룹 인디케이터들 간의 해밍 디스턴스(hamming distance) 차이는 1과 M/2 중 하나인
    메모리.
  2. 제 1항에 있어서,
    상기 N개 그룹 인디케이터들 중 인접한 데이터 그룹들은 상기 셀 영역들 중 인접한 셀 영역들에 저장되는 데이터 그룹들인
    메모리.
  3. 제 2항에 있어서,
    상기 인접한 셀 영역들은
    적어도 하나 이상의 서브 워드라인 드라이버를 공유하는
    메모리.
  4. 제 1항에 있어서,
    상기 N개 그룹 인디케이터들 각각은 (M/2) x k의 사이즈를 가지고,
    상기 N개 비트 인디케이터들 각각은 (M/2) x k의 사이즈를 가지는
    메모리.
  5. 제 1항에 있어서,
    상기 N개 데이터 그룹들은
    데이터 그룹들마다 서로 다른 데이터 패드를 통해 상기 메모리로 입력되는
    메모리.
  6. 각각 K비트 데이터를 포함하는 N개 데이터 그룹들을 수신하는 단계 -K 및 N은 양의 정수-;
    상기 N개 데이터 그룹들을 메시지로 이용해 M비트 에러 정정 코드를 생성하는 단계 - M은 양의 정수-; 및
    메모리 코어의 N+1개 셀 영역들에 상기 N개 데이터 그룹들과 상기 에러 정정 코드를 저장하는 단계를 포함하고,
    상기 에러 정정 코드의 생성하는 단계에서는 M x [(K*N)+M] 체크 메트릭스를 이용해 상기 M비트 에러 정정 코드를 생성하고,
    상기 체크 메트릭스에서 상기 메세지 부분은 상기 N개 데이터 그룹들 각각에 대응해 상기 N개의 그룹들을 구별하기 위한 N개 그룹 인디케이터 파트와, 상기 N개 데이터 그룹들 내부의 K비트 데이터를 구별하기 위한 N개 비트 인디케이터 파트를 포함하고,
    상기 N개 그룹 인디케이터들 중 인접한 데이터 그룹들의 그룹 인디케이터들 간의 해밍 디스턴스(hamming distance) 차이는 1과 M/2 중 하나인
    메모리의 동작 방법.
  7. 제 6항에 있어서,
    상기 N개 그룹 인디케이터들 중 인접한 데이터 그룹들은 상기 셀 영역들 중 인접한 셀 영역들에 저장되는 데이터 그룹들인
    메모리의 동작 방법.
  8. 제 7항에 있어서,
    상기 인접한 셀 영역들은
    적어도 하나 이상의 서브 워드라인 드라이버를 공유하는
    메모리의 동작 방법.
  9. 제 6항에 있어서,
    상기 N개 그룹 인디케이터들 각각은 (M/2) x k의 사이즈를 가지고,
    상기 N개 비트 인디케이터들 각각은 (M/2) x k의 사이즈를 가지는
    메모리의 동작 방법.
  10. 제 6항에 있어서,
    상기 수신하는 단계에서
    상기 N개 데이터 그룹들은 데이터 그룹들마다 서로 다른 데이터 패드를 통해 수신되는
    메모리의 동작 방법.
  11. 제 6항에 있어서,
    상기 메모리 코어로부터 리드된 상기 에러 정정 코드를 이용해 상기 메모리 코어로부터 리드된 상기 N개 데이터 그룹들의 에러를 정정하는 단계
    를 더 포함하는 메모리의 동작 방법.
  12. 각각 16비트의 데이터를 포함하는 8개 데이터 그룹들을 포함하는 메세지를 이용해 8비트 에러 정정 코드를 생성하는 에러 정정 코드 생성 회로;
    상기 8개 데이터 그룹과 상기 에러 정정 코드를 저장하는 9개 셀 영역들을 포함하는 메모리 코어; 및
    상기 메모리 코어로부터 리드된 상기 에러 정정 코드를 이용해 상기 메모리 코어로부터 리드된 상기 8개 데이터 그룹들의 에러를 정정하는 에러 정정 회로를 포함하고,
    상기 에러 정정 코드 생성 회로는 8 x 136 체크 메트릭스를 이용해 상기 8비트 에러 정정 코드를 생성하고,
    상기 체크 메트릭스에서 상기 메세지 부분은 상기 8개 데이터 그룹들 각각에 대응해 상기 8개의 그룹들을 구별하기 위한 8개 그룹 인디케이터 파트와, 상기 8개 데이터 그룹들 내부의 16비트 데이터를 구별하기 위한 8개 비트 인디케이터 파트를 포함하고,
    상기 8개 그룹 인디케이터들 중 인접한 데이터 그룹들의 그룹 인디케이터들 간의 해밍 디스턴스(hamming distance) 차이는 1과 4 중 하나인
    메모리.
  13. 제 12항에 있어서,
    상기 8개 그룹 인디케이터들 중 인접한 데이터 그룹들은 상기 셀 영역들 중 인접한 셀 영역들에 저장되는 데이터 그룹들인
    메모리.
  14. 제 13항에 있어서,
    상기 인접한 셀 영역들은
    적어도 하나 이상의 서브 워드라인 드라이버를 공유하는
    메모리.
  15. 제 12항에 있어서,
    상기 8개 그룹 인디케이터들 각각은 4 x 16의 사이즈를 가지고,
    상기 8개 비트 인디케이터들 각각은 4 x 16의 사이즈를 가지는
    메모리.
  16. 제 12항에 있어서,
    상기 8개 데이터 그룹들은
    데이터 그룹들마다 서로 다른 데이터 패드를 통해 상기 메모리로 입력되는
    메모리.
  17. 각각 K비트 데이터를 포함하는 N개 데이터 그룹들을 포함하는 메세지를 이용해 M비트 에러 정정 코드를 생성하는 에러 정정 코드 생성 회로 -K, N 및 M은 양의 정수-;
    상기 N개 데이터 그룹과 상기 에러 정정 코드를 저장하는 N+1개 셀 영역들을 포함하는 메모리 코어; 및
    상기 메모리 코어로부터 리드된 상기 에러 정정 코드를 이용해 상기 메모리 코어로부터 리드된 상기 N개 데이터 그룹들의 에러를 정정하는 에러 정정 회로를 포함하고,
    상기 에러 정정 코드 생성 회로는 M x [(K*N)+M] 체크 메트릭스를 이용해 상기 M비트 에러 정정 코드를 생성하고,
    상기 체크 메트릭스에서 상기 메세지 부분은 상기 N개 데이터 그룹들 각각에 대응해 상기 N개의 그룹들을 구별하기 위한 N개 그룹 인디케이터 파트와, 상기 N개 데이터 그룹들 내부의 K비트 데이터를 구별하기 위한 N개 비트 인디케이터 파트를 포함하고,
    상기 N개 그룹 인디케이터들 중 인접한 데이터 그룹들의 그룹 인디케이터들의 합은 상기 N개 그룹 인디케이터들 중 그 어떤 것과도 상이한
    메모리.
KR1020200150006A 2020-06-22 2020-11-11 메모리 및 메모리의 동작 방법 KR20210157829A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110631857.3A CN114121128A (zh) 2020-06-22 2021-06-07 存储器和存储器的操作方法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063042193P 2020-06-22 2020-06-22
US63/042,193 2020-06-22
US202063094415P 2020-10-21 2020-10-21
US63/094,415 2020-10-21

Publications (1)

Publication Number Publication Date
KR20210157829A true KR20210157829A (ko) 2021-12-29

Family

ID=79023525

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200150006A KR20210157829A (ko) 2020-06-22 2020-11-11 메모리 및 메모리의 동작 방법

Country Status (3)

Country Link
US (1) US11442810B2 (ko)
KR (1) KR20210157829A (ko)
CN (1) CN114121128A (ko)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102204391B1 (ko) * 2014-08-18 2021-01-18 삼성전자주식회사 공유 가능한 ecc 셀 어레이를 갖는 메모리 장치
US10949298B2 (en) 2018-09-21 2021-03-16 Taiwan Semiconductor Manufacturing Company, Limited System and method of reducing logic for multi-bit error correcting codes
KR102579014B1 (ko) 2018-11-06 2023-09-15 삼성전자주식회사 에러 정정 코드 디코더, 반도체 메모리 장치 및 메모리 시스템

Also Published As

Publication number Publication date
US20210397516A1 (en) 2021-12-23
US11442810B2 (en) 2022-09-13
CN114121128A (zh) 2022-03-01

Similar Documents

Publication Publication Date Title
US7370264B2 (en) H-matrix for error correcting circuitry
US6938193B1 (en) ECC circuit-containing semiconductor memory device and method of testing the same
KR20040064259A (ko) 컴포넌트 실패를 검출 및 보정하고, 컴포넌트 실패 후에단일 비트 에러보정을 제공하는 에러검출/보정 코드
US7996748B2 (en) ECC for single 4-bits symbol correction of 32 symbols words with 22 maximum row weight matrix
EP0220876A2 (en) Self-checking error-correcting encoder/decoder
KR102231294B1 (ko) 복수의 레벨의 오류 정정을 제공하는 정보 처리 장치 및 시스템, 및 그것의 동작 방법
IE71652B1 (en) Byte write error method and apparatus
US5751745A (en) Memory implemented error detection and correction code with address parity bits
JP2023512892A (ja) 比較システム
US6463563B1 (en) Single symbol correction double symbol detection code employing a modular H-matrix
US20230368860A1 (en) Memory and operation method of memory
US7085988B1 (en) Hashing system utilizing error correction coding techniques
US6460157B1 (en) Method system and program products for error correction code conversion
US20230103255A1 (en) Error correction of memory
KR20210157829A (ko) 메모리 및 메모리의 동작 방법
US3504340A (en) Triple error correction circuit
US11024402B2 (en) Memory system and operation method thereof
US4868829A (en) Apparatus useful for correction of single bit errors in the transmission of data
US20220368351A1 (en) Memory and operation method of memory
US9520899B2 (en) Method for generating a maximized linear correcting code, method and device for decoding such a code
US10191807B2 (en) Memory systems and operation method thereof
US20230282302A1 (en) Memory and memory system inclduing the memory
US20240126646A1 (en) Error processing circuit, memory and operation method of the memory
KR20240052583A (ko) 에러 처리 회로, 메모리 및 메모리의 동작 방법
KR20130087931A (ko) 패리티 체크 행렬 생성 방법, 이를 이용한 오류 정정 방법 및 장치, 오류 정정 장치용 디코더 그리고 오류 정정 장치를 포함하는 메모리 및 전자장치