KR102633829B1 - 버스트 에러 정정 코드 생성 방법, 컴퓨터 판독 가능한 기록 매체, 컴퓨터 프로그램 및 장치 - Google Patents

버스트 에러 정정 코드 생성 방법, 컴퓨터 판독 가능한 기록 매체, 컴퓨터 프로그램 및 장치 Download PDF

Info

Publication number
KR102633829B1
KR102633829B1 KR1020210192961A KR20210192961A KR102633829B1 KR 102633829 B1 KR102633829 B1 KR 102633829B1 KR 1020210192961 A KR1020210192961 A KR 1020210192961A KR 20210192961 A KR20210192961 A KR 20210192961A KR 102633829 B1 KR102633829 B1 KR 102633829B1
Authority
KR
South Korea
Prior art keywords
code
length
burst error
syndrome
maximum
Prior art date
Application number
KR1020210192961A
Other languages
English (en)
Other versions
KR20230102657A (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 KR1020210192961A priority Critical patent/KR102633829B1/ko
Priority to US18/090,632 priority patent/US20230216525A1/en
Publication of KR20230102657A publication Critical patent/KR20230102657A/ko
Application granted granted Critical
Publication of KR102633829B1 publication Critical patent/KR102633829B1/ko

Links

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/033Theoretical methods to calculate these checking codes
    • 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/17Burst error correction, e.g. error trapping, Fire 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/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/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/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/1515Reed-Solomon codes
    • 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/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • 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/155Shortening or extension of codes
    • 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/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/159Remainder calculation, e.g. for encoding and syndrome calculation
    • 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/27Coding, 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 using interleaving techniques
    • H03M13/2735Interleaver using powers of a primitive element, e.g. Galois field [GF] interleaver
    • 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/611Specific encoding aspects, e.g. encoding by means of decoding
    • 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/618Shortening and extension of codes

Landscapes

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

Abstract

본 발명은 버스트 에러 정정 코드 생성 방법, 컴퓨터 판독 가능한 기록 매체, 컴퓨터 프로그램 및 장치에 관한 것으로, 더욱 상세하게는, 반도체 메모리 장치의 오류를 정정하기 위한 코드를 다양한 메시지 길이에 대해 유연하며 복잡도가 낮은 코드로 설계하기 위한 버스트 에러 정정 코드 생성 방법, 컴퓨터 판독 가능한 기록 매체, 컴퓨터 프로그램 및 장치에 관한 것이다.

Description

버스트 에러 정정 코드 생성 방법, 컴퓨터 판독 가능한 기록 매체, 컴퓨터 프로그램 및 장치{METHOD, COMPUTER-READABLE STORAGE MEDIUM, COMPUTER PROGRAM AND APPARATUS FOR DESIGNING BURST ERROR CORRECTION CODE}
본 발명은 버스트 에러 정정 코드 생성 방법, 컴퓨터 판독 가능한 기록 매체, 컴퓨터 프로그램 및 장치에 관한 것으로, 더욱 상세하게는, 반도체 메모리 장치의 오류를 정정하기 위한 코드를 다양한 메시지 길이에 대해 유연하며 복잡도가 낮은 코드로 설계하기 위한 버스트 에러 정정 코드 생성 방법, 컴퓨터 판독 가능한 기록 매체, 컴퓨터 프로그램 및 장치에 관한 것이다.
반도체 메모리 장치는 플래시 메모리 장치와 같은 불휘발성 메모리 장치와 DRAM과 같은 휘발성 메모리 장치로 구분될 수 있다. DRAM(Dynamic random access memory), SRAM(Static random access memory)와 같은 휘발성 메모리에서 더욱 고집적화 및 저전력 구동화된 CMOS(Complementary metal oxide semiconductor)의 일시적 오류 발생률(SER, soft error rate)이 증가하는 추세이다.
기존의 오류들은 대부분 1비트 오류가 발생했기 때문에 공간 및 지연 오버헤드를 최소화하는 SEC(Single error correction) 특성을 갖는 부호를 이용하였다.
하지만 다중 오류(MCU, multi cell upset)의 발생률이 증가하는 환경에서는 추가적인 패리티를 이용하여 다중 오류를 정정할 수 있는 부호가 필요하다. 다중 오류를 정정하기 위한 부호로 BCH(Bose-Chaudhuri-Hocquenghem)/RS(Reed-Solomon)부호를 이용할 수 있지만 메모리의 특성상 많은 패리티의 길이를 갖게 되면 공간 및 지연 오버헤드가 크다는 단점을 갖는다. 이를 개선하기 위해 다중 오류의 모든 패턴에 대해서 정정하지 않고 상대적으로 빈번하게 발생하는 특정 오류 패턴에 대해 정정하는 부호가 제안되었다.
다중 오류의 패턴에 대한 연구 결과, 물리적으로 가까운 셀에서 소프트 오류(soft error)가 집중적으로 발생하는 것이 확인되었다.
따라서 인접한 셀들 간에 발생한 다중 오류를 정정하는 SEC-DED-DAEC(Single error correction-double error detection-double adjacent error correction)부호, SEC-DED-TAEC(Single error correction double error detection-triple adjacent error correction) 부호 등이 제안되었다. 이러한 메모리 오류 정정 부호는 BCH/RS 부호보다 패리티를 적게 가지면서 인접한 오류를 정정하여 높은 신뢰도를 갖게 설계되었다.
메모리 오류 정정 부호는 대부분 이진(Binary) 선형 블록 부호 기반의 부호들을 활용하며 1950년도 Hamming SEC 부호부터 1970년도 Hsiao의 SEC-DED 부호, 2007년 Dutta의 SEC-DED-DAEC 부호 등으로 발전해왔다.
기존 제안된 기법들은 일정 조건을 만족하는 부호를 탐색하는 방식으로 부호를 설계하였다. 이러한 방식은 기본적으로 주어진 파라미터에 대해서 각각 설계를 하기 때문에, 데이터 길이가 길어짐에 따라 탐색 복잡도가 급격하게 증가하는 단점이 있다.
따라서, 낮은 복잡도를 갖고, 다양한 메시지 길이에 대해 유연한 설계가 가능한 에러 정정 부호 설계가 필요한 실정이다.
대한민국 등록특허 제10-2324769호 (출원일: 2015년 06월 29일)
본 발명이 해결하고자 하는 기술적 과제는 반도체 메모리 장치의 오류를 정정하기 위한 코드를 다양한 메시지 길이에 대해 유연하며 복잡도가 낮은 코드로 설계하는 버스트 에러 정정 코드 생성 방법, 컴퓨터 판독 가능한 기록 매체, 컴퓨터 프로그램 및 장치를 제공하는 것이다.
본 발명의 목적은 이상에서 언급한 것으로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 본 발명이 속하는 기술 분야의 통상의 지식을 가진 자에게 명확히 이해될 수 있을 것이다.
상기와 같은 목적을 달성하기 위한 본 발명의 실시예에 따른 버스트 에러 정정 코드 생성 방법은, 모부호를 설정하는 단계; 상기 모부호를 기반으로 정정하고자 하는 적어도 둘 이상의 버스트 오류 패턴에 대해서 각 버스트 오류 패턴의 신드롬 집합을 정의하는 단계; 상기 정의된 신드롬 집합들이 서로 소가 되도록 상기 모부호의 PCM(parity check matrix)의 열을 단축시키는 부호 단축 실행 단계; 및 상기 신드롬 집합에 포함된 신드롬 벡터를 기반으로 상기 각 버스트 오류 패턴에 대한 오류 정정 부호를 생성하는 단계를 포함한다.
본 발명의 다른 실시예에 따른 버스트 에러 정정 코드 생성 장치는 모부호를 설정하는 단계; 상기 모부호를 기반으로 정정하고자 하는 적어도 둘 이상의 버스트 오류 패턴에 대해서 각 버스트 오류 패턴에 대응되는 신드롬 집합을 정의하는 단계;
상기 정의된 신드롬 집합들이 서로 소가 되도록 상기 모부호의 PCM(parity check matrix)의 열을 단축시키는 부호 단축 실행 단계; 상기 모부호의 패리티 길이(m)의 범위 내에서 상기 단축된 부호의 길이를 최대화하는 최적의 생성 다항식을 획득하는 단계; 상기 최대 부호 길이에서 상기 패리티 길이m를 차감하여 최대 메시지 길이를 산출하는 단계; 단축 길이(비트)만큼 단축시킨 목표 부호 길이에서 상기 패리티 길이 을 차감하여 목표 메시지 길이를 획득하는 단계; 및 상기 최적의 생성 다항식를 기반으로 상기 목표 메시지 길이를 만족하는 에러 정정 코드를 생성하는 단계를 포함한다.
본 발명의 실시예에 따른 버스트 에러 정정 코드 생성 장치는, 버스트 에러 정정 코드 생성 장치는, 메모리와 통신하는 통신부; 및 상기 메모리의 오류를 정정하기 위한 모부호를 설정하고, 상기 모부호를 기반으로 정정하고자 하는 적어도 둘 이상의 버스트 오류 패턴에 대해서 각 버스트 오류 패턴에 대응되는 신드롬 집합을 정의하며, 상기 정의된 신드롬 집합들이 서로 소가 되도록 상기 모부호의 PCM(parity check matrix)의 열을 단축시키고, 상기 신드롬 집합에 포함된 신드롬 벡터를 기반으로 상기 각 버스트 오류 패턴에 대한 에러 정정 코드를 생성하는 제어부를 포함한다.
본 발명의 다른 실시예에 따른 메모리와 통신하는 통신부; 및 상기 메모리의 오류를 정정하기 위한 모부호를 설정하고, 상기 모부호를 기반으로 정정하고자 하는 적어도 둘 이상의 버스트 오류 패턴에 대해서 각 버스트 오류 패턴에 대응되는 신드롬 집합을 정의하며, 상기 정의된 신드롬 집합들이 서로 소가 되도록 상기 모부호의 PCM(parity check matrix)의 열을 단축시키고, 상기 모부호의 패리티 길이(m)의 범위 내에서 상기 단축된 부호의 길이를 최대화하는 최적의 생성 다항식을 구하고, 상기 최대 부호 길이에서 상기 패리티 길이m를 차감하여 최대 메시지 길이를 구하고, 단축 길이(비트)만큼 단축시킨 목표 부호 길이에서 상기 패리티 길이 을 차감하여 목표 메시지 길이를 얻으며, 상기 최적의 생성 다항식를 기반으로 상기 목표 메시지 길이를 만족하는 부호를 설계하는 제어부를 포함한다.
본 발명의 일 실시예에 따르면, 버스트 에러 정정 코드 생성 방법, 컴퓨터 판독 가능한 기록 매체, 컴퓨터 프로그램 및 장치를 제공함으로써 반도체 메모리 장치의 오류를 정정하기 위한 코드를 다양한 메시지 길이에 대해 유연하며 복잡도가 낮은 코드로 설계할 수 있다.
본 발명의 효과는 이상에서 언급한 것으로 제한되지 않으며, 언급되지 않은 또다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술 분야의 통상의 지식을 가진 자에게 명확히 이해될 수 있을 것이다.
도 1은 (n, k) 블록 부호의 구조를 도시하는 도면이다.
도 2는 블록 부호의 일반적인 채널 모델을 도시하는 도면이다.
도 3은 수신 신호의 복호 과정을 도시하는 블록도이다.
도 4는 본 발명의 일 실시예에 의한 단축 기법을 이용한 블록 부호의 구조를 도시한다.
도 5는 본 발명의 일 실시예에 따른 버스트 에러 정정 코드 생성 방법을 설명하기 위한 순서도이다.
도 6은 본 발명의 다른 실시예에 따른 버스트 에러 정정 코드 생성 방법을 설명하기 위한 순서도이다.
도 7은 본 발명의 일 실시예에 따른 버스트 에러 정정 코드 생성 장치를 설명하기 위한 블록도이다.
본 발명의 목적 및 효과, 그리고 그것들을 달성하기 위한 기술적 구성들은 첨부되는 도면과 함께 상세하게 뒤에 설명이 되는 실시 예들을 참조하면 명확해질 것이다. 본 발명을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 뒤에 설명되는 용어들은 본 발명에서의 구조, 역할 및 기능 등을 고려하여 정의된 용어들로써 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다.
그러나 본 발명은 이하에서 개시되는 실시 예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있다. 단지 본 실시 예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 오로지 특허청구범위에 기재된 청구항의 범주에 의하여 정의될 뿐이다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
이하에서는 첨부한 도면을 참조하며, 본 발명의 바람직한 실시예들을 보다 상세하게 설명하기로 한다.
본 발명의 일 실시예에 따른 메모리 에러 정정 코드(Error correction code, 이하 ECC)는 제한된 공간 및 지연 오버헤드를 고려하여 짧은 길이의 패리티 비트만을 활용하여 신뢰도를 높이는 부호로 설계된다.
메모리 집적도가 증가할수록 오류가 다중으로 발생하는 경우가 증가하고 있다. 기존에 다중 오류를 정정하기 위한 부호로서 BCH/RS 부호가 존재하지만, 이러한 부호에 의하면 패리티의 길이가 길어짐에 따라 공간 및 지연 오버헤드가 커지는 단점이 있다.
따라서, 본 발명의 일 실시예에서는 특정 오류 패턴들만 선택적으로 정정하는 것이 가능한 부호를 설계하고자 한다.
특히, 물리적으로 인접한 셀에서 소프트 오류(soft error)가 발생활 확률이 높아지는 특성을 이용하여 인접한 셀에서 발생하는 다중 오류를 정정하는 부호를 설계하고 그 외에도 특정 오류 패턴이 군집하여 발생하는 경우, 특정 패턴에 대해 선택적으로 정정 가능한 부호를 설계하는 방법을 개시한다.
본 발명의 일 실시예에서는, 조건을 만족하는 후보들 중에서 높은 복잡도의 탐색 기반 부호 설계가 아닌 순회 부호의 구조를 활용한 상대적으로 낮은 복잡도의 부호 설계를 제안한다.
특히, 단순히 열 선택 방식이 아닌 유한 필드(finite field)를 기반으로 설계된 순회 부호의 속성을 이용하여 PCM을 설계하는 방법을 제안한다.
오류 패턴의 수와 종류에 따라 모든 오류 class 정정을 보장하는 부호를 유연하게 생성할 수 있고, 목표로 하는 메시지 길이 및 모든 길이에 대해 부호를 낮은 복잡도로 설계할 수 있다.
이하에서는 본 발명에 관한 구체적인 내용의 설명에 앞서 이해의 편의를 위해, 본 발명의 일 실시예에 따른 버스트 에러 정정 코드 생성 방법의 기본이 되는 개념을 먼저 설명하기로 한다.
선형 블록 부호
메모리 반도체는 데이터의 빠른 처리를 위해 저지연 및 고신뢰화된 오류 정정 부호를 필요로 한다. 기존의 메모리는 대부분 1비트 이하의 오류를 가지므로, SEC의 특성을 갖는 Hamming 부호를 기반으로 발전된 부호들을 이용해왔다. Hamming 부호는 1950년도에 제안된 최초의 오류 정정 부호로 1비트 오류를 고칠 수 있는 선형 블록 부호이다.
본 발명의 일 실시예는 이진 블록 부호를 기반으로 개시하고자 한다.
블록 부호는 고정된 길이의 비트를 갖는 부호어(codeword)의 집합으로 구성된다. 길이가 n비트인 블록 부호는 고정된 길이의 메시지 k비트와 패리티m(=n-k)비트로 구성된다. 이때 부호어와 메시지 비트 길이의 비율을 부호율(code rate)이라 한다.
도 1은(n, k) 블록 부호의 구조를 도시한다. (n, k)블록 부호는 길이가 n인 2n개의 점으로 이루어진 벡터 공간에서 2k개의 부호어만 정의하여 사용한다. 이로 인하여 부호어 간에는 Hamming 거리를 확보할 수 있고, 이러한 부호어의 성간 배치는 채널 혹은 메모리 읽기 쓰기 동작에서 발생하는 오류를 정정할 수 있게 해준다.
시스템 모델
도 2는 블록 부호의 일반적인 채널 모델을 도시한다. DRAM 내에서 데이터를 쓰기 동작 시에는 부호화 과정을 통해 k비트의 메시지로부터 m비트의 패리티를 생성하여 저장하고, 읽기 동작 시에는 n비트의 수신 신호로부터 복호화 과정을 통해 k비트의 메시지를 얻는다. 부호화 과정에서는 메시지 벡터와 생성 행렬(G-matrix)과의 곱으로 n비트의 부호어를 저장하고, 복호화 과정에서는 수신 부호어와 PCM(H-matrix)과의 곱으로 신드롬 벡터를 얻고 오류 탐지 및 정정이 가능하다.
생성 행렬(Generator matrix)
블록 부호는 생성 행렬을 이용하여 부호화된다. 조직적 부호(systematic code)는 부호어 내에 메시지가 포함되는 부호이며, 생성 행렬은 다음과 같이 패리티 행렬(P)와 단위 행렬로 구성된다.
DRAM을 위한 ECC 부호는 모두 조직적 부호로 구현되었다. 생성 행렬의 크기는 로, k비트 메시지 벡터가 입력되면 n비트 부호어 벡터가 출력된다.
순회 부호에 기반한 블록 부호는 순회 부호의 생성 다항식을 이용하여 생성 행렬을 표현할 수 있다. Hamming, BCH, RS 부호들의 경우는 갈루아 필드(유한 필드)의 성질을 활용하여 정의된 순회 부호로 생성 행렬 및 PCM을 순회 부호의 생성 다항식을 이용하여 표현할 수 있다. Hamming 부호는 유한 필드의 원시 다항식을 생성 다항식으로 도입하여 정의된다. 크기가 2n인 이진 필드는 다수의 원시 다항식을 가지고 있으며, 원시 다항식의 선택에 따라 다른 구조의 Hamming 부호가 생성된다.
PCM(Parity check matrix)
PCM은 검사하는 벡터가 부호어인지 판별해주는 행렬로 복호 과정에서 오류를 탐지하거나 정정하는데 활용된다. 조직적 부호의 PCM의 구조는 다음과 같다.
PCM은 의 크기를 갖고 단위 행렬과 패리티 행렬(P)로 구성된다. 임의의 부호어에 대해서
이 만족된다. 또한 행렬의 구조상 생성 행렬과 PCM은 다음과 관계를 만족시킨다.
복호 과정에서 길이 비트인 수신 부호어 벡터에 PCM을 곱하여 얻는 비트 벡터를 신드롬 이라 부른다. 신드롬 벡터는 다음과 같이 계산되며,
전송된 부호어와 상관없고, 오류벡터 에 의해서만 결정되는 것을 알 수 있다. 신드롬 벡터가 0인 경우는 오류가 발생하지 않았거나, 드물게 부호어에 해당되는 오류가 발생한 경우이고, 신드롬 벡터가 0이 아닌 경우에는 오류가 발생한 경우이다. 그러므로, 신드롬 값을 이용하여 오류의 유무를 탐지할 수 있다.
신드롬이 오류 패턴에 의해서만 결정되기 때문에, 발생 확률이 높은 오류 패턴의 검출 및 정정에도 활용될 수 있다. PCM의 열벡터는 해당 위치에 단일 오류가 발생한 경우에 신드롬 값이 된다. 따라서 신드롬을 통해 단일 오류의 위치를 유추할 수 있고 오류 정정이 가능하다.
만약 PCM의 열벡터가 중복된다면 단일 오류끼리 신드롬이 공유되어 오정정이 발생할 수 있으므로, PCM의 열벡터들은 이진 패리티 벡터의 패턴이 겹치지 않게 구성된다. Hamming 부호의 경우 PCM의 모든 열이 각각 다르게 구성이 되고, 모든 단일 오류를 정정할 수 있게 된다.
순회 부호로 정의된 Hamming 부호의 PCM은 대응되는 유한 필드가 이고 원시-원소 (primitive element)가 로 표현되는 경우, 아래와 같이 표현될 수 있으며,
Hamming 부호가 의 파라미터를 가지므로, 의 크기는 이 된다. 이 PCM은 각 열을 필드의 원소의 덧셈형 (additive form) 표현 변환하여 표현한 이진 행렬과 등가가 된다. 예를 들어 Hamming 부호의 PCM은 다음과 같이 두 가지 방식으로 표현할 수 있다.
이 예에 대응되는 생성 다항식은 이다. 만약 신드롬 벡터가 인 경우, 부호어의 3번째 비트에서 단일 오류가 발생했음을 가정하고 오류를 정정할 수 있다.
버스트 오류 패턴 집합 및 버스트 오류 패턴 정의
먼저 오류 패턴에 대해 명확하게 정의한다. 오류 패턴은 순환 이동하는 성질을 가지므로 오류 패턴의 시작점을 임의로 설정해도 부호의 파라미터는 동일하다. 오류 패턴의 시작점의 기준을 정하기 위해 오류 버스트 (error burst)를 먼저 정의한다.
오류 패턴의 시작점과 끝점이 1인 이진 시퀀스를 오류 버스트라 하자. 예를 들어 (1)은 길이가 1인 유일한 오류 버스트이고, (11)은 유일한 길이 2인 오류 버스트이며, 길이가 3인 오류 버스트로는 (101), (111)이 있다. 연속된 1로 만들어진 오류 버스트를 인접 오류라 하고, (11), (111), (1111)이 그 예가 된다.
본 발명에서는 주로 단일 버스트 오류 패턴 (single burst error pattern)에 관심이 있기 때문에 오류 버스트를 포함하는 오류 패턴을 이용한다. 이때 오류 버스트가 첫 심볼에서 시작하는 오류 패턴을 대표 버스트 오류 패턴이라 정의하고, 와 같이 표시한다. 예를 들어 오류 버스트 (1), (11), (101) 예에 대한 대표 버스트 오류 패턴은 다음과 같이 주어진다.
버스트 오류 패턴을 순환 이동시키면 주어진 오류 버스트를 포함하는 단일 버스트 오류 패턴들을 얻을 수 있다. 버스트 오류 패턴 중, 부호어 내에 온전히 존재하는 버스트를 non all-around (NAA, 비순환) 버스트라 하고, 부호어 경계 전에서 시작해서 부호어 경계를 지나 끝나는 버스트를 all-around (AA, 순환) 버스트라 한다. 위에서 개시한 대표 버스트 오류 패턴은 NAA 버스트 패턴의 예가 된다. 다음은 비트 인접 오류 버스트 의 AA 버스트 오류 패턴의 예를 들면 다음과 같다.
같은 오류 버스트 패턴 를 포함하는 단일 버스트 오류 패턴들의 집합을 정의할 때, NAA 버스트 오류 패턴만 고려할 수도 있고, AA 버스트 오류 패턴을 포함시킬 수도 있다. 먼저 오류 버스트 에 대해서 NAA 버스트 오류 만을 고려한 NAA 버스트 오류 패턴 그룹을 아래와 같이 정의한다.
위에서 는 오류 버스트 의 길이를 의미한다. (예 ) 또한 는 오류 패턴을 1만큼 순환 이동시키는 동작으로 다음과 같이 정의되고;
번 적용한 동작 (operator)를 의미한다. 이때 버스트 오류 패턴 그룹의 크기는 이 된다. AA 버스트 오류 패턴을 추가하여 아래와 같이 AA 버스트 오류 패턴 그룹을 정의할 수도 있다.
AA 버스트 오류 패턴의 그룹의 크기 의 길이와 상관없이 n이 된다. 본 발명에서는 기본적으로 NAA 버스트 오류 패턴 그룹을 고려한다. 그리고 AA 버스트 오류 패턴에 대한 결과로 확장하고자 한다.
다양한 인접 오류 및 버스트 오류 정정 ECC를 에 대한 정정 능력을 기반으로 잘 정의할 수 있다. 아래와 같이 인접 오류 정정 부호 개념을 정의할 수 있다.
정의 : 을 정정할 수 있는 부호는 SEC 부호라 부른다.
정의 : 를 정정할 수 있는 부호를 부호라 부른다.
부호 중 인 경우는 또한 DAEC 부호이고, 인 경우는 TAEC 부호, 인 경우 QAEC 부호라 부를 수 있다. 표기의 효율성을 위하여 성질은 보다 짧은 인접 오류 버스트 정정 능력을 포함하는 것으로 생각한다. 즉, DAEC 성질은 를 모두 정정하는 것을 의미한다. 2비트 오류 버스트는 (11)만 존재하므로, DAEC는 2-비트 버스트 EC와 동등하다. 1-bit burst EC는 다음과 같이 재귀적으로 정의할 수 있다.
정의 : 다음의 조건을 만족시키는 부호를 -bit burst EC 부호라 한다.
a) -bit burst EC 성질을 갖는다.
b) 을 정정할 수 있다.
예를 들어, 3-bit burst EC 부호는 버스트 오류 그룹의 집합 를 모두 정정하는 부호이다.
버스트 오류 패턴이 등장하는 인덱스 집합 및 인덱스 정의
원시 다항식 로 생성된 에서 의 원시-원을 로 가정한다. 의 원소들은 의 거듭제곱으로 표시할 수 있다. 의 원소 인 경우 의 지수를 반환하는 함수를 다음과 같이 정의한다.
오류 버스트 가 있을 때, 는 대표 버스트 오류 패턴이 되고, 이에 대한 신드롬을 라 하자.
이때, 신드롬 값의 의 제곱 표현의 지수를 라 할 때, 다음과 같은 관계를 얻는다.
이를 '신드롬 지수'라 부르기로 한다. 지수 는 오류 버스트 의 함수이므로, 표현의 명확성을 위해 필요한 경우 와 같이 표현하기로 한다.
정정하고자 하는 버스트 오류 패턴 에 대한 신드롬 지수들을 원소로 하는 집합 를 얻을 수 있다. (여기서 를 간략하게 표현한 것이다.)
예를 들어, DAEC 부호는 오류 버스트 에 대한 오류 패턴들을 정정한다. 대표 버스트 오류 패턴 의 신드롬은 각각 가 되고, 두 신드롬 지수를 다음과 같이 얻을 수 있다.
여기서 는 유한 필드의 생성 다항식 에 따른 필드 연산에 의해서 결정된다. 신드롬 지수들 간의 차이를 이용해서 각 오류 패턴이 겹치지 않으면서 최대로 포함하는 신드롬 집합의 크기를 구할 수 있고 이를 통해 최대 부호어 길이를 계산할 수 있다. 신드롬 지수 는 패리티 비트의 수 과 생성 다항식 에 따라 다른 값을 갖는다. 따라서 주어진 에서 최대 부호 길이를 얻는 알고리듬과 주어진 의 범위 내의 가능한 중에서 최대 부호 길이를 얻는 최적의 생성 다항식 를 구하는 알고리듬을 추후 설명하기로 한다.
전체 신드롬 집합 및 버스트 오류 그룹에 대응되는 신드롬 집합 정의
기존의 Hamming 부호는 SEC의 성질을 갖도록 0을 제외한 모든 신드롬 값이 각각 단일 오류에 대응이 된다. 이에 반해 본 발명에서는 부호 단축을 이용하여 사용하지 않는 신드롬을 특정 오류 패턴에 대응시켜 특정 오류 패턴에 대해 정정 가능하도록 부호를 설계한다. 우선 단축되거나 천공된 Hamming 부호의 경우 모부호의 PCM이 동일한 열을 갖지 않으므로, 단일 비트 오류들 간에는 신드롬이 겹치지 않는다. 앞서 정의한 에 대해서 번째 버스트 오류 그룹 의 신드롬 집합을 로 정의한다. 이때 신드롬 집합 는 신드롬 집합 의 부분 집합이며, 만약 들이 다음 조건을 만족시키면, 에 해당되는 버스트 오류 정정 능력을 갖게 된다.
위에서 는 정정하고자 하는 오류 버스트 의 개수
우리는 PCM 기준으로 오른쪽 부분을 단축한 부호를 연구하므로, 부호길이 를 가정한다. 예를 들어 DAEC 성질을 만족시키기 위해서는 위해서 일 때, 각 버스트 오류 그룹 에 대응되는 신드롬이
와 같이 주어지며, 이때 가 만족되어야 한다. 단축된 부호 길이 의 상대적인 값에 따라서, 조건이 만족되지 않을 수 있는데, 이때는 단축 정도를 늘리는 방법으로 DAEC 부호를 설계할 수 있다.
이하, 본 발명의 일 실시예에 따른 다양한 메시지 길이에 유연하게 대응하는 부호의 PCM에 대해 설명하기로 한다.
본 발명의 일 실시예에서는 조건을 만족하는 후보들 중에서 높은 복잡도의 탐색 기반 부호 설계가 아닌 순회 부호의 구조를 활용한 낮은 복잡도의 부호 설계를 개시한다.
특히, 단순히 열 선택 방식이 아닌 유한 필드(Finite field)를 기반으로 설계된 순회 부호의 속성을 이용하여 PCM을 설계하는 방법을 개시한다. 오류 패턴의 수와 종류에 따라 모든 오류 class 정정을 보장하는 부호를 유연하게 생성할 수 있고, 목표로 하는 메시지 길이 및 모든 길이에 대해 부호를 낮은 복잡도로 설계할 수 있다.
<단축 기법(shortening)을 이용한 부호 설계>
부호의 단축은 조직적 부호에서 메시지 부분에 해당되는 일부 공간을 삭제하여 부호율을 조정하는 선형 블록 부호의 수정 기법이다. 선형 부호가 모부호이고, 단축 길이를 라 하자. 수정된 단축 부호의 파라미터는 와 같이 주어진다. 이러한 단축 과정이 도 4에 도시되어 있다.
본 발명에서는 Hamming 부호를 단축하여 희망하는 버스트 오류 속성을 갖도록 한다. 유한필드 을 기반으로 생성된 Hamming 모부호의 길이 및 PCM column의 수는 이다. 이때, 신드롬 벡터의 길이가 이므로, 0을 제외한 개의 모든 신드롬이 사용되어야 총 개의 1비트 오류 정정이 가능하다. 여기서, 번째 비트만 1인 오류 패턴에 대한 신드롬은 번째 열이 되고, 이 매핑에 따라 신드롬 기반 오류정정이 이루어질 수 있다.
패리티 길이 혹은 모부호의 기반이 되는 유한 필드(finite field)의 크기를 늘리지 않고, 2개 이상의 버스트 패턴에 대해서 오류 정정을 하기 위해서는 각 버스트 오류 그룹별 신드롬 집합의 크기가 줄어야 한다. 이는 부호 단축을 통하여 이룰 수 있는데 PCM의 열을 삭제하면 된다.
본 발명에서는 메시지 부분이 우측에 배치된 조직적 부호의 PCM을 고려한다. 반대로 배치되는 경우에도 동일한 과정으로 발명의 요지를 실현할 수 있다. 부호 단축은 조직적 부호 특성을 유지하기 위하여 우측부터 필요한만큼 순차적으로 열을 삭제하는 방식으로 이루어진다.
신드롬를 0을 제외한 모든 길이 인 모든 이진 벡터의 집합이라 하자. 그리고 집합 을 단일 오류에 대한 신드롬 집합으로 정의하자. 패리티 길이 이 정해져 있을 때, 단축된 부호의 은 단축된 부호에 대응되는 PCM의 열들로 구성된다.
즉, 가 되며, 에 속하는 신드롬 값들을 다른 오류를 정정하는데 사용할 수 있다.
여기서, 정정하고자 하는 2비트 인접 오류들에 대한 신드롬의 집합을 라 하고, 충분한 단축을 통하여 가 서로 소가 되면, 그 단축 부호 및 여기서 더 단축된 부호들은 단일 오류 및 2비트 인접 오류를 정정할 수 있는 부호가 될 것이다.
그리고, 더 많은 종류의 버스트 오류 패턴을 정정하고자 하는 경우에는 각자에 대응되는 신드롬 집합을 정의하고, 이들이 모두 교집합이 없도록 단축을 하면 된다. 단 정정할 오류가 많아질수록 단축된 부호의 길이가 상대적으로 짧아질 것이다.
다시 설명하자면, Hamming 모부호의 PCM 열(column)의 수는 2m-1 이다. 이때 1 비트 오류를 정정하기 위하여 0이 아닌 모든 신드롬이 사용되어야 정정이 가능하다. 패리티 혹은 해당 유한 필드의 크기를 늘리지 않고, 2개 이상의 버스트 패턴에 대해서 오류 정정을 하기 위해서는 각 클래스별 신드롬 집합의 크기가 줄어야 하는데 이는 부호 단축을 통하여 이룰 수 있다. 부호의 단축은 PCM의 열을 삭제하는 것으로 달성할 수 있다.
본 발명의 일 실시예에서는 PCM의 우측부터 필요한 만큼 순차적으로 열을 삭제하는 부호 단축을 기본적으로 실행한다.
부호를 단축하는 기법은 메시지 길이를 ls비트 줄이는 방법으로, (ns, ks)=(n-ls, k-ls)의 파라미터를 갖는 부호로 변형한다.
SEC(Single error correction)를 만족하는 신드롬 부분 집합 S1을 PCM으로 갖고 나머지 부분을 연속적으로 단축시킨다. 즉, PCM H에서 SEC에 대한 신드롬 부분 집합 S1을 제외한 부분을 단축시키면 다른 오류 패턴에 대해서 신드롬이 겹치지 않으면서 정의한 오류 패턴이 정정 가능한 부호를 설계할 수 있다.
도 4는 본 발명의 일 실시예에 의한 단축 기법을 이용한 블록 부호의 구조를 도시한다.
이때, 총 신드롬 집합의 크기는 유지되지만, 길이가 줄어들기 때문에 단일 오류 신드롬 집합 S1의 크기가 줄어들고, S-S1에 해당되는 신드롬을 다른 오류를 정정하는데 사용할 수 있다.
위 예시는 단일 비트 오류와 인접 2비트 오류, 이 두 버스트 오류 클래스를 정정하고자 하는 경우이고, 더 많은 종류의 버스트 오류 패턴을 정정하고자 하는 경우에는 각자에 대응되는 신드롬 집합이 정의되고, 이들이 서로소인 경우 모든 버스트 오류 패턴을 정정할 수 있게 된다.
<순회 부호의 속성을 이용한 Hamming 부호 기반 버스트 에러 정정 코드 생성>
본 발명의 실시예에서는 2m-1의 길이를 갖는 이진 Hamming 부호를 단축하여 단일 버스트 오류 정정 부호를 설계하기로 한다.
설계에서 순회 부호의 성질을 활용하기 위하여 원시 systematic Hamming 부호를 기본적으로 고려한다. (n, k) 원시 이진 Hamming 부호는 갈루아 필드 GF(2m)를 생성하는 원시 다항식을 생성 다항식(generator polynomial)으로 갖는 부호이며, α가 GF(2m)의 원시 원소(primitive element)일 때, 패리티 검사 행렬(PCM)은 아래 수학식 1와 같이 의 원소를 기반으로 표현될 수 있다.
만약 위 행렬의 필드의 원소들을 덧셈 형식 즉, 차 다항식으로 표시하고, 계수들을 이진 벡터로 표시하면 이진 PCM이 얻어지며, 이는 이진 Hamming 부호의 일반적인 PCM과 일치한다. 위의 PCM 형태의 경우 신드롬 의 원소로 주어지며, 이 또한 이진 행렬 표현을 사용하는 경우 길이가 인 신드롬 벡터와 등가가 된다.
이러한 PCM의 형태 때문에 번째 단일 비트 오류의 신드롬은 가 된다. 버스트 오류 패턴 그룹에 대한 신드롬 집합은 는 필드 원소 (의 연속된 제곱)의 집합이 된다. 그러므로 버스트 오류 그룹에 대한 신드롬의 중첩여부를 쉽게 확인할 수 있다. 그러므로 단축의 양을 조절하여, 원하는 버스트 오류 그룹에 대응되는 신드롬들이 서로 겹치지 않도록 만들 수가 있다. 이때 단일 오류 이외에 미리 정한 여러 개의 버스트 패턴에 대해 버스트 오류 그룹들에 대한 정정 능력을 갖도록 할 수 있다. 메모리 물성이나 구조적 특징에 따라 발생 확률이 높은 오류 패턴이 존재할 수 있고, 대표적인 예가 이중 인접 및 삼중 인접 오류이다. 만약 주어진 에 대하여 이 방법으로 원하는 길이의 부호를 구성할 수 없는 경우에는 을 증가시켜 모부호의 길이를 키워서 시도하면 된다.
이러한 부호 단축을 체계적으로 진행하기 위하여 우선 모부호를 제시하고 PCM의 열을 점진적으로 선택하여 신드롬이 중첩하지 않는 조건을 만족시키는 최대 길이의 단축 부호를 구성한다.
이 방법을 활용하여 주어진 에 대해서 DAEC, TAEC, QAEC, burst EC 특성을 만족시키는 최대 길이의 부호를 만들 수 있게 된다.
이하, 최대 부호 길이 를 선택하는 방법, 최적 생성 다항식을 선택하는 방법, 및 목표 메시지 길이가 주어졌을 때 패리티 길이(m)와 생성 다항식를 구하는 방법을 설명하기로 한다.
<생성 다항식 에 대한 최대 부호 길이 선택>
본 발명에서 사용하는 부호는 이미 언급한 바와 같이 갈루아 필드의 원시 다항식을 생성 다항식으로 갖는 순회 부호로 원시 Hamming 부호이다. 단축 기법을 이용하여 부호 및 메시지의 길이를 줄이면, 해당 메시지 비트 위치를 정정하는 신드롬들은 사용하지 않게 되어 다른 오류 패턴의 정정에 이용할 수 있다.
따라서 기존 SEC을 만족하는 Hamming 모부호를 단축하여 대응되는 단일 오류가 없는 신드롬들을 다중 오류 패턴에 대응시켜 정정하고자 한다.
먼저 원시 다항식 로 정의된 필드 을 가정한다. 이때 길이 인 Hamming 모부호가 정의된다. 필드가 생성되면 정정하려는 버스트 오류 집합을 설정한다. 버스트 오류 집합은 다음 수학식 2와 같이 나타낼 수 있다.
여기서 는 정정하고자 하는 오류 버스트 패턴의 수이고 번째 오류 버스트이다. 오류 버스트 집합 에 대하여 단일 버스트 오류 정정 성능을 갖는 부호를 단축을 통하여 설계할 수 있다.
생성 다항식 로 만들어진 필드 의 연산 속성에 따라서 희망하는 오류 정정 속성을 만족하는 단축 부호의 최대 길이를 구할 수 있다. 단축 부호가 결정되면, 각 버스트 패턴에 대응되는 단일 버스트 오류 그룹 들이 정의되고, 이 오류 그룹들에 대한 신드롬 집합 들도 결정된다.
여기서, 정해진 모부호에 대해서 오류 정정 성질을 만족시키는 최대 길이의 단축 부호를 찾는 것은 두가지 방법으로 달성 가능하다. 첫째 모부호의 맨 좌측 열부터 열을 순서대로 선택하며 신드롬 집합 간 중첩이 생기기 전에 정지하는 기법을 사용할 수 있다. 또 다른 방법으로는 역으로 모부호에서 시작해서 단축량을 늘려가면서 신드롬 집합들이 중첩되지 않는 최소의 단축량을 찾는 것이다. 두 방법 모두 동일한 결과를 제공하므로, 본 발명에서는 첫 번째 방법을 알고리듬 1과 같이 제공한다.
정의한 파라미터를 이용하여 최대 부호 길이를 선택하는 알고리듬 을 제안한다. 생성 다항식 가 주어진 상황에서 고치려는 번째 오류 버스트와 대표 버스트 오류 패턴을 정의한다. 생성된 필드에서 대표 버스트 오류 패턴에 대한 신드롬에 대응되는 신드롬 지수를 라 하자.
제안하는 부호는 각 오류 패턴을 정정하는 신드롬들이 겹치지 않도록 설계하기 위해서 신드롬 집합의 시작점인 신드롬 지수 를 오름차순으로 정렬한 후에 신드롬 지수간 값의 차이를 이용하여 겹치지 않도록 설정하여 의 정정이 가능하도록 하는 최대 부호 길이를 계산한다. 먼저 신드롬 지수를 오름차순으로 정렬하여 순서대로 인덱싱 하면 다음 수학식 3과 같은 조건이 만족된다.
이에 대응되는 인덱스의 permutation을 이 만족된다.
오름차순으로 정렬된 후 인접한 신드롬 지수간 값의 차이는 겹치지 않는 연속된 신드롬 집합의 최대 크기를 결정한다.
오류 버스트의 길이에 따라 신드롬 집합의 크기가 달라지므로, 을 더해줌으로써 를 정정하기 위한 최대 부호 길이를 얻을 수 있다. 모든 버스트 오류 그룹을 정정할 수 있는 부호를 얻기 위해서는 의 최소값을 최대 단축 부호 길이로 결정해야 한다. 최대 부호 길이 에서 패리티 길이 를 빼면 최대 메시지 길이를 얻을 수 있다. 번째 버스트 오류 그룹 에 대한 신드롬 집합
와 같이 표현될 것이고, 서로 소인 집합이 된다. 예를 들면 SEC에 대한 버스트 오류 패턴 에 대한 신드롬 지수 이고 대응되는 신드롬 집합은 을 갖는다. 이때 우측부터 단축시키는 길이는 가 된다. 생성 다항식 에 대해서 알고리듬 1을 통해 최대 부호 길이, 최대 메시지 길이, 단축된 비트 길이를 얻을 수 있다.
<알고리듬 : 생성 다항식에 대한 최대 부호 길이 선택>
:
예시 1: 주어진 패리티 길이가 이며, 의 생성다항식 인 경우 Hamming 단축 부호 기반의 NAA 인접 오류만을 고려한 DAEC 부호를 설계하려 한다. 이 부호의 최대 부호 길이를 알고리듬 을 이용하여 얻을 수 있다. 언급한 바와 같이 DAEC 부호는 가지의 오류 버스트 패턴 에 대한 버스트 오류 정정 능력을 갖는 부호이다. 이는 버스트 오류 패턴, 과 버스트 오류 그룹 이 주어진다. 다음으로 버스트 오류 패턴 그룹과 PCM의 곱에 대응되는 원시-원 의 지수 인덱스 를 찾는다. 아래 표 1은 에 의해 생성된 필드이고, 에 의해 생성된 필드와 인덱스 선택 예시를 나타낸다.
[표 1]
버스트 오류 패턴와 PCM의 곱에 대응되는 원시-원 의 지수 인덱스는 각각 을 얻을 수 있다. 그리고 각 버스트 오류 패턴의 신드롬 집합 에 인덱스를 씩 더해가며 신드롬 집합을 채운다. 그러다 다른 버스트 오류 신드롬 집합에 겹치게 되면 최대 부호 길이를 얻을 수 있다.
위의 예에서 생성된 최대 부호 길이는 14, 최대 메시지 길이는 9, 단축된 비트 개수는 17 다. 다음 행렬은 예시에서 생성한 PCM을 나타낸다.
< 최적 생성 다항식 선택 >
전술한 알고리듬 1을 통해 주어진 패리티 길이, 원시 다항식로 만들어진 에 대해 최대 부호 길이 와 최대 메시지 길이를 얻을 수 있다.
이 알고리듬의 결과물을 살펴보면, 버스트 오류 정정 조건을 만족시키는 단축 부호의 길이는 대표 오류 패턴의 신드롬인 들의 exponent인 들의 값에 따라서 달라진다.
그런데 의 연산 구조가 필드 생성 원시 다항식에 따라 달라지므로, 해당 차수의 원시 다항식들을 시도해 볼 수 있다.
본 발명에서는 원시 다항식 의 탐색을 통하여 단축 최대 길이를 최대화하는 최적의 를 찾는다. 이 과정은 알고리듬 2에 기술되어 있다.
알고리듬 2는 패리티 길이의 범위 내에서 단축 부호 길이를 최대화하는 를 찾고, 이를 최적의 생성 다항식라고 부른다. 먼저 패리티 길이 이 주어지면 사용할 수 있는 원시 다항식 의 범위 및 종류가 정해진다. 와 같이 정수로 (16진수로 표기) 변환할 때, 범위는 다음 수학식 4와 같다.
범위 내의 원시 다항식으로 생성한 부호의 최대 부호 길이중에서 최댓값을 로 정의한다. 이때 최대 메시지 길이의 최댓값를 갖는 부호의 생성 다항식을 최적의 생성 다항식라 한다.
< 알고리듬 2: 주어진 패리티 길이에서 최적의 생성 다항식선택 >
예시 2: 주어진 패리티 길이가 이며, 의 범위 내의 원시 다항식 인 Hamming 단축 부호 기반으로 DAEC 부호를 설계할 경우, 의 범위는 이 된다. 아래 표에서는 이므로 를 선택할 수 있다. 따라서 알고리듬 2를 통해 패리티 길이의 범위 내에서 가장 긴 길이의 부호를 생성하는 를 선택할 수 있다. 아래 표 2는 패리티 길이인 범위에서 최적의 생성 다항식 선택하는 예시를 나타낸다.
[표 2]
< 목표 메시지 길이 를 만족하는 부호 설계 >
앞 절을 통하여 각 패리티 길이 에 대한 최대 메시지 길이를 얻었다. 이를 이용하여 단축 기법을 통해 목표 메시지 길이를 만족하는 부호를 설계하는 방법을 제시한다. 목표 메시지 길이비트만큼 단축시킨 목표 부호 길이 에서 패리티 길이 을 빼면 목표 메시지 길이를 얻을 수 있다. 만약 목표 부호 길이가 최대 부호 길이보다 큰 경우에는 더 큰 모부호를 이용한다. 최대 부호 길이보다 목표 부호 길이가 작은 경우 중에서 최소 패리티 길이를 선택하고 알고리듬 2를 이용하여 최적의 생성 다항식를 선택한다.
< 알고리듬 3: 목표 메시지 길이를 만족하는 부호 설계 >
예시 3: 목표 메시지 길이가 128인 DAEC부호를 설계할 때, 최대 메시지 길이가 목표 메시지 길이보다 긴 패리티 길이의 최소값을 알고리듬 1을 통해 얻을 수 있다. 또는 미리 구해 놓은 표를 통해 쉽게 값을 얻을 수 있다. 패리티 길이가 9일때, 최대 메시지 길이는 249이며, 의 조건을 만족한다. 이때 부호의 최적의 생성 다항식를 갖는다. 따라서 부호 길이는 137, 단축한 비트 길이는 374, 부호율은 을 갖는다.
이하에서는 생성 다항식 및 패리티 길이를 선택하는 방법에 대해 일 예를 들어 설명하기로 한다.
생성 다항식 및 패리티 길이 선택 방법 예시
(Case 1) TAEC 부호의 최대 부호 길이 및 g(x) 선택 방법
예시 4: 목표 메시지 길이가 128인 TAEC 부호를 설계하고자 한다. TAEC (single error correction-triple adjacent error correction) 부호의 경우 정정 버스트 오류 패턴 개수()는 3개이며, 버스트 오류 패턴 집합은 다음과 같다.
각 오류 패턴이 등장하는 인덱스 집합는 미리 계산한 표를 참조하여 얻을 수 있다. 알고리듬 3을 통해 목표 메시지 길이를 가질 수 있는 최소한의 패리티 길이는 10이며, 를 생성다항식으로 이용한다. 이때 오류 패턴에 대한 인덱스는 다음과 같다.
각 버스트 오류 신드롬 집합의 연속된 거듭제곱 원소를 추가한다. 목표 부호 길이는 목표 메시지 길이에서 패리티 길이를 더한 값인 138이다.
이때 PCM 의 원소를 열 벡터로 갖는다. 설계된 부호는 TAEC 특성을 갖고 의 파라미터를 갖는다.
(Case 2) 오류 패턴이 추가될 때 부호의 최대 부호 길이 및 g(x) 선택 방법
제안 부호는 정정하고자 하는 오류 버스트 집합 B에 따라 유연하게 설계 및 확장이 가능하다. 오류 버스트 집합 B를 정의하고 알고리듬 1을 이용하여 인덱스 집합와 신드롬 집합을 찾고 최대 길이를 갖거나 목표 길이를 갖는 메시지를 찾아주면 된다. 앞선 예시의 TAEC 부호에서 오류 패턴을 추가함에 따라 QAEC나 3bit burst EC 특성을 갖는 부호를 설계할 수 있다.
예시 5: 목표 메시지 길이가 128인 QAEC 부호를 설계를 할 때, 오류 버스트 개수는 4개이고 오류 패턴의 집합은 다음과 같다.
알고리듬3에 따르면 목표 메시지 길이를 가질 수 있는 최소 패리티 길이 이고 가 생성 다항식인 경우이다. 앞서 정의한 버스트 오류 패턴에 대해 신드롬 지수 집합 를 계산할 수 있다. 버스트 오류 패턴에 대한 인덱스는 다음과 같다.
각 신드롬 집합을 인덱스를 기준으로 버스트 오류 패턴 집합의 크기만큼 차례대로 업데이트 시켜준다.
따라서 목표 메시지 길이를 만족하며, QAEC의 특성을 갖는 (138, 128) 부호를 얻을 수 있다. 추가로 3bit burst EC를 만족하는 부호를 설계하기 위해서는 TAEC부호에서 다른 오류 버스트 를 추가로 정정하면 된다. 정정하는 오류 버스트 개수는 이고 오류 패턴의 집합은 다음과 같이 정의한다.
앞의 예시와 같이 목표 메시지 길이가 인 bit burst EC 부호를 설계하고자 한다. 알고리듬 을 통해 목표 메시지 길이를 가질 수 있는 최소 패리티 길이 이고, 이때 생성 다항식은 가 된다. 버스트 오류 그룹 집합 에 대해 신드롬 지수 집합을 를 계산할 수 있다. 이때 오류 패턴에 대한 신드롬 지수는 다음과 같다.
각 신드롬 부분 집합을 인덱스를 기준으로 버스트 오류 패턴 집합의 크기만큼 차례대로 업데이트 시켜준다.
따라서 목표 메시지 길이를 만족하며, bit burst EC 특성을 갖는 (138, 128)부호를 얻을 수 있다.
< AA 버스트 오류 패턴에 대한 부호 설계 방법 >
지금까지의 부호 설계는 NAA 오류 패턴을 고려하였다. NAA 버스트 오류 패턴의 경우 오류 패턴의 길이가 인 오류 버스트 에 대한 신드롬 집합 가 다른 신드롬과 서로 소를 유지하도록 정해질 때, 오류 버스트 정정을 보장하는 최대 부호 길이는 가 된다. 그러므로, 단축 부호가 결정된 후에 신드롬 집합 의 크기는 버스트 길이에 따라 달라지게 된다. 반면에 AA 버스트 오류 패턴 그룹 들이 모두 같은 크기를 가지므로, 단축 부호의 의 크기가 모두 동일해진다. 예를 들어 목표 메시지 길이가 128인 (138, 128) QAEC 부호에서 AA 버스트 오류 패턴을 고려한 경우의 신드롬 부분 집합 크기는 다음과 같이 모두 동일하다.
반면 NAA 버스트 오류 패턴을 고려한 경우에 신드롬 부분 집합의 크기는 다음과 같이 주어진다.
위의 경우는 NAA 및 AA 버스트 오류 그룹을 고려한 두 경우의 부호 길이가 동일한 경우이다. 하지만, NAA 버스트 오류 그룹의 크기가 AA 버스트 오류 그룹보다 작기 때문에 단축 부호의 최대 길이가 길어지는 경우도 발생한다. APPENDIXⅡ는 AA 버스트 오류 패턴의 경우와 NAA 버스트 오류 패턴의 경우를 구분하여 부호 길이를 표로 제시하였다.
< 제안 부호의 PCM >
앞 절에서 제시한 알고리듬을 이용하여 DAEC 부호, TAEC 부호, QAEC 부호, -bit burst EC 부호의 PCM을 설계할 수 있다. 본 절에서는 단축 Hamming 부호의 길이가 인 PCM의 일반화 모델을 제시한다. 정의한 오류 패턴에 대해 최대 부호 길이 를 갖는 생성 다항식 를 이용하여 유한 필드가 이고 원시-원 (primitive element)가 의 덧셈형 (additive form) 표현 변환하여 PCM을 다음과 같이 생성할 수 있다. 제안 부호의 최대 부호 길이를 갖는 PCM은 다음과 같다.
그리고 특정 목표 메시지 길이 을 갖는 부호의 PCM은 의 조건을 만족하는 m을 이용하여 다음과 같이 생성할 수 있다. 이는 전술한 H에 해당되는 부호에서 만큼을 추가로 단축한 부호가 되며, 기존의 오류 정정 성능은 그대로 유지된다. 제안 부호의 목표 부호 길이를 갖는 PCM은 다음과 같다.
예를 들어, 다음은 DAEC를 만족하며 목표 메시지 길이인 16, 32, 64인 부호의 PCM을 제시한다. 패리티 길이는 각각 6, 7, 8이고, 생성 다항식은 각각 , , 을 이용한다. DAEC(22, 16) 제안 부호의 PCM은 다음과 같다.
DAEC(39, 32) 제안 부호의 PCM은 다음과 같다.
DAEC(72, 64) 제안 부호의 PCM은 다음과 같다.
하기의 표 3은 각 부호의 부호 파라미터와 생성 다항식을 나타낸다.
[표 3]
이와 같은 본 발명의 일 실시예에 따르면, 반도체 메모리 장치의 오류를 정정하기 위한 코드를 다양한 메시지 길이에 대해 유연하며 복잡도가 낮은 코드로 설계할 수 있다. 이러한 코드는 메모리 셀에서 빈번하게 발생하는 버스트 오류를 정정하는 오류 정정 코드로 이용될 수 있으며, 인접한 오류 패턴뿐만 아니라 특정한 오류 패턴에 대해서도 정정 가능한 부호로 설계될 수 있다. 향후 신경망을 활용한 오류 정정 부호를 설계할 때에도 본 발명의 일 실시예에 따른 순회 부호의 특징을 이용한 버스트 오류 정정 부호 설계를 적용할 수 있다.
발명 기술의 오류 패턴에 대한 인덱스 예시 (table)
1. m=5의 범위 내에서 생성다항식의 오류 패턴에 대한 인덱스 선택하는 경우, 각각 DAEC, TAEC, QAEC, bit burst EC의 오류 패턴에 대응되는 인덱스 예시는 아래 표 4와 같다.
[표 4]
2. m=6 의 범위 내에서 생성다항식의 오류 패턴에 대한 인덱스 선택하는 경우, 각각 DAEC, TAEC, QAEC, bit burst EC의 오류 패턴에 대응되는 인덱스 예시
[표 5]
발명 기술의 다중 오류 패턴의 최대 부호/최소 패리티 길이 예시 (table)
1. AA/NAA 버스트 오류 패턴 별 최대 부호 길이
[표 6]
2. 발명 부호의 패리티 길이 별 최적 생성 다항식 및 최대 부호 길이
[표 7]
[표 8]
3. 발명 부호의 메시지 길이 별 패리티 길이
[표 9]
전술한 내용들을 정리하고자, 도 5 및 도 6의 순서도를 참고하여 본 발명의 일 실시예에 따른 버스트 에러 정정 코드 생성 방법을 설명하기로 한다. 본 발명의 일 실시예에 따른 버스트 에러 정정 코드 생성 방법은 전술한 구성과 실질적으로 동일한 구성에서 진행될 수 있다.
본 발명의 일 실시예에 따른 버스트 에러 정정 코드 생성 방법은 먼저, 모부호를 설정하는 단계(S110), 상기 모부호를 기반으로 정정하고자 하는 적어도 둘 이상의 버스트 오류 패턴에 대해서 각 버스트 오류 패턴에 대응되는 신드롬 집합을 정의하는 단계(S120), 상기 정의된 신드롬 집합들이 서로 소가 되도록 상기 모부호의 PCM(parity check matrix)의 열을 단축시키는 부호 단축 실행 단계(S130) 및 상기 신드롬 집합에 포함된 신드롬 벡터를 기반으로 상기 각 버스트 오류 패턴에 대한 에러 정정 코드를 생성하는 단계(S140)를 포함한다.
여기서, 상기 적어도 둘 이상의 버스트 오류 패턴은, 단일 비트 오류 및 Q비트 인접 오류(Q는 자연수) 중 적어도 둘 이상일 수 있다.
S130 단계는 상기 모부호의 메시지 길이를 소정 길이(ls)만큼 줄일 수 있다.
여기서, 모부호는, 순회 부호의 속성을 이용한 Hamming 부호로 구비되고, 상기 Hamming 부호는 갈루아 필드의 원시 다항식(primitive polynomial)에 기초하여 획득된 생성 다항식을 갖고, 패리티 비트의 길이가 m일 때 필드는 갈루아 필드 이다.
구체적으로, S130 단계는 상기 모부호의 PCM의 열을 점진적으로 선택하여 상기 신드롬 집합이 중첩하지 않는 조건을 만족시키는 단축 부호의 최대 길이(이하, 최대 부호 길이와 동일)를 구하는 단계 및 상기 최대 부호 길이에서 상기 패리티 길이m를 차감하여 최대 메시지 길이를 구하는 단계를 포함할 수 있다.
여기서, 상기 모든 버스트 오류 패턴을 정정할 수 있는 부호를 얻기 위해서, 상기 최대 부호 길이의 최소값을 최대 단축 부호 길이로 결정할 수 있다.
그리고, 상기 단축 부호의 최대 길이를 구하는 단계는, 상기 모부호의 맨 좌측 열부터 열을 순서대로 선택하며 상기 신드롬 집합 간 중첩이 생기기 전에 정지하는 방법일 수 있다.
일 실시예로, 상기 단축 부호의 최대 길이를 구하는 단계는, 상기 각 버스트 오류 패턴을 정정하는 상기 신드롬 집합들이 겹치지 않도록, 상기 신드롬 집합의 시작점인 신드롬 지수를 오름차순으로 정렬한 후에 상기 신드롬 지수간 값의 차이를 이용하여 상기 신드롬 집합들이 겹치지 않도록 설정하여, 상기 버스트 오류 패턴의 정정이 가능하도록 하는 상기 최대 부호 길이를 계산한다.
그리고, 상기 단축 부호의 최대 길이를 구하는 단계는, 패리티 길이(m)의 범위 내에서 상기 생성 다항식 을 기반으로 단축 최대 길이를 최대화하는 최적의 생성 다항식를 구한다.
여기서, 상기 최적의 생성 다항식를 구하는 단계(S240)는, 상기 패리티 길이m에 의해 상기 생성 다항식을 정수로 변환하여 표기할 경우(예를 들어, 16진수로 표기), 상기 생성 다항식으로 사용할 수 있는 범위는 수학식 5와 같고,
상기 범위 내의 상기 생성 다항식으로 생성한 부호의 최대 부호 길이중에서 최대값은 로 정의되며, 최대 메시지 길이의 최대값을 갖는 부호를 생성한 상기 생성 다항식을 상기 최적의 생성 다항식으로 설정한다.
이후, 상기 최대 부호 길이에서 상기 패리티 길이m를 차감하여 최대 메시지 길이를 구하는 단계(S250), 단축 길이만큼 단축시킨 목표 부호 길이()에서 상기 패리티 길이 m을 차감하여 목표 메시지 길이를 얻는 단계(S260) 및 상기 최적의 생성 다항식를 기반으로 상기 목표 메시지 길이를 만족하는 에러 정정 코드를 생성하는 단계(S270)를 포함할 수 있다.
한편, 본 발명의 다른 실시예에 따른 버스트 에러 정정 코드 생성 장치(1)는 도 7에 도시된 바와 같이 통신부(10) 및 제어부(20)를 포함한다. 각 구성에 관한 세부적인 설명은 버스트 에러 정정 코드 생성 방법에 관한 서술을 참고하기로 한다.
통신부(10)는 제어부(20)가 오류를 정정하기 위한 메모리와 통신하는 역할을 한다.
제어부(20)는 상기 메모리의 오류를 정정하기 위한 모부호를 설정하고, 상기 모부호를 기반으로 정정하고자 하는 적어도 둘 이상의 버스트 오류 패턴에 대해서 각 버스트 오류 패턴의 신드롬 집합을 정의하며, 상기 정의된 신드롬 집합들이 서로 소가 되도록 상기 모부호의 PCM(parity check matrix)의 열을 단축시키고, 상기 모부호의 패리티 길이(m)의 범위 내에서 상기 단축된 부호의 길이를 최대화하는 최적의 생성 다항식을 구하고, 상기 최대 부호 길이에서 상기 패리티 길이m를 차감하여 최대 메시지 길이를 구하고, 단축 길이(비트)만큼 단축시킨 목표 부호 길이에서 상기 패리티 길이 을 차감하여 목표 메시지 길이를 얻으며, 상기 최적의 생성 다항식를 기반으로 상기 목표 메시지 길이를 만족하는 에러 정정 코드를 생성할 수 있다.
본 문서의 다양한 실시예들은 기기(machine)(예: 컴퓨터)로 읽을 수 있는 저장 매체(machine-readable storage media)(예: 메모리(내장 메모리 또는 외장 메모리))에 저장된 명령어를 포함하는 소프트웨어(예: 프로그램)로 구현될 수 있다. 기기는, 저장 매체로부터 저장된 명령어를 호출하고, 호출된 명령어에 따라 동작이 가능한 장치로서, 개시된 실시예들에 따른 전자 장치(예: 장치)를 포함할 수 있다.
상기 명령이 프로세서(예: 프로세서)에 의해 실행될 경우, 프로세서가 직접, 또는 상기 프로세서의 제어 하에 다른 구성요소들을 이용하여 상기 명령에 해당하는 기능을 수행할 수 있다. 명령은 컴파일러 또는 인터프리터에 의해 생성 또는 실행되는 코드를 포함할 수 있다. 기기로 읽을 수 있는 저장매체는, 비일시적(nontransitory) 저장매체의 형태로 제공될 수 있다. 여기서, '비일시적'은 저장매체가 신호(signal)를 포함하지 않으며 실재(tangible)한다는 것을 의미할 뿐 데이터가
저장매체에 반영구적 또는 임시적으로 저장됨을 구분하지 않는다.
일 실시예에 따르면, 본 문서에 개시된 다양한 실시예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다.
본 명세서와 도면에는 본 발명의 바람직한 실시예에 대하여 개시하였으며, 비록 특정 용어들이 사용되었으나, 이는 단지 본 발명의 기술 내용을 쉽게 설명하고 발명의 이해를 돕기 위한 일반적인 의미에서 사용된 것이지, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시예 외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다.
1: 버스트 에러 정정 코드 생성 장치
10: 통신부
20: 제어부

Claims (26)

  1. 모부호를 설정하는 단계;
    상기 모부호를 기반으로 정정하고자 하는 적어도 둘 이상의 버스트 오류 패턴에 대해서 각 버스트 오류 패턴에 대응되는 신드롬 집합을 정의하는 단계;
    상기 정의된 신드롬 집합들이 서로 소가 되도록 상기 모부호의 PCM(parity check matrix)의 열을 단축시키는 부호 단축 실행 단계; 및
    서로 소인 상기 신드롬 집합에 포함된 신드롬 벡터를 기반으로 상기 각 버스트 오류 패턴에 대한 에러 정정 코드를 설계하는 단계를 포함하는 버스트 에러 정정 코드 생성 방법.
  2. 제 1 항에 있어서,
    상기 적어도 둘 이상의 버스트 오류 패턴은,
    단일 비트 오류 및 Q비트 인접 오류(Q는 자연수) 중 적어도 둘 이상인 것을 특징으로 하는 버스트 에러 정정 코드 생성 방법.
  3. 제 1 항에 있어서,
    상기 PCM의 열을 단축시키는 단계는,
    상기 모부호의 메시지 길이를 소정 길이(ls)만큼 줄이는 것을 특징으로 하는 버스트 에러 정정 코드 생성 방법.
  4. 제 1 항에 있어서,
    상기 모부호는,
    순회 부호의 속성을 이용한 Hamming 부호로 구비되고,
    상기 Hamming 부호는 갈루아 필드의 원시 다항식(primitive polynomial)에 기초하여 획득된 생성 다항식을 갖고, 패리티 길이가 m일 때 필드가 갈루아 필드인, 버스트 에러 정정 코드 생성 방법.
  5. 제 4 항에 있어서,
    상기 부호 단축 실행 단계는,
    상기 모부호의 PCM의 열을 점진적으로 선택하여 상기 신드롬 집합이 중첩하지 않는 조건을 만족시키는 단축 부호의 최대 부호 길이를 구하는 단계; 및
    상기 단축 부호의 최대 부호 길이에서 상기 패리티 길이를 차감하여 최대 메시지 길이를 구하는 단계를 포함하는 것을 특징으로 하는 버스트 에러 정정 코드 생성 방법.
  6. 제 5 항에 있어서,
    상기 신드롬 집합에 포함된 모든 버스트 오류 패턴을 정정할 수 있는 부호를 얻기 위해서, 상기 단축 부호의 최대 부호 길이를 상기 패리티 길이에 대한 최대 단축 부호 길이로 결정하는 것을 특징으로 하는 버스트 에러 정정 코드 생성 방법.
  7. 제 5 항에 있어서,
    상기 단축 부호의 최대 부호 길이를 구하는 단계는,
    상기 모부호의 맨 좌측열부터 열을 순서대로 선택하며 상기 신드롬 집합 간 중첩이 생기기 전에 정지하는 것을 특징으로 하는 버스트 에러 정정 코드 생성 방법.
  8. 제 5 항에 있어서,
    상기 단축 부호의 최대 부호 길이를 구하는 단계는,
    상기 각 버스트 오류 패턴을 정정하는 상기 신드롬 집합들이 겹치지 않도록, 상기 신드롬 집합의 시작점인 신드롬 지수를 오름차순으로 정렬한 후에 상기 신드롬 지수간 값의 차이를 이용하여 상기 신드롬 집합들이 겹치지 않도록 설정하여, 상기 버스트 오류 패턴의 정정이 가능하도록 하는 상기 최대 부호 길이를 계산하는 것을 특징으로 하는 버스트 에러 정정 코드 생성 방법.
  9. 제 5 항에 있어서,
    상기 단축 부호의 최대 길이를 구하는 단계는,
    상기 패리티 길이(m)의 범위 내에서 생성 다항식을 기반으로 상기 단축 부호의 길이를 최대화하는 최적의 생성 다항식을 구하는 것을 특징으로 하는 버스트 에러 정정 코드 생성 방법.
  10. 제 9 항에 있어서,
    상기 최적의 생성 다항식을 구하는 단계는,
    상기 패리티 길이m에 의해 상기 생성 다항식을 16진수로 변환하여 표현할 경우, 상기 생성 다항식으로 사용할 수 있는 범위는 아래의 수학식과 같고,

    상기 범위 내의 상기 생성 다항식으로 생성한 부호의 최대 부호 길이 중에서 최대값이 정의되며, 최대 메시지 길이의 최대값을 갖는 부호를 생성한 상기 생성 다항식을 상기 최적의 생성 다항식으로 설정하며,
    여기서, 는 상기 생성 다항식이고, m은 상기 패리티 길이인 것을 특징으로 하는 버스트 에러 정정 코드 생성 방법.
  11. 모부호를 설정하는 단계;
    상기 모부호를 기반으로 정정하고자 하는 적어도 둘 이상의 버스트 오류 패턴에 대해서 각 버스트 오류 패턴에 대응되는 신드롬 집합을 정의하는 단계;
    상기 정의된 신드롬 집합들이 서로 소가 되도록 상기 모부호의 PCM(parity check matrix)의 열을 단축시키는 부호 단축 실행 단계;
    상기 모부호의 패리티 길이의 범위 내에서 상기 단축된 부호의 길이를 최대화하는 최적의 생성 다항식을 획득하는 단계;
    상기 최적의 생성 다항식으로부터 결정되는 단축 부호의 최대 부호 길이에서 상기 패리티 길이를 차감하여 최대 메시지 길이를 산출하는 단계;
    단축 길이(비트)만큼 단축시킨 목표 부호 길이에서 상기 패리티 길이를 차감하여 목표 메시지 길이를 획득하는 단계; 및
    상기 최적의 생성 다항식을 기반으로 상기 목표 메시지 길이를 만족하는 에러 정정 코드를 설계하는 단계를 포함하는 것을 특징으로 하는 버스트 에러 정정 코드 생성 방법.
  12. 제 11 항에 있어서,
    상기 적어도 둘 이상의 버스트 오류 패턴은,
    단일 비트 오류 및 Q비트 인접 오류(Q는 자연수) 중 적어도 둘 이상인 것을 특징으로 하는 버스트 에러 정정 코드 생성 방법.
  13. 제 11 항에 있어서,
    상기 PCM의 열을 단축시키는 단계는,
    상기 모부호의 메시지 길이ls를 줄이는 것을 특징으로 하는 버스트 에러 정정 코드 생성 방법.
  14. 제 11 항에 있어서,
    상기 모부호는,
    순회 부호의 속성을 이용한 Hamming 부호로 구비되고,
    상기 Hamming 부호는 갈루아 필드의 원시 다항식(primitive polynomial)에 기초하여 획득된 생성 다항식을 갖고, 패리티 길이가 m일 때 필드가 갈루아 필드인, 버스트 에러 정정 코드 생성 방법.
  15. 제 14 항에 있어서,
    상기 부호 단축 실행 단계는,
    상기 모부호의 PCM의 열을 점진적으로 선택하여 상기 신드롬 집합이 중첩하지 않는 조건을 만족시키는 상기 단축 부호의 최대 부호 길이를 구하는 단계; 및
    상기 단축 부호의 최대 부호 길이에서 상기 패리티 길이m를 차감하여 최대 메시지 길이를 구하는 단계를 포함하는 것을 특징으로 하는 버스트 에러 정정 코드 생성 방법.
  16. 제 15 항에 있어서,
    상기 신드롬 집합에 포함된 모든 버스트 오류 패턴을 정정할 수 있는 부호를 얻기 위해서, 상기 단축 부호의 최대 부호 길이를 상기 패리티 길이에 대한 최대 단축 부호 길이로 결정하는 것을 특징으로 하는 버스트 에러 정정 코드 생성 방법.
  17. 제 15 항에 있어서,
    상기 단축 부호의 최대 길이를 구하는 단계는,
    상기 모부호의 맨 좌측열부터 열을 순서대로 선택하며 상기 신드롬 집합 간 중첩이 생기기 전에 정지하는 것을 특징으로 하는 버스트 에러 정정 코드 생성 방법.
  18. 제 15 항에 있어서,
    상기 단축 부호의 최대 길이를 구하는 단계는,
    상기 각 버스트 오류 패턴을 정정하는 상기 신드롬 집합들이 겹치지 않도록, 상기 신드롬 집합의 시작점인 신드롬 지수를 오름차순으로 정렬한 후에 상기 신드롬 지수간 값의 차이를 이용하여 상기 신드롬 집합들이 겹치지 않도록 설정하여, 상기 버스트 오류 패턴의 정정이 가능하도록 하는 상기 최대 부호 길이를 계산하는 것을 특징으로 하는 버스트 에러 정정 코드 생성 방법.
  19. 제 15 항에 있어서,
    상기 단축 부호의 최대 길이를 구하는 단계는,
    상기 생성 다항식을 기반으로 상기 단축 부호의 길이를 최대화하는 최적의 생성 다항식을 구하는 것을 특징으로 하는 버스트 에러 정정 코드 생성 방법.
  20. 제 19 항에 있어서,
    상기 최적의 생성 다항식을 구하는 단계는,
    상기 패리티 길이m에 의해 상기 생성 다항식을 16진수로 표기할 경우, 상기 생성 다항식으로 사용할 수 있는 범위는 아래 수학식과 같고,

    상기 범위 내의 상기 생성 다항식으로 생성한 부호의 최대 부호 길이 중에서 최대값이 정의되며, 최대 메시지 길이의 최대값을 갖는 부호를 생성한 상기 생성 다항식을 상기 최적의 생성 다항식으로 설정하고,
    여기서, 는 상기 생성 다항식이고, m은 상기 패리티 길이인 것을 특징으로 하는 버스트 에러 정정 코드 생성 방법.
  21. 메모리와 통신하는 통신부; 및
    상기 메모리의 오류를 정정하기 위한 모부호를 설정하고, 상기 모부호를 기반으로 정정하고자 하는 적어도 둘 이상의 버스트 오류 패턴에 대해서 각 버스트 오류 패턴에 대응되는 신드롬 집합을 정의하며, 상기 정의된 신드롬 집합들이 서로 소가 되도록 상기 모부호의 PCM(parity check matrix)의 열을 단축시키고, 상기 신드롬 집합에 포함된 신드롬 벡터를 기반으로 상기 각 버스트 오류 패턴에 대한 에러 정정 코드를 설계하는 제어부를 포함하는 버스트 에러 정정 코드 생성 장치.
  22. 메모리와 통신하는 통신부; 및
    상기 메모리의 오류를 정정하기 위한 모부호를 설정하고, 상기 모부호를 기반으로 정정하고자 하는 적어도 둘 이상의 버스트 오류 패턴에 대해서 각 버스트 오류 패턴에 대응되는 신드롬 집합을 정의하며, 상기 정의된 신드롬 집합들이 서로 소가 되도록 상기 모부호의 PCM(parity check matrix)의 열을 단축시키고, 상기 모부호의 패리티 길이(m)의 범위 내에서 상기 단축된 부호의 길이를 최대화하는 최적의 생성 다항식을 구하고, 상기 최적의 생성 다항식으로부터 결정되는 단축 부호의 최대 부호 길이에서 상기 패리티 길이m를 차감하여 최대 메시지 길이를 구하고, 단축 길이(비트)만큼 단축시킨 목표 부호 길이에서 상기 패리티 길이를 차감하여 목표 메시지 길이를 얻으며, 상기 최적의 생성 다항식을 기반으로 상기 목표 메시지 길이를 만족하는 부호를 설계하는 제어부를 포함하는 것을 특징으로 하는 버스트 에러 정정 코드 생성 장치.
  23. 컴퓨터 프로그램을 저장하고 있는 컴퓨터 판독 가능 기록매체로서,
    상기 컴퓨터 프로그램은, 프로세서에 의해 실행되면,
    모부호를 설정하는 단계;
    상기 모부호를 기반으로 정정하고자 하는 적어도 둘 이상의 버스트 오류 패턴에 대해서 각 버스트 오류 패턴에 대응되는 신드롬 집합을 정의하는 단계;
    상기 정의된 신드롬 집합들이 서로 소가 되도록 상기 모부호의 PCM(parity check matrix)의 열을 단축시키는 부호 단축 실행 단계; 및
    상기 신드롬 집합에 포함된 신드롬 벡터를 기반으로 상기 각 버스트 오류 패턴에 대한 에러 정정 코드를 설계하는 단계를 포함하는 방법을 상기 프로세서가 수행하도록 하기 위한 명령어를 포함하는, 컴퓨터 판독 가능한 기록매체.
  24. 컴퓨터 판독 가능 기록매체에 저장된 컴퓨터 프로그램으로서,
    상기 컴퓨터 프로그램은, 프로세서에 의해 실행되면,
    모부호를 설정하는 단계;
    상기 모부호를 기반으로 정정하고자 하는 적어도 둘 이상의 버스트 오류 패턴에 대해서 각 버스트 오류 패턴에 대응되는 신드롬 집합을 정의하는 단계;
    상기 정의된 신드롬 집합들이 서로 소가 되도록 상기 모부호의 PCM(parity check matrix)의 열을 단축시키는 부호 단축 실행 단계; 및
    상기 신드롬 집합에 포함된 신드롬 벡터를 기반으로 상기 각 버스트 오류 패턴에 대한 에러 정정 코드를 설계하는 단계를 포함하는 방법을 상기 프로세서가 수행하도록 하기 위한 명령어를 포함하는, 컴퓨터 프로그램.
  25. 컴퓨터 프로그램을 저장하고 있는 컴퓨터 판독 가능 기록매체로서,
    상기 컴퓨터 프로그램은, 프로세서에 의해 실행되면,
    모부호를 설정하는 단계;
    상기 모부호를 기반으로 정정하고자 하는 적어도 둘 이상의 버스트 오류 패턴에 대해서 각 버스트 오류 패턴에 대응되는 신드롬 집합을 정의하는 단계;
    상기 정의된 신드롬 집합들이 서로 소가 되도록 상기 모부호의 PCM(parity check matrix)의 열을 단축시키는, 부호 단축 실행 단계;
    상기 모부호의 패리티 길이의 범위 내에서 상기 단축된 부호의 길이를 최대화하는 최적의 생성 다항식을 구하는 단계;
    상기 최적의 생성 다항식으로부터 결정되는 단축 부호의 최대 부호 길이에서 상기 패리티 길이m를 차감하여 최대 메시지 길이를 구하는 단계;
    단축 길이(비트)만큼 단축시킨 목표 부호 길이에서 상기 패리티 길이를 차감하여 목표 메시지 길이를 얻는 단계; 및
    상기 최적의 생성 다항식을 기반으로 상기 목표 메시지 길이를 만족하는 에러 정정 코드를 설계하는 단계를 포함하는 방법을 상기 프로세서가 수행하도록 하기 위한 명령어를 포함하는, 컴퓨터 판독 가능한 기록매체.
  26. 컴퓨터 판독 가능 기록매체에 저장된 컴퓨터 프로그램으로서,
    상기 컴퓨터 프로그램은, 프로세서에 의해 실행되면,
    모부호를 설정하는 단계;
    상기 모부호를 기반으로 정정하고자 하는 적어도 둘 이상의 버스트 오류 패턴에 대해서 각 버스트 오류 패턴에 대응되는 신드롬 집합을 정의하는 단계;
    상기 정의된 신드롬 집합들이 서로 소가 되도록 상기 모부호의 PCM(parity check matrix)의 열을 단축시키는 부호 단축 실행 단계;
    상기 모부호의 패리티 길이의 범위 내에서 상기 단축된 부호의 길이를 최대화하는 최적의 생성 다항식을 구하는 단계;
    상기 최적의 생성 다항식으로부터 결정되는 단축 부호의 최대 부호 길이에서 상기 패리티 길이를 차감하여 최대 메시지 길이를 구하는 단계;
    단축 길이(비트)만큼 단축시킨 목표 부호 길이)에서 상기 패리티 길이를 차감하여 목표 메시지 길이를 얻는 단계; 및
    상기 최적의 생성 다항식을 기반으로 상기 목표 메시지 길이를 만족하는 에러 정정 코드를 설계하는 단계를 포함하는 방법을 상기 프로세서가 수행하도록 하기 위한 명령어를 포함하는, 컴퓨터 프로그램.
KR1020210192961A 2021-12-30 2021-12-30 버스트 에러 정정 코드 생성 방법, 컴퓨터 판독 가능한 기록 매체, 컴퓨터 프로그램 및 장치 KR102633829B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020210192961A KR102633829B1 (ko) 2021-12-30 2021-12-30 버스트 에러 정정 코드 생성 방법, 컴퓨터 판독 가능한 기록 매체, 컴퓨터 프로그램 및 장치
US18/090,632 US20230216525A1 (en) 2021-12-30 2022-12-29 Method for generating burst error correction code, device for generating burst error correction code, and recording medium storing instructions to perform method for generating burst error correction code

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210192961A KR102633829B1 (ko) 2021-12-30 2021-12-30 버스트 에러 정정 코드 생성 방법, 컴퓨터 판독 가능한 기록 매체, 컴퓨터 프로그램 및 장치

Publications (2)

Publication Number Publication Date
KR20230102657A KR20230102657A (ko) 2023-07-07
KR102633829B1 true KR102633829B1 (ko) 2024-02-02

Family

ID=86991159

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210192961A KR102633829B1 (ko) 2021-12-30 2021-12-30 버스트 에러 정정 코드 생성 방법, 컴퓨터 판독 가능한 기록 매체, 컴퓨터 프로그램 및 장치

Country Status (2)

Country Link
US (1) US20230216525A1 (ko)
KR (1) KR102633829B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010025359A1 (en) 2000-03-14 2001-09-27 Tsuyoshi Tanaka Error detection and correction method in a computer system and main memory controller of the same

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101650130B1 (ko) * 2010-05-14 2016-08-24 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 카피-백 방법
KR102324769B1 (ko) 2015-06-29 2021-11-10 삼성전자주식회사 반도체 메모리 장치의 에러 정정 회로, 반도체 메모리 장치 및 이를 포함하는 메모리 시스템

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010025359A1 (en) 2000-03-14 2001-09-27 Tsuyoshi Tanaka Error detection and correction method in a computer system and main memory controller of the same

Also Published As

Publication number Publication date
KR20230102657A (ko) 2023-07-07
US20230216525A1 (en) 2023-07-06

Similar Documents

Publication Publication Date Title
US9070453B2 (en) Multiple programming of flash memory without erase
US11740960B2 (en) Detection and correction of data bit errors using error correction codes
US8930798B2 (en) Data encoding in solid state storage devices
US9391641B2 (en) Syndrome tables for decoding turbo-product codes
US8806295B2 (en) Mis-correction and no-correction rates for error control
US8583982B2 (en) Concatenated decoder and concatenated decoding method
US10606697B2 (en) Method and apparatus for improved data recovery in data storage systems
US8145971B2 (en) Data processing systems and methods for processing digital data with low density parity check matrix
US9548761B2 (en) Coding and decoding of error correcting codes
US8504894B1 (en) Systematic encoding for non-full row rank, quasi-cyclic LDPC parity check matrices
US10949298B2 (en) System and method of reducing logic for multi-bit error correcting codes
Badack et al. Modified DEC BCH codes for parallel correction of 3-bit errors comprising a pair of adjacent errors
KR102633829B1 (ko) 버스트 에러 정정 코드 생성 방법, 컴퓨터 판독 가능한 기록 매체, 컴퓨터 프로그램 및 장치
US8892985B2 (en) Decoding and optimized implementation of SECDED codes over GF(q)
KR102532623B1 (ko) Raid에 맞춤화된 bch 인코딩 및 디코딩 방법, 및 그 장치
KR20070107521A (ko) 비이진 구조적 저밀도 패리티 검사 부호 생성 방법
KR101355988B1 (ko) 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치
KR101304570B1 (ko) 패리티 체크 행렬 생성 방법, 이를 이용한 오류 정정 방법 및 장치, 오류 정정 장치용 디코더 그리고 오류 정정 장치를 포함하는 메모리 및 전자장치
CN107959502B (zh) 一种ldpc编码方法
US9009577B1 (en) Circuitry and method for forward error correction
US20160043741A1 (en) Coding method and device
KR101355986B1 (ko) 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치
US11700017B2 (en) Method and system for providing minimal aliasing error correction code
JP2005176244A (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