KR102528972B1 - 연판정 디코딩 방법 및 시스템 - Google Patents

연판정 디코딩 방법 및 시스템 Download PDF

Info

Publication number
KR102528972B1
KR102528972B1 KR1020160043484A KR20160043484A KR102528972B1 KR 102528972 B1 KR102528972 B1 KR 102528972B1 KR 1020160043484 A KR1020160043484 A KR 1020160043484A KR 20160043484 A KR20160043484 A KR 20160043484A KR 102528972 B1 KR102528972 B1 KR 102528972B1
Authority
KR
South Korea
Prior art keywords
module
basis
code
algorithm
decoder
Prior art date
Application number
KR1020160043484A
Other languages
English (en)
Other versions
KR20160121442A (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 삼성전자주식회사
Publication of KR20160121442A publication Critical patent/KR20160121442A/ko
Application granted granted Critical
Publication of KR102528972B1 publication Critical patent/KR102528972B1/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/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • 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
    • 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/1525Determination and particular use of error location polynomials
    • 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3707Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
    • 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/45Soft decoding, i.e. using symbol reliability information
    • H03M13/451Soft decoding, i.e. using symbol reliability information using a set of candidate code words, e.g. ordered statistics decoding [OSD]
    • 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/1525Determination and particular use of error location polynomials
    • H03M13/153Determination and particular use of error location polynomials using the Berlekamp-Massey algorithm

Abstract

본 발명에 따른 일반화된 리드 솔로몬 타입 및 다른 타입 중 하나인 코드를 연판정 디코딩하는 방법은, 제1 확장 모듈 및 제2 확장 모듈의 서브-모듈인 적어도 하나의 모듈을 정의하는 적어도 하나의 특성을 갖는 코드를 획득하는 단계; 상기 제1 확장 모듈에 대한 그로브너 기저를 결정하는 단계; 및 상기 제1 확장 모듈에 대한 상기 그로브너 기저를 상기 모듈에 대한 기저로 변환하는 단계를 포함한다.

Description

연판정 디코딩 방법 및 시스템{METHOD AND SYSTEM FOR SOFT-DECISION DECODING}
본 발명의 개념에 따른 실시예는 연판정 디코딩 방법 및 시스템에 관한 것이다.
많은 유형의 시스템들은 경판정(Hard Decision; HD) 디코딩 및 연판정(Soft Decision; SD) 디코딩을 지원한다.
예를 들어, 비휘발성 메모리 장치는 비휘발성 방식으로 데이터를 저장하는 복수의 메모리 셀을 포함한다. 비휘발성 메모리 장치의 일예로 플래시 메모리 장치가 있다. 일부 플래시 메모리 애플리케이션은 HD 디코딩 및 SD 디코딩을 지원한다.
HD 디코딩에 실패하는 경우, 코드워드(codeword)를 정확하게 디코딩하기 위한 확률을 증가시키기 위해 SD 디코딩 알고리즘이 사용될 수 있다. SD 디코딩의 일종으로 대수적 SD 디코딩이 있다.
본 발명이 이루고자 하는 기술적인 과제는, 연판정 디코딩 방법 및 시스템을 제공하는 것에 있다.
본 발명의 실시예에 따라 일반화된 리드 솔로몬 타입 및 다른 타입 중 하나인 코드를 연판정 디코딩하는 방법은, 제1 타입 제약 조건의 세트에 의해 정의되는 제1 확장 모듈 및 제2 타입 제약 조건의 세트에 의해 정의되는 제2 확장 모듈의 서브-모듈인 적어도 하나의 모듈을 정의하는 적어도 하나의 특성을 갖는 코드를 획득하는 단계; 상기 제1 확장 모듈에 대한 그로브너(Groebner) 기저를 결정하는 단계; 및 상기 제1 확장 모듈에 대한 상기 그로브너 기저를 상기 모듈에 대한 기저로 변환하는 단계를 포함하며, 상기 제1 타입 제약 조건은 제1 보간 알고리즘 및 제2 보간 알고리즘에 적용되고, 상기 제2 타입 제약 조건은 상기 제1 보간 알고리즘에 적용된다.
실시예에 따라, 상기 제1 확장 모듈에 대한 상기 그로브너 기저를 변환하는 단계는, 상기 제1 확장 모듈에 대한 상기 그로브너 기저를 상기 모듈에 대한 그로브너 기저로 변환한다.
실시예에 따라, 상기 제1 확장 모듈에 대한 상기 그로브너 기저를 변환하는 단계는, 코에터(Koetter) 알고리즘의 반복횟수를 상기 제1 확장 모듈에 대한 상기 그로브너 기저에 적용하는 단계를 포함한다.
실시예에 따라, 상기 코드는 이진(binary) BCH 코드이다.
실시예에 따라, 상기 코드는 리드-솔로몬 코드이다.
실시예에 따라, 상기 적어도 하나의 특성을 갖는 코드를 획득하는 단계는, 3차원 메모리 어레이로부터 상기 코드를 획득한다.
실시예에 따라, 상기 3차원 메모리 어레이는, 각각이 전하 트랩 레이어를 포함하는 복수의 메모리 셀을 포함한다.
실시예에 따라, 상기 3차원 메모리 어레이의 적어도 하나의 워드 라인들 및 비트 라인들은 레벨들 사이에서 공유된다.
본 발명의 실시예에 따라 일반화된 리드 솔로몬 타입 및 다른 타입 중 하나인 코드를 연판정 디코딩하는 방법은, 제1 타입 제약 조건의 세트에 의해 정의되는 제1 확장 모듈 및 제2 타입 제약 조건의 세트에 의해 정의되는 제2 확장 모듈의 서브-모듈인 적어도 하나의 모듈을 정의하는 적어도 하나의 특성을 갖는 코드를 획득하는 단계; 상기 제1 확장 모듈에 대한 트라이앵글(triangular) 기저를 결정하는 단계; 및 상기 제1 확장 모듈에 대한 상기 트라이앵글 기저에 기초하여 상기 모듈에 대한 기저를 결정하는 단계를 포함한다.
실시예에 따라, 상기 모듈에 대한 기저를 결정하는 단계는, 상기 제1 확장 모듈에 대한 상기 트라이앵글 기저에 기초하여 상기 모듈에 대한 트라이앵글 기저를 결정한다.
실시예에 따라, 상기 모듈에 대한 상기 트라이앵글 기저는
Figure 112016034152376-pat00001
이고, 상기
Figure 112016034152376-pat00002
는 상기 제1 확장 모듈에 대한 상기 트라이앵글 기저이고,
Figure 112016034152376-pat00003
이며, 상기 B는 상기 제2 타입 제약 조건을 나타내고, 상기
Figure 112016034152376-pat00004
은 리스트 사이즈이고, 상기
Figure 112016034152376-pat00005
는 다중 벡터의 엔트리이다.
실시예에 따라, 상기 모듈에 대한 기저를 결정하는 단계는, 상기 모듈에 대한 상기 트라이앵글 기저를 상기 모듈에 대한 그로브너 기저로 변환하는 단계를 포함한다.
실시예에 따라, 상기 코드는 이진(binary) BCH 코드이다.
실시예에 따라, 상기 코드는 리드-솔로몬 코드이다.
실시예에 따라, 상기 적어도 하나의 특성을 갖는 코드를 획득하는 단계는, 3차원 메모리 어레이로부터 상기 코드를 획득한다.
실시예에 따라, 상기 3차원 메모리 어레이는, 각각이 전하 트랩 레이어를 포함하는 복수의 메모리 셀을 포함한다.
실시예에 따라, 상기 3차원 메모리 어레이의 적어도 하나의 워드 라인들 및 비트 라인들은 레벨들 사이에서 공유된다.
본 발명의 실시예에 따라 일반화된 리드 솔로몬 타입 및 다른 타입 중 하나인 코드를 연판정 디코딩하는 방법은, 제1 타입 제약 조건의 세트에 의해 정의되는 제1 확장 모듈 및 제2 타입 제약 조건의 세트에 의해 정의되는 제2 확장 모듈의 서브-모듈인 적어도 하나의 모듈을 정의하는 적어도 하나의 특성을 갖는 코드를 획득하는 단계; 상기 제2 타입 제약 조건의 세트와 관련된 총 비용(total cost)이 문턱값 이상인지 여부를 결정하는 단계; 및 상기 제2 타입 제약 조건의 세트와 관련된 상기 총 비용이 상기 문턱값 이상인지 여부에 기초하여, 상기 제1 확장 모듈에 대한 그로브너 기저, 코에터 알고리즘을 이용하는 상기 모듈에 대한 그로브너 기저, 및 상기 제1 확장 모듈에 대한 트라이앵글 기저 중 하나를 결정하는 단계를 포함한다.
실시예에 따라, 상기 제2 타입 제약 조건의 세트와 관련된 상기 총 비용이 상기 문턱값 이하인 경우, 상기 제1 확장 모듈에 대한 상기 그로브너 기저를 결정하고, 상기 연판정 디코딩 방법은, 상기 코에터 알고리즘의 반복횟수를 상기 제1 확장 모듈에 대한 상기 그로브너 기저에 적용하여 상기 제1 확장 모듈에 대한 상기 그로브너 기저를 상기 모듈에 대한 상기 그로브너 기저로 변환하는 단계를 더 포함한다.
실시예에 따라, 상기 제2 타입 제약 조건의 세트와 관련된 상기 총 비용이 상기 문턱값 이상인 경우, 상기 제1 확장 모듈에 대한 상기 트라이앵글 기저를 결정하고, 상기 연판정 디코딩 방법은, 상기 제1 확장 모듈에 대한 상기 트라이앵글 기저에 기초하여 상기 모듈에 대한 트라이앵글 기저를 결정하는 단계; 및 상기 모듈에 대한 상기 트라이앵글 기저를 상기 모듈에 대한 상기 그로브너 기저로 변환하는 단계를 더 포함한다.
실시예에 따라, 상기 제2 타입 제약 조건의 세트와 관련된 상기 총 비용이 상기 문턱값 이상인 경우, 상기 코에터 알고리즘을 이용하는 상기 모듈에 대한 상기 그로브너 기저를 결정하고, 상기 연판정 디코딩 방법은,
Figure 112016034152376-pat00006
를 수행하는 단계를 더 포함하며, 상기 X는 제1 중간(intermediate)이고, 상기 Y는 제2 중간이고, 상기
Figure 112016034152376-pat00007
는 상기 그로브너 기저의 초기값이고, 상기 B는 상기 제2 타입 제약 조건을 나타내고, 상기
Figure 112016034152376-pat00008
은 리스트 사이즈이고, 상기
Figure 112016034152376-pat00009
는 다중 벡터의 엔트리이다.
본 발명의 실시예에 따른 연판정 디코딩 방법에 의하면, 디코딩 성능을 향상시킬 수 있다.
도 1은 본 발명의 일 실시예에 따른 저장 시스템을 나타내는 블록도이다.
도 2는 도 1에 도시된 디바이스 컨트롤러의 일 실시예를 나타내는 블록도이다.
도 3은 본 발명의 일 실시예에 따른 비휘발성 메모리로부터 리드된 데이터를 디코딩하는 방법을 나타내는 플로우차트이다.
도 4a 내지 도 4c는 본 발명의 일 실시예에 따른 그로브너 기저를 결정하는 방법을 설명하는 도면이다.
도 5는 본 발명의 일 실시예에 따른 저장 장치를 포함하는 전자 장치를 나타내는 블록도이다.
도 6은 본 발명의 일 실시예에 따른 저장 장치를 포함하는 메모리 카드 시스템을 나타내는 블록도이다.
도 7은 본 발명의 일 실시예에 따른 저장 장치를 포함하는 네트워크 시스템을 나타내는 블록도이다.
도 8은 본 발명의 일 실시예에 따른 코딩 시스템을 나타내는 블록도이다.
본 명세서 또는 출원에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 개념에 따른 실시 예들은 다양한 형태로 실시될 수 있으며 본 명세서 또는 출원에 설명된 실시 예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명의 개념에 따른 실시 예는 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있으므로 특정 실시 예들을 도면에 예시하고 본 명세서 또는 출원에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예를 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1 및/또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다.
도 1은 본 발명의 일 실시예에 따른 저장 시스템을 나타내는 블록도이다. 도 1 내지 도 4c의 실시예가 비휘발성 저장 시스템에 기초하여 설명되지만, 본 명세서에 개시된 디코딩은 무선 통신, 케이블 기반의 유선 통신, 위성 통신 및 비휘발성 메모리 이외의 저장 장치들(예컨대, RAM)과 같은 다양한 기술로 구현될 수 있음을 이해해야 한다.
도 1을 참조하면, 저장 시스템(1000)은 호스트(1100) 및 저장 장치(1200)를 포함한다.
호스트(1100)는 호스트 인터페이스(1101)를 포함하고, 저장 장치(1200)는 장치 인터페이스(1201)를 포함한다. 호스트(1100) 및 저장 장치(1200)는 인터페이스(1101, 1201)를 통해 서로 연결된다. 호스트 인터페이스(1101) 및 디바이스 인터페이스(1201)는 UFS(Universal Flash Storage) 인터페이스, SATA (Serial Advanced Technology Attachment(ATA)) 인터페이스, SCSI(Small Computer System Interface), SAS(Serial Attached SCSI)와 같은 표준 인터페이스일 수 있다. 호스트 인터페이스(1101) 및 장치 인터페이스(1201)는 데이터 및/또는 신호들을 교환하기 위한 데이터 라인들(DIN, DOUT) 및 전원 공급을 위한 전원 라인들(PWR)에 의해 연결된다. 도 1에 도시된 실시예에서는, 호스트 인터페이스(1101)가 전원 라인(PWR)을 통해 장치 인터페이스(1201)로 전원을 공급한다.
호스트(1100)는 호스트 컨트롤러(1130), 버퍼 메모리(1140), 애플리케이션(1110), 및 디바이스 드라이버(1120)를 더 포함한다.
실시예에 따라, 애플리케이션(1110)은 호스트(1100)에서 실행되는 하나 이상의 애플리케이션 프로그램을 나타내는 것일 수 있다. 애플리케이션(1110) 및/또는 디바이스 드라이버(1120)는 하드웨어, 소프트웨어, 및/또는 펌웨어에 의해 구현될 수 있다. 호스트 컨트롤러(1130)는 호스트 인터페이스(1101)를 통해 저장 장치(1200)로부터 데이터를 수신하고 저장 장치(1200)로 커맨드(예컨대, 리드, 라이트, 이레이즈) 및/또는 데이터를 전달한다.
실시예에 따라, 버퍼 메모리(1140)는 호스트(1100)의 메인 메모리 및/또는 캐시 메모리로 사용될 수 있다. 버퍼 메모리(1140)(예컨대, SRAM(Synchronous Random Access Memory) 및/또는 DRAM(Dynamic Random Access Memory))는 애플리케이션(1110) 및/또는 디바이스 드라이버(1120)와 같은 소프트웨어를 구동하기 위한 구동 메모리로 사용될 수도 있다.
저장 장치(1200)는 비휘발성 메모리(1210), 디바이스 컨트롤러(또는 메모리 컨트롤러, 1230), 및 버퍼 메모리(1240)를 더 포함한다. 저장 장치(1200)는 플래시 메모리 등과 같은 비휘발성 메모리를 기반으로 하는 데이터 저장 장치일 수 있다. 예를 들어, 비휘발성 메모리(1210)는 플래시 메모리, MRAM(Magnetic Random Access Memory(RAM)), PRAM(Phase change RAM), FeRAM(Ferroelectric RAM) 등일 수 있다.
비휘발성 메모리(1210)는 2차원 또는 3차원 메모리 어레이를 포함할 수 있다. 3차원 메모리 어레이는 실리콘 기판 위(on or above)에 배치된 액티브 영역을 갖는 메모리 셀들의 어레이의 물리적인 레벨들 내에서 모노리식하게(monolithically) 형성되고, 메모리 셀들의 작동에 관련된 회로를 포함할 수 있다. 상기 회로는 상기 기판의 내부 또는 위(on or above)에 형성될 수 있다. 모노리식(monolithic) 이라는 용어는, 어레이의 각 레벨의 레이어들(layers)이 상기 어레이의 각 하부 레벨(each underlying level)의 레이어들에 직접 증착(directly deposited)되는 것을 의미한다.
3차원 메모리 어레이는 적어도 하나의 메모리 셀이 다른 메모리 셀의 위에 위치하도록 수직으로 배향되는(vertically oriented) 수직 NAND 스트링을 포함한다. 상기 적어도 하나의 메모리 셀은 전하 트랩 레이어(charge trap layer)를 포함할 수 있다.
본 명세서에서 참조로 포함되는 특허 문헌들(US 7,679,133, US 8,553,466, US 8,654,587, US 8,559,235, 및 US 2011/0233648)은, 워드 라인들 및/또는 비트 라인들이 레벨들 사이에 공유되는 복수의 레벨로 구성된 3차원 메모리 어레이에 적합한 구성을 설명한다.
디바이스 컨트롤러(1230)는, 예를 들어 라이트 동작, 리드 동작, 이레이즈 동작, 인코딩/디코딩, 에러 정정과 같은 비휘발성 메모리(1210)의 전반적인 동작을 제어한다. 디바이스 컨트롤러(1230)는 어드레스 및/또는 데이터 버스를 통해 비휘발성 메모리(1210) 및/또는 버퍼 메모리(1240)와 데이터를 교환한다. 디바이스 컨트롤러(1230)에 대해서는 후술하기로 한다.
버퍼 메모리(1240), 예를 들어 SRAM(Synchronous Random Access Memory) 및/또는 DRAM(Dynamic Random Access Memory)은, 비휘발성 메모리(1210)에 저장될 데이터 및/또는 비휘발성 메모리(1210)로부터 리드된 데이터를 임시로 저장한다. 버퍼 메모리(1240)는 휘발성 및/또는 비휘발성 메모리로 구현될 수 있다.
도 2는 도 1에 도시된 디바이스 컨트롤러의 일 실시예를 나타내는 블록도이다. 디바이스 컨트롤러(1230)는 하드웨어, 펌웨어, 소프트웨어를 실행하는 하드웨어 또는 이들의 조합일 수 있다. 디바이스 컨트롤러(1230)가 하드웨어인 경우, 상기 하드웨어는 하나 이상의 CPU(Central Processing Unit), DSP(Digital Signal Processor), ASIC(Application-Specific-Integrated-Circuit), FPGA(Field Programmable Gate Array) 컴퓨터 또는 디바이스 컨트롤러(1230)의 기능을 수행하는 특수 목적 장치(special purpose machine)와 같은 구성을 포함할 수 있다. CPU, DSP, ASIC, 및 FPGA들은 일반적으로 프로세서 및/또는 마이크로프로세서로 칭할 수 있다.
디바이스 컨트롤러(1230)가 소프트웨어를 실행하는 프로세서인 경우, 상기 프로세서는 디바이스 컨트롤러(1230)의 기능을 수행하는 소프트웨어를 실행하기 위한 특수 목적 장치(special purpose machine)로 구성될 수 있다. 실시예에서, 디바이스 컨트롤러(1230)는 하나 이상의 CPU, DSP, ASIC, 및 FPGA 컴퓨터를 포함할 수 있다.
도 2를 참조하면, 디바이스 컨트롤러(1230)는 인코더(2100, 인코딩 회로 또는 인코더 회로) 및 디코딩 회로 또는 디코더 회로로 지칭되는 디코더(2200, 디코딩 회로 또는 디코더 회로)를 포함한다.
디바이스 컨트롤러(1230)와 마찬가지로, 인코더(2100)는 하드웨어, 펌웨어, 소프트웨어를 실행하는 하드웨어 또는 이들의 조합일 수 있다. 인코더(2100)가 하드웨어인 경우, 상기 하드웨어는 하나 이상의 CPU(Central Processing Unit), DSP(Digital Signal Processor), ASIC(Application-Specific-Integrated-Circuit), FPGA(Field Programmable Gate Array) 컴퓨터 또는 인코더(2100)의 기능을 수행하는 특수 목적 장치(special purpose machine)와 같은 구성을 포함할 수 있다. CPU, DSP, ASIC, 및 FPGA들은 일반적으로 프로세서 및/또는 마이크로프로세서로 칭할 수 있다.
인코더(2100)가 소프트웨어를 실행하는 프로세서인 경우, 상기 프로세서는 인코더(2100)의 기능을 수행하는 소프트웨어를 실행하기 위한 특수 목적 장치(special purpose machine)로 구성될 수 있다. 실시예에서, 인코더(2100)는 하나 이상의 CPU, DSP, ASIC, 및 FPGA 컴퓨터를 포함할 수 있다.
인코더(2100)는 장치 인터페이스(1201) 및/또는 버퍼 메모리(1240)를 통해 호스트(1100)로부터 수신된 입력 데이터 워드(입력 데이터 시퀀스 또는 입력 데이터)에 대해 인코딩을 수행한다. 인코더(2100)는 인코딩된 데이터를 비휘발성 메모리(1210)로 출력한다. 비휘발성 메모리(1210)는 인코더(2100)로부터 인코딩된 데이터를 저장한다.
디코더(2200)는 하드웨어, 펌웨어, 소프트웨어를 실행하는 하드웨어 또는 이들의 조합일 수 있다. 디코더(2200)가 하드웨어인 경우, 상기 하드웨어는 하나 이상의 CPU(Central Processing Unit), DSP(Digital Signal Processor), ASIC(Application-Specific-Integrated-Circuit), FPGA(Field Programmable Gate Array) 컴퓨터 또는 디코더(2200)의 기능을 수행하는 특수 목적 장치(special purpose machine)와 같은 구성을 포함할 수 있다. CPU, DSP, ASIC, 및 FPGA들은 일반적으로 프로세서 및/또는 마이크로프로세서로 칭할 수 있다.
디코더(2200)가 소프트웨어를 실행하는 프로세서인 경우, 상기 프로세서는 디코더(2200)의 기능을 수행하는 소프트웨어를 실행하기 위한 특수 목적 장치(special purpose machine)로 구성될 수 있다. 실시예에서, 디코더(2200)는 하나 이상의 CPU, DSP, ASIC, 및 FPGA 컴퓨터를 포함할 수 있다.
디코더(2200)는 비휘발성 메모리(1210)로부터 데이터를 리드하고 리드된 데이터를 디코딩한다. 디코더(2200)는 디코딩된 데이터를 버퍼 메모리(1240) 및 장치 인터페이스(1201) 중 적어도 하나로 출력한다.
좀 더 구체적으로, 디코더(2200)는 일반화된 리드-솔로몬 코드(Reed-Solomon code) 및 리드-솔로몬 코드와 BCH 코드(BCH code)를 포함하는 교차 코드(alternant code)의 소프트(Wu) 디코딩(soft decoding)을 수행한다.
우(Wu)의 논문(Y. Wu, "리드-솔로몬 및 BCH 코드에 대한 새로운 리스트 디코딩 알고리즘", IEEE Trans. Inform. Thery, vol.54, no.8, pp.3611-3630, 2008. 8)에 기재된 우(Wu)의 알고리즘은, 그 전체 내용이 본 명세서에 참조로 포함된다. 게다가, 변형된 우(Wu)의 알고리즘은 트리포노프(P. Trifonov 및 M. H. Lee, "우(Wu)의 리스트 디코딩 알고리즘에서의 효율적인 보간법", IEEE Trans. Inform. Theory, vol.58, no.9, pp.5963-5971, 2012. 9) 및 빌린(P. Beelen, T. Hoeholdt, J. S. R. Nielsen, 및 Y. Wu, "합리적인 보간법 기반의 리스트 디코딩 및 리스트 디코딩 2진 고파(Goppa) 코드", IEEE Trans. Inform. Theory, vol.59, no.6, pp.3269-3281, 2013. 6)에 기재되어 있으며, 각각의 전체 내용이 본 명세서에 참조로 포함된다.
디코더(2200)와 그 구성요소들의 예시적인 기능은 도 3 내지 도 4c를 참조하여 보다 상세하게 후술하기로 한다.
도 3은 본 발명의 일 실시예에 따른 비휘발성 메모리로부터 리드된 데이터를 디코딩하는 방법을 나타내는 플로우차트이다. 디코더(2200)는 도 3에서의 각 단계를 수행한다. 실시예에 따라, 도 3은 일반화된 리드-솔로몬(Reed-Solomon) 코드 및 다른 코드들의 연판정(soft-decision, Wu) 디코딩 방법이다.
디코더(2200)는 비휘발성 메모리(1210)로부터 데이터를 수신한다(S3000). 플래시 메모리에서, 제1 리드 동작은 경판정(hard-decision) 정보를 제공하고, 추가적인 리드 동작들은 점점 더 개선된(refined) 연판정 정보를 제공한다. 리드 동작이 비교적 느리기 때문에, S3000 단계에서는, 경판정 정보를 제공하는 하나의 리드 동작만이 수행된다. 즉, S3000 단계에서의 출력은 비트들의 벡터이고, 각 비트는 해당 좌표의 경판정 값이다.
디코더(2200)는, 경판정 디코딩을 수행하고(S3225), 경판정 디코딩에 성공했는지 여부를 판단한다(S3250).
디코더(2200)는 벌러캠프-매시(Berlekamp-Massey) 알고리즘, 벌러캠프-매시 알고리즘의 알려진 변형 예, 또는 스기야마(Sugiyama) 알고리즘의 알려진 변형 예와 같은 공지된 경판정 디코딩 알고리즘을 적용할 수 있다. S3200 단계에서 경판정 디코딩의 출력은, Λ(X) 및 B+(X)인 두(2) 다항식, 결과적인 연판정 디코딩을 위해 사용되는 가능한 몇 개의 추가 정수(가중치, 가능한 제로 또는 마이너스), 및 상세히 후술되는 바와 같은 가능한 디코딩된 워드(word)로 이루어진다.
디코더(2200)가 경판정 디코딩에 성공한 것으로 판단한 경우, 디코딩된 워드가 출력된다. 디코더(2200)는 경판정 디코딩에 실패한 것으로 판단한 경우, 그 출력은 두 개의 다항식(Λ(X) 및 B+(X))과 가중치를 포함한다. 경판정 디코딩 블록이 우(Wu)의 논문에 기재된 바와 같은 벌러캠프-매시 알고리즘 또는 우(Wu)의 논문에 기재된 바와 같은 이진(binary) BCH 코드를 디코딩하기 위한 벌러캠프 알고리즘을 수행하는 경우, 출력(Λ(X))은 정확히 우(Wu)의 논문의 벌러캠프-매시/벌러캠프 알고리즘에 정의된 다항식(Λ(X))이고, 출력(B+(X))은 우(Wu)의 논문의 벌러캠프-매시/벌러캠프 알고리즘에 정의된 B(X)에 대하여 리드-솔로몬 코드를 디코딩하기 위한 XB(X)이거나 이진 BCH 코드를 디코딩하기 위한 X2B(X)이다.
이 경우, 경판정 디코딩에 성공하면, 출력(Λ(X))은 오류 위치 다항식 즉, 오류 위치는 Λ(X)의 근(root)의 역수이다.
벌러캠프 및 벌러캠프-매시 알고리즘에 대하여, Λ(X)는 키 방정식(key equation)인
Figure 112016034152376-pat00010
에 대한 가장 짧은 가능한 솔루션이다. 여기서,
Figure 112016034152376-pat00011
는 예를 들어 우(Wu)의 논문의 수학식 (3)에 정의된 바와 같은 오류 추정 다항식이고,
Figure 112016034152376-pat00012
는 예를 들어 우(Wu)의 논문의 수학식 (2)에 정의된 바와 같은 근(root)이 오류 위치의 역수에 있는 오류 위치 다항식이고, S(X)는 예를 들어 우(Wu)의 논문의 3613 페이지에 정의된 바와 같은 신드롬(syndrome) 다항식이고, t는 디코딩될 일반화된 리드-솔로몬, 이진 BCH 또는 이진 교체 코드(binary alternant code)의 설계된 보정 반경(correction radius)이다.
즉, 오류 위치 다항식은 근(root)이 오류 위치를 결정하는 다항식으로, 하드 벡터(hard vector)의 좌표가 잘못된 것이다. 이진 BCH 코드와 같은 이진 코드를 사용하는 경우, 디코더는 지정된 위치에서 에러 비트를 플립(flip)한다. 리드-솔로몬 코드와 같은 비이진(non-binary) 코드가 사용되는 경우, 디코더는 에러 값 또한 결정한다.
오류 추정 다항식은, 에러 값을 구하기 위해 오류 위치 다항식과 함께 디코더에 의해 사용되는 다항식이다. 예를 들어, 이러한 에러 값은, 블라허트(R. E. Blahut, "데이터 전송을 위한 대수 코드", Cambridge University Press, p. 196 (Theorem 7.4.2), 2003)에 기재된 바와 같은 포니(Forney)의 알고리즘을 이용하여 구할 수 있으며, 그 전체 내용이 본 명세서에 참조로 포함된다.
여기서, "가장 짧은(shortest)"은 출력(Λ(X))이
Figure 112016034152376-pat00013
를 최소화할 수 있음을 의미한다.
상기 키 방정식은 많은 다른 형태를 갖는 것으로 이해되어야하며, 각 버전은 오류 위치 및 오류 추정 다항식의 다소 수정된 정의를 사용할 수 있다. 예를 들어, 빌린(Beelen)의 키 방정식은 보정된 오류 추정 다항식에 따라 그들의 역수보다는 그들의 오류 위치자(error locator)를 근(root)으로 하는 오류 위치 다항식을 사용한다.
실시 예는 키 방정식/오류 위치 다항식/오류 추정 다항식의 모든 버전에 사용될 수 있는 것으로 이해되어야 한다.
벌러캠프-매시 알고리즘의 대안으로, 디코더(2200)는, 예를 들어, 빌린(Beelen)의 3276 페이지에서 알고리즘 1의 1단계 내지 3단계 및 피츠패트릭의 논문(P. Fitzpatrick, "키 방정식", IEEE Trans. Inform. Theory, vol.41, no.5, pp.1290-1302, 1995. 9)에 설명된 바와 같이, 키 방정식의 모든 솔루션(
Figure 112016034152376-pat00014
,
Figure 112016034152376-pat00015
)의 모듈에 대한 적절한 단항식 정리(monomial ordering)에 대하여 그뢰브너(Groebner) 기저를 구하기 위해 임의의 알고리즘을 사용할 수 있다. 이때, 피츠패트릭의 논문의 전체 내용이 본 명세서에 참조로 포함된다.
일반화된 리드-솔로몬 코드를 디코딩하는 경우, 빌린(Beelen)은, X>Y, X에 대한 +1의 가중치, 및 Y에 대한 0의 가중치를 가지며 빌린(Beelen)의 3271 페이지에 정의된 (1, μ)-항 순서(term order)(이때, μ=0)인, 가중-렉스(weighted-lex) 단항식 정리를 사용한다.
이진 고파(Goppa) 코드를 디코딩하는 경우와 같은 다른 경우(교체 코드(alternant code)의 특별한 경우, 단지 이진 BCH 코드와 같은 교체 코드의 특별한 경우)에, 빌린(Beelen)에 기재된 바와 같이 수정된 키 방정식은, 빌린(Beelen)의 수학식 (10)의 오류 위치 다항식의 짝수(even) 및 홀수(odd) 부분에 대해 만들어진 것이다. 이 경우, S3200 단계에서의 경판정 디코딩은, X>Y, X에 대한 +1의 가중치, 및 Y에 대한 1의 가중치를 가지며 빌린(Beelen)의 3271 페이지에 정의된 (1, μ)-항 순서(이때, μ=1)인 가중-렉스(weighted-lex) 단항식 정리에 대하여, 수정된 키 방정식의 솔루션 모듈에 대한 그뢰브너(Groebner) 기저를 구할 수 있다.
다른 정리 또한 디코딩에 유용할 수 있음에 유의해야한다. 예를 들어, Y>X, X에 대한 +1의 가중치, Y에 대한 -1의 가중치를 갖는 가중-렉스 정리가 피츠패트릭(Fitzpatrick)의 논문에서 사용된다.
Figure 112016034152376-pat00016
,
Figure 112016034152376-pat00017
Figure 112016034152376-pat00018
의 주요 단항식이
Figure 112016034152376-pat00019
이고,
Figure 112016034152376-pat00020
의 주요 단항식이
Figure 112016034152376-pat00021
이고,
Figure 112016034152376-pat00022
이며,
Figure 112016034152376-pat00023
인 그뢰브너(Groebner) 기저인 것으로 가정한다.
단일 변수 다항식(
Figure 112016034152376-pat00024
)에서 첫 번째 아래 첨자(i)는 그것이 속한 이변수 다항식(
Figure 112016034152376-pat00025
)을 나타내는 반면, 두 번째 아래 첨자(j, j는 0 또는 1)는
Figure 112016034152376-pat00026
에서 Y에 의해 곱해지는
Figure 112016034152376-pat00027
가 j=1 인지 또는 j=0 인지 여부를 나타낸다. 요약하면,
Figure 112016034152376-pat00028
(i=1, 2)이다.
수신된 경판정 벡터에서 t 에러만큼 있는 경우, 오류 위치자는 빌린(Beelen)에 기재된 바와 같이, 0이 아닌(non-zero) 스칼라 요소까지 Λ(X) 또는 B+(X)일 것이다. 이진 고파(Goppa) 코드를 참조하면, 설계된 보정 반경(t)은 기저를 이루는 일반화된 리드-솔로몬 코드의 보정 반경은 아니지만, 높은 값의 deg(g(X))를 갖는다. 이때, g(X)는 빌린(Beelen)의 3277 내지 3278 페이지에 기재된 바와 같은 고파(Goppa) 다항식이다.
S3200 단계에서, 디코더(2200)는 치엔 탐색(Chien search)이라 불리는 단계에서 추정되는 오류 위치 다항식의 근(root)을 구하고, 디코딩된 코드가 비이진인 경우 에러 값 또한 구한다. 디코더(2200)는 예를 들어, 포니(Forney)의 알고리즘을 이용하여 에러 값을 구할 수 있다.
입력 경판정 벡터와 함께 오류 위치자(및 비이진 경우의 에러 값)를 이용하면, 디코더(2200)는 후보 경판정 디코딩된 워드를 생성할 수 있다. 그 다음, 경판정 디코더는 후보 경판정 디코딩된 워드의 신드롬(syndrome)을 산출할 수 있다. 신드롬이 제로(zero)인 경우, S3250 단계에서, 디코더(2200)는 경판정 디코딩에 성공한 것으로 판단하고, 후보 경판정 디코딩된 워드를 출력한다. 일부의 경우에서, 신드롬이 제로인지 여부를 알게 되면 신드롬의 명백한 산출을 필요로 하지 않거나 치엔 탐색(Chien search) 또한 수행하지 않는 것에 주의해야 한다.
예를 들어, 리드-솔로몬 코드의 디코딩에서 뿐만 아니라 벌러캠프-매시 또는 벌러캠프 알고리즘으로 원시(primitive) 이진 BCH 코드를 디코딩하는데 있어서, 그 전체 내용이 본 명세서에 참조로 포함될 Tolhuizen(L. Tolhuizen, "BCH 디코딩에서 서브필드(subfield) 확인 방법", Proc. ISIT 1997, Ulm, Germany, p. 263, 1997.6.29-1997.7.4)에 기재된 바와 같이, 오류 위치자가 코드와 알고리즘 등호(algorithm equal, t)의 변수(L)를 구성하는데 사용되는 유한체(finite field)에서 별도의 근(root)을 가져야만 보정된 워드의 신드롬이 제로가 된다.
이러한 경우에는, 연판정 디코딩이 수행되지 않는다. 신드롬이 제로가 아닌 경우, 디코더(2200)는 경판정 디코딩에 실패한 것으로 판단한다. 이 경우, S3200 단계에서, 디코더(2200)는 다항식(Λ(X) 및 B+(X)) 뿐 아니라 몇 개의 가중치를 출력한다. 좀 더 구체적으로, 빌린(Beelen)에서와 같은 이진 고파(Goppa) 코드를 디코딩하기 위해, 두 개의 가중치(w1 및 w2)는 빌린(Beelen)의 수학식 (12), (13)에 따라 산출될 수 있다.
에러의 수(ε)가 짝수인 경우, 가중치(w1)는 수학식 (12)에서 제1 방정식의 오른쪽이고 가중치(w2)는 수학식 (12)에서 제2 방정식의 오른쪽이며, 에러의 수(ε)가 홀수인 경우, 가중치(w1)는 수학식 (13)에서 제1 방정식의 오른쪽이고 가중치(w2)는 수학식 (13)에서 제2 방정식의 오른쪽이다. 상기 가중치는 알려지지 않은 에러의 수(ε)에 의해서도 결정되지만, 디코더는 그 차이(w1-w2)를 알아야함이 후술된다.
빌린(Beelen)의 상기 두 수학식을 살펴보면, 차이(w1-w2)가 에러의 수(ε) 자체가 아닌 두 가능성인 ε mod 2 ∈ {0, 1} 에 따라서만 결정된다는 것을 알 수 있다. 두 가능성을 구별하기 위해, 디코더는 단순히 두개의 가정(ε mod 2 = 0 및 ε mod 2 = 1)을 확인할 수 있다. 그 대신에, 단일 정보 비트 손실의 비용에서, 오리지날 고파(Goppa) 코드의 짝수 서브코드(subcode) 즉, 짝수 가중치 워드만이 디코더에 의해 사용될 수 있다. 이 경우, ε mod 2는 단순히 수신된 경판정 워드의 패리티이다.
그 대신에, 우(Wu)의 논문에서와 같은 리드-솔로몬 코드를 디코딩하기 위해, S3200 단계에서 벌러캠프-매시 알고리즘이 사용되고, 단일 가중치(
Figure 112016034152376-pat00029
)가 계산되어 출력될 수 있다. 또 다른 방법으로, 우(Wu)의 논문에서와 같은 이진 BCH 코드를 디코딩하기 위해, S3200 단계에서 벌러캠프 알고리즘이 사용되고, 단일 가중치(
Figure 112016034152376-pat00030
)가 계산되어 출력될 수 있다.
S3250 단계에서 경판정 디코딩에 실패한 것으로 판단된 경우, S3275 단계에서, 디코더(2200)는 소프트(soft) 출력 벡터를 자연수들(natural numbers)의 벡터(중복도(multiplicity),
Figure 112016034152376-pat00031
)로 변환한다. 이때, K는 디코딩될 일반화된 리드-솔로몬 코드 또는 교체 코드(alternant code)를 정의하는데 사용되는 유한체(finite-field)이고, K*는 그것의 곱셈 하위그룹이다.
디코더는 중복도(multiplicity)를 생성하기 위해 임의의 공지된 방법을 사용할 수 있다. 예를 들어, 우(Wu)의 논문의 섹션 Ⅴ에 나타난 바와 같이, 중복도의 벡터는 일반화된 리드-솔로몬 코드를 디코딩하기 위한 심볼 에러 확률의 벡터의 스칼라 배(scalar multiple) 또는 이진 BCH 코드나 교체 코드를 디코딩하기 위한 비트 에러 확률의 벡터의 스칼라 배를 반올림함으로써 획득될 수 있다.
다른 예로, 그 전체 내용이 본 명세서에 참조로 포함될 무하마드의 논문(M, H,. Mohamed, J. S. R. Nielsen, and M. Bossert, "신뢰성 정보를 이용하는 리드-솔로몬 코드의 감소된 리스트 디코딩", arXiv:1406:0688v1)에 기재된 바와 같이, 디코더는 일부 고정된, 미리 정의된 및/또는 선택된 중복도(m)를 가장 신뢰할 수 있는 좌표(L)로 부여할 수 있다. 그 대신에, 디코더는 하기와 같은 방법을 사용할 수 있다.
일반화된 리드-솔로몬 코드에 대한 일부 심볼 에러 확률을 조정하거나, 이진 BCH 코드와 교체 코드에 대한 비트 에러 확률이 어떤 문턱값 이상인 경우에 대해, m(m은 미리 정의된 및/또는 선택된 숫자)의 중복도를 좌표로 부여할 수 있다. 그렇지 않으면, 디코더는 0의 중복도를 부여한다. 다른 방법으로, NAND 플래시 메모리에서의 이진 BCH 코드 및 교체 코드에 대하여, 연판정 정보에 대한 리드 결과 일부 좌표에 대해 "위크 제로(weak zero)" 또는 "위크 원(weak one)"을 나타내는 경우, 디코더는 미리 정의된 및/또는 선택된 m의 중복도를 좌표로 부여한다. 그렇지 않으면, 디코더는 0의 중복도를 좌표로 부여한다.
S3200 단계에서 경판정 디코딩에 실패한 것으로 판단된 경우, S3300 단계에서, 디코더(2200)는 S3200 단계에서의 경판정 디코딩으로부터의 출력(Λ(X) 및 B+(X))과, 연판정 디코딩을 위해 사용되는 몇 개의 추가 정수(가중치, 가능한 제로 또는 마이너스)와, S3275 단계에서 생성된 중복도 벡터에 기초하여 보간을 수행한다.
S3300 단계에서, 디코더(2200)는 이변수 다항식(Q(X, Y)∈K[X, Y], 이때 K는 디코딩될 일반화된 리드-솔로몬 코드 또는 교체 코드를 정의하는데 사용되는 유한체(finite-field))와, 특성(Q(X, Y))을 찾아낸다. Q(X, Y)는 정의될 K[X, Y]의 K[X]-서브-모듈(N)이고, Q(X, Y)는 N에서의 다항식 중 최소의 (r, w)-가중된 차수(weighted degree)를 갖는다. 이때, r은 1 또는 2이다.
여기서, 다항식(
Figure 112016034152376-pat00032
, 이때 aj는 0이 아니고, iX(j),iY(j)는 모든 j에 대해 음의 정수가 아니고, iX(j),iY(j)는 j의 서로 다른 선택을 통해 구별됨)의 최소의 (r, w)-가중된 차수는
Figure 112016034152376-pat00033
로 정의된다.
트리포노프(Trifonov), 리(Lee), 빌린(Beelen)과 같은 일부 논문들에서, 보간 문제는
Figure 112016034152376-pat00034
차 동차(Y-Z)의 부분적으로 균일화된 3중 변수 다항식(
Figure 112016034152376-pat00035
) 및
Figure 112016034152376-pat00036
차 동차(Y-Z)의 부분적으로 균일화된 3중 변수 다항식의 모듈(
Figure 112016034152376-pat00037
)의 특정 K[X]-서브모듈(N')에서 (1, w1, w2)-가중된 차수의 최소화에 관한 것이다.
여기서, 3중 변수 다항식(Q(X,Y,Z))의 (1, w1, w2)-가중된 차수는 i+w1j+w2k의 Q(X,Y,Z)에 나타난 모든 단항식(XiYjZk)에 대해 최대이다. 다만, 트리포노프(Trifonov) 및 리(Lee)의 Lemma 1에 기재된 바와 같이, 맵(map,
Figure 112016034152376-pat00038
)은
Figure 112016034152376-pat00039
차 동차(Y-Z)를 갖는 부분적으로 균일화된 다항식과 중복도에 대해 하기와 같은 효과를 갖는 최대한의
Figure 112016034152376-pat00040
의 Y차의 3중 변수 다항식 사이의 K[X]-모듈의 동형(isomorphism,
Figure 112016034152376-pat00041
)이다. 부분적으로 균일화된 다항식
Figure 112016034152376-pat00042
및 x0,y0,z0∈K에 대해, 0이 아닌 y0 또는 z0를 갖는 포인트(x0,y0,z0)에서 f(X,Y,Z)의 중복도는 z0≠0일때의
Figure 112016034152376-pat00043
이거나 y0≠0일때의
Figure 112016034152376-pat00044
이다. 이때,
Figure 112016034152376-pat00045
Figure 112016034152376-pat00046
의 Y-반전된 버전이다.
이러한 동형에 따라 상술한 모듈(N', 빌린(Beelen)에서 보간이 일어나는 모듈)의 이미지가 후술될 모듈(N)인 것은 동형(
Figure 112016034152376-pat00047
)의 정의에서 직접 확인할 수 있다. 게다가, 단항식 형태(
Figure 112016034152376-pat00048
)의 (1, w1, w2)-가중된 차수가
Figure 112016034152376-pat00049
즉, XiYj 뿐 아니라
Figure 112016034152376-pat00050
의 (1, w1-w2)-가중된 차수와 동일하기 때문에, f(X,Y,Z)의 (1, w1, w2)-가중된 차수는 f(X,Y,Z)에 의존하지 않는
Figure 112016034152376-pat00051
뿐 아니라 상수(
Figure 112016034152376-pat00052
)의 (1, w1-w2)-가중된 차수와 동일하다. 이는,
Figure 112016034152376-pat00053
가 모듈(N)에서 (1, w1-w2)-가중된 차수를 최소화하는 경우, 동형(
Figure 112016034152376-pat00054
)에 따라 모듈(N')의 이미지인
Figure 112016034152376-pat00055
의 프리-이미지(f)를 모듈(N')에서의 (1, w1, w2)-가중된 차수를 최소화함을 의미한다.
상술한 바와 같은 3중 변수(trivariate) 보간 문제는, 후술될 모듈(N)에서 (1, w)-가중된 차수를 최소화하는 이변수 다항식을 구하기 위한 이변수(bivariate) 보간 문제와 동일하다. 이때, 동일한 이변수 문제에 대한 하나의 가중치(w)는 뺄셈(w = w1 - w2)에 의해 획득될 수 있다. 이러한 이유로, 일반론(generality)의 손실 없이, 실시예는 이변수 보간 문제를 논의한다.
리스트 사이즈(
Figure 112016034152376-pat00056
)에 대하여, N은 다음과 같은 중복도 제약조건을 만족하는 최대한의
Figure 112016034152376-pat00057
에서 Y-차수의 모든 다항식(f(X, Y), 즉 f(X, Y)는
Figure 112016034152376-pat00058
로 나타낼 수 있음)으로 이루어지는 모듈이다.
모든 x∈K*(이때, K*는 K의 곱셈의 서브그룹, 즉 K*:=K\{0}임)에 대해,
Figure 112016034152376-pat00059
이면, 포인트(
Figure 112016034152376-pat00060
, 일반화된 리드-솔로몬 코드의 경우 또는 Wu의 논문에서의 이진 BCH 코드의 경우에 대한 포인트) 또는 포인트(
Figure 112016034152376-pat00061
, 빌린(Beelen)에서의 이진 고파(Goppa) 코드의 경우에 대한 포인트)에서 f의 중복도는 최소한
Figure 112016034152376-pat00062
(S3275 단계에서 획득된 중복도 벡터의 x-1번째 엔트리)이거나
Figure 112016034152376-pat00063
이다. 이때, x-1은 오류 위치 다항식이 그의 근(root)으로 오류 위치자의 역수를 갖도록 정의된 경우에 사용되는 반면, x는 오류 위치 다항식이 그의 근(root)으로 오류 위치자 자체를 갖도록 정의되는 경우 사용된다.
반대로,
Figure 112016034152376-pat00064
이면, 포인트(x, 0)에서 f(X, Y)의 Y-반전된 버전의 중복도가 최소한
Figure 112016034152376-pat00065
(또는
Figure 112016034152376-pat00066
, 이는 상술한 바와 같이 선택됨)이다. 이때,
Figure 112016034152376-pat00067
인 경우, f(X, Y)의 Y-반전된 버전은
Figure 112016034152376-pat00068
이다.
리스트 사이즈(
Figure 112016034152376-pat00069
)는 모듈(N)에서 다항식에 대한 임의의 단항식에서의 허용된 Y의 최대 차수이다. 리스트 사이즈(
Figure 112016034152376-pat00070
)는 또한, 디코더의 출력에서 최대 가능한 리스트 사이즈에 대한 상계(upper bound)이다.
간결함과 명확성을 위해, 중복도가
Figure 112016034152376-pat00071
인 경우에 대해서면 설명된다.
모듈(N)의 의미에 대하여, 모듈(N)에 대한 보다 일반적인 정의가 고려될 수 있다.
Figure 112016034152376-pat00072
인 포인트들의 집합(x∈K*)이 두 개의 분리된 부분 집합(A, B)으로 분할되고, 함수(
Figure 112016034152376-pat00073
)가 주어진다. 모듈(
Figure 112016034152376-pat00074
)은
Figure 112016034152376-pat00075
로 정의될 수 있다. 여기서, NA 및 NB는 최대한의
Figure 112016034152376-pat00076
에서 Y-차수의 모든 이변수 다항식의 모듈의 다음과 같은 서브-모듈이다. NA는 조건(
Figure 112016034152376-pat00077
)을 만족하는 최대한의
Figure 112016034152376-pat00078
에서 Y-차수를 갖는 모든 이변수 다항식(f(X, Y))으로 이루어진 서브-모듈이고, NB는 조건(
Figure 112016034152376-pat00079
)을 만족하는 최대한의
Figure 112016034152376-pat00080
에서 Y-차수를 갖는 모든 이변수 다항식(f(X, Y))으로 이루어진 서브-모듈이다.
모듈(N)은,
Figure 112016034152376-pat00081
이고
Figure 112016034152376-pat00082
인 모든 포인트들(x)의 집합인 집합 A와,
Figure 112016034152376-pat00083
이고
Figure 112016034152376-pat00084
인 모든 포인트들(x)의 집합인 집합 B와,
Figure 112016034152376-pat00085
또는
Figure 112016034152376-pat00086
를 갖는 최종 정의의(즉, 모듈(
Figure 112016034152376-pat00087
)의) 특별한 경우이다.
타입 B에 대한 조건은 타입 B의 모든 x에 대해 다음과 같이 설명될 수 있다. 포인트 (x, 0)에서 f(x, y)의 Y-반전된 버전의 중복도는 다중 벡터(multiplicity vector)에서 적어도 x-1에 상응하는 엔트리(mx-1)이다.
집합 B가 비어있으면 즉,
Figure 112016034152376-pat00088
이면, 상기 보간 문제는 코에터-바디(Koetter-Vardy) 디코딩에서 발생하는 것과 동일하다.
보간 문제를 해결하기 위해 즉, 최소의 가중된 차수를 갖는 다항식을 결정하기 위해, 디코더는 전형적으로 Y>X이거나 X>Y(두 옵션은 유효함)를 갖는 (1, w)-가중-렉스 정리에 대하여 모듈(
Figure 112016034152376-pat00089
)에 대한 그뢰브너 기저를 결정하고, 그뢰브너 기저에서 최소의 가중된 차수를 갖는 다항식을 출력한다. (1, w)-가중된 차수(즉,
Figure 112016034152376-pat00090
이면,
Figure 112016034152376-pat00091
의 가중된 차수는
Figure 112016034152376-pat00092
의 가중된 차수의 이상이 아님)와 일치하는 어떠한 단항식 순서가 사용될 수 있다. 이 시점에서, "그뢰브너 기저"는 이러한 단항식 정리에 대한 그뢰브너 기저를 나타낼 것이다.
K[X] 이상의 모듈에 대해 그뢰브너 기저를 구하기 위한 일반적인 방법은 크게 두 가지 유형으로 나눌 수 있다. 첫 번째 유형은 NA와 같은 모듈에 대한 그뢰브너 기저를 구하는 즉, 그 전체 내용이 본 명세서에 참조로 포함되는 코에터(R. Koetter and A. Vardy, "리드-솔로몬 코드의 대수적 연판정 디코딩", IEEE Trans. Inform. Theory, vol. 49, no. 11, pp. 2809-2825, 2003. 11)에 기재된 바와 같이 코에터-바디(Koetter-Vardy) 디코딩에서의 보간 문제를 위해 그뢰브너 기저를 구하는 것을 목표로 하는 알고리즘을 포함한다. 이러한 유형의 주요한 알고리즘은, McEliece(R. J. McEliece, "리드-솔로몬 코드를 위한 Guruswami-Sudan 디코딩 알고리즘", IPN Progress Report, vol. 42-153, 2003. 5)의 섹션 Ⅶ에 기재된 바와 같은 코에터(Koetter) 알고리즘이다.
알고리즘의 두 번째 유형을 설명하기 위해, 최대한의
Figure 112016034152376-pat00093
에서 Y-차수의 모든 다항식으로 이루어지는 K[X, Y]의 서브-모듈은
Figure 112016034152376-pat00094
에 대해 K[X]-모듈로 동형인 것에 주의해야 한다. 즉, 모듈들(NA, NB,
Figure 112016034152376-pat00095
)은
Figure 112016034152376-pat00096
의 서브-모듈로 간주될 수 있다. 두 번째 유형의 알고리즘은
Figure 112016034152376-pat00097
의 일부 서브-모듈(M)의 기존 프리-모듈 기저(free-module basis)를 그뢰브너 기저로 변환한다. 이러한 알고리즘의 일예는, 각각의 그 전체 내용이 본 명세서에 참조로 포함되는 Alekhnovich(M. Alekhnovich, "다항식에 대한 선형의 디오판토스 방정식(diopantine equation) 및 리드-솔로몬 코드의 소프트 디코딩", IEEE Trans. Inform. Theory, vol. 51, no. 7, 2005. 7) 및 Giorgi(P. Giorgi, C. Jeannerod, 및 G. Villard, "다항식 매트릭스 계산의 복잡성", in Proc. Int. Symp. Symbol. Algebr. Comput., pp. 135-142, ACM, 2003)의 알고리즘이다.
이하에서는, "제1 버전의 알고리즘" 및 "제2 버전의 알고리즘" 각각으로 그뢰브너 기저를 구하기 위해 상술한 제1 및 제2 타입의 알고리즘을 나타낼 것이다.
도 4a 내지 도 4c는 본 발명의 일 실시예에 따른 그로브너 기저를 결정하는 방법을 설명하는 도면이다.
하드/소프트(Wu) 디코딩에서 보간을 위해 존재하는 알고리즘은, KV 디코딩에서 보간을 위해 종래의 알고리즘을 변환하는 것을 기반으로 한다. 문헌에서, KV 디코딩을 위한 각 보간 알고리즘은 "사용자에 의해" 별도의 하드/소프트(Wu) 디코딩을 위한 알고리즘으로 변환된다.
예를 들어, 트리포노프(Trifonov)와 리(Lee)에서, Guruswami-Sudan 하드 리스트 디코딩에 대한 보간을 위한 알고리즘은 하드(Wu) 디코딩에 적용하기 위해 수정된다. 이러한 알고리즘을 제한된 소프트(Wu) 디코딩(모든 중복도(mx)는 0 또는 단일 숫자(m)임)뿐만 아니라 하드(Wu) 디코딩(모든 중복도(mx)는 동일한 단일 숫자(m)와 같음)을 지원하지만, 일부 일반적인 소프트(Wu) 디코딩은 지원하지 않는다. 이때, 중복도의 백터 엔트리(mx)는 임의의 음이 아닌 정수 값일 수 있다.
빌린(Beelen)에서, 명시적 기저는 모듈(
Figure 112016034152376-pat00098
)의 균일화된 버전에 대해 구해지고, 효율적인 기존의 제2 버전의 알고리즘이 사용된다. 빌린(Beelen)에서의 기저는, 소프트(Wu) 알고리즘보다 하드(Wu) 알고리즘에 적합하다(단일 중복도인 것으로 가정한 경우).
도 4a 내지 도 4c에 도시된 방법은, 일반적인 보간에 대한 알고리즘을 소프트(Wu) 디코딩의 보간을 위한 알고리즘으로 변환하기 위한 유연하고 일반적인 방법을 제공한다.
도 4a를 참조하면, 도 4a는 서브-모듈(NA)에 대한 그뢰브너 기저를 구하기 위한 임의의 일반적인 보간 알고리즘을 이용하고, 코에터(Koetter) 알고리즘을 이용하여 모듈(
Figure 112016034152376-pat00099
)에 필요한 그뢰브너 기저를 얻기 위해 획득된 그뢰브너 기저를 개선할 수 있는 개선 알고리즘(refinement algorithm)을 나타낸다.
타입 B의 포인트의 수가 많으면, 코에터(Koetter) 알고리즘을 이용하여 타입 B의 포인트를 자동으로 처리하는 변수의 초기값을 선택하고 타입 A의 포인트들에 대해서만 알고리즘의 메인 루프(loop)를 실행함으로써 효과적인 솔루션이 될 수 있다. 좀 더 상세하게는, 그 전체 내용이 본 명세서에 참조로 포함되는 코에터(R. Koetter, J. Ma 및 A. Vardy, "리드-솔로몬 코드의 대수적 리스트에서의 재인코딩 변환(re-encoding transformation)", IEEE Trans. Inform. Theory, vol. 57, no. 2, pp. 633-647, 2011. 2)의 Lemma 4를 이용하고, 이변수 다항식의 Y-반전된 버전인 타입 B의 포인트들에 대한 중복도 제약조건을 리콜(recall)하여, McEliece에 제시된 코에터(Koetter) 알고리즘의 초기화는 다음과 같은 루프(loop)로 대체될 수 있다:
Figure 112016034152376-pat00100
. 이때, j=0 내지
Figure 112016034152376-pat00101
이다.
여기서, 숫자(t)에 대해, t+
Figure 112016034152376-pat00102
에 의해 정의된다.
그러나, 타입 B의 포인트들의 수는 일반적으로 작다.
S410 단계에서, 디코더는 임의의 일반적인 알고리즘을 이용하여 NA에 대한 (
Figure 112016034152376-pat00103
+1)-요소의 그뢰브너 기저를 결정한다.
예를 들어, 디코더는 코에터(Koetter) 알고리즘, 또는 각각의 그 전체 내용이 본 명세서에 참조로 포함되는 리(K. Lee 및 M. E. O'Sullivan, "그뢰브너 기저 관점으로부터 리드-솔로몬 코드의 리스트 디코딩", Journal of Symbolic Computation, 43 (2008), pp. 645-658) 및 리(K. Lee 및 M. E. O'Sullivan, "리드-솔로몬 코드를 연판정 디코딩하기 위해 그뢰브너 기저를 이용하는 보간 알고리즘", in Proc. ISIT 2006)에 기재된 바와 같은 알고리즘을 이용할 수 있다.
S420 단계에서, 디코더는 서브-모듈(NA)에 대한 그뢰브너 기저를 모듈(
Figure 112016034152376-pat00104
)에 대한 그뢰브너 기저로 변환하기 위해 코에터(Koetter) 알고리즘의 C 반복을 적용한다. 이때,
Figure 112016034152376-pat00105
이다.
코에터(Koetter) 알고리즘은 반복적 알고리즘이다. 각 포인트에서의 최소한의 미리 정해진 중복도를 갖는 필요조건은 이변수 다항식의 계수들에서 동차(homogenous) K-선형 방정식의 리스트로 기재되어 있다. 이러한 방정식들은 누적된 커널(kernel)들이 K[X]-모듈이 되도록 정렬되어 있다.
이때, j-번째 누적된 커널은, 첫 번째 j 동차 선형 방정식을 만족하는 계수를 갖는 모든 다항식들로 구성되는
Figure 112016034152376-pat00106
의 K-서브-벡터-공간이다. "누적된 커널"이라는 용어는 일부의 j에 대해 j-번째 누적된 커널을 의미한다.
코에터(Koetter) 알고리즘이 작동하려면, 동차 선형 방정식은 누적된 커널이 벡터 공간뿐만 아니라 모듈이 되도록 정리되어야 한다. 누적된 커널이 K[X]-모듈을 구성하도록 동차 선형 방정식의 집합이 정리되지 않을 수도 있음에 주의해야 한다. 그러나, NA 를 정의하는 제약 조건에 상응하는 선형 방정식에 대해, 그러한 순서를 찾을 수 있다. 또한, 다음과 같은 우(Wu)로부터 코에터(Koetter) 알고리즘을 이용하여,
Figure 112016034152376-pat00107
를 정의하는 제약 조건의 집합에 상응하는 선형 방정식은 누적된 커널이 K[X]-모듈을 구성하도록 정리될 수 있다.
도 4a에서의 방법과 반대로, 우(Wu)는 하드/소프트(Wu) 디코딩에서 전체적인 보간 문제에 대해, 즉 N에 대한 그뢰브너 기저를 찾기 위해, 코에터(Koetter) 알고리즘을 이용하도록 제안될 수 있다. 한편, S410 단계에서, 디코더는 코에터(Koetter) 알고리즘보다 더 효율적인 알고리즘(예컨대, Giorgi 알고리즘)을 이용하고, S420 단계에서 작업의 일부에 대해서만 코에터(Koetter) 알고리즘으로 수행된다.
코에터(Koetter) 알고리즘의 각 반복에 있어서, 디코더는, 서로 다른 표준 단위 벡터를 포함하는 기저의 구성요소의 주요 단항식인 "대각선의 특성"을 갖는 누적된 커널까지만 (
Figure 112016034152376-pat00108
+1)-요소의 그뢰브너 기저가 있다고 가정한다.
S420 단계에서, 디코더에 의해 수행되는 C 반복의 각 하나는, 현재 누적된 커널(NA와 타입 B의 포인트들에 상응하는 고려된 동차 방정식에 대해서만 해당하는 누적된 커널의 교차점)에 대한 그뢰브너 기저를 다음 누적된 커널에 대한 대각선의 특성을 갖는 그뢰브너 기저로 변환한다.
타입 B의 포인트들에 대한 필요조건은 또한 디코더에 의해 동차 선형 방정식으로 나누어질 수 있으며, 이러한 방정식은 누적된 커널이 K[X]-모듈이 되도록 디코더에 의해 정리될 수 있다. 이는 또한, NA와 타입 B의 포인트들에만 상응하는 누적된 커널의 교차점이 K[X]-모듈인 것을 의미한다.
Figure 112016034152376-pat00109
의 랭크-(
Figure 112016034152376-pat00110
+1) 서브-모듈의 임의의 (
Figure 112016034152376-pat00111
+1)-요소의 그뢰브너 기저가 대각선의 특성을 가지고 있어야 하기 때문에 개선 알고리즘(refinement algorithm)이 작동한다. 그렇지 않으면, 동일한 단위 벡터를 포함하는 주요 단항식인 두 개의 기저 요소가 있다. 이 경우, 하나의 주요 단항식은 다른 하나로 분할해야하며, 이런 이유로, 남아있는 그뢰브너 기저의 집합을 유지하는 동안 하나의 기저 벡터는 버려질 수 있다. 그 결과, 랭크(rank)보다 작은 카디널리티(cardinality) 획득되는 생성기의 집합은 모순이다.
도 4a의 방법에서, 디코더는 코에터(Koetter) 알고리즘의 이전 반복의 출력과 같이 코에터(Koetter) 알고리즘보다 더 효율적인 알고리즘으로부터 잠재적으로 얻어진 서브-모듈(NA)에 대한 그뢰브너 기저를 이용하고, 타입 B의 포인트들을 계속해서 처리한다.
예시
213- 1 길이를 가지고, t=70의 보정 반경(correction radius)을 갖는 이진 BCH 코드를 가정한다(이러한 코드는 일부 낸드 플래시 응용에서 실제 사용될 수 있다).
상술한 바와 같이, 타입 B의 포인트 수는 S3200 단계에서의 경판정 디코딩의 출력 및 S3275 단계에서의 중복도 부여(multiplicity assignment)에 의해 결정된다.
경판정 에러의 수는 [71, 140]에서 균일하게 그려진 시뮬레이션이 수행되었다. 타입 B의 포인트들의 히스토그램은 표 1과 같다.
타입 B의 포인트들의 수 0 1 2 3
실험들의 수(100 중에서) 58 34 7 1
그러므로, 타입 B가 3 보다 많은 포인트를 가질 확률은 적다(예컨대, 100 중 1). 연판정 시뮬레이션의 일 예에서, 상기 코드에 대하여 요구되는 중복도는 표 2와 같다.
중복도 6 5 4 3 2 1 0
포인트들의 수 9 15 12 18 30 62 8191-146
이러한 포인트들 중에서, 3개의 타입 B의 포인트들이 있고, 이러한 포인트들에서 요구되는 중복도는 5, 3, 및 2라고 가정한다. 그러면, 타입 A의 포인트들의 총 비용(total cost)는 770이고, 타입 B의 포인트들의 총 비용은 24이다.
개선(refinement)에 대한 추가 비용은 코에터(Koetter) 알고리즘의 마지막 24번의 반복들(iterations)의 복잡도에 해당한다. 이는 코에터(Koetter) 알고리즘을 수행하는 총 복잡도의 24/794 이상이다. 코에터(Koetter) 알고리즘의 i번째 반복의 복잡도를 i 복잡도 유닛으로 추정하면, 개선의 복잡도는 코에터(Koetter) 알고리즘으로 전체 문제를 해결하는 복잡도의
Figure 112016034152376-pat00112
이다.
타입 A의 포인트들에 대한 통상의 보간 알고리즘(interpolation algorithm)이 전체 솔루션에 대한 코에터(Koetter) 알고리즘의 복잡도 보다 5배 이상 빠르다면, 개선을 이용한 후에 전체적인 복잡도는 코에터(Koetter) 알고리즘의 복잡도의 약
Figure 112016034152376-pat00113
일 것이다(약 4배 빠름).
도 4b는 트라이앵글 기저 알고리즘(triangular basis algorithm) 을 나타내는 도면이다. 트라이앵글 기저 알고리즘은 서브-모듈
Figure 112016034152376-pat00114
에 대하여 트라이앵글 기저를 찾는 임의의 알고리즘(예를 들어, Lee 등의 리 앤 오설리반(Lee and O'Sullivan) 알고리즘, "An interpolation algorithm using Groebner bases for soft-decision decoding of Reed-Solomon codes," Proc. ISIT 2006)으로 시작하고, 상기 구한 트라이앵글 기저를 상기 모듈
Figure 112016034152376-pat00115
에 대한 트라이앵글 기저가 되도록 수정하며, 상기 서브-모듈
Figure 112016034152376-pat00116
에 대한 그뢰브너 기저를 얻기 위하여 버전 2의 통상의 보간 알고리즘(예를 들어, 지오르기(Giorgi) 등의 알고리즘 또는 리 앤 오설리반 알고리즘)을 적용한다.
S430 단계에서, 디코더는 서브-모듈
Figure 112016034152376-pat00117
에 대한 트라이앵글 기저 {g0, ..., gl}를 결정하기 위하여 알려진 알고리즘을 적용한다. 예를 들어, 디코더는 상기 2006 리 앤 오설리반 알고리즘을 사용하여 서브-모듈
Figure 112016034152376-pat00118
에 대한 트라이앵글 기저를 구할 수 있다.
S440 단계에서, 디코더는 타입 B의 포인트들을 참조하도록 서브-모듈
Figure 112016034152376-pat00119
에 대한 트라이앵글 기저 {g0, ..., gl}를 수정한다. 그 결과, 수정된 트라이앵글 기저는 모듈
Figure 112016034152376-pat00120
에 대한 트라이앵글 기저이다.
좀 더 자세하게는,
Figure 112016034152376-pat00121
Figure 112016034152376-pat00122
,
Figure 112016034152376-pat00123
에 대한 기저를 형성하고, 모든 j에 대해
Figure 112016034152376-pat00124
이면, 모듈(
Figure 112016034152376-pat00125
)이 트라이앵글 기저는
Figure 112016034152376-pat00126
와 같다.
N에 대한 상기 트라이앵글 기저에 대한 정당화는 다음의 두 가지 렘마(lemma, 보조 정리)로부터 나온다. 첫 번째 렘마는
Figure 112016034152376-pat00127
에서 다항식은 그 렘마에서 고려되는 다항식의 Y-반전된 버전임을 알려주는, 코에터-마-바르디(Koetter-Ma-Vardy)(R. Koetter, J. Ma, and A. Vardy, "The re-encoding transformation in algebraic list-decoding of Reed-Solomon codes," IEEE Trans. Inform. Theory, vol. 59, no. 6, pp. 3269-3281, June 2013)(이 전체 내용이 본 명세서에 참조로 포함된다)의 렘마 4(Lemma 4)의 즉시 결과(immediate consequence)이다.
렘마(Lemma) 1
Figure 112016034152376-pat00128
는 모든 다항식들(
Figure 112016034152376-pat00129
)의 집합(set)이다. 이때, 모든
Figure 112016034152376-pat00130
에 대해
Figure 112016034152376-pat00131
Figure 112016034152376-pat00132
로 분할한다.
다음 사항을 유의한다.
1. 렘마 1로부터의 다항식
Figure 112016034152376-pat00133
Figure 112016034152376-pat00134
를 만족한다.
2. 2006년 리앤 오설리반의 상기 알고리즘으로부터 구한 트라이앵글 기저
Figure 112016034152376-pat00135
에 대하여, 2006년 리앤 오설리반의 중복도 매트릭스(M)가 타입 A의 포인트들에 대한 중복도들의 벡터가 되도록 하는
Figure 112016034152376-pat00136
Figure 112016034152376-pat00137
)=1을 만족한다. 이는 2006년 리앤 오설리반의 방정식 (2)에서의
Figure 112016034152376-pat00138
정의로부터 나온다. 이는
Figure 112016034152376-pat00139
Figure 112016034152376-pat00140
에 대하여
Figure 112016034152376-pat00141
형태의 선형 인자만을 포함할 수 있으나,
Figure 112016034152376-pat00142
에 대해서는 그러하지 않음을 보여준다.
이러한 두 가지 사실은 렘마 2가 사용될 수 있음을 보여준다.
렘마(Lemma) 2
Figure 112016034152376-pat00143
Figure 112016034152376-pat00144
를 만족한다고 가정한다.
Figure 112016034152376-pat00145
으로 하고,
Figure 112016034152376-pat00146
Figure 112016034152376-pat00147
Figure 112016034152376-pat00148
를 갖는 다항식이다.
다음으로,
Figure 112016034152376-pat00149
이고, 정수(k) 및 다항식(
Figure 112016034152376-pat00150
)에 대해,
Figure 112016034152376-pat00151
는 a1, ..., ak에 의해 생성된 K[X, Y]의 서브-K[X]-모듈을 의미한다.
렘마(Lemma) 2의 증명
⊇: tjgj의 K[X]-선형 결합(linear combination)에서의 Yi의 계수는
Figure 112016034152376-pat00152
에 의해 이상적으로 생성된다. 즉, ti에 의해 이상적으로 생성된다.
⊇: 교차점에서 일부 h(X, Y)를 갖고,
Figure 112016034152376-pat00153
를 h의 Y-차수로 한다. gj가 주요 대각선에서 비-제로(non-zero) 요소를 갖는 직각의 기저(rectangular basis)를 형성하기 때문에,
Figure 112016034152376-pat00154
가 되도록 a0(X), ..., ai(X)가 존재한다. 증명을 완료하기 위해, j∈{0, ..., 0}에 대한 tj|aj를 나타내는 것으로 충분하다.
Figure 112016034152376-pat00155
를 작성한다.
우선,
Figure 112016034152376-pat00156
,
Figure 112016034152376-pat00157
이고
Figure 112016034152376-pat00158
이기 때문에, ti|ai를 홀드해야 한다. 유도(induction)에 의해 모든
Figure 112016034152376-pat00159
와 일부의 k에 대한 tj|aj를 가정한다. 이때, 일부 u(X)에 대해
Figure 112016034152376-pat00160
이다. 즉, hk(X)와 tk+1(X)가 모두 있기 때문에,
Figure 112016034152376-pat00161
는 tk(X)에 의해 나누어질 수 있다. gcd(gkk, tk)=1이기 때문에, tk|ak가 요구되어 진다.
S450 단계에서, 디코더는 모듈(N)에 대한 상기 트라이앵글 기저를, 버전 2의 임의의 통상의 보간 알고리즘(예를 들어, 지오르기(Giorgi) 등의 알고리즘)을 이용하여 모듈(N)에 대한 그뢰브너 기저로 변환한다.
S440 단계에서의 트라이앵글-기저 변환은 그 행(row)이 기저 원소들인 매트릭스의 원소의 최대 차수(maximum degree)를 최대
Figure 112016034152376-pat00162
만큼 증가시킨다. 최대 차수는 일부 알고리즘(예를 들어, 지오르기(Giorgi) 등의 알고리즘)의 점근 복잡도 분석(asymptotic complexity analysis)에서 선형 요소로 나타난다.
도 4c는 도 4a의 방법 또는 도 4b의 방법 중 하나를 이용하여 모듈(
Figure 112016034152376-pat00163
)에 대한 그뢰브너 기저를 결정하는 방법의 일 실시예를 나타낸다.
S460 단계에서, 디코더는 타입 B의 포인트들의 총 비용이 임계치 이상인지를 판단한다. 타입 B의 포인트들의 총 비용이 임계치 이상이면, 디코더는 S480 단계에서 도 4b의 방법을 수행한다. 다른 방안으로, 디코더는 S480 단계에서, 상술한 초기화에서 처리된 타입 B의 포인트들로, 코에터(Koetter) 알고리즘을 수행할 수 있다. 타입 B의 포인트들의 총 비용이 임계치 이하이면, 디코더는 S470 단계에서 도 4a의 방법을 수행한다.
다시 도 3을 참조하면, 디코더(2200)는 보간을 수행한 이후, S3400 단계에서 인수 분해(factorization)를 수행한다. 디코더(2200)는 Q(X, Y)의
Figure 112016034152376-pat00164
형태의 모든 선형 인자(linear factor)를 구한다. 이때,
Figure 112016034152376-pat00165
는 X에서의 형식적 멱급수(formal power series)이다.
Figure 112016034152376-pat00166
는 형식적 멱급수이기 때문에, 일반적으로 0이 아닌 계수를 갖는 무한대의 수(infinite number)일 것이다.
디코딩을 위해, 디코더(2200)는 각 선형 인자(
Figure 112016034152376-pat00167
)에 대해 f(X)로 언급될 제1 계수(사용되는 계수의 개수에 대한 설명은 후술함)로 이루어지는 불완전한 버전을 획득한다.
인수 분해는, 우(Wu)의 논문의 섹션 Ⅲ.C에 기재된 바와 같이 공지된 Roth-Ruckenstein 알고리즘으로 수행될 수 있다. 경판정 디코딩이 빌린(Beelen)에서와 같이 동작하면, 경우에 따라, 인수 분해는 Q(X,Y) 및 Q(X,Y)의 Y-반전된 버전 모두에 대해 디코더에 의해 수행된다.
경판정 디코딩이 우(Wu)의 논문에서와 같이 동작하면 즉, 출력(Λ(X), B+(X))이 상술한 바와 같은 벌러캠프-매시 또는 벌러캠프 알고리즘으로부터 Λ(X)와 XB(X) 또는 X2B(X)로 간주되면, Q(X,Y)에 대한 인수 분해가 디코더(2200)에 의해 수행된다.
S3500 단계에서, 디코더(2200)는 오류-위치자(error-locator) 구성을 수행한다. 오류-위치자 구성의 목적은, 상술한 바와 같은 각 선형 인자에 대해, 사용 가능한 데이터(Λ(X), B+(X), 및 f(X))로부터 오류-위치자 다항식(
Figure 112016034152376-pat00168
)을 복원하는 것이다. 디코더에 의해 수행되는 이 방법은, S3200 단계에서 경판정 디코딩에 사용된 방법에 따라 달라진다. 그러나, 모든 방법은
Figure 112016034152376-pat00169
에서 다항식들(f1(X) 및 f2(X))을 구하는 것으로 시작한다.
디코더가 f(X)로부터 다항식들(f1(X) 및 f2(X))을 구성할 수 있는 한가지 방법은 우(Wu)의 논문 섹션 Ⅲ.C에 기재된 벌러캠프-매시과 같은 알고리즘을 이용하는 것이다. 다른 방법은 빌린(Beelen)의 3274 페이지에 기재된 바와 같은, 유클리드(Euclidean) 알고리즘을 이용하는 것이다. 상기 두 방법에 대해, 멱급수로부터 요구되는 계수의 개수(즉, 불완전한 급수(f)에서 복구되어야하는 급수( 
Figure 112016034152376-pat00170
)의 양)는 f1(X) 및 f2(X) 차수의 하계(lower bound)에 따라 달라진다. 요구되는 계수의 개수는, 예를 들어 리드-솔로몬 코드 및 이진 BCH 코드 각각에 대해 우(Wu)의 논문 섹션 Ⅲ.C 및 Ⅳ에 나타나있다. 두 다항식(f1(X) 및 f2(X))은, 리드-솔로몬 코드와 이진 BCH 코드 각각에 대한 우(Wu)의 논문 섹션 Ⅲ, Ⅳ 및 리드-솔로몬 코드와 이진 고파(Goppa) 코드에 대한 빌린(Beelen)의 알고리즘(1), (2)에 기재된 바와 같이, 추정된 오류 위치 다항식 그 자체나 오류 위치 다항식의 짝수 부분을 재구성하기 위한 경판정 디코딩의 출력(Λ(X), B+(X))에 사용된다.
두 번째 경우, 짝수 부분만이 추정될 때, 디코더는 오류 위치 다항식을 획득하기 위해 추가적인 처리를 수행한다. 예를 들어, 상술한 바와 같은 수정된 키 방정식은 사용 가능한 짝수 부분으로부터 오류 위치 다항식의 홀수 부분을 산출하는 디코더에 의해 사용될 수 있다. 두 홀수 및 짝수 부분이 공지되면, 그것들은 오류 위치 다항식을 형성하는 디코더에 의해 만들어질 수 있다. 대안적으로, 빌린(Beelen)의 알고리즘 (2)의 6 단계에서의 방법은, 오류 위치자의 짝수 부분을 구성하는 중간 단계를 방지하고, f1(X) 및 f2(X)로부터 직접 추정된 오류 위치자와 S3200단계에서의 경판정 디코딩의 출력을 구성하는데 사용될 수 있다.
Q(X, Y)에 대해
Figure 112016034152376-pat00171
형태의 구별되는 선형 인자(linear factor)가
Figure 112016034152376-pat00172
까지 있을 수 있기 때문에, 디코더의 이 단계에서의 출력은 하나 이상의 가능성 있는 오류 위치자(즉,
Figure 112016034152376-pat00173
오류 위치자 까지의 전체 리스트)를 포함할 수도 있다.
S3600 단계에서, 리스트의 각 오류 위치 다항식에 대해, 디코더는 오류 위치 다항식의 근(root)을 구해서 오류 위치자를 결정한다. 디코딩된 코드가 비이진(non-binary)인 경우에, 리스트의 각 오류 위치 다항식에 대해, 통상적인 방법을 사용하여 디코더는 오류 추정 다항식(예컨대, 키 방정식에서 공지된 오류 위치자를 치환하여) 및 에러 값 또한 결정한다. 이 단계에서 에러 값과 위치가 모두 디코더에 공지되어 있기 때문에, 디코더는 에러 정정을 계속해서 진행한다.
통상적인 방법을 이용하여 리스트에서 획득된 추정된 오류 위치 다항식의 일부는 치엔 탐색(Chien search) 없이 즉시 폐기될 수 있음에 주의해야한다. 예를 들어, 추정된 오류 위치 다항식이 t 이하의 차수(degree)를 갖는 경우 버려질 수 있고, 에러의 개수가 t 이하인 경우 경판정 디코딩은 제1 단계에서 실패되지 않았을 것이다.
일반적으로, 다른 수정된 워드가 리스트에서 각각의 유효한 오류 위치 다항식에 대해 획득되고, "유효하다"는 차수(degree)가 t 이상임을 의미하고 수정된 워드의 신드롬(syndrome)이 제로(zero)임을 의미한다. 디코딩의 최종 단계에서, 디코더는 획득된 리스트의 워드들로부터 단일 워드(single word)로 결정한다. 이는, 가장 가능성이 높은 워드 또는 거의 가능성이 높은 워드(예컨대, 경판정 워드에 대해 해밍 거리(Hamming distance)에서의 가장 가까운 워드)를 선택하는 것과 같은 통상적인 방법을 이용하여 수행될 수 있다.
도 5는 본 발명의 일 실시예에 따른 저장 장치를 포함하는 전자 장치(5000)를 나타내는 블록도이다. 도 5를 참조하면, 전자 장치(5000)는 프로세서(5100), RAM(Random Access Memory, 5200), 입출력 장치(5300), 전원 공급 장치(5400), 및 저장 장치(1200)를 포함한다. 도 5에 도시되지는 않았지만, 전자 장치(5000)는 비디오 카드(video card), 사운드 카드(sound card), USB(universal serial bus) 디바이스, 또는 다른 전자 기기들과 통신할 수 있는 포트(port)들을 더 포함할 수 있다. 전자 장치(5000)는 PC(personal computer), 또는 노트북 컴퓨터(notebook computer), 모바일 폰(mobile phone), PDA(personal digital assistant), 카메라(camera)와 같은 휴대용 전자 기기로 구현될 수 있다.
프로세서(5100)는 특정 계산이나 작업을 수행할 수 있다. 즉 프로세서(5100)는 마이크로프로세서 또는 CPU일 수 있다. 프로세서(5100)는 어드레스 버스, 컨트롤 버스, 및 데이터 버스와 같은 버스(5500)를 통해 RAM(5200), 입출력 장치(5300), 및 저장 장치(1200)와 통신할 수 있다. 실시예에 따라, 프로세서(5100)는 PCI(peripheral component interconnect) 버스와 같은 확장 버스(expanded bus)에 연결될 수 있다.
RAM(5200)은 전자 장치(5000)를 동작하는데 사용되는 데이터를 저장할 수 있다. 예를 들어, RAM(5200)은 DRAM, 모바일 DRAM, SRAM, MRAM, PRAM, FRAM(ferroelectric RAM), 및/또는 RRAM(resistive RAM)일 수 있다.
입출력 장치(5300)는 키보드, 키패드, 또는 마우스와 같은 입력 장치 및 프린터, 또는 디스플레이와 같은 출력 장치를 포함할 수 있다. 전원 공급 장치(5400)는 전자 장치(5000)의 동작을 위한 동작 전압을 공급할 수 있다.
도 6은 본 발명의 일 실시예에 따른 저장 장치를 포함하는 메모리 카드 시스템을 나타내는 블록도이다. 도 6을 참조하면, 메모리 카드 시스템(3000)은 호스트(3100) 및 메모리 카드(3200)를 포함할 수 있다. 호스트(3100)는 호스트 컨트롤러(3110) 및 호스트 연결 유닛(3120)을 포함하고, 메모리 카드(3200)는 카드 연결 유닛(3210), 카드 컨트롤러(3220) 및 메모리 장치(3230)를 포함할 수 있다.
도 6에 도시된 카드 컨트롤러(3220) 및 메모리 장치(3230)는 도 1에 도시된 디바이스 컨트롤러(1230) 및 메모리 장치(1210)일 수 있다.
호스트(3100)는 메모리 카드(3200)로 데이터를 라이트하거나 메모리 카드(3200)에 저장된 데이터를 리드할 수 있다. 호스트 컨트롤러(3110)는 호스트 연결 유닛(3120)을 통해 메모리 카드(3200)로 커맨드(CMD), 클락 생성기(미도시)로부터 생성된 클락 신호(CLK) 및 데이터(DATA)를 전달할 수 있다.
메모리 카드(3200)는 CFC(compact flash card), 마이크로드라이브(microdrive), SMC(smart media card), MMC(multimedia card), SDC(security digital card), 메모리 스틱(memory stick), 또는 USB 플래시 메모리 드라이버(flash memory driver)일 수 있다.
도 7은 본 발명의 일 실시예에 따른 저장 장치를 포함하는 네트워크 시스템을 나타내는 블록도이다. 도 7을 참조하면, 네트워크 시스템(4000)은 서버 시스템(4100), 및 네트워크(4200)를 통해 서로 연결된 복수의 단말(4300, 4400, 4500)을 포함할 수 있다. 실시예에 따른 서버 시스템(4100)은 네트워크(4200)에 연결된 복수의 단말(4300, 4400, 4500)로부터 전송된 리퀘스트들을 처리하는 서버(4110), 및 복수의 단말(4300, 4400, 4500)로부터 전송된 리퀘스트들에 상응하는 데이터를 저장하는 SSD(4120)를 포함할 수 있다. 이때, SSD(4120)는 도 1에 도시된 저장 장치(1200)일 수 있다.
한편, 본 발명의 실시예에 따른 저장 시스템은 다양한 형태의 패키지를 이용하여 실장될 수 있다. 예를 들면, 본 발명의 실시예에 따른 저장 시스템은 PoP(Package on Package), BGAs(Ball grid arrays), CSPs(Chip scale packages), PLCC(Plastic Leaded Chip Carrier), PDIP(Plastic Dual In-Line Package), Die in Waffle Pack, Die in Wafer Form, COB(Chip On Board), CERDIP(Ceramic Dual In-Line Package), MQFP(Plastic Metric Quad Flat Pack), TQFP(Thin Quad Flatpack), SIP(System In Package), MCP(Multi Chip Package), WFP(fer-level Fabricated Package), WSP(Wafer-Level Processed Stack Package) 등과 같은 패키지들을 이용하여 실장될 수 있다.
도 8은 본 발명의 일 실시예에 따른 코딩 시스템을 나타내는 블록도이다. 코딩 시스템(6000)은 무선 통신, 케이블 기반의 유선 통신, 위성 통신 및 휘발성과 비휘발성 저장 장치로 구현될 수 있다.
도 8을 참조하면, 인코더(6100)는 코딩된 데이터를 생성하기 위해 데이터를 인코딩한다. 인코더(6100)는 코딩된 데이터를 채널(6200)을 통해 디코더(6300)로 전송한다. 채널(6200)은 코딩 시스템의 종류에 따라 무선, 유선, 및/또는 위성과 같은 매체와 관련될 수 있다.
디코더(6300)는 디코딩된 데이터를 생성하기 위해 코딩된 워드(word)를 디코딩한다. 디코더(6300)는, 도 3에 상술한 바와 같은 보간(interpolation)을 이용하여 코딩된 워드를 디코딩할 수 있다. 또한, 디코더(6300)의 전반적인 디코딩은 코딩 시스템의 종류에 따라 도 3에 도시된 방법과 동일 및/또는 유사할 수 있다.
예를 들어, 코딩 시스템(6000)이 통신 시스템인 경우, 수신기 입력에서 측정된 전압은 이미 연성 정보(양자화된 실수)이다. 이 경우, 수신기는 수신된 각 수(number)를 하나 이상의 비트(bit)로 변환하는 "좌표당(per-coordinate) 경판정"을 수행한다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
1000; 저장 시스템
1100; 호스트
1101; 호스트 인터페이스
1110; 애플리케이션
1120; 디바이스 드라이버
1130; 호스트 컨트롤러
1140; 버퍼 메모리
1200; 저장 장치
1201; 장치 인터페이스
1210; 비휘발성 메모리
1230; 디바이스 컨트롤러
1240; 버퍼 메모리

Claims (10)

  1. 일반화된 리드-솔로몬(Reed-Solomon) 코드, 및 상기 리드-솔로몬 코드와 BCH(Bose-Chaudhuri-Hocquenghem) 코드를 포함하는 교차 코드 중 하나인 코드를 연판정(soft-decision, Wu) 디코딩하는 방법에 있어서,
    제1 타입 제약 조건의 세트에 의해 정의되는 제1 확장 모듈 및 제2 타입 제약 조건의 세트에 의해 정의되는 제2 확장 모듈의 서브-모듈인 적어도 하나의 모듈을 정의하는 적어도 하나의 특성을 갖는 코드를 획득하는 단계;
    상기 제1 확장 모듈에 대한 트라이앵글(triangular) 기저를 결정하는 단계; 및
    상기 제1 확장 모듈에 대한 상기 트라이앵글 기저에 기초하여 상기 모듈에 대한 기저를 결정하는 단계를 포함하되,
    상기 모듈에 대한 기저를 결정하는 단계는,
    상기 제1 확장 모듈에 대한 상기 트라이앵글 기저에 기초하여 상기 모듈에 대한 트라이앵글 기저를 결정하는 단계, 및
    상기 모듈에 대한 상기 트라이앵글 기저를 상기 모듈에 대한 그로브너(Groebner) 기저로 변환하는 단계를 포함하는 연판정 디코딩 방법.
  2. 제1항에 있어서,
    상기 모듈에 대한 상기 트라이앵글 기저는
    Figure 112022104332023-pat00189
    이고, 상기
    Figure 112022104332023-pat00190
    는 상기 제1 확장 모듈에 대한 상기 트라이앵글 기저이고,
    Figure 112022104332023-pat00191
    이며,
    상기
    Figure 112022104332023-pat00193
    는 상기 그로브너 기저에서 최소의 가중된 차수를 갖는 다항식을 결정하기 위해 보간(interpolation)시에 사용되는 임의의 다항식이고, 상기
    Figure 112022104332023-pat00194
    는 상기
    Figure 112022104332023-pat00195
    의 변수이고, 상기 B는 상기 제2 타입 제약 조건을 나타내고, 상기
    Figure 112022104332023-pat00192
    은 리스트 디코딩의 리스트 사이즈이고, 상기
    Figure 112022104332023-pat00196
    는 중복도 벡터의 x-1번째 엔트리인 연판정 디코딩 방법.
  3. 제1항에 있어서,
    상기 코드는 이진(binary) BCH 코드인 연판정 디코딩 방법
  4. 제1항에 있어서,
    상기 코드는 리드-솔로몬 코드인 연판정 디코딩 방법.
  5. 제1항에 있어서,
    상기 적어도 하나의 특성을 갖는 코드를 획득하는 단계는,
    3차원 메모리 어레이로부터 상기 코드를 획득하는 연판정 디코딩 방법.
  6. 제5항에 있어서,
    상기 3차원 메모리 어레이는 전하 트랩 레이어를 각기 포함하는 복수의 메모리 셀들로 구성되는 연판정 디코딩 방법.
  7. 제5항에 있어서,
    상기 3차원 메모리 어레이의 적어도 하나의 워드 라인들 및 비트 라인들이 상기 3차원 메모리 어레이를 구성하는 복수의 층들 사이에서 공유되는 연판정 디코딩 방법.
  8. 삭제
  9. 삭제
  10. 삭제
KR1020160043484A 2015-04-10 2016-04-08 연판정 디코딩 방법 및 시스템 KR102528972B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/683,656 2015-04-10
US14/683,656 US9985653B2 (en) 2015-04-10 2015-04-10 Methods and systems for soft-decision decoding

Publications (2)

Publication Number Publication Date
KR20160121442A KR20160121442A (ko) 2016-10-19
KR102528972B1 true KR102528972B1 (ko) 2023-05-08

Family

ID=57112030

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160043484A KR102528972B1 (ko) 2015-04-10 2016-04-08 연판정 디코딩 방법 및 시스템

Country Status (2)

Country Link
US (1) US9985653B2 (ko)
KR (1) KR102528972B1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160378591A1 (en) * 2015-06-24 2016-12-29 Intel Corporation Adaptive error correction in memory devices
US10389385B2 (en) * 2017-01-19 2019-08-20 Samsung Electronics Co., Ltd. BM-based fast chase decoding of binary BCH codes through degenerate list decoding
US10404407B2 (en) * 2017-08-22 2019-09-03 Samsung Electronics Co., Ltd. Groebner-bases approach to fast chase decoding of generalized Reed-Solomon codes
CN108596001B (zh) * 2017-09-21 2021-02-02 北京三快在线科技有限公司 二维码纠错译码方法、装置、电子设备及计算机可读介质
US10985779B2 (en) * 2018-08-27 2021-04-20 Polaran Haberlesme Teknolojileri Anonim Sirketi Method and system for decoding data using compressed channel output information
KR102636331B1 (ko) * 2021-12-16 2024-02-13 동국대학교 산학협력단 리스트 디코딩 알고리즘에서의 다항식 행렬에 대한 효율적 감소 연산을 수행하는 전자 장치 및 그 동작 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100275104A1 (en) 2009-04-28 2010-10-28 Mitsubishi Electric Corporation Error correcting device and error correcting method

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6381726B1 (en) 1999-01-04 2002-04-30 Maxtor Corporation Architecture for soft decision decoding of linear block error correcting codes
US6634007B1 (en) * 1999-11-08 2003-10-14 Codevector Technology Algebraic soft decoding of reed-solomon codes
JP4164451B2 (ja) 2002-03-07 2008-10-15 テレフオンアクチーボラゲット エル エム エリクソン(パブル) マルチレベル信号のためのソフト値計算
US7117424B2 (en) * 2002-05-13 2006-10-03 Lucent Technologies Inc. Block coding method having increased flexibility in choice of code length or minimum code distance
US7975192B2 (en) * 2006-10-30 2011-07-05 Anobit Technologies Ltd. Reading memory cells using multiple thresholds
JP4816424B2 (ja) 2006-11-21 2011-11-16 株式会社デンソー 受信方式,受信装置,プログラム
US7966550B2 (en) 2007-03-31 2011-06-21 Sandisk Technologies Inc. Soft bit data transmission for error correction control in non-volatile memory
US8019079B2 (en) 2007-07-08 2011-09-13 Georgia Tech Research Corporation Asymmetric cryptosystem employing paraunitary matrices
WO2009072105A2 (en) 2007-12-05 2009-06-11 Densbits Technologies Ltd. A low power chien-search based bch/rs decoding system for flash memory, mobile communications devices and other applications
KR101436505B1 (ko) 2008-01-03 2014-09-02 삼성전자주식회사 메모리 장치
US20100251076A1 (en) 2009-03-27 2010-09-30 Chao-Yi Wu Storage controller having soft decoder included therein, related storage control method thereof and system using the same
US8271858B2 (en) 2009-09-03 2012-09-18 Telefonaktiebolget L M Ericsson (Publ) Efficient soft value generation for coded bits in a turbo decoder
US8332728B2 (en) 2010-04-02 2012-12-11 Skymedi Corporation Method and apparatus of generating a soft value for a memory device
US8516347B1 (en) 2010-05-25 2013-08-20 Marvell International Ltd. Non-binary LDPC extrinsic calculation unit (LECU) for iterative decoding
US8650457B1 (en) 2010-09-03 2014-02-11 Marvell International Ltd. Methods and systems for reconfigurable LDPC decoders
US8559540B2 (en) * 2010-10-14 2013-10-15 Nokia Corporation Apparatus and method for trellis-based detection in a communication system
US9058289B2 (en) 2011-11-07 2015-06-16 Sandisk Enterprise Ip Llc Soft information generation for memory systems
US8640065B2 (en) * 2012-01-27 2014-01-28 International Business Machines Corporation Circuit verification using computational algebraic geometry
KR101991911B1 (ko) * 2012-05-22 2019-06-24 삼성전자주식회사 비트 상태 맵핑 동작을 수행하는 코드 변조 인코더와 코드 변조 디코더를 포함하는 메모리 컨트롤러, 그것을 포함하는 데이터 저장 장치 및 플래시 메모리 시스템
US9135106B2 (en) 2012-05-22 2015-09-15 Hgst Technologies Santa Ana, Inc. Read level adjustment using soft information
US8850298B2 (en) 2012-06-27 2014-09-30 Avago Technologies General Ip (Singapore) Pte. Ltd. Combined Koetter-Vardy and Chase decoding of cyclic codes
US8674860B2 (en) * 2012-07-12 2014-03-18 Lsi Corporation Combined wu and chase decoding of cyclic codes

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100275104A1 (en) 2009-04-28 2010-10-28 Mitsubishi Electric Corporation Error correcting device and error correcting method

Also Published As

Publication number Publication date
US9985653B2 (en) 2018-05-29
US20160301429A1 (en) 2016-10-13
KR20160121442A (ko) 2016-10-19

Similar Documents

Publication Publication Date Title
KR102528972B1 (ko) 연판정 디코딩 방법 및 시스템
US10707899B2 (en) Bit-flipping decoder for G-LDPC codes with syndrome-decoding for component codes
US9996420B2 (en) Error-correction encoding and decoding
US9768807B2 (en) On-the-fly syndrome and syndrome weight computation architecture for LDPC decoding
US9141467B2 (en) Semiconductor memory system including Reed-Solomon low density parity check decoder and read method thereof
US9170877B2 (en) Resolving trapping sets
US9710327B2 (en) Flash memory system and operating method thereof
KR20170056407A (ko) 데이터의 인코딩과 디코딩을 위한 메모리 시스템
US20120278689A1 (en) Mds array codes with optimal building
US11632135B2 (en) Apparatuses and methods for interleaved BCH codes
US10389383B2 (en) Low-complexity LDPC encoder
EP2695300A2 (en) Encoding and decoding techniques using low-density parity check codes
EP3182601B1 (en) Data processing method and system based on quasi-cyclic ldpc
WO2019246527A1 (en) Method and apparatus for improved data recovery in data storage systems
US9236886B1 (en) Universal and reconfigurable QC-LDPC encoder
JP7237674B2 (ja) メモリシステム
Marelli et al. BCH and LDPC error correction codes for NAND flash memories
US10031701B2 (en) Hierarchical processing for extended product codes
KR102058499B1 (ko) 리드-솔로몬 저밀도 패리티 검사 디코더를 포함하는 반도체 메모리 시스템 및 그것의 읽기 방법
KR20210001927A (ko) 국부성을 사용한 일반화된 연접 에러 정정 코딩 방법
US10404282B2 (en) Apparatuses and methods for integrated interleaved Reed-Solomon encoding and decoding
Yuan et al. A randomly expandable method for data layout of Raid Storage Systems
US11750221B1 (en) Encoding and decoding of data using generalized LDPC codes
US10949302B2 (en) Erasure-coding-based efficient data storage and retrieval
KR101126359B1 (ko) 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 비씨에이치 디코딩 방법

Legal Events

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