KR20240052583A - 에러 처리 회로, 메모리 및 메모리의 동작 방법 - Google Patents

에러 처리 회로, 메모리 및 메모리의 동작 방법 Download PDF

Info

Publication number
KR20240052583A
KR20240052583A KR1020220150709A KR20220150709A KR20240052583A KR 20240052583 A KR20240052583 A KR 20240052583A KR 1020220150709 A KR1020220150709 A KR 1020220150709A KR 20220150709 A KR20220150709 A KR 20220150709A KR 20240052583 A KR20240052583 A KR 20240052583A
Authority
KR
South Korea
Prior art keywords
parity
matrix
data
syndrome
circuit
Prior art date
Application number
KR1020220150709A
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 US18/169,880 priority Critical patent/US20240126646A1/en
Publication of KR20240052583A publication Critical patent/KR20240052583A/ko

Links

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/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/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
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Quality & Reliability (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Error Detection And Correction (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)

Abstract

에러 처리 회로는, 인코딩 동작시에, 제1H매트릭스와 업스트림 데이터를 연산해 부분 제1패리티를 생성하는 제1H매트릭스 연산 회로; 상기 인코딩 동작시에, 제2H매트릭스와 상기 업스트림 데이터를 연산해 제2패리티를 생성하는 제2H매트릭스 연산 회로; 및 상기 인코딩 동작시에, 상기 부분 제1패리티와 상기 제2패리티를 합해 제1패리티를 생성하는 패리티 연산 회로를 포함할 수 있다.

Description

에러 처리 회로, 메모리 및 메모리의 동작 방법 {ERROR PROCESSING CIRCUIT, MEMORY AND OPERATION METHOD OF MEMORY}
본 특허 문헌은 메모리에 관한 것으로, 특히 메모리의 에러 정정과 관련된 것이다.
반도체 메모리 산업 초기에는 반도체 제조 프로세스를 통과한 메모리에서 불량 메모리 셀이 하나도 존재하지 않는 오리지날 굿 다이(original good die)가 웨이퍼(wafer) 상에 다수 분포하였다. 그러나 메모리의 용량이 점차로 증가하면서 불량 메모리 셀이 하나도 존재하지 않는 메모리를 만드는 것이 어려워졌으며, 현재에는 이러한 메모리가 제조될 확률은 없다고 봐도 무방하다. 이러한 상황을 타개하기 위한 하나의 방편으로 메모리의 불량 메모리 셀들을 리던던시 메모리 셀들로 리페어하는 방법이 사용되고 있다.
그리고 또 하나의 방편으로 메모리 시스템에서 에러를 정정하는 에러 정정 회로(ECC 회로)를 사용해 메모리 셀에서 발생하는 에러 및 메모리 시스템의 리드 및 라이트 과정에서 데이터가 전송되면서 발생하는 에러를 정정하고 있다.
본 발명의 실시예들은, 에러를 정정하는 에러 처리 회로를 효율적으로 설계하는 기술을 제공할 수 있다.
본 발명의 일실시예에 따른 에러 처리 회로는, 인코딩 동작시에, 제1H매트릭스와 업스트림 데이터를 연산해 부분 제1패리티를 생성하는 제1H매트릭스 연산 회로; 상기 인코딩 동작시에, 제2H매트릭스와 상기 업스트림 데이터를 연산해 제2패리티를 생성하는 제2H매트릭스 연산 회로; 및 상기 인코딩 동작시에, 상기 부분 제1패리티와 상기 제2패리티를 합해 제1패리티를 생성하는 패리티 연산 회로를 포함할 수 있다.
본 발명의 다른 실시예에 따른 에러 처리 회로는, 디코딩 동작시에, 제1H매트릭스와 다운스트림 데이터를 연산해 부분 제1다운스트림 패리티를 생성하는 제1H매트릭스 연산 회로; 상기 디코딩 동작시에, 제2H매트릭스와 상기 다운스트림 데이터를 연산해 제2다운스트림 패리티를 생성하는 제2H매트릭스 연산 회로; 상기 디코딩 동작시에, 제1패리티와 제2패리티를 합해 복원 부분 제1패리티를 생성하는 패리티 복원 회로; 상기 디코딩 동작시에, 상기 복원 부분 제1패리티와 상기 부분 제1다운스트림 패리티를 합산해 제1신드롬을 생성하는 제1신드롬 연산 회로; 상기 디코딩 동작시에, 상기 디코딩 동작을 위해 전달된 제2패리티와 상기 제2다운스트림 패리티를 합산해 제2신드롬을 생성하는 제2신드롬 연산 회로; 및 상기 제1신드롬과 상기 제2신드롬을 이용해 상기 다운스트림 데이터의 에러를 정정하는 정정 회로를 포함할 수 있다.
본 발명의 또 다른 실시예에 따른 메모리는, 라이트 동작시에, 제1H매트릭스와 라이트 데이터를 연산해 부분 제1패리티를 생성하는 제1H매트릭스 연산 회로; 상기 라이트 동작시에, 제2H매트릭스와 상기 라이트 데이터를 연산해 제2패리티를 생성하는 제2H매트릭스 연산 회로; 상기 라이트 동작시에, 상기 부분 제1패리티와 상기 제2패리티를 합해 제1패리티를 생성하는 패리티 연산 회로; 및 라이트 동작시에 상기 라이트 데이터, 상기 제1패리티 및 상기 제2패리티를 저장하는 메모리 코어를 포함할 수 있다.
본 발명의 또 다른 실시예에 따른 메모리의 동작 방법은, 라이트 데이터를 수신하는 단계; 제1H매트릭스와 상기 라이트 데이터를 행렬곱 연산해 부분 제1패리티를 생성하는 단계; 제2H매트릭스와 상기 라이트 데이터를 행렬곱 연산해 제2패리티를 생성하는 단계; 상기 부분 제1라이트 패리티와 상기 제2패리티를 합해 제1패리티를 생성하는 단계; 및 상기 라이트 데이터, 상기 제1패리티 및 상기 제2패리티를 메모리 코어에 저장하는 단계를 포함할 수 있다.
본 발명의 실시예들에 따르면, 에러 처리 회로를 효율적으로 설계할 수 있다.
도 1은 본 발명의 일실시예에 따른 에러 처리 회로(100)를 도시한 도면.
도 2는 에러 처리 회로(100)가 사용하는 H매트릭스의 일 예를 도시한 도면.
도 3은 에러 처리 회로(100)가 도 2의 H매트릭스를 이용해 에러 정정 코드(ECC)를 생성하는 과정을 설명하기 위한 도면.
도 4는 수학식 1~4를 행렬 연산으로 표현한 도면.
도 5는 에러 처리 회로(100)가 도 2의 H매트릭스를 이용해 다운스트림 데이터(DATA')의 에러를 정정하기 위해 신드롬(S0~S3)을 생성하는 과정을 설명하기 위한 도면.
도 6은 수학식 5~8을 행렬 연산으로 표현한 도면.
도 7은 에러 처리 회로(100)가 사용할 수 있는 또 다른 H매트릭스의 일 예를 도시한 도면.
도 8은 도 7의 H매트릭스의 에러 정정 코드(ECC)의 일부(E8~E15)에 대응하는 부분을 단위 행렬 형태가 아니도록 변형한 H매트릭스를 도시한 도면.
도 9의 H매트릭스는 로우 연산(row operation)을 통해 도 8의 H매트릭스의 에러 정정 코드(ECC)에 대응하는 부분을 단위 행렬 형태로 변경한 것을 도시한 도면.
도 10은 도 9의 에러 정정 코드(ECC, E0~E15)를 생성하는 과정을 행렬 곱으로 표현한 도면.
도 11은 도 10을 나누어 도시한 도면.
도 12는 도 11을 다르게 표현한 도면.
도 13은 도 1의 에러 처리 회로(100)의 상세 실시예 구성도.
도 14는 도 13의 에러 처리 회로(100)의 인코딩 동작을 설명하기 위한 도면.
도 15는 도 13의 에러 처리 회로(100)의 디코딩 동작을 설명하기 위한 도면.
도 16은 본 발명의 일실시예에 따른 메모리(1600)의 구성도.
이하, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 상세히 설명하기 위하여, 본 발명의 가장 바람직한 실시예를 첨부 도면을 참조하여 설명하기로 한다. 본 발명을 설명함에 있어서, 본 발명의 요지와 무관한 공지의 구성은 생략될 수 있다. 각 도면의 구성요소들에 참조 번호를 부가함에 있어서, 동일한 구성요소들에 한해서는 비록 다른 도면 상에 표시되더라도 가능한 한 동일한 번호를 가지도록 하고 있음에 유의하여야 한다.
도 1은 본 발명의 일실시예에 따른 에러 처리 회로(100)를 도시한다.
에러 처리 회로(100)는 인코딩(encoding) 동작시에 업스트림(upstream) 데이터(DATA)를 이용해 에러 정정 코드(ECC)를 생성할 수 있다. 즉, 에러 처리 회로(100)는 업스트림 데이터(DATA)를 인코딩해 데이터(DATA)의 에러를 정정하기 위한 에러 정정 코드(ECC)를 생성할 수 있다. 인코딩 동작시에는 에러 정정 코드(ECC)가 생성될 뿐 에러의 정정 동작이 수행되지는 않으므로, 인코딩 동작시에 에러 처리 회로(100)로 입력되는 데이터(DATA)와 에러 처리 회로(100)로부터 출력되는 데이터(DATA')가 동일할 수 있다. 여기서 업스트림 데이터(DATA)는 에러 정정 코드(ECC)의 생성을 위해 에러 처리 회로(100)로 입력되는 데이터를 의미할 수 있다. 에러 처리 회로(100)가 메모리에 적용될 경우에 업스트림 데이터(DATA)는 메모리 콘트롤러(memory controller)로부터 전달된 라이트 데이터(write data)일 수 있으며, 업스트림 데이터(DATA), 즉 라이트 데이터, 를 이용해 에러 정정 코드(ECC)를 생성하는 인코딩 동작은 메모리의 라이트 동작시에 수행될 수 있다.
에러 처리 회로(100)는 디코딩(decoding) 동작시에 에러 정정 코드(ECC)를 이용해 다운스트림(downstream) 데이터(DATA')의 에러를 정정할 수 있다. 여기서 에러를 정정한다는 것은 에러 정정 코드(ECC)를 이용해 데이터(DATA')의 에러를 검출하고 에러가 검출된 경우에 이를 정정한다는 것을 의미할 수 있다. 여기서 다운스트림 데이터(DATA')는 에러 정정 동작을 위해 에러 처리 회로9100)로 입력되는 데이터를 의미할 수 있다. 에러 처리 회로(100)가 메모리에 적용될 경우에 다운스트림 데이터(DATA')는 메모리 셀들로부터 리드된 데이터일 수 있으며, 메모리 셀들로부터 리드된 에러 정정 코드(ECC)를 이용해 메모리 셀들로부터 리드된 다운스트림 데이터(DATA'), 즉 리드 데이터, 의 에러를 정정하는 동작은 메모리의 리드 동작시에 수행될 수 있다. 디코딩 동작시에 에러 처리 회로(100)에 의해 데이터(DATA')의 에러가 발견되고 정정된 경우에 에러 처리 회로(100)로부터 출력되는 데이터(DATA), 즉 에러 정정된 데이터, 는 에러 처리 회로(100)로 입력된 데이터(DATA')와 다를 수 있다.
에러 처리 회로(100)는 체크 매트릭스(check matrix)라고도 불리는 H매트릭스를 이용해 에러 정정 코드(ECC)를 생성하고, 에러 정정 코드(ECC)를 이용해 에러를 정정할 수 있는데, 이하에서는 이에 대해 알아보기로 한다.
도 2는 에러 처리 회로(100)가 사용하는 H매트릭스의 일 예를 도시한다. 여기서는 설명의 편의를 위해 데이터(DATA)가 4비트(D0~D3)이고 에러 정정 코드(ECC)가 4비트(E0~E3)라고 가정하기로 한다.
H매트릭스는 (에러 정정 코드의 비트수) x (데이터의 비트수 + 에러 정정 코드의 비트수)의 매트릭스로 구성될 수 있다. 여기서는 에러 정정 코드(ECC)가 4비트이고, 데이터가 4비트이므로, H매트릭스는 4 x 8 매트릭스로 구성될 수 있다. H매트릭스의 각 성분들은 1 또는 0의 값을 가질 수 있다.
H매트릭스의 컬럼 벡터들은 데이터(DATA)의 비트들(D0~D3) 및 에러 정정 코드(ECC)의 비트들(E0~E3)에 대응할 수 있다. 예를 들어, 8개의 컬럼 벡터들 중 4개의 컬럼 벡터들은 데이터(DATA)의 비트들(D0~D3)에 대응하고 4개의 컬럼 벡터들은 에러 정정 코드(ECC)의 비트들(E0~E3)에 대응할 수 있다. 도 2에서 D1은 '1101'의 값을 가지는 컬럼 벡터에 대응하고, E2는 '0010'의 값을 가지는 컬럼 벡터에 대응한다는 것을 확인할 수 있다.
도 3은 에러 처리 회로(100)가 도 2의 H매트릭스를 이용해 에러 정정 코드(ECC)를 생성하는 과정을 설명하기 위한 도면이다.
에러 처리 회로(100)는 H매트릭스의 컬럼 벡터들 각각을 대응하는 비트들과 곱셈한 후에, 로우들 각각의 합이 0 (즉, 짝수)이 될 수 있도록 에러 정정 코드(ECC)를 생성할 수 있다.
즉, 하기 4개의 수학식이 모두 만족될 수 있도록 에러 정정 코드(ECC)가 생성될 수 있다.
[수학식 1]
1*D0 + 1*D1 + 1*D2 + 0*D3 + 1*E0 + 0*E1 + 0*E2 + 0*E3 = 0
[수학식 2]
1*D0 + 1*D1 + 0*D2 + 1*D3 + 0*E0 + 1*E1 + 0*E2 + 0*E3 = 0
[수학식 3]
1*D0 + 0*D1 + 1*D2 + 1*D3 + 0*E0 + 0*E1 + 1*E2 + 0*E3 = 0
[수학식 4]
0*D0 + 1*D1 + 1*D2 + 1*D3 + 0*E0 + 0*E1 + 0*E2 + 1*E3 = 0
참고로, 상술한 식들 및 이하의 설명에서 덧셈은 배타적 논리합(exclusive OR)을 의미한다. 따라서 덧셈의 결과는 1의 개수가 짝수이면 0 홀수이면 1인 방식으로 수행될 수 있다. 예를 들어, 1+1+0+1 = 1이고, 0+1+1+0 = 0일 수 있다.
도 4는 수학식 1~4를 행렬 연산으로 표현한 도면이다.
도 4의 (a)를 참조하면, 수학식 1~4는 4 x 8의 H매트릭스와 8 x 1 매트릭스로 표현한 데이터(D0~D3)와 에러 정정 코드(E0~E3)를 행렬곱(matrix multiplication) 연산하는 것으로 표현될 수 있다. 4 x 8의 H매트릭스에서 에러 정정 코드(ECC)에 대응하는 부분은 4 x 4 단위 행렬(Identity matrix)이라는 것을 확인할 수 있다.
H매트릭스에서 에러 정정 코드(ECC)에 대응하는 부분이 단위 행렬이므로, 도 4의 (a)는 도 4의 (b)와 같이 표현될 수 있다. 도 4의 (b)를 참조하면, 4 x 4의 H매트릭스와 4 x 1 매트릭스로 표현한 데이터(D0~D3)를 행렬곱 연산하면, 에러 정정 코드(E0~E3)가 생성되는 것을 확인할 수 있다. 즉, 도 2와 같이 H매트릭스에서 에러 정정 코드(E0~E3) 부분을 단위 행렬로 구성하는 경우에는, 도 4의 (b)와 같이, H매트릭스를 단순화하고, 단순화된 H매트릭스와 데이터(D0~D3)만 연산하는 것에 의해 에러 정정 코드(E0~E3)가 생성될 수 있다.
도 5는 에러 처리 회로(100)가 도 2의 H매트릭스를 이용해 다운스트림 데이터(DATA')의 에러를 정정하기 위해 신드롬(S0~S3)을 생성하는 과정을 설명하기 위한 도면이다.
에러 처리 회로(100)는 H매트릭스의 컬럼 벡터들 각각을 에러 정정 대상 데이터(DATA'), 즉 다운스트림 데이터,와 에러 정정 코드(ECC)의 비트들과 곱셈한 후에, 로우들 별로 합해 신드롬(S0~S3)을 생성할 수 있다.
신드롬(S0~S3)의 생성 과정을 수식으로 표현하면 하기의 수학식 5-9와 같아질 수 있다.
[수학식 5]
1*D0' + 1*D1' + 1*D2' + 0*D3' + 1*E0 + 0*E1 + 0*E2 + 0*E3 = S0
[수학식 6]
1*D0' + 1*D1' + 0*D2' + 1*D3' + 0*E0 + 1*E1 + 0*E2 + 0*E3 = S1
[수학식 7]
1*D0' + 0*D1' + 1*D2' + 1*D3' + 0*E0 + 0*E1 + 1*E2 + 0*E3 = S2
[수학식 8]
0*D0' + 1*D1' + 1*D2' + 1*D3' + 0*E0 + 0*E1 + 0*E2 + 1*E3 = S3
도 6은 수학식 5~8을 행렬 연산으로 표현한 도면이다.
도 6의 (a)를 참조하면, 수학식 5~8은 4 x 8의 H매트릭스와 8 x 1 매트릭스로 표현한 데이터(D0'~D3')와 에러 정정 코드(ECC)를 행렬곱 연산하는 것으로 표현될 수 있다.
도 6의 (a)의 H매트릭스에서 에러 정정 코드(E0~E3)에 대응하는 부분이 단위 행렬이므로, 도 6의 (a)는 도 6의 (b)와 같이 표현될 수 있다. 도 6의 (b)를 참조하면, 4 x 4 매트릭스와 4 x 1 매트릭스로 표현한 데이터(D0'~D3')를 행렬곱 연산한 후에, 에러 정정 코드(E0~E3)를 더하는 것에 의해 신드롬(S0~S3)이 생성될 수 있다.
생성된 신드롬(S0~S3)은 에러의 유무 및 데이터(D0'~D3') 및 에러 정정 코드(E0~E3)에서 에러가 존재하는 부분의 위치를 나타낼 수 있다. 신드롬(S0~S3)의 값이 '0000'인 경우에는 데이터(D0'~D3')와 에러 정정 코드(E0~E3)에 에러가 존재하지 않는다는 것을 의미할 수 있다.
신드롬(S0~S3)의 값이 '0000'이 아닌 경우에는 에러가 존재한다는 것을 이미할 수 있다. 이때, 신드롬(S0~S3)의 값은 데이터(D0'~D3') 및 에러 정정 코드(E0~E3)에서 에러가 존재하는 비트를 나타낼 수 있다. 데이터(D0'~D3')와 에러 정정 코드 중 H매트릭스(도 5)의 컬럼 벡터의 값이 신드롬(S0~S3)의 값과 동일한 비트가 바로 에러가 존재하는 비트일 수 있다. 예를 들어, 신드롬(S0~S3)의 값이 '1101'이라면 H매트릭스(도 5)에서 컬럼 벡터가 '1101'인 부분은 데이터의 비트(D1')이므로 데이터의 비트(D1')를 반전하면 에러가 정정될 수 있다. 또한, 신드롬(S0~S3)의 값이 '1000'이라면 H매트릭스(도 5)에서 컬럼 벡터가 '1000'인 부분은 에러 정정 코드의 비트(E0)이므로 에러 정정 코드의 비트(E0)를 반전하면 에러가 정정될 수 있다. 다만, 많은 경우에 에러 정정 코드(E0~E3)의 에러는 정정할 필요가 없으므로, 예를 들어 메모리의 리드 동작시에 에러 정정 코드(E0~E3)는 에러의 정정을 위해서 사용될 뿐 메모리 외부로 출력되지는 않음, 에러 정정 코드(E0~E3)의 에러는 정정되지 않을 수도 있다.
신드롬(S0~S3)의 값이 '0000'이 아니고 신드롬(S0~S3)의 값이 데이터(D0'~D3')와 에러 정정 코드(E0~E3)의 컬럼 벡터들 중 그 어느 것과도 일치하지 않는 경우에는, 에러가 존재하지만 에러 처리 회로(100)가 에러를 정정할 수 없음을 의미할 수 있다. 예를 들어, 신드롬(S0~S3)의 값이 '1100'인 경우에는 데이터(D0'~D3')와 에러 정정 코드(E0~E3)의 컬럼 벡터들 중 '1100'이 존재하지 않으므로, 에러 처리 회로(100)의 에러 정정 능력을 넘어서는 에러가 발생했다는 것을 의미할 수 있다.
도 7은 에러 처리 회로(100)가 사용할 수 있는 또 다른 H매트릭스의 일 예를 도시한다. 여기서는 데이터(DATA)가 32비트(D0~D31)이고 에러 정정 코드(ECC)가 16비트(E0~E15)라고 가정하기로 한다.
도 7을 참조하면, H매트릭스는 16 x 48 사이즈의 매트릭스일 수 있다. 그리고 H매트릭스의 에러 정정 코드 부분은 단위 행렬인 것을 확인할 수 있다. 가독성을 위해 H매트릭스를 8 x 8 사이즈씩 나누어 굵은 선으로 묶었다.
에러 처리 회로(100)가 도 7의 H매트릭스를 사용하는 경우에, 데이터(DATA')의 비트(D12')에 에러가 존재하는 경우에 신드롬(S0~S15)의 값은 '0000100000000100'으로 생성되고, 신드롬(S0~S15)의 값에 따라 에러 처리 회로(100)가 데이터(DATA')의 비트(D12')를 반전해 에러를 정정할 것이다.
만약에, 에러 정정 코드(ECC)의 비트(E0)와 비트(E9)에서 에러가 존재하는 경우에, 신드롬(S0~S15)의 값은 비트(E0)의 컬럼 벡터인 '1000000000000000'과 비트(E9)의 컬럼 벡터인 '0000000001000000'을 합산한 값인 '1000000001000000'으로 생성될 것이다. 신드롬(S0~S15)이 '1000000001000000'으로 생성되면, 에러 처리 회로(100)는 컬럼 벡터가 '1000000001000000'인 데이터(DATA')의 비트(D8')를 반전시키게 된다.
즉, 도 7의 H 매트릭스를 사용하는 경우에 에러 처리 회로(100)는 에러 정정 동작시에, 에러 정정 코드(ECC)의 비트(E0)와 비트(E9)에 에러가 존재하면, 에러가 없는 데이터(DATA')의 비트(D8')를 반전시키는 오정정(miscorrection)을 하게 된다. 에러 처리 회로(100)의 오정정이 발생하면 데이터(DATA')의 에러가 줄어들지 않고 오히려 데이터(DATA')의 에러가 증가할 수 있다.
도 8은 도 7의 H매트릭스의 에러 정정 코드(ECC)의 일부(E8~E15)에 대응하는 부분을 단위 행렬 형태가 아니도록 변형한 H매트릭스를 도시한다.
도 8과 같은 H매트릭스를 사용할 경우에, 에러 정정 코드(ECC)의 비트(E0)와 비트(E9)에서 에러가 존재하는 경우에, 신드롬(S0~S15)의 값은 비트(E0)의 컬럼 벡터인 '1000000000000000'과 비트(E9)의 컬럼 벡터인 '0100000001000000'을 합산한 값인 '1100000001000000'으로 생성될 것이다. 이 경우에 데이터(DATA')와 에러 정정 코드(ECC)의 컬럼 벡터들 중 '1100000001000000'은 존재하지 않으므로, 아무런 에러도 정정되지 않을 수 있다. 즉, 오정정에 의해 데이터(DATA')의 에러가 증가하는 현상이 발생하지 않을 수 있다.
즉, H매트릭스에서 에러 정정 코드(ECC)에 대응하는 부분을 단위 행렬 형태가 아닌 다른 형태로 변경하는 것에 의해, 오정정의 발생을 줄일 수 있다. 이러한 효과는 데이터(DATA')의 비트수가 클수록 더욱 효과를 발휘할 수 있다. 예를 들어, 데이터(DATA')의 비트수가 256비트와 같이 클수록 H매트릭스에서 에러 정정 코드(ECC)에 대응하는 부분을 단위 행렬이 아닌 형태로 변경하는 것에 의해 오정정의 발생을 줄이는 효과가 커질 수 있다.
H매트릭스에서 에러 정정 코드(ECC)에 대응하는 부분을 단위 행렬 형태로 하는 경우에는, 도 4의 (a)에서 (b)로의 변경과 같은 에러 정정 코드(ECC) 생성 과정의 단순화가 가능하고, 도 6의 (a)에서 (b)로의 변경과 같은 신드롬 생성 과정의 단순화가 가능할 수 있다. 또한, 인코딩 과정(즉 에러 정정 코드의 생성 과정)과 과 디코딩 과정(에러 정정을 위한 신드롬 생성 과정)에서 동일한 형태의 행렬곱 연산이 수행되기 때문에 인코딩을 위한 회로와 디코딩을 위한 회로의 공유도 가능할 수 있다. 즉, H매트릭스에서 에러 정정 코드(ECC)에 대응하는 부분을 단위 행렬 형태로 하는 것에 의해 계산을 단순화하고 계산을 위한 에러 처리 회로(100)의 회로 면적을 줄일 수 있다.
도 9의 H매트릭스는 로우 연산(row operation)을 통해 도 8의 H매트릭스의 에러 정정 코드(ECC)에 대응하는 부분을 단위 행렬 형태로 변경한 것이다.
도 9의 H매트릭스를 사용할 경우에는 앞서 설명한 에러 정정 코드(ECC)에 대응하는 부분이 단위 행렬 형태인 것에서 오는 이점을 누릴 수 있다. 그런데, 도 9의 H매트릭스는 도 8의 H매트릭스 대비 '1'의 개수가 월등히 많아진 것을 확인할 수 있다. H매트릭스에서 '1'의 개수가 많을수록 더욱 많은 연산이 필요하다는 것을 의미하며, 이는 곧 에러 처리 회로(100)의 면적이 커진다는 것을 의미할 수 있다.
도 9의 H매트릭스를 이용해 에러 정정 코드(ECC, E0~E15)를 생성하는 과정을 수식으로 나타내면 도 10의 행렬 곱으로 표현될 수 있다.
도 10에서 에러 정정 코드(ECC)의 비트들(E0~E7)을 생성하기 위해 사용되는 행렬 곱은 도 11의 (a)와 같이 나타낼 수 있으며, 도 10에서 에러 정정 코드(ECC)의 비트들(E8~E15)을 생성하기 위해 사용되는 행렬 곱은 도 11의 (b)와 같이 나타낼 수 있다.
도 11의 (a)를 살펴보면, 도 11의 (a)에서 사용되는 H매트릭스는 도 7의 H매트릭스의 데이터(DATA) 부분의 16 x 32 매트릭스에서 상단의 8 x 32 매트릭스와 하단의 8 x 32 매트릭스를 더한 것과 동일하다는 것을 확인할 수 있다.
즉, 도 11의 (a)와 (b)는 도 12의 (a)와 (b)와 같이 정리될 수 있다. 도 12의 (a)와 (b)를 참조하면, 도 11의 (a)와 같은 복잡한 행렬 연산이 도 12의 (a)와 같은 단순한 행렬 연산의 합으로 표현될 수 있다는 것을 확인할 수 있다. 이하에서는 도 12의 1210을 제1H매트릭스라 하고, 1220을 제2H매트릭스라 하기로 한다. 또한, 에러 정정 코드(ECC)에서 비트들(E0~E7)을 제1패리티(P0)라 하고 비트들(E8~E15)을 제2패리티(P1)라 하기로 한다.
도 13은 도 1의 에러 처리 회로(100)의 상세 실시예 구성도이다. 도 13에 도시된 에러 처리 회로(100)는 단순화된 형태의 제1H매트릭스(1210)와 제2H매트릭스(1220)를 이용해 연산 동작을 수행하면서, 보다 복잡한 형태인 도 8 및 도 9의 H매트릭스를 사용해 연산한 것과 동일한 인코딩 및 디코딩 동작을 수행할 수 있다.
도 13을 참조하면, 에러 처리 회로(100)는 제1H매트릭스 연산 회로(1310), 제2H매트릭스 연산 회로(1320), 패리티 연산 회로(1330), 패리티 복원 회로(1340), 제1신드롬 연산 회로(1350), 제2신드롬 연산 회로(1360) 및 정정 회로(1370)를 포함할 수 있다.
에러 처리 회로(100)가 에러 정정 코드(ECC = P0 + P1)를 생성하는 인코딩 동작시에, 제1H매트릭스 연산 회로(1310), 제2H매트릭스 연산 회로(1320) 및 패리티 연산 회로(1330)가 사용될 수 있다.
에러 처리 회로(100)가 에러 정정 코드(ECC= P0' + P1')를 이용해 데이터(DATA')의 에러를 정정하는 디코딩 동작시에, 제1H매트릭스 연산 회로(1310), 제2H매트릭스 연산 회로(1320), 패리티 복원 회로(1340), 제1신드롬 연산 회로(1350), 제2신드롬 연산 회로(1360) 및 정정 회로(1370)가 사용될 수 있다.
인코딩/디코딩 신호(EN/DEC)는 인코딩 동작시에 활성화되고, 디코딩 동작시에 비활성화되어 인코딩 동작과 디코딩 동작을 구분하기 위한 신호일 수 있다. 인코딩 동작시에 에러 처리 회로(100)에 의해서 생성되는 제1패리티(P0) 및 제2패리티(P1)와 디코딩 동작시에 에러 정정을 위해 에러 처리 회로(100)로 입력되는 제1패리티(P0') 및 제2패리티(P1')를 구별하기 위해 디코딩 동작시에 에러 처리 회로(100)로 입력되는 제1패리티(P0')와 제2패리티(P1')를 '로 표시했다.
도 14는 도 13의 에러 처리 회로(100)의 인코딩 동작을 설명하기 위한 도면이다. 도 14에는 도 13의 구성들 중 인코딩 동작에 사용되는 구성들을 도시했다.
제1H매트릭스 연산 회로(1310)는 인코딩/디코딩 신호(EN/DEC)가 활성화된 인코딩 동작시에, 제1H매트릭스(1210)와 업스트림 데이터(DATA)를 연산해 부분 제1패리티(p_P0)를 생성할 수 있다. 상세하게, 제1H매트릭스 연산 회로(1310)는 도 12의 (a)의 전단의 행렬곱 연산을 수행해 부분 제1패리티(p_P0)를 생성할 수 있다.
제2H매트릭스 연산 회로(1320)는 인코딩/디코딩 신호(EN/DEC)가 활성화된 인코딩 동작시에, 제2H매트릭스(1220)와 업스트림 데이터(DATA)를 연산해 제2패리티(P1)를 생성할 수 있다. 상세하게, 제2H매트릭스 연산 회로(1320)는 도 12의 (b)에 도시된 제2H매트릭스(1220)와 업스트림 데이터(DATA)의 행렬곱 연산을 수행해 제2패리티(P1 = E8~E15)를 생성할 수 있다.
패리티 연산 회로(1330)는 인코딩/디코딩 신호(EN/DEC)가 활성화된 인코딩 동작시에, 부분 제1패리티(p_P0)와 제2패리티(P1)를 합산해 제1패리티(P0)를 생성할 수 있다. 즉, 패리티 연산 회로(1330)는 도 12의 (a)의 전단인 부분 제1패리티(p_P0)와 도 12의 (a)의 후단인 제2패리티(P1)를 더해 제1패리티(P1 = E0~E7)를 생성할 수 있다. 패리티 연산 회로(1330)는 인코딩/디코딩 신호(EN/DEC)가 비활성화된 디코딩 동작시에는 비활성화되어 동작하지 않을 수 있다.
도 14를 참조하면, 에러 처리 회로(100)는 단순한 형태를 가지는 제1H매트릭스(1210)와 제2H매트릭스(1220)를 이용한 행렬곱 연산을 수행하하고 이를 더하는 것에 의해, 도 11의 (a)와 같은 복잡한 H매트릭스를 이용한 것과 동일한 제1패리티(P0)를 생성할 수 있다. 즉, 도 11의 (a)와 같은 복잡한 연산을 대신해 도 12의 (a)와 같은 단순한 연산으로 제1패리티(P0)를 생성할 수 있다.
도 15는 도 13의 에러 처리 회로(100)의 디코딩 동작을 설명하기 위한 도면이다. 도 15에는 도 13의 구성들 중 디코딩 동작에 사용되는 구성들을 도시했다.
제1H매트릭스 연산 회로(1310)는 인코딩/디코딩 신호(EN/DEC)가 비활성화된 디코딩 동작시에, 제1H매트릭스(1210)와 다운스트림 데이터(DATA')를 연산해 부분 제1다운스트림 패리티(prd_P0)를 생성할 수 있다. 제1H매트릭스 연산 회로(1310)는 디코딩 동작시에 인코딩 동작시와 동일한 행렬곱 연산을 수행하지만, 그 연산의 대상이 인코딩 동작시에는 업스트림 데이터(DATA)이고 디코딩 동작시에는 다운스트림 데이터(DATA')라는 차이점을 가진다.
제2H매트릭스 연산 회로(1320)는 인코딩/디코딩 신호(EN/DEC)가 비활성화된 디코딩 동작시에, 제2H매트릭스(1220)와 다운스트림 데이터(DATA')를 연산해 제2다운스트림 패리티(rd_P1)를 생성할 수 있다.
패리티 복원 회로(1340)는 제1패리티(P0')와 제2패리티(P1')를 합해 복원 부분 제1패리티(p_P0_restored)를 생성할 수 있다. 패리티 복원 회로(1340)로 입력된 제1패리티(P0')는 인코딩 동작시에 제1부분 패리티(p_P0)와 제2패리티(P1)가 합쳐져서 생성된 것이므로, 제1패리티(P0')와 제2패리티(P1')를 더하면(XOR 연산의 경우에 더하는 것과 빼는 것은 동일하다) 인코딩 동작시에 생성된 제1부분 패리티(p_P0)를 복원할 수 있다. 패리티 복원 회로(1340)가 생성한 복원 부분 제1패리티(p_P0_restored)가 바로 이에 해당할 수 있다. 패리티 복원 회로(1340)는 인코딩/디코딩 신호(EN/DEC)가 활성화된 인코딩 동작시에는 비활성화되어 동작하지 않을 수 있다.
제1신드롬 연산 회로(1350)는 부분 제1다운스트림 패리티(prd_P0)와 복원 부분 제1패리티(p_P0_restored)를 합산해 제1신드롬(S0~S7)을 생성할 수 있다. 부분 제1다운스트림 패리티(prd_P0)는 다운스트림 데이터(DATA')를 이용해 제1H매트릭스 연산 회로(1310)가 생성한 패리티이며, 복원 부분 제1패리티(p_P0_restored)는 업스트림 데이터(DATA)를 이용해 인코딩 동작때 생성되었던 부분 제1패리티(p_P0)를 복원한 패리티이므로, 두 패리티들(prd_P0, p_P0_restored)을 더하면 제1신드롬(S0~S7)이 생성될 수 있다. 제1신드롬 연산 회로(1350)는 인코딩/디코딩 신호(EN/DEC)가 활성화된 인코딩 동작시에는 비활성화되어 동작하지 않을 수 있다.
제2신드롬 연산 회로(1360)는 제2패리티(P1')와 제2다운스트림 패리티(rd_P1)를 합산해 제2신드롬(S8~S15)을 생성할 수 있다. 제2신드롬 연산 회로(1360)는 인코딩/디코딩 신호(EN/DEC)가 활성화된 인코딩 동작시에는 비활성화되어 동작하지 않을 수 있다.
정정 회로(1370)는 제1신드롬(S0~S7)과 제2신드롬(S8~S15)을 이용해 다운스트림 데이터(DATA')의 에러를 정정할 수 있다. 정정 회로(1370)는 제1신드롬(S0~S7)과 제2신드롬(S8~S15)의 값이 모두 0인 경우에 다운스트림 데이터(DATA')에 에러가 없다고 판단할 수 있다. 이 경우에 정정 회로(1370)로 입력되는 데이터(DATA')와 정정 회로(1370)로부터 출력되는 데이터(DATA)가 동일할 수 있다.
정정 회로(1370)는 제1신드롬(S0~S7)과 제2신드롬(S8~S15)의 값이 모두 0이 아닌 경우에, 다운스트림 데이터(DATA')에서 컬럼 벡터의 값이 제1신드롬(S0~S7)과 제2신드롬(S8~S15)의 값과 동일한 비트를 반전해 다운스트림 데이터(DATA')의 에러를 정정할 수 있다. 이때 기준이되는 H매트릭스는 제1H매트릭스(1210)와 제2H매트릭스(1220)일 수 있다. 즉, 정정 회로(1370)는 도 7의 체크 매트릭스를 기준으로 다운스트림 데이터(DATA')의 에러를 정정할 수 있다. 예를 들어, 제1신드롬(S0~S7)과 제2신드롬(S8~S15)의 값이 '0010000000010000'이라면 이와 동일한 컬럼 벡터에 대응하는 데이터(DATA')의 비트(D10')를 반전해 에러를 정정하고, 제1신드롬(S0~S7)과 제2신드롬(S8~S15)의 값이 '0100000011110001'이라면 이와 동일한 컬럼 벡터에 대응하는 데이터(DATA')의 비트(D25')를 반전해 에러를 정정할 수 있다. 정정 회로(1370)는 인코딩/디코딩 신호(EN/DEC)가 활성화된 인코딩 동작시에는 비활성화되어 동작하지 않을 수 있다.
이와 같이 에러 처리 회로(100)는 단순화된 형태의 체크 매트릭스인 제1H매트릭스(1210)와 제2H매트릭스(1220)를 이용해 행렬 연산을 수행하면서도, 복잡한 형태인 도 8 및 도 9의 H매트릭스를 이용한 것과 동일한 인코딩 및 디코딩 동작을 수행할 수 있다.
도 16은 본 발명의 일실시예에 따른 메모리(1600)의 구성도이다.
도 16을 참조하면, 메모리(1600)는 에러 처리 회로(100)와 메모리 코어(1610)를 포함할 수 있다.
에러 처리 회로(100)는 메모리(1600)의 라이트(write) 동작시에는 라이트 데이터(DATA)를 이용해 에러 정정 코드(ECC)를 생성하는 인코딩 동작을 수행할 수 있으며, 메모리(1600)의 리드(read) 동작시에는 메모리 코어(1610)로부터 리드된 에러 정정 코드(ECC)를 이용해 메모리 코어(1610)로부터 리드된 리드 데이터(DATA')의 에러를 정정할 수 있다. 에러 처리 회로(100)는 도 13과 같이 동작할 수 있다. 에러 처리 회로(100)가 메모리(1600)에 적용된 경우에, 앞서 언급된 '업스트림'이라는 용어는 '라이트'라는 용어로 대체될 수 있으며, '다운스트림'이라는 용어는 '리드'라는 용어로 대체될 수 있다.
메모리 코어(1610)는 라이트 동작시에는 라이트 데이터(DATA' = DATA, 라이트 동작시 동일함)와 에러 처리 회로(100)에 의해 생성된 에러 정정 코드(ECC)를 입력받아 저장할 수 있다. 그리고 리드 동작시에는 저장된 데이터(DATA')와 에러 정정 코드(ECC)를 에러 처리 회로(100)로 전달할 수 있다. 메모리 코어(1610)는 메모리(1600)에서 데이터가 저장되는 것을 의미하며, 데이터의 저장을 위한 다수의 메모리 셀들 및 다수의 메모리 셀들에 데이터를 라이트하고 리드하기 위한 회로들을 포함할 수 있다.
이제 메모리(1600)의 라이트 동작 및 리드 동작시에 데이터의 에러가 어떻게 처리되는지에 대해 알아보기로 한다.
라이트 동작
라이트 동작시에, 메모리 콘트롤러로부터 메모리(1600)로 라이트 데이터(DATA)가 전달되고, 라이트 데이터(DATA)는 에러 처리 회로(100)로 입력될 수 있다.
에러 처리 회로(100)의 제1H매트릭스 연산 회로(1310, 도 13)는 제1H매트릭스(1210)와 라이트 데이터(DATA)를 행렬곱 연산해 부분 제1패리티(p_P0)를 생성할 수 있다. 또한 에러 처리 회로(100)의 제2H매트릭스 연산 회로(1320)는 제2H매트릭스(1220)와 라이트 데이터(DATA)를 행렬곱 연산해 제2패리티(P0)를 생성할 수 있다. 그리고 패리티 연산 회로(1330)는 부분 제1패리티(p_P0)와 제2패리티(P0)를 합산해 제1패리티(P0)를 생성할 수 있다.
라이트 데이터(DATA' = DATA, 라이트 동작시 동일함)와 에러 처리 회로(100)에 의해 생성된 에러 정정 코드(ECC = P0 + P1)는 메모리 코어(1610)에 라이트될 수 있다.
리드 동작
리드 동작시에, 메모리 코어(1610)로부터 데이터(DATA')와 에러 정정 코드(ECC = P0' + P1')가 리드될 수 있다.
에러 처리 회로(100)의 제1H매트릭스 연산 회로(1310)는 제1H매트릭스(1210)와 리드 데이터(DATA')를 행렬곱 연산해 부분 제1리드(다운스트림) 패리티(prd_P0)를 생성할 수 있다. 제2H매트릭스 연산 회로(1320)는 제2H매트릭스(1220)와 리드 데이터(DATA')를 행렬곱 연산해 제2리드(다운스트림) 패리티(rd_P1)를 생성할 수 있다. 패리티 복원 회로(1340)는 메모리 코어(1610)로부터 리드된 제1패리티(P0')와 제2패리티(P1')를 합해 복원 부분 제1패리티(p_P0_restored)를 생성할 수 있다. 제1신드롬 연산 회로(1350)는 부분 제1리드 패리티(prd_P0)와 복원 부분 제1패리티(p_P0_restored)를 합산해 제1신드롬(S0~S7)을 생성할 수 있다. 제2신드롬 연산 회로(1360)는 메모리 코어(1610)로부터 리드된 제2패리티(P1')와 제2리드 패리티(rd_P1)를 합산해 제2신드롬(S8~S15)을 생성할 수 있다. 그리고 정정 회로(1370)는 제1신드롬(S0~S7)과 제2신드롬(S8~S15)을 이용해 데이터(DATA')의 에러를 정정할 수 있다.
에러 처리 회로(100)에 의해 에러가 정정된 데이터(DATA)는 메모리 콘트롤러로 전달될 수 있다. 여기서 에러가 정정된 데이터(DATA)는 데이터(DATA')에서 에러가 발견된 경우에는 데이터(DATA')와 상이하고, 데이터(DATA')에 에러가 발견되지 않은 경우에는 데이터(DATA')와 동일할 수 있다.
본 발명의 기술사상은 상기 바람직한 실시예에 따라 구체적으로 기술되었으나, 상기한 실시예는 그 설명을 위한 것이며 그 제한을 위한 것이 아님을 주의하여야 한다. 또한, 본 발명의 기술분야의 전문가라면 본 발명의 기술사상의 범위 내에서 다양한 실시예가 가능함을 알 수 있을 것이다.
100: 에러 처리 회로
1310: 제1H매트릭스 연산 회로
1320: 제2H매트릭스 연산 회로
1330: 패리티 연산 회로
1340: 패리티 복원 회로
1350: 제1신드롬 연산 회로
1360: 제2신드롬 연산 회로
1370: 정정 회로

Claims (19)

  1. 인코딩 동작시에, 제1H매트릭스와 업스트림 데이터를 연산해 부분 제1패리티를 생성하는 제1H매트릭스 연산 회로;
    상기 인코딩 동작시에, 제2H매트릭스와 상기 업스트림 데이터를 연산해 제2패리티를 생성하는 제2H매트릭스 연산 회로; 및
    상기 인코딩 동작시에, 상기 부분 제1패리티와 상기 제2패리티를 합해 제1패리티를 생성하는 패리티 연산 회로
    를 포함하는 에러 처리 회로.
  2. 제 1항에 있어서,
    디코딩 동작시에, 상기 제1H매트릭스 연산 회로는 상기 제1H매트릭스와 다운스트림 데이터를 연산해 부분 제1다운스트림 패리티를 생성하고, 상기 제2H매트릭스 연산 회로는 상기 제2H매트릭스와 상기 다운스트림 데이터를 연산해 제2다운스트림 패리티를 생성하는
    에러 처리 회로.

  3. 제 2항에 있어서,
    상기 디코딩 동작시에, 디코딩 동작을 위해 전달된 제1패리티와 디코딩 동작을 위해 전달된 제2패리티를 합해 복원 부분 제1패리티를 생성하는 패리티 복원 회로;
    상기 디코딩 동작시에, 상기 복원 부분 제1패리티와 상기 부분 제1다운스트림 패리티를 합산해 제1신드롬을 생성하는 제1신드롬 연산 회로;
    상기 디코딩 동작시에, 상기 디코딩 동작을 위해 전달된 제2패리티와 상기 제2다운스트림 패리티를 합산해 제2신드롬을 생성하는 제2신드롬 연산 회로; 및
    상기 제1신드롬과 상기 제2신드롬을 이용해 상기 다운스트림 데이터의 에러를 정정하는 정정 회로를 더 포함하는
    에러 처리 회로.
  4. 제 3항에 있어서,
    상기 정정 회로는
    상기 제1신드롬과 상기 제2신드롬의 값이 모두 '0'인 경우에, 상기 다운스트림 데이터의 에러가 없다고 판단하는
    에러 처리 회로.
  5. 제 4항에 있어서,
    상기 정정 회로는
    상기 다운스트림 데이터의 멀티 비트들 중 상기 제1신드롬과 상기 제2신드롬의 값에 대응하는 비트를 반전하는
    에러 처리 회로.
  6. 제 1항에 있어서,
    상기 업스트림 데이터는 N비트이고(N은 2이상의 정수), 상기 제1패리티는 M비트이고(M은 2이상의 정수), 상기 제1H매트릭스는 (M x N) 매트릭스이고,
    상기 제1H매트릭스 연산 회로는
    상기 제1H매트릭스와 (N x 1) 매트릭스로 표현된 상기 업스트림 데이터를 행렬곱 연산해 상기 부분 제1패리티를 생성하는
    에러 처리 회로.
  7. 제 6항에 있어서,
    상기 제2패리티는 K비트이고(K는 2이상의 정수), 상기 제1H매트릭스는 (K x N) 매트릭스이고,
    상기 제2H매트릭스 연산 회로는
    상기 제2H매트릭스와 (N x 1) 매트릭스로 표현된 상기 업스트림 데이터를 행렬곱 연산해 상기 제2패리티를 생성하는
    에러 처리 회로.
  8. 디코딩 동작시에, 제1H매트릭스와 다운스트림 데이터를 연산해 부분 제1다운스트림 패리티를 생성하는 제1H매트릭스 연산 회로;
    상기 디코딩 동작시에, 제2H매트릭스와 상기 다운스트림 데이터를 연산해 제2다운스트림 패리티를 생성하는 제2H매트릭스 연산 회로;
    상기 디코딩 동작시에, 제1패리티와 제2패리티를 합해 복원 부분 제1패리티를 생성하는 패리티 복원 회로;
    상기 디코딩 동작시에, 상기 복원 부분 제1패리티와 상기 부분 제1다운스트림 패리티를 합산해 제1신드롬을 생성하는 제1신드롬 연산 회로;
    상기 디코딩 동작시에, 상기 디코딩 동작을 위해 전달된 제2패리티와 상기 제2다운스트림 패리티를 합산해 제2신드롬을 생성하는 제2신드롬 연산 회로; 및
    상기 제1신드롬과 상기 제2신드롬을 이용해 상기 다운스트림 데이터의 에러를 정정하는 정정 회로
    를 포함하는 에러 처리 회로.
  9. 제 8항에 있어서,
    상기 정정 회로는
    상기 제1신드롬과 상기 제2신드롬의 값이 모두 '0'인 경우에, 상기 다운스트림 데이터의 에러가 없다고 판단하는
    에러 처리 회로.
  10. 제 9항에 있어서,
    상기 정정 회로는
    상기 다운스트림 데이터의 멀티 비트들 중 상기 제1신드롬과 상기 제2신드롬의 값에 대응하는 비트를 반전하는
    에러 처리 회로.
  11. 라이트 동작시에, 제1H매트릭스와 라이트 데이터를 연산해 부분 제1패리티를 생성하는 제1H매트릭스 연산 회로;
    상기 라이트 동작시에, 제2H매트릭스와 상기 라이트 데이터를 연산해 제2패리티를 생성하는 제2H매트릭스 연산 회로;
    상기 라이트 동작시에, 상기 부분 제1패리티와 상기 제2패리티를 합해 제1패리티를 생성하는 패리티 연산 회로; 및
    라이트 동작시에 상기 라이트 데이터, 상기 제1패리티 및 상기 제2패리티를 저장하는 메모리 코어
    를 포함하는 메모리.
  12. 제 11항에 있어서,
    리드 동작시에, 상기 제1H매트릭스 연산 회로는 상기 제1H매트릭스와 상기 메모리 코어로부터 리드된 리드 데이터를 연산해 부분 제1리드 패리티를 생성하고, 상기 제2H매트릭스 연산 회로는 상기 제2H매트릭스와 상기 리드 데이터를 연산해 제2리드 패리티를 생성하는
    메모리.
  13. 제 12항에 있어서,
    상기 리드 동작시에, 상기 메모리 코어로부터 리드된 제1패리티와 제2패리티를 합해 복원 부분 제1패리티를 생성하는 패리티 복원 회로;
    상기 리드 동작시에, 상기 복원 부분 제1패리티와 상기 부분 제1리드 패리티를 합산해 제1신드롬을 생성하는 제1신드롬 연산 회로;
    상기 리드 동작시에, 상기 메모리 코어로부터 리드된 제2패리티와 상기 제2리드 패리티를 합산해 제2신드롬을 생성하는 제2신드롬 연산 회로; 및
    상기 제1신드롬과 상기 제2신드롬을 이용해 상기 리드 데이터의 에러를 정정하는 정정 회로
    를 더 포함하는 메모리.
  14. 제 13항에 있어서,
    상기 정정 회로는
    상기 제1신드롬과 상기 제2신드롬의 값이 모두 '0'인 경우에, 상기 다운스트림 데이터의 에러가 없다고 판단하는
    메모리.
  15. 제 14항에 있어서,
    상기 정정 회로는
    상기 다운스트림 데이터의 멀티 비트들 중 상기 제1신드롬과 상기 제2신드롬의 값에 대응하는 비트를 반전하는
    메모리.
  16. 제 12항에 있어서,
    상기 라이트 데이터는 N비트이고(N은 2이상의 정수), 상기 제1패리티는 M비트이고(M은 2이상의 정수), 상기 제1H매트릭스는 (M x N) 매트릭스이고,
    상기 제1H매트릭스 연산 회로는
    상기 제1H매트릭스와 (N x 1) 매트릭스로 표현된 상기 라이트 데이터를 행렬곱 연산해 상기 부분 제1패리티를 생성하는
    메모리.
  17. 제 16항에 있어서,
    상기 제2패리티는 K비트이고(K는 2이상의 정수), 상기 제1H매트릭스는 (K x N) 매트릭스이고,
    상기 제2H매트릭스 연산 회로는
    상기 제2H매트릭스와 (N x 1) 매트릭스로 표현된 상기 라이트 데이터를 행렬곱 연산해 상기 제2패리티를 생성하는
    메모리.
  18. 라이트 데이터를 수신하는 단계;
    제1H매트릭스와 상기 라이트 데이터를 행렬곱 연산해 부분 제1패리티를 생성하는 단계;
    제2H매트릭스와 상기 라이트 데이터를 행렬곱 연산해 제2패리티를 생성하는 단계;
    상기 부분 제1라이트 패리티와 상기 제2패리티를 합해 제1패리티를 생성하는 단계; 및
    상기 라이트 데이터, 상기 제1패리티 및 상기 제2패리티를 메모리 코어에 저장하는 단계
    를 포함하는 메모리의 동작 방법.
  19. 제 18항에 있어서,
    상기 메모리 코어로부터 리드 데이터 및 이에 대응하는 제1패리티와 제2패리티가 리드되는 단계;
    상기 제1H매트릭스와 상기 리드 데이터를 행렬곱 연산해 부분 제1리드 패리티를 생성하는 단계;
    상기 제2H매트릭스와 상기 리드 데이터를 행렬곱 연산해 제2리드 패리티를 생성하는 단계;
    상기 리드 데이터에 대응하는 제1패리티와 제2패리티를 합해 복원 부분 제1패리티를 생성하는 단계;
    상기 복원 부분 제1패리티와 상기 부분 제1리드 패리티를 합산해 제1신드롬을 생성하는 단계;
    상기 리드 데이터에 대응하는 제2패리티와 상기 제2리드 패리티를 합산해 제2신드롬을 생성하는 단계;
    상기 제1신드롬과 상기 제2신드롬을 이용해 상기 리드 데이터의 에러를 정정하는 단계;
    에러가 정정된 리드 데이터를 출력하는 단계
    를 더 포함하는 메모리의 동작 방법.
KR1020220150709A 2022-10-14 2022-11-11 에러 처리 회로, 메모리 및 메모리의 동작 방법 KR20240052583A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US18/169,880 US20240126646A1 (en) 2022-10-14 2023-02-16 Error processing circuit, memory and operation method of the memory

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US202263416230P 2022-10-14 2022-10-14
US63/416,230 2022-10-14

Publications (1)

Publication Number Publication Date
KR20240052583A true KR20240052583A (ko) 2024-04-23

Family

ID=90640203

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220150709A KR20240052583A (ko) 2022-10-14 2022-11-11 에러 처리 회로, 메모리 및 메모리의 동작 방법

Country Status (2)

Country Link
KR (1) KR20240052583A (ko)
CN (1) CN117891650A (ko)

Also Published As

Publication number Publication date
CN117891650A (zh) 2024-04-16

Similar Documents

Publication Publication Date Title
KR100856129B1 (ko) 오정정 확률을 줄이는 에러 정정 회로, 그 방법 및 상기회로를 구비하는 반도체 메모리 장치
US7370264B2 (en) H-matrix for error correcting circuitry
US8069389B2 (en) Error correction circuit and method, and semiconductor memory device including the circuit
JP6540703B2 (ja) メモリコントローラおよびメモリコントローラの制御方法
US20110209033A1 (en) Circuit and technique for reducing parity bit-widths for check bit and syndrome generation for data blocks through the use of additional check bits to increase the number of minimum weighted codes in the hamming code h-matrix
US10802912B2 (en) Semiconductor memory device and memory system having the same
US10735028B2 (en) Data processing device and data processing method
US10243588B2 (en) Error correction code (ECC) decoders sharing logic operations, memory controllers including the error correction code decoders, and methods of decoding error correction codes
US20050149834A1 (en) (18, 9) Error correction code for double error correction and triple error detection
JPS6349245B2 (ko)
RU2448359C1 (ru) Устройство хранения и передачи данных с исправлением ошибок в байте информации и обнаружением ошибок в байтах информации
US10824507B2 (en) Semiconductor memory device, controller, and memory system
US20230368860A1 (en) Memory and operation method of memory
KR20240052583A (ko) 에러 처리 회로, 메모리 및 메모리의 동작 방법
KR20190132238A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
RU2450331C1 (ru) Устройство хранения и передачи данных с исправлением одиночных ошибок в байте информации и обнаружением произвольных ошибок в байтах информации
US20240126646A1 (en) Error processing circuit, memory and operation method of the memory
US11024402B2 (en) Memory system and operation method thereof
US20210119647A1 (en) Parity generation circuits for a plurality of error correction levels, memory controllers, and memory modules including the parity generation circuits
RU106771U1 (ru) Устройство хранения и передачи данных с исправлением ошибок в байте информации и обнаружением ошибок в байтах информации
Duchrau et al. A new decoding method for double error correcting cross parity codes
RU107606U1 (ru) Устройство хранения и передачи данных с исправлением одиночных ошибок в байте информации и обнаружением произвольных ошибок в байтах информации
US7188294B2 (en) High-efficiency error detection and/or correction code
US11442810B2 (en) Memory and operation method of memory
US20220368351A1 (en) Memory and operation method of memory