KR102423489B1 - 최소 앨리어싱 에러 정정 코드 제공 방법 및 시스템 - Google Patents

최소 앨리어싱 에러 정정 코드 제공 방법 및 시스템 Download PDF

Info

Publication number
KR102423489B1
KR102423489B1 KR1020200155665A KR20200155665A KR102423489B1 KR 102423489 B1 KR102423489 B1 KR 102423489B1 KR 1020200155665 A KR1020200155665 A KR 1020200155665A KR 20200155665 A KR20200155665 A KR 20200155665A KR 102423489 B1 KR102423489 B1 KR 102423489B1
Authority
KR
South Korea
Prior art keywords
vector
error correction
submatrix
column
code
Prior art date
Application number
KR1020200155665A
Other languages
English (en)
Other versions
KR20220068661A (ko
Inventor
배성일
권건우
Original Assignee
홍익대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 홍익대학교 산학협력단 filed Critical 홍익대학교 산학협력단
Priority to KR1020200155665A priority Critical patent/KR102423489B1/ko
Priority to US17/524,803 priority patent/US11700017B2/en
Publication of KR20220068661A publication Critical patent/KR20220068661A/ko
Application granted granted Critical
Publication of KR102423489B1 publication Critical patent/KR102423489B1/ko

Links

Images

Classifications

    • 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
    • H03M13/11Error 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 using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1108Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • 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
    • H03M13/13Linear codes
    • H03M13/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1032Simple parity
    • 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
    • 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
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • H03M13/098Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit using single parity bit
    • 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
    • H03M13/11Error 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 using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • H03M13/1168Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices wherein the sub-matrices have column and row weights greater than one, e.g. multi-diagonal sub-matrices
    • 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
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1575Direct decoding, e.g. by a direct determination of the error locator polynomial from syndromes and subsequent analysis or by matrix operations involving syndromes, e.g. for codes with a small minimum Hamming distance
    • 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

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

최소 앨리어싱 에러 정정 코드 제공 방법 및 시스템이 제공된다. 디바이스에 적용하는 데이터 길이 k에 대한 패리티 체크 행렬 H를 구성하여 단일 오류 정정(SEC)코드를 구성함에 있어, 서로 다른 0이 아닌 이진 열행렬을 패리티 체크 행렬에 배치함에 있어 전체 비트가 아닌 일부 비트를 확인하여 SEC 코드가 유효하고도 앨리어싱이 최소한 발생할 수 있도록 설계함으로써 정보의 파손을 방지하고 DRAM 등 SEC를 적용하는 디바이스의 신뢰성을 향상시킬 수 있도록 한다.

Description

최소 앨리어싱 에러 정정 코드 제공 방법 및 시스템{Method and system for providing minimal aliasing error correction code}
본 발명은 최소 앨리어싱 에러 정정 코드 제공 방법 및 시스템에 관한 것으로서, 더욱 상세하게는 DRAM(Dynamic Random Access Memory) 등 SEC를 적용하는 디바이스의 신뢰성을 향상시키기 위한 단일 오류 정정(Single Error Correction; SEC) 코드를 설계함에 있어서 앨리어싱이 최소한으로 발생하게 하기 위한 시스템 및 이를 제공하는 방법에 관한 것이다.
반도체 메모리 장치 등을 통한 정보 전송 또는 저장함에 있어서 데이터는 이진 데이터 워드 형태로 인코딩 되어 전송 또는 저장될 수 있는데, 이러한 경우 데이터 에러가 포함되어 데이터 손상이 발생할 수 있기 때문에, 데이터 손상을 완화하기 위해 오류의 감지 또는 정정이 필요한데, SEC 코드는 잘못된 수정으로 인해 3비트 오류로 앨리어싱 될 수 있다.
이처럼 앨리어싱의 발생을 최소화하면서 이진 SEC를 설계할 수 있는 방법에 대한 필요성이 대두되었다.
전술한 문제점을 해결하기 위하여 본 발명이 이루고자 하는 과제는, DRAM(Dynamic Random Access Memory) 디바이스에 SEC를 적용함에 있어, 검사 비트 수가 증가함에 따라 무작위로 선택한 코드에는 압도적으로 높은 확률의 앨리어싱이 발생하기 때문에, 연산 수를 감소시키면서 최소한의 앨리어싱이 발생하는 단일 에러 정정 코드를 찾음으로써 SEC를 적용하는 디바이스의 신뢰성을 향상시키는 데 있다.
본 발명의 해결 과제는 이상에서 언급된 것들에 한정되지 않으며, 언급되지 아니한 다른 과제들은 아래의 기재로부터 당업자가 명확하게 이해될 수 있을 것이다.
전술한 기술적 과제를 해결하기 위한 수단으로서, 본 발명의 실시예에 따르면, 최소 앨리어싱 에러 정정 코드(Error Correction Code; 이하 ECC) 제공 방법은, (A) 인코더 회로는 길이 k를 갖는 메시지 워드를 수신하여 k 데이터 비트를 포함하는 r*k 데이터부분행렬 M 및 r 체크 비트를 포함하는 r*r 체크부분행렬 C를 포함하는 r*n 패리티 체크 행렬 H을 갖는 코드 워드를 생성하는 인코딩 단계; 및 (B) 디코더 회로는 상기 코드 워드를 수신하고, 상기 코드 워드 및 상기 패리티 체크 행렬 H를 이용하여 생성한 신드롬에 기초하여 상기 코드 워드에 포함된 에러 비트들의 적어도 일부를 정정하는 정정회로를 포함하는 ECC를 구현하는 디코딩 단계;를 포함하되, 상기 r, k, n은 1 이상의 자연수이며, n=k+r이고,
Figure 112020124422292-pat00001
을 만족한다.
상기 ECC는, 단일 오류 정정(Single Error Correction; 이하 SEC)를 포함하며, 상기 패리티 체크 행렬 H는, 모든 열벡터가 각각 0이 아닌 서로 다른 이진 값을 갖는다.
상기 (A)단계는, (A1) 상기 인코더 회로는, r 크기의 0이 아닌 이진 행벡터 v를 특정하는 단계; (A2) 상기 인코더 회로는, r 크기의 0이 아닌 이진 열벡터 중 상기 행벡터 v를 곱한 결과값이 0인 열벡터를 제1열벡터, 상기 결과값이 0이 아닌 열벡터를 제2열벡터로 구분하는 단계; (A3) 상기 인코더 회로는, 상기 데이터부분행렬 M이 상기 제1열벡터 중 1개 및 상기 제2열벡터 중 k-1개를 포함하도록 구성하는 단계; 및 (A4) 상기 인코더 회로는, 상기 체크부분행렬 C이 상기 제1열벡터 중 r-1개, 상기 제2열벡터 중 1개를 포함하도록 구성하는 단계;를 포함한다.
상기 체크부분행렬 C는, 가역적인 행렬이다.
상기 체크부분행렬 C는, 단위 행렬이다.
한편, 본 발명의 다른 실시예에 따르면, 최소 앨리어싱 에러 정정 코드(Error Correction Code; 이하 ECC) 제공 시스템은, 길이 k를 갖는 메시지 워드를 수신하여 k 데이터 비트를 포함하는 r*k 데이터부분행렬 M 및 r 체크 비트를 포함하는 r*r 체크부분행렬 C를 포함하는 r*n 패리티 체크 행렬 H을 갖는 코드 워드를 생성하는 인코더 회로; 및 상기 코드 워드를 수신하고, 상기 코드 워드 및 상기 패리티 체크 행렬 H를 이용하여 생성한 신드롬에 기초하여 상기 코드 워드에 포함된 에러 비트들의 적어도 일부를 정정하는 정정회로를 포함하는 ECC를 구현하는 디코더 회로;를 포함하되, 상기 r, k, n은 1 이상의 자연수이며, n=k+r이고,
Figure 112020124422292-pat00002
을 만족한다.
상기 ECC는, 단일 오류 정정(Single Error Correction; 이하 SEC)를 포함하며, 상기 패리티 체크 행렬 H는, 모든 열벡터가 각각 0이 아닌 서로 다른 이진 값을 갖는 것이다.
상기 인코더 회로는, r 크기의 0이 아닌 이진 행벡터 v를 특정하고, r 크기의 0이 아닌 이진 열벡터 중 상기 행벡터 v를 곱한 결과값이 0인 열벡터를 제1열벡터, 상기 결과값이 0이 아닌 열벡터를 제2열벡터로 구분한 후, 상기 데이터부분행렬 M이 상기 제1열벡터 중 1개 및 상기 제2열벡터 중 k-1개를 포함하도록 구성하고, 상기 체크부분행렬 C이 상기 제1열벡터 중 r-1개, 상기 제2열벡터 중 1개를 포함하도록 구성한다.
상기 체크부분행렬 C는, 가역적인 행렬이다.
상기 체크부분행렬 C는, 단위 행렬이다.
본 발명에 따르면,
DRAM(Dynamic Random Access Memory) 디바이스에 SEC를 적용함에 있어, 검사 비트 검사 비트 수가 증가함에 따라 무작위로 선택한 코드에는 압도적으로 높은 확률의 앨리어싱이 발생하기 때문에, 연산 수를 감소시키면서 최소한의 앨리어싱이 발생하는 단일 에러 정정 코드를 찾음으로써 SEC를 적용하는 디바이스의 신뢰성을 향상시킬 수 있다.
본 발명의 효과는 이상에서 언급된 것들에 한정되지 않으며, 언급되지 아니한 다른 효과들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
도 1은 SEC로 보호되는 코드 워드에서 3비트 에러 앨리어싱이 발생하는 경우의 예시도,
도 2는 패리티 체크 행렬로 특정된 SEC 코드의 예시도,
도 3은 본 발명의 실시예에 의한 최소 앨리어싱 에러 정정 코드 제공 방법의 순서도,
도 4는 도 1의 (A)단계의 순서도,
도 5는 앨리어싱의 발생 분포도,
도 6은 본 발명의 실시예에 의한 최소 앨리어싱 에러 정정 코드 제공 시스템의 구성도이다.
이상의 본 발명의 목적들, 다른 목적들, 특징들 및 이점들은 첨부된 도면과 관련된 이하의 바람직한 실시 예들을 통해서 쉽게 이해될 것이다. 그러나 본 발명은 여기서 설명되는 실시 예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 오히려 여기서 소개되는 실시 예들은 개시된 내용이 철저하고 완전해질 수 있도록, 그리고 당업자에게 본 발명의 사상이 충분히 전달될 수 있도록 하기 위해 제공되는 것이다.
본 명세서에서 제1, 제2 등의 용어가 구성요소들을 기술하기 위해서 사용된 경우, 이들 구성요소들이 이 같은 용어들에 의해서 한정되어서는 안 된다. 이들 용어들은 단지 어느 구성요소를 다른 구성요소와 구별시키기 위해서 사용되었을 뿐이다. 여기에 설명되고 예시되는 실시 예들은 그것의 상보적인 실시 예들도 포함한다.
또한, 어떤 엘리먼트, 구성요소, 장치, 또는 시스템이 프로그램 또는 소프트웨어로 이루어진 구성요소를 포함한다고 언급되는 경우, 명시적인 언급이 없더라도, 그 엘리먼트, 구성요소, 장치, 또는 시스템은 그 프로그램 또는 소프트웨어가 실행 또는 동작하는데 필요한 하드웨어(예를 들면, 메모리, CPU 등)나 다른 프로그램 또는 소프트웨어(예를 들면 운영체제나 하드웨어를 구동하는데 필요한 드라이버 등)를 포함하는 것으로 이해되어야 할 것이다.
또한 본 명세서에서 사용된 용어는 실시 예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 '포함한다(comprises)' 및/또는 '포함하는(comprising)'은 언급된 구성요소는 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다.
또한, 본 명세서에 기재된 'OO부', 'OO기', '모듈' 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다. 또한, '일', '하나' 및 '그' 등의 관사는 본 발명을 기술하는 문맥에 있어서 본 명세서에 달리 지시되거나 문맥에 의해 분명하게 반박되지 않는 한, 단수 및 복수 모두를 포함하는 의미로 사용될 수 있다.
아래의 특정 실시 예들을 기술하는 데 있어서, 여러 가지의 특정적인 내용들은 발명을 더 구체적으로 설명하고 이해를 돕기 위해 작성되었다. 하지만 본 발명을 이해할 수 있을 정도로 이 분야의 지식을 갖고 있는 독자는 이러한 여러 가지의 특정적인 내용이 없어도 사용될 수 있다는 것을 인지할 수 있다.
어떤 경우에는, 발명을 기술하는 데 있어서 흔히 알려졌으면서 발명과 크게 관련 없는 부분들은 본 발명을 설명하는 데 있어 별 이유 없이 혼돈이 오는 것을 막기 위해 기술하지 않음을 미리 언급해 둔다.
이하, 본 발명에서 실시하고자 하는 구체적인 기술 내용에 대해 첨부도면을 참조하여 상세하게 설명하기로 한다.
도 1은 SEC로 보호되는 코드 워드에서 3비트 에러 앨리어싱이 발생하는 경우의 예시도이다.
도 1을 참조하면, 앨리어싱의 현상을 설명할 수 있다.
DRAM 칩 외부에서 사용되는 오류 정정 코드(Error Correction Code; ECC)를 외부 ECC라 하면, 이는 일반적으로 ECC 강도 범위에서 최소한 단일 오류 수정 및 이중 오류 감지(SECDED)를 사용한다.
다만 본 발명의 실시예에서 주로 제시하는 InDRAM ECC의 경우 작은 저장 공간 및 영역 오버 헤드로 인해 단일 오류 수정(SEC) 코드가 주로 사용되며, ECC는 검사 비트라는 중복 정보를 생성하여 오류로부터 데이터를 보호하고, 강력한 ECC는 더 많은 검사 비트를 한다.
현대의 DRAM 장치는 DRAM 뱅크의 배선 제한으로 인해 8 비트 폭의 내부 서브 어레이로 설계 되었기 때문에 검사 비트는 일반적으로 8의 배수이며, 8개의 체크 비트를 사용하는 SEC 코드는 128비트 단위로 메모리 데이터를 보호 할 수 있으므로 6.25 %의 스토리지 오버헤드가 필요하다.
반대로 SECDED 코드는 8 개의 체크 비트를 사용하여 64 비트 메모리 데이터를 보호(12.5 % 오버 헤드) 할 수 있다.
In-DRAM ECC는 각 DRAM 칩에 구현되어야 하므로 SEC 코드는 검사 비트에 대한 저장 영역 및 오버헤드가 적기 때문에 선호된다.
그러나 SEC 보호 데이터의 경우 2 비트 오류는 잘못된 수정으로 인해 3 비트 오류로 불리하게 앨리어싱 될 수 있다.
SEC 코드의 코드 워드는 적어도 3의 해밍 거리를 갖도록 보장된다.
이처럼 실시예에서는 In-DRAM에 적용 가능한 SEC를 기술하고 있으나, 본 발명의 실시예에 의한 방법 및 시스템은 적용범위가 DRAM에만 국한되지 않고 SEC를 적용하는 디바이스에서 사용될 수 있음을 미리 밝힌다.
도 1을 참조하면, 해밍 거리가 3 인 코드 워드 v1 및 v2를 가정하면, v1에 두 개의 오류가 수신되어 w2가되고 w2와 v2 사이의 해밍 거리가 1이면 SEC 디코더는 수신된 단어 w2를 v2로 잘못 해석하게 되며, 이러한 현상을 앨리어싱이라 한다.
이를 통해 DRAM 칩의 오류 비트 수가 2 개에서 3 개로 증가하므로, 앨리어싱은 DRAM 칩 외부의 시스템에 노출 될 때 시스템에서 발견되는 오류의 수를 증가시킬 가능성이 있기 때문에 데이터 손상으로 이어질 수 있다.
도 2는 패리티 체크 행렬로 특정된 SEC 코드의 예시도이다.
랭크 r의 r* n 패리티 체크 행렬 H는 H를 사용하는 SEC 및 H에 의해 결정된 코드에 대한 신드롬 디코딩과 관련하여 모든 단일 비트 오류를 수정할 수 있는 경우 SEC이 가능하다.
상기 H는 H가 0이 아닌 별개의 열벡터로 구성된 경우에만 SEC 가능하다.
H = [M | C]는 (n, k) 이진 코드에 대한 패리티 검사 행렬이며, 여기서 M은 r*k 행렬이고 C는 r*r 행렬이다. H에 의해 결정된 코드는 C가 가역적인 행렬(invertible)일 때에만 유효하다.
여기서 가역적인 행렬이란, 역행렬을 가지며, 그 역행렬과 곱한 결과가 단위 행렬인 행렬을 의미한다.
따라서, 본 발명의 실시예에서 SEC 코드의 패리티 검사 행렬 H = [M | C]는 가역적이며 0이 아닌 열벡터로 구성된 부분행렬 C를 포함하여야 한다.
대부분의 응용 프로그램에서는 부분 행렬 C가 단위 행렬이 되도록 패리티 검사 행렬을 선택한다.
도 2를 참조하면 (a)의 (15,11) 코드는 H가 0이 아닌 모든 4비트 열로 구성된 완전한 해밍 코드이다.
여기서 부분행렬 M은 순서에 관계 없이 가중치 2 이상의 열로 구성되며, 부분 행렬 C는 가중치 1의 열벡터를 사용하는 단위 행렬이다.
이 코드는 11비트 메시지를 보호하며, 이러한 메시지 길이를 2의 제곱으로 하기 위해서 단축된 해밍 코드를 사용할 수 있다.
도 2를 참조하면 (b)의 패리티 검사 행렬 (12, 8) 코드에 의해 지정된 SEC 코드의 예는 (a)의 M에서 3 개의 열을 제거하여 패리티 검사 행렬을 얻은 코드이다.
이 코드에서 r=4, k=
Figure 112020124422292-pat00003
=8이다.
완전한 해밍 코드와 단축 된 해밍 코드는 모두 SEC가 가능하고 체계적(systematic)이다. 모든 열벡터가 0이 아닌 고유한 부분이고 부분 행렬 C가 단위 행렬이므로 가역적이기 때문이다.
그러나 모든 SEC 코드가 해밍 코드인 것은 아니며, 도 2에서 (c)의 코드는 단위 행렬이 아니지만 가역적인 C를 가지고 있어, SEC 코드이며, 체계적이다.
SEC 설계에서 해밍 코드를 사용하는 것이 일반적이지만, 최소한의 앨리어싱 코드 검색을 위해 본 발명에서는 논-해밍 코드도 고려한다.
r*n 크기의 패리티 검사 행렬 H는,
Figure 112020124422292-pat00004
으로 나타낼 수 있고, 여기서
Figure 112020124422292-pat00005
,
Figure 112020124422292-pat00006
,
Figure 112020124422292-pat00007
이다.
본 발명에서는 상기 패리티 검사 행렬 H를 통해 최소한의 앨리어싱이 발생할 수 있도록 하는 단일 에러 정정 코드를 제공하는 시스템 및 방법이 제시된다.
상기 시스템 및 방법에 대해 이하에서 설명한다.
예를 들어, r=8, k=
Figure 112020124422292-pat00008
=128, h는 128+8=136 개의 0이 아닌 크기 8의 열벡터들로 이루어지고, C는 8*8의 가역적인 행렬인 경우를 검토한다.
코드 워드 v가 i, j 번째 위치(
Figure 112020124422292-pat00009
)의 2개의 에러가 포함되어
Figure 112020124422292-pat00010
로 불려왔다고 가정하면, 신드롬
Figure 112020124422292-pat00011
이며,디코딩 결과는 다음 세 가지 경우 중 하나에 해당한다.
1) (
Figure 112020124422292-pat00012
)가 M의 열벡터 중 하나 (
Figure 112020124422292-pat00013
)와 같으면 신드롬은 m번째 위치에서 단일 비트 오류로 잘못 해석된다. 따라서 이중 비트 오류는 메시지의 i 번째, j 번째 및 m 번째 위치에서 3중 비트 오류로 앨리어싱 된다.
2) (
Figure 112020124422292-pat00014
)가 C의의 열벡터 중 하나와 같으면 체크 비트에 추가 오류가 생성된다. 그러나 메모리 읽기에서 메시지 비트 만 검색되므로 체크 비트에 대한 이러한 추가 오류는 DRAM 칩 외부에 노출되지 않는다.
3) (
Figure 112020124422292-pat00015
)가 패리티 검사 행렬의 열과 다른 경우 추가 오류가 발생하지 않는다.
따라서, i 번째 위치와 j 번째 위치에 두 개의 오류가 있을 때
Figure 112020124422292-pat00016
, 또는
Figure 112020124422292-pat00017
이 성립하는 M의 열벡터
Figure 112020124422292-pat00018
이 있는 경우에만 앨리어싱이 발생하며, M에서 가져온 세 개의 구분된 벡터 세트 {
Figure 112020124422292-pat00019
,
Figure 112020124422292-pat00020
,
Figure 112020124422292-pat00021
}을 H의 앨리어싱 트리플로 호출한다.
H의 앨리어싱 트리플의 수는 앨리어싱이 발생할 확률을 결정한다.
이하에서 SEC코드에 대한 r*(k+r) 크기의 패리티 검사 행렬 H에 대해 최소한인
Figure 112020124422292-pat00022
개의 앨리어싱이 발생할 수 있도록 하는 SEC 코드가 제공된다.
도 3은 본 발명의 실시예에 의한 최소 앨리어싱 에러 정정 코드 제공 방법의 순서도이다.
도 3을 참조하면, 본 발명의 실시예에 의한 최소 앨리어싱 에러 정정 코드 제공 방법은, (A) 패리티 체크 행렬 H를 갖는 코드 워드를 생성하는 인코딩 단계(S100), (B) 신드롬에 기초하여 정정회로를 포함하는 ECC를 구현하는 단계(S200)를 포함한다.
여기서 (A)단계(S100)는, 인코더 회로는 길이 k를 갖는 메시지 워드를 수신하여 k 데이터 비트를 포함하는 r*k 데이터부분행렬 M 및 r 체크 비트를 포함하는 r*r 체크부분행렬 C를 포함하는 r*n 패리티 체크 행렬 H을 갖는 코드 워드를 생성한다.
또한 여기서 (B)단계(S200)는, 디코더 회로는 상기 코드 워드를 수신하고, 상기 코드 워드 및 상기 패리티 체크 행렬 H를 이용하여 생성한 신드롬에 기초하여 상기 코드 워드에 포함된 에러 비트들의 적어도 일부를 정정하는 정정회로를 포함하는 ECC를 구현한다.
여기서 r, k, n은 1 이상의 자연수이며, n=k+r이고,
Figure 112020124422292-pat00023
을 만족하는 것이다.
여기서 ECC는, 단일 오류 정정(Single Error Correction; 이하 SEC)를 포함하며, 상기 패리티 체크 행렬 H는, 모든 열벡터가 각각 0이 아닌 서로 다른 이진 값을 갖는 것으로 한정할 수 있다.
도 4는 도 1의 (A)단계의 순서도이다.
도 4를 참조하면 (A)단계(S100)는, (A1) r 크기의 non-zero 이진 행벡터 v를 특정하는 단계(S110), (A2) r 크기의 non-zero 이진 열벡터 중 제1열벡터 및 제2열벡터로 구분하는 단계(S120), (A3) 데이터부분행렬 H를 구성하는 단계(S130), (A4) 체크부분행렬 C를 구성하는 단계(S140)를 포함한다.
여기서 (A1)단계(S110)는, 상기 인코더 회로는, r 크기의 0이 아닌 이진 행벡터 v를 특정한다.
여기서 (A2)단계(S120)는, 상기 인코더 회로는, r 크기의 0이 아닌 이진 열벡터 중 상기 행벡터 v를 곱한 결과값이 0인 열벡터를 제1열벡터, 상기 결과값이 0이 아닌 열벡터를 제2열벡터로 구분한다.
여기서 (A3)단계(S130)는, 상기 인코더 회로는, 상기 데이터부분행렬 M이 상기 제1열벡터 중 1개 및 상기 제2열벡터 중 k-1개를 포함하도록 구성한다.
여기서 (A4)단계(S140)는, 상기 인코더 회로는, 상기 체크부분행렬 C이 상기 제1열벡터 중 r-1개, 상기 제2열벡터 중 1개를 포함하도록 구성한다.
이에 대해 자세히 설명하면 다음과 같다.
크기가
Figure 112020124422292-pat00024
인 차원 r의 F2 벡터 공간 V를 생각하면, l개의 독립 벡터 세트는 선형 조합의 l차원 부분 공간을 생성하여
Figure 112020124422292-pat00025
개의 요소를 생성한다. 반면에 (r -l) 차원 부분 공간은 l개의 독립 벡터
Figure 112020124422292-pat00026
에 의해 주어진 l개 방정식
Figure 112020124422292-pat00027
의 해 집합으로 결정된다.
특히, v가 0이 아닌 벡터인 경우에 있어서,
Figure 112020124422292-pat00028
이라면, x는 v-even이라고 부르고, v-even 벡터는 (r-1) 부분 공간을 구성한다.
또한 0이 아닌 고유한 벡터 v를 선택하여 모든 (r-1) 부분 공간이 이러한 방식으로 결정할 수 있다.
따라서 (r-1) 차원의 (
Figure 112020124422292-pat00029
) 부분 공간이 있다.
여기서, x가 v-even이 아니면, 즉
Figure 112020124422292-pat00030
이면, x는 v-even이라고 부른다.
v가 고정되면, x 등의 벡터를 단순히 짝수(even) 또는 홀수(odd)로 부를 수 있다.
벡터공간 V는
Figure 112020124422292-pat00031
,
Figure 112020124422292-pat00032
인 짝수 벡터 E와 홀수 벡터 O의 등가 클래스로 분할된다.
짝수 벡터들은 짝수 벡터가 되고, 두 개의 홀수 벡터를 더하면 짝수 벡터가 되며, 짝수 벡터와 홀수 벡터를 더하면 홀수 벡터가 된다.
제로벡터를 포함하여
Figure 112020124422292-pat00033
개의 짝수 벡터가 있으므로,
Figure 112020124422292-pat00034
개의 홀수 벡터도 있다.
예를 들어,
Figure 112020124422292-pat00035
이면, 짝수 벡터는 해밍 가중치가 짝수인 벡터와 동일한 의미이고, 홀수 벡터는 해밍 가중치가 홀수인 벡터와 동일한 의미이다.
또한
Figure 112020124422292-pat00036
이면, 짝수 벡터는 첫 번째 좌표가 0인 벡터를 의미한다.
상기 (A1)단계(S110)에서 특정하는 행벡터 v는 여기서의 0이 아닌 벡터로서 데이터부분행렬 M과 체크부분행렬 C의 열벡터가 v-even인지, v-odd인지 구별하기 위한 벡터이다.
이제
Figure 112020124422292-pat00037
이고, M은 r*k 행렬이라는 점에서, 최소한의 앨리어싱을 가진 H를 찾기 위한 가장 명백한 방법은 M의 열벡터인
Figure 112020124422292-pat00038
에서 모든 홀수 벡터를 가지고 있으면 세 개의 다른 열벡터 중 어느 것도 더하여 0이 되지 않는다.
다만 이러한 경우 C는 짝수 벡터로만 만들어질 수밖에 없어 가역적이지 않다.
따라서 홀수 벡터를 사용하여 C를 가역적이게 만들고, 대신
Figure 112020124422292-pat00039
에 짝수 벡터를 사용(H의 열벡터의 순서는 무관함)할 수 있다.
그러면 제외된 홀수 벡터나 짝수 벡터
Figure 112020124422292-pat00040
의 선택에 관계 없이 앨리어싱 트리플 개수는
Figure 112020124422292-pat00041
(r=8일 때 63개)가 될 수 있다.
이것이 최소한의 앨리어싱 코드를 만드는 방법이다.
먼저,
Figure 112020124422292-pat00042
가 홀수(벡터)이고,
Figure 112020124422292-pat00043
짝수(벡터)이면 H 앨리어싱 트리플은 정확히
Figure 112020124422292-pat00044
개 있다.
이는 다음과 같이 증명될 수 있다.
0이 아닌 짝수 벡터 w, 에 대하여, v를 v+w로 일대일 매핑시키면, 이 매핑은 홀수 벡터의 하위 집합 인 O에 대한 차수 2의 순열(permutation)이며, 또는 오히려 O에 대한 그룹 작업으로 볼 수 있다.
그러면 O는
Figure 112020124422292-pat00045
또는 동등하게
Figure 112020124422292-pat00046
이 되도록 {v, v'} 궤도들의
Figure 112020124422292-pat00047
집합으로 분할될 수 있다. 따라서 짝수 벡터 w는 O와 함께 {w, v, v'} 형식의 정확히
Figure 112020124422292-pat00048
개의 앨리어싱 트리플을 구성한다.
O =
Figure 112020124422292-pat00049
∪ {h'}를 포함하여, h'은 제외 된 홀수 벡터일 때,
Figure 112020124422292-pat00050
Figure 112020124422292-pat00051
앨리어싱 트리플을 유도한다.
따라서 h'을 포함하는 트리플을 제외하면 H의 정확히
Figure 112020124422292-pat00052
앨리어싱 트리플이 있다.
{
Figure 112020124422292-pat00053
}는 l개의 짝수 벡터(따라서 k-l개의 홀수 벡터)를 포함하고,
Figure 112020124422292-pat00054
에 대해 H의 앨리어싱 트리플이 최소
Figure 112020124422292-pat00055
개 있다.
Figure 112020124422292-pat00056
은 짝수 벡터이고
Figure 112020124422292-pat00057
은 M에서 제외 된 홀수 벡터라 하면, 가능한 앨리어싱 트리플에는 적어도 하나의 짝수 벡터가 포함되어야 한다. (앨리어싱 트리플은 {odd, odd, even} 또는 {even, even, even} 형식이다.)
하한을 추정하고자 하므로 짝수 벡터
Figure 112020124422292-pat00058
사이에서의 앨리어싱은 무시하고자 한다.
이제 각
Figure 112020124422292-pat00059
에 대해
Figure 112020124422292-pat00060
와 관련된 가능한 앨리어싱 트리플을 제외하면 최소
Figure 112020124422292-pat00061
앨리어싱 트리플을 가진다.
따라서 H의 앨리어싱 트리플을 적어도
Figure 112020124422292-pat00062
가진다.
M의 앨리어싱 트리플의 수가 관련되는 한 M의 벡터 순서는 무관하다.
R을 M에 포함되지 않은 벡터의 행렬이라고 가정하면 행렬 C의 모든 벡터가 R에 포함되고 R은 0(제로벡터)도 포함한다.
벡터의 순서는 상대적이지 않으므로 집합으로 간주하면 M과 R을 V의 분할로 간주 할 수 있으며 0 ∈ R 및 |M| = |R| = k이다.
M이
Figure 112020124422292-pat00063
개의 각자 구분되는(중복되지 않는) 0이 아닌 벡터를 가지므로 M 행렬의 랭크(rank)는 r이다.
제로 벡터를 제외하고 R에는
Figure 112020124422292-pat00064
개의 각자 구분되는 0이 아닌 벡터를 가지며, 따라서 R의 랭크는 r-1 또는 r이다.
전자의 경우, R의 벡터는 정확히 (r-1) 차원의 부분 공간을 포함한다.
본 발명의 실시예에서 rank(R) = r이면 M은 유효다고 하며, 그렇지 않으면 M을 유효하지 않다고 할 수 있다.
rank(R) = r이면 항상 R의 벡터에서 역행렬 C를 구성 할 수 있으므로 적절한 패리티 검사 행렬 H를 가질 수 있기 때문이다.
이를 증명하면, M이 유효하지 않은 경우 R의 벡터는 정확히 (r-1)개의 부분 공간을 포함하고 집합으로서, M은 R의 보수 이며, 따라서 R의 벡터가 v-even이고 M의 벡터가 v-odd 인 벡터 v가 존재하며, M에 포함된 두 벡터의 합은 R에 속한다.
M에 앨리어싱이 없다고 가정하면, R은 덧셈으로 닫히므로 R은 부분 공간을 포함하며, 이는 크기 때문에 (r-1)-부분 공간임을 의미한다.
M의 벡터 u에 대해 다음 식이 성립한다.
R = {u + v | v ∈ M}
따라서 w1, w2 ∈ R에 대해 w1 = u + v1 및 w2 = u + v2이 성립하는 v1, v2 ∈ M이 있으므로, 따라서 w1 + w2 = v1 + v2 ∈ R이 성립한다.
본 발명에서, 0이 아닌 v, M에 있어서,
Figure 112020124422292-pat00065
는 M에 포함된 v-even 벡터의 숫자를 가리킨다.
또한, 유효한 M에서,
Figure 112020124422292-pat00066
가 성립하는 0이 아닌 벡터 v가 존재한다
v-even의 수는 v에 따라 달라질 수 있으며,
Figure 112020124422292-pat00067
에서 l은 M에 포함된 짝수 벡터의 개수일 때, 짝수 또는 홀수 벡터가 결정되는 v를 특정하지 않고,
Figure 112020124422292-pat00068
가 성립하는 v의 존재를 찾으면 앨리어싱의 하한을 찾을 수 있으며, 이러한 0이 아닌 벡터 v의 존재가 보장되므로, 하한은
Figure 112020124422292-pat00069
이며, 따라서
Figure 112020124422292-pat00070
이 된다.
즉, 유효한 M에서, 최소한
Figure 112020124422292-pat00071
의 앨리어싱이 발생한다.
이를 증명하면, 먼저 M이 유효하기 때문에
Figure 112020124422292-pat00072
= 0 인 경우를 제외한다.
Figure 112020124422292-pat00073
을 만족하는 0이 아닌 v가 존재는, 0이 아닌 모든 v에 대한 짝수 벡터의 평균 수가
Figure 112020124422292-pat00074
보다 약간 작다는 것에서 그러면 모든 v에 대해
Figure 112020124422292-pat00075
를 가질 수 없으며, 따라서 평균은
Figure 112020124422292-pat00076
이상이 된다는 점에서 증명된다.
따라서, 평균이
Figure 112020124422292-pat00077
보다 약간 작다는 것의 증명이 필요한데,
Figure 112020124422292-pat00078
이라 할 때,
Figure 112020124422292-pat00079
이므로,
Figure 112020124422292-pat00080
이다.
고정된
Figure 112020124422292-pat00081
에 대하여
Figure 112020124422292-pat00082
개의 0이 아닌 가능한 v 중
Figure 112020124422292-pat00083
를 v-even으로 만드는 v가
Figure 112020124422292-pat00084
개 존재하며(v 중
Figure 112020124422292-pat00085
를 v-odd으로 만드는 v가
Figure 112020124422292-pat00086
개 존재), 따라서
Figure 112020124422292-pat00087
이므로,
Figure 112020124422292-pat00088
이 성립한다.
따라서 전체 v의 평균값은
Figure 112020124422292-pat00089
이다. 여기서
Figure 112020124422292-pat00090
이므로, 평균이
Figure 112020124422292-pat00091
보다 약간 작다는 것이 증명된다.
예를 들어, n=4인 경우, 4-벡터를 정수 i로 나타낼 수 있다(0≤i≤15).
예에서,
Figure 112020124422292-pat00092
일 때,
Figure 112020124422292-pat00093
이다.
가중치
Figure 112020124422292-pat00094
와 관련하여, 홀수 벡터 세트 O 및 짝수 벡터 세트 M은 다음과 같다.
O = {1, 2, 4, 7, 8, 11, 13, 14},
E = {3, 5, 6, 9, 10, 12, 15}.
여기서,
M = [1, 2, 4, 7, 8, 11, 13, 5]이라 가정한다.
처음 7 개의 벡터는 홀수 벡터이고 마지막 벡터 5는 유일한 짝수 벡터이다. 3 개의 앨리어싱 트리플 {1, 4, 5}, {2, 7, 5} 및 {8, 13, 5}가 있다.
또한 가중치
Figure 112020124422292-pat00095
와 관련하여, 홀수 벡터 및 짝수 벡터 세트는 다음과 같다.
O' = {8, 9, 10, 11, 12, 13, 14, 15},
E' = {1, 2, 3, 4, 5, 6, 7}.
또한 이러한 경우, M에는 5개의 짝수 벡터(1, 2, 4, 5, 7)와 3개의 홀수 벡터(8, 11, 13)가 있다.
물론, 앨리어싱 트리플의 수는 벡터를 짝수 또는 홀수로 간주하는 방식에 따라 변하지 않으며 여전히 3 개이다.
v=1,...,15로 달라질 때, M에 포함된 짝수 벡터의 개수인
Figure 112020124422292-pat00096
의 분포는, 다음과 같다.
3, 5, 4, 4, 5, 3, 4, 5, 4, 4, 3, 3, 4, 4, 1
상기 (A2)단계(S120)에서는, 크기가 r인 열벡터 중 행벡터 v를 곱한 값이 0인 열벡터를 제1열벡터로, 0이 아닌 열벡터를 제2열벡터로 구분하였는데, 여기서 제1열벡터는 상기의 v-even인 벡터, 제2열벡터는 상기의 v-odd인 벡터를 가리키는 것으로 본다.
또한 상기 이진 행벡터는 v, 상기 열벡터를
Figure 112020124422292-pat00097
라 할 때, 상기 곱한 값을 구하는 곱셈은
Figure 112020124422292-pat00098
의 순서로 곱하여진다.
따라서 상기 (A3)단계(S130)에서는, 데이터부분행렬 M은 1개의 v-even 벡터와 k-1개의 v-odd 벡터로 이루어지도록 구성한다.
또한 상기 (A4)단계(S140)에서는, 체크부분행렬C는 r-1개의 v-even 벡터와 1개의 v-odd 벡터로 이루어지도록 구성한다.
이러한 체크부분 행렬은 가역적인 행렬로, 역행렬이 존재하는 형태로 구성하며, 그 중 단위 행렬로 C를 구성하는 경우에는 이러한 H행렬은 해밍코드에 해당하게 된다.
이러한 경우 앨리어싱 개수의 하한은
Figure 112020124422292-pat00099
개가 보장된다.
[표 1]은 r=4, 5, 6, 7, 8에 대한 실험적 평균 앨리어싱 수와 본 발명의 실시예에 의한 최소 앨리어싱 수를 나타낸다.
r Minimal aliasings Average
4 3
Figure 112020124422292-pat00100
4.30747
5 7
Figure 112020124422292-pat00101
19.3087
6 15
Figure 112020124422292-pat00102
81.3117
7 31
Figure 112020124422292-pat00103
333.306
8 63
Figure 112020124422292-pat00104
1349.32
도 5는 앨리어싱의 발생 분포도이다.
도 5를 참조하면, 무작위로 선택된 백만 개의 패리티 검사 매트릭스에서 앨리어싱 수의 분포를 보여준다.
[표 1] 및 도 5에 나타난 바와 같이 SEC를 H의 열벡터들이 모두 0이 아니고 중복되지 않으며, 체크부분행렬 C가 역행렬이 존재하도록 설계하는 규칙대로만 설계할 경우 평균값의 분포도가 r이 커질수록 매우 높아지는 것을 알 수 있다.
따라서 본 발명의 실시예에 의할 때 최소 앨리어싱(minimal aliasings)이 발생하도록 SEC를 설계할 수 있다.
도 6은 본 발명의 실시예에 의한 최소 앨리어싱 에러 정정 코드 제공 시스템의 구성도이다.
도 6을 참조하면, 본 발명의 실시예에 의한 최소 앨리어싱 에러 정정 코드 제공 시스템은 r*n 패리티 체크 행렬 H을 갖는 코드 워드를 생성하는 인코더 회로(100), 신드롬에 기초하여 정정회로를 포함하는 ECC를 구현하는 디코더 회로(200)를 포함한다.
여기서 ECC는, 단일 오류 정정(Single Error Correction; 이하 SEC)를 포함하며, 상기 패리티 체크 행렬 H는, 모든 열벡터가 각각 0이 아닌 서로 다른 이진 값을 갖는 것이다.
여기서 인코더 회로(100)는, r 크기의 0이 아닌 이진 행벡터 v를 특정하고, r 크기의 0이 아닌 이진 열벡터 중 상기 행벡터 v를 곱한 결과값이 0인 열벡터를 제1열벡터, 상기 결과값이 0이 아닌 열벡터를 제2열벡터로 구분한 후, 상기 데이터부분행렬 M이 상기 제1열벡터 중 1개 및 상기 제2열벡터 중 k-1개를 포함하도록 구성하고, 상기 체크부분행렬 C이 상기 제1열벡터 중 r-1개, 상기 제2열벡터 중 1개를 포함하도록 구성한다.
이와 같이 데이터부분행렬 M과 체크부분행렬 C를 포함하는 패리티 체크 행렬 H를 생성한다.
여기서 인코더 회로(100)의 최소 앨리어싱을 갖는 패리티 체크 행렬을 구성하는 방법은 상기 방법발명의 설명으로 기재한 바와 동일하다.
여기서도 체크부분행렬 C는 가역적인 행렬이고, 그 중에서 단위 행렬인 경우에는 패리티 체크 행렬 H가 해밍코드로 성립한다.
100 : 인코더 회로
200 : 디코더 회로

Claims (10)

  1. 최소 앨리어싱 에러 정정 코드(Error Correction Code; 이하 ECC) 제공 방법에 있어서,
    (A) 인코더 회로는 길이 k를 갖는 메시지 워드를 수신하여 k 데이터 비트를 포함하는 r*k 데이터부분행렬 M 및 r 체크 비트를 포함하는 r*r 체크부분행렬 C를 포함하는 r*n 패리티 체크 행렬 H을 갖는 코드 워드를 생성하는 인코딩 단계; 및
    (B) 디코더 회로는 상기 코드 워드를 수신하고, 상기 코드 워드 및 상기 패리티 체크 행렬 H를 이용하여 생성한 신드롬에 기초하여 상기 코드 워드에 포함된 에러 비트들의 적어도 일부를 정정하는 정정회로를 포함하는 ECC를 구현하는 디코딩 단계;
    를 포함하되,
    상기 r, k, n은 1 이상의 자연수이며, n=k+r이고,
    Figure 112022043545065-pat00113
    을 만족하고,
    상기 (A)단계는,
    (A1) 상기 인코더 회로는, r 크기의 0이 아닌 이진 행벡터 v를 특정하는 단계;
    (A2) 상기 인코더 회로는, r 크기의 0이 아닌 이진 열벡터 중 상기 행벡터 v를 곱한 결과값이 0인 열벡터를 제1열벡터, 상기 결과값이 0이 아닌 열벡터를 제2열벡터로 구분하는 단계;
    (A3) 상기 인코더 회로는, 상기 데이터부분행렬 M이 상기 제1열벡터 중 1개 및 상기 제2열벡터 중 k-1개를 포함하도록 구성하는 단계; 및
    (A4) 상기 인코더 회로는, 상기 체크부분행렬 C이 상기 제1열벡터 중 r-1개, 상기 제2열벡터 중 1개를 포함하도록 구성하는 단계;
    를 포함하는 것을 특징으로 하는 최소 앨리어싱 에러 정정 코드 제공 방법.
  2. 제1항에 있어서,
    상기 ECC는,
    단일 오류 정정(Single Error Correction; 이하 SEC)를 포함하며,
    상기 패리티 체크 행렬 H는,
    모든 열벡터가 각각 0이 아닌 서로 다른 이진 값을 갖는 것
    을 특징으로 하는 최소 앨리어싱 에러 정정 코드 제공 방법.
  3. 삭제
  4. 제1항에 있어서,
    상기 체크부분행렬 C는,
    가역적인 행렬인 것
    을 특징으로 하는 최소 앨리어싱 에러 정정 코드 제공 방법.
  5. 제1항에 있어서,
    상기 체크부분행렬 C는,
    단위 행렬인 것
    을 특징으로 하는 최소 앨리어싱 에러 정정 코드 제공 방법.
  6. 최소 앨리어싱 에러 정정 코드(Error Correction Code; 이하 ECC) 제공 시스템에 있어서,
    길이 k를 갖는 메시지 워드를 수신하여 k 데이터 비트를 포함하는 r*k 데이터부분행렬 M 및 r 체크 비트를 포함하는 r*r 체크부분행렬 C를 포함하는 r*n 패리티 체크 행렬 H을 갖는 코드 워드를 생성하는 인코더 회로; 및
    상기 코드 워드를 수신하고, 상기 코드 워드 및 상기 패리티 체크 행렬 H를 이용하여 생성한 신드롬에 기초하여 상기 코드 워드에 포함된 에러 비트들의 적어도 일부를 정정하는 정정회로를 포함하는 ECC를 구현하는 디코더 회로;
    를 포함하되,
    상기 r, k, n은 1 이상의 자연수이며, n=k+r이고,
    Figure 112022043545065-pat00114
    을 만족하고,
    상기 인코더 회로는,
    r 크기의 0이 아닌 이진 행벡터 v를 특정하고, r 크기의 0이 아닌 이진 열벡터 중 상기 행벡터 v를 곱한 결과값이 0인 열벡터를 제1열벡터, 상기 결과값이 0이 아닌 열벡터를 제2열벡터로 구분한 후, 상기 데이터부분행렬 M이 상기 제1열벡터 중 1개 및 상기 제2열벡터 중 k-1개를 포함하도록 구성하고, 상기 체크부분행렬 C이 상기 제1열벡터 중 r-1개, 상기 제2열벡터 중 1개를 포함하도록 구성하는 것을 특징으로 하는 최소 앨리어싱 에러 정정 코드 제공 시스템.
  7. 제6항에 있어서,
    상기 ECC는,
    단일 오류 정정(Single Error Correction; 이하 SEC)를 포함하며,
    상기 패리티 체크 행렬 H는,
    모든 열벡터가 각각 0이 아닌 서로 다른 이진 값을 갖는 것
    을 특징으로 하는 최소 앨리어싱 에러 정정 코드 제공 시스템.
  8. 삭제
  9. 제6항에 있어서,
    상기 체크부분행렬 C는,
    가역적인 행렬인 것
    을 특징으로 하는 최소 앨리어싱 에러 정정 코드 제공 시스템.
  10. 제6항에 있어서,
    상기 체크부분행렬 C는,
    단위 행렬인 것
    을 특징으로 하는 최소 앨리어싱 에러 정정 코드 제공 시스템.
KR1020200155665A 2020-11-19 2020-11-19 최소 앨리어싱 에러 정정 코드 제공 방법 및 시스템 KR102423489B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200155665A KR102423489B1 (ko) 2020-11-19 2020-11-19 최소 앨리어싱 에러 정정 코드 제공 방법 및 시스템
US17/524,803 US11700017B2 (en) 2020-11-19 2021-11-12 Method and system for providing minimal aliasing error correction code

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200155665A KR102423489B1 (ko) 2020-11-19 2020-11-19 최소 앨리어싱 에러 정정 코드 제공 방법 및 시스템

Publications (2)

Publication Number Publication Date
KR20220068661A KR20220068661A (ko) 2022-05-26
KR102423489B1 true KR102423489B1 (ko) 2022-07-21

Family

ID=81586915

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200155665A KR102423489B1 (ko) 2020-11-19 2020-11-19 최소 앨리어싱 에러 정정 코드 제공 방법 및 시스템

Country Status (2)

Country Link
US (1) US11700017B2 (ko)
KR (1) KR102423489B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140245096A1 (en) 2013-02-28 2014-08-28 Ravi H. Motwani Single-bit error correction
US20180203761A1 (en) 2017-01-19 2018-07-19 Intel Corporation Targeted aliasing single error correction (sec) code
US20200210284A1 (en) * 2018-12-28 2020-07-02 Intel Corporation Minimal aliasing bit-error correction code

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10382069B2 (en) * 2015-08-11 2019-08-13 Apple Inc. Data encoding by efficient inversion of a parity-check sub-matrix
KR102258140B1 (ko) * 2017-07-06 2021-05-28 삼성전자주식회사 반도체 메모리 장치의 에러 정정 회로, 반도체 메모리 장치 및 메모리 시스템
KR20200099438A (ko) * 2019-02-14 2020-08-24 에스케이하이닉스 주식회사 메모리 컨트롤러

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140245096A1 (en) 2013-02-28 2014-08-28 Ravi H. Motwani Single-bit error correction
US20180203761A1 (en) 2017-01-19 2018-07-19 Intel Corporation Targeted aliasing single error correction (sec) code
US20200210284A1 (en) * 2018-12-28 2020-07-02 Intel Corporation Minimal aliasing bit-error correction code

Also Published As

Publication number Publication date
US11700017B2 (en) 2023-07-11
US20220158656A1 (en) 2022-05-19
KR20220068661A (ko) 2022-05-26

Similar Documents

Publication Publication Date Title
US6662333B1 (en) Shared error correction for memory design
Tshagharyan et al. Experimental study on Hamming and Hsiao codes in the context of embedded applications
US6981196B2 (en) Data storage method for use in a magnetoresistive solid-state storage device
US20180167088A1 (en) Error-Correcting Code Method and System with Hybrid Block Product Codes
US9696923B2 (en) Reliability-aware memory partitioning mechanisms for future memory technologies
US20220368354A1 (en) Two-level error correcting code with sharing of check-bits
US20170017545A1 (en) Error correction device, semiconductor storage device, and error correction method
Pae et al. Minimal aliasing single-error-correction codes for dram reliability improvement
JP2506936B2 (ja) メモリの誤り検査方式
US11601137B2 (en) ECC memory chip encoder and decoder
KR102423489B1 (ko) 최소 앨리어싱 에러 정정 코드 제공 방법 및 시스템
US10970166B2 (en) Memory system and method of controlling non-volatile memory
KR20210132784A (ko) 메모리 장치 및 메모리 장치로부터 데이터를 읽는 방법
US11949428B2 (en) Iterative error correction in memory systems
US11024402B2 (en) Memory system and operation method thereof
US11309918B2 (en) Memory system
US10951238B1 (en) Memory system and method for controlling non-volatile memory
US20160269046A1 (en) Memory controller, memory system, and decoding method
KR101304570B1 (ko) 패리티 체크 행렬 생성 방법, 이를 이용한 오류 정정 방법 및 장치, 오류 정정 장치용 디코더 그리고 오류 정정 장치를 포함하는 메모리 및 전자장치
US8756473B1 (en) Solid state device coding architecture for chipkill and endurance improvement
Sim et al. Design of Two Interleaved Error Detection and Corrections Using Hsiao Code and CRC
US20150121170A1 (en) Storing Data by an ECC Memory
US10191807B2 (en) Memory systems and operation method thereof
US10268547B2 (en) Memory protection device and method
JPS5878241A (ja) 符号化デ−タの誤り検出訂正方式

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant