KR102543059B1 - 저밀도 패리티 체크 코드의 디코딩 방법, 이를 수행하는 디코더 및 시스템 - Google Patents

저밀도 패리티 체크 코드의 디코딩 방법, 이를 수행하는 디코더 및 시스템 Download PDF

Info

Publication number
KR102543059B1
KR102543059B1 KR1020170156549A KR20170156549A KR102543059B1 KR 102543059 B1 KR102543059 B1 KR 102543059B1 KR 1020170156549 A KR1020170156549 A KR 1020170156549A KR 20170156549 A KR20170156549 A KR 20170156549A KR 102543059 B1 KR102543059 B1 KR 102543059B1
Authority
KR
South Korea
Prior art keywords
decoding
reliability
sub
parity check
block
Prior art date
Application number
KR1020170156549A
Other languages
English (en)
Other versions
KR20190059028A (ko
Inventor
이명규
김재홍
이기준
공준진
손홍락
임세진
황영준
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020170156549A priority Critical patent/KR102543059B1/ko
Priority to US16/024,017 priority patent/US10623019B2/en
Priority to CN201811397209.0A priority patent/CN109818626B/zh
Publication of KR20190059028A publication Critical patent/KR20190059028A/ko
Application granted granted Critical
Publication of KR102543059B1 publication Critical patent/KR102543059B1/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/1128Judging correct decoding and iterative stopping criteria other than syndrome check and upper limit for decoding iterations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • 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/1131Scheduling of bit node or check node processing
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • 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
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents

Landscapes

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

Abstract

저밀도 패리티 체크 코드의 패리티 체크 매트릭스를 복수의 서브 블록들로 분할한다. 복수의 디코딩 이터레이션들(decoding iterations)의 각각에 대해서, 상기 복수의 서브 블록들 중에서 현재의 디코딩 이터레이션(present decoding iteration)에 상응하는 디코딩 스케쥴에 따른 타겟 서브 블록들의 각각에 대하여 노드 연산을 수행한다. 상기 노드 연산의 결과에 기초하여 상기 타겟 서브 블록들의 각각에 대한 신뢰도(reliability)를 추정한다. 상기 신뢰도에 기초하여 차후의 디코딩 이터레이션들(subsequent decoding iterations)을 위한 상기 디코딩 스케쥴을 조절한다. 신뢰도에 기초한 적응적 디코딩 스케쥴을 통해 디코딩 시간 및 전력 소모를 감소한다.

Description

저밀도 패리티 체크 코드의 디코딩 방법, 이를 수행하는 디코더 및 시스템{Method of decoding low density parity check (LDPC) code, decoder and system performing the same}
본 발명은 반도체 집적 회로에 관한 것으로서, 더욱 상세하게는 저밀도 패리티 체크 코드의 디코딩 방법, 이를 수행하는 디코더 및 시스템에 관한 것이다.
오류 정정 부호 또는 에러 체크 및 정정(ECC, error correction code or error check and correction)은 디지털 통신 및 데이터 스토리지 시스템의 필수적인 요소로서 강건한(robust) 정보 전달을 위해 요구된다. 저밀도 패리티 체크(LDPC, low density parity check) 코드는 섀논 한계에 근접하는(near-Shannon limit) 정정 능력을 갖는 코드들 중 하나로서, WLAN (802.11n), WiMAX (802.16e), DVB-S2, CMMB, and 10GBaseT (802.3an), 메모리 시스템들과 같은 다양한 표준들에서 검토되고 있다. LDPC 코드는 통상적으로 적절한 복잡도를 가지고 최적의 디코딩 성능을 구현하기 위해서 반복적인 프로세싱 루프들(iterative processing loops)에 의해 디코딩된다. 이러한 반복적인 프로세싱 루프들은 디코딩 이터레이션들(iterations)이라고 칭해진다. 디코딩 이터레이션들의 횟수가 증가할수록 디코딩 처리량(decoding throughput)은 감소하고 디코딩 레이턴시(decoding latency)는 증가한다. 디코딩 처리량을 증가시키기 위해서 많은 수의 계산 유닛들을 LDPC 디코더에 포함시킬 수 있다. 그러나 이 경우 점유 면적(또는 칩 사이즈) 및 소모 전력이 증가한다. 패키징 비용의 감소에 대한 요구 및 무선 및 휴대용 컴퓨팅 장치들에 대한 요구의 증대에 따라서 LDPC 디코더의 저전력 구현이 중요한 문제가 되고 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 일 목적은, 효율적으로 에러 체크 및 정정을 수행할 수 있는 저밀도 패리티 체크 코드의 디코딩 방법을 제공하는 것이다.
또한 본 발명의 일 목적은, 효율적으로 에러 체크 및 정정을 수행할 수 있는 저밀도 패리티 체크 디코더를 제공하는 것이다.
또한 본 발명의 일 목적은, 효율적으로 에러 체크 및 정정을 수행할 수 있는 저밀도 패리티 체크 디코더를 포함하는 메모리 시스템을 제공하는 것이다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 저밀도 패리티 체크 코드의 디코딩 방법은, 저밀도 패리티 체크 코드의 패리티 체크 매트릭스를 복수의 서브 블록들로 분할하는 단계, 복수의 디코딩 이터레이션들(decoding iterations)의 각각에 대해서, 상기 복수의 서브 블록들 중에서 현재의 디코딩 이터레이션(present decoding iteration)에 상응하는 디코딩 스케쥴에 따른 타겟 서브 블록들의 각각에 대하여 노드 연산을 수행하는 단계, 상기 노드 연산의 결과에 기초하여 상기 타겟 서브 블록들의 각각에 대한 신뢰도(reliability)를 추정하는 단계 및 상기 신뢰도에 기초하여 차후의 디코딩 이터레이션들(subsequent decoding iterations)을 위한 상기 디코딩 스케쥴을 조절하는 단계를 포함한다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 저밀도 패리티 체크 디코더는 저밀도 패리티 체크 코드의 패리티 체크 매트릭스를 복수의 서브 블록들로 분할하여 복수의 디코딩 이터레이션들(decoding iterations)에 대해 반복적으로 디코딩 동작을 수행한다. 저밀도 패리티 체크 디코더는 상기 복수의 서브 블록들 중에서 현재의 디코딩 이터레이션(present decoding iteration)에 상응하는 디코딩 스케쥴에 따른 타겟 서브 블록들의 각각에 대하여 노드 연산을 수행하는 변수 노드 프로세서와 체크 노드 프로세서, 상기 노드 연산의 결과에 기초하여 상기 타겟 서브 블록들의 각각에 대한 신뢰도(reliability)를 추정하는 신뢰도 추정기 및 상기 신뢰도에 기초하여 차후의 디코딩 이터레이션들(subsequent decoding iterations)을 위한 상기 디코딩 스케쥴을 조절하는 업데이트 매니저를 포함한다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 메모리 시스템은 복수의 메모리 셀들을 포함하는 메모리 장치, 상기 메모리 장치의 동작을 제어하는 메모리 콘트롤러 및 상기 메모리 셀들로부터 독출된 저밀도 패리티 체크 (LDPC, low density parity check) 코드의 패리티 체크 매트릭스(PCM, parity check matrix)를 복수의 서브 블록들로 분할하여 복수의 디코딩 이터레이션들(iterations)에 대해 반복적으로 디코딩 동작을 수행하는 저밀도 패리티 체크 디코더를 포함한다. 상기 저밀도 패리티 체크 디코더는 본 발명의 실시예들에 따라서 상기 디코딩 스케쥴을 적응적으로 조절한다.
본 발명의 실시예들에 따른 저밀도 패리티 체크 코드의 디코딩 방법, 저밀도 패리티 체크 디코더 및 이를 포함하는 메모리 시스템은, 노드 연산의 결과에 기초하여 디코딩 스케쥴을 적응적으로 조절함으로써 디코딩 시간을 감소하고 소모 전력을 감소할 수 있다.
도 1은 본 발명의 실시예들에 따른 저밀도 패리티 체크 코드의 디코딩 방법을 나타내는 순서도이다.
도 2는 본 발명의 실시예들에 따른 저밀도 패리티 체크 디코더를 나타내는 블록도이다.
도 3a, 3b 및 3c는 본 발명의 실시예들에 따른 저밀도 패리티 체크 코드의 디코딩을 위한 패리티 체크 매트릭스를 설명하기 위한 도면들이다.
도 4a 내지 4e는 본 발명의 실시예들에 따른 패리티 체크 매트릭스의 분할 방법을 나타내는 도면들이다.
도 5a 및 5b는 본 발명의 실시예들에 따른 저밀도 패리티 체크 코드의 디코딩 방법을 위한 스케쥴링 테이블을 설명하기 위한 도면들이다.
도 6은 본 발명의 일 실시예에 따른 저밀도 패리티 체크 코드의 디코딩 방법을 나타내는 순서도이다.
도 7은 본 발명의 일 실시예에 따른 신뢰도의 추정 및 디코딩 스케쥴의 조절을 나타내는 순서도이다.
도 8은 본 발명의 다른 실시예에 따른 신뢰도의 추정 및 디코딩 스케쥴의 조절을 나타내는 순서도이다.
도 9a 내지 9f는 도 7 및 8의 디코딩 방법에 의한 스케쥴링 테이블의 업데이트 시퀀스의 일 예를 나타내는 도면들이다.
도 10은 본 발명의 일 실시예에 따른 신뢰도의 추정 및 디코딩 스케쥴의 조절을 나타내는 순서도이다.
도 11a 내지 11e는 도 10의 디코딩 방법에 의한 스케쥴링 테이블의 업데이트 시퀀스의 일 예를 나타내는 도면이다.
도 12는 본 발명의 실시예들에 따른 기준 신뢰도의 설정 방법을 나타내는 도면이다.
도 13은 본 발명의 실시예들에 따른 메모리 시스템을 나타내는 블록도이다.
도 14는 도 13의 메모리 시스템에 포함되는 ECC 디코더의 일 실시예를 나타내는 블록도이다.
도 15a 및 15b는 본 발명의 실시예들에 따른 디코딩 시간의 감소를 설명하기 위한 도면들이다.
도 16은 본 발명의 실시예들에 따른 컴퓨팅 시스템을 나타내는 블록도이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예들에 따른 저밀도 패리티 체크 코드의 디코딩 방법을 나타내는 순서도이다.
도 1을 참조하면, 저밀도 패리티 체크 (LDPC, low density parity check) 코드의 패리티 체크 매트릭스(PCM, parity check matrix)를 복수의 서브 블록들로 분할한다(S10). 이러한 패리티 체크 매트릭스 및 서브 블록의 분할에 대해서는 도 3a 내지 4e를 참조하여 후술한다.
복수의 디코딩 이터레이션들(decoding iterations)의 각각에 대해서, 상기 복수의 서브 블록들 중에서 현재의 디코딩 이터레이션에 상응하는 디코딩 스케쥴에 따른 타겟 서브 블록들의 각각에 대하여 노드 연산(node operation)을 수행한다(S20). LDPC 디코딩 메시지는 로그 우도비(LLR, log likelihood ratio)로 주로 표현되며, LDPC 코드의 상기 노드 연산에 의해서 디코딩 메지가 변화한다. 따라서 이러한 LDPC 디코딩 동작 또는 상기 노드 연산을 "업데이트 동작"이라고 표현할 수 있다. 이러한 노드 연산은 당업자에게 잘 알려진 다양한 방법들에 의해 수행될 수 있으므로 자세한 설명은 생략한다.
상기 노드 연산의 결과에 기초하여 상기 타겟 서브 블록들의 각각에 대한 신뢰도를 추정한다(S30). 일 실시예에서, 도 7을 참조하여 후술하는 바와 같이, 상기 타겟 서브 블록의 디코딩 메시지의 로그 우도비(LLR, log likelihood ratio)를 상기 노드 연산의 결과로서 이용하여 상기 타겟 서브 블록의 상기 신뢰도를 추정할 수 있다. 다른 실시예에서, 도 8을 참조하여 후술하는 바와 같이, 상기 타겟 서브 블록의 에러 비트 개수를 상기 노드 연산의 결과로서 이용하여 상기 타겟 서브 블록의 상기 신뢰도를 추정할 수 있다.
상기 신뢰도에 기초하여 차후의 디코딩 이터레이션들을 위한 상기 디코딩 스케쥴을 조절한다(S40). 본 발명의 실시예들에 따라서, 디코딩 스케쥴의 조절은 상기 현재의 디코딩 이터레이션에서 상기 신뢰도가 기준 신뢰도보다 높은 것으로 추정된 경우, 다음의 디코딩 이터레이션(next decoding iteration)에서 상기 타겟 서브 블록에 대한 노드 연산을 생략하는 방식으로 수행될 수 있다.
LDPC 디코딩 과정에서 다수의 디코딩 이터레이션들을 통해서 채널에서 수신된 값(또는 수신 word)는 코드워드(codeword)로 수렴된다. 이 때 판정 오류 비트의 수, 즉 디코딩 결과에서 추정된 정보어 비트와 실제 정보어 비트가 서로 다른 비트의 수는 일반적으로 디코딩 이터레이션이 진행됨에 따라 점점 감소하므로, 어느 정도의 디코딩 이터레이션이 진행된 이후에는 판정 오류 비트를 전혀 포함하지 않는 서브 블록들이 발생한다. 이러한 서브 블록에 포함된 디코딩 메지지를 업데이트하는 것은 디코딩 결과를 개선하는 데 큰 영향을 주지 않을 수 있으며, 이는 프로세싱의 낭비를 야기한다. 프로세싱의 낭비는 최종적으로 디코딩 시간 지연, 전력 소모 증가 등의 문제를 발생시킨다.
본 발명의 실시예들에 따른 저밀도 패리티 체크 코드의 디코딩 방법, 저밀도 패리티 체크 디코더 및 이를 포함하는 메모리 시스템은, 노드 연산의 결과에 기초하여 디코딩 스케쥴을 적응적으로 조절함으로써 디코딩 시간을 감소하고 소모 전력을 감소할 수 있다.
도 2는 본 발명의 실시예들에 따른 저밀도 패리티 체크 디코더를 나타내는 블록도이다.
도 2를 참조하면, 저밀도 패리티 체크(LDPC) 디코더(1000)는 변수 노드 프로세서(variable node processor)(VNP)(100), 체크 노드 프로세서(check node processor)(CNP)(200), 신뢰도 추정기(reliability estimator)(RBEST)(300) 및 업데이트 매니저(update manager) (UDMNG) (400)를 포함할 수 있다.
LDPC 디코더(1000)는 LDPC 코드의 패리티 체크 매트릭스(PCM, parity check matrix)를 복수의 서브 블록들로 분할하여 복수의 디코딩 이터레이션들(decoding iterations)에 대해 반복적으로 디코딩 동작을 수행한다.
변수 노드 프로세서(100)와 체크 노드 프로세서(200)는 상기 복수의 서브 블록들 중에서 현재의 디코딩 이터레이션에 상응하는 디코딩 스케쥴에 따른 타겟 서브 블록들의 각각에 대하여 노드 연산을 수행한다.
신뢰도 추정기(300)는 상기 노드 연산의 결과에 기초하여 상기 타겟 서브 블록들의 각각에 대한 신뢰도를 추정한다. 업데이트 매니저(400)는 상기 신뢰도에 기초하여 차후의 디코딩 이터레이션들을 위한 상기 디코딩 스케쥴을 조절한다.
신뢰도 추정기(300)는 상기 노드 연산의 결과를 적어도 하나의 기준 값과 비교하고, 상기 비교 결과에 기초하여 상기 신뢰도를 나타내는 값을 갖는 신뢰도 신호(RB)를 발생할 수 있다. 업데이트 매니저(400)는 신뢰도 신호(RB)에 기초하여 상기 디코딩 스케쥴을 조절할 수 있다. 일 실시예에서, 후술하는 바와 같이 신뢰도 신호(RB)는 제1 값(VL1) 또는 제2 값(VL2)을 가질 수 있다. 이 경우, 신뢰도 신호(RB)가 제1 값(VL1)을 갖는 경우 신뢰도가 상대적으로 낮음을 나타내고 제2 값(VL2)을 갖는 경우 신뢰도가 상대적으로 높음을 나타낼 수 있다. 다른 실시예에서, 신뢰도 신호(RB)는 제1 값(VL1), 제2 (VL2), 제3 값(VL3)과 같이 3개 이상의 값들 중 하나를 가지도록 구현될 수 있다. 이 경우, 신뢰도 신호(RB)의 다양한 값들을 통하여 신뢰도를 3개 이상의 범위들로 구분할 수 있다.
일 실시예에서, 업데이트 매니저(400)는 스케쥴링 테이블(SCHTB)(410)을 포함할 수 있다. 스케쥴링 테이블(410)은 각 서브 블록 및 상기 각 서브 블록의 노드 연산이 수행될 디코딩 이터레이션 사이의 매핑 관계를 나타낼 수 있다. 업데이트 매니저(400)는 신뢰도 신호(RB)에 기초하여 차후의 디코딩 이터레이션들을 위한 스케쥴링 테이블(410)의 상기 매핑 관계를 업데이트할 수 있다. 이러한 매핑 관계를 참조하여 업데이트 매니저(400)는 변수 노드 프로세서(100)와 체크 노드 프로세서(200)의 노드 연산을 제어하기 위한 제어 신호(UPCON)를 발생할 수 있다.
신뢰도 추정기(300) 및 업데이트 매니저(400)는 하드웨어, 소프트웨어 또는 이들의 조합으로 구현될 수 있다. 신뢰도 추정기(300) 및 업데이트 매니저(400)의 적어도 일부는 컴퓨터로 판독 가능한 매체에 저장된 프로그램 코드를 포함하는 제품 등의 형태로 구현될 수 있다.
도 3a, 3b 및 3c는 본 발명의 실시예들에 따른 저밀도 패리티 체크 코드의 디코딩을 위한 패리티 체크 매트릭스를 설명하기 위한 도면들이다.
LDPC (low-density parity-check) 코드는 채널 용량에 거의 근접하는 정정 능력을 가지는 코드 중의 하나이며, 이러한 우수한 정정 능력 때문에 통신 시스템, 통신 표준, 메모리 용 콘트롤러 등에 많이 사용되고 있다. LDPC 코드는 선형 블록 코드이므로 패리티 체크 매트릭스(parity check matrix, 이하 PCM)로 정의할 수 있다. 여기서 코드의 정의는 정보어 (information)와 패리티(parity) 간의 관계를 나타내는 것이다.
코드워드 길이 n, 정보어 길이 k를 가지는 LDPC 코드는 (n-k) x n 크기의 PCM으로 나타낼 수 있는데, 일반적으로 LDPC 코드는 코드워드 길이(n)가 길수록 우수한 정정 능력을 가진다. 예를 들어, 메모리용 콘트롤러에는 1KB 이상의 코드워드를 사용하고 있다 (n>8192). 코드워드 길이가 큰 경우에는 PCM의 크기가 매우 커지므로 이 PCM을 저장하는 것은 매우 어렵다.
이러한 문제점을 해결하기 위해 PCM을 서브 매트릭스들로 나누고, 서브 매트릭스마다의 정보(서브 매트릭스의 위치, 서브 매트릭스의 형태)만으로 PCM을 정의할 수 있다. 이렇게 정의되는 LDPC 코드를 QC(quasi-cyclic)-LDPC 코드라고 한다. 예를 들어, 코드워드 길이가 1055 비트, 정보어 길이는 (422(=1055-633) 비트인 LDPC 코드를 설계한다고 가정하자. 서브 매트릭스의 크기를 211로 가정하면 도 3a와 같이 각 행(row)에 5(=1055/211)개의 서브 매트릭스, 각 열(column)에 3(=633/211)개의 서브 매트릭스가 배열된다. 각 서브 매트릭스는 항등 행렬을 오른쪽으로 원형 쉬프팅(circular shifting) 시킨 것이다. 이러한 PCM을 도 3b와 같이 항등 행렬의 쉬프팅(shifting) 수를 이용하여 크기가 3 x 5인 행렬(S3x5)로 간소화시킬 수 있다. 일반적인 PCM 표현(크기가 633 x 1055인 행렬)에 비해 상당히 작은 정보만으로 PCM을 표현할 수 있다. 이러한 장점 때문에 통신 시스템, 메모리 시스템 등에 QC-LDPC 부호를 적용할 수 있다.
도 3c는 태너 그래프(Tanner graph)의 일 예를 나타낸다. 태너 그래프는 변수 노드들(variable nodes), 체크 노드들(check nodes) 및 이들을 연결하는 에지들(edges)을 포함한다. 변수 노드들은 코드워드들의 비트들과 연관되고 체크 노드들은 패리티-체크 제약(parity check constraints)과 연관된다. PCM의 "1"성분은 태너 그래프의 에지에 상응한다. 각 노드에 연결된 에지들의 개수는 노드의 차수(degree)로 정의된다.
도 4a 내지 4e는 본 발명의 실시예들에 따른 패리티 체크 매트릭스의 분할 방법을 나타내는 도면들이다.
도 4a 내지 4e에는 3행 8열로 배열된 24개의 서브 매트릭스들(SM11~SM18, SM21~SM28, SM31~SM38)을 포함하는 패리티 체크 매트릭스가 예시되어 있다. 도 4a 내지 4e에서 점선으로 표시된 사각형은 하나의 서브 블록을 나타낸다.
도 4a 내지 4e를 참조하면, 분할된 서브 블록들의 각각은 적어도 하나의 서브 매트릭스 열, 적어도 하나의 서브 매트릭스 행, 적어도 하나의 서브 매트릭스를 포함할 수 있다.
도 4a는 서브 매트릭스들이 1개의 열 단위로 8개의 서브 블록들(SB1~SB8)로 분할된 경우를 나타내고, 도 4b는 서브 매트릭스들이 2개의 열 단위로 4개의 서브 블록들(SB1~SB4)로 분할된 경우를 나타내며, 이러한 분할에 의한 디코딩을 열 분할 디코딩(column by column decoding)이라 칭할 수 있다. 도 4c는 서브 매트릭스들이 1개의 행 단위로 3개의 서브 블록들(SB1~SB3)로 분할된 경우를 나타내며, 이러한 분할에 의한 디코딩을 행 분할 디코딩(row by row decoding)이라 칭할 수 있다. 한편, 도 4d 및 4e에는 각 서브 블록이 1개 이상의 서브 매트릭스들을 포함하도록 분할된 경우들을 나타낸다.
QC-LDPC 코드는 PCM에 일종의 구조적인 제약(서브 매트릭스 사이즈, 서브 매트릭스 형태)을 두는 것이며, 이로 인해 LDPC 디코딩의 구현 및 운용도 용이하게 한다. 한 클록 사이클 동안에 하나 이상의 서브 매트릭스들을 처리하도록 LDPC 디코더를 설계하되, 데이터 입출력 및 연산을 효율적으로 하기 위해서 도 4a 내지 4e에 예시된 바와 같은 서브 블록 단위로 복수의 서브 매트릭스들을 동시에 처리하도록 설계될 수 있다. 이 때 디코딩을 위한 서브 블록들의 업데이트 순서를 정의할 수 있는데, 이를 LDPC 디코딩 스케쥴(decoding schedule)이라고 칭할 수 있다.
이하 열 분할 디코딩(column-by-column decoding)을 중심으로 본 발명의 실시예들을 설명하지만, 동일한 실시예들이 행 분할 디코딩(row-by-row decoding)에도 적용될 수 있다.
도 5a 및 5b는 본 발명의 실시예들에 따른 저밀도 패리티 체크 코드의 디코딩 방법을 위한 스케쥴링 테이블을 설명하기 위한 도면들이다.
도 5a에 예시된 바와 같이 도 3b의 패리티 체크 매트릭스(S3x5)는 1개의 서브 매트리스 열 단위로 제1 내지 제5의 서브 블록들(SB1~SB5)로 분할될 수 있다. 이러한 분할 방식에 대한 디코딩 스케쥴은 도 5b에 도시된 바와 같은 스케쥴링 테이블(SCHTB)로 표현될 수 있다.
스케쥴링 테이블(SCHTB)은 서브 블록 및 서브 블록의 노드 연산이 수행될 디코딩 이터레이션 사이의 매핑 관계를 나타낸다. 즉 각각의 서브 블록 번호(NSB)에 대하여 각각의 설정 이터레이션 번호(NITR)가 매핑된다. 도 5b의 디코딩 스케쥴의 예에 따르면, K번째 디코딩 이터레이션(즉 현재의 디코딩 이터레이션)에서는 제1 서브 블록(SB1), 제3 서브 블록(SB3) 및 제5 서브 블록(SB5)에 대해서만 노드 연산이 수행된다. 제2 서브 블록(SB2)에 대해서는 K번째 디코딩 이터레이션에서는 노드 연산이 생략되고 K+1번째 디코딩 이터레이션에서 노드 연산이 수행된다. 제4 서브 블록(SB4)에 대해서는 K번째 디코딩 이터레이션 및 K+1번째 디코딩 이터레이션에서는 노드 연산이 생략되고 K+2번째 디코딩 이터레이션에서 노드 연산이 수행된다. 이러한 디코딩 스케쥴을 나타내는 스케쥴링 테이블(SCHTB)을 이용하여 후술하는 바와 같은 적응적 스케쥴링을 수행할 수 있다.
도 6은 본 발명의 일 실시예에 따른 저밀도 패리티 체크 코드의 디코딩 방법을 나타내는 순서도이다.
도 6을 참조하면, 먼저 현재 이터레이션 번호(NITR_P)를 초기 값(예를 들어, 1)으로 초기화하고(S111) 현재 서브 블록 번호(NSB)를 초기 값(예를 들어, 1)으로 초기화한다(S112).
현재 이터레이션 번호(NITR_P)와 현재 서브 블록 번호(NSB)에 매핑된 설정 이터레이션 번호(NITR)와 비교한다(S113).
현재 이터레이션 번호(NITR_P)와 설정 이터레이션 번호(NITR)가 동일한 경우(S113:YES), 현재 서브 블록에 대한 노드 연산을 수행하고(S114), 노드 연산의 결과에 기초하여 현재 서브 블록에 대한 신뢰도를 추정하고(S115), 추정된 신뢰도에 기초하여 현재 서브 블록 번호(NSB)에 매핑된 설정 이터레이션 번호(NITR)를 업데이트한다(S116). 현재 이터레이션 번호(NITR_P)와 설정 이터레이션 번호(NITR)가 상이한 경우(S113:NO)는 현재 서브 블록에 대한 노드 연산 및 디코딩 스케쥴의 조절을 생략한다.
이후, 현재 서브 블록 번호(NSB)와 최대 서브 블록 번호(MXA)가 상이한 경우(S117:YES), 현재 서브 블록 번호(NSB)를 1만큼 증가하고(S118) 다음의 서브 블록에 대하여 전술한 적응적 업데이트 시퀀스(S113~S118)를 반복한다.
현재 서브 블록 번호(NSB)와 최대 서브 블록 번호(MXA)가 동일한 경우(S117:NO), 디코딩의 성공 여부를 판단한다(S119). 디코딩이 성공한 경우(S119:YES), 정정 데이터(CD)를 제공하고(S120) 디코딩을 종료한다.
디코딩이 실패한 경우(S119:YES), 현재 이터레이션 번호(NITR_P)를 최대 이터레이션 번호(MXB)와 비교한다(S121). 현재 이터레이션 번호(NITR_P)와 최대 이터레이션 번호(MXB)가 상이한 경우(S121:NO), 현재 이터레이션 번호(NITR_P)를 1만큼 증가하고(S122), 다음의 디코딩 이터레이션에 대하여 전술한 적응적 업데이트(S112~S121)를 반복한다.
최대 디코딩 이터레이션에서도 디코딩이 성공하지 못한 경우(S121:YES), 에러 신호(ERR)를 활성화하고 디코딩을 종료한다.
이하, 도 7 내지 도 11e를 참조하여 도 6의 방법에 포함되는 신뢰도 추정 및 디코딩 스케쥴 조절의 실시예들을 설명한다.
도 7은 본 발명의 일 실시예에 따른 신뢰도의 추정 및 디코딩 스케쥴의 조절을 나타내는 순서도이다. 도 7에는 K번째 디코딩 이터레이션(NITR_P=K)에서 노드 연산이 수행된 하나의 타겟 서브 블록에 대한 신뢰도 추정 및 디코딩 스케쥴 조절이 도시되어 있다. 상기 타겟 서브 블록에 대한 상기 노드 연산이 수행된 후 상기 타겟 서브 블록의 디코딩 메시지에 기초하여 상기 타겟 서브 블록의 코드워드 비트들의 각각에 대한 사후 확률(APP, posteriori probability)들을 계산하고, 이에 기초하여 신뢰도를 추정할 수 있다.
도 7을 참조하면, 먼저 현재 코드워드 비트 번호(i)를 초기 값(예를 들어, 1)으로 초기화한다(S211). 현재 코드워드 비트에 대한 사후 확률(APPi)을 계산하고(S212), 사후 확률(APPi)을 기준 값(PTH)과 비교한다(S213). 예를 들어, 도 2의 변수 노드 프로세서(100)가 체크 노드 프로세서(200)에서 전달되는 메시지(MSG)와 채널 입력을 이용하여 현재 코드워드 비트의 사후 확률(APPi)을 계산하고, 신뢰도 추정기(300)는 제공된 사후 확률(APPi)을 기준 값(PTH)과 비교하여 신뢰도 신호(RB)의 값을 결정할 수 있다.
사후 확률(APPi)이 기준 값(PTH)보다 작은 경우(S213:YES), 신뢰도 신호(RB)의 값을 제1 값(VL1)으로 결정한다. 사후 확률(APPi)이 기준 값(PTH)보다 작지 않은 경우(S213:NO), 현재 코드워드 비트 번호(i)를 최대 비트 번호(MXC)와 비교한다(S214). 현재 코드워드 비트 번호(i)가 최대 비트 번호(MXC)와 상이한 경우(S214: NO), 현재 코드워드 비트 번호(i)를 1만큼 증가하고(S215) 다음의 코드워드 비트에 대하여 전술한 단계들(S212~S215)을 반복한다. 현재 코드워드 비트 번호(i)가 최대 비트 번호(MXC)와 동일한 경우(S214: NO), 신뢰도 신호(RB)의 값을 제2 값(VL2)으로 결정한다.
결과적으로, 하나의 타겟 서브 블록의 사후 확률들(APPi)(i=1~MXC) 중 적어도 하나가 기준 값(PTH)보다 작은 경우 상기 타겟 서브 블록의 신뢰도가 기준 신뢰도보다 낮은 것으로 추정하여 상기 신뢰도를 제1 값(VL1)으로 결정할 수 있다. 반면에, 상기 사후 확률들(APPi)의 전부가 기준 값(PTH)보다 큰 경우 상기 신뢰도가 상기 기준 신뢰도보다 높은 것으로 추정하여 상기 신뢰도를 제2 값(VL2)으로 결정할 수 있다.
도 2의 업데이트 매니저(400)는 신뢰도 신호(RB)의 값에 기초하여 디코딩 스케쥴을 조절할 수 있다. 전술한 바와 같이, 업데이트 매니저(400)는 스케쥴링 테이블(SCHTB)을 포함할 수 있고, 스케쥴링 테이블(SCHTB)의 서브 블록 번호(NSB)에 매핑된 설정 이터레이션 번호(NITR)를 변경하는 방식으로 디코딩 스케쥴을 조절할 수 있다.
신뢰도 신호(RB)의 값이 제1 값(VL1)인 경우(S311:YES), 업데이트 매니저(400)는 해당 서브 블록에 매핑된 설정 이터레이션 번호(NITR)를 K+1로 변경하여(S312) 다음의 디코딩 이터레이션에 해당하는 K+1번째 디코딩 이터레이션에서 해당 서브 블록에 대한 노드 연산이 수행되도록 할 수 있다. 반면, 신뢰도 신호(RB)의 값이 제2 값(VL2)인 경우(S311:NO), 업데이트 매니저(400)는 해당 서브 블록에 매핑된 설정 이터레이션 번호(NITR)를 K+2로 변경하여(S313) 해당 서브 블록에 대한 노드 연산이 K+1번째 디코딩 이터레이션에서는 생략되고 K+2번째 디코딩 이터레이션에서 수행되도록 할 수 있다.
도 8은 본 발명의 다른 실시예에 따른 신뢰도의 추정 및 디코딩 스케쥴의 조절을 나타내는 순서도이다. 도 8에는 K번째 디코딩 이터레이션(NITR_P=K)에서 노드 연산이 수행된 하나의 타겟 서브 블록에 대한 신뢰도 추정 및 디코딩 스케쥴 조절이 도시되어 있다. 상기 타겟 서브 블록에 대한 상기 노드 연산이 수행된 후 상기 타겟 서브 블록의 에러 비트 개수를 계산하고, 이에 기초하여 신뢰도를 추정할 수 있다.
도 8을 참조하면, K번째 디코딩 이터레이션, 즉 현재의 디코딩 이터레이션(NITR_P=K)에서 노드 연산이 수행된 하나의 타겟 서브 블록에 대해서 에러 비트 개수(NEB)를 계산하고(S411), 에러 비트 개수(NEB)를 기준 값(NTH)과 비교한다(S412). 예를 들어, 에러 비트 개수(NEB)의 계산은 도 14의 신드롬 검사기(2854)에 의해 계산될 수 있고, 도 2의 신뢰도 추정기(300)는 제공된 에러 비트 개수(NEB)를 기준 값(NTH)과 비교하여 신뢰도 신호(RB)의 값을 결정할 수 있다.
에러 비트 개수(NEB)가 기준 값(NTH)보다 큰 경우(S412:YES), 신뢰도 신호(RB)의 값을 제1 값(VL1)으로 결정한다(S413). 에러 비트 개수(NEB)가 기준 값(NTH)보다 크지 않은 경우(S412:NO), 신뢰도 신호(RB)의 값을 제2 값(VL2)으로 결정한다(S414).
결과적으로, 하나의 타겟 서브 블록의 에러 비트 개수(NEB)가 기준 값(NTH)보다 큰 경우 상기 타겟 서브 블록의 신뢰도가 기준 신뢰도보다 낮은 것으로 추정하여 상기 신뢰도를 제1 값(VL1)으로 결정할 수 있다. 반면에, 에러 비트 개수(NEB)가 기준 값(NTH)보다 작은 경우 상기 신뢰도가 상기 기준 신뢰도보다 높은 것으로 추정하여 상기 신뢰도를 제2 값(VL2)으로 결정할 수 있다.
도 2의 업데이트 매니저(400)는 신뢰도 신호(RB)의 값에 기초하여 디코딩 스케쥴을 조절할 수 있다. 전술한 바와 같이, 업데이트 매니저(400)는 스케쥴링 테이블(SCHTB)을 포함할 수 있고, 스케쥴링 테이블(SCHTB)의 서브 블록 번호(NSB)에 매핑된 설정 이터레이션 번호(NITR)를 변경하는 방식으로 디코딩 스케쥴을 조절할 수 있다.
신뢰도 신호(RB)의 값이 제1 값(VL1)인 경우(S511:YES), 업데이트 매니저(400)는 해당 서브 블록에 매핑된 설정 이터레이션 번호(NITR)를 K+1로 변경하여(S512) 다음의 디코딩 이터레이션에 해당하는 K+1번째 디코딩 이터레이션에서 해당 서브 블록에 대한 노드 연산이 수행되도록 할 수 있다. 반면, 신뢰도 신호(RB)의 값이 제2 값(VL2)인 경우(S511:NO), 업데이트 매니저(400)는 해당 서브 블록에 매핑된 설정 이터레이션 번호(NITR)를 K+2로 변경하여(S513) 해당 서브 블록에 대한 노드 연산이 K+1번째 디코딩 이터레이션에서는 생략되고 K+2번째 디코딩 이터레이션에서 수행되도록 할 수 있다.
도 9a 내지 9f는 도 7 및 8의 디코딩 방법에 의한 스케쥴링 테이블의 업데이트 시퀀스의 일 예를 나타내는 도면들이다.
도 9a 내지 9f는 2개의 연속한 디코딩 이터레이션들, 즉 K번째 디코딩 이터레이션(NITR_P=K) 및 K+1번째 디코딩 이터레이션(NITR_P=K+1)에 대한 디코딩 스케쥴의 조절 방법이 도시되어 있다. 각 도면에는 각 타겟 서브 블록에 대한 스케쥴링 테이블의 조절 전 상태(SCHTB(BEFORE)) 및 조절 후 상태(SCHTB(AFTER))가 도시되어 있다.
도 9a 및 9b를 참조하면, K번째 디코딩 이터레이션에서는 현재 이터레이션 번호(NITR_P)와 설정 이터레이션 번호(NITR)가 K로서 동일한 제2 서브 블록(SB2) 및 제4 서브 블록(SB4)이 타겟 서브 블록들에 해당한다. 제2 서브 블록(SB2)의 경우에는 신뢰도 신호(RB)의 값이 제2 값(VL2)이므로 신뢰도가 상대적으로 높다고 판단하여 설정 이터레이션 번호(NITR)를 K+2로 설정하고, 제4 서브 블록(SB4)의 경우에는 신뢰도 신호(RB)의 값이 제1 값(VL1)이므로 신뢰도가 상대적으로 낮다고 판단하여 설정 이터레이션 번호(NITR)를 K+1로 설정한다. 결과적으로 신뢰도가 높은 제2 서브 블록(SB2)의 노드 연산은 다음의 K+1번째 디코딩 이터레이션에서는 생략되고 그 다음의 K+2번째 디코딩 이터레이션에서 수행될 수 있다. 반면에 신뢰도가 낮은 제4 서브 블록(SB4)의 노드 연산은 다음의 K+1번째 디코딩 이터레이션에서 다시 수행될 수 있다.
도 9c 내지 9f를 참조하면, K+1번째 디코딩 이터레이션에서는 현재 이터레이션 번호(NITR_P)와 설정 이터레이션 번호(NITR)가 K+1로서 동일한 제1 서브 블록(SB2), 제3 서브 블록(SB4), 제4 서브 블록(SB4) 및 제5 서브 블록(SB5)이 타겟 서브 블록들에 해당한다. 제1 서브 블록(SB1) 및 제3 서브 블록(SB3)의 경우에는 신뢰도 신호(RB)의 값이 제2 값(VL2)이므로 신뢰도가 상대적으로 높다고 판단하여 설정 이터레이션 번호(NITR)를 K+3로 설정하고, 제4 서브 블록(SB4) 및 제5 서브 블록(SB5)의 경우에는 신뢰도 신호(RB)의 값이 제1 값(VL1)이므로 신뢰도가 상대적으로 낮다고 판단하여 설정 이터레이션 번호(NITR)를 K+2로 설정한다. 결과적으로 신뢰도가 높은 제1 서브 블록(SB1), 제3 서브 블록(SB3) 및 제5 서브 블록(SB5)의 노드 연산은 다음의 K+2번째 디코딩 이터레이션에서는 생략되고 그 다음의 K+3번째 디코딩 이터레이션에서 수행될 수 있다. 반면에 신뢰도가 낮은 제4 서브 블록(SB4)의 노드 연산은 다음의 K+2번째 디코딩 이터레이션에서 다시 수행될 수 있다.
도 7 내지 9f를 참조하여 설명한 바와 같이, K번째 디코딩 이터레이션에서 상기 타겟 서브 블록들의 각각에 대하여 상기 노드 연산의 결과를 기준 값과 비교하고, 상기 비교 결과에 기초하여 상기 신뢰도가 기준 신뢰도보다 낮은 것으로 추정된 경우 상기 신뢰도를 제1 값으로 결정하고, 상기 비교 결과에 기초하여 상기 신뢰도가 상기 기준 신뢰도보다 높은 것으로 추정된 경우 상기 신뢰도를 제2 값으로 결정하는 방식으로 신뢰도를 추정할 수 있다. 상기 신뢰도가 상기 제1 값에 해당하는 상기 타겟 서브 블록의 상기 노드 연산이 K+1번째 디코딩 이터레이션에서 수행되도록 상기 디코딩 스케쥴을 조절하고, 상기 신뢰도가 상기 제2 값에 해당하는 상기 타겟 서브 블록의 상기 노드 연산이 상기 K+1번째 디코딩 이터레이션에서 수행되지 않고 K+2번째 디코딩 이터레이션에서 수행되도록 상기 디코딩 스케쥴을 조절할 수 있다.
결과적으로, 현재의 디코딩 이터레이션에서 노드 연산 후의 타겟 서브 블록의 신뢰도가 기준 신뢰도보다 높은 것으로 추정된 경우, 다음의 디코딩 이터레이션(next decoding iteration)에서 상기 타겟 서브 블록에 대한 노드 연산을 생략할 수 있다. 이와 같이, 본 발명의 실시예들에 따른 저밀도 패리티 체크 코드의 디코딩 방법, 저밀도 패리티 체크 디코더 및 이를 포함하는 메모리 시스템은, 노드 연산의 결과에 기초하여 디코딩 스케쥴을 적응적으로 조절함으로써 디코딩 시간을 감소하고 소모 전력을 감소할 수 있다.
도 10은 본 발명의 일 실시예에 따른 신뢰도의 추정 및 디코딩 스케쥴의 조절을 나타내는 순서도이다.
도 10에는 K번째 디코딩 이터레이션(NITR_P=K)에서 노드 연산이 수행된 하나의 타겟 서브 블록에 대한 신뢰도 추정 및 디코딩 스케쥴 조절이 도시되어 있다. 상기 타겟 서브 블록에 대한 상기 노드 연산이 수행된 후 상기 타겟 서브 블록의 에러 비트 개수를 계산하고, 이에 기초하여 신뢰도를 추정할 수 있다.
도 10을 참조하면, K번째 디코딩 이터레이션, 즉 현재의 디코딩 이터레이션(NITR_P=K)에서 노드 연산이 수행된 하나의 타겟 서브 블록에 대해서 에러 비트 개수(NEB)를 계산하고(S611), 에러 비트 개수(NEB)를 제1 기준 값(NTH1) 및 제2 기준 값(NTH2)과 비교한다(S612, S613). 제2 기준 값(NTH2)는 제1 기준 값(NTH2)보다 작게 설정된다. 예를 들어, 에러 비트 개수(NEB)의 계산은 도 14의 신드롬 검사기(2854)에 의해 계산될 수 있고, 도 2의 신뢰도 추정기(300)는 제공된 에러 비트 개수(NEB)를 기준 값(NTH)과 비교하여 신뢰도 신호(RB)의 값을 결정할 수 있다.
에러 비트 개수(NEB)가 제1 기준 값(NTH1)보다 큰 경우(S612:YES), 신뢰도 신호(RB)의 값을 제1 값(VL1)으로 결정한다. 에러 비트 개수(NEB)가 제1 기준 값(NTH1)보다 크지 않고 제2 기준 값(NTH2)보다 큰 경우(S613:YES)), 신뢰도 신호(RB)의 값을 제2 값(VL2)으로 결정한다. 에러 비트 개수(NEB)가 제2 기준 값(NTH2)보다 크지 않은 경우(S613:NO), 신뢰도 신호(RB)의 값을 제3 값(VL3)으로 결정한다.
결과적으로, 하나의 타겟 서브 블록의 에러 비트 개수(NEB)가 제1 기준 값(NTH1)보다 큰 경우 상기 타겟 서브 블록의 신뢰도가 제1 기준 신뢰도보다 낮은 것으로 추정하여 상기 신뢰도를 제1 값(VL1)으로 결정할 수 있다. 에러 비트 개수(NEB)가 제1 기준 값(NTH1)보다 작고 제2 기준 값(NTH2)보다 큰 경우 상기 타겟 서브 블록의 신뢰도가 제1 기준 신뢰도보다 높고 제2 기준 신뢰도보다 낮은 것으로 추정하여 상기 신뢰도를 제2 값(VL2)으로 결정할 수 있다. 에러 비트 개수(NEB)가 제2 기준 값(NTH2)보다 작은 경우 상기 신뢰도가 상기 제2 기준 신뢰도보다 높은 것으로 추정하여 상기 신뢰도를 제3 값(VL3)으로 결정할 수 있다. 여기서, 제1 기준 값(NTH1)은 제2 기준 값(NTH2)보다 크고 상기 제1 기준 신뢰도는 상기 제2 기준 신뢰도보다 낮다.
도 2의 업데이트 매니저(400)는 신뢰도 신호(RB)의 값에 기초하여 디코딩 스케쥴을 조절할 수 있다. 전술한 바와 같이, 업데이트 매니저(400)는 스케쥴링 테이블(SCHTB)을 포함할 수 있고, 스케쥴링 테이블(SCHTB)의 서브 블록 번호(NSB)에 매핑된 설정 이터레이션 번호(NITR)를 변경하는 방식으로 디코딩 스케쥴을 조절할 수 있다.
신뢰도 신호(RB)의 값이 제1 값(VL1)인 경우(S711:YES), 업데이트 매니저(400)는 해당 서브 블록에 매핑된 설정 이터레이션 번호(NITR)를 K+1로 변경하여(S713) 다음의 디코딩 이터레이션에 해당하는 K+1번째 디코딩 이터레이션에서 해당 서브 블록에 대한 노드 연산이 수행되도록 할 수 있다. 신뢰도 신호(RB)의 값이 제2 값(VL2)인 경우(S712:YES), 업데이트 매니저(400)는 해당 서브 블록에 매핑된 설정 이터레이션 번호(NITR)를 K+2로 변경하여(S714) 해당 서브 블록에 대한 노드 연산이 K+1번째 디코딩 이터레이션에서는 생략되고 K+2번째 디코딩 이터레이션에서 수행되도록 할 수 있다. 신뢰도 신호(RB)의 값이 제3 값(VL3)인 경우(S712:NO), 업데이트 매니저(400)는 해당 서브 블록에 매핑된 설정 이터레이션 번호(NITR)를 K+3으로 변경하여(S715) 해당 서브 블록에 대한 노드 연산이 K+1번째 디코딩 이터레이션 및 K+2번째 디코딩 이터레이션에서는 생략되고 K+3번째 디코딩 이터레이션에서 수행되도록 할 수 있다.
도 11a 내지 11e는 도 10의 디코딩 방법에 의한 스케쥴링 테이블의 업데이트 시퀀스의 일 예를 나타내는 도면이다.
도 11a 내지 9e는 2개의 연속한 디코딩 이터레이션들, 즉 K번째 디코딩 이터레이션(NITR_P=K) 및 K+1번째 디코딩 이터레이션(NITR_P=K+1)에 대한 디코딩 스케쥴의 조절 방법이 도시되어 있다. 각 도면에는 각 타겟 서브 블록에 대한 스케쥴링 테이블의 조절 전 상태(SCHTB(BEFORE)) 및 조절 후 상태(SCHTB(AFTER))가 도시되어 있다.
도 11a, 11b 및 11c를 참조하면, K번째 디코딩 이터레이션에서는 현재 이터레이션 번호(NITR_P)와 설정 이터레이션 번호(NITR)가 K로서 동일한 제1 서브 블록(SB1), 제2 서브 블록(SB2) 및 제4 서브 블록(SB4)이 타겟 서브 블록들에 해당한다. 제1 서브 블록(SB1)의 경우에는 신뢰도 신호(RB)의 값이 제1 값(VL1)이므로 신뢰도가 상대적으로 낮다고 판단하여 설정 이터레이션 번호(NITR)를 K+1로 설정하고, 제2 서브 블록(SB2)의 경우에는 신뢰도 신호(RB)의 값이 제3 값(VL3)이므로 신뢰도가 상대적으로 높다고 판단하여 설정 이터레이션 번호(NITR)를 K+3으로 설정하고, 제4 서브 블록(SB4)의 경우에는 신뢰도 신호(RB)의 값이 제2 값(VL2)이므로 신뢰도가 중간 정도라고 판단하여 설정 이터레이션 번호(NITR)를 K+2로 설정한다. 결과적으로 신뢰도가 높은 제2 서브 블록(SB2)의 노드 연산은 다음의 K+1번째 및 K+2번째 디코딩 이터레이션들에서는 생략되고 K+3번째 디코딩 이터레이션에서 수행될 수 있다. 신뢰도가 중간 정도인 제4 서브 블록(SB4)의 노드 연산은 다음의 K+1번째 디코딩 이터레이션에서는 생략되고 K+2번째 디코딩 이터레이션에서 수행될 수 있다. 신뢰도가 낮은 제1 서브 블록(SB1)의 노드 연산은 다음의 K+1번째 디코딩 이터레이션에서 다시 수행될 수 있다.
도 11d 및 11e를 참조하면, K+1번째 디코딩 이터레이션에서는 현재 이터레이션 번호(NITR_P)와 설정 이터레이션 번호(NITR)가 K+1로서 동일한 제1 서브 블록(SB2) 및 제3 서브 블록(SB4)이 타겟 서브 블록들에 해당한다. 제1 서브 블록(SB1)의 경우에는 신뢰도 신호(RB)의 값이 제1 값(VL1)이므로 신뢰도가 상대적으로 낮다고 판단하여 설정 이터레이션 번호(NITR)를 K+2로 설정하고, 제3 서브 블록(SB3)의 경우에는 신뢰도 신호(RB)의 값이 제3 값(VL3)이므로 신뢰도가 상대적으로 높다고 판단하여 설정 이터레이션 번호(NITR)를 K+4로 설정한다. 결과적으로 신뢰도가 높은 제3 서브 블록(SB3)의 노드 연산은 차후의 K+2번째 및 K+3번째 디코딩 이터레이션들에서는 생략되고 그 후의 K+4번째 디코딩 이터레이션에서 수행될 수 있다. 반면에 신뢰도가 낮은 제1 서브 블록(SB1)의 노드 연산은 다음의 K+2번째 디코딩 이터레이션에서 다시 수행될 수 있다.
도 10 내지 11e를 참조하여 설명한 바와 같이, K번째 디코딩 이터레이션에서 상기 타겟 서브 블록들의 각각에 대하여 상기 노드 연산의 결과를 2개의 기준 값들과 비교하고, 상기 비교 결과에 기초하여 상기 신뢰도를 3개의 구간으로 추정할 수 있다. 신뢰도가 가장 낮은 구간에 속하는 것으로 추정된 경우 상기 신뢰도를 제1 값으로 결정하고, 신뢰도가 중간 구간에 속하는 것으로 추정된 경우 상기 신뢰도를 제2 값으로 결정하고, 신뢰도가 가장 높은 구간에 속하는 것으로 추정된 경우 상기 신뢰도를 제3 값으로 결정할 수 있다. 상기 신뢰도가 상기 제1 값에 해당하는 상기 타겟 서브 블록의 상기 노드 연산이 K+1번째 디코딩 이터레이션에서 수행되도록 상기 디코딩 스케쥴을 조절하고, 상기 신뢰도가 상기 제2 값에 해당하는 상기 타겟 서브 블록의 상기 노드 연산이 상기 K+1번째 디코딩 이터레이션에서 수행되지 않고 K+2번째 디코딩 이터레이션에서 수행되도록 상기 디코딩 스케쥴을 조절하고, 상기 신뢰도가 상기 제3 값에 해당하는 상기 타겟 서브 블록의 상기 노드 연산이 상기 K+1번째 및 K+2번째 디코딩 이터레이션들에서 수행되지 않고 K+3번째 디코딩 이터레이션에서 수행되도록 상기 디코딩 스케쥴을 조절할 수 있다.
도 10 내지 11e를 참조하여, 2개의 기준 값들을 이용하여 신뢰도를 3개의 구간으로 추정하는 실시예를 설명하였으나, 기준 값들의 개수에 따라서, 신뢰도를 4개 이상의 구간으로 추정할 수도 있다.
결과적으로, 현재의 디코딩 이터레이션에서 노드 연산 후의 타겟 서브 블록의 신뢰도가 기준 신뢰도보다 높은 것으로 추정된 경우, 차후의 적어도 하나의 디코딩 이터레이션(at least one subsequent decoding iteration)에서 상기 타겟 서브 블록에 대한 노드 연산을 생략할 수 있다. 이와 같이, 본 발명의 실시예들에 따른 저밀도 패리티 체크 코드의 디코딩 방법, 저밀도 패리티 체크 디코더 및 이를 포함하는 메모리 시스템은, 노드 연산의 결과에 기초하여 디코딩 스케쥴을 적응적으로 조절함으로써 디코딩 시간을 감소하고 소모 전력을 감소할 수 있다.
도 12는 본 발명의 실시예들에 따른 기준 신뢰도의 설정 방법을 나타내는 도면이다.
도 12에서 가로축은 디코딩 이터레이션의 순번을 나타내고, 세로축은 신뢰도를 나타낸다. TH1~TH4는 디코딩 이터레이션들의 각각에 상응하는 기준 신뢰도들을 나타낸다. 도 12에 도시된 바와 같이 디코딩 이터레이션이 반복될수록 기준 신뢰도를 증가할 수 있다. 디코딩 이터레이션이 반복될수록 디코딩 수렴 특성이 개선되어 신뢰도가 높은 서브 블록들의 개수가 증가한다. 이를 고려하여 디코딩 이터레이션에 따라서 기준 신뢰도를 다르게 설정함으로써 적응적 스케쥴링의 효율을 더욱 증가할 수 있다. 도 12에는 기준 신뢰도들(TH1~TH4)이 디코딩 이터레이션의 순번에 따라서 선형적으로 증가하는 예를 도시하고 있으나, 이에 한정되는 것은 아니다.
도 13은 본 발명의 실시예들에 따른 메모리 시스템을 나타내는 블록도이다.
도 13을 참조하면, 반도체 메모리 시스템(2000)은 메모리 장치(2100) 및 메모리 콘트롤러(2200)를 포함한다. 일 실시예에서, 메모리 장치(2100)는 NAND 플래시 메모리와 같은 불휘발성 메모리를 포함할 수 있다. 이러한 경우, 메모리 장치(2100)는 메모리 셀들의 문턱 전압을 조절함으로써 데이터를 저장한다.
메모리 콘트롤러(2200)는 호스트(Host) 및 메모리 장치(1100)에 연결된다. 호스트(Host)로부터의 요청에 응답하여, 메모리 콘트롤러(2200)는 메모리 장치(2100)를 액세스하도록 구성된다. 예를 들면, 메모리 콘트롤러(2200)는 메모리 장치(2100)의 독출, 기입 소거, 그리고 배경(background) 동작을 제어하도록 구성된다. 메모리 콘트롤러(2200)는 메모리 장치(2100) 및 호스트(Host) 사이에 인터페이스를 제공하도록 구성된다. 메모리 콘트롤러(2200)는 메모리 장치(2100)에 코맨드(CMD) 및 어드레스(ADD)를 제공하도록 구성된다. 또한, 메모리 콘트롤러(2200)는 메모리 장치(2100)와 데이터를 교환하도록 구성된다.
메모리 콘트롤러(2200)는 ECC 엔진(2300)을 포함하고, ECC 엔진(2300)은 ECC 인코더(ECCENC)(2400) 및 ECC 디코더(ECCDEC)(2500)를 포함할 수 있다.
호스트로부터 데이터가 입력되면, 입력된 데이터는 ECC 인코더(2400)에 의해 인코딩된다. 이때, ECC 인코더(2400)는 패리티 체크 매트릭스를 사용하여, 입력된 데이터에 대해 LDPC 인코딩을 수행한다. 그리고, 인코딩된 데이터는 기입 데이터(WD)로서 메모리 장치(2100)에 전달되어 기입된다. 기입 데이터에는 디코딩을 위한 패리티 비트들이 포함될 수 있다.
독출 명령이 수신되면, 메모리 시스템(2000)은 메모리 장치(2100)에 저장된 데이터를 독출 데이터(RD)로서 읽어낸다. 이때, 독출 데이터(RD)에는 다양한 이유로 발생된 에러가 포함될 수 있다. 예를 들어, 기입 데이터(WD)가 기입될 때의 오동작 또는 기입 데이터(WD)가 메모리 장치(2100)에 저장되는 동안의 데이터 손실에 의해 에러가 발생할 수 있다. 또는, 독출 데이터(RD)를 읽어내는 독출 동작에서의 오동작에 의해 에러가 발생할 수 있다.
ECC 디코더(2500)는 이러한 에러를 제거하기 위해, 패리티 체크 매트릭스를 사용하여, 독출 데이터(RD)에 대한 LDPC 디코딩을 수행한다. 이때, 사용되는 패리티 체크 매트릭스는 인코딩에서 사용된 것과 동일하다. 디코딩된 결과는 정정 데이터로서 제공된다.
도 14는 도 13의 메모리 시스템에 포함되는 ECC 디코더의 일 실시예를 나타내는 블록도이다.
도 14를 참조하면, ECC 디코더(2500)는 독출 데이터 관리자(RDMNG)(2600), 로그 우도비(LLR, log likelihood ratio) 매퍼(LLRMP)(2700), 디코더(2800)를 포함한다.
독출 데이터 관리자(2600)는 메모리 장치(2100)로부터 읽어낸 독출 데이터(RD)를 수신하여 저장한다. 독출 데이터(RD)는 제 1 독출 데이터(RD1) 및 제 2 독출 데이터(RD2)를 포함할 수 있다.
경판정(Hard Decision)이 수행될 때, 독출 데이터 관리자(2600)는 정상 독출 전압을 사용하여 읽어낸 데이터(RD1)를 메모리 장치(2100)부터 수신하여 제 1 독출 데이터(RD1)로서 저장한다. 저장된 제 1 독출 데이터(RD1)는 경판정 또는 연판정(Soft Decision) 시에 LLR 매퍼(2700)에 제공될 수 있다.
또한, 연판정이 수행될 때, 독출 데이터 관리자(2600)는 부분 독출 전압을 통해 읽어낸 데이터를 메모리 장치(200)로부터 수신하여 제 2 독출 데이터(RD2)로서 저장한다. 여기서, 부분 독출 전압은 정상 독출 전압과 인접하되 정상 독출 전압과는 다른 전압 레벨을 갖는 전압을 의미한다. 연판정이 수행될 때, 독출 데이터 관리자(2600)는 제 2 독출 데이터(RD2)를 LLR 매퍼(2700)에 제공한다.
LLR 매퍼(2700)는 제공된 독출 데이터(RD1, RD2)에 로그 우도비들을 사상하도록 구성된다. 실시예로서, LLR 매퍼(2700)는 경판정 시에 사상될 LLR들을 저장하는 경판정 LLR 레지스터(미도시) 및 연판정 시에 사상될 LLR들을 저장하는 연판정 LLR 레지스터(미도시)를 포함할 수 있다.
경판정 시에, LLR 매퍼(2700)는 독출 데이터 관리자(2600)로부터 제 1 독출 데이터(RD1)를 수신한다. LLR 매퍼(2700)는 제 1 독출 데이터(RD1)의 각 비트의 값에 따라, 제 1 독출 데이터(RD1)를 대응되는 LLR들로 사상한다. 연판정 시에, LLR 매퍼(2700)는 독출 데이터 관리자(2600)로부터 제 2 독출 데이터(RD2)를 수신한다. LLR 매퍼(2700)는 제 2 독출 데이터(RD2)의 각 비트의 값에 따라, 제 2 독출 데이터(RD2)를 대응되는 LLR들로 사상한다.
경판정 또는 연판정 시에, LLR 매퍼(2700)에 의해 사상된 결과는 디코더(280)에 LLR 데이터로서 출력된다.
디코더(2800)는 수신된 LLR 데이터를 LDPC 디코딩한다. 경판정 및 연판정 시에 각각의 LLR 데이터는 동일한 방법 및 장치를 이용하여 LDPC 디코딩될 수 있다. 디코더(2800)는 LDPC 디코딩 시에, 패리티 체크 매트릭스에 따라 체크 노드들(check nodes) 및 변수 노드들(variable nodes)의 갱신, 즉 노드 연산을 수행한다. 디코더(2800)는 갱신 결과(예를 들어, 사후 확률(posteriori probability))에 따라, 잠정 디코딩을 수행하고, 잠정 디코딩된 데이터와 패리티 체크 매트릭스를 연산하여 연산 결과에 따라 디코딩이 올바르게 수행되었는지 판단한다.
예를 들어, 패리티 체크 매트릭스와의 연산 결과가 영행렬이면, 디코딩이 올바르게 수행된 것으로 판단한다. 그렇지 않으면, 디코딩이 올바르게 수행되지 않은 것으로 판단한다.
디코딩이 올바르게 수행되면, 디코더(2800)는 디코딩된 데이터를 디코딩된 데이터(CD)로서 출력한다. 올바른 디코딩이 수행되지 않았으면(즉, 독출 데이터(RD)의 에러가 모두 정정되지 않았으면), 디코더(2800)는 체크 노드들 및 변수 노드들의 갱신을 다시 수행한다.
위와 같은 체크 노드들 및 변수 노드들의 갱신과 잠정 디코딩은 반복적으로(iteratively) 수행된다. 체크 노드들 및 변수 노드들의 갱신과 잠정 디코딩은 하나의 디코딩 루프, 즉 하나의 디코딩 이터레이션을 구성할 수 있다.
디코더(2800)에서 경판정이 수행되고, 경판정에 따른 패리티 체크가 실패할 때, 디코더(2800)는 페일 메시지를 독출 데이터 관리자(2600)에 전송한다. 독출 데이터 관리자(2600)는 페일 메시지에 응답하여 메모리 콘트롤러(2200)에 연판정을 위한 독출 요청을 전송한다. 또는, 디코더(2800)에서 경판정이 수행되고, 경판정에 따른 패리티 체크가 실패할 때, 디코더(2800)는 페일 메시지를 메모리 콘트롤러(2200)에 직접 전송할 수 있다. 메모리 콘트롤러(2200)는 페일 메시지(Fail) 또는 독출 요청에 응답하여 연판정을 위한 독출 동작을 준비할 수 있다.
디코더(2800)는 변수 노드 프로세서(VNP)(2810), 제1 스위치 네트워크(SWN1)(2820), 체크 노드 프로세서(CNP)(2830), 제2 스위치 네트워크(SWN2)(2840) 및 제어부(2850)를 포함할 수 있다. 제어부(2850)는 신뢰도 추정기(RBEST)(2851), 업데이트 매니저(UDMNG), 정정 데이터 관리자(CDMNG)(2853) 및 신드롬 검사기(SC, syndrome checker)(2854)를 포함할 수 있다.
LDPC 디코딩에서 패리티 검사 매트릭스의 0이 아닌(nonzero) 원소는 대응되는 변수 노드와 체크 노드가 서로 연결되는 것을 의미한다. 그리고, 이러한 변수 노드와 체크 노드의 연결에 따라 전달되는 데이터를 통해 디코딩이 수행된다.
변수 노드 프로세서(2810)는 독출 데이터 관리자(2600)로부터 제공된 LLR 데이터를 저장하고, 저장한 LLR 데이터를 변수 노드 메시지(VCMSG)로서 제 1 스위치 네트워크(2820)를 통해 체크 노드 프로세서(2830)에 제공한다.
체크 노드 프로세서(2830)는 제공된 변수 노드 메시지(VCMSG)를 참조하여, 각 체크 노드에 대해 변수 노드들의 값을 처리하여 체크 노드 메시지(CVMSG)로서 제공한다. 체크 노드 메시지(CVMSG)는 제 2 스위치 네트워크(2840)를 통해 변수 노드 프로세서(2810)으로 제공된다.
변수 노드 프로세서(2810)는 수신된 체크 노드 메시지(CVMSG)를 참조하여, 변수 노드 및 체크 노드의 값들을 갱신한다. 그리고, 갱신된 변수 노드 및 검사 노드의 값들에 따라 디코딩을 수행한다. 디코딩된 결과는 디코딩 데이터로서 정정 데이터 관리자(2853)에 제공된다.
정정 데이터 관리자(2853)는 변수 노드 프로세서(2810)에서 수행된 디코딩 결과를 저장하고, 신드롬 검사기(2854)의 디코딩 성공 여부 판단에 따라 외부로 정정 데이터(CD) 또는 읽기 에러 메시지(ERR)를 출력한다.
신드롬 검사기(2854)는 정정 데이터 관리자(2853)에 저장된 디코딩 데이터에 따라, 디코딩 성공 여부를 판단한다. 예를 들어, 신드롬 검사기(2854)는 디코딩 데이터와 패리티 검사 행렬의 전치 행렬을 곱하고, 곱한 결과가 영행렬인지 아닌지에 따라 디코딩 성공 여부(또는, 에러가 모두 정정되었는지 여부)를 판단한다. 그리고, 디코딩 성공 여부의 판단 결과를 정정 데이터 관리(2853)에 제공한다.
신뢰도 추정기(2851)는 상기 노드 연산의 결과에 기초하여 상기 타겟 서브 블록들의 각각에 대한 신뢰도를 추정한다. 업데이트 매니저(400)는 상기 신뢰도에 기초하여 차후의 디코딩 이터레이션들을 위한 상기 디코딩 스케쥴을 조절한다. 상기 디코딩 스케쥴에 기초하여 변수 노드 프로세서(VNP)(2810), 제1 스위치 네트워크(SWN1)(2820), 체크 노드 프로세서(CNP)(2830) 및 제2 스위치 네트워크(SWN2)(2840)의 동작을 제어하여 본 발명의 실시예들에 따른 적응적 스케쥴링이 수행될 수 있다.
도 15a 및 15b는 본 발명의 실시예들에 따른 디코딩 시간의 감소를 설명하기 위한 도면들이다. 도 15a는 통상적인 순차적 스케쥴링(sequential scheduling)을 나타내고 도 15b는 본 발명의 실시예들에 따른 적응적 스케쥴링(adaptive scheduling)을 나타낸다.
도 15a 및 15b에는 제1 내지 제4 디코딩 이터레이션들(NITR_P=1~4)에 해당하는 스케쥴링 테이블의 매핑 관계가 도시되어 있다. 전술한 바와 같이, NSB는 서브 블록 번호이고 NITR은 각 서브 블록 번호에 매칭된 설정 이터레이션 번호이다. 설정 이터레이션 번호(NITR)는 해당 서브 블록이 수행되어야 할 디코딩 이터레이션의 번호를 나타낸다. 점선의 원으로 표시된 설정 이터레이션 번호(NITR)는 현재 이터레이션 번호(NITR_P)와 일치하는 경우를 표시한 것으로서 각 디코딩 이터레이션에 상응하는 전술한 타겟 서브 블록에 해당한다.
전술한 바와 같이, LDPC 디코딩 과정에서 다수의 디코딩 이터레이션들을 통해서 채널에서 수신된 값(또는 수신 word)는 코드워드(codeword)로 수렴된다. 이 때 판정 오류 비트의 수, 즉 디코딩 결과에서 추정된 정보어 비트와 실제 정보어 비트가 서로 다른 비트의 수는 일반적으로 디코딩 이터레이션이 진행됨에 따라 점점 감소하므로, 어느 정도의 디코딩 이터레이션이 진행된 이후에는 판정 오류 비트를 전혀 포함하지 않는 서브 블록들이 발생한다. 이러한 서브 블록에 포함된 디코딩 메지지를 업데이트하는 것은 디코딩 결과를 개선하는 데 큰 영향을 주지 않을 수 있으며, 이는 프로세싱의 낭비를 야기한다. 프로세싱의 낭비는 최종적으로 디코딩 시간 지연, 전력 소모 증가 등의 문제를 발생시킨다.
본 발명의 실시예들에 따라서, 추정된 신뢰도에 기초하여 각 디코딩 이터레이션에서 일부 서브 블록들의 디코딩은 생략될 수 있다. 첫 번째의 디코딩 이터레이션에서는 모든 서브 블록들이 타겟 서브 블록이 되도록 설정 이터레이션 번호(NITR)의 값이 초기화될 수 있다. 도 15a의 순차적 스케쥴링의 경우에는 4번의 디코딩 이터레이션들 동안에 20회의 서브 블록 프로세싱이 수행되지만, 도 15의 적응적 스케쥴링의 경우에는 14회의 서브 블록 프로세싱이 수행된다.
이와 같이, 본 발명의 실시예들에 따른 저밀도 패리티 체크 코드의 디코딩 방법, 저밀도 패리티 체크 디코더 및 이를 포함하는 시스템은, 노드 연산의 결과에 기초하여 디코딩 스케쥴을 적응적으로 조절함으로써 디코딩 시간을 감소하고 소모 전력을 감소할 수 있다.
도 16은 본 발명의 실시예들에 따른 컴퓨팅 시스템을 나타내는 블록도이다.
도 16을 참조하면, 컴퓨팅 시스템(4000)은 프로세서(4100), 입출력 허브(4200), 입출력 콘트롤러 허브(4300), 적어도 하나의 메모리 모듈(4400) 및 그래픽 카드(4500)를 포함한다.
프로세서(4100)는 특정 계산들 또는 태스크들과 같은 다양한 컴퓨팅 기능들을 실행할 수 있다. 예를 들어, 프로세서(4100)는 마이크로프로세서 또는 중앙 처리 장치(Central Processing Unit; CPU)일 수 있다. 프로세서(4100)는 메모리 모듈(1340)의 동작을 제어하는 메모리 콘트롤러(4110)를 포함할 수 있다. 메모리 모듈(4400)은 메모리 콘트롤러(4110)로부터 제공된 데이터를 저장하는 복수의 메모리 장치들을 포함한다. ECC 디코더(4450)는 LDPC 디코더로서 전술한 바와 같이 본 발명의 실시예들에 따른 적응적 스케쥴링을 통한 디코딩을 수행한다. 일 실시예에서, 도 16에 도시된 바와 같이, ECC 디코더(4450)는 메모리 모듈(4400)에 포함될 수 있다. 이 경우, ECC 디코더(4450)는 메모리 모듈(4400)의 버퍼 칩 및/또는 메모리 칩들에 포함될 수 있다. 다른 실시예에서, ECC 디코더(4450)는 메모리 콘트롤러(4410)에 포함될 수 있다.
입출력 허브(4200)는 그래픽 카드(4500)와 같은 장치들과 프로세서(4100) 사이의 데이터 전송을 관리할 수 있다. 그래픽 카드(4500)는 AGP 또는 PCIe를 통하여 입출력 허브(4200)와 연결될 수 있다. 그래픽 카드(4500)는 영상을 표시하기 위한 디스플레이 장치(미도시)를 제어할 수 있다. 입출력 콘트롤러 허브(4300)는 다양한 시스템 인터페이스들이 효율적으로 동작하도록 데이터 버퍼링 및 인터페이스 중재를 수행할 수 있다. 입출력 콘트롤러 허브(4300)는 내부 버스를 통하여 입출력 허브(4200)와 연결될 수 있다. 예를 들어, 입출력 허브(4200)와 입출력 콘트롤러 허브(4300)는 다이렉트 미디어 인터페이스(Direct Media Interface; DMI), 허브 인터페이스, 엔터프라이즈 사우스브릿지 인터페이스(Enterprise Southbridge Interface; ESI), PCIe 등을 통하여 연결될 수 있다.
이상 설명한 바와 같이, 본 발명의 실시예들에 따른 저밀도 패리티 체크 코드의 디코딩 방법, 저밀도 패리티 체크 디코더 및 이를 포함하는 메모리 시스템은, 노드 연산의 결과에 기초하여 디코딩 스케쥴을 적응적으로 조절함으로써 디코딩 시간을 감소하고 소모 전력을 감소할 수 있다.
본 발명의 실시예들은 코드 디코딩이 요구되는 임의의 장치 및 포함하는 시스템에 유용하게 이용될 수 있다. 특히 본 발명의 실시예들은 메모리 카드, 솔리드 스테이트 드라이브(Solid State Drive; SSD), 컴퓨터(computer), 노트북(laptop), 핸드폰(cellular), 스마트폰(smart phone), MP3 플레이어, 피디에이(Personal Digital Assistants; PDA), 피엠피(Portable Multimedia Player; PMP), 디지털 TV, 디지털 카메라, 포터블 게임 콘솔(portable game console) 등과 같은 전자 기기에 더욱 유용하게 적용될 수 있다.
상기에서는 본 발명이 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.

Claims (10)

  1. 저밀도 패리티 체크 코드의 패리티 체크 매트릭스를 복수의 서브 블록들로 분할하는 단계;
    복수의 디코딩 이터레이션들(decoding iterations)의 각각에 대해서, 상기 복수의 서브 블록들 중에서 현재의 디코딩 이터레이션(present decoding iteration)에 상응하는 디코딩 스케쥴에 따른 타겟 서브 블록들의 각각에 대하여 노드 연산을 수행하는 단계;
    상기 노드 연산의 결과에 기초하여 상기 타겟 서브 블록들의 각각에 대한 신뢰도(reliability)를 추정하는 단계; 및
    상기 신뢰도에 기초하여 차후의 디코딩 이터레이션들(subsequent decoding iterations)을 위한 상기 디코딩 스케쥴을 조절하는 단계를 포함하고,
    상기 현재의 디코딩 이터레이션에서 상기 신뢰도가 기준 신뢰도보다 높은 것으로 추정된 경우, 다음의 디코딩 이터레이션(next decoding iteration)에서 상기 타겟 서브 블록에 대한 노드 연산을 생략하는 저밀도 패리티 체크 코드의 디코딩 방법.
  2. 삭제
  3. 제1 항에 있어서,
    상기 타겟 서브 블록의 디코딩 메시지의 로그 우도비(LLR, log likelihood ratio) 또는 상기 타겟 서브 블록의 에러 비트 개수를 상기 노드 연산의 결과로서 이용하여 상기 타겟 서브 블록의 상기 신뢰도를 추정하는 것을 특징으로 하는 저밀도 패리티 체크 코드의 디코딩 방법.
  4. 제1 항에 있어서,
    상기 신뢰도를 추정하는 단계는,
    상기 노드 연산의 결과를 적어도 하나의 기준 값과 비교하는 단계; 및
    상기 비교 결과에 기초하여 상기 신뢰도의 값을 결정하는 단계를 포함하는 것을 특징으로 하는 저밀도 패리티 체크 코드의 디코딩 방법.
  5. 제1 항에 있어서,
    상기 디코딩 스케쥴을 조절하는 단계는,
    K번째(K는 자연수) 디코딩 이터레이션에서 상기 신뢰도가 기준 신뢰도보다 낮은 것으로 추정된 상기 타겟 서브 블록에 대한 상기 노드 연산이 K+1번째 디코딩 이터레이션에서 수행되도록 상기 디코딩 스케쥴을 조절하는 단계; 및
    상기 K번째 디코딩 이터레이션에서 상기 신뢰도가 상기 기준 신뢰도보다 높은 것으로 추정된 상기 타겟 서브 블록에 대한 상기 노드 연산이 상기 K+1번째 디코딩 이터레이션에서 수행되지 않도록 상기 디코딩 스케쥴을 조절하는 단계를 포함하는 것을 특징으로 하는 저밀도 패리티 체크 코드의 디코딩 방법.
  6. 제1 항에 있어서,
    상기 신뢰도를 추정하는 단계는,
    K번째 디코딩 이터레이션에서 상기 타겟 서브 블록들의 각각에 대하여 상기 노드 연산의 결과를 기준 값과 비교하는 단계;
    상기 비교 결과에 기초하여 상기 신뢰도가 기준 신뢰도보다 낮은 것으로 추정된 경우 상기 신뢰도를 제1 값으로 결정하는 단계; 및
    상기 비교 결과에 기초하여 상기 신뢰도가 상기 기준 신뢰도보다 높은 것으로 추정된 경우 상기 신뢰도를 제2 값으로 결정하는 단계를 포함하는 것을 특징으로 하는 저밀도 패리티 체크 코드의 디코딩 방법.
  7. 제1 항에 있어서,
    상기 신뢰도를 추정하는 단계는,
    상기 타겟 서브 블록에 대한 상기 노드 연산이 수행된 후 상기 타겟 서브 블록의 디코딩 메시지에 기초하여 상기 타겟 서브 블록의 코드워드 비트들의 각각에 대한 사후 확률(APP, posteriori probability)들을 계산하는 단계;
    상기 사후 확률들을 기준 값과 비교하는 단계; 및
    상기 비교 결과에 기초하여 상기 신뢰도의 값을 결정하는 단계를 포함하는 것을 특징으로 하는 저밀도 패리티 체크 코드의 디코딩 방법.
  8. 저밀도 패리티 체크 코드의 패리티 체크 매트릭스를 복수의 서브 블록들로 분할하는 단계;
    복수의 디코딩 이터레이션들(decoding iterations)의 각각에 대해서, 상기 복수의 서브 블록들 중에서 현재의 디코딩 이터레이션(present decoding iteration)에 상응하는 디코딩 스케쥴에 따른 타겟 서브 블록들의 각각에 대하여 노드 연산을 수행하는 단계;
    상기 노드 연산의 결과에 기초하여 상기 타겟 서브 블록들의 각각에 대한 신뢰도(reliability)를 추정하는 단계; 및
    상기 신뢰도에 기초하여 차후의 디코딩 이터레이션들(subsequent decoding iterations)을 위한 상기 디코딩 스케쥴을 조절하는 단계를 포함하고,
    상기 신뢰도를 추정하는 단계는,
    상기 타겟 서브 블록에 대한 상기 노드 연산이 수행된 후 상기 타겟 서브 블록의 에러 비트 개수를 계산하는 단계;
    상기 에러 비트 개수를 기준 값과 비교하는 단계; 및
    상기 비교 결과에 기초하여 상기 신뢰도의 값을 결정하는 단계를 포함하는 것을 특징으로 하는 저밀도 패리티 체크 코드의 디코딩 방법.
  9. 저밀도 패리티 체크 코드의 패리티 체크 매트릭스를 복수의 서브 블록들로 분할하여 복수의 디코딩 이터레이션들(decoding iterations)에 대해 반복적으로 디코딩 동작을 수행하는 저밀도 패리티 체크 디코더로서,
    상기 복수의 서브 블록들 중에서 현재의 디코딩 이터레이션(present decoding iteration)에 상응하는 디코딩 스케쥴에 따른 타겟 서브 블록들의 각각에 대하여 노드 연산을 수행하는 변수 노드 프로세서와 체크 노드 프로세서;
    상기 노드 연산의 결과에 기초하여 상기 타겟 서브 블록들의 각각에 대한 신뢰도(reliability)를 추정하는 신뢰도 추정기; 및
    상기 신뢰도에 기초하여 차후의 디코딩 이터레이션들(subsequent decoding iterations)을 위한 상기 디코딩 스케쥴을 조절하는 업데이트 매니저를 포함하고,
    상기 현재의 디코딩 이터레이션에서 상기 신뢰도가 기준 신뢰도보다 높은 것으로 추정된 경우, 다음의 디코딩 이터레이션(next decoding iteration)에서 상기 타겟 서브 블록에 대한 노드 연산을 생략하는 저밀도 패리티 체크 디코더.
  10. 제9 항에 있어서,
    상기 업데이트 매니저는,
    상기 서브 블록 및 상기 서브 블록의 노드 연산이 수행될 디코딩 이터레이션 사이의 매핑 관계를 나타내는 스케쥴링 테이블을 포함하고,
    상기 신뢰도에 기초하여 차후의 디코딩 이터레이션들을 위한 상기 매핑 관계를 업데이트하는 것을 특징으로 하는 저밀도 패리티 체크 디코더.
KR1020170156549A 2017-11-22 2017-11-22 저밀도 패리티 체크 코드의 디코딩 방법, 이를 수행하는 디코더 및 시스템 KR102543059B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020170156549A KR102543059B1 (ko) 2017-11-22 2017-11-22 저밀도 패리티 체크 코드의 디코딩 방법, 이를 수행하는 디코더 및 시스템
US16/024,017 US10623019B2 (en) 2017-11-22 2018-06-29 Method of decoding low density parity check (LDPC) code, decoder and system performing the same
CN201811397209.0A CN109818626B (zh) 2017-11-22 2018-11-22 解码低密度奇偶校验码的方法、解码器及存储器***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170156549A KR102543059B1 (ko) 2017-11-22 2017-11-22 저밀도 패리티 체크 코드의 디코딩 방법, 이를 수행하는 디코더 및 시스템

Publications (2)

Publication Number Publication Date
KR20190059028A KR20190059028A (ko) 2019-05-30
KR102543059B1 true KR102543059B1 (ko) 2023-06-14

Family

ID=66534653

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170156549A KR102543059B1 (ko) 2017-11-22 2017-11-22 저밀도 패리티 체크 코드의 디코딩 방법, 이를 수행하는 디코더 및 시스템

Country Status (3)

Country Link
US (1) US10623019B2 (ko)
KR (1) KR102543059B1 (ko)
CN (1) CN109818626B (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111064475A (zh) * 2018-10-16 2020-04-24 华为技术有限公司 基于低密度奇偶校验码的译码方法及装置
KR102643457B1 (ko) * 2018-11-19 2024-03-06 에스케이하이닉스 주식회사 Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법
KR102668208B1 (ko) * 2020-02-06 2024-05-23 에스케이하이닉스 주식회사 Ldpc 디코더, ldpc 디코더의 동작 방법 및 반도체 메모리 시스템
CN111917420B (zh) * 2020-08-25 2023-07-04 广东省新一代通信与网络创新研究院 一种ldpc自适应译码方法及ldpc自适应译码器
US11444638B2 (en) 2020-09-17 2022-09-13 SK Hynix Inc. Quality-based dynamic scheduling LDPC decoder

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100037121A1 (en) * 2008-08-05 2010-02-11 The Hong Kong University Of Science And Technology Low power layered decoding for low density parity check decoders
US20120185750A1 (en) * 2011-01-19 2012-07-19 JVC Kenwood Corporation Decoding device and decoding method for decoding data encoded by ldpc

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6848069B1 (en) * 1999-08-10 2005-01-25 Intel Corporation Iterative decoding process
KR20040101743A (ko) * 2003-05-26 2004-12-03 삼성전자주식회사 통신 시스템에서 저밀도 패리티 검사 코드의 복호 장치 및방법
US7559008B1 (en) * 2005-10-03 2009-07-07 Maxtor Corporation Nested LDPC encoders and decoder
CN100578944C (zh) * 2006-07-13 2010-01-06 华为技术有限公司 一种ldpc码的迭代译码方法及装置
US20080052594A1 (en) 2006-07-28 2008-02-28 Yedidia Jonathan S Method and system for replica group-shuffled iterative decoding of quasi-cyclic low-density parity check codes
US7802163B2 (en) 2006-07-31 2010-09-21 Agere Systems Inc. Systems and methods for code based error reduction
JP4930512B2 (ja) * 2006-09-29 2012-05-16 富士通株式会社 無線通信システム、送信装置および受信装置
US8418023B2 (en) 2007-05-01 2013-04-09 The Texas A&M University System Low density parity check decoder for irregular LDPC codes
US8219878B1 (en) 2007-12-03 2012-07-10 Marvell International Ltd. Post-processing decoder of LDPC codes for improved error floors
CN101534166B (zh) * 2008-03-10 2012-07-11 上海明波通信技术有限公司 准循环低密度奇偶校验码解码器及解码方法
US8413029B2 (en) 2009-01-16 2013-04-02 Lsi Corporation Error correction capability adjustment of LDPC codes for storage device testing
US9331717B2 (en) * 2009-02-27 2016-05-03 Blackberry Limited Forward error correction decoding avoidance based on predicted code block reliability
CN102460977A (zh) * 2009-05-27 2012-05-16 诺沃尔赛特有限公司 具有迭代调度的ldpc码迭代解码
TWI415396B (zh) 2009-11-23 2013-11-11 Nat Univ Tsing Hua 適用於根據里德-索羅門碼建立之低密度同位檢查碼的解碼器及解碼方法
EP2742429A4 (en) 2011-08-09 2015-03-25 Lsi Corp I / O DEVICE AND INTERACTION WITH DATA PROCESSING HOST
US8683309B2 (en) * 2011-10-28 2014-03-25 Lsi Corporation Systems and methods for ambiguity based decode algorithm modification
US9160369B1 (en) * 2013-03-01 2015-10-13 Proton Digital Systems, Inc. Method for iterative error correction with designed error floor performance
TWI619353B (zh) 2013-07-03 2018-03-21 Lsi公司 在低密度奇偶性校驗(ldpc)解碼器中之對數相似比(llr)抑制

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100037121A1 (en) * 2008-08-05 2010-02-11 The Hong Kong University Of Science And Technology Low power layered decoding for low density parity check decoders
US20120185750A1 (en) * 2011-01-19 2012-07-19 JVC Kenwood Corporation Decoding device and decoding method for decoding data encoded by ldpc

Also Published As

Publication number Publication date
CN109818626A (zh) 2019-05-28
US10623019B2 (en) 2020-04-14
US20190158116A1 (en) 2019-05-23
KR20190059028A (ko) 2019-05-30
CN109818626B (zh) 2023-08-29

Similar Documents

Publication Publication Date Title
KR102543059B1 (ko) 저밀도 패리티 체크 코드의 디코딩 방법, 이를 수행하는 디코더 및 시스템
US9319073B2 (en) Mitigation of write errors in multi-level cell flash memory through adaptive error correction code decoding
US8782496B2 (en) Memory controller, semiconductor memory apparatus and decoding method
US10534665B2 (en) Decoding method, memory storage device and memory control circuit unit
US20210175900A1 (en) Memory controller and method of accessing flash memory
US9342404B2 (en) Decoding method, memory storage device, and memory controlling circuit unit
US9973213B2 (en) Decoding method, and memory storage apparatus and memory control circuit unit using the same
US11050438B2 (en) Memory controller
US11128315B2 (en) Error correction decoder
US11031952B2 (en) Error correction decoder and memory system having the same
US20170134049A1 (en) Decoding method, memory storage device and memory control circuit unit
US10193569B2 (en) Decoding method, memory storage device and memory control circuit unit
US11115064B2 (en) Error correction decoder and memory system having the same
KR20200122064A (ko) 오류 정정 회로 및 이를 포함하는 메모리 컨트롤러
KR20200004195A (ko) 메모리 컨트롤러 및 이의 동작 방법
US20150149856A1 (en) Decoding with log likelihood ratios stored in a controller
US9236886B1 (en) Universal and reconfigurable QC-LDPC encoder
CN110931073A (zh) 错误校正电路及其操作方法
US20200052716A1 (en) Error correction circuit and operating method thereof
KR20200124054A (ko) 오류 정정 디코더 및 이를 포함하는 메모리 시스템
KR20210123476A (ko) 전자 장치
CN110971240A (zh) 解码器设计方法与存储控制器
TWI804359B (zh) 低密度奇偶校檢碼的解碼方法及裝置
US11528039B2 (en) Error recovery using adaptive LLR lookup table
US10628259B2 (en) Bit determining method, memory control circuit unit and memory storage device

Legal Events

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