KR20170101368A - 에러 정정 회로 및 에러 정정 방법 - Google Patents

에러 정정 회로 및 에러 정정 방법 Download PDF

Info

Publication number
KR20170101368A
KR20170101368A KR1020160023622A KR20160023622A KR20170101368A KR 20170101368 A KR20170101368 A KR 20170101368A KR 1020160023622 A KR1020160023622 A KR 1020160023622A KR 20160023622 A KR20160023622 A KR 20160023622A KR 20170101368 A KR20170101368 A KR 20170101368A
Authority
KR
South Korea
Prior art keywords
bit
syndrome
matrix
values
bits
Prior art date
Application number
KR1020160023622A
Other languages
English (en)
Inventor
김경범
Original Assignee
에스케이하이닉스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020160023622A priority Critical patent/KR20170101368A/ko
Priority to US15/219,409 priority patent/US20170250714A1/en
Priority to TW105133154A priority patent/TW201730765A/zh
Priority to CN201611116206.6A priority patent/CN107135006B/zh
Publication of KR20170101368A publication Critical patent/KR20170101368A/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/1148Structural properties of the code parity-check or generator matrix
    • H03M13/1157Low-density generator matrices [LDGM]
    • 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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2948Iterative decoding
    • H03M13/2951Iterative decoding using iteration stopping criteria
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1108Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping
    • 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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block 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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2909Product 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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2954Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using Picket codes or other codes providing error burst detection capabilities, e.g. burst indicator codes and long distance codes [LDC]
    • 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/3746Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with iterative 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/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/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/458Soft decoding, i.e. using symbol reliability information by updating bit probabilities or hard decisions in an iterative fashion for convergence to a final decoding result
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/616Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations

Abstract

에러 정정 방법은 제1 에러 정정 동작을 수행하되, 상기 제1 에러 정정 동작은, 패리티 체크 행렬에 근거하여 코드워드에 대응하는 신드롬 행렬을 산출함으로써 신드롬 체크 동작을 수행하는 단계; 상기 신드롬 체크 동작의 결과에 따라 상기 코드워드에 대해 디코딩 동작을 수행하는 단계; 및 상기 디코딩 동작이 수행됨으로써 획득된 코드워드에 대해 상기 신드롬 체크 동작이 통과될 때까지 또는 상기 디코딩 동작의 반복 횟수가 임계 횟수에 도달할 때까지 상기 디코딩 동작을 반복하는 단계를 포함하는, 상기 제1 에러 정정 동작을 수행하는 단계; 상기 디코딩 동작이 반복됨으로써 산출되는 신드롬 행렬들을 누적 행렬에 누적하는 단계; 및 상기 반복 횟수가 상기 임계 횟수에 도달할 때, 상기 누적 행렬에 근거하여 마지막 코드워드에 대해 제2 에러 정정 동작을 수행하는 단계를 포함한다.

Description

에러 정정 회로 및 에러 정정 방법{ERROR CORRECTION CIRCUIT AND ERROR CORRECTION METHOD}
본 발명은 에러 정정 회로에 관한 것으로, 더욱 상세하게는 반복 디코딩 기법에 따라 에러 정정 동작을 수행하는 에러 정정 회로에 관한 것이다.
데이터 저장 장치는 외부 장치의 라이트 요청에 응답하여, 외부 장치로부터 제공된 데이터를 저장하도록 구성될 수 있다. 또한, 데이터 저장 장치는 외부 장치의 리드 요청에 응답하여, 저장된 데이터를 외부 장치로 제공하도록 구성될 수 있다. 외부 장치는 데이터를 처리할 수 있는 전자 장치로서, 컴퓨터, 디지털 카메라 또는 휴대폰 등을 포함할 수 있다. 데이터 저장 장치는 외부 장치에 내장되어 동작하거나, 분리 가능한 형태로 제작되어 외부 장치에 연결됨으로써 동작할 수 있다.
데이터 저장 장치는 저장된 데이터에 발생된 에러 비트들을 정정하기 위해서 에러 정정 회로를 포함할 수 있다.
본 발명의 실시 예는 반복 디코딩 동안 생성된 신드롬 행렬들에 근거하여 에러 비트일 확률이 높은 비트들에 대해 추가 에러 정정 동작을 수행하는 에러 정정 회로 및 에러 정정 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른 에러 정정 방법은 제1 에러 정정 동작을 수행하되, 상기 제1 에러 정정 동작은, 패리티 체크 행렬에 근거하여 코드워드에 대응하는 신드롬 행렬을 산출함으로써 신드롬 체크 동작을 수행하는 단계; 상기 신드롬 체크 동작의 결과에 따라 상기 코드워드에 대해 디코딩 동작을 수행하는 단계; 및 상기 디코딩 동작이 수행됨으로써 획득된 코드워드에 대해 상기 신드롬 체크 동작이 통과될 때까지 또는 상기 디코딩 동작의 반복 횟수가 임계 횟수에 도달할 때까지 상기 디코딩 동작을 반복하는 단계를 포함하는, 상기 제1 에러 정정 동작을 수행하는 단계; 상기 디코딩 동작이 반복됨으로써 산출되는 신드롬 행렬들을 누적 행렬에 누적하는 단계; 및 상기 반복 횟수가 상기 임계 횟수에 도달할 때, 상기 누적 행렬에 근거하여 마지막 코드워드에 대해 제2 에러 정정 동작을 수행하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 에러 정정 방법은 디코딩 동작이 임계 횟수까지 반복되는 동안, 패리티 체크 행렬에 근거하여 코드워드의 비트 그룹들 각각에 대해 신드롬 값들을 산출하는 단계; 상기 신드롬 값들에 근거하여 상기 비트 그룹들 각각에 대해 비트 그룹이 신드롬 체크를 불만족한 횟수인 불만족 횟수를 카운트하는 단계; 상기 비트 그룹들의 불만족 횟수들에 근거하여, 상기 디코딩 동작을 통해 획득된 마지막 코드워드의 비트 그룹들 중 소정 개수의 비트 그룹들을 선택하는 단계; 선택된 비트 그룹들 모두에 공통으로 포함되는 하나 이상의 비트들을 마킹하는 단계; 마킹된 비트들을 선택적으로 비트 플립하는 단계; 및 비트 플립된 코드워드에 대해 신드롬 체크 동작을 수행하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 에러 정정 방법은 신드롬 체크 동작의 결과에 따라 디코딩 동작이 임계 횟수까지 반복되는 동안, 코드워드들을 획득하되, 상기 신드롬 체크 동작은 상기 코드워드들에 각각 대응하는 신드롬 행렬들을 산출하는 단계를 포함하는, 상기 코드워드들을 획득하는 단계; 상기 신드롬 행렬들을 누적 행렬에 누적하는 단계; 및 상기 누적 행렬에 근거하여 마지막 코드워드에 대해 비트 플립 동작을 수행하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 에러 정정 회로는 패리티 체크 행렬에 근거하여 코드워드에 대응하는 신드롬 행렬을 산출함으로써 신드롬 체크 동작을 수행하도록 구성된 신드롬 체크부; 상기 신드롬 체크 동작의 결과에 따라 상기 코드워드에 대해 디코딩 동작을 수행하도록 구성되고, 상기 디코딩 동작이 수행됨으로써 획득된 코드워드에 대해 상기 신드롬 체크 동작이 통과될 때까지 또는 상기 디코딩 동작의 반복 횟수가 임계 횟수에 도달할 때까지 상기 디코딩 동작을 반복하도록 구성된 디코더; 상기 디코딩 동작이 반복됨으로써 상기 신드롬 체크부로부터 산출되는 신드롬 행렬들을 누적 행렬에 누적하도록 구성된 누적부; 및 상기 반복 횟수가 상기 임계 횟수에 도달할 때, 상기 누적 행렬에 근거하여 마지막 코드워드에 대해 비트 플립 동작을 수행하도록 구성된 비트 플립부를 포함할 수 있다.
본 발명의 실시 예에 따른 에러 정정 회로 및 에러 정정 방법은 반복 디코딩 동안 생성된 신드롬 행렬들에 근거하여 에러 비트일 확률이 높은 비트들에 대해 추가 에러 정정 동작을 수행함으로써, 향상된 에러 정정 능력을 제공할 수 있다.
도1은 본 발명의 실시 예에 따른 에러 정정 회로를 도시한 블록도,
도2는 도1의 신드롬 체크부의 신드롬 체크 동작 및 누적부의 동작을 설명하기 위한 도면,
도3은 도1의 비트 플립부의 동작을 예시적으로 설명하기 위한 도면,
도4는 도1의 비트 플립부의 동작을 예시적으로 설명하기 위한 도면,
도5는 도1의 비트 플립부의 동작을 예시적으로 설명하기 위한 도면,
도6은 도1의 에러 정정 회로의 동작 방법을 예시적으로 도시하는 순서도,
도7은 도1의 에러 정정 회로가 제2 에러 정정 동작을 수행하는 방법을 예시적으로 도시하는 순서도,
도8은 도1의 에러 정정 회로가 제2 에러 정정 동작을 수행하는 방법을 예시적으로 도시하는 순서도,
도9는 본 발명의 실시 예에 따른 에러 정정 회로가 적용된 데이터 저장 장치를 도시하는 블록도,
도10은 도9의 데이터 저장 장치가 적용된 데이터 처리 시스템을 도시하는 블록도이다.
이하, 도면들을 참조하여 본 발명의 실시 예에 대해 상세히 설명하기로 한다.
도1은 본 발명의 실시 예에 따른 에러 정정 회로(100)를 도시한 블록도이다.
에러 정정 회로(100)는 제1 에러 정정 동작 및 제2 에러 정정 동작을 수행할 수 있다. 에러 정정 회로(100)는 제1 에러 정정 동작을 통해 모든 에러 비트들을 정정하지 못했을 때, 제2 에러 정정 동작을 수행할 수 있다. 도1에서 점선으로 표시된 정보의 전송은 제1 에러 정정 동작과 관련되고, 실선으로 표시된 정보의 전송은 제2 에러 정정 동작과 관련될 수 있다.
구체적으로, 에러 정정 회로(100)는 신드롬 체크 동작의 결과에 따라 디코딩 동작을 임계 횟수(M)까지 반복함으로써 제1 에러 정정 동작을 수행할 수 있다. 에러 정정 회로(100)는 제1 에러 정정 동작에서 디코딩 동작이 반복될 때마다 산출되는 신드롬 행렬(S(i))을 누적 행렬(T(i))에 누적할 수 있다. 에러 정정 회로(100)는 제1 에러 정정 동작의 반복 횟수가 임계 횟수(M)에 도달할 때 마지막으로 생성된 마지막 코드워드(C(M))에서, 누적 행렬(T(M))에 근거하여 에러 비트일 확률이 높은 비트들을 선택적으로 비트 플립함으로써 제2 에러 정정 동작을 수행할 수 있다.
에러 정정 회로(100)는 신드롬 체크부(110), 디코더(120), 누적부(130) 및 비트 플립부(140)를 포함할 수 있다.
신드롬 체크부(110)는 패리티 체크 행렬에 근거하여 코드워드(C(i))에 대응하는 신드롬 행렬(S(i))을 산출함으로써 신드롬 체크 동작을 수행할 수 있다. 신드롬 체크부(110)는, (C(i))가 에러 비트를 포함하는지 여부를 판단하기 위해서 신드롬 체크 동작을 수행할 수 있다.
디코더(120)는 신드롬 체크부(110)의 신드롬 체크 동작의 결과에 따라 코드워드(C(i))에 대해 디코딩 동작을 수행할 수 있다. 코드워드(C(i))에 대해 디코딩 동작이 수행됨으로써 획득된 코드워드(C(i+1))는, 신드롬 체크부(110)로 다시 입력되고 신드롬 체크부(110)에 의해 신드롬 체크 동작이 수행될 수 있다. 디코더(120)는 코드워드(C(i+1))에 대한 신드롬 체크 동작의 결과, 즉, 코드워드(C(i+1))가 에러 비트를 포함하는지 여부에 따라 코드워드(C(i+1))에 대해 디코딩 동작을 반복할 수 있다. 즉, 디코더(120)는 디코딩 동작이 수행됨으로써 획득된 코드워드에 대해 신드롬 체크 동작이 통과될 때까지 디코딩 동작을 반복할 수 있다. 디코더(120)는 디코딩 동작의 반복 횟수가 임계 횟수(M)에 도달할 때까지 디코딩 동작을 반복할 수 있다.
누적부(130)는, 디코딩 동작이 반복됨으로써 신드롬 체크부(110)로부터 산출되는 신드롬 행렬들(S(i))을 누적 행렬(T(i))에 누적할 수 있다.
지금까지 상술된, 신드롬 체크부(110)의 신드롬 체크 동작 및 디코더(120)의 디코딩 동작이 반복되는 과정은 제1 에러 정정 동작에 포함될 수 있다. 디코딩 동작의 반복 횟수가 임계 횟수(M)에 도달할 때까지 신드롬 체크 동작이 통과되지 못한다면, 제1 에러 정정 동작이 종료되고 이하의 제2 에러 정정 동작이 개시될 수 있다.
우선, 누적부(130)는 누적 행렬(T(M))을 비트 플립부(140)로 전송할 수 있다. 누적 행렬(T(M))은 디코딩 동작의 반복 횟수가 임계 횟수(M)에 도달할 때까지 신드롬 행렬들(S(i))이 누적된 것일 수 있다.
비트 플립부(140)는 디코딩 동작의 반복 횟수가 임계 횟수(M)에 도달했을 때, 디코딩 동작을 통해 획득된 마지막 코드워드(C(M))에 대해 누적 행렬(T(M))에 근거하여 비트 플립 동작을 수행할 수 있다. 비트 플립부(140)는 마지막 코드워드(C(M))에 대한 비트 플립 동작을 통해 비트 플립된 코드워드(CBF)를 생성할 수 있다. 비트 플립부(140)는 비트 플립된 코드워드(CBF)를 신드롬 체크부(110)로 전송할 수 있다. 그리고, 비트 플립부(140)는 비트 플립된 코드워드(CBF)에 대해 신드롬 체크 동작이 통과될 때까지 마지막 코드워드(C(M))의 비트들을 선택적으로 비트 플립함으로써 비트 플립 동작을 반복할 수 있다.
구체적으로, 비트 플립부(140)는 누적 행렬(T(M))에서 소정 개수의 누적 값들을 선택할 수 있다. 그리고, 비트 플립부(140)는 선택된 누적 값들에 근거하여, 마지막 코드워드(C(M))에서 하나 이상의 비트들을 마킹할 수 있다. 그리고, 비트 플립부(140)는 마킹된 비트들을 선택적으로 비트 플립함으로써 비트 플립된 코드워드(CBF)를 생성할 수 있다. 비트 플립부(140)는 비트 플립된 코드워드(CBF)에 대해 신드롬 체크부(110)의 신드롬 체크 동작이 통과될 때까지 마킹된 비트들의 서브세트들에 대한 비트 플립을 반복할 수 있다.
비트 플립부(140)가 누적 행렬(T(M))에서 누적 값들을 선택하는 방법은 다음과 같다. 비트 플립부(140)는, 예를 들어, 누적 행렬(T(M))의 누적 값들을 내림차순으로 정렬함으로써 소정 개수의 누적 값들을 선택할 수 있다. 실시 예에 따라, 비트 플립부(140)는 누적 행렬(T(M))의 일부의 누적 값들을 내림차순으로 정렬함으로써 소정 개수의 누적 값들을 선택하되, 일부의 누적 값들 각각은, 상기 마지막 코드워드에 대응하는 마지막 신드롬 행렬에서, 대응하는 신드롬 값이 신드롬 체크를 불만족하는 것일 수 있다.
비트 플립부(140)가 선택된 누적 값들에 근거하여, 마지막 코드워드(C(M))에서 하나 이상의 비트들을 마킹하는 방법은 다음과 같다. 비트 플립부(140)는 패리티 체크 행렬의 행들 중 선택된 누적 값들에 대응하는 하나 이상의 행들을 선택할 수 있다. 그리고, 비트 플립부(140)는 선택된 행들에서 "1"이 공통으로 위치하는 하나 이상의 위치들을 검색할 수 있다. 그리고, 비트 플립부(140)는 마지막 코드워드(C(M))에서 검색된 위치들에 대응하는 하나 이상의 비트들을 마킹할 수 있다.
실시 예에 따라, 비트 플립부(140)는 마지막 코드워드(C(M))의 비트 그룹들 중 선택된 누적 값들에 각각 대응하는 비트 그룹들을 선택하고, 선택된 비트 그룹들 모두에 공통으로 포함되는 하나 이상의 비트들을 마킹할 수 있다. 마지막 코드워드(C(M))의 비트 그룹들은 마지막 코드워드(C(M))에 대응하는 마지막 신드롬 행렬의 신드롬 값들에 각각 대응할 수 있다.
실시 예에 따라, 디코더(120)는 비트 플립된 코드워드(CBF)에 대한 신드롬 체크 동작의 결과에 따라 비트 플립된 코드워드(CBF)에 대해 디코딩 동작을 수행할 수 있다. 디코더(120)는, 제1 에러 정정 동작을 수행했을 때처럼, 비트 플립된 코드워드(CBF)에 대한 디코딩 동작을 소정 횟수까지 반복할 수 있다.
신드롬 체크부(110) 및 디코더(120)는 반복 디코딩 방식의 에러 정정 알고리즘에 근거하여 동작할 수 있다. 신드롬 체크부(110) 및 디코더(120)는, 예를 들어, LDPC(Low-Density Parity-Check Codes) 알고리즘에 근거하여 동작할 수 있다. 그러나, 본 발명의 실시 예는 이에 제한되는 것은 아니다.
정리하면, 본 발명의 에러 정정 회로(100)는, 반복 디코딩 동작에서 생성된 신드롬 행렬들(S(i))의 누적 행렬(T(M))을 통해 마지막 코드워드(C(M))에서 에러 비트들일 가능성이 높은 비트들을 마킹하고 이를 선택적으로 비트 플립함으로써 향상된 에러 정정 능력을 제공할 수 있다.
도2는 도1의 신드롬 체크부(110)의 신드롬 체크 동작 및 누적부(130)의 동작을 설명하기 위한 도면이다.
신드롬 체크부(110)는 패리티 체크 행렬(H)에 근거하여 코드워드(C(i))에 대응하는 신드롬 행렬(S(i))을 산출함으로써 신드롬 체크 동작을 수행할 수 있다.
구체적으로, 신드롬 체크부(110)는 패리티 체크 행렬(H)과 코드워드(C(i))의 열 벡터를 곱함으로써 신드롬 행렬(S(i))을 산출할 수 있다. 패리티 체크 행렬(H)의 행들은 코드워드(C(i))의 비트 그룹들을 각각 정의할 수 있고, 비트 그룹들은 신드롬 행렬(S(i))의 신드롬 값들(s0~s4)에 각각 대응할 수 있다. 다른 말로 하면, 패리티 체크 행렬(H)의 행들 각각은 코드워드(C(i))에서 비트 그룹들 각각에 대응하는 신드롬 값이 생성되도록 사용될 수 있다. 예를 들어, 패리티 체크 행렬(H)의 제1 행은, 코드워드(C(i))의 1, 4, 5 및 6번째 비트들(c0, c3, c4, c5)로 구성된 제1 비트 그룹을 정의할 수 있고, 제1 비트 그룹에 대한 신드롬 값인 제1 신드롬 값(s0)이 생성되도록 사용될 수 있다.
코드워드(C(i))가 에러 비트를 포함하지 않을 때, 신드롬 행렬(S(i))은 "0" 행렬로 산출될 수 있다. 그러나, 코드워드(C(i))가 에러 비트를 포함할 때, 신드롬 행렬(S(i))은 "0" 행렬이 아닐 수 있다. 따라서, 코드워드(C(i))에 대한 신드롬 체크 동작이 통과될 때까지, 즉, 코드워드(C(i))에 대응하는 신드롬 행렬(S(i))이 "0"이 될 때까지 디코더(120)는 디코딩 동작을 반복할 수 있다. 그러나, 디코더(120)는 디코딩 동작을 무한대로 반복하지 않고, 반복 횟수가 임계 횟수(M)에 도달할 때까지 반복할 수 있다.
제1 에러 정정 동작에서 디코딩 동작이 임계 횟수(M)까지 반복되는 동안, 디코더(120)로부터 "M"개의 코드워드(C(i))들이 생성될 수 있고, 생성된 "M"개의 코드워드(C(i))들에 대응하는 "M"개의 신드롬 행렬들도 산출될 수 있다. "M"개의 신드롬 행렬들은 누적 행렬(T(i))에 누적될 수 있다.
정리하면, 누적 행렬(T(i))의 누적 값들(t0~t4)은, 디코딩 동작이 임계 횟수(M)까지 반복되는 동안, 코드워드(C(i))의 비트 그룹들이 신드롬 체크를 불만족한 횟수들일 수 있다. 따라서, 마지막 누적 행렬(T(M))의 누적 값이 클수록 대응하는 비트 그룹은 에러 비트들과 연관될 가능성이 높을 수 있다.
도3은 도1의 비트 플립부(140)의 동작을 예시적으로 설명하기 위한 도면이다. 이하에서, 제1 에러 정정 동작에서 디코딩 동작의 임계 반복 횟수(M)는, 예를 들어, "15"인 것으로 가정한다.
도3을 참조하면, 제1 에러 정정 동작에서 디코딩 동작이 "15"회까지 반복되었을 때, 디코더(120)가 획득한 마지막 코드워드(C(14)), 마지막 코드워드(C(14))에 대응하고 신드롬 체크 동작이 통과되지 못한, 즉, "0"행렬이 아닌 마지막 신드롬 행렬(S(14)) 및 마지막 신드롬 행렬(S(14))까지 누적된 누적 행렬(T(14))이 도시된다.
우선, 비트 플립부(140)는 누적 행렬(T(14))의 누적 값들을 내림차순으로 정렬함으로써 소정 개수, 예를 들어, "2"개의 누적 값들 "12", "10"을 선택할 수 있다.
그리고, 비트 플립부(140)는 선택된 누적 값들에 근거하여, 마지막 코드워드(C(14))에서 에러 비트일 가능성이 높은 비트들을 마킹할 수 있다. 구체적으로, 비트 플립부(140)는 패리티 체크 행렬(H)의 행들 중 선택된 누적 값들에 대응하는 제1 및 제2 행들을 선택할 수 있다.
이때, 선택된 제1 및 제2 행들에 대응하는 제1 및 제2 비트 그룹들은 에러 비트들과 연관되었을 가능성이 높을 것이다. 따라서, 제1 및 제2 비트 그룹들에 공통으로 포함된 비트들은 에러 비트일 가능성이 더욱 높을 수 있다.
비트 플립부(140)는, 상술한 에러 비트일 가능성이 높은 비트들을 찾기 위해서, 패리티 체크 행렬(H)의 제1 및 제2 행들에서 "1"이 공통으로 위치하는 위치들을 검색할 수 있다. 그리고, 비트 플립부(140)는 마지막 코드워드(C(14))에서, 검색된 위치들, 즉, 제1 및 6번째 위치들에 대응하는 제1 및 6번째 비트들(c0, c5)을 마킹할 수 있다.
그리고, 비트 플립부(140)는 마킹된 비트들(c0, c5)을 선택적으로 비트 플립함으로써 비트 플립된 코드워드(CBF)를 생성할 수 있다. 비트 플립부(140)는 비트 플립된 코드워드(CBF)에 대해 신드롬 체크 동작이 통과될 때까지 마킹된 비트들(c0, c5)의 서브세트들(즉, {c0}, {c5}, {c0, c5})에 대한 비트 플립을 반복할 수 있다. 도3에서, 마킹된 비트들(c0, c5)이 모두 비트 플립된 코드워드(CBF(c0, c5))에 대해 신드롬 행렬(S)이 "0"행렬로 산출됨으로써 신드롬 체크 동작이 통과할 수 있다.
정리하면, 에러 정정 회로(100)는 제1 에러 정정 동작에서 정정하지 못한 에러 비트들을, 누적 행렬(T(M))에 근거한 제2 에러 정정 동작을 통해 효율적으로 정정할 수 있다.
실시 예에 따라, 비트 플립부(140)가 누적 행렬(T(M))에서 누적 값을 선택하는 소정 개수는 "1"일 수 있다. 즉, 비트 플립부(140)는 누적 행렬(T(M))에서 최대 누적 값만을 선택할 수 있다. 이러한 경우, 비트 플립부(140)는 마지막 코드워드(C(M))에서 선택된 최대 누적 값에 대응하는 비트 그룹의 비트들을 선택적으로 비트 플립함으로써 제2 에러 정정 동작을 수행할 수 있다. 예를 들어, 도3에서, 비트 플립부(140)는 마지막 코드워드(C(14))에서 최대 누적 값 "12"에 대응하는 제1, 4, 5 및 6번째 비트들(c0, c3, c4, c5)의 "24-1"개의 서브세트들에 대해 비트 플립을 반복할 수 있다.
도4는 도1의 비트 플립부(140)의 동작을 예시적으로 설명하기 위한 도면이다.
실시 예에 따라, 비트 플립부(140)는 누적 행렬(T(14))에서 소정 개수의 누적 값들을 선택하는 방법에 있어서 도3과 달리 동작할 수 있다. 비트 플립부(140)는 제2 에러 정정 동작이 개시되기 직전에 신드롬 체크를 불만족했던 비트 그룹들이 에러 비트들에 더욱 관련될 수 있다고 판단할 수 있다.
구체적으로, 도4를 참조하면, 비트 플립부(140)는 누적 행렬(T(14))의 일부의 누적 값들 "12", "3" 및 "8"을 내림차순으로 정렬함으로써 소정 개수, 예를 들어, "2"개의 누적 값들 "12", "8"을 선택할 수 있다. 이때, 일부의 누적 값들 "12", "3" 및 "8" 각각은, 마지막 신드롬 행렬(S(14))에서, 대응하는 신드롬 값이 신드롬 체크를 불만족하는 것, 즉, 신드롬 값이 "1"일 수 있다.
비트 플립부(140)는 선택된 누적 값들에 근거하여 마지막 코드워드(C(14))에서 에러 비트일 가능성이 높은 비트들, 즉, 제1 및 5번째 비트들(c0, c4)을 선택적으로 비트 플립할 수 있다. 이에 대한 동작 방법은 도3을 참조하여 설명된 동작 방법과 실질적으로 유사하므로, 상세한 설명은 생략될 것이다.
도5는 도1의 비트 플립부(140)의 동작을 예시적으로 설명하기 위한 도면이다.
도3 및 도4를 참조하여 설명된 방법과 달리, 실시 예에 따라, 비트 플립부(140)는 패리티 체크 행렬(H)의 행들에 각각 대응하는 비트 그룹들에 대한 정보, 예를 들어, 비트 그룹들 각각에 포함된 비트들을 기억할 수 있다. 이러한 경우, 도3 및 도4를 참조하여 설명된 방법보다 심플한 방법으로 비트 플립 동작을 수행할 수 있다.
구체적으로, 비트 플립부(140)는, 누적 행렬(T(M))에서, 예를 들어, 제1 및 제2 누적 값들(t0, t1)을 선택한 경우, 누적 값들(t0, t1)에 대응하는 제1 및 제2 비트 그룹들을 선택하고, 제1 및 제2 비트 그룹들에 공통으로 포함되는 비트들(c0, c5)을 즉시 마킹할 수 있다. 그리고, 비트 플립부(140)는 마지막 코드워드(C(M))에서, 마킹된 비트들(c0, c5)에 대해 비트 플립 동작을 수행할 것이다.
도6은 도1의 에러 정정 회로(100)의 동작 방법을 예시적으로 도시하는 순서도이다.
단계(S10)에서, 에러 정정 회로(100)는 최초의 코드워드를 수신할 수 있다.
단계(S100)에서, 에러 정정 회로(100)는 코드워드에 대해 제1 에러 정정 동작을 수행할 수 있다. 단계(S100)는 단계들(S110~S150)을 포함할 수 있다.
단계(S110)에서, 신드롬 체크부(110)는 패리티 체크 행렬에 근거하여 코드워드에 대응하는 신드롬 행렬을 산출함으로써 신드롬 체크 동작을 수행할 수 있다.
단계(S120)에서, 신드롬 체크부(110)는 신드롬 행렬에 근거하여 코드워드가 신드롬 체크 동작을 통과했는지 여부를 판단할 수 있다. 신드롬 체크부(110)는 신드롬 행렬이 "0"일 때, 코드워드가 신드롬 체크 동작을 통과했다고 판단할 수 있고, 절차는 정정 성공으로서 종료될 수 있다. 신드롬 체크부(110)는 신드롬 행렬이 "0"이 아닐 때, 코드워드가 신드롬 체크 동작을 통과하지 않았다고 판단할 수 있고, 절차는 단계(S130)로 진행할 수 있다.
단계(S130)에서, 누적부(130)는 누적 행렬에 신드롬 행렬을 누적할 수 있다. 최초 누적 행렬은 "0" 행렬일 수 있다.
단계(S140)에서, 디코더(120)는 디코딩 동작의 반복 횟수가 임계 횟수에 도달했는지 여부를 판단할 수 있다. 반복 횟수가 임계 횟수에 도달하지 않은 경우, 절차는 단계(S150)로 진행될 수 있다.
단계(S150)에서, 디코더(120)는 코드워드에 대해 디코딩 동작을 수행하고, 반복 횟수를 증가시킬 수 있다. 그리고, 절차는 단계(S110)로 이동할 수 있다.
단계(S110)에서, 신드롬 체크부(110)는 디코딩 동작이 수행됨으로써 획득된 코드워드에 대해 신드롬 체크 동작을 수행할 수 있다. 즉, 디코더(120)는 디코딩 동작이 수행됨으로써 획득된 코드워드에 대해 신드롬 체크 동작이 통과되거나 반복 횟수가 임계 횟수에 도달할 때까지 디코딩 동작을 반복할 수 있다.
한편, 단계(S140)에서, 반복 횟수가 임계 횟수에 도달한 경우, 절차는 단계(S200)로 진행될 수 있다.
단계(S200)에서, 에러 정정 회로는 누적 행렬에 근거하여 디코딩 동작을 통해 마지막으로 획득된 마지막 코드워드에 대해 제2 에러 정정 동작을 수행할 수 있다. 제2 에러 정정 동작의 동작 방법은 도7 및 도8을 참조하여 상세하게 설명될 것이다.
도7은 도1의 에러 정정 회로가 제2 에러 정정 동작을 수행하는 방법을 예시적으로 도시하는 순서도이다. 도7에 도시된 방법은 도3 및 도4를 참조하여 설명된 방법에 대응할 수 있다.
단계(S210)에서, 비트 플립부(140)는 누적 행렬에서 소정 개수의 누적 값들을 선택할 수 있다. 예를 들어, 비트 플립부(140)는 누적 행렬의 누적 값들을 내림차순으로 정렬함으로써 소정 개수의 누적 값들을 선택할 수 있다. 실시 예에 따라, 비트 플립부(140)는 누적 행렬의 일부의 누적 값들을 내림차순으로 정렬함으로써 소정 개수의 누적 값들을 선택하고, 이때, 일부의 누적 값들 각각은, 마지막 코드워드에 대응하는 마지막 신드롬 행렬에서, 대응하는 신드롬 값이 신드롬 체크를 불만족하는 것일 수 있다.
단계(S220)에서, 비트 플립부(140)는 패리티 체크 행렬의 행들 중 선택된 누적 값들에 대응하는 하나 이상의 행들을 선택할 수 있다.
단계(S230)에서, 비트 플립부(140)는 선택된 행들에서 "1"이 공통으로 위치하는 하나 이상의 위치들을 검색할 수 있다.
단계(S240)에서, 비트 플립부(140)는 마지막 코드워드에서 검색된 위치들에 대응하는 하나 이상의 비트들을 마킹할 수 있다.
단계(S250)에서, 비트 플립부(140)는 마지막 코드워드에서 마킹된 비트들을 선택적으로 비트 플립할 수 있다. 비트 플립부(140)는 마킹된 비트들의 서브세트를 비트 플립할 수 있다.
단계(S260)에서, 신드롬 체크부(110)는 비트 플립된 코드워드에 대해 신드롬 체크 동작을 수행할 수 있다.
단계(S270)에서, 신드롬 체크부(110)는 비트 플립된 코드워드에 대응하는 신드롬 행렬에 근거하여 비트 플립된 코드워드가 신드롬 체크 동작을 통과했는지 여부를 판단할 수 있다. 신드롬 체크부(110)는 신드롬 행렬이 "0"일 때, 비트 플립된 코드워드가 신드롬 체크 동작을 통과했다고 판단할 수 있고, 절차는 정정 성공으로서 종료될 수 있다. 신드롬 체크부(110)는 신드롬 행렬이 "0"이 아닐 때, 비트 플립된 코드워드가 신드롬 체크 동작을 통과하지 않았다고 판단할 수 있고, 절차는 단계(S280)로 진행할 수 있다.
단계(S280)에서, 비트 플립부(140)는 마킹된 비트들의 모든 서브세트들이 비트 플립되었는지 여부를 판단할 수 있다. 모든 서브세트들이 비트 플립된 경우, 절차는 정정 실패로서 종료될 수 있다. 모든 서브세트들이 비트 플립되지 않은 경우, 절차는 단계(S250)로 진행될 수 있다.
정리하면, 비트 플립부(140)는 비트 플립된 코드워드에 대해 신드롬 체크 동작이 통과될 때까지 또는 마킹된 비트들의 모든 서브세트들이 비트 플립될 때까지, 비트 플립 동작을 반복할 수 있다.
도8은 도1의 에러 정정 회로가 제2 에러 정정 동작을 수행하는 방법을 예시적으로 도시하는 순서도이다. 도8에 도시된 방법은 도5를 참조하여 설명된 방법에 대응할 수 있다.
도8에 도시된 절차에서 단계들(S310, S340~S370)은 도7의 단계들(S210, S350~S380)과 실질적으로 유사할 수 있다. 따라서, 이하에서는 도7의 절차와의 차이점을 중심으로 설명될 것이다.
단계(S320)에서, 비트 플립부(140)는 마지막 코드워드의 비트 그룹들 중 선택된 누적 값들에 각각 대응하는 비트 그룹들을 선택할 수 있다. 마지막 코드워드의 비트 그룹들은 마지막 코드워드에 대응하는 마지막 신드롬 행렬의 신드롬 값들에 각각 대응할 수 있다.
단계(S330)에서, 비트 플립부(140)는 선택된 비트 그룹들 모두에 공통으로 포함되는 하나 이상의 비트들을 마킹할 수 있다.
도9는 본 발명의 실시 예에 따른 에러 정정 회로(100)가 적용된 데이터 저장 장치(1000)를 도시하는 블록도이다.
데이터 저장 장치(1000)는 외부 장치의 라이트 요청에 응답하여, 외부 장치로부터 제공된 데이터를 저장하도록 구성될 수 있다. 또한, 데이터 저장 장치(1000)는 외부 장치의 리드 요청에 응답하여, 저장된 데이터를 외부 장치로 제공하도록 구성될 수 있다.
데이터 저장 장치(1000)는 PCMCIA(Personal Computer Memory Card International Association) 카드, CF(Compact Flash) 카드, 스마트 미디어 카드, 메모리 스틱, 다양한 멀티 미디어 카드(MMC, eMMC, RS-MMC, MMC-micro), SD(Secure Digital) 카드(SD, Mini-SD, Micro-SD), UFS(Universal Flash Storage) 또는 SSD(Solid State Drive) 등으로 구성될 수 있다.
데이터 저장 장치(1000)는 컨트롤러(1100)와 저장 매체(1200)를 포함할 수 있다.
컨트롤러(1100)는 호스트 장치(1500)와 저장 매체(1200) 사이의 데이터 교환을 제어할 수 있다. 컨트롤러(1100)는 프로세서(1110), 램(1120), 롬(1130), ECC부(1140), 호스트 인터페이스(1150) 및 저장 매체 인터페이스(1160)를 포함할 수 있다.
프로세서(1110)는 컨트롤러(1100)의 제반 동작을 제어할 수 있다. 프로세서(1110)는 호스트 장치(1500)의 데이터 처리 요청에 따라 저장 매체(1200)에 데이터를 저장하고, 저장 매체(1200)로부터 저장된 데이터를 리드할 수 있다. 프로세서(1110)는 저장 매체(1200)를 효율적으로 관리하기 위해서, 머지 동작 및 웨어 레벨링 동작 등과 같은 SSD(1000)의 내부 동작을 제어할 수 있다.
램(1120)은 프로세서(1110)에 의해 사용되는 프로그램 및 프로그램 데이터를 저장할 수 있다. 램(1120)은 호스트 인터페이스(1150)로부터 전송된 데이터를 저장 매체(1200)에 전달하기 전에 임시 저장할 수 있고. 저장 매체(1200)로부터 전송된 데이터를 호스트 장치(1500)로 전달하기 전에 임시 저장할 수 있다.
롬(1130)은 프로세서(1110)에 의해 리드되는 프로그램 코드를 저장할 수 있다. 프로그램 코드는 프로세서(1110)가 컨트롤러(1100)의 내부 유닛들을 제어하기 위해서 프로세서(1110)에 의해 처리되는 명령들을 포함할 수 있다.
ECC부(1140)는 저장 매체(1200)에 저장될 데이터를 인코딩하고, 저장 매체(1200)로부터 리드된 데이터를 디코딩할 수 있다. ECC부(1140)는 ECC 알고리즘에 따라 데이터에 발생된 에러를 검출하고 정정할 수 있다.
ECC부(1140)는 도1의 에러 정정 회로(100)를 포함할 수 있다. ECC부(1140)는 저장 매체(1200)로부터 리드된 코드워드에 대해 신드롬 체크 동작의 결과에 따라 디코딩 동작을 임계 횟수까지 반복함으로써 제1 에러 정정 동작을 수행할 수 있다. ECC부(1140)는 제1 에러 정정 동작에서 디코딩 동작이 반복됨으로써 산출된 신드롬 행렬들을 누적 행렬에 누적할 수 있다. ECC부(1140)는 제1 에러 정정 동작의 반복 횟수가 임계 횟수(M)에 도달할 때, 마지막 코드워드에서 누적 행렬에 근거하여 에러 비트일 확률이 높은 비트들을 선택적으로 비트 플립함으로써 제2 에러 정정 동작을 수행할 수 있다.
호스트 인터페이스(1150)는 호스트 장치(1500)와 데이터 처리 요청 및 데이터 등을 교환할 수 있다.
저장 매체 인터페이스(1160)는 저장 매체(1200)로 제어 신호 및 데이터를 전송할 수 있다. 저장 매체 인터페이스(1160)는 저장 매체(1200)로부터 데이터를 전송받을 수 있다. 저장 매체 인터페이스(1160)는 저장 매체(1200)와 복수의 채널들(CH0~CHn)을 통해 연결될 수 있다.
저장 매체(1200)는 복수의 비휘발성 메모리 장치들(NVM0~NVMn)을 포함할 수 있다. 복수의 비휘발성 메모리 장치들(NVM0~NVMn) 각각은 컨트롤러(1100)의 제어에 따라 라이트 동작 및 리드 동작을 수행할 수 있다.
비휘발성 메모리 장치는 낸드 플래시(NAND Flash) 또는 노어 플래시(NOR Flash)와 같은 플래시 메모리 장치, FeRAM(Ferroelectrics Random Access Memory), PCRAM(Phase-Change Random Access Memory), MRAM(Magnetic Random Access Memory) 또는 ReRAM(Resistive Random Access Memory) 등을 포함할 수 있다.
도10은 도9의 데이터 저장 장치(1000)가 데이터 저장 장치(2300)로서 적용된 데이터 처리 시스템(2000)을 도시하는 블록도이다. 도9의 데이터 저장 장치(1000)는 도10에서 데이터 저장 장치(2300)로 구현될 수 있다.
데이터 처리 시스템(2000)은 컴퓨터, 랩탑, 넷북, 스마트폰, 디지털 TV, 디지털 카메라, 네비게이션 등을 포함할 수 있다. 데이터 처리 시스템(2000)은 메인 프로세서(2100), 메인 메모리 장치(2200), 데이터 저장 장치(2300) 및 입출력 장치(2400)를 포함할 수 있다. 데이터 처리 시스템(2000)의 내부 유닛들은 시스템 버스(2500)를 통해서 데이터 및 제어 신호 등을 주고받을 수 있다.
메인 프로세서(2100)는 데이터 처리 시스템(2000)의 제반 동작을 제어할 수 있다. 메인 프로세서(2100)는, 예를 들어, 마이크로프로세서와 같은 중앙 처리 장치일 수 있다. 메인 프로세서(2100)는 운영 체제, 애플리케이션 및 장치 드라이버 등의 소프트웨어들을 메인 메모리 장치(2200) 상에서 수행할 수 있다.
메인 메모리 장치(2200)는 메인 프로세서(2100)에 의해 사용되는 프로그램 및 프로그램 데이터를 저장할 수 있다. 메인 메모리 장치(2200)는 데이터 저장 장치(2300) 및 입출력 장치(2400)로 전송될 데이터를 임시 저장할 수 있다.
데이터 저장 장치(2300)는 컨트롤러(2310) 및 저장 매체(2320)를 포함할 수 있다. 데이터 저장 장치(2300)는 도9의 데이터 저장 장치(1000)와 실질적으로 동일하게 구성될 수 있다.
입출력 장치(2400)는 사용자로부터 데이터 처리 시스템(2000)을 제어하기 위한 명령을 입력받거나 처리된 결과를 사용자에게 제공하는 등 사용자와 정보를 교환할 수 있는 키보드, 스캐너, 터치스크린, 스크린 모니터, 프린터 및 마우스 등을 포함할 수 있다.
실시 예에 따라, 데이터 처리 시스템(2000)은 LAN(Local Area Network), WAN(Wide Area Network) 및 무선 네트워크 등의 네트워크(2600)를 통해 적어도 하나의 서버(2700)와 통신할 수 있다. 데이터 처리 시스템(2000)은 네트워크(2600)에 접속하기 위해서 네트워크 인터페이스(미도시)를 포함할 수 있다.
본 발명이 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있으므로, 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
100: 에러 정정 회로
110: 신드롬 체크부
120: 디코더
130: 누적부
140: 비트 플립부

Claims (25)

  1. 제1 에러 정정 동작을 수행하되, 상기 제1 에러 정정 동작은,
    패리티 체크 행렬에 근거하여 코드워드에 대응하는 신드롬 행렬을 산출함으로써 신드롬 체크 동작을 수행하는 단계;
    상기 신드롬 체크 동작의 결과에 따라 상기 코드워드에 대해 디코딩 동작을 수행하는 단계; 및
    상기 디코딩 동작이 수행됨으로써 획득된 코드워드에 대해 상기 신드롬 체크 동작이 통과될 때까지 또는 상기 디코딩 동작의 반복 횟수가 임계 횟수에 도달할 때까지 상기 디코딩 동작을 반복하는 단계를 포함하는, 상기 제1 에러 정정 동작을 수행하는 단계;
    상기 디코딩 동작이 반복됨으로써 산출되는 신드롬 행렬들을 누적 행렬에 누적하는 단계; 및
    상기 반복 횟수가 상기 임계 횟수에 도달할 때, 상기 누적 행렬에 근거하여 마지막 코드워드에 대해 제2 에러 정정 동작을 수행하는 단계를 포함하는 에러 정정 방법.
  2. 제1항에 있어서,
    상기 제2 에러 정정 동작을 수행하는 단계는,
    상기 누적 행렬에서 소정 개수의 누적 값들을 선택하는 단계;
    선택된 누적 값들에 근거하여, 상기 마지막 코드워드에서 하나 이상의 비트들을 마킹하는 단계;
    마킹된 비트들을 선택적으로 비트 플립하는 단계; 및
    비트 플립된 코드워드에 대해 상기 신드롬 체크 동작을 수행하는 단계를 포함하는 에러 정정 방법.
  3. 제2항에 있어서,
    상기 누적 값들을 선택하는 단계는,
    상기 누적 행렬의 누적 값들을 내림차순으로 정렬함으로써 상기 소정 개수의 누적 값들을 선택하는 단계를 포함하는 에러 정정 방법.
  4. 제2항에 있어서,
    상기 누적 값들을 선택하는 단계는,
    상기 누적 행렬의 일부의 누적 값들을 내림차순으로 정렬함으로써 상기 소정 개수의 누적 값들을 선택하는 단계를 포함하고,
    상기 일부의 누적 값들 각각은, 상기 마지막 코드워드에 대응하는 마지막 신드롬 행렬에서, 대응하는 신드롬 값이 신드롬 체크를 불만족하는 에러 정정 방법.
  5. 제2항에 있어서,
    상기 비트들을 마킹하는 단계는,
    상기 패리티 체크 행렬의 행들 중 상기 선택된 누적 값들에 대응하는 하나 이상의 행들을 선택하는 단계;
    선택된 행들에서 "1"이 공통으로 위치하는 하나 이상의 위치들을 검색하는 단계; 및
    상기 마지막 코드워드에서 검색된 위치들에 대응하는 상기 하나 이상의 비트들을 마킹하는 단계를 포함하는 에러 정정 방법.
  6. 제2항에 있어서,
    상기 비트들을 마킹하는 단계는,
    상기 마지막 코드워드의 비트 그룹들 중 상기 선택된 누적 값들에 각각 대응하는 비트 그룹들을 선택하는 단계; 및
    선택된 비트 그룹들 모두에 공통으로 포함되는 상기 하나 이상의 비트들을 마킹하는 단계를 포함하는 에러 정정 방법.
  7. 제2항에 있어서,
    상기 제2 에러 정정 동작은,
    상기 신드롬 체크 동작이 통과될 때까지, 상기 마킹된 비트들의 서브세트들에 대한 비트 플립을 반복하는 단계를 더 포함하는 에러 정정 방법.
  8. 디코딩 동작이 임계 횟수까지 반복되는 동안, 패리티 체크 행렬에 근거하여 코드워드의 비트 그룹들 각각에 대해 신드롬 값들을 산출하는 단계;
    상기 신드롬 값들에 근거하여 상기 비트 그룹들 각각에 대해 비트 그룹이 신드롬 체크를 불만족한 횟수인 불만족 횟수를 카운트하는 단계;
    상기 비트 그룹들의 불만족 횟수들에 근거하여, 상기 디코딩 동작을 통해 획득된 마지막 코드워드의 비트 그룹들 중 소정 개수의 비트 그룹들을 선택하는 단계;
    선택된 비트 그룹들 모두에 공통으로 포함되는 하나 이상의 비트들을 마킹하는 단계;
    마킹된 비트들을 선택적으로 비트 플립하는 단계; 및
    비트 플립된 코드워드에 대해 신드롬 체크 동작을 수행하는 단계를 포함하는 에러 정정 방법.
  9. 제8항에 있어서,
    상기 비트 그룹들을 선택하는 단계는,
    상기 불만족 횟수들을 내림차순으로 정렬함으로써 상기 소정 개수의 비트 그룹들을 선택하는 단계를 포함하는 에러 정정 방법.
  10. 제8항에 있어서,
    상기 비트 그룹들을 선택하는 단계는,
    상기 불만족 횟수들 중 일부의 불만족 횟수들을 내림차순으로 정렬함으로써 상기 소정 개수의 비트 그룹들을 선택하는 단계를 포함하고,
    상기 일부의 불만족 횟수들 각각은, 상기 마지막 코드워드에 대응하는 마지막 신드롬 행렬에서, 대응하는 신드롬 값이 상기 신드롬 체크를 불만족하는 에러 정정 방법.
  11. 제8항에 있어서,
    상기 신드롬 체크 동작이 통과될 때까지 상기 마킹된 비트들의 서브세트들에 대한 비트 플립을 반복하는 단계를 더 포함하는 에러 정정 방법.
  12. 제8항에 있어서,
    상기 비트 플립된 코드워드에 대한 상기 신드롬 체크 동작의 결과에 따라 상기 비트 플립된 코드워드에 대해 상기 디코딩 동작을 수행하는 단계를 더 포함하는 에러 정정 방법.
  13. 신드롬 체크 동작의 결과에 따라 디코딩 동작이 임계 횟수까지 반복되는 동안, 코드워드들을 획득하되, 상기 신드롬 체크 동작은 상기 코드워드들에 각각 대응하는 신드롬 행렬들을 산출하는 단계를 포함하는, 상기 코드워드들을 획득하는 단계;
    상기 신드롬 행렬들을 누적 행렬에 누적하는 단계; 및
    상기 누적 행렬에 근거하여 마지막 코드워드에 대해 비트 플립 동작을 수행하는 단계를 포함하는 에러 정정 방법.
  14. 제13항에 있어서,
    상기 비트 플립 동작을 수행하는 단계는,
    상기 누적 행렬에서 소정 개수의 누적 값들을 선택하는 단계;
    선택된 누적 값들에 근거하여, 상기 마지막 코드워드에서 하나 이상의 비트들을 마킹하는 단계;
    마킹된 비트들을 선택적으로 비트 플립하는 단계; 및
    비트 플립된 코드워드에 대해 상기 신드롬 체크 동작을 수행하는 단계를 포함하는 에러 정정 방법.
  15. 제14항에 있어서,
    상기 누적 값들을 선택하는 단계는,
    상기 누적 행렬의 누적 값들을 내림차순으로 정렬함으로써 상기 소정 개수의 누적 값들을 선택하는 단계를 포함하는 에러 정정 방법.
  16. 제14항에 있어서,
    상기 누적 값들을 선택하는 단계는,
    상기 누적 행렬의 일부의 누적 값들을 내림차순으로 정렬함으로써 상기 소정 개수의 누적 값들을 선택하는 단계를 포함하고,
    상기 일부의 누적 값들 각각은, 상기 마지막 코드워드에 대응하는 마지막 신드롬 행렬에서, 대응하는 신드롬 값이 신드롬 체크를 불만족하는 에러 정정 방법.
  17. 제14항에 있어서,
    상기 비트들을 마킹하는 단계는,
    상기 마지막 코드워드의 비트 그룹들 중 상기 선택된 누적 값들에 각각 대응하는 비트 그룹들을 선택하되, 상기 마지막 코드워드의 상기 비트 그룹들은 상기 마지막 코드워드에 대응하는 마지막 신드롬 행렬의 신드롬 값들에 각각 대응하는, 선택하는 단계; 및
    선택된 비트 그룹들 모두에 공통으로 포함되는 상기 하나 이상의 비트들을 마킹하는 단계를 포함하는 에러 정정 방법.
  18. 제14항에 있어서,
    상기 비트 플립 동작을 수행하는 단계는,
    상기 신드롬 체크 동작이 통과될 때까지, 상기 마킹된 비트들의 서브세트들에 대한 비트 플립을 반복하는 단계를 더 포함하는 에러 정정 방법.
  19. 패리티 체크 행렬에 근거하여 코드워드에 대응하는 신드롬 행렬을 산출함으로써 신드롬 체크 동작을 수행하도록 구성된 신드롬 체크부;
    상기 신드롬 체크 동작의 결과에 따라 상기 코드워드에 대해 디코딩 동작을 수행하도록 구성되고, 상기 디코딩 동작이 수행됨으로써 획득된 코드워드에 대해 상기 신드롬 체크 동작이 통과될 때까지 또는 상기 디코딩 동작의 반복 횟수가 임계 횟수에 도달할 때까지 상기 디코딩 동작을 반복하도록 구성된 디코더;
    상기 디코딩 동작이 반복됨으로써 상기 신드롬 체크부로부터 산출되는 신드롬 행렬들을 누적 행렬에 누적하도록 구성된 누적부; 및
    상기 반복 횟수가 상기 임계 횟수에 도달할 때, 상기 누적 행렬에 근거하여 마지막 코드워드에 대해 비트 플립 동작을 수행하도록 구성된 비트 플립부를 포함하는 에러 정정 회로.
  20. 제19항에 있어서,
    상기 비트 플립부는, 상기 누적 행렬에서 소정 개수의 누적 값들을 선택하고, 선택된 누적 값들에 근거하여 상기 마지막 코드워드에서 하나 이상의 비트들을 마킹하고, 마킹된 비트들을 선택적으로 비트 플립하고,
    상기 신드롬 체크부는 비트 플립된 코드워드에 대해 상기 신드롬 체크 동작을 수행하는 에러 정정 회로.
  21. 제20항에 있어서,
    상기 비트 플립부는, 상기 누적 행렬의 누적 값들을 내림차순으로 정렬함으로써 상기 소정 개수의 누적 값들을 선택하는 에러 정정 회로.
  22. 제20항에 있어서,
    상기 비트 플립부는, 상기 누적 행렬의 일부의 누적 값들을 내림차순으로 정렬함으로써 상기 소정 개수의 누적 값들을 선택하고,
    상기 일부의 누적 값들 각각은, 상기 마지막 코드워드에 대응하는 마지막 신드롬 행렬에서, 대응하는 신드롬 값이 신드롬 체크를 불만족하는 에러 정정 회로.
  23. 제20항에 있어서,
    상기 비트 플립부는, 상기 패리티 체크 행렬의 행들 중 상기 선택된 누적 값들에 대응하는 하나 이상의 행들을 선택하고, 선택된 행들에서 "1"이 공통으로 위치하는 하나 이상의 위치들을 검색하고, 상기 마지막 코드워드에서 검색된 위치들에 대응하는 상기 하나 이상의 비트들을 마킹하는 에러 정정 회로.
  24. 제20항에 있어서,
    상기 비트 플립부는, 상기 마지막 코드워드의 비트 그룹들 중 상기 선택된 누적 값들에 각각 대응하는 비트 그룹들을 선택하고, 선택된 비트 그룹들 모두에 공통으로 포함되는 상기 하나 이상의 비트들을 마킹하는 에러 정정 회로.
  25. 제20항에 있어서,
    상기 비트 플립부는, 상기 비트 플립된 코드워드에 대해 상기 신드롬 체크 동작이 통과될 때까지, 상기 마킹된 비트들의 서브세트들에 대한 비트 플립을 반복하는 에러 정정 회로.
KR1020160023622A 2016-02-26 2016-02-26 에러 정정 회로 및 에러 정정 방법 KR20170101368A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020160023622A KR20170101368A (ko) 2016-02-26 2016-02-26 에러 정정 회로 및 에러 정정 방법
US15/219,409 US20170250714A1 (en) 2016-02-26 2016-07-26 Error correction circuit and error correction method
TW105133154A TW201730765A (zh) 2016-02-26 2016-10-14 錯誤校正電路和錯誤校正方法
CN201611116206.6A CN107135006B (zh) 2016-02-26 2016-12-07 错误校正电路和错误校正方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160023622A KR20170101368A (ko) 2016-02-26 2016-02-26 에러 정정 회로 및 에러 정정 방법

Publications (1)

Publication Number Publication Date
KR20170101368A true KR20170101368A (ko) 2017-09-06

Family

ID=59679912

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160023622A KR20170101368A (ko) 2016-02-26 2016-02-26 에러 정정 회로 및 에러 정정 방법

Country Status (4)

Country Link
US (1) US20170250714A1 (ko)
KR (1) KR20170101368A (ko)
CN (1) CN107135006B (ko)
TW (1) TW201730765A (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020036752A1 (en) * 2018-08-17 2020-02-20 Micron Technology, Inc. Enhanced bit flipping scheme
WO2023014482A1 (en) * 2021-08-05 2023-02-09 Micron Technology, Inc. Managing defective bitline locations in a bit flipping decoder
US11722151B2 (en) 2021-08-09 2023-08-08 Micron Technology, Inc. Bit flipping decoder based on soft information
US11777522B1 (en) 2022-03-28 2023-10-03 Micron Technology, Inc. Bit flipping decoder with dynamic bit flipping criteria

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI631830B (zh) * 2016-12-30 2018-08-01 慧榮科技股份有限公司 解碼方法與相關解碼裝置
KR20190043043A (ko) * 2017-10-17 2019-04-25 에스케이하이닉스 주식회사 전자장치
TWI638262B (zh) * 2017-11-17 2018-10-11 慧榮科技股份有限公司 資料儲存裝置及應用於其上的操作方法
CN110391815B (zh) * 2018-04-18 2023-08-18 深圳大心电子科技有限公司 解码方法及储存控制器
CN109120265B (zh) * 2018-08-06 2021-09-14 张家港康得新光电材料有限公司 一种信号的校正方法、装置、芯片和存储介质
KR102592870B1 (ko) * 2018-10-12 2023-10-24 에스케이하이닉스 주식회사 에러 정정 회로 및 이의 동작 방법
US10944429B1 (en) * 2020-01-02 2021-03-09 Silicon Motion, Inc. Data accessing method using data protection with aid of parity check matrix having partial sequential information, and associated apparatus
KR20210138390A (ko) * 2020-05-12 2021-11-19 에스케이하이닉스 주식회사 에러 정정 디코더, 이를 포함하는 에러 정정 회로 및 에러 정정 디코더의 동작 방법
US20240120947A1 (en) * 2022-10-07 2024-04-11 Micron Technology, Inc. Error detection and classification at a host device

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8677225B1 (en) * 2011-02-11 2014-03-18 Marvell International Ltd. Low-density parity-check decoder
CN103259545B (zh) * 2013-04-26 2017-02-15 西安理工大学 基于振荡的准循环低密度奇偶校验码置信传播译码方法
CN103888148B (zh) * 2014-03-20 2016-10-26 山东华芯半导体有限公司 一种动态阈值比特翻转的ldpc码硬判决译码方法
US9692450B2 (en) * 2015-05-11 2017-06-27 Maxio Technology (Hangzhou) Ltd. Systems and methods for early exit of layered LDPC decoder

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020036752A1 (en) * 2018-08-17 2020-02-20 Micron Technology, Inc. Enhanced bit flipping scheme
US10802909B2 (en) 2018-08-17 2020-10-13 Micron Technology, Inc. Enhanced bit flipping scheme
KR20210034088A (ko) * 2018-08-17 2021-03-29 마이크론 테크놀로지, 인크 향상된 비트 플립핑 방식
US11256566B2 (en) 2018-08-17 2022-02-22 Micron Technology, Inc. Enhanced bit flipping scheme
US11775383B2 (en) 2018-08-17 2023-10-03 Micron Technology, Inc. Enhanced bit flipping scheme
WO2023014482A1 (en) * 2021-08-05 2023-02-09 Micron Technology, Inc. Managing defective bitline locations in a bit flipping decoder
US11722151B2 (en) 2021-08-09 2023-08-08 Micron Technology, Inc. Bit flipping decoder based on soft information
US11777522B1 (en) 2022-03-28 2023-10-03 Micron Technology, Inc. Bit flipping decoder with dynamic bit flipping criteria

Also Published As

Publication number Publication date
CN107135006B (zh) 2020-10-23
US20170250714A1 (en) 2017-08-31
CN107135006A (zh) 2017-09-05
TW201730765A (zh) 2017-09-01

Similar Documents

Publication Publication Date Title
CN107135006B (zh) 错误校正电路和错误校正方法
US11515897B2 (en) Data storage device
US9529666B2 (en) Decoding method, memory storage device and memory controlling circuit unit
US11611359B2 (en) Data storage device
US20160372161A1 (en) Data storage device and operating method thereof
KR102275717B1 (ko) 플래시 메모리 시스템 및 그의 동작 방법
US10103748B2 (en) Decoding method, memory control circuit unit and memory storage device
KR20170062254A (ko) 데이터 저장 장치 및 그것의 동작 방법
US10102066B2 (en) Data processing device and operating method thereof
KR20170039795A (ko) 데이터 저장 장치 및 그것의 동작 방법
US10574272B2 (en) Memory system
JP7069233B2 (ja) 特定のシステムレベルトリガ及びポリシーに基づいた不規則なコードスキームの適応的使用
US9960788B2 (en) Memory controller, semiconductor memory device, and control method for semiconductor memory device
US20190056991A1 (en) Error correction circuit, operating method thereof and data storage device including the same
US10778258B2 (en) Memory system and decoding method
US10970166B2 (en) Memory system and method of controlling non-volatile memory
CN110391816B (zh) 错误校正电路及包括错误校正电路的存储器系统
US10511334B2 (en) Error correction circuit, operating method thereof and data storage device including the same
US9954556B2 (en) Scheme to avoid miscorrection for turbo product codes
US10985781B2 (en) Error correction circuit, operating method thereof and data storage device including the same
CN105938728B (zh) 用于近似平衡码的编码器和解码器设计
CN113626249B (zh) 一种固态硬盘的软解码方法、装置、设备及存储介质
KR20190030294A (ko) 에러 정정 회로, 그것의 동작 방법 및 그것을 포함하는 데이터 저장 장치
CN117632573A (zh) 存储器控制器及低密度同位元查核码的位元翻转方法
KR20230086557A (ko) 메모리 매칭된 저 밀도 패리티 검사 코딩 체계