KR20200022136A - 에러 정정 장치 및 그것을 포함하는 전자 장치 - Google Patents

에러 정정 장치 및 그것을 포함하는 전자 장치 Download PDF

Info

Publication number
KR20200022136A
KR20200022136A KR1020180097884A KR20180097884A KR20200022136A KR 20200022136 A KR20200022136 A KR 20200022136A KR 1020180097884 A KR1020180097884 A KR 1020180097884A KR 20180097884 A KR20180097884 A KR 20180097884A KR 20200022136 A KR20200022136 A KR 20200022136A
Authority
KR
South Korea
Prior art keywords
check
values
reliability value
variable node
reliability
Prior art date
Application number
KR1020180097884A
Other languages
English (en)
Other versions
KR102707030B1 (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 KR1020180097884A priority Critical patent/KR102707030B1/ko
Priority claimed from KR1020180097884A external-priority patent/KR102707030B1/ko
Priority to US16/221,791 priority patent/US10554228B1/en
Priority to CN201811643133.5A priority patent/CN110858169B/zh
Publication of KR20200022136A publication Critical patent/KR20200022136A/ko
Application granted granted Critical
Publication of KR102707030B1 publication Critical patent/KR102707030B1/ko

Links

Images

Classifications

    • 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
    • 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
    • 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
    • H03M13/1117Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using approximations for check node processing, e.g. an outgoing message is depending on the signs and the minimum over the magnitudes of all incoming messages according to the min-sum rule
    • 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/612Aspects specific to channel or signal-to-noise ratio estimation
    • 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/1048Adding 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 arrangements adapted for a specific error detection or correction feature
    • 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/1171Parity-check or generator matrices with non-binary elements, e.g. for non-binary LDPC codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3723Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using means or methods for the initialisation of the decoder
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/611Specific encoding aspects, e.g. encoding by means of decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6577Representation or format of variables, register sizes or word-lengths and quantization

Landscapes

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

Abstract

에러 정정 장치는 각각이 하드 디시젼 비트 및 제1 비트 정밀도를 가지는 채널 신뢰도 값을 수신하고, 상기 채널 신뢰도 값에 근거하여 상기 하드 디시젼 비트에 대한 디코딩 동작의 이터레이션을 진행하도록 구성된 복수의 변수 노드부들; 및 각각이 상기 이터레이션에서, 상기 복수의 변수 노드부들 중 하나 이상의 연결된 변수 노드부들로부터 제2 비트 정밀도를 가지는 하나 이상의 참조 신뢰도 값들을 각각 수신하고, 상기 하나 이상의 참조 신뢰도 값들에 근거하여 상기 하나 이상의 연결된 변수 노드부들로 상기 제2 비트 정밀도를 가지는 하나 이상의 체크 신뢰도 값들을 각각 전송하도록 구성된 복수의 체크 노드부들을 포함하되, 상기 복수의 변수 노드부들 각각은 상기 이터레이션에서, 상기 복수의 체크 노드부들 중 하나 이상의 연결된 체크 노드부들로부터 하나 이상의 제1 체크 신뢰도 값들을 각각 수신하고, 상기 채널 신뢰도 값의 상기 제1 비트 정밀도 및 상기 하나 이상의 제1 체크 신뢰도 값들의 상기 제2 비트 정밀도를 확대하여 참조함으로써 상기 하드 디시젼 비트를 업데이트한다.

Description

에러 정정 장치 및 그것을 포함하는 전자 장치{ERROR CORRECTION DEVICE AND ELECTRONIC DEVICE INCLUDING THE SAME}
본 발명은 에러 정정 장치에 관한 것으로, 더욱 상세하게는 소정의 비트 정밀도에 따라 동작하는 에러 정정 장치에 관한 것이다.
에러 정정 장치는 통신 시스템 및 데이터 저장 시스템과 같은 데이터를 처리하는 다양한 전자 시스템에 적용되어 데이터에 발생한 에러를 정정할 수 있다.
에러 정정 장치는 에러 정정할 데이터 및 데이터의 신뢰도를 나타내는 신뢰도 데이터를 더 입력받고, 신뢰도 데이터에 근거하여 데이터의 에러를 정정할 수 있다.
에러 정정 장치는 소정 비트 정밀도의 제약 하에 동작할 수 있고, 이는 내부 연산 노드들 간의 전송 능력 또는 연산 능력을 제한할 수 있다. 비트 정밀도의 제약은 정확한 신뢰성 정보를 디코딩 동작에 반영하지 못하도록 하여 결과적으로 에러 정정 성능을 떨어트릴 수 있다. 에러 정정 장치의 비트 정밀도가 클수록 에러 정정 성능은 일반적으로 향상될 수 있지만, 비트 정밀도의 확장은 하드웨어 복잡성 및 소비 전력의 증가를 수반할 수 있다.
본 발명의 실시 예는 비트 정밀도를 한시적으로 확장하여 향상된 에러 정정 성능을 제공하는 에러 정정 장치 및 그것을 포함하는 전자 장치를 제공하는 데 있다.
본 발명의 실시 예에 따른 에러 정정 장치는 각각이 하드 디시젼 비트 및 제1 비트 정밀도를 가지는 채널 신뢰도 값을 수신하고, 상기 채널 신뢰도 값에 근거하여 상기 하드 디시젼 비트에 대한 디코딩 동작의 이터레이션을 진행하도록 구성된 복수의 변수 노드부들; 및 각각이 상기 이터레이션에서, 상기 복수의 변수 노드부들 중 하나 이상의 연결된 변수 노드부들로부터 제2 비트 정밀도를 가지는 하나 이상의 참조 신뢰도 값들을 각각 수신하고, 상기 하나 이상의 참조 신뢰도 값들에 근거하여 상기 하나 이상의 연결된 변수 노드부들로 상기 제2 비트 정밀도를 가지는 하나 이상의 체크 신뢰도 값들을 각각 전송하도록 구성된 복수의 체크 노드부들을 포함하되, 상기 복수의 변수 노드부들 각각은 상기 이터레이션에서, 상기 복수의 체크 노드부들 중 하나 이상의 연결된 체크 노드부들로부터 하나 이상의 제1 체크 신뢰도 값들을 각각 수신하고, 상기 채널 신뢰도 값의 상기 제1 비트 정밀도 및 상기 하나 이상의 제1 체크 신뢰도 값들의 상기 제2 비트 정밀도를 확대하여 상기 채널 신뢰도 값 및 상기 하나 이상의 제1 체크 신뢰도 값들을 참조함으로써 상기 하드 디시젼 비트를 업데이트할 수 있다.
본 발명의 실시 예에 따른 전자 장치는 복수의 메모리 셀들을 포함하고, 하드 리드 전압을 상기 복수의 메모리 셀들로 인가함으로써 상기 복수의 메모리 셀들로부터 하드 디시젼 비트들을 각각 리드하고, 복수의 소프트 리드 전압들을 상기 복수의 메모리 셀들로 인가함으로써 상기 복수의 메모리 셀들로부터 소프트 디시젼 비트 세트들을 각각 리드하도록 구성되되, 상기 소프트 리드 전압들은 상기 하드 리드 전압에 소정 오프셋 값들을 가감함으로써 생성되고, 상기 소프트 디시젼 비트 세트들 각각은 대응하는 메모리 셀의 문턱 전압과 상기 하드 리드 전압의 차이에 대한 정보를 포함하는, 메모리 장치; 상기 소프트 디시젼 비트 세트들에 근거하여 제1 비트 정밀도를 가지는 채널 신뢰도 값들을 결정하도록 구성된 채널 신뢰도 값 결정부; 및 상기 하드 디시젼 비트들 및 상기 채널 신뢰도 값들을 수신하고, 상기 채널 신뢰도 값들에 근거하여 상기 하드 디시젼 비트들에 대한 디코딩 동작을 수행하도록 구성된 디코더를 포함하되, 상기 디코더는, 각각이 상기 하드 디시젼 비트들 중 대응하는 하드 디시젼 비트 및 상기 채널 신뢰도 값들 중 대응하는 채널 신뢰도 값을 수신하고, 상기 채널 신뢰도 값에 근거하여 상기 디코딩 동작의 이터레이션을 진행하도록 구성된 복수의 변수 노드부들; 및 각각이 상기 이터레이션에서, 상기 복수의 변수 노드부들 중 하나 이상의 연결된 변수 노드부들로부터 제2 비트 정밀도를 가지는 하나 이상의 참조 신뢰도 값들을 각각 수신하고, 상기 하나 이상의 참조 신뢰도 값들에 근거하여 상기 하나 이상의 연결된 변수 노드부들로 상기 제2 비트 정밀도를 가지는 하나 이상의 체크 신뢰도 값들을 각각 전송하도록 구성된 복수의 체크 노드부들을 포함하되, 상기 복수의 변수 노드부들 각각은 상기 이터레이션에서, 상기 복수의 체크 노드부들 중 하나 이상의 연결된 체크 노드부들로부터 하나 이상의 제1 체크 신뢰도 값들을 각각 수신하고, 상기 채널 신뢰도 값의 상기 제1 비트 정밀도 및 상기 하나 이상의 제1 체크 신뢰도 값들의 상기 제2 비트 정밀도를 확대하여 상기 채널 신뢰도 값 및 상기 하나 이상의 제1 체크 신뢰도 값들을 참조함으로써 상기 하드 디시젼 비트를 업데이트할 수 있다.
본 발명의 실시 예에 따른 에러 정정 장치 및 그것을 포함하는 전자 장치는 내부에 적용된 비트 정밀도를 한시적으로 확장하여 디코딩 동작을 수행함으로써 향상된 에러 정정 성능을 제공할 수 있다.
도1은 본 발명의 실시 예에 따른 에러 정정 장치를 간략하게 도시하는 블록도,
도2는 본 발명의 실시 예에 따라 디코더에 포함된 변수 노드부들과 체크 노드부들을 예시적으로 도시한 블록도,
도3은 본 발명의 실시 예에 따라 도1의 에러 정정 장치를 보다 상세하게 도시한 블록도,
도4는 본 발명의 실시 예에 따라 도3의 변수 노드부를 상세하게 도시한 블록도,
도5는 본 발명의 실시 예에 따라 도3의 채널 신뢰도 값 결정부가 참조하는 채널 신뢰도 값 테이블을 예시적으로 도시하는 도면,
도6a 내지 도6c는 본 발명의 실시 예에 따라 도4의 변수 노드부의 최초 처리부가 디코딩 동작의 최초 이터레이션을 개시하는 방법을 도시하는 도면들,
도7a 및 도7b는 본 발명의 실시 예에 따라 도4의 변수 노드부가 디코딩 동작을 수행하는 방법을 예시적으로 설명하기 위한 도면들,
도8a 내지 도8c는 본 발명의 실시 예에 따라 도4의 변수 노드부가 디코딩 동작을 수행하는 방법을 예시적으로 설명하기 위한 도면들,
도9는 본 발명의 실시 예에 따라 도1의 에러 정정 장치의 동작 방법을 예시적으로 도시한 순서도,
도10은 본 발명의 실시 예에 따라 도3의 변수 노드부의 동작 방법을 예시적으로 도시한 순서도,
도11a 및 도11b는 본 발명의 실시 예에 따라 도6a 및 도6b의 변수 노드부의 동작 방법을 예시적으로 도시한 순서도들,
도12는 본 발명의 실시 예에 따라 도7의 변수 노드부의 동작 방법을 예시적으로 도시한 순서도,
도13a 및 도13b는 본 발명의 실시 예에 따라 도8a 및 도8c의 변수 노드부의 동작 방법들을 예시적으로 도시한 순서도들,
도14a는 본 발명의 실시 예에 따른 에러 정정 장치(20)를 예시적으로 도시한 블록도,
도14b는 본 발명의 실시 예에 따라 도14a의 채널 신뢰도 값 결정부(21)가 참조하는 채널 신뢰도 값 테이블(SCNVTB)을 예시적으로 도시하는 도면,
도15a는 본 발명의 실시 예에 따라 도3의 변수 노드부(VN21)를 상세하게 도시한 블록도,
도15b는 본 발명의 실시 예에 따라 도15a의 선-확대부(PREU)가 참조하는 선-확대 테이블(PRETB)을 예시적으로 도시하는 도면,
도16은 본 발명의 실시 예에 따라 도3의 변수 노드부가 이터레이션들을 반복하면서 서로 다른 확대 테이블들 및/또는 축소 테이블들을 사용하는 방법을 도시하는 도면,
도17은 본 발명의 실시 예에 따라 변수 노드부의 확대부가 서로 다른 확대 테이블들을 사용하는 방법을 예시적으로 도시하는 도면,
도18은 본 발명의 실시 예에 따라 변수 노드부의 확대부가 서로 다른 확대 테이블들을 사용하는 방법을 예시적으로 도시하는 도면,
도19는 본 발명의 실시 예에 따라 변수 노드부의 축소부가 서로 다른 축소 테이블들을 사용하는 방법을 예시적으로 도시하는 도면,
도20은 본 발명의 실시 예에 따라 변수 노드부들이 서로 다른 확대 테이블들 및 축소 테이블들을 사용하는 방법을 예시적으로 도시하는 도면,
도21은 본 발명의 실시 예에 따른 메모리 시스템을 도시한 블록도,
도22는 본 발명의 실시 예에 따라, 도19의 메모리 영역의 메모리 셀로부터 하드 디시젼 비트 및 소프트 디시젼 비트 세트를 리드하는 방법을 설명하기 위한 도면,
도 23은 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브(SSD)를 포함하는 데이터 처리 시스템을 예시적으로 도시하는 도면,
도 24는 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템을 예시적으로 도시하는 도면,
도 25는 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템을 예시적으로 도시하는 도면,
도 26은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 네트워크 시스템을 예시적으로 도시하는 도면,
도 27은 본 발명의 실시 예에 따른 메모리 시스템에 포함된 비휘발성 메모리 장치를 예시적으로 도시하는 블럭도이다.
본 발명의 이점 및 특징, 그리고 그것을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 통해 설명될 것이다. 그러나 본 발명은 여기에서 설명되는 실시 예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 본 실시 예들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 제공되는 것이다.
도면들에 있어서, 본 발명의 실시 예들은 도시된 특정 형태로 제한되는 것이 아니며 명확성을 기하기 위하여 과장된 것이다. 본 명세서에서 특정한 용어들이 사용되었으나. 이는 본 발명을 설명하기 위한 목적에서 사용된 것이며, 의미 한정이나 특허 청구 범위에 기재된 본 발명의 권리 범위를 제한하기 위하여 사용된 것은 아니다.
본 명세서에서 '및/또는'이란 표현은 전후에 나열된 구성요소들 중 적어도 하나를 포함하는 의미로 사용된다. 또한, '연결되는/결합되는'이란 표현은 다른 구성 요소와 직접적으로 연결되거나 다른 구성 요소를 통해서 간접적으로 연결되는 것을 포함하는 의미로 사용된다. 본 명세서에서 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 또한, 명세서에서 사용되는 '포함한다' 또는 '포함하는'으로 언급된 구성 요소, 단계, 동작 및 소자는 하나 이상의 다른 구성 요소, 단계, 동작 및 소자의 존재 또는 추가를 의미한다.
이하, 도면들을 참조하여 본 발명의 실시 예에 대해 상세히 설명하기로 한다.
도1은 본 발명의 실시 예에 따른 에러 정정 장치(10)를 간략하게 도시하는 블록도이다.
도1을 참조하면, 에러 정정 장치(10)는 하드 디시젼 비트들(HDD)에 포함된 에러 비트들을 정정하여 에러 정정된 비트들(CHDD)을 출력할 수 있다. 에러 정정 장치(10)는 하드 디시젼 비트들(HDD)에 포함된 에러 비트들을 정정하기 위해 하드 디시젼 비트들(HDD)에 각각 대응하는 소프트 디시젼 비트 세트들(SDD)을 함께 입력 받고 참조할 수 있다. 각 소프트 디시젼 비트 세트는 대응하는 하드 디시젼 비트가 얼마나 신뢰성 있는지를 나타내는 정보를 포함할 수 있다. 각 소프트 디시젼 비트 세트는 하나 이상의 소프트 디시젼 비트들로 구성될 수 있다.
구체적으로, 에러 정정 장치(10)는 채널 신뢰도 값 결정부(11) 및 디코더(12)를 포함할 수 있다.
채널 신뢰도 값 결정부(11)는 에러 정정 장치(10)의 외부로부터 하드 디시젼 비트들(HDD) 및 소프트 디시젼 비트 세트들(SDD)을 입력받을 수 있다. 채널 신뢰도 값 결정부(11)는 하드 디시젼 비트들(HDD) 및 소프트 디시젼 비트 세트들(SDD)에 근거하여 하드 디시젼 비트들(HDD)의 채널 신뢰도 값들(CNVD)을 결정하고, 디코더(12)로 전송할 수 있다. 각 채널 신뢰도 값은 대응하는 소프트 디시젼 비트 세트에 근거하여 생성되므로, 하드 디시젼 비트가 얼마나 신뢰성 있는지를 나타내는 정보를 포함할 수 있다. 다만 후술될 바와 같이, 채널 신뢰도 값들(CNVD)은 디코더(12)의 내부 유닛들의 처리 능력에 따른 소정의 비트 정밀도(bit-precision)를 가지도록 결정될 수 있다.
디코더(12)는 채널 신뢰도 값 결정부(11)로부터 하드 디시젼 비트들(HDD) 및 채널 신뢰도 값들(CNVD)을 수신하고, 채널 신뢰도 값들(CNVD)에 근거하여 하드 디시젼 비트들(HDD)에 대해 디코딩 동작을 수행할 수 있다. 디코더(12)는 디코딩 동작이 성공하면 에러 정정된 비트들(CHDD)을 출력할 수 있다. 미도시되었지만, 디코더(12)는 디코딩 동작이 실패하면 예를 들어 디코딩 실패 보고를 출력할 수 있다.
한편, 도1은 디코더(12)가 하드 디시젼 비트들(HDD)을 채널 신뢰도 값 결정부(11)로부터 수신하는 것으로 도시하지만, 실시 예에 따라, 디코더(12)는 하드 디시젼 비트들(HDD)을 채널 신뢰도 값 결정부(11)를 거치지 않고, 에러 정정 장치(10)의 외부로부터 바로 수신할 수도 있다.
디코더(12)는, 예를 들어, 이진 LDPC(Low Density Parity Check) 코드, 비이진 LDPC 코드, 또는 터보 곱 코드에 근거하여, 디코딩 동작을 수행할 수 있다. 그러나, 본 발명의 실시 예는 이에 제한되지 않는다.
아래에서 자세하게 살펴볼 바와 같이, 본 발명의 디코더(12)는 내부 유닛들의 처리 능력에 따라 채널 신뢰도 값들(CNVD)의 비트 정밀도가 한정되더라도, 채널 신뢰도 값들(CNVD)의 비트 정밀도를 일시적으로 확대하여 연산할 수 있다. 채널 신뢰도 값들(CNVD)은 비트 정밀도가 확대되면, 하드 디시젼 비트들(HDD)의 확률적 특징을 더 정확하게 반영할 수 있고, 따라서 디코더(12)의 디코딩 동작의 성능도 향상될 수 있다.
도2는 본 발명의 실시 예에 따라 디코더(12)에 포함된 변수 노드부들(VN)과 체크 노드부들(CN)을 예시적으로 도시한 블록도이다.
도2를 참조하면, 디코더(12)는 복수의 변수 노드부들(VN) 및 복수의 체크 노드부들(CN)을 포함할 수 있다.
체크 노드부들(CN)과 변수 노드부들(VN)은 디코더(12)에 적용된 에러 정정 알고리즘 또는 패리티 체크 행렬에 따라 연결부(CNT)를 통해 연결될 수 있다. 각 변수 노드부(VN)는 디코더(12)에 적용된 에러 정정 알고리즘 또는 패리티 체크 행렬에 근거하여 하나 이상의 체크 노드부들(CN)과 연결될 수 있다. 연결부(CNT)는 디코더(12)의 변수 노드부들(VN)과 체크 노드부들(CN) 사이의 연결들을 모두 포함할 수 있다.
변수 노드부들(VN)은 디코더(12)로 입력되는 도1의 하드 디시젼 비트들(HDD)을 각각 수신하고 처리하여, 에러 정정된 비트들(CHDD)을 출력할 수 있다. 구체적으로, 각 변수 노드부(VN)는 디코더(12)로 입력되는 하드 디시젼 비트들(HDD) 중 대응하는 하드 디시젼 비트를 수신할 수 있다. 각 변수 노드부(VN)는 자신과 연결된 체크 노드부들(CN)과 하드 디시젼 비트의 신뢰도 값을 교환함으로써 하드 디시젼 비트를 정정하고, 에러 정정된 비트를 출력할 수 있다.
도3은 본 발명의 실시 예에 따라 도1의 에러 정정 장치(10)를 보다 상세하게 도시한 블록도이다. 도3은 설명을 단순화하기 위해, 에러 정정 장치(10)에서 1비트의 하드 디시젼 비트(HD)에 대해 동작하는 구성을 구체적으로 도시한다. 하드 디시젼 비트(HD)는 에러 정정 장치(10)로 입력되는 복수의 하드 디시젼 비트들(HDD) 중 어느 하나일 수 있다. 에러 정정 장치(10)는 도3의 하드 디시젼 비트(HD)를 처리하는 방법과 동일하게 복수의 하드 디시젼 비트들(HDD) 각각을 처리할 수 있다. 예를 들어, 에러 정정 장치(10)는 도3에서 하드 디시젼 비트(HD)를 처리하는 방법에 따라, 복수의 하드 디시젼 비트들(HDD)을 동시에 처리할 수 있다.
도3을 참조하면, 에러 정정 장치(10)는 도1의 채널 신뢰도 값 결정부(11) 및 디코더(12)를 포함할 수 있다.
채널 신뢰도 값 결정부(11)는 에러 정정 장치(10)의 외부로부터 하드 디시젼 비트(HD) 및 소프트 디시젼 비트 세트(SD)를 입력 받을 수 있다. 소프트 디시젼 비트 세트(SD)는 하드 디시젼 비트(HD)가 얼마나 신뢰성 있는지를 나타내는 정보를 포함할 수 있다. 소프트 디시젼 비트 세트(SD)는 하나 이상의 소프트 디시젼 비트들로 구성될 수 있다.
채널 신뢰도 값 결정부(11)는 소프트 디시젼 비트 세트(SD)에 근거하여 하드 디시젼 비트(HD)의 채널 신뢰도 값(CNV)을 결정하고, 하드 디시젼 비트(HD)와 채널 신뢰도 값(CNV)을 디코더(12)로 전송할 수 있다. 채널 신뢰도 값 결정부(11)는 채널 신뢰도 값 테이블(CNVTB)을 참조하여 소프트 디시젼 비트 세트(SD)에 맵핑된 채널 신뢰도 값(CNV)을 결정할 수 있다.
채널 신뢰도 값 테이블(CNVTB)은 소프트 디시젼 비트 세트(SD)의 입력 값들에 각각 맵핑된 채널 신뢰도 값(CNV)의 출력 값들을 포함할 수 있다. 채널 신뢰도 값 테이블(CNVTB)에 포함된 소프트 디시젼 비트 세트(SD)의 입력 값들은 소프트 디시젼 비트 세트(SD)로서 채널 신뢰도 값 결정부(11)로 입력될 수 있는 모든 값들일 수 있다. 따라서, 채널 신뢰도 값 결정부(11)는 채널 신뢰도 값 테이블(CNVTB)에서, 소프트 디시젼 비트 세트(SD)의 입력 값에 맵핑된 출력 값을 채널 신뢰도 값(CNV)으로 결정할 수 있다.
한편, 채널 신뢰도 값 테이블(CNVTB)에 포함된 채널 신뢰도 값(CNV)의 출력 값들은, 상술한 바와 같이, 소정의 비트 정밀도를 가질 수 있다. 채널 신뢰도 값 테이블(CNVTB) 및 채널 신뢰도 값 결정부(11)의 동작 방법은 도5를 참조하여 상세하게 설명될 것이다.
디코더(12)는 하드 디시젼 비트(HD) 및 채널 신뢰도 값(CNV)을 수신하고 채널 신뢰도 값(CNV)에 근거하여 하드 디시젼 비트(HD)에 대해 디코딩 동작을 수행하여 에러 정정된 비트(CHD)를 출력할 수 있다. 만일 하드 디시젼 비트(HD)가 에러 비트라면, 디코더(12)는 하드 디시젼 비트(HD)를 플립하여 에러 정정된 비트(CHD)로 출력할 수 있다. 만일 하드 디시젼 비트(HD)가 에러 비트가 아니라면, 디코더(12)는 하드 디시젼 비트(HD)를 그대로 에러 정정된 비트(CHD)로 출력할 수 있다.
한편, 도3은 디코더(12)가 하드 디시젼 비트(HD)를 채널 신뢰도 값 결정부(11)로부터 수신하는 것으로 도시하지만, 실시 예에 따라, 디코더(12)는 하드 디시젼 비트(HD)를 채널 신뢰도 값 결정부(11)를 거치지 않고, 에러 정정 장치(10)의 외부로부터 바로 수신할 수도 있다.
디코더(12)는 변수 노드부(VN1), 체크 노드부들(CN1, CN2) 및 신드롬 체크부(SDRU)를 포함할 수 있다. 체크 노드부들(CN1, CN2) 및 신드롬 체크부(SDRU)는 변수 노드부(VN1)에 연결될 수 있다. 도3에서 변수 노드부(VN1)에 2개의 체크 노드부들(CN1, CN2)이 연결된 것은 예시일 뿐이고, 실시 예에 따라 변수 노드부(VN1)는 디코더(12)에 적용된 에러 정정 알고리즘 또는 패리티 체크 행렬에 근거하여 하나 이상의 체크 노드부들과 연결될 수 있다.
변수 노드부(VN1)는 하드 디시젼 비트(HD)와 채널 신뢰도 값(CNV)을 수신하고 디코딩 동작을 수행함으로써 에러 정정된 비트(CHD)를 출력할 수 있다.
변수 노드부(VN1)는 디코딩 동작에서, 1회 이상의 이터레이션들을 진행할 수 있다. 각 이터레이션은, 채널 신뢰도 값(CNV) 및 체크 노드부들(CN1, CN2)과 주고 받는 참조 신뢰도 값들(RFV1, RFV2)과 체크 신뢰도 값들(CKV1, CKV2)에 근거하여 하드 디시젼 비트(HD)를 업데이트하는 단계, 및 업데이트된 하드 디시젼 비트(UDHD)를 신드롬 체크부(SDRU)로 전송하여 디코딩 동작이 성공했는지를 판단하는 단계를 포함할 수 있다.
변수 노드부(VN1)는 디코딩 동작이 성공했을 때 업데이트된 하드 디시젼 비트(UDHD)를 에러 정정된 비트(CHD)로 출력하고, 더 이상 이터레이션을 진행하지 않고 디코딩 동작을 종료할 수 있다. 반면에 변수 노드부(VN1)는 디코딩 동작이 실패했을 때, 새로운 이터레이션을 진행할 수 있다. 변수 노드부(VN1)는 디코딩 동작이 계속 실패할 때, 이터레이션을 소정의 최대 이터레이션 횟수까지 반복할 수 있다. 변수 노드부(VN1)는 이터레이션을 소정의 최대 이터레이션 횟수까지 반복했음에도 디코딩 동작에 실패하면, 디코딩 동작을 종료하고 디코딩 실패 보고를 출력할 수 있다.
각 이터레이션에서 변수 노드부(VN1)는 체크 노드부들(CN1, CN2)과 참조 신뢰도 값들(RFV1, RFV2) 및 체크 신뢰도 값들(CKV1, CKV2)을 주고받으면서 소정의 연산 동작을 통해 하드 디시젼 비트(HD)를 업데이트할 수 있다. 참조 신뢰도 값들(RFV1, RFV2) 및 체크 신뢰도 값들(CKV1, CKV2)은 체크 노드부들(CN1, CN2)의 처리 능력에 따른 비트 정밀도를 가지도록 결정될 수 있다. 그러나, 변수 노드부(VN1)는 비트 정밀도를 일시적으로 확대하여 연산 동작을 수행할 수 있다. 변수 노드부(VN1)의 구성 및 동작 방법은 도4를 참조하여 상세하게 설명될 것이다.
체크 노드부들(CN1, CN2)은 각 이터레이션에서, 변수 노드부(VN1)로부터 참조 신뢰도 값들(RFV1, RFV2)을 각각 수신하고, 체크 신뢰도 값들(CKV1, CKV2)을 각각 변수 노드부(VN1)로 전송할 수 있다. 미도시되었지만, 체크 노드부들(CN1, CN2) 각각은 각 이터레이션에서, 변수 노드부(VN1)를 포함하여 자신과 연결된 하나 이상의 변수 노드부들로부터 참조 신뢰도 값들을 더 수신할 수 있다. 이러한 경우 체크 노드부들(CN1, CN2) 각각은 자신이 수신한 참조 신뢰도 값들에 근거하여 체크 신뢰도 값을 결정하고 변수 노드부(VN1)로 전송할 수 있다. 구체적으로, 체크 노드부들(CN1, CN2) 각각은 자신이 수신한 참조 신뢰도 값들에 근거하여 하드 디시젼 비트(HD)의 새로운 신뢰도 값으로서 체크 신뢰도 값을 결정할 수 있다.
예를 들어, 디코더(12)가 민-섬(min-sum) 알고리즘에 따라 동작할 때, 체크 노드부들(CN1, CN2) 각각은, 자신이 수신한 참조 신뢰도 값들 중 변수 노드부(VN1)로부터 전송된 참조 신뢰도 값을 제외한 나머지의 최솟값을 체크 신뢰도 값의 크기로 결정하고, 자신과 연결된 변수 노드부들의 하드 디시젼 비트들의 이진 합이 0이 되도록 체크 신뢰도 값의 부호를 결정함으로써 체크 신뢰도 값을 결정할 수 있다. 체크 노드부의 동작 방법은 종래 기술에 따를 수 있고, 따라서 자세한 설명은 생략될 것이다.
신드롬 체크부(SDRU)는 각 이터레이션에서, 변수 노드부(VN1)로부터 업데이트된 하드 디시젼 비트(UDHD)를 수신할 수 있다. 뿐만 아니라, 신드롬 체크부(SDRU)는 각 이터레이션에서, 디코더(12)에 포함된 복수의 변수 노드부들로부터 업데이트된 하드 디시젼 비트들을 각각 수신할 수 있다. 신드롬 체크부(SDRU)는 디코더(12)에 적용된 에러 정정 알고리즘 또는 패리티 체크 행렬에 근거하여, 업데이트된 하드 디시젼 비트들에 대해 신드롬 체크 동작을 수행함으로써 신드롬 벡터를 계산할 수 있다. 신드롬 체크부(SDRU)는 신드롬 벡터가 0만을 포함할 때, 디코딩 동작이 성공한 것으로 판단할 수 있다. 신드롬 체크부(SDRU)는 신드롬 벡터가 적어도 하나의 1을 포함할 때, 디코딩 동작이 실패한 것으로 판단할 수 있다. 신드롬 체크부(SDRU)는 그러한 디코딩 동작의 결과를 변수 노드부(VN1)로 전송할 수 있다. 신드롬 체크부(SDRU)의 동작 방법은 종래 기술에 따를 수 있고, 따라서 자세한 설명은 생략될 것이다.
도4는 본 발명의 실시 예에 따라 도3의 변수 노드부(VN1)를 상세하게 도시한 블록도이다.
도4를 참조하면, 변수 노드부(VN1)는 최초 처리부(INTU), 확대부(UPSU), 연산부(CALU), 및 축소부(DWSU)를 포함할 수 있다.
최초 처리부(INTU)는 도3의 채널 신뢰도 값 결정부(11)로부터 채널 신뢰도 값(CNV)을 수신하고, 디코딩 동작의 최초 이터레이션을 시작할 수 있다. 최초 처리부(INTU)는 최초 이터레이션에서, 채널 신뢰도 값(CNV)에 근거하여 참조 신뢰도 값들(RFV1, RFV2)을 결정하고 도3의 체크 노드부들(CN1, CN2)로 각각 전송할 수 있다.
실시 예에 따라, 최초 처리부(INTU)는 채널 신뢰도 값(CNV)을 그대로 참조 신뢰도 값들(RFV1, RFV2)로 결정할 수 있다. 실시 예에 따라, 최초 처리부(INTU)는 최초 테이블(INTTB)을 참조하여 참조 신뢰도 값들(RFV1, RFV2)을 결정할 수 있다. 최초 처리부(INTU)의 동작 방법은 도6a 및 도6b를 참조하여 상세하게 설명될 것이다.
확대부(UPSU)는 최초 이터레이션 및 이후의 각 이터레이션에서, 체크 노드부들(CN1, CN2)로부터 체크 신뢰도 값들(CKV1, CKV2)을 수신할 수 있다. 확대부(UPSU)는 확대 테이블(UPSTB)에 근거하여, 채널 신뢰도 값(CNV)에 맵핑된 확대된 채널 신뢰도 값(UCNV)을 결정하고 체크 신뢰도 값들(CKV1, CKV2)에 맵핑된 확대된 체크 신뢰도 값들(UCKV1, UCKV2)을 결정하여, 연산부(CALU)로 전송할 수 있다. 확대부(UPSU)는 확대 테이블(UPSTB)에 근거하여 채널 신뢰도 값(CNV)의 비트 정밀도와 체크 신뢰도 값들(CKV1, CKV2)의 비트 정밀도를 확대할 수 있다.
한편, 확대부(UPSU)는 최초 이터레이션이 진행될 때 채널 신뢰도 값(CNV)을 수신하여 저장하고, 이후의 각 이터레이션에서 저장된 채널 신뢰도 값(CNV)을 사용할 수 있다. 확대부(UPSU)의 동작 방법은 도7을 참조하여 상세하게 설명될 것이다.
연산부(CALU)는 최초 이터레이션 및 이후의 각 이터레이션에서, 확대된 채널 신뢰도 값(UCNV)과 확대된 체크 신뢰도 값들(UCKV1, UCKV2)에 근거하여 하드 디시젼 비트(HD)를 업데이트하고, 업데이트된 하드 디시젼 비트(UDHD)를 도3의 신드롬 체크부(SDRU)로 전송할 수 있다. 그리고 연산부(CALU)는 신드롬 체크부(SDRU)로부터 디코딩 동작의 성공을 보고받으면, 업데이트된 하드 디시젼 비트(UDHD)를 에러 정정된 비트(CHD)로서 출력하고 디코딩 동작을 종료할 수 있다. 이러한 연산부(CALU)의 동작 방법은 도7을 참조하여 상세하게 설명될 것이다.
반면에 연산부(CALU)는 신드롬 체크부(SDRU)로부터 디코딩 동작의 실패를 보고받으면, 현재 이터레이션 횟수를 최대 이터레이션 횟수와 비교하여, 후속 이터레이션을 시작할 수 있다. 연산부(CALU)는 후속 이터레이션에서, 이전 이터레이션에서 결정된 확대된 채널 신뢰도 값(UCNV)과 확대된 체크 신뢰도 값들(UCKV1, UCKV2)에 근거하여 체크 노드부들(CN1, CN2)에 각각 대응하는 확대된 참조 신뢰도 값들(URFV1, URFV2)을 결정하고 축소부(DWSU)로 전송할 수 있다. 이러한 연산부(CALU)의 동작 방법은 도8a 및 도8b를 참조하여 상세하게 설명될 것이다.
축소부(DWSU)는 최초 이터레이션이 아닌 이후의 각 이터레이션에서, 연산부(CALU)로부터 체크 노드부들(CN1, CN2)에 각각 대응하는 확대된 참조 신뢰도 값들(URFV1, URFV2)을 수신할 수 있다. 축소부(DWSU)는 축소 테이블(DWSTB)에 근거하여, 확대된 참조 신뢰도 값들(URFV1, URFV2)에 맵핑된 참조 신뢰도 값들(RFV1, RFV2)을 결정하고, 체크 노드부들(CN1, CN2)로 전송할 수 있다. 즉, 축소부(DWSU)는 축소 테이블(DWSTB)에 근거하여 확대된 참조 신뢰도 값들(URFV1, URFV2)의 비트 정밀도를 축소할 수 있다. 축소부(DWSU)의 동작 방법은 도8a 및 도8b를 참조하여 상세하게 설명될 것이다.
한편, 도3의 채널 신뢰도 값 테이블(CNVTB) 및 도4의 최초 테이블(INTTB), 확대 테이블(UPSTB), 및 축소 테이블(DWSTB)은 에러 정정 장치(10)의 외부로부터 제공되고 에러 정정 장치(10) 내부의 메모리에 저장됨으로써 사용되거나, 에러 정정 장치(10) 내부의 비휘발성 테이블 메모리에 저장되어 있고 해당 비휘발성 테이블 메모리로부터 리드됨으로써 사용될 수 있다.
도5는 본 발명의 실시 예에 따라 도3의 채널 신뢰도 값 결정부(11)가 참조하는 채널 신뢰도 값 테이블(CNVTB)을 예시적으로 도시하는 도면이다. 이하에서, 도5를 참조하여 채널 신뢰도 값 테이블(CNVTB)의 구성과 채널 신뢰도 값 결정부(11)가 채널 신뢰도 값 테이블(CNVTB)을 참조하여 채널 신뢰도 값(CNV)을 결정하는 방법이 설명될 것이다.
도5를 참조하면, 채널 신뢰도 값 테이블(CNVTB)은 하드 디시젼 비트(HD) 및 소프트 디시젼 비트 세트(SD)의 입력 값들(SD1~SD8)에 맵핑된 채널 신뢰도 값(CNV)의 출력 값들을 포함할 수 있다.
소프트 디시젼 비트 세트(SD)의 입력 값들(SD1~SD8)은 소프트 디시젼 비트 세트(SD)로서 채널 신뢰도 값 결정부(11)로 입력될 수 있는 모든 값들일 수 있다.
채널 신뢰도 값(CNV)의 출력 값들은 소프트 디시젼 비트 세트(SD)의 입력 값에 따라 채널 신뢰도 값(CNV)으로 결정되는 값들일 수 있다. 채널 신뢰도 값(CNV)의 출력 값들은 0부터 3까지의 크기를 가지고, - 또는 +의 부호를 가질 수 있다. 채널 신뢰도 값(CNV)의 크기는 하드 디시젼 비트(HD)의 신뢰도를 나타내고, 부호는 하드 디시젼 비트(HD)가 1인지 0인지를 나타낼 수 있다.
따라서, 채널 신뢰도 값 결정부(11)는 채널 신뢰도 값 테이블(CNVTB)에서, 소프트 디시젼 비트 세트(SD)의 입력 값에 맵핑된 출력 값을 하드 디시젼 비트(HD)의 채널 신뢰도 값(CNV)으로 결정할 수 있다. 예를 들어, 채널 신뢰도 값 결정부(11)는 하드 디시젼 비트(HD)가 1이고 소프트 디시젼 비트 세트(SD)가 입력 값(SD3)을 가질 때, 채널 신뢰도 값 테이블(CNVTB)에서 입력 값(SD3)에 맵핑된 출력 값 -1을 하드 디시젼 비트(HD)의 채널 신뢰도 값(CNV)으로 결정할 수 있다.
한편, 채널 신뢰도 값 테이블(CNVTB)에 포함된 채널 신뢰도 값(CNV)의 출력 값들은, 아래 [식1]의 로그 우도비(이하, LLR)의 추정 값들일 수 있다. [식1]에서, x는 채널로 입력된 값이고, y는 채널로부터 디코더(12)가 수신한 값일 수 있다. 즉, y는 하드 디시젼 비트(HD)를 의미하고, x는 하드 디시젼 비트(HD)의 올바른 값(즉, 에러 정정된 비트(CHD))를 의미할 수 있다.
[식1] LLR=log(P(y|x=0)/P(y|x=1)).
[식1]에 따른 실제 LLR은 산출하기 어렵고, 채널 신뢰도 값(CNV)으로서 디코더(12)로 입력되면 디코더(12)의 연산을 너무 복잡하게 할 수 있다. 따라서, 디코더(12)의 연산을 단순화하기 위해, 실제 LLR 대신 소정의 정수들, 예를 들어, 도5에 도시된 바와 같이, -3부터 3까지의 정수들이 채널 신뢰도 값(CNV)의 출력 값들로 설정될 수 있다. 여기서, 채널 신뢰도 값(CNV)의 출력 값들은 소정의 비트 정밀도를 가지도록 선택될 수 있다.
비트 정밀도는 도2의 디코더(12)에서 각 변수 노드부(VN1)와 각 체크 노드부 사이의 정보 전송 능력을 의미할 수 있다. 비트 정밀도는 체크 노드부의 처리/연산 능력에 따라 결정될 수 있다. 체크 노드부의 처리/연산 능력이 높을 때 비트 정밀도가 높을 수 있다. 따라서, 체크 노드부의 처리/연산 능력은 디코딩 성능과 직결되므로, 비트 정밀도가 높을수록 디코더(12)는 높은 성능으로 동작할 수 있다.
간략하게, 디코더(12)의 비트 정밀도는 각 이터레이션에서 각 변수 노드부와 각 체크 노드부 사이에서 전송가능한 비트들의 수로 나타낼 수 있다. 디코더(12)의 비트 정밀도가 p비트이고, 이와 동일하게 채널 신뢰도 값(CNV)의 비트 정밀도가 p비트로 결정될 때, 채널 신뢰도 값 테이블(CNVTB)에 포함된 채널 신뢰도 값(CNV)의 출력 값들은 0부터 (2^(p-1))-1까지의 크기를 가질 수 있다. 예를 들어, 비트 정밀도가 3비트일 때, 채널 신뢰도 값(CNV)의 출력 값들은 도5에 도시된 바와 같이 2비트를 사용하여 0부터 3까지의 크기를 가지도록 제한될 수 있다. 즉, 비트 정밀도의 3비트 중 2비트가 채널 신뢰도 값(CNV)의 크기 정보를 나타내는데 사용될 수 있다. 비트 정밀도의 3비트 중 1비트는 + 또는 -의 채널 신뢰도 값(CNV)의 부호 정보를 나타내는데 사용될 수 있다.
도6a 내지 도6c는 본 발명의 실시 예에 따라 도4의 변수 노드부(VN1)의 최초 처리부(INTU)가 디코딩 동작의 최초 이터레이션을 개시하는 방법을 도시하는 도면들이다.
도6a를 참조하면, 최초 처리부(INTU)는 도3의 채널 신뢰도 값 결정부(11)로부터 채널 신뢰도 값(CNV)을 수신하고 디코딩 동작의 최초 이터레이션을 개시할 수 있다.
최초 처리부(INTU)는 최초 이터레이션에서, 채널 신뢰도 값(CNV)을 그대로 참조 신뢰도 값들(RFV1, RFV2)로서 체크 노드부들(CN1, CN2)로 전송할 수 있다. 즉, 디코딩 동작의 최초 이터레이션에서는 변수 노드부(VN1)가 가지고 있는 정보가 채널 신뢰도 값(CNV)뿐이므로, 최초 처리부(INTU)는 채널 신뢰도 값(CNV)을 그대로 체크 노드부들(CN1, CN2)로 전송할 수 있다.
다른 실시 예로서, 도6b를 참조하면, 최초 처리부(INTU)는 채널 신뢰도 값 결정부(11)로부터 채널 신뢰도 값(CNV)을 수신하고, 최초 테이블(INTTB)을 참조하여 채널 신뢰도 값(CNV)에 맵핑된 참조 신뢰도 값들(RFV1, RFV2)을 결정하고 체크 노드부들(CN1, CN2)로 전송할 수 있다.
도6c를 참조하면, 최초 처리부(INTU)가 참조하는 최초 테이블(INTTB)이 예시적으로 도시된다. 최초 테이블(INTTB)은 채널 신뢰도 값(CNV)의 입력 값들(IN)에 맵핑된 출력 값들(OUT)을 포함할 수 있다. 최초 테이블(INTTB)의 입력 값들(IN)은 채널 신뢰도 값(CNV)으로서 최초 처리부(INTU)로 입력될 수 있는 모든 값들일 수 있다. 최초 테이블(INTTB)의 출력 값들(OUT)은 입력 값(IN)에 따라 참조 신뢰도 값들(RFV1, RFV2)로서 선택되는 값들일 수 있다. 예를 들어, 채널 신뢰도 값(CNV)의 입력 값들(IN)과 출력 값들(OUT)은 각각 동일할 수 있다. 예를 들어, 최초 처리부(INTU)는 채널 신뢰도 값(CNV)의 입력 값(IN)이 -2일 때, 최초 테이블(INTTB)에서 입력 값(IN) -2에 맵핑된 출력 값(OUT) -2를 참조 신뢰도 값들(RFV1, RFV2)로 결정할 수 있다.
이제, 체크 노드부들(CN1, CN2)은 참조 신뢰도 값들(RFV1, RFV2)에 근거하여 도4의 체크 신뢰도 값들(CKV1, CKV2)을 결정하고 변수 노드부(VN1)로 각각 전송할 수 있다. 후술될 설명은 최초 이터레이션 및 이후의 각 이터레이션에서 변수 노드부(VN1)가 체크 노드부들(CN1, CN2)로부터 체크 신뢰도 값들(CKV1, CKV2)을 수신한 뒤 동작하는 방법에 관한 것이다.
도7a 및 도7b는 본 발명의 실시 예에 따라 도4의 변수 노드부(VN1)가 디코딩 동작을 수행하는 방법을 예시적으로 설명하기 위한 도면들이다.
도7a를 참조하면, 최초 이터레이션 및 이후의 각 이터레이션에서, 확대부(UPSU)가 체크 노드부들(CN1, CN2)로부터 체크 신뢰도 값들(CKV1, CKV2)을 수신할 수 있다. 한편, 도7a는 변수 노드부(VN1)가 채널 신뢰도 값(CNV) 및 하드 디시젼 비트(HD)도 수신하는 것으로 도시하나, 변수 노드부(VN1)는 각 이터레이션에서 채널 신뢰도 값(CNV) 및 하드 디시젼 비트(HD)를 매번 수신하는 것은 아니고, 최초 이터레이션이 시작할 때 수신하여 저장함으로써 각 이터레이션에서 사용할 수 있다.
확대부(UPSU)는 확대 테이블(UPSTB)에 근거하여, 채널 신뢰도 값(CNV)에 맵핑된 확대된 채널 신뢰도 값(UCNV)을 결정하고 체크 신뢰도 값들(CKV1, CKV2)에 맵핑된 확대된 체크 신뢰도 값들(UCKV1, UCKV2)을 결정할 수 있다. 그리고 확대부(UPSU)는 확대된 채널 신뢰도 값(UCNV) 및 확대된 체크 신뢰도 값들(UCKV1, UCKV2)을 연산부(CALU)로 전송할 수 있다.
도7b는 확대 테이블(UPSTB)을 예시적으로 도시한다. 확대 테이블(UPSTB)은 입력 값들(IN)에 각각 맵핑된 출력 값들(OUT)을 포함할 수 있다. 확대 테이블(UPSTB)의 입력 값들(IN)은 채널 신뢰도 값(CNV) 및 체크 신뢰도 값들(CKV1, CKV2)로서 확대부(UPSU)로 입력될 수 있는 모든 값들일 수 있다. 확대 테이블(UPSTB)의 출력 값들(OUT)은 입력 값에 따라 확대된 채널 신뢰도 값(UCNV)과 확대된 체크 신뢰도 값들(UCKV1, UCKV2)로서 선택되는 값들일 수 있다.
예를 들어, 채널 신뢰도 값(CNV)이 -2일 때, 확대부(UPSU)는 확대 테이블(UPSTB)을 참조하여 입력 값(IN) -2에 맵핑된 출력 값(OUT) -9를 확대된 채널 신뢰도 값(UCNV)으로 결정할 수 있다. 확대된 체크 신뢰도 값들(UCKV1, UCKV2)도 이와 유사하게 결정될 수 있다. 채널 신뢰도 값(CNV)과 체크 신뢰도 값들(CKV1, CKV2)은 모두 동일한 비트 정밀도를 가지도록 결정될 것이므로, 확대 테이블(UPSTB)의 입력 값들(IN)은 채널 신뢰도 값(CNV)과 체크 신뢰도 값들(CKV1, CKV2)에게 동일하게 적용될 수 있다.
한편, 확대 테이블(UPSTB)의 출력 값들(OUT)은 [식1]의 LLR들을 상수배한 정수들일 수 있다. 즉, 확대 테이블(UPSTB)의 출력 값들(OUT)의 비는 LLR들의 비와 동일할 수 있다. 확대 테이블(UPSTB)에 근거하여 확대된 채널 신뢰도 값(UCNV)과 확대된 체크 신뢰도 값들(UCKV1, UCKV2)로 변환하는 것은, LLR들의 비를 유지하기 위해 채널 신뢰도 값(CNV)과 체크 신뢰도 값들(CKV1, CKV2)의 비트 정밀도를 일시적으로 확대하는 것일 수 있다.
다시 도7a를 참조하면, 연산부(CALU)는 확대된 채널 신뢰도 값(UCNV)과 확대된 체크 신뢰도 값들(UCKV1, UCKV2)에 근거하여 최종 신뢰도 값(FV)을 결정할 수 있다. 예를 들어, 디코더(12)가 민-섬 알고리즘에 따라 동작할 때, 연산부(CALU)는 확대된 채널 신뢰도 값(UCNV)과 확대된 체크 신뢰도 값들(UCKV1, UCKV2)을 합산하여 최종 신뢰도 값(FV)을 결정할 수 있다.
결과적으로 연산부(CALU)는 비트 정밀도의 제한없이 실제 LLR들의 비를 유지하면서 최종 신뢰도 값(FV)을 결정하고, 이에 따라, 소정의 비트 정밀도로 제한된 최종 신뢰도 값(FV)을 결정할 때 발생되는 왜곡을 방지할 수 있다. 즉, 본 발명에 따른 최종 신뢰도 값(FV)은 하드 디시젼 비트(HD)의 신뢰도를 보다 정확하게 나타낼 수 있다. 또한, 본 발명에 따르면, 기존의 체크 노드부(CN)에 대한 구조적 변화없이 변수 노드부(VN1)에 확대부(UPSU) 및 축소부(DWSU)를 포함시킴으로써 디코딩 동작의 성능을 향상시킬 수 있다.
이어서 연산부(CALU)가 최종 신뢰도 값(FV)에 근거하여 하드 디시젼 비트(HD)를 업데이트할 수 있다. 예를 들어, 디코더(12)가 민-섬 알고리즘에 따라 동작할 때, 연산부(CALU)는 최종 신뢰도 값(FV)의 부호에 근거하여 하드 디시젼 비트(HD)를 업데이트할 수 있다. 구체적으로, 연산부(CALU)는 최종 신뢰도 값(FV)의 부호가 마이너스일 때 하드 디시젼 비트(HD)를 1로 업데이트하고, 최종 신뢰도 값(FV)의 부호가 플러스일 때 하드 디시젼 비트(HD)를 0으로 업데이트할 수 있다.
이제, 연산부(CALU)는 신드롬 체크부(SDRU)로 업데이트된 하드 디시젼 비트(UDHD)를 전송할 수 있다.
신드롬 체크부(SDRU)는 변수 노드부(VN1)로부터 업데이트된 하드 디시젼 비트(UDHD)를 수신할 뿐만 아니라 디코더(12)에 포함된 복수의 변수 노드부들로부터 업데이트된 하드 디시젼 비트들을 각각 수신할 수 있다. 신드롬 체크부(SDRU)는 업데이트된 하드 디시젼 비트들에 대해 신드롬 체크 동작을 수행할 수 있다. 신드롬 체크부(SDRU)는 신드롬 체크 동작에 근거하여 디코딩 동작의 결과를 연산부(CALU)로 전송할 수 있다.
연산부(CALU)는 디코딩 동작이 성공했을 때, 업데이트된 하드 디시젼 비트(UDHD)를 에러 정정된 비트(CHD)로서 출력할 수 있다. 반면에 연산부(CALU)는 디코딩 동작이 실패했을 때, 현재 이터레이션 횟수가 최대 이터레이션 횟수 미만이면, 후술될 바와 같이 후속 이터레이션을 개시할 수 있다. 후술될 설명은 변수 노드부(VN1)가 최초 이터레이션이 아닌 이후의 각 이터레이션을 개시하는 방법에 관한 것이다.
도8a 내지 도8c는 본 발명의 실시 예에 따라 도4의 변수 노드부(VN1)가 디코딩 동작을 수행하는 방법을 예시적으로 설명하기 위한 도면들이다.
도8a를 참조하면, 연산부(CALU)는 각 이터레이션에서 신드롬 체크부(SDRU)로부터 디코딩 동작의 실패를 보고받고 후속 이터레이션을 개시할 수 있다. 연산부(CALU)는 이전 이터레이션에서 결정된 확대된 채널 신뢰도 값(UCNV)과 확대된 체크 신뢰도 값들(UCKV1, UCKV2)에 근거하여 체크 노드부들(CN1, CN2)에 각각 대응하는 확대된 참조 신뢰도 값들(URFV1, URFV2)을 결정하고, 축소부(DWSU)로 전송할 수 있다.
예를 들어, 디코더(12)가 민-섬 알고리즘에 따라 동작할 때, 연산부(CALU)는 체크 노드부들(CN1, CN2) 각각에 대해 이전 이터레이션에서 수신한 외재적 정보(extrinsic information)를 확대하고 합산함으로써, 체크 노드부들(CN1, CN2)에 각각 대응하는 확대된 참조 신뢰도 값들(URFV1, URFV2)을 결정할 수 있다. 일반적으로, 각 체크 노드부의 외재적 정보는, 이전 이터레이션에서 변수 노드부로 전송된 체크 신뢰도 값들 중 해당 체크 노드부로부터 전송된 체크 신뢰도 값을 제외한 나머지 체크 신뢰도 값들과 채널 신뢰도 값을 포함할 수 있다. 예를 들어, 도7을 참조하면, 체크 노드부(CN1)의 외재적 정보는 채널 신뢰도 값(CNV)과 체크 노드부(CN2)의 체크 신뢰도 값(CKV2)이고, 체크 노드부(CN2)의 외재적 정보는 채널 신뢰도 값(CNV)과 체크 노드부(CN1)의 체크 신뢰도 값(CKV1)일 수 있다.
다시 도8a를 참조하면, 연산부(CALU)는 체크 노드부들(CN1, CN2) 각각에 대해 확대된 외재적 정보의 합을 체크 노드부에 대응하는 확대된 참조 신뢰도 값으로 결정할 수 있다.
구체적으로, 체크 노드부(CN1)의 확대된 외재적 정보는 확대된 채널 신뢰도 값(UCNV) 및 확대된 체크 신뢰도 값(UCKV2)일 수 있다. 따라서, 연산부(CALU)는 확대된 채널 신뢰도 값(UCNV) 및 확대된 체크 신뢰도 값(UCKV2)을 합산하여 체크 노드부(CN1)에 대응하는 확대된 참조 신뢰도 값(URFV1)을 결정할 수 있다.
또한 체크 노드부(CN2)의 확대된 외재적 정보는 확대된 채널 신뢰도 값(UCNV) 및 확대된 체크 신뢰도 값(UCKV1)일 수 있다. 따라서, 연산부(CALU)는 확대된 채널 신뢰도 값(UCNV) 및 확대된 체크 신뢰도 값(UCKV1)을 합산하여 체크 노드부(CN2)에 대응하는 확대된 참조 신뢰도 값(URFV2)을 결정할 수 있다.
실시 예에 따라, 연산부(CALU)는 확대된 채널 신뢰도 값(UCNV) 및/또는 확대된 체크 신뢰도 값들(UCKV1, UCKV2)을 선택적으로 스케일링/상수배하고, 그들의 합산 값을 선택적으로 스케일링/상수배함으로써 확대된 참조 신뢰도 값들(URFV1, URFV2)을 결정할 수 있다.
이어서, 축소부(DWSU)가 축소 테이블(DWSTB)에 근거하여, 확대된 참조 신뢰도 값들(URFV1, URFV2)에 맵핑된 참조 신뢰도 값들(RFV1, RFV2)을 결정하고, 체크 노드부들(CN1, CN2)로 전송할 수 있다.
도8b는 확대 테이블(UPSTB)을 예시적으로 도시한다. 축소 테이블(DWSTB)은 입력 값(IN)의 범위들에 각각 맵핑된 출력 값들(OUT)을 포함할 수 있다. 축소 테이블(DWSTB)의 입력 값(IN)의 범위들은 확대된 참조 신뢰도 값들(URFV1, URFV2)로서 축소부(DWSU)로 입력될 수 있는 값의 범위들일 수 있다. 축소 테이블(DWSTB)의 출력 값들(OUT)은 입력 값(IN)에 따라 참조 신뢰도 값들(RFV1, RFV2)로서 선택되는 값들일 수 있다.
예를 들어, 확대된 참조 신뢰도 값(URFV1)의 입력 값(IN)이 -5일 때, 축소부(DWSU)는 축소 테이블(DWSTB)을 참조하여, 입력 값(IN) -5를 포함하는 -6부터 -3까지의 범위에 맵핑된 출력 값(OUT) -1을 참조 신뢰도 값(RFV1)으로 결정할 수 있다.
실시 예에 따라, 축소 테이블(DWSTB)의 입력 값(IN)의 범위들은 도7b의 확대 테이블(UPSTB)의 출력 값들(OUT)을 각각 포함할 수 있다.
한편, 축소 테이블(DWSTB)의 출력 값들(OUT)은 참조 신뢰도 값들(RFV1, RFV2)으로서 체크 노드부들(CN1, CN2)로 전송될 값이기 때문에, 체크 노드부들(CN1, CN2)의 비트 정밀도를 가지도록 결정될 수 있다. 즉, 축소 테이블(DWSTB)의 출력 값들(OUT)은 도5의 채널 신뢰도 값 테이블(CNVTB)의 채널 신뢰도 값(CNV)의 출력 값들(OUT)과 동일한 범위 내의 정수들로 구성될 수 있다.
다시 도8a를 참조하면, 연산부(CALU)는 LLR들의 비를 유지하면서 비트 정밀도의 제한 없이 확대된 참조 신뢰도 값들(URFV1, URFV2)을 결정하고, 축소부(DWSU)는 확대된 참조 신뢰도 값들(URFV1, URFV2)을 체크 노드부들(CN1, CN2)에 대한 비트 정밀도를 가지도록 축소시킬 수 있다. 따라서, 소정의 비트 정밀도의 제한 하에 참조 신뢰도 값들(RFV1, RFV2)을 결정할 때 발생되는 왜곡이 방지될 수 있다.
이후, 체크 노드부들(CN1, CN2)은 참조 신뢰도 값들(RFV1, RFV2)에 근거하여 도4의 체크 신뢰도 값들(CKV1, CKV2)을 결정하고 변수 노드부(VN1)로 각각 전송할 수 있다. 변수 노드부(VN1)는 체크 노드부들(CN1, CN2)로부터 체크 신뢰도 값들(CKV1, CKV2)을 수신하고 도7a의 동작을 진행할 것이다.
도8c는 도8a와 비교하여 연산부(CALU)의 계산 방법에 있어서 차이가 있다. 도8c를 참조하여 도8a와의 차이점을 우선적으로 설명하면, 연산부(CALU)는 체크 노드부들(CN1, CN2) 각각에 대응하는 참조 신뢰도 값을 최종 신뢰도 값(FV)에서 해당 체크 노드부의 확대된 체크 신뢰도 값을 차감함으로써 결정할 수 있다. 즉, 최종 신뢰도 값(FV)은 확대된 채널 신뢰도 값(UCNV)과 확대된 체크 신뢰도 값들(UCKV1, UCKV2)의 합이므로, 도8c의 연산부(CALU)가 결정한 확대된 참조 신뢰도 값들(URFV1, URFV2)은 도8a의 연산부(CALU)가 결정한 확대된 참조 신뢰도 값들(URFV1, URFV2)과 동일할 수 있다. 도8c의 나머지 동작은 도8a의 동작과 실질적으로 동일하므로 상세한 설명은 생략될 것이다.
도9는 본 발명의 실시 예에 따라 도1의 에러 정정 장치(10)의 동작 방법을 예시적으로 도시한 순서도이다.
도9을 참조하면, 단계(S110)에서, 채널 신뢰도 값 결정부(11)는 하드 디시젼 비트들(HDD) 및 소프트 디시젼 비트 세트들(SDD)을 수신할 수 있다. 소프트 디시젼 비트들은 하드 디시젼 비트들(HDD)에 각각 대응할 수 있다. 각 소프트 디시젼 비트 세트(SD)는 대응하는 하드 디시젼 비트(HD)가 얼마나 신뢰성 있는지를 나타내는 정보를 포함할 수 있다.
단계(S120)에서, 채널 신뢰도 값 결정부(11)는 하드 디시젼 비트들(HDD) 및 소프트 디시젼 비트 세트들(SDD)에 근거하여 하드 디시젼 비트들(HDD)의 채널 신뢰도 값들(CNVD)을 결정할 수 있다. 채널 신뢰도 값들(CNVD)은 소프트 디시젼 비트 세트들(SDD)에 각각 대응할 수 있다. 각 채널 신뢰도 값(CNV)은 대응하는 소프트 디시젼 비트 세트(SD)에 근거하여 결정될 수 있다. 채널 신뢰도 값 결정부(11)는 하드 디시젼 비트들(HDD) 및 채널 신뢰도 값들(CNVD)을 디코더(12)로 전송할 수 있다.
단계(S130)에서, 디코더(12)는 하드 디시젼 비트들(HDD) 및 채널 신뢰도 값들(CNVD)을 수신하고 채널 신뢰도 값들(CNVD)에 근거하여 하드 디시젼 비트들(HDD)에 대해 디코딩 동작을 수행할 수 있다.
단계(S140)에서, 디코더(12)는 디코딩 동작의 결과에 따라 에러 정정된 비트들(CHDD)을 출력할 수 있다. 구체적으로, 디코더(12)는 디코딩 동작이 성공할 때, 에러 정정된 비트들(CHDD)을 출력할 수 있다. 반면에 디코더(12)는 디코딩 동작이 실패할 때는, 디코딩 실패 보고를 출력할 수 있다.
도10은 본 발명의 실시 예에 따라 도3의 변수 노드부(VN1)의 동작 방법을 예시적으로 도시한 순서도이다. 도10의 절차는 하드 디시젼 비트들(HDD)에 대해 디코딩 동작을 수행하는 도9의 단계(S130)에 포함될 수 있다. 도2의 복수의 변수 노드부들 각각은, 대표적으로, 도3의 변수 노드부(VN1)는, 디코딩 동작을 수행할 때, 10의 절차에 따라 동작할 수 있다.
도10을 참조하면, 단계(S210)에서, 변수 노드부(VN1)는 하드 디시젼 비트(HD) 및 채널 신뢰도 값(CNV)을 수신할 수 있다.
단계(S220)에서, 변수 노드부(VN1)는 이터레이션 횟수(i)를 1로 설정할 수 있다.
단계(S230)에서, 변수 노드부(VN1)는 채널 신뢰도 값(CNV)에 근거하여 참조 신뢰도 값들(RFV1, RFV2)을 결정하고 체크 노드부들(CN1, CN2)로 전송할 수 있다. 체크 노드부들(CN1, CN2) 각각은 자신과 연결된 하나 이상의 변수 노드부들로부터 참조 신뢰도 값들을 수신하고, 참조 신뢰도 값들에 근거하여 체크 신뢰도 값을 결정할 수 있다.
단계(S240)에서, 변수 노드부(VN1)는 체크 노드부들(CN1, CN2)로부터 체크 신뢰도 값들(CKV1, CKV2)을 수신하고, 채널 신뢰도 값(CNV)과 체크 신뢰도 값들(CKV1, CKV2)의 비트 정밀도를 확대하여 연산함으로써 하드 디시젼 비트(HD)를 업데이트할 수 있다. 구체적으로, 변수 노드부(VN1)는 채널 신뢰도 값(CNV)과 체크 신뢰도 값들(CKV1, CKV2)의 비트 정밀도를 확대하여 연산함으로써 최종 신뢰도 값(FV)을 결정하고, 최종 신뢰도 값(FV)에 따라 하드 디시젼 비트(HD)를 업데이트할 수 있다.
단계(S250)에서, 변수 노드부(VN1)는 업데이트된 하드 디시젼 비트(UDHD)를 신드롬 체크부(SDRU)로 전송할 수 있다. 신드롬 체크부(SDRU)는 디코더(12)에 포함된 변수 노드부들로부터 업데이트된 하드 디시젼 비트들을 수신하고, 업데이트된 하드 디시젼 비트들에 대해 신드롬 체크 동작을 수행하여 디코딩 동작의 결과를 판단하고, 디코딩 동작의 결과를 변수 노드부들로 전송할 수 있다.
단계(S260)에서, 변수 노드부(VN1)는 디코딩 동작이 성공했는지 여부를 판단할 수 있다. 디코딩 동작이 성공한 경우, 절차는 단계(S270)로 진행될 수 있다. 그러나 디코딩 동작이 실패한 경우, 절차는 단계(S280)로 진행될 수 있다.
단계(S270)에서, 디코딩 동작이 성공한 경우, 변수 노드부(VN1)는 업데이트된 하드 디시젼 비트(UDHD)를 에러 정정된 비트(CHD)로서 출력할 수 있다. 따라서 절차는 종료될 수 있다.
단계(S280)에서, 디코딩 동작이 실패한 경우, 변수 노드부(VN1)는 이터레이션 횟수(i)가 최대 이터레이션 횟수에 도달했는지 여부를 결정할 수 있다. 이터레이션 횟수(i)가 최대 이터레이션 횟수에 도달한 경우, 절차는 종료될 수 있다. 이러한 경우, 디코더(12)는 디코딩 실패 보고를 출력할 수 있다. 이터레이션 횟수(i)가 최대 이터레이션 횟수에 아직 도달하지 않은 경우, 절차는 단계(S290)로 진행될 수 있다.
단계(S290)에서, 변수 노드부(VN1)는 이터레이션 횟수(i)를 증가시킬 수 있다. 즉, 디코딩 동작의 새로운 이터레이션이 시작될 수 있다.
단계(S300)에서, 변수 노드부(VN1)는 이전 이터레이션의 채널 신뢰도 값(CNV) 및 체크 신뢰도 값들(CKV1, CKV2)의 비트 정밀도를 확대하여 연산함으로써 체크 노드부들(CN1, CN2)에 각각 대응하는 참조 신뢰도 값들(RFV1, RFV2)을 결정하고, 참조 신뢰도 값들(RFV1, RFV2)을 체크 노드부들(CN1, CN2)로 전송할 수 있다. 체크 노드부들(CN1, CN2)은 자신과 연결된 하나 이상의 변수 노드부들로부터 참조 신뢰도 값들을 각각 수신하고, 참조 신뢰도 값들에 근거하여 체크 신뢰도 값들(CKV1, CKV2)을 결정할 수 있다. 이제 절차는 단계(S240)로 진행될 수 있다. 즉, 변수 노드부(VN1)는 새로운 이터레이션에서 단계들(S240~S290)을 반복할 수 있다.
한편, 변수 노드부(VN1)는 해당 단계(S300)에서 확대 테이블(UPSTB)에 근거하여 이전 이터레이션의 채널 신뢰도 값(CNV) 및 체크 신뢰도 값들(CKV1, CKV2)의 비트 정밀도를 확대하는 단계를 별도로 진행하거나, 단계(S240)의 이전 이터레이션에서 결정한 확대된 채널 신뢰도 값(UCNV) 및 확대된 체크 신뢰도 값들(UCKV1, UCKV2)을 재사용할 수도 있다.
도11a 및 도11b는 본 발명의 실시 예에 따라 도6a 및 도6b의 변수 노드부(VN1)의 동작 방법을 예시적으로 도시한 순서도들이다. 도11a 및 도11b의 절차들은 도10의 단계(S230)의 구체적인 실시 예들일 수 있다. 도11a 및 도11b의 절차는 변수 노드부(VN1)가 디코딩 동작의 최초 이터레이션을 시작함으로써 진행될 수 있다.
도11a를 참조하면, 단계(S311)에서, 변수 노드부(VN1)의 최초 처리부(INTU)는 채널 신뢰도 값(CNV)을 그대로 참조 신뢰도 값들(RFV1, RFV2)로서 체크 노드부들(CN1, CN2)로 전송할 수 있다.
도11b를 참조하면, 단계(S321)에서, 최초 처리부(INTU)는 최초 테이블(INTTB)에 근거하여 채널 신뢰도 값(CNV)에 맵핑된 참조 신뢰도 값들(RFV1, RFV2)을 결정할 수 있다.
단계(S322)에서, 최초 처리부(INTU)는 참조 신뢰도 값들(RFV1, RFV2)을 체크 노드부들(CN1, CN2)로 전송할 수 있다.
도12는 본 발명의 실시 예에 따라 도7의 변수 노드부(VN1)의 동작 방법을 예시적으로 도시한 순서도이다. 도12의 절차는 도10의 단계(S240)의 구체적인 실시 예일 수 있다. 도12의 절차는 변수 노드부(VN1)가 최초 이터레이션 및 이후의 각 이터레이션에서 체크 노드부들(CN1, CN2)로부터 체크 신뢰도 값들(CKV1, CKV2)을 수신함으로써 진행될 수 있다.
도12를 참조하면, 단계(S410)에서, 확대부(UPSU)는 체크 노드부들(CN1, CN2)로부터 체크 신뢰도 값들(CKV1, CKV2)을 수신할 수 있다.
단계(S420)에서, 확대부(UPSU)는 확대 테이블(UPSTB)에 근거하여 채널 신뢰도 값(CNV)과 체크 신뢰도 값들(CKV1, CKV2)에 맵핑된 확대된 채널 신뢰도 값(UCNV)과 확대된 체크 신뢰도 값들(UCKV1, UCKV2)을 결정할 수 있다.
단계(S430)에서, 연산부(CALU)는 확대된 채널 신뢰도 값(UCNV)과 확대된 체크 신뢰도 값들(UCKV1, UCKV2)에 근거하여 최종 신뢰도 값(FV)을 결정할 수 있다. 예를 들어, 디코더(12)가 민-섬 알고리즘에 따라 동작할 때, 연산부(CALU)는 확대된 채널 신뢰도 값(UCNV)과 확대된 체크 신뢰도 값들(UCKV1, UCKV2)을 합산하여 최종 신뢰도 값(FV)을 결정할 수 있다.
단계(S440)에서, 연산부(CALU)는 최종 신뢰도 값(FV)에 근거하여 하드 디시젼 비트(HD)를 업데이트할 수 있다. 예를 들어, 디코더(12)가 민-섬 알고리즘에 따라 동작할 때, 연산부(CALU)는 최종 신뢰도 값(FV)의 부호에 근거하여 하드 디시젼 비트(HD)를 업데이트할 수 있다.
도13a 및 도13b는 본 발명의 실시 예에 따라 도8a 및 도8c의 변수 노드부(VN1)의 동작 방법들을 예시적으로 도시한 순서도들이다. 도13a 및 도13b의 절차들은 도10의 단계(S300)의 구체적인 실시 예들일 수 있다. 도13a 및 도13b의 절차는 변수 노드부(VN1)가 최초 이터레이션이 아닌 이후의 각 이터레이션을 시작함으로써 진행될 수 있다.
도13a를 참조하면, 단계(S511)에서, 연산부(CALU)는 이전 이터레이션의 확대된 채널 신뢰도 값(UCNV)과 확대된 체크 신뢰도 값들(UCKV1, UCKV2)에 근거하여 체크 노드부들(CN1, CN2)에 각각 대응하는 확대된 참조 신뢰도 값들(URFV1, URFV2)을 결정할 수 있다. 연산부(CALU)는 이전 이터레이션의 확대된 채널 신뢰도 값(UCNV)과 확대된 체크 신뢰도 값들(UCKV1, UCKV2)을 도12의 단계(S420)에서 확대부(UPSU)에 의해 결정된 값들로 사용할 수 있다. 연산부(CALU)는 체크 노드부들(CN1, CN2) 각각에 대해 외재적 정보(extrinsic information)를 합산함으로써 해당 체크 노드부에 대응하는 확대된 참조 신뢰도 값을 결정할 수 있다.
단계(S512)에서, 축소부(DWSU)는 축소 테이블(DWSTB)에 근거하여 확대된 참조 신뢰도 값들(URFV1, URFV2)에 맵핑된 참조 신뢰도 값들(RFV1, RFV2)을 결정할 수 있다.
단계(S513)에서, 축소부(DWSU)는 참조 신뢰도 값들(RFV1, RFV2)을 체크 노드부들(CN1, CN2)로 각각 전송할 수 있다.
도13b를 참조하면, 단계(S521)에서, 연산부(CALU)는 이전 이터레이션의 최종 신뢰도 값(FV)과 확대된 체크 신뢰도 값들(UCKV1, UCKV2)에 근거하여 체크 노드부들(CN1, CN2)에 대응하는 확대된 참조 신뢰도 값들(URFV1, URFV2)을 결정할 수 있다. 연산부(CALU)는 이전 이터레이션의 최종 신뢰도 값(FV)을 도12의 단계(S430)에서 연산부(CALU)에 의해 결정된 값으로 사용할 수 있다. 연산부(CALU)는 이전 이터레이션의 확대된 체크 신뢰도 값들(UCKV1, UCKV2)을 도12의 단계(S420)에서 확대부(UPSU)에 의해 결정된 값들로 사용할 수 있다. 연산부(CALU)는 체크 노드부들(CN1, CN2) 각각에 대해 최종 신뢰도 값(FV)에서 해당 체크 노드부의 확대된 체크 신뢰도 값을 차감함으로써 해당 체크 노드부에 대응하는 확대된 참조 신뢰도 값을 결정할 수 있다.
단계(S522)에서, 축소부(DWSU)는 축소 테이블(DWSTB)에 근거하여 확대된 참조 신뢰도 값들(URFV1, URFV2)에 맵핑된 참조 신뢰도 값들(RFV1, RFV2)을 결정할 수 있다.
단계(S523)에서, 축소부(DWSU)는 참조 신뢰도 값들(RFV1, RFV2)을 체크 노드부들(CN1, CN2)로 각각 전송할 수 있다.
도14a는 본 발명의 실시 예에 따른 에러 정정 장치(20)를 예시적으로 도시한 블록도이다.
도14a를 참조하면, 에러 정정 장치(20)는 도1의 채널 신뢰도 값 결정부(21) 및 디코더(22)를 포함할 수 있다. 채널 신뢰도 값 결정부(21)는 소프트 디시젼 비트 세트(SD)에 근거하여 하드 디시젼 비트(HD)의 외부 채널 신뢰도 값(SCNV)을 결정하고, 하드 디시젼 비트(HD)와 외부 채널 신뢰도 값(SCNV)을 디코더(22)로 전송할 수 있다. 채널 신뢰도 값 결정부(21)는 채널 신뢰도 값 테이블(SCNVTB)을 참조하여 소프트 디시젼 비트 세트(SD)에 맵핑된 외부 채널 신뢰도 값(SCNV)을 결정할 수 있다.
채널 신뢰도 값 결정부(21)에서 출력되는 외부 채널 신뢰도 값(SCNV)의 비트 정밀도(이하, 채널 비트 정밀도)는 체크 노드부들(CN1, CN2)의 연산/처리 능력에 따라 결정되는 비트 정밀도(이하, 디코더 비트 정밀도)보다 낮을 수 있다. 이것은 도3의 에러 정정 장치(10)에서 채널 비트 정밀도가 디코더 비트 정밀도와 동일하도록 결정되는 점과 차이점일 수 있다. 이를 제외하면 에러 정정 장치(20)는 도3의 에러 정정 장치(10)와 유사할 수 있고, 이하에서 에러 정정 장치(10)와의 차이점을 중심으로 에러 정정 장치(20)의 특징이 설명될 것이다.
도14b는 본 발명의 실시 예에 따라 도14a의 채널 신뢰도 값 결정부(21)가 참조하는 채널 신뢰도 값 테이블(SCNVTB)을 예시적으로 도시하는 도면이다.
도14b를 참조하면, 도5의 채널 신뢰도 값 테이블(CNVTB)과 유사하게, 채널 신뢰도 값 테이블(SCNVTB)은 하드 디시젼 비트(HD) 및 소프트 디시젼 비트 세트(SD)의 입력 값들(SD1~SD8)에 맵핑된 외부 채널 신뢰도 값(SCNV)의 출력 값들을 포함할 수 있다. 외부 채널 신뢰도 값(SCNV)의 출력 값들은 0 또는 1의 크기를 가지고, - 또는 +의 부호를 가질 수 있다. 즉, 외부 채널 신뢰도 값(SCNV)은 2비트의 비트 정밀도를 가질 수 있다. 이때, 디코더(12)의 디코더 비트 정밀도는, 예를 들어, 3비트일 수 있다. 즉, 에러 정정 장치(20)에서 채널 비트 정밀도는 디코더 비트 정밀도보다 낮을 수 있다.
다시 도14a를 참조하면, 디코더(22)는 하드 디시젼 비트(HD) 및 외부 채널 신뢰도 값(SCNV)을 수신하고 외부 채널 신뢰도 값(SCNV)에 근거하여 하드 디시젼 비트(HD)에 대해 디코딩 동작을 수행하여 에러 정정된 비트(CHD)를 출력할 수 있다.
디코더(22)는 변수 노드부(VN21), 체크 노드부들(CN1, CN2) 및 신드롬 체크부(SDRU)를 포함할 수 있다. 도14a의 체크 노드부들(CN1, CN2) 및 신드롬 체크부(SDRU)는 도3의 체크 노드부들(CN1, CN2) 및 신드롬 체크부(SDRU)와 동일하게 동작할 수 있다.
변수 노드부(VN21)는 하드 디시젼 비트(HD)와 외부 채널 신뢰도 값(SCNV)을 수신하고 디코딩 동작을 수행함으로써 에러 정정된 비트(CHD)를 출력할 수 있다. 특히, 후술될 바와 같이, 변수 노드부(VN21)는 우선 외부 채널 신뢰도 값(SCNV)의 채널 비트 정밀도를 디코더 비트 정밀도로 확장할 수 있다.
도15a는 본 발명의 실시 예에 따라 도3의 변수 노드부(VN21)를 상세하게 도시한 블록도이다.
도15a를 참조하면, 변수 노드부(VN21)는 선-확대부(PREU), 최초 처리부(INTU), 확대부(UPSU), 연산부(CALU), 및 축소부(DWSU)를 포함할 수 있다.
선-확대부(PREU)는 도14a의 채널 신뢰도 값 결정부(21)로부터 외부 채널 신뢰도 값(SCNV)을 수신하고, 선-확대 테이블(PRETB)에 근거하여, 외부 채널 신뢰도 값(SCNV)에 맵핑된 채널 신뢰도 값(CNV)을 결정하여 최초 처리부(INTU) 및 확대부(UPSU)로 전송할 수 있다. 선-확대부(PREU)는 선-확대 테이블(PRETB)에 근거하여 외부 채널 신뢰도 값(SCNV)의 채널 비트 정밀도를 디코더 비트 정밀도로 확대할 수 있다.
도15b는 본 발명의 실시 예에 따라 도15a의 선-확대부(PREU)가 참조하는 선-확대 테이블(PRETB)을 예시적으로 도시하는 도면이다.
도15b 참조하면, 선-확대 테이블(PRETB)은 입력 값들(IN)에 각각 맵핑된 출력 값들(OUT)을 포함할 수 있다. 확대 테이블(UPSTB)의 입력 값들(IN)은 외부 채널 신뢰도 값(SCNV)으로서 선-확대부(PREU)로 입력될 수 있는 모든 값들일 수 있다. 선-확대 테이블(PRETB)의 출력 값들(OUT)은 입력 값에 따라 채널 신뢰도 값(CNV)으로서 선택되는 값들일 수 있다.
상술한 바와 같이 외부 채널 신뢰도 값(SCNV)의 채널 비트 정밀도는 2비트이고, 디코더 비트 정밀도는 3비트일 수 있다. 따라서, 2비트의 채널 비트 정밀도를 3비트로 확대하기 위해, 선-확대 테이블(PRETB)의 출력 값들(OUT)은 3비트의 비트 정밀도를 가지는 값들 중에서 선택될 수 있다. 즉, 선-확대 테이블(PRETB)의 출력 값들(OUT)의 크기는 0부터 3에서 선택될 수 있다. 도15b에서 출력 값들(OUT)의 크기는 1 또는 3이지만, 실시 예에 따라 0 또는 2를 가질 수도 있다.
다시 도15a를 참조하면, 외부 채널 신뢰도 값(SCNV)의 채널 비트 정밀도가 디코더 비트 정밀도와 동일하게 확대된 뒤, 채널 신뢰도 값(CNV)으로서 변환되었으므로, 도15a의 최초 처리부(INTU), 확대부(UPSU), 연산부(CALU), 및 축소부(DWSU)는 도4의 최초 처리부(INTU), 확대부(UPSU), 연산부(CALU), 및 축소부(DWSU)와 동일하게 동작할 수 있다.
한편, 상술한 실시 예에서, 이터레이션이 반복될 때, 도4의 변수 노드부(VN1)는 계속 동일한 확대 테이블(UPSTB) 및 축소 테이블(DWSTB)을 사용할 수 있다. 또한, 각 이터레이션에서 도2의 디코더(12)에 포함된 복수의 변수 노드부들(VN)은 동일한 확대 테이블(UPSTB) 및 동일한 축소 테이블(DWSTB)을 사용할 수 있다.
후술될 실시 예들에 따르면, 변수 노드부(VN1)는 복수의 확대 테이블들 및/또는 복수의 축소 테이블들을 사용할 수 있다.
도16은 본 발명의 실시 예에 따라 도3의 변수 노드부(VN1)가 이터레이션들(ITR1, ITR2)을 반복하면서 서로 다른 확대 테이블들(UPSTB1, UPSTB2) 및/또는 축소 테이블들(DWSTB1, DWSTB2)을 사용하는 방법을 도시하는 도면이다.
도16을 참조하면, 이터레이션들(ITR1, ITR2)이 반복될 때, 변수 노드부(VN1)의 확대부(UPSU)는 제1 이터레이션(ITR1)에서 제1 확대 테이블(UPSTB1)을 사용하고, 제2 이터레이션(ITR2)에서 제1 확대 테이블(UPSTB1)과 다른 제2 확대 테이블(UPSTB2)을 사용할 수 있다. 이터레이션들(ITR1, ITR2)이 반복될 때, 변수 노드부(VN1)의 축소부(DWSU)는 제1 이터레이션(ITR1)에서 제1 축소 테이블(DWSTB1)을 사용하고, 제2 이터레이션(ITR2)에서 제1 축소 테이블(DWSTB1)과 다른 제2 축소 테이블(DWSTB2)을 사용할 수 있다.
실시 예에 따라, 이터레이션들(ITR1, ITR2)이 반복될 때, 확대 테이블(UPSTB)과 축소 테이블(DWSTB)을 모두 변경하거나 둘 중 어느 하나만 변경할 수 있다.
제1 및 제2 확대 테이블들(UPSTB1, UPSTB2) 및 제1 및 제2 축소 테이블들(DWSTB1, DWSTB2)은 에러 정정 장치(10)의 외부로부터 제공되거나 에러 정정 장치(10) 내부의 테이블 메모리에 저장될 수 있다.
실시 예에 따라, 변수 노드부(VN1)는 테이블 선택부(미도시됨)을 더 포함할 수 있다. 테이블 선택부는 각 이터레이션에서 사용할 확대 테이블(UPSTB) 및 축소 테이블(DWSTB)을 선택할 수 있다. 테이블 선택부는 선택한 확대 테이블(UPSTB) 및 축소 테이블(DWSTB)을 에러 정정 장치(10)의 외부로 요청하거나, 에러 정정 장치(10)의 내부의 테이블 메모리로부터 리드할 수 있다.
실시 예에 따라, 테이블 선택부는 제1 및 제2 확대 테이블들(UPSTB1, UPSTB2) 및 제1 및 제2 축소 테이블들(DWSTB1, DWSTB2)을 기본 확대 테이블 및 기본 축소 테이블에 소정의 조정 값을 가감함으로써 생성할 수 있다. 기본 확대 테이블, 기본 축소 테이블 및 조정 값은 에러 정정 장치(10)의 외부로부터 제공되거나 에러 정정 장치(10) 내부의 테이블 메모리에 저장될 수 있다.
실시 예에 따라, 이터레이션들(ITR1, ITR2)이 반복될 때 제1 및 제2 확대 테이블들(UPSTB1, UPSTB2) 및 제1 및 제2 축소 테이블들(DWSTB1, DWSTB2)의 적용 순서는 미리 설정된 시퀀스들에 따를 수 있다. 실시 예에 따라, 복수의 확대 테이블들의 시퀀스 및/또는 복수의 축소 테이블들의 시퀀스가 미리 설정되어 있고, 각 이터레이션에서 사용할 확대 테이블 및/또는 축소 테이블은 해당 시퀀스들에서 순차적으로 선택될 수 있다.
한편, 신드롬 체크부(SDRU)로 전송되는 업데이트된 하드 디시젼 비트들이 더 많은 에러 비트들을 포함할수록, 신드롬 체크부(SDRU)가 계산한 신드롬 벡터는 대체적으로 더 많은 1들을 포함할 수 있다. 실시 예에 따라, 이전 이터레이션에서 계산된 신드롬 벡터의 1의 개수에 따라, 후속 이터레이션에서 사용될 제2 확대 테이블(UPSTB2) 및/또는 제2 축소 테이블(DWSTB2)이 선택될 수 있다. 이전 이터레이션에서 계산된 신드롬 벡터에 포함된 1의 개수에 따라 후속 이터레이션에서 어떤 확대 테이블 및/또는 축소 테이블이 선택되는지는, 미리 설정되어 있을 수 있다.
도17은 본 발명의 실시 예에 따라 변수 노드부(VN1)의 확대부(UPSU)가 서로 다른 확대 테이블들(UPSTB1, UPSTB2)을 사용하는 방법을 예시적으로 도시하는 도면이다.
도17을 참조하면, 확대부(UPSU)는 디코딩 동작의 어떤 이터레이션에서 채널 신뢰도 값(CNV)과 체크 신뢰도 값들(CKV1, CKV2)에 대해 서로 다른 확대 테이블들(UPSTB1, UPSTB2)을 사용할 수 있다. 예를 들어, 확대부(UPSU)는 채널 신뢰도 값(CNV)에 대해 제1 확대 테이블(UPSTB1)을 사용하여 확대된 채널 신뢰도 값(UCNV)을 결정할 수 있다. 그리고, 확대부(UPSU)는 체크 신뢰도 값들(CKV1, CKV2)에 대해 제2 확대 테이블(UPSTB2)을 사용하여 확대된 체크 신뢰도 값들(UCKV1, UCKV2)을 결정할 수 있다.
만일 변수 노드부(VN1)에 셋 이상의 체크 노드부들이 연결된 경우, 확대부(UPSU)는 해당 체크 노드부들로부터 전송된 체크 신뢰도 값들에 대해 제2 확대 테이블(UPSTB2)을 사용할 수 있다.
도18은 본 발명의 실시 예에 따라 변수 노드부(VN1)의 확대부(UPSU)가 서로 다른 확대 테이블들(UPSTB1~UPSTB3)을 사용하는 방법을 예시적으로 도시하는 도면이다.
도18을 참조하면, 확대부(UPSU)는 디코딩 동작의 어떤 이터레이션에서 채널 신뢰도 값(CNV)과 체크 신뢰도 값들(CKV1, CKV2) 모두에 대해 서로 다른 확대 테이블들(UPSTB1~UPSTB3)을 사용할 수 있다. 예를 들어, 확대부(UPSU)는 채널 신뢰도 값(CNV)에 대해 제1 확대 테이블(UPSTB1)을 사용하여 확대된 채널 신뢰도 값(UCNV)을 결정할 수 있다. 그리고, 확대부(UPSU)는 체크 신뢰도 값(CKV1)에 대해 제2 확대 테이블(UPSTB2)을 사용하여 확대된 체크 신뢰도 값(UCKV1)을 결정할 수 있다. 그리고, 확대부(UPSU)는 체크 신뢰도 값(CKV2)에 대해 제3 확대 테이블(UPSTB3)을 사용하여 확대된 체크 신뢰도 값(UCKV2)을 결정할 수 있다.
만일 변수 노드부(VN1)에 셋 이상의 체크 노드부들이 연결된 경우, 확대부(UPSU)는 해당 체크 노드부들로부터 전송된 체크 신뢰도 값들 중 적어도 하나에 대해 제2 확대 테이블(UPSTB2)을 사용하고, 적어도 다른 하나에 대해 제3 확대 테이블(UPSTB3)을 사용할 수 있다.
도19는 본 발명의 실시 예에 따라 변수 노드부(VN1)의 축소부(DWSU)가 서로 다른 축소 테이블들(DWSTB1, DWSTB2)을 사용하는 방법을 예시적으로 도시하는 도면이다.
도19를 참조하면, 축소부(DWSU)는 디코딩 동작의 어떤 이터레이션에서 체크 노드부들(CN1, CN2)에 각각 대응하는 확대된 참조 신뢰도 값들(URFV1, URFV2)에 대해 서로 다른 축소 테이블들(DWSTB1, DWSTB2)을 사용할 수 있다. 즉, 축소부(DWSU)는 체크 노드부 별로 서로 다른 축소 테이블들(DWSTB1, DWSTB2)을 사용할 수 있다. 예를 들어, 축소부(DWSU)는 체크 노드부(CN1)에 대응하는 확대된 참조 신뢰도 값(URFV1)에 대해 제1 축소 테이블(DWSTB1)을 사용하여 참조 신뢰도 값(RFV1)을 결정할 수 있다. 그리고, 축소부(DWSU)는 체크 노드부(CN2)에 대응하는 확대된 참조 신뢰도 값(URFV2)에 대해 제2 축소 테이블(DWSTB2)을 사용하여 참조 신뢰도 값(RFV2)을 결정할 수 있다.
만일 변수 노드부(VN1)에 셋 이상의 체크 노드부들이 연결된 경우, 축소부(DWSU)는 해당 체크 노드부들에 각각 대응하는 확대된 참조 신뢰도 값들(URFV1, URFV2) 중 적어도 하나에 대해 제1 축소 테이블(DWSTB1)을 사용하고, 적어도 다른 하나에 대해 제2 축소 테이블(DWSTB2)을 사용할 수 있다.
도20은 본 발명의 실시 예에 따라 변수 노드부들이 서로 다른 확대 테이블들(UPSTB1, UPSTB2) 및 축소 테이블들(DWSTB1, DWSTB2)을 사용하는 방법을 예시적으로 도시하는 도면이다.
도20을 참조하면, 디코더(12)는 제1 변수 노드부(VN1)와 제2 변수 노드부(VN2)를 포함할 수 있다. 제1 변수 노드부(VN1)와 제2 변수 노드부(VN2)는 디코딩 동작의 어떤 이터레이션에서 서로 다른 확대 테이블들(UPSTB1, UPSTB2) 및/또는 축소 테이블들(DWSTB1, DWSTB2)을 사용할 수 있다. 예를 들어, 제1 변수 노드부(VN1)는 제1 확대 테이블(UPSTB1) 및 제1 축소 테이블(DWSTB1)을 사용하고, 제2 변수 노드부(VN2)는 제2 확대 테이블(UPSTB2) 및 제2 축소 테이블(DWSTB2)을 사용할 수 있다.
디코더(12)가 복수의 변수 노드부들(VN)을 포함할 때, 적어도 하나의 변수 노드부(VN)의 제1 그룹이 제1 확대 테이블(UPSTB1) 및 제1 축소 테이블(DWSTB1)을 사용하고, 적어도 다른 하나의 변수 노드부(VN)의 제2 그룹이 제2 확대 테이블(UPSTB2) 및 제2 축소 테이블(DWSTB2)을 사용할 수 있다. 실시 예에 따라, 제1 그룹과 제2 그룹은 랜덤하게 결정될 수 있다. 실시 예에 따라, 제1 그룹과 제2 그룹은 각 변수 노드부에 연결된 체크 노드부들의 개수에 의해 구분될 수 있다. 예를 들어, 제1 그룹의 각 변수 노드부는 1개의 체크 노드부와 연결되고, 제2 그룹의 각 변수 노드부는 2개의 체크 노드부들과 연결될 수 있다.
실시 예에 따라, 도16 내지 도20의 복수의 확대 테이블들 및/또는 축소 테이블들을 사용하는 방법들이 조합될 수 있다.
도21은 본 발명의 실시 예에 따른 메모리 시스템(100)을 도시한 블록도이다.
도21을 참조하면, 메모리 시스템(100)은 외부의 호스트 장치의 라이트 요청에 응답하여, 호스트 장치로부터 제공된 데이터를 저장하도록 구성될 수 있다. 또한, 메모리 시스템(100)은 호스트 장치의 리드 요청에 응답하여, 저장된 데이터를 호스트 장치로 제공하도록 구성될 수 있다.
메모리 시스템(100)은 PCMCIA(Personal Computer Memory Card International Association) 카드, CF(Compact Flash) 카드, 스마트 미디어 카드, 메모리 스틱, 다양한 멀티 미디어 카드(MMC, eMMC, RS-MMC, MMC-micro), SD(Secure Digital) 카드(SD, Mini-SD, Micro-SD), UFS(Universal Flash Storage) 또는 SSD(Solid State Drive) 등으로 구성될 수 있다.
메모리 시스템(100)은 컨트롤러(110) 및 메모리 장치(120)를 포함할 수 있다.
컨트롤러(110)는 메모리 시스템(100)의 제반 동작을 제어할 수 있다. 컨트롤러(110)는 호스트 장치의 요청을 처리하기 위해서 메모리 장치(120)를 액세스할 수 있다. 또한, 컨트롤러(110)는 호스트 장치의 요청과 무관하게 메모리 시스템(100)의 내부 관리 동작 또는 백그라운드 동작을 수행하기 위해서 메모리 장치(120)를 액세스할 수 있다. 메모리 장치(120)로의 액세스는 라이트 액세스 및 리드 액세스를 포함할 수 있다.
컨트롤러(110)는 에러 정정 회로(111)를 포함할 수 있다. 에러 정정 회로(111)는 메모리 장치(120)의 메모리 영역(121)으로부터 리드된 하드 디시젼 비트들(HDD) 및 소프트 디시젼 비트 세트들(SDD)에 대해 에러 정정 동작을 수행하고 에러 정정된 비트들(CHDD)을 출력할 수 있다. 에러 정정 회로(111)는 도1의 에러 정정 장치(10) 또는 도14a의 에러 정정 장치(20)를 포함할 수 있다.
메모리 장치(120)는 컨트롤러(110)의 제어에 따라, 컨트롤러(110)로부터 전송된 데이터를 저장하고, 저장된 데이터를 리드하여 컨트롤러(110)로 전송할 수 있다. 메모리 장치(120)는 메모리 영역(121)을 포함할 수 있다. 메모리 영역(121)은 복수의 메모리 셀들(미도시됨)을 포함할 수 있다.
메모리 장치(120)는 비휘발성 메모리 장치 및 휘발성 메모리 장치를 포함할 수 있다. 비휘발성 메모리 장치는 낸드 플래시(NAND Flash) 또는 노어 플래시(NOR Flash)와 같은 플래시 메모리 장치, FeRAM(Ferroelectrics Random Access Memory), PCRAM(Phase-Change Random Access Memory), MRAM(Magnetic Random Access Memory) 또는 ReRAM(Resistive Random Access Memory) 등을 포함할 수 있다. 휘발성 메모리 장치는 DRAM(Dynamic Random Access Memory) 또는 SRAM(Static Random Access Memory) 등을 포함할 수 있다.
도22은 본 발명의 실시 예에 따라, 도21의 메모리 영역(121)의 메모리 셀로부터 하드 디시젼 비트(HD) 및 소프트 디시젼 비트 세트(SD)를 리드하는 방법을 설명하기 위한 도면이다.
도22를 참조하면, 메모리 영역(121)에 포함된 복수의 메모리 셀들은 저장된 데이터에 따라 문턱 전압 분포들(DST1, DST2)을 형성할 수 있다. 가로축(Vth)은 메모리 셀의 문턱 전압을 의미하고, 세로축(Cell #)은 문턱 전압에 대한 메모리 셀들의 개수를 의미할 수 있다. 문턱 전압 분포(DST1)는 데이터 1을 저장하는 메모리 셀들에 의해 구성될 수 있다. 문턱 전압 분포(DST2)는 데이터 0을 저장하는 메모리 셀들에 의해 구성될 수 있다.
메모리 셀은, 대응하는 워드라인을 통해 소정의 리드 전압이 인가될 때, 자신의 문턱 전압에 따라 턴온/턴오프될 수 있다. 구체적으로, 메모리 셀은 자신의 문턱 전압보다 높은 리드 전압이 인가되면 턴온될 수 있고, 자신의 문턱 전압보다 낮은 리드 전압이 인가되면 턴오프될 수 있다.
이러한 경우, 메모리 장치(120)는, 메모리 셀로 하드 리드 전압(HV)을 인가하여 메모리 셀이 턴온/턴오프될 때 형성되는 커런트를 센싱함으로써, 메모리 셀의 문턱 전압이 하드 리드 전압(HV)보다 높은지 또는 낮은지를 판단할 수 있다. 문턱 전압 분포들(DST1, DST2)의 사이에 위치하는 하드 리드 전압(HV)을 메모리 셀로 인가하면, 메모리 장치(120)는 메모리 셀의 문턱 전압이 하드 리드 전압(HV)보다 높은지 또는 낮은지를 판단할 수 있다. 다른 말로 하면, 메모리 장치(120)는 하드 리드 전압(HV)을 사용하여 메모리 셀이 위치하는 문턱 전압 분포를 판단할 수 있고, 결과적으로 메모리 셀에 저장된 데이터를 하드 디시젼 비트(HD)로서 리드할 수 있다.
한편, 문턱 전압 분포들(DST1, DST2)은 초기에는 서로 구분되도록 형성되지만, 시간의 흐름에 따라 다양한 이유들에 의해 이동함으로써 도22에 도시된 바와 같이 서로 겹쳐질 수 있다. 따라서, 문턱 전압 분포들(DST1, DST2)이 겹쳐지는 부분에 위치한 메모리 셀, 또는 하드 리드 전압(HV)에 가까운 문턱 전압을 가지는 메모리 셀은 하드 리드 전압(HV)으로 정확히 리드되지 않고, 에러 비트를 발생시킬 수 있다.
따라서, 메모리 장치(120)는 소프트 리드 전압들(V1~V6)을 메모리 셀로 각각 인가함으로써 메모리 셀로부터 소프트 디시젼 비트 세트(SD)를 더 리드할 수 있다. 소프트 리드 전압들(V1~V6)이 메모리 셀로 인가될 때, 메모리 셀의 문턱 전압과 소프트 리드 전압들(V1~V6) 각각의 대소에 따라, 소정의 소프트 디시젼 비트 세트(SD)가 리드될 수 있다. 또한, 소프트 디시젼 비트 세트(SD)는 메모리 셀의 문턱 전압과 하드 리드 전압(HV)의 차이에 대한 정보를 포함할 수 있다
예를 들어, 메모리 셀이 소프트 리드 전압들(V3, V4) 사이의 문턱 전압을 가질 때, 해당 메모리 셀로 소프트 리드 전압들(V1~V6)이 인가되면 소프트 디시젼 비트 세트(123)가 해당 메모리 셀로부터 리드될 수 있다. 즉, 소프트 디시젼 비트 세트(123)에 근거하여, 해당 메모리 셀이 소프트 리드 전압들(V3, V4) 사이의 문턱 전압을 가지고, 문턱 전압 분포들(DST1, DST2)이 겹쳐진 부분에 위치하고, 메모리 셀의 문턱 전압은 하드 리드 전압(HV)에 가깝다는 것을 알 수 있다. 결과적으로, 해당 메모리 셀로부터 리드된 하드 디시젼 비트(HD)는 낮은 신뢰도를 가진다고 결정할 수 있다.
도22는 소프트 디시젼 비트 세트(SD)의 값들에 대한 채널 신뢰도 값 테이블(CNVTB)을 예시적으로 더 도시한다. 채널 신뢰도 값 테이블(CNVTB)은 소프트 디시젼 비트 세트(SD)의 값들에 맵핑된 채널 신뢰도 값(CNV)의 값들을 포함할 수 있다. 상술한 바와 같이, 채널 신뢰도 값(CNV)의 크기는 하드 디시젼 비트(HD)의 신뢰도를 나타내고, 부호는 하드 디시젼 비트(HD)가 1인지 0인지를 나타낼 수 있다. 즉, 채널 신뢰도 값(CNV)의 크기가 작을수록 하드 디시젼 비트(HD)의 신뢰도는 작을 수 있다. 따라서, 채널 신뢰도 값 테이블(CNVTB)은, 소프트 디시젼 비트 세트(123)가 0의 크기를 가지는 채널 신뢰도 값(CNV)에 맵핑되도록 구성될 수 있다.
도 23은 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브(SSD)를 포함하는 데이터 처리 시스템을 예시적으로 도시하는 도면이다. 도 23을 참조하면, 데이터 처리 시스템(1000)은 호스트 장치(1100)와 솔리드 스테이트 드라이브(solid state drive)(1200)(이하, SSD라 칭함)를 포함할 수 있다.
SSD(1200)는 컨트롤러(1210), 버퍼 메모리 장치(1220), 비휘발성 메모리 장치들(1231~123n), 전원 공급기(1240), 신호 커넥터(1250) 및 전원 커넥터(1260)를 포함할 수 있다.
컨트롤러(1210)는 SSD(1200)의 제반 동작을 제어할 수 있다. 컨트롤러(1210)는 호스트 인터페이스 유닛(1211), 컨트롤 유닛(1212), 랜덤 액세스 메모리(1213), 에러 정정 코드(ECC) 유닛(1214) 및 메모리 인터페이스 유닛(1215)을 포함할 수 있다.
호스트 인터페이스 유닛(1211)은 신호 커넥터(1250)를 통해서 호스트 장치(1100)와 신호(SGL)를 주고 받을 수 있다. 여기에서, 신호(SGL)는 커맨드, 어드레스, 데이터 등을 포함할 수 있다. 호스트 인터페이스 유닛(1211)은, 호스트 장치(1100)의 프로토콜에 따라서, 호스트 장치(1100)와 SSD(1200)를 인터페이싱할 수 있다. 예를 들면, 호스트 인터페이스 유닛(1211)은, 시큐어 디지털(secure digital), USB(universal serial bus), MMC(multi-media card), eMMC(embedded MMC), PCMCIA(personal computer memory card international association), PATA(parallel advanced technology attachment), SATA(serial advanced technology attachment), SCSI(small computer system interface), SAS(serial attached SCSI), PCI(peripheral component interconnection), PCI-E(PCI Expresss), UFS(universal flash storage)와 같은 표준 인터페이스 프로토콜들 중 어느 하나를 통해서 호스트 장치(1100)와 통신할 수 있다.
컨트롤 유닛(1212)은 호스트 장치(1100)로부터 입력된 신호(SGL)를 분석하고 처리할 수 있다. 컨트롤 유닛(1212)은 SSD(1200)를 구동하기 위한 펌웨어 또는 소프트웨어에 따라서 백그라운드 기능 블럭들의 동작을 제어할 수 있다. 랜덤 액세스 메모리(1213)는 이러한 펌웨어 또는 소프트웨어를 구동하기 위한 동작 메모리로서 사용될 수 있다.
에러 정정 코드(ECC) 유닛(1214)은 비휘발성 메모리 장치들(1231~123n)로 전송될 데이터의 패리티 데이터를 생성할 수 있다. 생성된 패리티 데이터는 데이터와 함께 비휘발성 메모리 장치들(1231~123n)에 저장될 수 있다. 에러 정정 코드(ECC) 유닛(1214)은 패리티 데이터에 근거하여 비휘발성 메모리 장치들(1231~123n)로부터 독출된 데이터의 에러를 검출할 수 있다. 만약, 검출된 에러가 정정 범위 내이면, 에러 정정 코드(ECC) 유닛(1214)은 검출된 에러를 정정할 수 있다.
에러 정정 코드(ECC) 유닛(1214)은 도1의 에러 정정 장치(10) 또는 도14a의 에러 정정 장치(20)를 포함할 수 있다.
메모리 인터페이스 유닛(1215)은, 컨트롤 유닛(1212)의 제어에 따라서, 비휘발성 메모리 장치들(1231~123n)에 커맨드 및 어드레스와 같은 제어 신호를 제공할 수 있다. 그리고 메모리 인터페이스 유닛(1215)은, 컨트롤 유닛(1212)의 제어에 따라서, 비휘발성 메모리 장치들(1231~123n)과 데이터를 주고받을 수 있다. 예를 들면, 메모리 인터페이스 유닛(1215)은 버퍼 메모리 장치(1220)에 저장된 데이터를 비휘발성 메모리 장치들(1231~123n)로 제공하거나, 비휘발성 메모리 장치들(1231~123n)로부터 읽혀진 데이터를 버퍼 메모리 장치(1220)로 제공할 수 있다.
버퍼 메모리 장치(1220)는 비휘발성 메모리 장치들(1231~123n)에 저장될 데이터를 임시 저장할 수 있다. 또한, 버퍼 메모리 장치(1220)는 비휘발성 메모리 장치들(1231~123n)로부터 읽혀진 데이터를 임시 저장할 수 있다. 버퍼 메모리 장치(1220)에 임시 저장된 데이터는 컨트롤러(1210)의 제어에 따라 호스트 장치(1100) 또는 비휘발성 메모리 장치들(1231~123n)로 전송될 수 있다.
비휘발성 메모리 장치들(1231~123n)은 SSD(1200)의 저장 매체로 사용될 수 있다. 비휘발성 메모리 장치들(1231~123n) 각각은 복수의 채널들(CH1~CHn)을 통해 컨트롤러(1210)와 연결될 수 있다. 하나의 채널에는 하나 또는 그 이상의 비휘발성 메모리 장치가 연결될 수 있다. 하나의 채널에 연결되는 비휘발성 메모리 장치들은 동일한 신호 버스 및 데이터 버스에 연결될 수 있다.
전원 공급기(1240)는 전원 커넥터(1260)를 통해 입력된 전원(PWR)을 SSD(1200) 백그라운드에 제공할 수 있다. 전원 공급기(1240)는 보조 전원 공급기(1241)를 포함할 수 있다. 보조 전원 공급기(1241)는 서든 파워 오프(sudden power off)가 발생되는 경우, SSD(1200)가 정상적으로 종료될 수 있도록 전원을 공급할 수 있다. 보조 전원 공급기(1241)는 대용량 캐패시터들(capacitors)을 포함할 수 있다.
신호 커넥터(1250)는 호스트 장치(1100)와 SSD(1200)의 인터페이스 방식에 따라서 다양한 형태의 커넥터로 구성될 수 있다.
전원 커넥터(1260)는 호스트 장치(1100)의 전원 공급 방식에 따라서 다양한 형태의 커넥터로 구성될 수 있다.
도 24는 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템을 예시적으로 도시하는 도면이다. 도 24를 참조하면, 데이터 처리 시스템(2000)은 호스트 장치(2100)와 메모리 시스템(2200)을 포함할 수 있다.
호스트 장치(2100)는 인쇄 회로 기판(printed circuit board)과 같은 기판(board) 형태로 구성될 수 있다. 비록 도시되지 않았지만, 호스트 장치(2100)는 호스트 장치의 기능을 수행하기 위한 백그라운드 기능 블럭들을 포함할 수 있다.
호스트 장치(2100)는 소켓(socket), 슬롯(slot) 또는 커넥터(connector)와 같은 접속 터미널(2110)을 포함할 수 있다. 메모리 시스템(2200)은 접속 터미널(2110)에 마운트(mount)될 수 있다.
메모리 시스템(2200)은 인쇄 회로 기판과 같은 기판 형태로 구성될 수 있다. 메모리 시스템(2200)은 메모리 모듈 또는 메모리 카드로 불릴 수 있다. 메모리 시스템(2200)은 컨트롤러(2210), 버퍼 메모리 장치(2220), 비휘발성 메모리 장치(2231~2232), PMIC(power management integrated circuit)(2240) 및 접속 터미널(2250)을 포함할 수 있다.
컨트롤러(2210)는 메모리 시스템(2200)의 제반 동작을 제어할 수 있다. 컨트롤러(2210)는 도 23에 도시된 컨트롤러(1210)와 동일하게 구성될 수 있다.
버퍼 메모리 장치(2220)는 비휘발성 메모리 장치들(2231~2232)에 저장될 데이터를 임시 저장할 수 있다. 또한, 버퍼 메모리 장치(2220)는 비휘발성 메모리 장치들(2231~2232)로부터 읽혀진 데이터를 임시 저장할 수 있다. 버퍼 메모리 장치(2220)에 임시 저장된 데이터는 컨트롤러(2210)의 제어에 따라 호스트 장치(2100) 또는 비휘발성 메모리 장치들(2231~2232)로 전송될 수 있다.
비휘발성 메모리 장치들(2231~2232)은 메모리 시스템(2200)의 저장 매체로 사용될 수 있다.
PMIC(2240)는 접속 터미널(2250)을 통해 입력된 전원을 메모리 시스템(2200) 백그라운드에 제공할 수 있다. PMIC(2240)는, 컨트롤러(2210)의 제어에 따라서, 메모리 시스템(2200)의 전원을 관리할 수 있다.
접속 터미널(2250)은 호스트 장치의 접속 터미널(2110)에 연결될 수 있다. 접속 터미널(2250)을 통해서, 호스트 장치(2100)와 메모리 시스템(2200) 간에 커맨드, 어드레스, 데이터 등과 같은 신호와, 전원이 전달될 수 있다. 접속 터미널(2250)은 호스트 장치(2100)와 메모리 시스템(2200)의 인터페이스 방식에 따라 다양한 형태로 구성될 수 있다. 접속 터미널(2250)은 메모리 시스템(2200)의 어느 한 변에 배치될 수 있다.
도 25는 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템을 예시적으로 도시하는 도면이다. 도 25를 참조하면, 데이터 처리 시스템(3000)은 호스트 장치(3100)와 메모리 시스템(3200)을 포함할 수 있다.
호스트 장치(3100)는 인쇄 회로 기판(printed circuit board)과 같은 기판(board) 형태로 구성될 수 있다. 비록 도시되지 않았지만, 호스트 장치(3100)는 호스트 장치의 기능을 수행하기 위한 백그라운드 기능 블럭들을 포함할 수 있다.
메모리 시스템(3200)은 표면 실장형 패키지 형태로 구성될 수 있다. 메모리 시스템(3200)은 솔더 볼(solder ball)(3250)을 통해서 호스트 장치(3100)에 마운트될 수 있다. 메모리 시스템(3200)은 컨트롤러(3210), 버퍼 메모리 장치(3220) 및 비휘발성 메모리 장치(3230)를 포함할 수 있다.
컨트롤러(3210)는 메모리 시스템(3200)의 제반 동작을 제어할 수 있다. 컨트롤러(3210)는 도 23에 도시된 컨트롤러(1210)와 동일하게 구성될 수 있다.
버퍼 메모리 장치(3220)는 비휘발성 메모리 장치(3230)에 저장될 데이터를 임시 저장할 수 있다. 또한, 버퍼 메모리 장치(3220)는 비휘발성 메모리 장치들(3230)로부터 읽혀진 데이터를 임시 저장할 수 있다. 버퍼 메모리 장치(3220)에 임시 저장된 데이터는 컨트롤러(3210)의 제어에 따라 호스트 장치(3100) 또는 비휘발성 메모리 장치(3230)로 전송될 수 있다.
비휘발성 메모리 장치(3230)는 메모리 시스템(3200)의 저장 매체로 사용될 수 있다.
도 26은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 네트워크 시스템을 예시적으로 도시하는 도면이다. 도 26을 참조하면, 네트워크 시스템(4000)은 네트워크(4500)를 통해서 연결된 서버 시스템(4300) 및 복수의 클라이언트 시스템들(4410~4430)을 포함할 수 있다.
서버 시스템(4300)은 복수의 클라이언트 시스템들(4410~4430)의 요청에 응답하여 데이터를 서비스할 수 있다. 예를 들면, 서버 시스템(4300)은 복수의 클라이언트 시스템들(4410~4430)로부터 제공된 데이터를 저장할 수 있다. 다른 예로서, 서버 시스템(4300)은 복수의 클라이언트 시스템들(4410~4430)로 데이터를 제공할 수 있다.
서버 시스템(4300)은 호스트 장치(4100) 및 메모리 시스템(4200)을 포함할 수 있다. 메모리 시스템(4200)은 도 21의 메모리 시스템(100), 도 23의 SSD(1200), 도 24의 메모리 시스템(2200), 도 25의 메모리 시스템(3200)으로 구성될 수 있다.
도 27은 본 발명의 실시 예에 따른 메모리 시스템에 포함된 비휘발성 메모리 장치를 예시적으로 도시하는 블럭도이다. 도 27을 참조하면, 비휘발성 메모리 장치(300)는 메모리 셀 어레이(310), 행 디코더(320), 데이터 읽기/쓰기 블럭(330), 열 디코더(340), 전압 발생기(350) 및 제어 로직(360)을 포함할 수 있다.
메모리 셀 어레이(310)는 워드 라인들(WL1~WLm)과 비트 라인들(BL1~BLn)이 서로 교차된 영역에 배열된 메모리 셀(MC)들을 포함할 수 있다.
행 디코더(320)는 워드 라인들(WL1~WLm)을 통해서 메모리 셀 어레이(310)와 연결될 수 있다. 행 디코더(320)는 제어 로직(360)의 제어에 따라 동작할 수 있다. 행 디코더(320)는 외부 장치(도시되지 않음)로부터 제공된 어드레스를 디코딩할 수 있다. 행 디코더(320)는 디코딩 결과에 근거하여 워드 라인들(WL1~WLm)을 선택하고, 구동할 수 있다. 예시적으로, 행 디코더(320)는 전압 발생기(350)로부터 제공된 워드 라인 전압을 워드 라인들(WL1~WLm)에 제공할 수 있다.
데이터 읽기/쓰기 블럭(330)은 비트 라인들(BL1~BLn)을 통해서 메모리 셀 어레이(310)와 연결될 수 있다. 데이터 읽기/쓰기 블럭(330)은 비트 라인들(BL1~BLn) 각각에 대응하는 읽기/쓰기 회로들(RW1~RWn)을 포함할 수 있다. 데이터 읽기/쓰기 블럭(330)은 제어 로직(360)의 제어에 따라 동작할 수 있다. 데이터 읽기/쓰기 블럭(330)은 동작 모드에 따라서 쓰기 드라이버로서 또는 감지 증폭기로서 동작할 수 있다. 예를 들면, 데이터 읽기/쓰기 블럭(330)은 쓰기 동작 시 외부 장치로부터 제공된 데이터를 메모리 셀 어레이(310)에 저장하는 쓰기 드라이버로서 동작할 수 있다. 다른 예로서, 데이터 읽기/쓰기 블럭(330)은 읽기 동작 시 메모리 셀 어레이(310)로부터 데이터를 독출하는 감지 증폭기로서 동작할 수 있다.
열 디코더(340)는 제어 로직(360)의 제어에 따라 동작할 수 있다. 열 디코더(340)는 외부 장치로부터 제공된 어드레스를 디코딩할 수 있다. 열 디코더(340)는 디코딩 결과에 근거하여 비트 라인들(BL1~BLn) 각각에 대응하는 데이터 읽기/쓰기 블럭(330)의 읽기/쓰기 회로들(RW1~RWn)과 데이터 입출력 라인(또는 데이터 입출력 버퍼)을 연결할 수 있다.
전압 발생기(350)는 비휘발성 메모리 장치(300)의 백그라운드 동작에 사용되는 전압을 생성할 수 있다. 전압 발생기(350)에 의해서 생성된 전압들은 메모리 셀 어레이(310)의 메모리 셀들에 인가될 수 있다. 예를 들면, 프로그램 동작 시 생성된 프로그램 전압은 프로그램 동작이 수행될 메모리 셀들의 워드 라인에 인가될 수 있다. 다른 예로서, 소거 동작 시 생성된 소거 전압은 소거 동작이 수행될 메모리 셀들의 웰-영역에 인가될 수 있다. 다른 예로서, 읽기 동작 시 생성된 읽기 전압은 읽기 동작이 수행될 메모리 셀들의 워드 라인에 인가될 수 있다.
제어 로직(360)은 외부 장치로부터 제공된 제어 신호에 근거하여 비휘발성 메모리 장치(300)의 제반 동작을 제어할 수 있다. 예를 들면, 제어 로직(360)은 비휘발성 메모리 장치(300)의 읽기, 쓰기, 소거 동작을 제어할 수 있다.
본 발명이 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있으므로, 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
10: 에러 정정 장치
11: 채널 신뢰도 값 결정부
12: 디코더

Claims (23)

  1. 각각이 하드 디시젼 비트 및 제1 비트 정밀도를 가지는 채널 신뢰도 값을 수신하고, 상기 채널 신뢰도 값에 근거하여 상기 하드 디시젼 비트에 대한 디코딩 동작의 이터레이션을 진행하도록 구성된 복수의 변수 노드부들; 및
    각각이 상기 이터레이션에서, 상기 복수의 변수 노드부들 중 하나 이상의 연결된 변수 노드부들로부터 제2 비트 정밀도를 가지는 하나 이상의 참조 신뢰도 값들을 각각 수신하고, 상기 하나 이상의 참조 신뢰도 값들에 근거하여 상기 하나 이상의 연결된 변수 노드부들로 상기 제2 비트 정밀도를 가지는 하나 이상의 체크 신뢰도 값들을 각각 전송하도록 구성된 복수의 체크 노드부들을 포함하되,
    상기 복수의 변수 노드부들 각각은 상기 이터레이션에서, 상기 복수의 체크 노드부들 중 하나 이상의 연결된 체크 노드부들로부터 하나 이상의 제1 체크 신뢰도 값들을 각각 수신하고, 상기 채널 신뢰도 값의 상기 제1 비트 정밀도 및 상기 하나 이상의 제1 체크 신뢰도 값들의 상기 제2 비트 정밀도를 확대하여 상기 채널 신뢰도 값 및 상기 하나 이상의 제1 체크 신뢰도 값들을 참조함으로써 상기 하드 디시젼 비트를 업데이트하는 에러 정정 장치.
  2. 제1항에 있어서,
    복수의 입력 값들에 각각 맵핑된 복수의 출력 값들을 포함하는 적어도 하나의 확대 테이블을 저장하는 메모리를 더 포함하되,
    상기 복수의 변수 노드부들 각각은 상기 이터레이션에서, 상기 적어도 하나의 확대 테이블을 참조하여, 상기 채널 신뢰도 값의 입력 값에 맵핑된 출력 값을 확대된 채널 신뢰도 값으로 결정하고, 상기 하나 이상의 제1 체크 신뢰도 값들의 입력 값들에 맵핑된 출력 값들을 확대된 체크 신뢰도 값들로 결정하고, 상기 확대된 채널 신뢰도 값 및 상기 확대된 체크 신뢰도 값들을 연산함으로써 상기 하드 디시젼 비트를 업데이트하는 에러 정정 장치.
  3. 제2항에 있어서,
    상기 복수의 출력 값들은 상기 제1 및 제2 비트 정밀도들보다 확대된 비트 정밀도를 가지는 에러 정정 장치.
  4. 제2항에 있어서,
    상기 복수의 출력 값들은 상기 하드 디시젼 비트의 LLR들의 상수배들인 에러 정정 장치.
  5. 제2항에 있어서,
    상기 복수의 변수 노드부들 각각은 상기 이터레이션에서, 상기 적어도 하나의 확대 테이블 중 제1 확대 테이블을 참조하여 상기 확대된 채널 신뢰도 값을 결정하고, 상기 적어도 하나의 확대 테이블 중 제2 확대 테이블을 참조하여 상기 확대된 체크 신뢰도 값들을 결정하는 에러 정정 장치.
  6. 제2항에 있어서,
    상기 복수의 변수 노드부들 각각은 상기 이터레이션에서, 상기 적어도 하나의 확대 테이블 중 제1 확대 테이블을 참조하여 상기 확대된 채널 신뢰도 값을 결정하고, 상기 적어도 하나의 확대 테이블 중 제2 확대 테이블을 참조하여 상기 확대된 체크 신뢰도 값들 중 적어도 하나의 확대된 체크 신뢰도 값을 결정하고, 상기 적어도 하나의 확대 테이블 중 제3 확대 테이블을 참조하여 상기 확대된 체크 신뢰도 값들 중 적어도 다른 하나의 확대된 체크 신뢰도 값을 결정하는 에러 정정 장치.
  7. 제2항에 있어서,
    상기 복수의 변수 노드부들 각각은 상기 이터레이션에서, 상기 확대된 채널 신뢰도 값 및 상기 확대된 체크 신뢰도 값들을 합산하여 최종 신뢰도 값을 결정하고 상기 최종 신뢰도 값의 부호에 근거하여 상기 하드 디시젼 비트를 업데이트하는 에러 정정 장치.
  8. 제7항에 있어서,
    상기 복수의 변수 노드부들 각각은 상기 이터레이션의 후속 이터레이션에서, 상기 확대된 채널 신뢰도 값 및 상기 확대된 체크 신뢰도 값들에 근거하여 상기 하나 이상의 연결된 체크 노드부들 중 제1 체크 노드부의 확대된 외재적 정보의 합을 확대된 참조 신뢰도 값으로 결정하고, 상기 확대된 참조 신뢰도 값의 비트 정밀도를 축소함으로써 참조 신뢰도 값을 결정하고, 상기 제1 체크 노드부로 상기 참조 신뢰도 값을 전송하는 에러 정정 장치.
  9. 제8항에 있어서,
    상기 복수의 변수 노드부들 각각은 상기 후속 이터레이션에서, 상기 확대된 체크 신뢰도 값들 중 상기 제1 체크 노드부로부터 전송된 체크 신뢰도 값의 확대된 체크 신뢰도 값을 제외한 나머지와 상기 확대된 채널 신뢰도 값을 합산함으로써 상기 확대된 외재적 정보의 합을 결정하는 에러 정정 장치.
  10. 제8항에 있어서,
    상기 복수의 변수 노드부들 각각은 상기 후속 이터레이션에서, 상기 최종 신뢰도 값에서 상기 제1 체크 노드부로부터 전송된 체크 신뢰도 값의 확대된 체크 신뢰도 값을 차감함으로써 상기 확대된 외재적 정보의 합을 결정하는 에러 정정 장치.
  11. 제8항에 있어서,
    상기 복수의 변수 노드부들로부터 상기 이터레이션에서 업데이트된 하드 디시젼 비트들을 각각 수신하고 상기 업데이트된 하드 디시젼 비트들에 대해 신드롬 체크 동작을 수행함으로써 상기 디코딩 동작의 성공 여부를 판단하도록 구성된 신드롬 체크부를 더 포함하되,
    상기 변수 노드부들 각각은 상기 신드롬 체크부로부터 상기 디코딩 동작의 실패 보고를 수신하면 상기 후속 이터레이션을 진행하는 에러 정정 장치.
  12. 제8항에 있어서,
    상기 메모리는 입력 값의 복수의 범위들에 각각 맵핑된 복수의 출력 값들을 포함하는 적어도 하나의 축소 테이블을 더 저장하고,
    상기 복수의 변수 노드부들 각각은 상기 후속 이터레이션에서, 상기 축소 테이블을 참조하여 상기 확대된 참조 신뢰도 값의 입력 값에 맵핑된 출력 값을 상기 참조 신뢰도 값으로 결정하는 에러 정정 장치.
  13. 제12항에 있어서,
    상기 축소 테이블에 포함된 상기 복수의 범위들은 상기 확대 테이블에 포함된 출력 값들을 각각 포함하는 에러 정정 장치.
  14. 제12항에 있어서,
    상기 축소 테이블에 포함된 상기 출력 값들은 상기 확대 테이블에 포함된 입력 값들과 동일한 에러 정정 장치.
  15. 제12항에 있어서,
    상기 축소 테이블에 포함된 상기 출력 값들은 상기 제2 비트 정밀도를 가지는 에러 정정 장치.
  16. 제12항에 있어서,
    상기 복수의 변수 노드부들 각각은 상기 후속 이터레이션에서, 상기 적어도 하나의 축소 테이블 중 제1 축소 테이블을 참조하여 상기 제1 체크 노드부로 전송할 상기 참조 신뢰도 값을 결정하고, 상기 적어도 하나의 축소 테이블 중 제2 축소 테이블을 참조하여 상기 연결된 체크 노드부들 중 제2 체크 노드부로 전송할 참조 신뢰도 값을 결정하는 에러 정정 장치.
  17. 제12항에 있어서,
    상기 복수의 변수 노드부들 각각은 상기 이터레이션에서 상기 적어도 하나의 확대 테이블 중 제1 확대 테이블을 참조하고, 상기 후속 이터레이션에서 상기 적어도 하나의 확대 테이블 중 제2 확대 테이블을 참조하는 에러 정정 장치.
  18. 제12항에 있어서,
    상기 복수의 변수 노드부들 각각은 상기 이터레이션에서 상기 적어도 하나의 축소 테이블 중 제1 축소 테이블을 참조하고, 상기 후속 이터레이션에서 상기 적어도 하나의 축소 테이블 중 제2 축소 테이블을 참조하는 에러 정정 장치.
  19. 제12항에 있어서,
    상기 복수의 변수 노드부들 중 제1 변수 노드부와 제2 변수 노드부는 상기 이터레이션에서 상기 메모리에 저장된 서로 다른 확대 테이블들 및/또는 서로 다른 축소 테이블들을 각각 참조하는 에러 정정 장치.
  20. 제2항에 있어서,
    상기 제1 비트 정밀도가 상기 제2 비트 정밀도보다 낮을 때, 상기 복수의 변수 노드부들 각각은 상기 이터레이션에서, 상기 적어도 하나의 확대 테이블을 참조하기 전에 상기 채널 신뢰도 값이 상기 제2 비트 정밀도를 가지도록 상기 채널 신뢰도 값의 상기 제1 비트 정밀도를 확대하는 에러 정정 장치.
  21. 제1항에 있어서,
    복수의 입력 값들에 각각 맵핑된 복수의 출력 값들을 포함하는 적어도 하나의 채널 신뢰도 값 테이블을 저장하되, 상기 복수의 출력 값들은 상기 제1 비트 정밀도를 가지는, 메모리; 및
    상기 하드 디시젼 비트의 신뢰도 정보를 포함하고 복수의 소프트 디시젼 비트들로 구성된 소프트 디시젼 비트 세트를 수신하고, 상기 채널 신뢰도 값 테이블을 참조하여 상기 소프트 디시젼 비트 세트의 입력 값에 맵핑된 출력 값을 상기 채널 신뢰도 값으로 결정하도록 구성된 채널 신뢰도 값 결정부를 더 포함하는 에러 정정 장치.
  22. 제1항에 있어서,
    상기 변수 노드부들 각각은 상기 채널 신뢰도 값을 제1 참조 신뢰도 값으로 결정하고 상기 연결된 체크 노드부들로 상기 제1 참조 신뢰도 값을 각각 전송함으로써, 상기 디코딩 동작의 최초 이터레이션을 진행하는 에러 정정 장치.
  23. 복수의 메모리 셀들을 포함하고, 하드 리드 전압을 상기 복수의 메모리 셀들로 인가함으로써 상기 복수의 메모리 셀들로부터 하드 디시젼 비트들을 각각 리드하고, 복수의 소프트 리드 전압들을 상기 복수의 메모리 셀들로 인가함으로써 상기 복수의 메모리 셀들로부터 소프트 디시젼 비트 세트들을 각각 리드하도록 구성되되, 상기 소프트 리드 전압들은 상기 하드 리드 전압에 소정 오프셋 값들을 가감함으로써 생성되고, 상기 소프트 디시젼 비트 세트들 각각은 대응하는 메모리 셀의 문턱 전압과 상기 하드 리드 전압의 차이에 대한 정보를 포함하는, 메모리 장치;
    상기 소프트 디시젼 비트 세트들에 근거하여 제1 비트 정밀도를 가지는 채널 신뢰도 값들을 결정하도록 구성된 채널 신뢰도 값 결정부; 및
    상기 하드 디시젼 비트들 및 상기 채널 신뢰도 값들을 수신하고, 상기 채널 신뢰도 값들에 근거하여 상기 하드 디시젼 비트들에 대한 디코딩 동작을 수행하도록 구성된 디코더를 포함하되,
    상기 디코더는,
    각각이 상기 하드 디시젼 비트들 중 대응하는 하드 디시젼 비트 및 상기 채널 신뢰도 값들 중 대응하는 채널 신뢰도 값을 수신하고, 상기 채널 신뢰도 값에 근거하여 상기 디코딩 동작의 이터레이션을 진행하도록 구성된 복수의 변수 노드부들; 및
    각각이 상기 이터레이션에서, 상기 복수의 변수 노드부들 중 하나 이상의 연결된 변수 노드부들로부터 제2 비트 정밀도를 가지는 하나 이상의 참조 신뢰도 값들을 각각 수신하고, 상기 하나 이상의 참조 신뢰도 값들에 근거하여 상기 하나 이상의 연결된 변수 노드부들로 상기 제2 비트 정밀도를 가지는 하나 이상의 체크 신뢰도 값들을 각각 전송하도록 구성된 복수의 체크 노드부들을 포함하되,
    상기 복수의 변수 노드부들 각각은 상기 이터레이션에서, 상기 복수의 체크 노드부들 중 하나 이상의 연결된 체크 노드부들로부터 하나 이상의 제1 체크 신뢰도 값들을 각각 수신하고, 상기 채널 신뢰도 값의 상기 제1 비트 정밀도 및 상기 하나 이상의 제1 체크 신뢰도 값들의 상기 제2 비트 정밀도를 확대하여 상기 채널 신뢰도 값 및 상기 하나 이상의 제1 체크 신뢰도 값들을 참조함으로써 상기 하드 디시젼 비트를 업데이트하는 전자 장치.
KR1020180097884A 2018-08-22 2018-08-22 에러 정정 장치 및 그것을 포함하는 전자 장치 KR102707030B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020180097884A KR102707030B1 (ko) 2018-08-22 에러 정정 장치 및 그것을 포함하는 전자 장치
US16/221,791 US10554228B1 (en) 2018-08-22 2018-12-17 Error correction device and electronic device including the same
CN201811643133.5A CN110858169B (zh) 2018-08-22 2018-12-29 错误校正装置和包括该错误校正装置的电子装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180097884A KR102707030B1 (ko) 2018-08-22 에러 정정 장치 및 그것을 포함하는 전자 장치

Publications (2)

Publication Number Publication Date
KR20200022136A true KR20200022136A (ko) 2020-03-03
KR102707030B1 KR102707030B1 (ko) 2024-09-20

Family

ID=

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220165636A (ko) * 2021-06-08 2022-12-15 웨스턴 디지털 테크놀로지스, 인코포레이티드 디코딩된 데이터를 사용한 소프트 비트 기준 레벨 교정

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220165636A (ko) * 2021-06-08 2022-12-15 웨스턴 디지털 테크놀로지스, 인코포레이티드 디코딩된 데이터를 사용한 소프트 비트 기준 레벨 교정

Also Published As

Publication number Publication date
US10554228B1 (en) 2020-02-04
CN110858169B (zh) 2023-03-21
US20200067538A1 (en) 2020-02-27
CN110858169A (zh) 2020-03-03

Similar Documents

Publication Publication Date Title
US11386952B2 (en) Memory access module for performing a plurality of sensing operations to generate digital values of a storage cell in order to perform decoding of the storage cell
CN109426580B (zh) 数据存储设备及其操作方法
US8289771B2 (en) Data reading method and control circuit and memory controller using the same
KR102257050B1 (ko) 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
US10824523B2 (en) Data storage device and operating method thereof
US11031952B2 (en) Error correction decoder and memory system having the same
US10911068B2 (en) Error correction circuit and method of operating the same
US11061614B2 (en) Electronic apparatus having data retention protection and operating method thereof
KR20190102439A (ko) 전자 장치, 비 일시적 컴퓨터 판독 가능 저장 매체, 및 전자 장치를 제어하는 방법
TWI536749B (zh) 解碼方法、記憶體儲存裝置與記憶體控制電路單元
US10554228B1 (en) Error correction device and electronic device including the same
US11515898B2 (en) Error correction decoder, error correction circuit having the same, and method of operating the same
KR102333140B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
KR102707030B1 (ko) 에러 정정 장치 및 그것을 포함하는 전자 장치
US11513888B2 (en) Data processing device
US11869584B2 (en) Memory access module for performing a plurality of sensing operations to generate digital values of a storage cell in order to perform decoding of the storage cell
US11954347B2 (en) Memory system and operating method thereof
US20230214151A1 (en) Memory system and operating method thereof
KR20220151934A (ko) Ecc 디코더

Legal Events

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