KR20210138390A - 에러 정정 디코더, 이를 포함하는 에러 정정 회로 및 에러 정정 디코더의 동작 방법 - Google Patents

에러 정정 디코더, 이를 포함하는 에러 정정 회로 및 에러 정정 디코더의 동작 방법 Download PDF

Info

Publication number
KR20210138390A
KR20210138390A KR1020200056657A KR20200056657A KR20210138390A KR 20210138390 A KR20210138390 A KR 20210138390A KR 1020200056657 A KR1020200056657 A KR 1020200056657A KR 20200056657 A KR20200056657 A KR 20200056657A KR 20210138390 A KR20210138390 A KR 20210138390A
Authority
KR
South Korea
Prior art keywords
error correction
decoding operation
ucn
syndrome
speed
Prior art date
Application number
KR1020200056657A
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 KR1020200056657A priority Critical patent/KR20210138390A/ko
Priority to US17/066,618 priority patent/US11515898B2/en
Priority to CN202110194285.7A priority patent/CN113658618B/zh
Publication of KR20210138390A publication Critical patent/KR20210138390A/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/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/1128Judging correct decoding and iterative stopping criteria other than syndrome check and upper limit for decoding iterations
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1816Testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • 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/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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/616Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations

Landscapes

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

Abstract

본 기술은 제1 코드워드에 대한 반복 복호 동작을 수행하여 에러 정정 메시지를 출력하는 연산부; 상기 에러 정정 메시지와 패리티 체크 행렬을 연산하여 신드롬을 생성하고, 상기 반복 복호 동작이 수행된 반복 횟수와 상기 신드롬에 포함된 UCN(unsatisfied check node) 값을 출력하는 신드롬 생성부; 및 상기 반복 횟수 및 상기 UCN 값에 따라 상기 반복 복호 동작의 속도를 조절하기 위한 속도 코드를 출력하는 속도 선택부를 포함하고, 상기 연산부는 상기 속도 코드에 따라 상기 반복 복호 동작의 속도를 재설정하고, 제2 코드워드가 입력되면 재설정된 속도에 따라 상기 반복 복호 동작을 수행하는 에러 정정 디코더, 이를 포함하는 에러 정정 회로 및 에러 정정 디코더의 동작 방법을 포함한다.

Description

에러 정정 디코더, 이를 포함하는 에러 정정 회로 및 에러 정정 디코더의 동작 방법{error correction decoder, error correction circuit having the error correction decoder and operating method of the error correction decoder}
본 발명은 에러 정정 디코더, 이를 포함하는 에러 정정 회로 및 에러 정정 디코더의 동작 방법에 관한 것으로, 보다 구체적으로는 에러 정정 디코더의 동작 속도를 개선하기 위한 에러 정정 디코더, 이를 포함하는 에러 정정 회로 및 에러 정정 디코더의 동작 방법에 관한 것이다.
메모리 시스템(memory system)은 데이터를 저장할 수 있는 메모리 장치와, 호스트의 요청에 따라 메모리 장치를 제어할 수 있는 컨트롤러를 포함할 수 있다. 예를 들면, 컨트롤러는 호스트로부터 제공된 데이터를 메모리 장치에 프로그램하고, 메모리 장치에 저장된 데이터를 리드하여 호스트에게 출력할 수 있다. 컨트롤러는 데이터의 신뢰성을 보장하기 위하여 에러 정정 회로(error correction circuit)를 포함할 수 있다. 에러 정정 회로는, 에러 정정 코드(error correction code) 이용하여 인코딩 및 디코딩을 수행할 수 있다. 예를 들면, 에러 정정 코드는 호스트로부터 제공된 데이터를 인코딩하는 에러 정정 인코더와, 메모리 장치로부터 리드된 데이터를 디코딩하는 에러 정정 디코더를 포함할 수 있다. 호스트로부터 제공된 데이터는 메시지(massage)일 수 있으며, 메모리 장치로부터 리드된 데이터는 코드워드(codeword)일 수 있다.
에러 정정 회로는 저밀도 패리티 체크(Low Density Parity Check; LDPC) 코드 등을 이용한 복잡한 연산을 수행하여 코드워드를 메시지로 변환할 수 있다. 최근에는 코드워드의 사이즈가 점차 증가하므로 에러 정정 디코딩에 걸리는 시간이 증가한다. 이로 인해, 컨트롤러가 리드된 데이터를 출력하는 데 걸리는 시간이 증가할 수 있다. 등의 다양한 방식으로 디코딩을 수행할 수 있다. 저밀도 패리티 체크(LDPC) 특히 디코딩 동작 시 복잡한 연산을 수행하기 때문에, 에러 정정 동작 시간이 증가할 수 있다.
본 발명의 실시 예는 에러 정정 디코딩 동작 속도를 조절할 수 있는 에러 정정 디코더, 이를 포함하는 에러 정정 회로 및 에러 정정 디코더의 동작 방법을 제공한다.
본 발명의 실시예에 따른 에러 정정 디코더는, 제1 코드워드에 대한 반복 복호 동작을 수행하여 에러 정정 메시지를 출력하는 연산부; 상기 에러 정정 메시지와 패리티 체크 행렬을 연산하여 신드롬을 생성하고, 상기 반복 복호 동작이 수행된 반복 횟수와 상기 신드롬에 포함된 UCN(unsatisfied check node) 값을 출력하는 신드롬 생성부; 및 상기 반복 횟수 및 상기 UCN 값에 따라 상기 반복 복호 동작의 속도를 조절하기 위한 속도 코드를 출력하는 속도 선택부를 포함하고, 상기 연산부는 상기 속도 코드에 따라 상기 반복 복호 동작의 속도를 재설정하고, 제2 코드워드가 입력되면 재설정된 속도에 따라 상기 반복 복호 동작을 수행하는 것을 특징으로 한다.
본 발명의 실시예에 따른 에러 정정 회로는, 호스트로부터 수신된 메시지를 인코딩하여 코드워드를 생성하고, 상기 코드워드를 메모리장치로 전송하는 에러 정정 인코더; 및 상기 메모리 장치로부터 상기 코드워드를 수신받고, 상기 코드워드에 대한 디코딩 동작을 수행하여 상기 메시지를 출력하되, 이전 코드워드에 대한 상기 디코딩 동작의 결과에 따라 다음 코드워드에 대한 상기 디코딩 동작의 속도를 조절하는 에러 정정 디코더를 포함한다.
본 발명의 실시예에 따른 에러 정정 디코더의 동작 방법은, 제1 코드워드와 패리티 체크 행렬을 사용한 반복 복호 동작을 수행하여 에러 정정 메시지를 출력하는 단계; 상기 에러 정정 메시지와 상기 패리티 체크 행렬을 연산하여 신드롬을 생성하는 단계; 상기 신드롬에 UCN(unsatisfied check node)이 포함되어 있는지를 체크하는 단계; 상기 신드롬에 상기 UCN이 포함되어 있으면, 상기 UCN의 개수에 대응되는 UCN 값과, 상기 반복 복호 동작이 수행된 횟수에 대응되는 반복 횟수를 누적하여 카운트하는 단계; 카운트된 상기 UCN 값과 상기 반복 횟수에 따라 상기 반복 복호 동작의 속도를 재설정하는 단계; 상기 신드롬에 상기 UCN이 포함되어 있지 않으면, 상기 신드롬을 생성할 때 사용된 전치 행렬의 값들을 메시지로써 출력하는 단계; 및 재설정된 상기 속도에 따라 제2 코드워드와 상기 패리티 체크 행렬을 사용한 상기 반복 복호 동작을 수행하는 단계를 포함한다.
본 기술은 에러 정정 디코딩 동작의 결과에 따라 다음 코드워드에 대하여 수행되는 에러 정정 디코딩 동작의 속도를 조절할 수 있다.
도 1은 본 발명의 실시 예에 따른 에러 정정 회로(error correction circuit)를 설명하기 위한 도면이다.
도 2는 본 발명의 실시 예에 따른 반복 연산부(iteration calculator) 및 신드롬 체크부(syndrome checker)를 설명하기 위한 도면이다.
도 3은 본 발명의 실시 예에 따른 연산부(calculator)를 설명하기 위한 도면이다.
도 4는 본 발명의 실시 예에 따른 속도 선택부(speed selector)를 설명하기 위한 도면이다.
도 5는 본 발명의 실시 예에 따른 신드롬 생성부(syndrome generator)를 설명하기 위한 도면이다.
도 6은 본 발명의 실시 예에 따른 레지스터(register)를 설명하기 위한 도면이다.
도 7은 본 발명의 실시 예에 따른 에러 정정 디코딩 동작을 설명하기 위한 순서도이다.
도 8은 본 발명의 실시 예에 따른 패리티 체크 행렬(parity check matrix)을 설명하기 위한 도면이다.
도 9는 도 8에 도시된 패리티 체크 행렬을 태너(Tanner) 그래프로 나타낸 도면이다.
도 10은 도 8에 도시된 패리티 체크 행렬을 이용하여 심볼(symbol)을 생성하는 방법을 설명하기 위한 도면이다.
도 11은 본 발명의 실시 예에 따른 심볼들 및 UCN(unsatisfied check node)을 설명하기 위한 도면이다.
도 12 및 도 13은 본 발명의 일 실시 예에 따른 에러 정정 디코딩 동작의 속도를 조절하는 방법을 설명하기 위한 도면들이다.
도 14 및 도 15는 본 발명의 다른 실시 예에 따른 에러 정정 디코딩 동작의 속도를 조절하는 방법을 설명하기 위한 도면들이다.
도 16은 본 발명의 실시 예에 따른 메모리 시스템을 설명하기 위한 도면이다.
도 17은 도 16에 도시된 메모리 장치를 설명하기 위한 도면이다.
도 18은 도 16에 도시된 컨트롤러를 설명하기 위한 도면이다.
도 1은 본 발명의 실시 예에 따른 에러 정정 회로(error correction circuit)를 설명하기 위한 도면이다.
도 1을 참조하면, 에러 정정 회로(1000)는 호스트로부터 출력된 메시지(massage; MSG)를 인코딩하여 코드워드(codeword; CDWD)를 출력할 수 있고, 메모리 장치로부터 출력된 코드워드(CDWD)를 디코딩하여 메시지(MSG)를 출력할 수 있다.
에러 정정 회로(1000)는 프로그램 동작 시 에러 정정 인코딩 동작을 수행하여 메시지(MSG)를 코드워드(CDWD)로 변환할 수 있고, 리드 동작 시 에러 정정 디코딩 동작을 수행하여 코드워드(CDWD)를 메시지(MSG)로 변환할 수 있다.
에러 정정 회로(10000)는 에러 정정 인코딩 동작을 수행할 수 있는 에러 정정 인코더(error correction encoder; 1100)와, 에러 정정 디코딩 동작을 수행할 수 있는 에러 정정 디코더(error correction decoder; 1200)와, 에러 정정 인코더(1100) 및 에러 정정 디코더(1200)를 제어할 수 있는 에러 정정 프로세서(error correction processor; 1300)를 포함할 수 있다.
에러 정정 인코더(1100)는 에러 정정 인코딩의 대상이 되는 메시지(MSG)를 수신하고, 수신된 메시지(MSG)와 에러 정정 코드(Error Correction Code; ECC)의 행렬(matrix)을 이용하여 에러 정정 인코딩 동작을 수행할 수 있다. 실시 예에 따라, 에러 정정 인코더(1100)는, 에러 정정 코드의 패리티 체크 행렬(parity check matrix)을 이용하여 에러 정정 인코딩을 수행할 수도 있다. 에러 정정 인코더(1100)는 에러 정정 인코딩의 수행 결과로 생성된 코드워드(CDWD)를 출력할 수 있다. 코드워드(CDWD)는 채널을 통하여 메모리 장치에게 전송될 수 있고 메모리 장치에 포함된 복수의 메모리 셀들(예를 들어, 하나의 페이지를 구성하는 메모리 셀들)에 저장될 수 있다. 에러 정정 인코더(1100)는 에러 정정 코드로서 LDPC(Low Density Parity Check) 코드를 이용하는 LDPC 인코더일 수 있다.
에러 정정 디코더(1200)는 반복 복호 기법(iterative decoding scheme)을 채택하는 다양한 알고리즘을 이용하여 에러 정정 디코딩 동작을 수행할 수 있다. 예를 들어, 에러 정정 디코더(1200)는, 신뢰 전파 알고리즘(belief propagation algorithm)으로도 일컬어지는 메시지 전달 알고리즘(message passing algorithm)을 이용하여 에러 정정 디코딩 동작을 수행할 수 있다. 에러 정정 디코더(1200)는 설정된 최대 반복 횟수(maximum iteration number) 내에서 복수의 에러 정정 디코딩 동작들 및 신드롬 체크 동작을 수행할 수 있으며, 에러 정정 디코딩 동작 및 신드롬 체크 동작이 패스되면 메시지(MSG)를 출력할 수 있다.
에러 정정 디코더(1200)는 반복 연산부(iteration calculator; 110) 및 신드롬 체크부(syndrome checker; 120)를 포함할 수 있다. 반복 연산부(110)는 코드워드(CDWD)를 패리티 체크 행렬을 사용한 에러 정정 동작들을 반복하여 에러 정정 메시지(error correction massage; ECM)를 출력할 수 있다. 예를 들면, 반복 연산부(110)는 코드워드(CDWD)를 이용한 패리티 체크 행렬을 생성하고, 에러 정정 동작들을 1 싸이클(cycle) 수행하여 에러 정정 메시지(ECM)를 출력할 수 있다.
신드롬 체크부(120)는 에러 정정 메시지(ECM)와 패리티 체크 행렬을 사용한 디코딩 동작을 수행하여 신드롬(syndrome)을 생성할 수 있고, 신드롬을 토대로 디코딩 동작의 패스(pass) 또는 페일(fail)을 판단할 수 있다. 예를 들면, 신드롬 체크부(120)는 신드롬에 UCN(unsatisfied check node)이 포함되면 디코딩 동작을 페일(fail)로 판단할 수 있고, UCN이 포함되지 않으면 디코딩 동작을 패스(pass)로 판단할 수 있다.
디코딩 동작이 페일(fail)로 판단되면, 신드롬 체크부(120)는 페일 신호(FSG)를 반복 연산부(110)에게 출력할 수 있다. 반복 연산부(110)는 페일 신호(FSG)에 응답하여, 다음 싸이클에 해당되는 연산 동작을 수행하여 에러 정정 메시지(ECM)를 출력할 수 있다. 이러한 방식으로, 디코딩 동작이 최대 반복 횟수 내에서 패스(pass)될 때까지, 반복 연산부(110)와 신드롬 체크부(120)는 연산 또는 디코딩 동작을 반복할 수 있다.
디코딩 동작이 패스(pass)로 판단되면, 신드롬 체크부(120)는 디코딩 동작이 수행되는 동안 검출된 UCN 값(UCN#) 및 반복 횟수(ITR#)를 반복 연산부(110)에 전송할 수 있다.
반복 연산부(110)는 UCN 값(UCN#) 또는 반복 횟수(ITR#), 또는 UCN 값(UCN#) 및 반복 횟수(ITR#)를 토대로 다음으로 입력되는 코드워드(CDWD)의 연산 속도를 조절할 수 있다. 예를 들면, 반복 연산부(110)는 UCN 값(UCN#) 또는 반복 횟수(ITR#), 또는 UCN 값(UCN#) 및 반복 횟수(ITR#)가 이전 값 또는 기준 값보다 증가하면, 연산 속도를 이전 속도 또는 기준 속도보다 느리게 조절할 수 있다. 반복 연산부(110)는 UCN 값(UCN#) 또는 반복 횟수(ITR#), 또는 UCN 값(UCN#) 및 반복 횟수(ITR#)가 이전 값 또는 기준 값보다 감소하면, 연산 속도를 이전 속도 또는 기준 속도보다 빠르게 조절할 수 있다. 반복 연산부(110)는 UCN 값(UCN#) 또는 반복 횟수(ITR#), 또는 UCN 값(UCN#) 및 반복 횟수(ITR#)가 이전 값 또는 기준 값과 동일하면, 연산 속도를 이전 속도 또는 기준 속도로 유지할 수 있다.
이처럼 본 실시 예에서는 이전에 입력된 코드워드의 에러 정정 연산의 결과에 따라 다음에 입력되는 코드워드의 에러 정정 연산의 속도를 조절함으로써, 에러 정정 비트의 개수가 적을 때에는 연산 속도를 빠르게 조절하여 에러 정정 디코더(1200)의 성능을 향상시킬 수 있고, 에러 비트의 개수가 많을 때에는 연산 속도를 느리게 조절함으로써 에러 정정의 신뢰도를 높임과 동시에 에러 정정 디코더(1200)에서 소모되는 파워(power)를 감소시킬 수 있다.
에러 정정 프로세서(1300)는 커맨드(CMD)에 응답하여 에러 정정 회로(1000)를 제어할 수 있다. 예를 들면, 에러 정정 프로세서(1300)는 프로그램 동작에 대응되는 커맨드(CMD)에 응답하여 에러 정정 인코더(1100)를 활성화시킬 수 있고, 리드 동작에 대응되는 커맨드(CMD)에 응답하여 에러 정정 디코더(1200)를 활성화시킬 수 있다. 또한, 에러 정정 프로세서(1300)는 에러 정정 디코더(1200)에 포함된 반복 연산부(110) 및 신드롬 체크부(120)를 제어할 수도 있다. 이를 위하여, 에러 정정 프로세서(1300)에는 에러 정정 회로(1000)를 제어하기 위한 알고리즘들이 저장될 수 있다.
도 2는 본 발명의 실시 예에 따른 반복 연산부(iteration calculator) 및 신드롬 체크부(syndrome checker)를 설명하기 위한 도면이다.
도 2를 참조하면, 반복 연산부(110)는 연산부(calculator; 21) 및 속도 선택부(speed selector; 22)를 포함할 수 있고, 신드롬 체크부(120)는 신드롬 생성부(syndrome generator; 23) 및 레지스터(register; 24)를 포함할 수 있다.
연산부(21)는 코드워드(CDWD)가 입력되면 패리티 체크 행렬을 이용한 연산 동작을 수행하여 에러 정정 메시지(ECM)를 생성하고, 생성된 에러 정정 메시지(ECM)를 신드롬 생성부(23)에게 출력할 수 있다. 신드롬 생성부(23)로부터 페일 신호(FSG)가 출력되면, 연산부(21)는 페일 신호(FSG)에 응답하여 다음 에러 정정 동작들을 수행하여 이전과 다른 에러 정정 메시지(ECM)를 생성 및 출력할 수 있다.
속도 선택부(22)는 UCN 값(UCN#) 또는 반복 횟수(ITR#), 또는 UCN 값(UCN#) 및 반복 횟수(ITR#)에 따라 서로 다른 속도 코드(SPC)를 출력할 수 있다. 예를 들면, 속도 선택부(22)는 UCN 값(UCN#) 또는 반복 횟수(ITR#), 또는 UCN 값(UCN#) 및 반복 횟수(ITR#)가 이전 값 또는 기준 값보다 증가하면, 연산 속도를 이전 속도 또는 기준 속도보다 느리게 조절하기 위한 속도 코드(SPC)를 출력할 수 있다. 속도 선택부(22)는 UCN 값(UCN#) 또는 반복 횟수(ITR#), 또는 UCN 값(UCN#) 및 반복 횟수(ITR#)가 이전 값 또는 기준 값보다 감소하면, 연산 속도를 이전 속도 또는 기준 속도보다 빠르게 조절하기 위한 속도 코드(SPC)를 출력할 수 있다. 속도 선택부(22)는 UCN 값(UCN#) 또는 반복 횟수(ITR#), 또는 UCN 값(UCN#) 및 반복 횟수(ITR#)가 이전 값 또는 기준 값과 동일하면, 연산 속도를 이전 속도 또는 기준 속도로 유지하기 위한 속도 코드(SPC)를 출력할 수 있다.
연산부(21)는 이전 코드워드(CDWD)에 대한 속도 코드(SPC)에 따라 연산 속도를 재설정할 수 있고, 다음 코드워드(CDWD)가 입력되면 재설정된 연산 속도를 적용하여 연산 동작을 수행할 수 있다. 연산 속도가 빠르게 설정될수록 연산 동작에 필요한 파워(power)는 증가할 수 있고, 연산 속도가 느리게 설정될수록 연산 동작에 필요한 파워(power)는 감소할 수 있다. 즉, 속도 코드(SPC)에 따라 설정된 속도에 의하여, 연산부(21)에서 소비되는 파워(power)가 달라질 수 있다.
신드롬 생성부(23)에 에러 정정 메시지(ECM)가 입력되면, 신드롬 생성부(23)는 패리티 체크 행렬을 이용한 디코딩 동작을 수행하여 신드롬 벡터들(syndrome vectors)을 생성할 수 있다. 신드롬 벡터들이 그룹을 신드롬(syndrome)이라 칭할 수 있다. 신드롬 생성부(23)는 신드롬 벡터들 중에서 UCN이 포함되어 있으면 디코딩 동작을 페일로 판단할 수 있고, UCN이 포함되어 있지 않으면 디코딩 동작을 패스로 판단할 수 있다. 디코딩 동작이 페일로 판단되면, 신드롬 생성부(23)는 연산부(21)에게 페일 신호(FSG)를 출력할 수 있다. 신드롬 생성부(23)는 디코딩 동작이 패스될 때까지 발생한 UCN의 개수와 반복 연산이 수행된 횟수를 각각 카운트 하여 UCN 값(UCN#) 및 반복 횟수(ITR#)를 생성할 수 있다. 디코딩 동작이 패스로 판단되면, 신드롬 생성부(23)는 반복 복호 연산 과정에서 생성된 에러 정정 메시지 중에서 신드롬 체크 동작이 패스된 에러 정정 메시지를 메시지(MSG)로써 출력할 수 있다.
레지스터(24)는 UCN 값(UCN#) 및 반복 횟수(ITR#)를 임시로 저장할 수 있으며, 디코딩 동작이 패스되면 UCN 값(UCN#) 및 반복 횟수(ITR#)를 출력하고 리셋될 수 있다. 레지스터(24)로부터 출력된 UCN 값(UCN#) 및 반복 횟수(ITR#)는 속도 선택부(22)로 입력될 수 있다.
도 3은 본 발명의 실시 예에 따른 연산부(calculator)를 설명하기 위한 도면이다.
도 3을 참조하면, 연산부(21)는 행렬 연산부(matric calculator; 31), 클럭 제어부(clock controller; 32) 및 비트 제어부(bit controller; 33)를 포함할 수 있다.
행렬 연산부(31)는 코드워드(CDWD)를 패리티 체크 행렬을 이용한 에러 정정 동작들을 수행하여 에러 정정 메시지(ECM)를 생성할 수 있다. 행렬 연산부(31)는 미리 설정된 클럭(clock)에 동기하여 에러 정정 동작들을 수행할 수 있으며, 미리 설정된 비트에 따라 에러 정정 동작들을 수행할 수 있다. 에러 정정 메시지(ECM)를 출력하기 위해 수행된 에러 정정 동작들을 1 싸이클이라 하고, 다음 에러 정정 메시지(ECM)를 출력하기 위해 수행된 에러 정정 동작들을 2 싸이클이라 할 수 있다. 행렬 연산부(31)는 페일 신호(FSG)가 입력되면 가변 노드(VN) 또는 비트를 변경하고, 에러 정정 동작들 수행하여 변경된 에러 정정 메시지(ECM)를 출력할 수 있다.
클럭 제어부(32)는 행렬 연산부(31)가 연산 동작을 순차적으로 수행할 수 있도록 클럭을 제공할 수 있다. 클럭 제어부(32)에는 초기 주기(initial frequency)가 설정될 수 있으나, 제1 속도 코드(SPC1)에 따라 다른 주기로 변경될 수 있다. 예를 들면, 클럭 제어부(32)는 제1 속도 코드(SPC1)에 응답하여 주기가 변경된 클럭을 행렬 연산부(31)에게 제공할 수 있다. 행렬 연산부(31)는 클럭의 주기에 동기하여 에러 체크 동작 또는 패리티 체크 동작을 수행할 수 있다.
비트 제어부(33)는 하나의 싸이클에서 연산 동작이 수행되는 비트의 개수를 설정할 수 있다. 비트 제어부(33)에도 초기 개수가 설정될 수 있으나, 연산 동작이 수행되는 비트의 개수는 제2 속도 코드(2SPC)에 따라 변경될 수 있다.
따라서, 행렬 연산부(31)에서 수행되는 연산 동작의 속도는 클럭 제어부(32)에서 설정된 클럭과 비트 제어부(33)에서 설정된 비트의 개수에 따라 달라질 수 있다.
도 4는 본 발명의 실시 예에 따른 속도 선택부(speed selector)를 설명하기 위한 도면이다.
도 4를 참조하면, 속도 선택부(22)는 판단부(determiner; 41), 클럭 관리부(clock manager; 42) 및 비트 관리부(bit manager 43)를 포함할 수 있다.
판단부(41)는 UCN 값(UCN#) 및 반복 횟수(ITR#)를 이전 값 또는 기준 값과 각각 비교하고, 비교 결과에 따라 클럭 관리부(42) 또는 비트 관리부(43), 또는 클럭 관리부(42) 및 비트 관리부(43)를 제어할 수 있다. 예를 들면, 판단부(41)는 UCN 값(UCN#) 또는 반복 횟수(ITR#), 또는 UCN 값(UCN#) 및 반복 횟수(ITR#)가 이전 값 또는 기준 값보다 증가하면, 연산 속도를 이전 속도 또는 기준 속도보다 느리게 조절하기 위한 신호를 클럭 관리부(42) 또는 비트 관리부(43), 또는 클럭 관리부(42) 및 비트 관리부(43)에게 출력할 수 있다. 예를 들면, 판단부(41)는 UCN 값(UCN#) 또는 반복 횟수(ITR#), 또는 UCN 값(UCN#) 및 반복 횟수(ITR#)가 이전 값 또는 기준 값보다 감소하면, 연산 속도를 이전 속도 또는 기준 속도보다 빠르게 조절하기 위한 신호를 클럭 관리부(42) 또는 비트 관리부(43), 또는 클럭 관리부(42) 및 비트 관리부(43)에게 출력할 수 있다. 예를 들면, 판단부(41)는 UCN 값(UCN#) 또는 반복 횟수(ITR#), 또는 UCN 값(UCN#) 및 반복 횟수(ITR#)가 이전 값 또는 기준 값과 동일하면, 연산 속도를 이전 속도 또는 기준 속도로 유지하기 위한 신호를 클럭 관리부(42) 또는 비트 관리부(43), 또는 클럭 관리부(42) 및 비트 관리부(43)에게 출력할 수 있다.
도 5는 본 발명의 실시 예에 따른 신드롬 생성부(syndrome generator)를 설명하기 위한 도면이다.
도 5를 참조하면, 신드롬 생성부(23)는 신드롬 디코더(syndrome decoder; 51) 및 카운터(counter; 52)를 포함할 수 있다.
신드롬 디코더(51)는 에러 정정 메시지(ECM)와 패리티 체크 행렬을 연산하여 심볼들(symbols)을 생성하고, 생성된 심볼들을 토대로 에러 정정 디코딩 동작의 패스 또는 페일 여부를 판단할 수 있다. 예를 들면, 모든 심볼들이 0이면, 신드롬 디코더(51)는 에러 정정 디코딩 동작을 패스로 판단할 수 있고, 심볼들 중 1이 포함되어 있으면 에러 정정 동작을 페일로 판단할 수 있다. 생성된 심볼들의 그룹을 신드롬(syndrome)이라 부를 수 있다. 신드롬 디코더(51)는 에러 정정 동작이 패스로 판단되면 최종 메시지(MSG)를 출력할 수 있고, 에러 정정 동작이 페일로 판단되면 페일 신호(FSG)를 출력할 수 있다.
카운터(52)는 신드롬 디코더(51)에서 수행되는 디코딩 동작의 반복 횟수(ITR#)와, 신드롬 벡터 중에서 1에 해당되는 비트들의 개수인 UCN 값(UCN#)을 카운트하고, 디코딩 동작이 패스되면 누적된 UCN 값(UCN#) 및 반복 횟수(ITR#)를 출력할 수 있다.
도 6은 본 발명의 실시 예에 따른 레지스터(register)를 설명하기 위한 도면이다.
도 6을 참조하면, 레지스터(24)는 복수의 저장 영역들(61, 62)을 포함할 수 있다. 예를 들면, 레지스터(24)는 DRAM, SRAM 또는 비휘발성 메모리로 구현될 수 있다. 레지스터(24)는 UCN 값(UCN#)을 저장할 수 있는 제1 저장 영역(61)과, 반복 횟수(ITR#)를 저장할 수 있는 제2 저장 영역(62)을 포함할 수 있다. 제1 저장 영역(61)은 신드롬 생성부(도 5의 23)에서 출력되는 UCN 값(UCN#)을 순차적으로 저장하고 순차적으로 출력할 수 있다. 제2 저장 영역(62)은 신드롬 생성부(23)에서 출력되는 반복 횟수(ITR#)를 순차적으로 저장하고 순차적으로 출력할 수 있다.
도 7은 본 발명의 실시 예에 따른 에러 정정 디코딩 동작을 설명하기 위한 순서도이다.
도 7을 참조하면, 행렬 연산부(도 3의 31)는 제1 코드워드(first CDWD)가 수신되면(S71), 미리 설정된 제1 속도(1st speed)에 따라 에러 정정 동작이 수행될 수 있고, 에러 정정 동작에 의해 에러 정정 메시지가 생성될 수 있다(S72).
에러 정정 메시지가 신드롬 디코더(도 5의 51)에 입력되면, 신드롬 디코더(51)는 에러 정정 메시지와 패리티 체크 행렬을 연산하여 신드롬(SDR)을 생성할 수 있다(S73). 이어서, 신드롬 디코더(51)는 신드롬(SDR)에 포함된 심볼들 중에서 0이 아닌 심볼들이 포함되어 있는지를 체크하고, 1에 해당되는 심볼이 적어도 하나 이상 포함되어 있으면 에러 정정 디코딩 동작을 페일(fail)로 판단할 수 있다. 여기서, 1에 해당되는 심볼이 UCN(unsatisfied check node)이 되면, 카운터(도 5의 52)는 UCN의 개수(UCN#)를 누적하여 카운트하고, 신드롬(SDR)을 생성하기 위해 수행된 에러 정정 동작들의 반복 횟수(ITR#)를 누적하여 카운트할 수 있다(S75). 에러 정정 디코딩 동작이 페일(fail)되어 신드롬 디코더(51)가 페일 신호(FSG)를 출력하면, 행렬 연산부(31)는 페일 신호(FSG)에 응답하여 가변 노드(VN)를 변경하고(S76) 에러 정정 동작들을 설정된 싸이클 내에서 반복할 수 있다(S72).
S74 단계에서 에러 정정 디코딩 동작이 패스(pass)될 때까지 S72 내지 S76 단계들이 반복될 수 있다. 다만, S72 내지 S76 단계들은 S72 단계에서 수행되는 에러 정정 동작들의 최대 반복 횟수 내에서 반복적으로 수행될 수 있으며, S72 단계에서수행되는 에러 정정 동작들이 최대 반복 횟수만큼 수행되면, 에러 정정 동작은 페일될 수 있다.
S74 단계에서 신드롬에 포함된 모든 심볼들이 0이면, 신드롬 디코더(51)는 에러 정정 디코딩 동작을 패스(pass)로 판단하고, 카운터(52)는 누적된 UCN 값(UCN#) 및 반복 횟수(ITR#)를 출력할 수 있다.
판단부(도 4의 41)는 UCN 값(UCN#) 또는 반복 횟수(ITR#), 또는 UCN 값(UCN#) 및 반복 횟수(ITR#)에 따라 에러 정정 동작의 속도를 결정할 수 있다(S77). 판단부(41)는 UCN 값(UCN#) 및 반복 횟수(ITR#)를 이전 값 또는 기준 값과 각각 비교하고, 비교 결과에 따라 클럭 관리부(도 4의 42) 또는 비트 관리부(도 4의 43), 또는 클럭 관리부(42) 및 비트 관리부(43)를 제어하여 에러 정정 동작의 속도에 영향을 주는 조건들을 변경할 수 있다.
예를 들면, 판단부(41)는 UCN 값(UCN#) 또는 반복 횟수(ITR#), 또는 UCN 값(UCN#) 및 반복 횟수(ITR#)가 이전 값 또는 기준 값보다 증가하면, 연산 속도를 이전 속도 또는 기준 속도보다 느리게 조절하기 위한 신호를 클럭 관리부(42) 또는 비트 관리부(43), 또는 클럭 관리부(42) 및 비트 관리부(43)에게 출력할 수 있다. 예를 들면, 판단부(41)는 UCN 값(UCN#) 또는 반복 횟수(ITR#), 또는 UCN 값(UCN#) 및 반복 횟수(ITR#)가 이전 값 또는 기준 값보다 감소하면, 연산 속도를 이전 속도 또는 기준 속도보다 빠르게 조절하기 위한 신호를 클럭 관리부(42) 또는 비트 관리부(43), 또는 클럭 관리부(42) 및 비트 관리부(43)에게 출력할 수 있다. 예를 들면, 판단부(41)는 UCN 값(UCN#) 또는 반복 횟수(ITR#), 또는 UCN 값(UCN#) 및 반복 횟수(ITR#)가 이전 값 또는 기준 값과 동일하면, 연산 속도를 이전 속도 또는 기준 속도로 유지하기 위한 신호를 클럭 관리부(42) 또는 비트 관리부(43), 또는 클럭 관리부(42) 및 비트 관리부(43)에게 출력할 수 있다.
클럭 관리부(42) 및 비트 관리부(43)는 판단부(41)의 제어에 따라 신호들을 출력할 수 있고, 클럭 제어부(도 3의 32) 및 비트 제어부(도 3의 33)는 클럭 관리부(42) 및 비트 관리부(43)에서 출력된 신호들에 따라 에러 정정 동작의 속도에 관련된 조건들을 변경할 수 있다. 클럭 제어부(32)는 에러 정정 동작이 수행되는 클럭의 주기(frequency)를 조절할 수 있고, 비트 제어부(33)는 행렬 연산부(31)에서 사용되는 비트의 개수를 조절할 수 있다. 예를 들면, 제1 코드워드(first CDWD)에 대한 에러 정정 동작이 제1 속도(first speed)에 따라 수행되었다면, 다음 코드워드에 대한 에러 정정 동작은 제1 속도(first speed)와 다른 제2 속도(second speed)로 수행되도록 설정될 수 있다.
에러 정정 동작의 속도 설정이 완료되면(S77), 행렬 연산부(31)는 제2 코드워드(second CDWD)를 수신받고(S78), 제2 속도(second speed)에 따라 에러 정정 동작을 수행할 수 있다.
상술한 에러 정정 동작 및 에러 정정 디코딩 동작을 구체적으로 설명하면 다음과 같다.
도 8은 본 발명의 실시 예에 따른 패리티 체크 행렬(parity check matrix)을 설명하기 위한 도면이다.
도 8을 참조하면, (n, k) 코드를 정의하는 패리티 체크 행렬(H)의 일 예가 도시된다.
(n, k) 코드는 (n-k)×n의 크기를 갖는 행렬로 정의될 수 있다. 패리티 체크 행렬(H)의 각각의 엔트리(entry)는 ‘0’ 또는 ‘1’로 표현될 수 있다. 패리티 체크 행렬(H)에서는 ‘1’의 개수가 ‘0’의 개수에 비하여 상대적으로 적다. (n, k) 코드는 (n, k) LDPC 코드로 언급될 수 있다. 여기서, n 및 k는 양의 정수일 수 있다. 도 8에는 일 예로서, (7, 4) 코드를 정의하는 패리티 체크 행렬(H)이 도시된다.
도 9는 도 8에 도시된 패리티 체크 행렬을 태너(Tanner) 그래프로 나타낸 도면이다.
도 9를 참조하면, (n, k) 코드는 등가의 이분 그래프(bipartite graph) 형태를 가지는 태너(Tanner) 그래프로 표현될 수 있다. 태너 그래프는 n-k 개의 체크 노드들(check nodes), n 개의 가변 노드들(variable nodes) 및 엣지들(edges)로 표현될 수 있다. 도 9에 도시된 태너 그래프에서는 3 개의 체크 노드들(CN1~CN3), 7 개의 가변 노드들(VN1~VN7) 및 복수의 엣지들(EG)이 포함된다.
체크 노드들(CN1~CN3)은 도 8에 도시된 패리티 체크 행렬(H)의 열(column)에 대응되고, 가변 노드들(VN1~VN7)은 패리티 체크 행렬의 행(row)에 대응될 수 있다. 에지들(EG) 각각은, 하나의 체크 노드와 하나의 가변 노드를 연결하는 실선을 나타낸다.
반복 복호 동작은 체크 노드들(CN1~CN3)과 가변 노드들(VN1~VN7) 사이에서 반복적인 메시지 전달 알고리즘에 따라 수행될 수 있다. 즉, 각각의 반복마다 체크 노드들(CN1~CN3)과 가변 노드들(VN1~VN7) 사이에서 에러 정정 메시지가 전달되면서 반복 복호 동작이 수행될 수 있다.
가변 노드들(VN1~VN7)은 자신과 연결된 체크 노드들로부터 수신되는 C2V 메지시를 이용하여 에러 정정 동작을 수행하고, 자신과 연결된 체크 노드들(CN1~CN3)에게 전송할 V2C 메시지를 생성할 수 있다. 가변 노드들(VN1~VN7)은 각각에 연결된 체크 노드들(CN1~CN3)에게 V2C 메시지를 전송할 수 있다.
체크 노드들(CN1~CN3)은 자신과 연결된 가변 노드들(VN1~VN7)로부터 수신되는 V2C 메시지를 이용하여 패리티 체크 동작을 수행하고, 자신과 연결된 가변 노드들(VN1~VN7)에게 전송할 C2V 메시지를 생성할 수 있다. 체크 노드들(CN1~CN3)은 각각에 연결된 가변 노드들(VN1~VN7)에게 C2V 메시지를 전송할 수 있다.
싸이클(cycle)은 하나의 노드에서 에지들(EG)을 거쳐 다시 자신으로 돌아오는 경로(도 9의 굵은 실선)일 수 있다. 예를 들면, 가변 노드들(VN1~VN7)중에서 선택된 노드들과 체크 노드들(CN1~CN3) 사이의 모든 메시지 전송 경로를 싸이클이라 한다.
도 10은 도 8에 도시된 패리티 체크 행렬을 이용하여 심볼(symbol)을 생성하는 방법을 설명하기 위한 도면이고, 도 11은 본 발명의 실시 예에 따른 심볼들 및 UCN(unsatisfied check node)을 설명하기 위한 도면이다.
도 10 및 도 11을 참조하면, 패리티 체크 행렬(도 8의 H)과 i 번째 반복에 대응하는 가변 노드 벡터(Ci1~Ci7)의 전치 행렬(CiT)을 기반으로 심볼들(Si1~Si3)이 생성될 수 있다.
모든 심볼들(Si1, Si2, Si3)이 ‘0’을 나타내는 경우, 이는 신드롬 체크 동작이 패스(pass)하였음을 의미하며, 해당 반복에서 에러 정정 디코딩이 성공되었음을 의미한다. 따라서, 코드워드에 대한 반복 복호 동작은 종료되고, i 번째 반복에 대응하는 가변 노드 벡터(Ci1~Ci7)가 메시지(MSG)로서 출력될 수 있다.
만약, 신드롬(SDR)의 모든 심볼들(Si1, Si2, Si3) 중 적어도 하나의 심볼이 0이 아닌 경우, 이는 신드롬 체크 동작이 페일(fail)되었음을 의미한다. 이는 해당 반복에서 에러 정정 디코딩이 실패하였음을 의미하므로, 최대 반복 횟수에 도달하지 않은 경우라면 다음 반복 복호 동작이 수행될 수 있다. 여기서, 0이 아닌 심볼은 UCN을 나타낸다. 예를 들면, 신드롬에 포함된 심볼들 중에서 1에 해당하는 심볼이 두 개 포함되면 UCN 값(UCN#)은 2가 되고, 다음에 생성된 신드롬 에서 1에해당하는 심볼이 하나 포함되면 UCN 값(UCN#)은 1이 되므로, 누적된 UCN 값(UCN#)은 3이 될 수 있다.
도 12 및 도 13은 본 발명의 일 실시 예에 따른 에러 정정 디코딩 동작의 속도를 조절하는 방법을 설명하기 위한 도면들이다.
도 12를 참조하면, 일 실시 예에서는 반복 복호 동작을 진행시키는 클럭(clock)의 주기(frequency)가 조절될 수 있다. 예를 들면, 제1 가변 노드(VN1)에서 제1 체크 노드(CN1)로 에러 정정 메시지를 전송할 때 제1 연산(C1)이 수행될 수 있고, 제1 체크 노드(CN1)에서 제2 가변 노드(VN2)로 에러 정정 메시지를 정송할 때 제2 연산(C2)이 수행될 수 있다. 이러한 순서로 제1 내지 제6 연산들(C1~C6)이 하나의 싸이클 내에서 순차적으로 수행되는 경우, 제1 내지 제6 연산들(C1~C6)은 클럭(CLK)에 동기하여 순차적으로 수행될 수 있다.
도 13을 참조하면, 제1 클럭(1CLK), 제1 UCN 값(UCN1) 및 제1 반복 횟수(ITR1)가 기준 값으로 설정된 경우, 제1 반복 복호 동작에서 수행되는 제1 내지 제6 연산들(C1~C6)은 제1 클럭(1CLK)에 동기하여 순차적으로 수행될 수 있다.
예를 들면, 제1 코드워드에 대한 반복 복호 동작의 결과, UCN 값(UCN#) 및 반복 횟수(ITR#)가 제1 UCN 값(UCN1) 및 제1 반복 횟수(ITR1)보다 큰 제2 UCN 값(UCN2) 및 제2 반복 횟수(ITR2)로 검출되면, 이는 검출된 에러의 개수가 기준 개수보다 많다는 것을 의미한다. 이러한 경우, 제1 코드워드 이후에 입력되는 제2 코드워드에 대한 반복 복호 동작의 신뢰도를 향상시키고 파워(power) 소모를 감소시키기 위하여, 제1 클럭(1CLK)의 제1 주기(F1)보다 긴 제2 주기(F2)를 가지는 제2 클럭(2CLK)이 설정될 수 있다. 따라서, 제2 코드워드에 대한 반복 복호 동작은 제2 클럭(2CLK)에 동기하여 이전보다 느리게 수행될 수 있다.
제1 코드워드에 대한 반복 복호 동작의 결과, UCN 값(UCN#) 및 반복 횟수(ITR#)가 제1 UCN 값(UCN1) 및 제1 반복 횟수(ITR1)보다 작은 제3 UCN 값(UCN3) 및 제3 반복 횟수(ITR3)로 검출되면, 이는 검출된 에러의 개수가 기준 개수보다 적다는 것을 의미한다. 이러한 경우, 제1 코드워드 이후에 입력되는 제2 코드워드에 대한 반복 복호 동작에서는 동작 속도를 이전보다 빠르게 하기 위하여, 제1 클럭(1CLK)의 제1 주기(F1)보다 짧은 제3 주기(F3)를 가지는 제3 클럭(3CLK)이 설정될 수 있다. 따라서, 제2 코드워드에 대한 반복 복호 동작은 제3 클럭(3CLK)에 동기하여 이전보다 빠르게 수행될 수 있다.
도 14 및 도 15는 본 발명의 다른 실시 예에 따른 에러 정정 디코딩 동작의 속도를 조절하는 방법을 설명하기 위한 도면들이다.
도 14 및 도 15를 참조하면, UCN 값(UCN#) 및 반복 횟수(ITR#)가 증가하면, 반복 복호 동작의 각 연산에서 처리하는 비트의 개수가 증가할 수 있다. 예를 들면, 제1 코드워드에 대한 반복 복호 동작 시 1 싸이클(1CYC) 당 처리되는 비트의 개수가 N개라고 가정한다. 도 14에 도시된 실시 예에서 N은 3이지만, 이는 본 실시예의 설명을 위한 예이므로 변경될 수 있다.
도 14에 도시된 실시 예에서 1 싸이클에서 처리되는 비트가 3개(VN1, VN2, VN4)인 경우, 제1 코드워드에 대한 반복 복호 동작의 결과, UCN 값(UCN#) 및 반복 횟수(ITR#)가 제1 UCN 값(UCN1) 및 제1 반복 횟수(ITR1)보다 큰 제2 UCN 값(UCN2) 및 제2 반복 횟수(ITR2)로 검출되면, 제1 코드워드 이후에 입력되는 제2 코드워드에 대한 반복 복호 동작에서는 비트(15)가 추가되어 1 싸이클(1CYC) 당 M(M은 N보다 큰 양의 정수) 비트가 처리될 수 있다.
도 16는 본 발명의 실시 예에 따른 메모리 시스템을 설명하기 위한 도면이다.
도 16을 참조하면, 메모리 시스템(2000)은 데이터가 저장되는 메모리 장치(2100), 메모리 장치(2100)와 호스트(3000) 사이에서 통신하는 컨트롤러(2200)를 포함할 수 있다.
메모리 장치(2100)는 데이터를 저장할 수 있는 복수의 메모리 블록들을 포함하며, 메모리 블록들은 휘발성 메모리 셀들 또는 비휘발설 메모리 셀들을 포함할 수 있다. 메모리 장치(2100)는 채널(channel)을 통해 컨트롤러(2200)와 통신할 수 있다. 예를 들면, 메모리 장치(2100)는 컨트롤러(2200)에서 출력되는 커맨드에 응답하여 다양한 동작들을 수행할 수 있다. 예를 들면, 프로그램 동작 시, 컨트롤러(2200)에서 출력된 프로그램 커맨드 및 코드워드를 수신받고, 프로그램 커맨드에 응답하여 코드워드를 선택된 메모리 블록에 저장할 수 있다. 또한, 메모리 장치(2100)는 컨트롤러(2200)에서 출력된 리드 커맨드와 어드레스에 응답하여, 선택된 메모리 블록으로부터 리드된 데이터(예컨대, 코드워드)를 컨트롤러(2200)에게 출력할 수 있다.
컨트롤러(2200)는 호스트(3000)와 메모리 장치(2100) 사이에서 통신할 수 있다. 컨트롤러(2200)는 호스트(3000)의 요청(request)에 따라 메모리 장치(2100)를 제어하거나, 호스트(3000)의 요청이 없더라도 메모리 시스템(2000)의 성능 개선을 위한 백그라운드 동작을 수행할 수 있다.
호스트(3000)는 다양한 동작을 위한 요청들을 생성하고, 생성된 요청들을 메모리 시스템(2000)에게 출력할 수 있다. 예를 들면, 요청들은 프로그램 동작(program operation)을 제어할 수 있는 프로그램 요청(program request), 리드 동작(read operation)을 제어할 수 있는 리드 요청(read request), 소거 동작(erase operation)을 제어할 수 있는 소거 요청(erase request) 등을 포함할 수 있다. 호스트(3000)는 PCIe(Peripheral Component Interconnect Express), ATA(Advanced Technology Attachment), SATA(Serial ATA), PATA(Parallel ATA), SAS(serial attached SCSI), NVMe(Non-Volatile Memory Express), USB(Universal Serial Bus), MMC(Multi-Media Card), ESDI(Enhanced Small Disk Interface), 또는 IDE(Integrated Drive Electronics) 등과 같은 다양한 인터페이스들을 통해 메모리 시스템(2000)과 통신할 수 있다.
도 17은 도 16에 도시된 메모리 장치를 설명하기 위한 도면이다.
도 17을 참조하면, 메모리 장치(2100)는 데이터가 저장되는 메모리 셀 어레이(Memory Cell Array; 300)와, 프로그램, 리드 또는 소거 동작을 수행하는 주변 회로들(310~350)과, 주변 회로들(310~350)을 제어하는 제어 로직 회로(control logic circuit; LOGCON; 370)를 포함할 수 있다.
메모리 셀 어레이(300)는 데이터가 저장되는 복수의 메모리 블록들(MB1~MBk; k는 양의 정수)을 포함할 수 있다. 메모리 블록들(MB1~MBk) 각각은 복수의 메모리 셀들을 포함하며, 메모리 셀들은 기판에 평행하게 배열되는 2차원 구조 또는 기판에 수직 방향으로 적층되는 3차원 구조로 구현될 수 있다.
주변 회로들(310~350)은 전압 생성부(voltage generator; VGEN; 310), 로우 디코더(row decoder; RDEC; 320), 페이지 버퍼 그룹(page buffer group; PBG; 330), 컬럼 디코더(column decoder; CDEC; 340) 및 입출력 회로(input/output circuit; IOC; 350)를 포함할 수 있다.
전압 생성부(310)는 동작 코드(OPc)에 응답하여, 다양한 동작들에 필요한 동작 전압들(Vop)을 생성하고 출력할 수 있다. 예를 들면, 전압 생성부(310)는 프로그램 전압, 검증 전압, 리드 전압, 패스 전압 및 소거 전압 등을 생성하고 출력할 수 있다. 프로그램 동작 시, 본 실시 예에 따른 전압 생성부(310)는 동작 코드(OPc)에 따라 프로그램 전압 및 검증 전압의 레벨들을 조절할 수 있다.
로우 디코더(320)는 로우 어드레스(RADD)에 따라 메모리 셀 어레이(300)에 포함된 메모리 블록들 중에서 하나의 메모리 블록을 선택하고, 선택된 메모리 블록에 동작 전압들(Vop)을 전송할 수 있다.
페이지 버퍼 그룹(330)은 비트 라인들(bit lines)을 통해 메모리 셀 어레이(300)에 연결될 수 있다. 예를 들면, 페이지 버퍼 그룹(330)은 비트 라인들 각각에 연결된 페이지 버퍼들을 포함할 수 있다. 페이지 버퍼들은 페이지 버퍼 제어 신호들(PBSIG)에 응답하여 동시에 동작할 수 있으며, 프로그램 또는 리드 동작 시 데이터를 임시로 저장할 수 있다. 이를 위해, 페이지 버퍼들 각각은 데이터를 임시로 저장하기 위한 복수의 래치들(latches)을 포함할 수 있다. 래치들의 개수는 프로그램 방식에 따라 달라질 수 있다. 예를 들면, 페이지 버퍼들은 하나의 메모리 셀에 저장될 수 있는 비트의 개수에 따라 다르게 설계될 수 있으며, 검증 동작 시 사용되는 검증 전압의 개수에 따라 다르게 설계될 수도 있다. 또한, 검증 전압들은 동일한 목표전압으로 프로그램될 메모리 셀의 다양한 문턱전압을 판단하기 위하여 사용될 수 있다.
컬럼 디코더(340)는 컬럼 어드레스(CADD)에 따라, 입출력 회로(350) 및 페이지 버퍼 그룹(330) 사이에서 데이터를 순차적으로 전송할 수 있다.
입출력 회로(350)는 입출력 라인들(IO)을 통해 컨트롤러(2200)에 연결될 수 있다. 입출력 회로(350)는 입출력 라인들(IO)을 통해 커맨드(CMD), 어드레스(ADD) 및 데이터(DATA)를 입력 또는 출력할 수 있다. 예를 들면, 입출력 회로(350)는 입출력 라인들(IO)을 통해 수신된 커맨드(CMD) 및 어드레스(ADD)를 제어 로직 회로(360)에 전송할 수 있고, 입출력 라인들(IO)을 통해 수신된 데이터를 페이지 버퍼 그룹(330)으로 전송할 수 있다. 입출력 회로(350)는 페이지 버퍼 그룹(330)으로부터 수신된 데이터를 입출력 라인들(IO)을 통해 컨트롤러(2200)로 출력할 수 있다.
제어 로직 회로(360)는 커맨드(CMD) 및 어드레스(ADD)에 응답하여, 동작 코드(OPc), 로우 어드레스(RADD), 페이지 버퍼 제어 신호들(PBSIG) 및 컬럼 어드레스(CADD)를 출력할 수 있다. 예를 들면, 제어 로직 회로(360)는 커맨드(CMD)에 따라 실행되는 알고리즘과 같은 소프트웨어를 포함할 수 있고, 알고리즘에 따라 다양한 코드 또는 신호들을 출력하기 위한 하드웨어를 포함할 수 있다.
도 18은 도 16에 도시된 컨트롤러를 설명하기 위한 도면이다.
도 18을 참조하면, 컨트롤러(2200)는 버스(bus; 276)를 통해 서로 통신하는 중앙 처리 장치(central processing unit; CPU; 210), 내부 메모리(internal memory; 220), 백그라운드 동작 매니저(BKOP manager; 230), 에러 정정 회로(error correction circuit; ECC; 1000), 호스트 인터페이스(host I/F; 250) 및 메모리 인터페이스(memory I/F; 260)를 포함할 수 있다.
중앙 처리 장치(210)는 호스트(도 16의 3000)의 요청(RQ)에 따라 메모리 장치(도 16의 2100)를 제어할 수 있다. 예를 들면, 중앙 처리 장치(210)는 호스트(3000)로부터 요청(RQ)이 수신되면, 수신된 요청에 응답하여 메모리 장치(2100)를 제어하기 위한 프로그램, 리드 또는 소거 등의 커맨드(command)와 어드레스를 조합하여 커맨드 셋(command set)을 생성할 수 있다. 중앙 처리 장치(210)는 호스트(3000)의 요청이 없는 경우, 메모리 시스템(도 16의 2000)의 성능을 개선시키기 위하여 백그라운드 동작 매니저(230)를 제어하여 백그라운드 동작을 수행할 수 있다.
내부 메모리(220)는 컨트롤러(2200)의 동작에 필요한 다양한 데이터를 임시로 저장하거나, 프로그램 또는 리드 동작 시 데이터를 임시로 저장할 수도 있다. 예를 들면, 내부 메모리(220)는 DRAM, SRAM 또는 비휘발성(non-volatile) 메모리 등으로 구현될 수 있다. 내부 메모리(220)는 메모리 시스템(2000)의 동작에 필요한 다양한 어드레스들을 저장할 수 있고, 각 어드레스에 대응되는 메모리 블록들의 다양한 상태 정보를 저장 및 업데이트할 수 있다. 예를 들면, 내부 메모리(220)는 논리 어드레스와 물리 어드레스의 맵핑 테이블을 저장할 수 있고, 중앙 처리 장치(210)의 요청에 따라 선택된 어드레스를 출력할 수 있다.
백그라운드 동작 매니저(230)는 중앙 처리 장치(210)의 요청에 따라 가비지 콜렉션(garbage collection) 및 웨어 레벨링(wear leveling) 등의 백그라운드 동작을 위한 커맨드를 출력할 수 있다.
에러 정정 회로(1000)는 도 1에 도시된 바와 같이 구성될 수 있으며, 상술한 실시 예들과 같은 에러 정정 동작을 수행할 수 있다. 예를 들면, 에러 정정 회로(1000)는 프로그램 동작 시 호스트(3000)로부터 수신된 데이터(예컨대, 메시지)를 인코딩하여 코드워드를 출력할 수 있고, 리드 동작 시 메모리 장치(2100)로부터 수신된 데이터(예컨대, 코드워드)를 디코딩(decoding)하여 메시지를 출력할 수 있다. 인코딩 및 디코딩 시 LDPC(Low Density Parity Check) 코드가 이용될 수 있으며, LDPC 코드 외에도 다양한 종류의 코드들을 이용한 에러 정정 동작이 수행될 수 있다.
호스트 인터페이스(250)는 컨트롤러(2200)와 호스트(3000) 사이에서 요청(request), 어드레스(address) 및 데이터 등을 주고받을 수 있다. 예를 들면, 호스트 인터페이스(250)는 PCIe(Peripheral Component Interconnect Express), ATA(Advanced Technology Attachment), SATA(Serial ATA), PATA(Parallel ATA), SAS(serial attached SCSI), NVMe(Non-Volatile Memory Express), USB(Universal Serial Bus), MMC(Multi-Media Card), ESDI(Enhanced Small Disk Interface) 또는 IDE(Integrated Drive Electronics) 등과 같은 다양한 인터페이스들을 포함할 수 있다.
메모리 인터페이스(260)는 컨트롤러(2200)와 메모리 장치(2100) 사이에서 커맨드, 어드레스 및 데이터 등을 주고받을 수 있다. 예를 들면, 메모리 인터페이스(260)는 채널들을 통해 메모리 장치(2100)와 통신할 수 있다.
1000: 에러 정정 회로 1100: 에러 정정 인코더
1200: 에러 정정 디코더 1300: 에러 정정 프로세서
110: 반복 연산부 120: 신드롬 체크부
21: 연산부 22: 속도 선택부
23: 신드롬 생성부 24: 레지스터
31: 행렬 연산부 32: 클럭 제어부
33: 비트 제어부 41: 판단부
42: 클럭 매니저 43: 비트 매니저
51: 신드롬 디코더 52: 카운터

Claims (20)

  1. 제1 코드워드에 대한 반복 복호 동작을 수행하여 에러 정정 메시지를 출력하는 연산부;
    상기 에러 정정 메시지와 패리티 체크 행렬을 연산하여 신드롬을 생성하고, 상기 반복 복호 동작이 수행된 반복 횟수와 상기 신드롬에 포함된 UCN(unsatisfied check node) 값을 출력하는 신드롬 생성부; 및
    상기 반복 횟수 및 상기 UCN 값에 따라 상기 반복 복호 동작의 속도를 조절하기 위한 속도 코드를 출력하는 속도 선택부를 포함하고,
    상기 연산부는 상기 속도 코드에 따라 상기 반복 복호 동작의 속도를 재설정하고, 제2 코드워드가 입력되면 재설정된 속도에 따라 상기 반복 복호 동작을 수행하는 에러 정정 디코더.
  2. 제1항에 있어서, 상기 연산부는,
    상기 제1 코드워드와 상기 패리티 체크 행렬을 사용한 복수의 연산 동작들을 포함하는 상기 반복 복호 동작을 수행하는 행렬 연산부;
    상기 속도 코드에 포함된 제1 속도 코드에 응답하여 상기 반복 복호 동작을 진행시키는 클럭을 조절하는 클럭 제어부; 및
    상기 속도 코드에 포함된 제2 속도 코드에 응답하여 상기 반복 복호 동작의 싸이클 당 처리되는 비트의 개수를 조절하는 비트 제어부를 포함하는 에러 정정 디코더.
  3. 제1항에 있어서, 상기 신드롬 생성부는,
    상기 에러 정정 메시지를 상기 패리티 체크 행렬과 연산하여 상기 신드롬을 생성하고, 상기 신드롬에서 UCN이 검출되지 않으면 상기 메시지를 출력하고, 상기 신드롬에서 상기 UCN이 검출되면 페일 신호를 출력하는 신드롬 디코더; 및
    상기 페일 신호가 출력될 때 상기 UCN 값 및 상기 반복 횟수를 누적하여 카운트하고, 상기 메시지가 출력될 때 누적된 상기 UCN 값 및 상기 반복 횟수를 출력하는 카운터를 포함하는 에러 정정 디코더.
  4. 제3항에 있어서,
    상기 UCN 값은 상기 신드롬에서 검출된 상기 UCN의 개수인 에러 정정 디코더.
  5. 제3항에 있어서,
    상기 신드롬 디코더는 상기 페일 신호를 상기 연산부로 전송하고,
    상기 연산부는 상기 페일 신호에 응답하여 상기 반복 복호 동작을 재 수행하는 에러 정정 디코더.
  6. 제2항에 있어서, 상기 속도 선택부는,
    상기 반복 복호 동작의 반복 횟수 및 상기 UCN 값을 이전 값 또는 기준 값과 각각 비교하는 판단부;
    상기 판단부의 제어에 따라, 상기 반복 복호 동작의 클럭의 주기를 변경하기 위한 상기 제1 속도 코드를 출력하는 클럭 매니저; 및
    상기 판단부의 제어에 따라, 상기 반복 복호 동작의 싸이클 당 처리되는 비트의 개수를 변경하기 위한 상기 제2 속도 코드를 출력하는 비트 매니저를 포함하는 에러 정정 디코더.
  7. 제6항에 있어서, 상기 클럭 매니저는,
    상기 반복 횟수 및 상기 UCN 값이 상기 이전 값 또는 상기 기준 값보다 크면, 상기 반복 복호 동작의 속도가 이전보다 느려지도록 상기 제1 및 제2 속도 코드들을 출력하는 에러 정정 디코더.
  8. 제7항에 있어서,
    상기 반복 복호 동작의 속도가 이전보다 느려지도록 하는 상기 제1 속도 코드는 상기 클럭의 주기를 증가시키는 코드를 포함하고,
    상기 반복 복호 동작의 속도가 이전보다 느려지도록 하는 상기 제2 속도 코드는 상기 싸이클 당 처리되는 비트의 개수를 증가시키는 코드를 포함하는 에러 정정 디코더.
  9. 제6항에 있어서, 상기 클럭 매니저는,
    상기 반복 횟수 및 상기 UCN 값이 상기 이전 값 또는 상기 기준 값보다 작으면, 상기 반복 복호 동작의 속도가 이전보다 빨라지도록 상기 제1 및 제2 속도 코드들을 출력하는 에러 정정 디코더.
  10. 제9항에 있어서,
    상기 반복 복호 동작의 속도가 이전보다 빨라지도록 하는 상기 제1 속도 코드는 상기 클럭의 주기를 감소시키는 코드를 포함하고,
    상기 반복 복호 동작의 속도가 이전보다 빨라지도록 하는 상기 제2 속도 코드는 상기 싸이클 당 처리되는 비트의 개수를 감소시키는 코드를 포함하는 에러 정정 디코더.
  11. 호스트로부터 수신된 메시지를 인코딩하여 코드워드를 생성하고, 상기 코드워드를 메모리장치로 전송하는 에러 정정 인코더; 및
    상기 메모리 장치로부터 상기 코드워드를 수신받고, 상기 코드워드에 대한 디코딩 동작을 수행하여 상기 메시지를 출력하되, 이전 코드워드에 대한 상기 디코딩 동작의 결과에 따라 다음 코드워드에 대한 상기 디코딩 동작의 속도를 조절하는 에러 정정 디코더를 포함하는 에러 정정 회로.
  12. 제11항에 있어서,
    상기 에러 정정 디코더는 상기 코드워드에 대한 상기 디코딩 동작으로써 반복 복호 동작 및 신드롬 체크 동작을 수행하는 에러 정정 회로.
  13. 제12항에 있어서, 상기 에러 정정 디코더는,
    상기 반복 복호 동작을 수행하는 반복 연산부; 및
    상기 신드롬 체크 동작을 수행하는 신드롬 체크부를 포함하는 에러 정정 회로.
  14. 제13항에 있어서,
    상기 반복 연산부는 상기 반복 복호 동작을 수행하여 상기 에러 정정 메시지를 출력하는 연산부와, 상기 반복 복호 동작의 속도를 조절하기 위한 속도 코드를 출력하는 속도 선택부를 포함하고,
    상기 신드롬 체크부는 상기 에러 정정 메시지에 따라 신드롬을 생성하고, 상기 신드롬에 포함된 심볼들(symbols)에 UCN(unsatisfied check node)이 포함되지 않지 않으면 상기 메시지를 포함하고, 상기 UCN이 포함되어 있으면 페일 신호를 출력하는 신드롬 생성부와, 상기 신드롬 생성부에서 카운트된 상기 UCN의 개수에 해당되는 UCN 값 및 상기 반복 복호 동작이 반복되는 횟수에 해당되는 반복 횟수를 저장 및 출력하는 레지스터를 포함하는 에러 정정 회로.
  15. 제14항에 있어서, 상기 연산부는,
    제1 코드워드와 패리티 체크 행렬을 사용하여 상기 반복 복호 동작을 수행하고, 상기 반복 복호 동작의 결과로서 상기 에러 정정 메시지를 출력하는 행렬 연산부; 및
    상기 속도 코드에 포함된 제1 속도 코드에 응답하여 상기 반복 복호 동작을 진행시키는 클럭을 조절하는 클럭 제어부; 및
    상기 속도 코드에 포함된 제2 속도 코드에 응답하여 상기 반복 복호 동작의 싸이클 당 처리되는 비트의 개수를 조절하는 비트 제어부를 포함하는 에러 정정 회로.
  16. 제15항에 있어서, 상기 속도 선택부는,
    상기 반복 횟수 및 상기 UCN 값을 이전 값 또는 기준 값과 각각 비교하는 판단부;
    상기 판단부의 제어에 따라, 상기 클럭의 주기를 변경하기 위한 상기 제1 속도 코드를 출력하는 클럭 매니저; 및
    상기 판단부의 제어에 따라, 상기 반복 복호 동작의 싸이클 당 처리되는 비트의 개수를 변경하기 위한 상기 제2 속도 코드를 출력하는 비트 매니저를 포함하는 에러 정정 회로.
  17. 제14항에 있어서, 상기 신드롬 생성부는,
    상기 에러 정정 메시지를 패리티 체크 행렬과 연산하여 상기 신드롬을 생성하고, 상기 신드롬에서 상기 UCN이 검출되지 않으면 상기 메시지를 출력하고, 상기 신드롬에서 상기 UCN이 검출되면 상기 페일 신호를 출력하는 신드롬 디코더; 및
    상기 페일 신호가 출력될 때 상기 UCN 값 및 상기 반복 횟수를 누적하여 카운트하고, 상기 메시지가 출력될 때 누적된 상기 UCN 값 및 상기 반복 횟수를 출력하는 카운터를 포함하는 에러 정정 회로.
  18. 제14항에 있어서, 상기 레지스터는,
    상기 UCN 값 및 상기 반복 횟수를 순차적으로 저장 및 출력하고,
    상기 메시지가 출력되면 리셋되는 에러 정정 회로.
  19. 제11항에 있어서, 상기 에러 정정 디코더는,
    상기 이전 코드워드에 대한 상기 디코딩 동작의 결과, 에러 비트의 개수가 이전 값 또는 기준 값보다 많으면 다음 코드워드에 대한 상기 디코딩 동작의 속도를 이전 또는 기준보다 느리게 조절하고,
    상기 이전 코드워드에 대한 상기 디코딩 동작의 결과, 상기 에러 비트의 개수가 상기 이전 값 또는 상기 기준 값보다 적으면 상기 다음 코드워드에 대한 상기 디코딩 동작의 속도를 상기 이전 또는 기준보다 빠르게 조절하는 에러 정정 회로.
  20. 제1 코드워드와 패리티 체크 행렬을 사용한 반복 복호 동작을 수행하여 에러 정정 메시지를 출력하는 단계;
    상기 에러 정정 메시지와 상기 패리티 체크 행렬을 연산하여 신드롬을 생성하는 단계;
    상기 신드롬에 UCN(unsatisfied check node)이 포함되어 있는지를 체크하는 단계;
    상기 신드롬에 상기 UCN이 포함되어 있으면, 상기 UCN의 개수에 대응되는 UCN 값과, 상기 반복 복호 동작이 수행된 횟수에 대응되는 반복 횟수를 누적하여 카운트하는 단계;
    카운트된 상기 UCN 값과 상기 반복 횟수에 따라 상기 반복 복호 동작의 속도를 재설정하는 단계;
    상기 신드롬에 상기 UCN이 포함되어 있지 않으면, 상기 신드롬을 생성할 때 사용된 전치 행렬의 값들을 메시지로써 출력하는 단계; 및
    재설정된 상기 속도에 따라 제2 코드워드와 상기 패리티 체크 행렬을 사용한 상기 반복 복호 동작을 수행하는 단계를 포함하는 에러 정정 디코더의 동작 방법.
KR1020200056657A 2020-05-12 2020-05-12 에러 정정 디코더, 이를 포함하는 에러 정정 회로 및 에러 정정 디코더의 동작 방법 KR20210138390A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020200056657A KR20210138390A (ko) 2020-05-12 2020-05-12 에러 정정 디코더, 이를 포함하는 에러 정정 회로 및 에러 정정 디코더의 동작 방법
US17/066,618 US11515898B2 (en) 2020-05-12 2020-10-09 Error correction decoder, error correction circuit having the same, and method of operating the same
CN202110194285.7A CN113658618B (zh) 2020-05-12 2021-02-20 错误校正解码器、具有其的错误校正电路及操作其的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200056657A KR20210138390A (ko) 2020-05-12 2020-05-12 에러 정정 디코더, 이를 포함하는 에러 정정 회로 및 에러 정정 디코더의 동작 방법

Publications (1)

Publication Number Publication Date
KR20210138390A true KR20210138390A (ko) 2021-11-19

Family

ID=78476958

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200056657A KR20210138390A (ko) 2020-05-12 2020-05-12 에러 정정 디코더, 이를 포함하는 에러 정정 회로 및 에러 정정 디코더의 동작 방법

Country Status (3)

Country Link
US (1) US11515898B2 (ko)
KR (1) KR20210138390A (ko)
CN (1) CN113658618B (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11949429B2 (en) * 2022-07-19 2024-04-02 Macronix International Co., Ltd. Memory device, error correction device and error correction method thereof

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8347195B1 (en) * 2009-01-22 2013-01-01 Marvell International Ltd. Systems and methods for near-codeword detection and correction on the fly
US8429498B1 (en) 2009-03-25 2013-04-23 Apple Inc. Dual ECC decoder
KR101678917B1 (ko) 2010-09-16 2016-11-24 삼성전자주식회사 디코더, 이의 동작방법, 및 이를 포함하는 장치들
US9454414B2 (en) * 2013-03-15 2016-09-27 Microsemi Storage Solutions (Us), Inc. System and method for accumulating soft information in LDPC decoding
TWI550628B (zh) 2014-07-16 2016-09-21 群聯電子股份有限公司 解碼方法、記憶體儲存裝置及記憶體控制電路單元
US9768807B2 (en) * 2015-08-31 2017-09-19 Sandisk Technologies Llc On-the-fly syndrome and syndrome weight computation architecture for LDPC decoding
US9811418B2 (en) * 2015-10-26 2017-11-07 Sandisk Technologies Llc Syndrome-based codeword decoding
KR20170101368A (ko) * 2016-02-26 2017-09-06 에스케이하이닉스 주식회사 에러 정정 회로 및 에러 정정 방법
TWI612527B (zh) 2016-04-08 2018-01-21 群聯電子股份有限公司 解碼方法、記憶體儲存裝置及記憶體控制電路單元
US10447301B2 (en) * 2017-09-13 2019-10-15 Toshiba Memory Corporation Optimal LDPC bit flip decision
KR102475279B1 (ko) * 2017-12-18 2022-12-07 삼성전자주식회사 컨볼루션 타입의 저밀도 패리티 체크 코드를 이용하여 인코딩 및 디코딩을 수행하는 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법

Also Published As

Publication number Publication date
CN113658618A (zh) 2021-11-16
US20210359710A1 (en) 2021-11-18
US11515898B2 (en) 2022-11-29
CN113658618B (zh) 2023-03-17

Similar Documents

Publication Publication Date Title
KR102559925B1 (ko) Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법
US11050438B2 (en) Memory controller
US11309916B2 (en) Error correction circuit and memory controller having the same
US11031952B2 (en) Error correction decoder and memory system having the same
KR102588969B1 (ko) 오류 정정 디코더 및 이를 포함하는 메모리 시스템
KR20160090054A (ko) 플래시 메모리 시스템 및 그의 동작 방법
CN111756385A (zh) 错误校正解码器
CN112860474B (zh) 快速收敛的低密度奇偶校验码的软位翻转解码器
CN113658618B (zh) 错误校正解码器、具有其的错误校正电路及操作其的方法
KR102605633B1 (ko) 컨트롤러 및 그것의 동작 방법
US11804857B2 (en) Electronic device
WO2018119900A1 (zh) 数据读取方法及闪存设备
US10826531B2 (en) Error correction circuit and operating method thereof
KR20200124054A (ko) 오류 정정 디코더 및 이를 포함하는 메모리 시스템
CN110971240A (zh) 解码器设计方法与存储控制器
TWI829252B (zh) 低密度奇偶校檢碼的解碼方法及電腦程式產品及裝置
TWI804359B (zh) 低密度奇偶校檢碼的解碼方法及裝置
KR102668208B1 (ko) Ldpc 디코더, ldpc 디코더의 동작 방법 및 반도체 메모리 시스템
CN117335814A (zh) 低密度奇偶校检码的译码方法和装置
CN117472643A (zh) 低密度奇偶校检码的译码方法、存储介质和装置
KR20210100357A (ko) Ldpc 디코더, ldpc 디코더의 동작 방법 및 반도체 메모리 시스템
KR20210143581A (ko) 컨트롤러 및 이를 포함하는 메모리 시스템
CN117707833A (zh) 不规则ldpc码的动态缩放因子更改
CN110795268A (zh) 比特判断方法、存储器控制电路单元以及存储器存储装置

Legal Events

Date Code Title Description
A201 Request for examination