KR20170140871A - 연산 복잡도를 감소시킬 수 있는 디코더의 동작 방법과 이를 포함하는 데이터 저장 장치의 동작 방법 - Google Patents

연산 복잡도를 감소시킬 수 있는 디코더의 동작 방법과 이를 포함하는 데이터 저장 장치의 동작 방법 Download PDF

Info

Publication number
KR20170140871A
KR20170140871A KR1020160073538A KR20160073538A KR20170140871A KR 20170140871 A KR20170140871 A KR 20170140871A KR 1020160073538 A KR1020160073538 A KR 1020160073538A KR 20160073538 A KR20160073538 A KR 20160073538A KR 20170140871 A KR20170140871 A KR 20170140871A
Authority
KR
South Korea
Prior art keywords
message
value
size
count value
bit
Prior art date
Application number
KR1020160073538A
Other languages
English (en)
Other versions
KR102626162B1 (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 KR1020160073538A priority Critical patent/KR102626162B1/ko
Priority to CN201710216669.8A priority patent/CN107507648B/zh
Priority to US15/613,659 priority patent/US10164663B2/en
Publication of KR20170140871A publication Critical patent/KR20170140871A/ko
Priority to US16/229,153 priority patent/US10700714B2/en
Priority to US16/882,627 priority patent/US11128321B2/en
Application granted granted Critical
Publication of KR102626162B1 publication Critical patent/KR102626162B1/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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/39Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
    • H03M13/3905Maximum a posteriori probability [MAP] decoding or approximations thereof based on trellis or lattice decoding, e.g. forward-backward algorithm, log-MAP decoding, max-log-MAP decoding
    • H03M13/3927Log-Likelihood Ratio [LLR] computation by combination of forward and backward metrics into LLRs
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • 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/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
    • 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/1148Structural properties of the code parity-check or generator matrix
    • H03M13/1151Algebraically constructed LDPC codes, e.g. LDPC codes derived from Euclidean geometries [EG-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/65Purpose and implementation aspects
    • H03M13/6502Reduction of hardware complexity or efficient processing

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Error Detection And Correction (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

가변 노드들과 체크 노드들을 포함하는 디코더의 동작 방법에 있어서, 상기 체크 노드들 중에서 제1체크 노드에서 상기 가변 노들로부터 V2C 메시지들을 수신하는 단계와, 상기 V2C 메시지들 중에서 특정 크기를 갖는 메시지의 개수를 카운트하고 카운트 값을 생성하는 단계와, 상기 카운트 값과 상기 가변 노드들 중에서 제1가변 노드의 V2C 메시지의 크기에 기초하여, 상기 제1가변 노드로 전송될 C2V 메시지의 크기를 결정하는 단계를 포함한다.

Description

연산 복잡도를 감소시킬 수 있는 디코더의 동작 방법과 이를 포함하는 데이터 저장 장치의 동작 방법{METHOD FOR OPERATING DECODER TO REDUCE COMPUTATIONAL COMPLEXITY AND METHOD FOR OPERATING DATA STORAGE DEVICE HAVING THE SAME}
본 발명의 개념에 따른 실시 예는 디코딩 방법에 관한 것으로, 특히 특정 신뢰도(reliability)를 가지는 메시지의 개수를 카운트하고 카운트 값을 저장함으로써 에러 정정 능력을 유지하면서도 연산 복잡도를 감소시킬 수 있는 디코더의 동작 방법과 이를 포함하는 데이터 저장 장치의 동작 방법에 관한 것이다.
저밀도 패리티 검사(Low Density Parity Check Codes(LDPC))를 오류 정정 부호(error correction code)로 사용하는 플래시 메모리 시스템에서, LDPC 디코더는 상기 LDPC 디코더로 입력되는 데이터를 LLR(log likelihood ratio) 값으로 변환한 뒤 상기 LLR 값을 가변 노드로 전송한다.
상기 LDPC 디코더는 적어도 하나의 가변 노드의 LLR 값을 가변-투-체크 (variable-to-check(V2C)) 메시지로 변환하고, 상기 V2C 메시지를 체크 노드로 전송한다. 상기 체크 노드는 상기 적어도 하나의 V2C 메시지를 이용하여 체크-투-가변(check-to-variable(C2V)) 메시지를 생성하고, 상기 C2V 메시지를 가변 노드로 전송한다.
상기 체크 노드가 상기 C2V 메시지의 크기를 결정할 때 최소-합(min-sum) 알고리즘을 사용한다. 최소-합 알고리즘은 C2V 메시지의 크기를 계산하기 위해 min1, min2, 및 min1_index를 사용한다.
min1은 V2C 메시지들 중 가장 작은 값을 의미하고, min2는 상기 V2C 메시지들 중 두 번째로 작은 값을 의미하고, min1-index는 min1에 해당하는 가변 노드의 인덱스를 의미한다.
min1과 min2 각각의 비트 수는 메시지의 절대값과 동일한 비트 수를 가지고, min1-index는 상기 메시지의 정밀도와 관계없이 LDPC 디코더의 H-matix(code design)에 의해서만 결정된다.
본 발명이 이루고자 하는 기술적인 과제는 체크 노드 별로 특정 신뢰도를 가지는 V2C 메시지의 개수를 카운트하고 카운트 값을 저장함으로써 상기 V2C 메시지의 크기와 관련된 비트-정밀도(bit-precision)를 감소시킬 수 있으므로 에러 정정 능력을 유지하면서도 연산 복잡도를 최소화할 수 있는 디코더의 동작 방법과 이를 포함하는 데이터 저장 장치의 동작 방법을 제공하는 것이다.
본 발명의 실시 예에 따라 가변 노드들과 체크 노드들을 포함하는 디코더의 동작 방법은 상기 체크 노드들 중에서 제1체크 노드에서 상기 가변 노드들로부터 가변-투-체크(variable-to-check(V2C)) 메시지들을 수신하는 단계와, 상기 V2C 메시지들 각각의 크기를 카운트하고 카운트 값을 생성하는 단계와, 상기 카운트 값과 상기 가변 노드들 중에서 제1가변 노드의 V2C 메시지의 크기에 기초하여 상기 제1가변 노드로 전송될 체크-투-가변(check-to-variable(C2V)) 메시지의 크기를 결정하는 단계를 포함한다.
본 발명의 실시 예에 따른 가변 노드들과 체크 노드들을 포함하는 디코더를 포함하는 컨트롤러와 메모리 장치를 포함하는 데이터 저장 장치의 동작 방법은 상기 메모리 장치로부터 N(1 이상의 실수) 비트의 데이터를 수신하는 단계와, 상기 수신된 데이터 각각의 비트를 LLR(log likelihood ratio) 값으로 매핑하는 단계와, 상기 가변 노드들은 상기 LLR 값을 해석하여 가변-투-체크(variable-to-check(V2C)) 메시지들을 생성하는 단계와 상기 체크 노드들 중에서 제1체크 노드에서 상기 가변 노드들 중에서 적어도 일부로부터 V2C 메시지들을 수신하는 단계와, 상기 V2C 메시지들 각각의 크기를 카운트하여 카운트 값을 생성하는 단계와 상기 카운트 값과 상기 가변 노드들 중에서 제1가변 노드의 V2C 메시지의 크기에 기초하여, 상기 제1가변 노드로 전송될 체크-투-가변(check-to-variable(C2V)) 메시지의 크기를 결정하는 단계를 포함한다.
본 발명의 실시 예에 따른 디코더의 동작 방법과 이를 포함하는 데이터 저장 장치의 동작 방법은 체크 노드 별로 특정 신뢰도를 가지는 V2C 메시지의 개수를 카운트하고 카운트 값을 저장함으로써 상기 V2C 메시지의 크기(magnitude)에 관련된 비트-정밀도를 감소시킬 수 있는 효과가 있다.
본 발명의 실시 예에 따른 디코더의 동작 방법과 이를 포함하는 데이터 저장 장치의 동작 방법은 체크 노드 별로 특정 신뢰도를 가지는 V2C 메시지의 개수를 카운트하고 카운트 값을 저장함으로써 상기 디코더의 에러 정정 능력을 유지하면서도 상기 디코더의 연산 복잡도를 최소화할 수 있는 효과가 있다.
본 발명의 실시 예에 따른 디코더의 동작 방법과 이를 포함하는 데이터 저장 장치의 동작 방법은 체크 노드 별로 특정 신뢰도를 가지는 V2C 메시지의 개수를 카운트하고 카운트 값을 저장함으로써 상기 디코더의 처리량(throughput)을 증가시키면서도 상기 디코더의 전력 소모를 줄일 수 있는 효과가 있다.
본 발명의 실시 예에 따른 디코더의 동작 방법과 이를 포함하는 데이터 저장 장치의 동작 방법은 체크 노드로 입력되는 V2C 메시지들 중에서 특정 신뢰도를 갖는 V2C 메시지의 개수를 카운트하는 카운터의 출력 비트 수를 감소시킬 수 있으므로 상기 디코더의 연산 복잡도를 감소시킬 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 실시 예들에 따른 데이터 처리 시스템의 블록도이다.
도 2는 도 1에 도시된 가변 노드 모듈에서 수행되는 V2C 메시지의 크기를 결정하는 방법을 설명하기 위한 테이블이다.
도 3은 도 1에 도시된 로직 회로의 동작을 설명하기 위한 개념도이다.
도 4는 도 1의 체크 노드 모듈에서 수행되는 C2V 메시지의 크기를 결정하는 방법을 설명하기 위한 개념도이다.
도 5는 도 1의 체크 노드 모듈에서 수행되는 C2V 메시지의 크기를 결정하는 방법을 설명하기 위한 테이블이다.
도 6은 도 1의 체크 노드 모듈에서 수행되는 C2V 메시지의 크기를 결정하는 알고리즘을 나타낸다.
도 7은 레이어링 디코더 구조에서 체크 노드에 저장될 카운트 값을 결정하는 알고리즘 나타낸다.
도 8은 셔플링 디코더 구조에서 체크 노드로 업데이트될 카운트 값을 결정하는 알고리즘을 나타낸다.
도 9는 도 8에 도시된 셔플링 디코더 구조에서 체크 노드로 업데이트될 카운트 값을 근사적으로 결정하는 알고리즘들을 나타낸다.
도 10은 도 1의 가변 노드 모듈에서 수행되는 다음 반복의 V2C 메시지와 디코드된 LLR 값을 결정하기 위한 방법을 설명하기 위한 개념도이다.
도 11은 도 1의 체크 노드 모듈에서 수행되는 C2V 메시지의 크기를 결정하는 방법을 설명하기 위한 개념도이다.
도 12는 도 1의 체크 노드 모듈에서 수행되는 C2V 메시지의 크기를 결정하는 방법을 설명하기 위한 테이블이다.
도 13은 도 1에 도시된 디코더의 동작 방법을 설명하기 위한 플로우 차트이다.
도 14는 도 1에 도시된 데이터 저장 장치의 동작 방법을 설명하기 위한 플로우 차트이다.
도 15는 도 1에 도시된 컨트롤러를 포함하는 데이터 처리 시스템의 실시 예를 나타내는 블록도이다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 본 발명의 실시 예들에 따른 데이터 처리 시스템의 블록도이다. 도 1을 참조하면, 데이터 처리 시스템(500)은 호스트(200)와 데이터 저장 장치(또는 저장 매체; 300)를 포함할 수 있다. 호스트(200)와 데이터 저장 장치(300)는 인터페이스(201)를 통해 명령 또는 데이터를 주거나 받을 수 있다.
데이터 처리 시스템(500)은 PC(personal computer), 데이터 서버, 또는 휴대용 전자 장치로 구현될 수 있다.
상기 휴대용 전자 장치는 랩탑 컴퓨터, 이동 전화기, 스마트폰, 태블릿 PC, PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP(portable multimedia player), PND(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), 모바일 인터넷 장치(mobile internet device(MID), 웨어러블 컴퓨터, 사물 인터넷(internet of things(IoT)) 장치, 만물 인터넷 (internet of everything(IoE)) 장치, 또는 e-북 (e-book)으로 구현될 수 있다.
호스트(200)는 데이터 저장 장치(300)의 동작을 제어할 수 있다. 데이터 저장 장치(300)는 메모리(400)와 컨트롤러(100)를 포함할 수 있다.
데이터 저장 장치(300)는 임베디드 멀티미디어 카드(embedded multimedia card(eMMC)), 유니버설 플래시 스토리지(universal flash storage(UFS)), 솔리드 스테이트 드라이브(solid state drive(SSD)), 또는 레이드(redundant array of independent disks(RAID) 혹은 redundant array of inexpensive disks(RAID))일 수 있으나, 이에 한정되지 않는다.
메모리(400)는 플래시 메모리와 같은 불휘발성 메모리-기반 데이터 저장 장치일 수 있다. 예컨대, 불휘발성 메모리는 EEPROM(electrically erasable programmable read-only memory), MRAM(magnetic RAM), FeRAM(ferroelectric RAM), PRAM(phase change RAM) 또는 저항 메모리(resistive RAM(RRAM))를 포함할 수 있다.
메모리(400)는 복수의 NAND 플래시 메모리 장치들을 포함할 수 있다. 상기 복수의 NAND 플래시 메모리 장치들 중에서 적어도 하나는 3-차원(three-dimensional) 메모리 셀 어레이를 포함할 수 있다.
상기 3차원 메모리 셀 어레이는 실리콘 기판 위(on or above)에 배치된 액티브 영역을 갖는 메모리 셀들의 어레이의 하나 또는 그 이상의 물리적인 레벨들 내에서 모노리식하게(monolithically) 형성되고, 상기 메모리 셀들의 작동에 관련된 회로를 포함할 수 있다. 상기 회로는 상기 기판의 내부 또는 위(on or above)에 형성될 수 있다.
모노리식(monolithic) 이라는 용어는 어레이의 각 레벨의 레이어들(layers)이 상기 어레이의 각 하부 레벨(each underlying level)의 레이어들에 직접 증착 (directly deposited )되는 것을 의미한다.
3차원 메모리 셀 어레이는 적어도 하나의 메모리 셀이 다른 메모리 셀의 위에 위치하도록 수직으로 배향되는(vertically oriented) 수직 NAND 스트링을 포함할 수 있다. 상기 적어도 하나의 메모리 셀은 전하 트랩 레이어(charge trap layer)를 포함할 수 있다.
컨트롤러(100)는 인터페이스(201)를 통해 호스트(200)와 명령 또는 데이터를 주거나 받을 수 있고, 메모리(400)와 명령 또는 데이터를 주거나 받을 수 있다. 컨트롤러(100)는 메모리(400)의 전반적인 동작(예컨대, 라이트 동작, 리드 동작, 이레이즈 동작, 인코딩 동작, 디코딩 동작, 및 에러 정정 동작)을 제어할 수 있다. 컨트롤러(100)는 전송 매체(예컨대, 전송 라인들 또는 버스)를 통하여 메모리(400)와 데이터를 교환할 수 있다.
컨트롤러(100)는 디코더(110)를 포함할 수 있다. LDPC로 구현될 수 있는 디코더(110)는 메모리(400)로부터 출력된 데이터(DATA)에 대해 LDPC 디코딩을 수행할 수 있다. 디코더(110)는 입력 버퍼(120), 채널 맵퍼(channel mapper; 130), 로직 회로(logic circuit 또는 logic circuitry; 140), 에러 체커(error checker; 180), 및 출력 버퍼(190)를 포함할 수 있다.
입력 버퍼(120)는 메모리(400)로부터 N-비트 데이터(DATA)를 수신할 수 있다. 여기서, N은 2 이상의 자연수이다.
채널 맵퍼(130)는 입력 버퍼(120)로부터 출력된 데이터(DATA)에 포함된 각 비트를 우도비(log-likelihood ratio(LLR)) 값(LLRV)으로 매핑할 수 있다. 상기 LLR 값은 정수 값 또는 실수 값으로 표현될 수 있고, 상기 LLR 값은 비트의 로직 값이 로직 0인지 로직 1인지를 나타내는 정보와, 상기 비트의 값이 얼마나 신뢰할만한지를 나타내는 정보를 포함할 수 있다.
로직 회로(140)는 가변 노드 모듈(150), 배럴 시프터(160), 및 체크 노드 모듈(170)을 포함할 수 있다. 가변 노드 모듈(150)은 복수의 가변 노드들을 포함하고, 체크 노드 모듈(170)은 복수의 체크 노드들을 포함하고, 배럴 시프터(160)는 상기 가변 노드들과 상기 체크 노드들 사이에서 송수신하는 메시지들을 인터리빙할 수 있다. 여기서, 메시지는 V2C 메시지와 C2V 메시지를 총칭한다.
가변 노드 모듈(150)의 구조와 동작은 도 4와 도 5를 참조하여 설명될 것이고, 체크 노드 모듈(170)의 구조와 동작은 도 4와 도 5를 참조하여 설명될 것이다.
로직 회로(140)는 채널 맵퍼(130)로부터 출력된 LLR 값들(LLRV)을 수신하고, 수신한 LLR 값들(LLRV)에 대응하는 V2C 메시지들을 생성하고, 생성된 V2C 메시지들에 대해 본 명세서에서 설명될 C2V 크기 연산을 수행하고, 수행의 결과에 따라 C2V 메시지들을 생성하고, 생성된 C2V 메시지들에 대응하는 디코드된 LLR 값들(DL)을 출력할 수 있다.
체크 노드 모듈(170)은 복수의 체크 노드들을 포함하고, 상기 복수의 체크 노드들 중에서 해당 체크 노드는 상기 해당 체크 노드에 관련된 가변 노드들로부터 가변-투-체크(variable-to-check(V2C)) 메시지들을 수신하고, 상기 V2C 메시지들 중에서 특정 크기 또는 특정 신뢰도를 갖는 V2C 메시지의 개수를 카운트하여 카운트 값을 생성하고, 상기 카운트 값과 상기 가변 노드들 중에서 처리될 가변 노드의 V2C 메시지의 크기에 기초하여, 상기 처리될 가변 노드로 전송될 체크-투-가변 (check-to-variable(C2V)) 메시지의 크기를 결정할 수 있다. 결정된 크기를 갖는 C2V 메시지는 가변 노드 모듈(150)로 전송될 수 있다. 상기 C2V 메시지는 결정된 부호 비트와 결정된 크기를 갖는 크기 비트를 포함할 수 있다. 상기 부호 비트를 결정하는 과정은 도 4를 참조하여 설명될 것이다.
메시지는 상기 메시지의 부호(sign)를 나타내는 부호 비트와 상기 메시지의 크기(magnitude)를 나타내는 크기 비트를 포함할 수 있다. 예컨대, 상기 부호 비트는 1-비트이고, 상기 크기 비트는 1-비트 또는 그 이상의 비트일 수 있다. 2비트-정밀도(bit-precision)를 사용하는 디코더에서, 상기 부호 비트는 1-비트이고, 상기 크기 비트는 1-비트이다. 또한, T-비트-정밀도를 사용하는 디코더에서, 상기 부호 비트는 1-비트이고, 상기 크기 비트는 (T-1)-비트이고, T는 3 이상의 자연수이다.
본 명세서에서는 카운트 값-크기 연산은 특정 크기 또는 특정 신뢰도 (reliability)를 가지는 V2C 메시지의 개수를 카운터를 이용하여 카운트하고, 카운트 값을 이용하여 디코더(110)의 연산 복잡도를 최소화시킬 수 있는 연산을 의미할 수 있다. 특정 크기 또는 특정 신뢰도는 도 2와 도 12를 참조하여 상세히 설명될 것이다.
본 명세서에서는 2-비트 정밀도를 사용하는 디코더의 작동 방법은 도 2부터 도 10을 참조하여 설명될 것이고, 3-비트 정밀도를 사용하는 디코더의 작동 방법은 도 11과 도 12를 참조하여 설명될 것이다. 4비트 이상의 비트 정밀도를 사용하는 디코더의 작동 방법은 2-비트 또는 3-비트 정밀도를 사용하는 디코더의 작동 방법을 참조하여 이해될 것이다.
가변 노드와 체크 노드 사이에서의 1회 반복((iteration)은 상기 가변 노드로부터 상기 체크 노드로 V2C 메시지가 전송된 후, 상기 체크 노드로부터 상기 가변 노드로 C2V 메시지를 수신하는 과정을 의미한다. 따라서 반복의 회수가 증가할수록 LLR 값의 신뢰고가 높아지므로, 디코딩의 성공 확률은 높아진다.
에러 체커(180)는 가변 노드 모듈(150)에서 디코드된 LLR 값들(DL)의 부호 비트들을 이용하여 에러를 체크할 수 있다. 체크 결과에 따라 에러 체커(180)는 데이터(DATA1)를 출력 버퍼(190)로 전송하고, 출력 버퍼(190)는 수신된 데이터 (DATA1)를 인터페이스(201)를 통해 호스트(200)로 전송할 수 있다.
실시 예들에 따라, 디코드된 LLR 값들(DL)에 에러들이 없을 때, 에러 체커 (180)는 가변 노드 모듈(150)과 체크 노드 모듈(170)의 동작을 디스에이블시키기 위한 제어 신호들을 생성할 수 있다. 가변 노드 모듈(150)과 체크 노드 모듈(170)의 동작이 디스에이블되면, 에러 체커(180)는 데이터(DATA1)를 출력 버퍼(190)로 전송할 수 있다.
도 2는 도 1에 도시된 가변 노드 모듈에서 수행되는 V2C 메시지의 크기를 결정하는 방법을 설명하기 위한 테이블이고, 도 3은 도 1에 도시된 로직 회로의 동작을 설명하기 위한 개념도이다.
도 1부터 도 3을 참조하면, 가변 노드 모듈(150)은 채널 맵퍼(130)로부터 출력된 LLR 값들(LLRV)을 수신하고, 수신한 LLR 값들(LLRV)에 대응하는 V2C 메시지들을 생성할 수 있다.
디코더(110)가 2-비트 정밀도를 사용할 때, 각 메시지는 1-비트 부호 비트와 1-비트 크기 비트를 포함한다. 상기 크기 비트는 특정 크기 또는 특정 신뢰도를 나타내는 플래그를 포함할 수 있다.
가변 노드 모듈(150)은 복수의 가변 노드들(VN1-VN5)을 포함하고, 각 가변 노드(VN1-VN5)는 정수 값 또는 실수 값으로 표현되는 LLR 값(LLRV)을 이용하여 각 V2C 메시지(V2C1-V2C5)를 생성할 수 있다.
본 명세서에서, 특정 크기 또는 특정 신뢰도는 LLR 값(LLRV)을 표시하는 비트의 값이 얼마나 믿을 만한 정보인지에 따라 약한 신뢰도(weak reliability(W))와 강한 신뢰도(strong reliability(S))로 구별될 수 있다.
예컨대, 제1테이블(TABLE1)에 도시된 바와 같이, LLR 값(LLRV)의 부호가 음(-)이면 부호 비트(SB)의 로직 값은 로직 1로 정의되고 LLR 값(LLRV)의 부호가 양(+)이면 부호 비트(SB)의 로직 값은 로직 0으로 정의된다고 가정한다.
제1테이블(TABLE1)을 참조하면, LLR 값(LLRV)의 부호가 음(-)이고 LLR 값 (LLRV)의 절대값이 0(zero)부터 3으로 증가할수록, LLR 값(LLRV)에 해당하는 로직 값이 1일 확률은 증가한다. LLR 값(LLRV)의 부호가 양(+)이고 LLR 값(LLRV)의 절대값이 0부터 3으로 증가할수록, LLR 값(LLRV)에 해당하는 로직 값이 0일 확률은 증가한다.
도 2를 참조하면, LLR 값(LLRV)의 절대값이 1과 같거나 작을 때 LLR 값 (LLRV)의 신뢰도는 약한 신뢰도(W)라고 가정하고, LLR 값(LLRV)의 절대값이 2와 같거나 클 때 LLR 값(LLRV)의 신뢰도는 강한 신뢰도(S)라고 가정한다.
제1가변 노드(VN1)로 입력되는 LLR 값(LLRV1)이 -3 또는 -2일 때, 제1가변 노드(VN1)는 LLR 값(LLRV1)의 신뢰도를 강한 신뢰도(S)로 결정하고, 부호 비트 (SB=1)와 크기 비트(MB=0)를 포함하는 제1 V2C 메시지(V2C1=10)을 생성하고, 제1 V2C 메시지(V2C1=10)을 제1체크 노드(CN1)로 전송한다.
제1가변 노드(VN1)로 입력되는 LLR 값(LLRV1)이 -1일 때, 제1가변 노드(VN1)는 LLR 값(LLRV1)의 신뢰도를 약한 신뢰도(W)로 결정하고, 부호 비트(SB=1)와 크기 비트(MB=1)를 포함하는 제1 V2C 메시지(V2C1=11)을 생성하고, 제1 V2C 메시지 (V2C1=11)을 제1체크 노드(CN1)로 전송한다.
제1가변 노드(VN1)로 입력되는 LLR 값(LLRV1)이 2 또는 3일 때, 제1가변 노드(VN1)는 LLR 값(LLRV1)의 신뢰도를 강한 신뢰도(S)로 결정하고, 부호 비트(SB=0)와 크기 비트(MB=0)를 포함하는 제1 V2C 메시지(V2C1=00)을 생성하고, 제1 V2C 메시지(V2C1=00)을 제1체크 노드(CN1)로 전송한다.
제1가변 노드(VN1)로 입력되는 LLR 값(LLRV1)이 1일 때, 제1가변 노드(VN1)는 LLR 값(LLRV1)의 신뢰도를 약한 신뢰도(W)로 결정하고, 부호 비트(SB=0)와 크기 비트(MB=1)를 포함하는 제1 V2C 메시지(V2C1=01)을 생성하고, 제1 V2C 메시지 (V2C1=01)을 제1체크 노드(CN1)로 전송한다.
도 2에서는 제1가변 노드(VN1)로 입력되는 LLR 값(LLRV1)이 0일 때, 부호 비트(SB)가 0으로 정의되었으나 실시 예에 따라 제1가변 노드(VN1)로 입력되는 LLR 값(LLRV1)이 0일 때, 부호 비트(SB)가 1로 정의될 수 있다.
도 4는 도 1의 체크 노드 모듈에서 수행되는 C2V 메시지의 크기를 결정하는 방법을 설명하기 위한 개념도이다.
체크 노드 모듈(170 또는 170A))에서 수행되는 C2V 메시지의 크기를 결정하는 방법은 도 1부터 도 4를 참조하여 설명된다.
우선, 제1 LLR 값(LLRV1)은 2이고, 제2 LLR 값(LLRV2)은 2이고, 제3 LLR 값 (LLRV3)은 0이고, 제4 LLR 값(LLRV4)은 1이고, 제5 LLR 값(LLRV5)은 3이라고 가정한다.
따라서 각 가변 노드(VN1, VN2, 및 VN5))에 의해 생성된 각 V2C 메시지 (V2C1, V2C2, 및 V2C5)는 강한 신뢰도(S)를 갖는 메시지이고, 각 가변 노드(VN3과 VN4)에 의해 생성된 각 V2C 메시지(V2C3과 V2C4)는 약한 신뢰도(W)를 갖는 메시지이다.
제1 V2C 메시지(V2C1)는 00이고, 제2V2C 메시지(V2C2)는 00이고, 제3 V2C 메시지(V2C3)는 01이고, 제4 V2C 메시지(V2C4)는 01이고, 제5 V2C 메시지(V2C5)는 00이다. 각 V2C 메시지(V2C1-V2C5)는 제1체크 노드(CN1)로 순차적으로 전송될 수 있다. 그러나 실시 예에 따라, V2C 메시지(V2C1-V2C5)는 제1체크 노드(CN1)로 동시에 또는 병렬적으로 전송될 수 있다.
설명의 편의를 위해 체크 노드 모듈(170A)은 제1체크 노드(CN1)라고 가정한다. 제1체크 노드(CN1)는 제1메모리 장치(171A), 카운터(173A), 부호 비트 결정 회로(175A), 제2메모리 장치(177A), 및 C2V 결정 회로(179A)를 포함한다.
체크 노드 모듈(170A) 또는 제1체크 노드(CN1)는 가변 노드들(VN1-VN5)로부터 V2C 메시지들(V2C1-V2C5)을 수신하고, V2C 메시지들(V2C1-V2C5) 중에서 특정 크기(예컨대, 약한 신뢰도(W)에 해당하는 크기 비트)를 갖는 메시지의 개수를 카운트하여 카운트 값(CNT)을 생성하고, 가변 노드들(VN1-VN5) 중에서 현재 처리될 가변 노드(VN1)의 V2C 메시지(V2C1)의 크기(예컨대, 크기 비트)와 카운트 값(CNT)을 이용하여 가변 노드(VN1)로 전송될 C2V 메시지(C2V1)의 크기(예컨대, 크기 비트)를 결정할 수 있다.
또한, 체크 노드 모듈(170A) 또는 제1체크 노드(CN1)는 각 V2C 메시지(V2C1-V2C5)의 부호 비트의 XOR 연산 결과와 제1 V2C 메시지(V2C1)의 부호 비트를 XOR 연산하여 가변 노드(VN1)로 전송될 C2V 메시지(C2V1)의 부호 비트를 결정할 수 있다.
제1메모리 장치(171A)는 SRAM(static random access memory)으로 구현될 수 있고, 제2메모리 장치(177A)는 레지스터로 구현될 수 있다. 카운터(173A)는 약한 신뢰도(W)를 나타내는 크기 비트(MB) 또는 플래그(Flag)를 카운트한다고 가정하고, 초기값은 0이라고 가정한다.
각 V2C 메시지(V2C1-V2C5)가 제1체크 노드(CN1)로 순차적으로 전송되므로, 제1메모리 장치(171A)는 제1 V2C 메시지(V2C1=SB1MB1=00)를 수신하여 저장한다. 카운터(173A)는 0을 그대로 유지한다. 부호 비트 결정 회로(175A)는 제1 V2C 메시지 (V2C1=00)의 부호 비트(SB1=0)를 저장한다.
제1메모리 장치(171A)는 제2 V2C 메시지(V2C2=SB2MB2=00)를 수신하여 저장한다. 카운터(173A)는 0을 그대로 유지한다. 부호 비트 결정 회로(175A)는 제1 V2C 메시지(V2C1=00)의 부호 비트(SB1=0)와 제2 V2C 메시지(V2C2=00)의 부호 비트 (SB2=0)를 XOR 연산하고 제1 XOR 값을 저장한다.
제1메모리 장치(171A)는 제3 V2C 메시지(V2C3=SB3MB3=01)를 수신하여 저장한다. 카운터(173A)는 1을 카운트 값(CNT)으로 출력한다. 부호 비트 결정 회로(175A)는 제1 XOR 값과 제3 V2C 메시지(V2C2=01)의 부호 비트(SB3=0)를 XOR 연산하고 제2 XOR 값을 저장한다.
제1메모리 장치(171A)는 제4 V2C 메시지(V2C4=SB4MB4=01)를 수신하여 저장한다. 카운터(173A)는 2를 카운트 값(CNT)으로 출력한다. 부호 비트 결정 회로(175A)는 제2 XOR 값과 제4 V2C 메시지(V2C4=01)의 부호 비트(SB4=0)를 XOR 연산하고 제3 XOR 값을 저장한다.
제1메모리 장치(171A)는 마지막, 예컨대 제5 V2C 메시지(V2C5=SB5MB5=00)를 수신하여 저장한다. 카운터(173A)는 카운트 값(CNT=2)을 그대로 유지한다. 부호 비트 결정 회로 (175A)는 제3 XOR 값과 제5 V2C 메시지(V2C5=00)의 부호 비트(SB5=0)를 XOR 연산하고 제4 XOR 값을 저장한다.
카운터(173A)는 카운트 값(CNT=2)을 제2메모리 장치(177A)에 저장하고, 부호 비트 결정 회로(175A)는 최종 XOR 값(DSB), 즉 제4 XOR 값을 제2메모리 장치(177A)에 저장한다.
각 V2C 메시지(V2C1-V2C5)가 제1메모리 장치(171A)에 저장되고, 카운트 값 (CNT=2)과 최종 XOR 값(DSB)이 제2메모리 장치(177A)에 저장된 후, 제1 V2C 메시지 (dV2C1=V2C1=SB1MB1=00)는 C2V 결정 회로(179A)로 전송된다.
C2V 결정 회로(179A)는 카운트 값(CNT=2), 최종 XOR 값(DSB), 및 제1 V2C 메시지(V2C1=SB1MB1=00)를 이용하여 제1 가변 노드(VN1)로 전송될 제1 C2V 메시지 (C2V1)의 부호 비트와 크기(예컨대, 크기 비트)를 결정할 수 있다.
예컨대, C2V 결정 회로(179A)는 최종 XOR 값(DSB=0)과 제1 V2C 메시지 (dV2C1=V2C1=SB1MB1=00)의 부호 비트(SB1=0)를 XOR 연산하여 제1 C2V 메시지 (C2V1)의 부호 비트를 결정할 수 있다. 또한, C2V 결정 회로(179A)는 카운트 값 (CNT=2)과 제1 V2C 메시지(dV2C1=V2C1=SB1MB1=00)의 크기 비트(MB1=0)를 이용하여 제1 C2V 메시지(C2V1)의 크기 비트를 결정할 수 있다. 예컨대, 제1 C2V 메시지 (C2V1)의 크기 비트는 약한 신뢰도(W)에 해당하는 1로 결정될 수 있다.
제1가변 노드(VN1)로 전송될 제1 C2V 메시지(C2V1)의 부호 비트와 크기 비트가 결정된 후, 체크 노드 모듈(170A) 또는 제1체크 노드(CN1)는 제2가변 노드(VN2)로 전송될 제2 C2V 메시지의 부호 비트와 크기 비트를 결정한다. 상기 제2 C2V 메시지의 부호 비트와 크기 비트를 결정하는 과정은 제1 C2V 메시지(C2V1)의 부호 비트와 크기 비트를 결정하는 과정과 동일 또는 유사하므로 이에 대한 설명은 생략한다.
다음, 제1 LLR 값(LLRV1)은 3이고, 제2 LLR 값(LLRV2)은 2이고, 제3 LLR 값 (LLRV3)은 2이고, 제4 LLR 값(LLRV4)은 3이고, 제5 LLR 값(LLRV5)은 2라고 가정한다. 따라서 각 가변 노드(VN1-VN5)에 의해 생성된 각 V2C 메시지(V2C1-V2C5)는 강한 신뢰도(S)를 갖는 메시지이다. 각 V2C 메시지(V2C1-V2C5)는 00이고, 카운터(173A)의 초기값은 0이라고 가정한다.
각 V2C 메시지(V2C1-V2C5)가 제1체크 노드(CN1)로 순차적으로 전송되므로, 제1메모리 장치(171A)는 제1 V2C 메시지(V2C1=SB1MB1=00)를 수신하여 저장한다. 카운터(173A)는 0을 그대로 유지한다. 부호 비트 결정 회로(175A)는 제1 V2C 메시지 (V2C1=00)의 부호 비트(SB1=0)를 저장한다.
제1메모리 장치(171A)는 제2 V2C 메시지(V2C2=SB2MB2=00)를 수신하여 저장한다. 카운터(173A)는 0을 그대로 유지한다. 부호 비트 결정 회로(175A)는 제1 V2C 메시지(V2C1=00)의 부호 비트(SB1=0)와 제2 V2C 메시지(V2C2=00)의 부호 비트 (SB2=0)를 XOR 연산하고 제1 XOR 값을 저장한다.
제1메모리 장치(171A)는 제3 V2C 메시지(V2C3=SB3MB3=00)를 수신하여 저장한다. 카운터(173A)는 0을 그대로 유지한다. 부호 비트 결정 회로(175A)는 제1 XOR 값과 제3 V2C 메시지(V2C2=00)의 부호 비트(SB3=0)를 XOR 연산하고 제2 XOR 값을 저장한다.
제1메모리 장치(171A)는 제4 V2C 메시지(V2C4=SB4MB4=00)를 수신하여 저장한다. 카운터(173A)는 0을 그대로 유지한다. 부호 비트 결정 회로(175A)는 제2 XOR 값과 제4 V2C 메시지(V2C4=00)의 부호 비트(SB4=0)를 XOR 연산하고 제3 XOR 값을 저장한다.
제1메모리 장치(171A)는 마지막, 예컨대 제5 V2C 메시지(V2C5=SB5MB5=00)를 수신하여 저장한다. 카운터(173A)는 0을 그대로 유지한다. 부호 비트 결정 회로 (175A)는 제3 XOR 값과 제5 V2C 메시지(V2C5=00)의 부호 비트(SB5=0)를 XOR 연산하고 제4 XOR 값을 저장한다.
카운터(173A)는 카운트 값(CNT=1)을 제2메모리 장치(177A)에 저장하고, 부호 비트 결정 회로(175A)는 최종 XOR 값(DSB), 즉 제4 XOR 값을 제2메모리 장치(177A)에 저장한다.
각 V2C 메시지(V2C1-V2C5)가 제1메모리 장치(171A)에 저장되고, 카운트 값 (CNT=0)과 최종 XOR 값(DSB)이 제2메모리 장치(177A)에 저장된 후, 제1 V2C 메시지 (dV2C1=V2C1=SB1MB1=00)는 C2V 결정 회로(179A)로 전송된다.
C2V 결정 회로(179A)는 카운트 값(CNT=0), 최종 XOR 값(DSB), 및 제1 V2C 메시지(V2C1=SB1MB1=00)를 이용하여 제1 가변 노드(VN1)로 전송될 제1 C2V 메시지 (C2V1)의 부호 비트와 크기(예컨대, 크기 비트)를 결정할 수 있다.
예컨대, C2V 결정 회로(179A)는 최종 XOR 값(DSB=0)과 제1 V2C 메시지 (dV2C1=V2C1=SB1MB1=00)의 부호 비트(SB1=0)를 XOR 연산하여 제1 C2V 메시지 (C2V1)의 부호 비트를 결정할 수 있다. 또한, C2V 결정 회로(179A)는 카운트 값 (CNT=1)과 제1 V2C 메시지(dV2C1=V2C1=SB1MB1=00)의 크기 비트(MB1=1)를 이용하여 제1 C2V 메시지(C2V1)의 크기 비트를 결정할 수 있다. 예컨대, 제1 C2V 메시지 (C2V1)의 크기 비트는 약한 신뢰도(W)에 해당하는 1로 결정될 수 있다.
다음, 제1 LLR 값(LLRV1)은 1이고, 제2 LLR 값(LLRV2)은 2이고, 제3 LLR 값 (LLRV3)은 2이고, 제4 LLR 값(LLRV4)은 3이고, 제5 LLR 값(LLRV5)은 2라고 가정한다.
따라서 제1가변 노드(VN1)에 의해 생성된 제1V2C 메시지(V2C1)는 약한 신뢰도(W)를 갖는 메시지이고, 각 가변 노드(VN2-VN5)에 의해 생성된 각 V2C 메시지(V2C2-V2C5)는 강한 신뢰도(S)를 갖는 메시지이다.
제1 V2C 메시지(V2C1)는 01이고, 제2V2C 메시지(V2C2)는 00이고, 제3 V2C 메시지(V2C3)는 00이고, 제4 V2C 메시지(V2C4)는 00이고, 제5 V2C 메시지(V2C5)는 00이다. 카운터(173A)의 초기값은 0이라고 가정한다.
각 V2C 메시지(V2C1-V2C5)가 제1체크 노드(CN1)로 순차적으로 전송되므로, 제1메모리 장치(171A)는 제1 V2C 메시지(V2C1=SB1MB1=01)를 수신하여 저장한다. 카운터(173A)는 1을 카운트 값(CNT)으로 출력한다. 부호 비트 결정 회로(175A)는 제1 V2C 메시지 (V2C1=01)의 부호 비트(SB1=0)를 저장한다.
제1메모리 장치(171A)는 제2 V2C 메시지(V2C2=SB2MB2=00)를 수신하여 저장한다. 카운터(173A)는 1을 그대로 유지한다. 부호 비트 결정 회로(175A)는 제1 V2C 메시지(V2C1=00)의 부호 비트(SB1=0)와 제2 V2C 메시지(V2C2=00)의 부호 비트 (SB2=0)를 XOR 연산하고 제1 XOR 값을 저장한다.
제1메모리 장치(171A)는 제3 V2C 메시지(V2C3=SB3MB3=00)를 수신하여 저장한다. 카운터(173A)는 1을 그대로 유지한다. 부호 비트 결정 회로(175A)는 제1 XOR 값과 제3 V2C 메시지(V2C2=00)의 부호 비트(SB3=0)를 XOR 연산하고 제2 XOR 값을 저장한다.
제1메모리 장치(171A)는 제4 V2C 메시지(V2C4=SB4MB4=00)를 수신하여 저장한다. 카운터(173A)는 1을 그대로 유지한다. 부호 비트 결정 회로(175A)는 제2 XOR 값과 제4 V2C 메시지(V2C4=00)의 부호 비트(SB4=0)를 XOR 연산하고 제3 XOR 값을 저장한다.
제1메모리 장치(171A)는 마지막, 예컨대 제5 V2C 메시지(V2C5=SB5MB5=00)를 수신하여 저장한다. 카운터(173A)는 1을 그대로 유지한다. 부호 비트 결정 회로 (175A)는 제3 XOR 값과 제5 V2C 메시지(V2C5=00)의 부호 비트(SB5=0)를 XOR 연산하고 제4 XOR 값을 저장한다.
카운터(173A)는 카운트 값(CNT=1)을 제2메모리 장치(177A)에 저장하고, 부호 비트 결정 회로(175A)는 최종 XOR 값(DSB), 즉 제4 XOR 값을 제2메모리 장치(177A)에 저장한다.
각 V2C 메시지(V2C1-V2C5)가 제1메모리 장치(171A)에 저장되고, 카운트 값 (CNT=1)과 최종 XOR 값(DSB)이 제2메모리 장치(177A)에 저장된 후, 제1 V2C 메시지 (dV2C1=V2C1=SB1MB1=01)는 C2V 결정 회로(179A)로 전송된다.
C2V 결정 회로(179A)는 카운트 값(CNT=1), 최종 XOR 값(DSB), 및 제1 V2C 메시지(V2C1=SB1MB1=01)를 이용하여 제1 가변 노드(VN1)로 전송될 제1 C2V 메시지 (C2V1)의 부호 비트와 크기(예컨대, 크기 비트)를 결정할 수 있다.
예컨대, C2V 결정 회로(179A)는 최종 XOR 값(DSB=0)과 제1 V2C 메시지 (dV2C1=V2C1=SB1MB1=01)의 부호 비트(SB1=0)를 XOR 연산하여 제1 C2V 메시지 (C2V1)의 부호 비트를 결정할 수 있다. 또한, C2V 결정 회로(179A)는 카운트 값 (CNT=1)과 제1 V2C 메시지(dV2C1=V2C1=SB1MB1=01)의 크기 비트(MB1=1)를 이용하여 제1 C2V 메시지(C2V1)의 크기 비트를 결정할 수 있다. 예컨대, 제1 C2V 메시지 (C2V1)의 크기 비트는 약한 신뢰도(W)에 해당하는 1로 결정될 수 있다.
다음, 제1 LLR 값(LLRV1)은 2이고, 제2 LLR 값(LLRV2)은 2이고, 제3 LLR 값 (LLRV3)은 0이고, 제4 LLR 값(LLRV4)은 1이고, 제5 LLR 값(LLRV5)은 3이라고 가정한다.
따라서 각 가변 노드(VN2와 VN5))에 의해 생성된 각 V2C 메시지 (V2C2와 및 V2C5)는 강한 신뢰도(S)를 갖는 메시지이고, 각 가변 노드(VN1, VN3, 및 VN4)에 의해 생성된 각 V2C 메시지(V2C1, V2C3, 및 V2C4)는 약한 신뢰도(W)를 갖는 메시지이다.
제1 V2C 메시지(V2C1)는 01이고, 제2V2C 메시지(V2C2)는 00이고, 제3 V2C 메시지(V2C3)는 01이고, 제4 V2C 메시지(V2C4)는 01이고, 제5 V2C 메시지(V2C5)는 00이다. 카운터(173A)의 초기값은 0이라고 가정한다.
각 V2C 메시지(V2C1-V2C5)가 제1체크 노드(CN1)로 순차적으로 전송되므로, 제1메모리 장치(171A)는 제1 V2C 메시지(V2C1=SB1MB1=01)를 수신하여 저장한다. 카운터(173A)는 1을 카운트 값(CNT)으로 출력한다. 부호 비트 결정 회로(175A)는 제1 V2C 메시지 (V2C1=00)의 부호 비트(SB1=0)를 저장한다.
제1메모리 장치(171A)는 제2 V2C 메시지(V2C2=SB2MB2=00)를 수신하여 저장한다. 카운터(173A)는 1을 그대로 유지한다. 부호 비트 결정 회로(175A)는 제1 V2C 메시지(V2C1=00)의 부호 비트(SB1=0)와 제2 V2C 메시지(V2C2=00)의 부호 비트 (SB2=0)를 XOR 연산하고 제1 XOR 값을 저장한다.
제1메모리 장치(171A)는 제3 V2C 메시지(V2C3=SB3MB3=01)를 수신하여 저장한다. 카운터(173A)는 2를 카운트 값(CNT)으로 출력한다. 부호 비트 결정 회로(175A)는 제1 XOR 값과 제3 V2C 메시지(V2C2=01)의 부호 비트(SB3=0)를 XOR 연산하고 제2 XOR 값을 저장한다.
제1메모리 장치(171A)는 제4 V2C 메시지(V2C4=SB4MB4=01)를 수신하여 저장한다. 카운터(173A)는 3을 카운트 값(CNT)으로 출력한다. 부호 비트 결정 회로(175A)는 제2 XOR 값과 제4 V2C 메시지(V2C4=01)의 부호 비트(SB4=0)를 XOR 연산하고 제3 XOR 값을 저장한다.
제1메모리 장치(171A)는 마지막, 예컨대 제5 V2C 메시지(V2C5=SB5MB5=00)를 수신하여 저장한다. 카운터(173A)는 카운트 값(CNT=3)을 그대로 유지한다. 부호 비트 결정 회로 (175A)는 제3 XOR 값과 제5 V2C 메시지(V2C5=00)의 부호 비트(SB5=0)를 XOR 연산하고 제4 XOR 값을 저장한다.
카운터(173A)는 카운트 값(CNT=3)을 제2메모리 장치(177A)에 저장하고, 부호 비트 결정 회로(175A)는 최종 XOR 값(DSB), 즉 제4 XOR 값을 제2메모리 장치(177A)에 저장한다.
각 V2C 메시지(V2C1-V2C5)가 제1메모리 장치(171A)에 저장되고, 카운트 값 (CNT=3)과 최종 XOR 값(DSB)이 제2메모리 장치(177A)에 저장된 후, 제1 V2C 메시지 (dV2C1=V2C1=SB1MB1=01)는 C2V 결정 회로(179A)로 전송된다.
C2V 결정 회로(179A)는 카운트 값(CNT=3), 최종 XOR 값(DSB), 및 제1 V2C 메시지(V2C1=SB1MB1=01)를 이용하여 제1 가변 노드(VN1)로 전송될 제1 C2V 메시지 (C2V1)의 부호 비트와 크기(예컨대, 크기 비트)를 결정할 수 있다.
예컨대, C2V 결정 회로(179A)는 최종 XOR 값(DSB=0)과 제1 V2C 메시지 (dV2C1=V2C1=SB1MB1=01)의 부호 비트(SB1=0)를 XOR 연산하여 제1 C2V 메시지 (C2V1)의 부호 비트를 결정할 수 있다. 또한, C2V 결정 회로(179A)는 카운트 값 (CNT=3)과 제1 V2C 메시지(dV2C1=V2C1=SB1MB1=01)의 크기 비트(MB1=1)를 이용하여 제1 C2V 메시지(C2V1)의 크기 비트를 결정할 수 있다. 예컨대, 제1 C2V 메시지 (C2V1)의 크기 비트는 약한 신뢰도(W)에 해당하는 1로 결정될 수 있다.
다음, 제1 LLR 값(LLRV1)은 2이고, 제2 LLR 값(LLRV2)은 1이고, 제3 LLR 값 (LLRV3)은 0이고, 제4 LLR 값(LLRV4)은 1이고, 제5 LLR 값(LLRV5)은 0이라고 가정한다.
따라서 가변 노드(VN1)에 의해 생성된 V2C 메시지 (V2C1)는 강한 신뢰도(S)를 갖는 메시지이고, 각 가변 노드(VN2-VN5)에 의해 생성된 각 V2C 메시지(V2C2-V2C5)는 약한 신뢰도(W)를 갖는 메시지이다.
제1 V2C 메시지(V2C1)는 00이고, 제2V2C 메시지(V2C2)는 01이고, 제3 V2C 메시지(V2C3)는 01이고, 제4 V2C 메시지(V2C4)는 01이고, 제5 V2C 메시지(V2C5)는 01이다. 카운터(173A)의 초기값은 0이라고 가정한다.
각 V2C 메시지(V2C1-V2C5)가 제1체크 노드(CN1)로 순차적으로 전송되므로, 제1메모리 장치(171A)는 제1 V2C 메시지(V2C1=SB1MB1=00)를 수신하여 저장한다. 카운터(173A)는 0을 그대로 유지한다. 부호 비트 결정 회로(175A)는 제1 V2C 메시지 (V2C1=00)의 부호 비트(SB1=0)를 저장한다.
제1메모리 장치(171A)는 제2 V2C 메시지(V2C2=SB2MB2=01)를 수신하여 저장한다. 카운터(173A)는 1을 카운트 값(CNT)으로 출력한다. 부호 비트 결정 회로(175A)는 제1 V2C 메시지(V2C1=00)의 부호 비트(SB1=0)와 제2 V2C 메시지(V2C2=01)의 부호 비트 (SB2=0)를 XOR 연산하고 제1 XOR 값을 저장한다.
제1메모리 장치(171A)는 제3 V2C 메시지(V2C3=SB3MB3=01)를 수신하여 저장한다. 카운터(173A)는 2를 카운트 값(CNT)으로 출력한다. 부호 비트 결정 회로(175A)는 제1 XOR 값과 제3 V2C 메시지(V2C2=01)의 부호 비트(SB3=0)를 XOR 연산하고 제2 XOR 값을 저장한다.
제1메모리 장치(171A)는 제4 V2C 메시지(V2C4=SB4MB4=01)를 수신하여 저장한다. 카운터(173A)는 3을 카운트 값(CNT)으로 출력한다. 부호 비트 결정 회로(175A)는 제2 XOR 값과 제4 V2C 메시지(V2C4=01)의 부호 비트(SB4=0)를 XOR 연산하고 제3 XOR 값을 저장한다.
제1메모리 장치(171A)는 마지막, 예컨대 제5 V2C 메시지(V2C5=SB5MB5=01)를 수신하여 저장한다. 카운터(173A)는 4를 카운트 값(CNT)으로 출력한다. 부호 비트 결정 회로 (175A)는 제3 XOR 값과 제5 V2C 메시지(V2C5=00)의 부호 비트(SB5=0)를 XOR 연산하고 제4 XOR 값을 저장한다.
카운터(173A)는 카운트 값(CNT=4)을 제2메모리 장치(177A)에 저장하고, 부호 비트 결정 회로(175A)는 최종 XOR 값(DSB), 즉 제4 XOR 값을 제2메모리 장치(177A)에 저장한다.
각 V2C 메시지(V2C1-V2C5)가 제1메모리 장치(171A)에 저장되고, 카운트 값 (CNT=4)과 최종 XOR 값(DSB)이 제2메모리 장치(177A)에 저장된 후, 제1 V2C 메시지 (dV2C1=V2C1=SB1MB1=00)는 C2V 결정 회로(179A)로 전송된다.
C2V 결정 회로(179A)는 카운트 값(CNT=4), 최종 XOR 값(DSB), 및 제1 V2C 메시지(V2C1=SB1MB1=00)를 이용하여 제1 가변 노드(VN1)로 전송될 제1 C2V 메시지 (C2V1)의 부호 비트와 크기(예컨대, 크기 비트)를 결정할 수 있다.
예컨대, C2V 결정 회로(179A)는 최종 XOR 값(DSB=0)과 제1 V2C 메시지 (dV2C1=V2C1=SB1MB1=00)의 부호 비트(SB1=0)를 XOR 연산하여 제1 C2V 메시지 (C2V1)의 부호 비트를 결정할 수 있다. 또한, C2V 결정 회로(179A)는 카운트 값 (CNT=4)과 제1 V2C 메시지(dV2C1=V2C1=SB1MB1=00)의 크기 비트(MB1=0)를 이용하여 제1 C2V 메시지(C2V1)의 크기 비트를 결정할 수 있다. 예컨대, 제1 C2V 메시지 (C2V1)의 크기 비트는 약한 신뢰도(W)에 해당하는 1로 결정될 수 있다.
다음, 제1 LLR 값(LLRV1)은 1이고, 제2 LLR 값(LLRV2)은 1이고, 제3 LLR 값 (LLRV3)은 0이고, 제4 LLR 값(LLRV4)은 1이고, 제5 LLR 값(LLRV5)은 0이라고 가정한다. 따라서 각 가변 노드(VN1-VN5)에 의해 생성된 각 V2C 메시지(V2C1-V2C5)는 약한 신뢰도(W)를 갖는 메시지이다. 각 V2C 메시지(V2C1-V2C5)는 01이고, 카운터(173A)의 초기값은 0이라고 가정한다.
각 V2C 메시지(V2C1-V2C5)가 제1체크 노드(CN1)로 순차적으로 전송되므로, 제1메모리 장치(171A)는 제1 V2C 메시지(V2C1=SB1MB1=01)를 수신하여 저장한다. 카운터(173A)는 1을 카운트 값(CNT)으로 출력한다. 부호 비트 결정 회로(175A)는 제1 V2C 메시지 (V2C1=01)의 부호 비트(SB1=0)를 저장한다.
제1메모리 장치(171A)는 제2 V2C 메시지(V2C2=SB2MB2=01)를 수신하여 저장한다. 카운터(173A)는 2을 카운트 값(CNT)으로 출력한다. 부호 비트 결정 회로(175A)는 제1 V2C 메시지(V2C1=01)의 부호 비트(SB1=0)와 제2 V2C 메시지(V2C2=01)의 부호 비트 (SB2=0)를 XOR 연산하고 제1 XOR 값을 저장한다.
제1메모리 장치(171A)는 제3 V2C 메시지(V2C3=SB3MB3=01)를 수신하여 저장한다. 카운터(173A)는 3을 카운트 값(CNT)으로 출력한다. 부호 비트 결정 회로(175A)는 제1 XOR 값과 제3 V2C 메시지(V2C2=01)의 부호 비트(SB3=0)를 XOR 연산하고 제2 XOR 값을 저장한다.
제1메모리 장치(171A)는 제4 V2C 메시지(V2C4=SB4MB4=01)를 수신하여 저장한다. 카운터(173A)는 4를 카운트 값(CNT)으로 출력한다. 부호 비트 결정 회로(175A)는 제2 XOR 값과 제4 V2C 메시지(V2C4=01)의 부호 비트(SB4=0)를 XOR 연산하고 제3 XOR 값을 저장한다.
제1메모리 장치(171A)는 마지막, 예컨대 제5 V2C 메시지(V2C5=SB5MB5=01)를 수신하여 저장한다. 카운터(173A)는 5를 카운트 값(CNT)으로 출력한다. 부호 비트 결정 회로 (175A)는 제3 XOR 값과 제5 V2C 메시지(V2C5=00)의 부호 비트(SB5=0)를 XOR 연산하고 제4 XOR 값을 저장한다.
카운터(173A)는 카운트 값(CNT=5)을 제2메모리 장치(177A)에 저장하고, 부호 비트 결정 회로(175A)는 최종 XOR 값(DSB), 즉 제4 XOR 값을 제2메모리 장치(177A)에 저장한다.
각 V2C 메시지(V2C1-V2C5)가 제1메모리 장치(171A)에 저장되고, 카운트 값 (CNT=5)과 최종 XOR 값(DSB)이 제2메모리 장치(177A)에 저장된 후, 제1 V2C 메시지 (dV2C1=V2C1=SB1MB1=01)는 C2V 결정 회로(179A)로 전송된다.
C2V 결정 회로(179A)는 카운트 값(CNT=5), 최종 XOR 값(DSB), 및 제1 V2C 메시지(V2C1=SB1MB1=01)를 이용하여 제1 가변 노드(VN1)로 전송될 제1 C2V 메시지 (C2V1)의 부호 비트와 크기(예컨대, 크기 비트)를 결정할 수 있다.
예컨대, C2V 결정 회로(179A)는 최종 XOR 값(DSB=0)과 제1 V2C 메시지 (dV2C1=V2C1=SB1MB1=01)의 부호 비트(SB1=0)를 XOR 연산하여 제1 C2V 메시지 (C2V1)의 부호 비트를 결정할 수 있다. 또한, C2V 결정 회로(179A)는 카운트 값 (CNT=5)과 제1 V2C 메시지(dV2C1=V2C1=SB1MB1=01)의 크기 비트(MB1=1)를 이용하여 제1 C2V 메시지(C2V1)의 크기 비트를 결정할 수 있다. 예컨대, 제1 C2V 메시지 (C2V1)의 크기 비트는 약한 신뢰도(W)에 해당하는 1로 결정될 수 있다.
C2V 결정 회로(179A)가 처리될 가변 노드로 전송될 C2V 메시지의 크기 비트를 결정하는 방법은 도 5와 도 6을 참조하여 설명된다.
도 5는 도 1의 체크 노드 모듈에서 수행되는 C2V 메시지의 크기를 결정하는 방법을 설명하기 위한 테이블이고, 도 6은 도 1의 체크 노드 모듈에서 수행되는 C2V 메시지의 크기를 결정하는 알고리즘을 나타낸다.
도 1부터 도 4를 참조하여 설명한 바와 같이, 제1C2V 메시지(C2V1)의 크기는 처리될 가변 노드(VN1)의 제1V2C 메시지(V2C1)의 크기를 제외하고 다른 가변 노드들(VN2-VN5)의 V2C 메시지들(V2C2-V2C5)의 크기들 중에서 가장 작은 크기로 결정될 수 있다.
예컨대, TABLE 2와 도 6에 도시된 바와 같이, 약한 신뢰도(W)를 나타내는 크기 비트를 카운트 한 카운트 값(K)이 1보다 클 때, 처리될 가변 노드의 V2C 메시지의 크기에 상관없이 C2V 메시지의 크기는 약한 신뢰도(W)로 결정된다.
약한 신뢰도(W)를 나타내는 크기 비트를 카운트 한 카운트 값(K)이 0일 때, 처리될 가변 노드의 V2C 메시지의 크기에 상관없이 C2V 메시지의 크기는 강한 신뢰도(S)로 결정된다.
약한 신뢰도(W)를 나타내는 크기 비트를 카운트 한 카운트 값(K)이 1이고, 처리될 가변 노드의 V2C 메시지의 크기가 약한 신뢰도(W)일 때, C2V 메시지의 크기는 강한 신뢰도(S)로 결정된다.
약한 신뢰도(W)를 나타내는 크기 비트를 카운트 한 카운트 값(K)이 1이고, 처리될 가변 노드의 V2C 메시지의 크기가 강한 신뢰도(S)일 때, C2V 메시지의 크기는 약한 신뢰도(W)로 결정된다.
체크 노드에 저장(또는 업데이트) 될 카운트 값을 결정하는 방법은 도 7과 도 8을 참조하여 설명된다.
도 7은 레이어링 디코더 구조에서 체크 노드에 저장될 카운트 값을 결정하는 알고리즘 나타내고, 도 8은 셔플링 디코더 구조에서 체크 노드로 업데이트될 카운트 값을 결정하는 알고리즘을 나타낸다.
디코더는 각 반복마다 카운트-크기 연산을 체크 노드 단위로 분할하여 연산하거나 가변 노드 단위로 분할하여 연산할 수 있다.
체크 노드 단위로 분할하여 디코딩하는 구조를 레이어링 디코더(layered decoding) 구조라고 하며 가변 노드 단위로 분할하여 디코딩하는 구조를 셔플링 디코더(shuffled decoding) 구조라고 한다.
도 7과 도 8을 참조하면, 'new'로 표기한 것은 현재 반복을 의미하고, 'old'로 표기한 것은 이전 반복을 의미한다.
예컨대, 레이어링 디코더 구조에서, 카운트 값(CNT)과 기준 값을 비교하고, 카운트 값(CNT)이 상기 기준 값보다 클 때 체크 노드에 제1값을 저장하고, 카운트 값(CNT)이 상기 기준 값과 같을 때 체크 노드에 제2값을 저장하고, 카운트 값(CNT)이 상기 기준 값보다 작을 때 체크 노드에 제3값을 저장할 수 있다.
상기 제1값은 상기 제2값보다 크고 상기 제2값은 상기 제3보다 크고, 상기 제1값, 상기 제2값, 및 상기 제3값 각각의 비트 수는 서로 동일할 수 있다.
예컨대, 셔플링 디코더 구조에서, 현재 반복에서의 가변 노드의 V2C 메시지의 크기와 이전 반복에서의 상기 가변 노드의 C2V 메시지의 크기를 이용하여 체크 노드로 업데이트될 카운트 값(CNT)을 결정할 수 있다.
도 7을 참조하면, 레이어링 디코더 구조에서, 현재 반복의 V2C 메시지들 중에서 약한 신뢰도(W)를 나타내는 크기 비트를 카운트 한 카운트 값(CNT)이 1보다 클 때, 체크 노드에 저장될 카운트 값(CNT)은 2로 결정된다.
현재 반복의 V2C 메시지들 중에서 약한 신뢰도(W)를 나타내는 크기 비트를 카운트 한 카운트 값(CNT)이 1일 때, 체크 노드에 저장될 카운트 값(CNT)은 1로 결정된다.
현재 반복의 V2C 메시지들 중에서 약한 신뢰도(W)를 나타내는 크기 비트를 카운트 한 카운트 값(CNT)이 1보다 작을 때, 체크 노드에 저장될 카운트 값(CNT)은 0으로 결정된다.
도 8을 참조하면, 셔플링 디코더 구조에서, 현재 반복의 V2C 메시지의 크기가 약한 신뢰도(W)이고, 이전 반복의 C2V 메시지의 크기가 강한 신뢰도(S)일 때, 체크 노드로 업데이트 될 카운트 값(CNT)은 [이전 반복의 V2C 메시지들 중에서 약한 신뢰도(W)를 나타내는 크기 비트를 카운트 한 카운트 값(CNT)+1]로 결정된다.
현재 반복의 V2C 메시지의 크기가 강한 신뢰도(S)이고, 이전 반복의 C2V 메시지의 크기가 약한 신뢰도(W)일 때, 체크 노드로 업데이트 될 카운트 값(CNT)은 [이전 반복의 V2C 메시지들 중에서 약한 신뢰도(W)를 나타내는 크기 비트를 카운트 한 카운트 값(CNT)-1]로 결정된다.
현재 반복의 V2C 메시지의 크기가 약한 신뢰도(W)이고, 이전 반복의 C2V 메시지의 크기가 약한 신뢰도(W)일 때, 체크 노드로 업데이트 될 카운트 값(CNT)은 이전 반복의 V2C 메시지들 중에서 약한 신뢰도(W)를 나타내는 크기 비트를 카운트 한 카운트 값(CNT)으로 유지된다.
현재 반복의 V2C 메시지의 크기가 강한 신뢰도(S)이고, 이전 반복의 C2V 메시지의 크기가 강한 신뢰도(S)일 때, 체크 노드로 업데이트 될 카운트 값(CNT)은 이전 반복의 V2C 메시지들 중에서 약한 신뢰도(W)를 나타내는 크기 비트를 카운트 한 카운트 값(CNT)으로 유지된다.
도 9는 도 8에 도시된 셔플링 디코더 구조에서 체크 노드로 업데이트될 카운트 값을 근사적으로 결정하는 알고리즘들을 나타낸다.
실시 예들에 따라, 약한 신뢰도(W)를 나타내는 크기 비트를 카운트하는 카운터의 출력 비트 수를 감소시켜 디코더의 연산 복잡도를 낮출 수 있다. 이로 인해 오버플로우(overflow)가 발생한다. 에러 정정 능력 손실을 최소화하기 위해 상기 오버플로우를 처리하는 기법으로서 안정화(saturation) 방식과 모듈러(modular) 방식이 있다.
도 9의 케이스1(CASEⅠ)을 참조하면, 안정화 방식은, 약한 신뢰도(W)를 나타내는 크기 비트를 카운트 한 카운트 값(CNT)이 최대 경계값(maximum boundary value(MAX_CNT))보다 클 때, 체크 노드로 업데이트될 카운트 값(CNT)은 최대 경계값(MAX_CNT)으로 포화된다.
약한 신뢰도(W)를 나타내는 크기 비트를 카운트 한 카운트 값(CNT)이 0보다 작을 때, 체크 노드로 업데이트될 카운트 값(CNT)은 0으로 포화된다.
도 9의 케이스2(CASEⅡ)을 참조하면, 모듈러 방식은, 약한 신뢰도(W)를 나타내는 크기 비트를 카운트 한 카운트 값(CNT)이 최대 경계값(MAX_CNT)보다 클 때, 체크 노드로 업데이트될 카운트 값(CNT)은 0으로 되돌아간다.
약한 신뢰도(W)를 나타내는 크기 비트를 카운트 한 카운트 값(CNT)이 0보다 작을 때, 체크 노드로 업데이트될 카운트 값(CNT)은 최대 경계값(MAX_CNT)으로 되돌아간다.
도 10은 도 1의 가변 노드 모듈에서 수행되는 다음 반복의 V2C 메시지와 디코드된 LLR 값을 결정하기 위한 방법을 설명하기 위한 개념도이다.
우선, 이전 반복의 제1C2V 메시지(C2V1)에 대응하는 정수값이 +3이고, 이전 반복의 제2C2V 메시지(C2V2)에 대응하는 정수값이 -1이고, 제1 LLR 값(LLRV1)은 -1이라고 가정한다.
도 10을 참조하면, 처리될 가변 노드(VN1)에서 다음 반복의 제1V2C 메시지(V2C1)는, 처리될 체크 노드(CN1)의 제1C2V 메시지(C2V1)를 제외한 나머지 체크 노드(CN2)의 제2C2V 메시지(C2V2)와, 처리될 가변 노드(VN1)로 입력되는 LLR 값(LLRV1)을 이용하여 결정할 수 있다.
예컨대, 처리될 체크 노드(CN1)의 제1C2V 메시지(C2V1)를 제외한 나머지 체크 노드(CN2)의 제2C2V 메시지(C2V2)에 대응하는 정수값(-1)과, 처리될 가변 노드(VN1)로 입력되는 LLR 값(-1)을 합하면 -2가 된다. 따라서, 다음 반복의 제1V2C 메시지(V2C1)는 부호 비트(SB1=1)와 크기 비트(MB1=1)를 갖는 11이다.
처리될 가변 노드(VN1)에서 다음 반복의 제2V2C 메시지(V2C2)는, 처리될 체크 노드(CN2)의 제2C2V 메시지(C2V2)를 제외한 나머지 체크 노드(CN1)의 제1C2V 메시지(C2V1)와, 처리될 가변 노드(VN1)로 입력되는 LLR 값(LLRV1)을 이용하여 결정할 수 있다.
예컨대, 처리될 체크 노드(CN2)의 제2C2V 메시지(C2V2)를 제외한 나머지 체크 노드(CN1)의 제1C2V 메시지(C2V1)에 대응하는 정수값(+3)과, 처리될 가변 노드(VN1)로 입력되는 LLR 값(-1)을 합하면 +2가 된다. 따라서, 다음 반복의 제2V2C 메시지(V2C2)는 부호 비트(SB2=0)와 크기 비트(MB2=0)를 갖는 00이다.
처리될 가변 노드(VN1)에서 디코드된 LLR 값(DL1)은, 각 체크 노드(CN1와 CN2)의 C2V 메시지들(C2V1과 C2V2)과 처리될 가변 노드(VN1)로 입력되는 LLR 값(LLRV1)을 이용하여 결정할 수 있다.
예컨대, 제1 체크 노드(CN1)의 제1C2V 메시지(C2V1)에 대응하는 정수값(+3), 제2체크 노드(CN2)의 제2C2V 메시지(C2V2)에 대응하는 정수값(-1)과, 및 처리될 가변 노드(VN1)로 입력되는 LLR 값(-1)을 합하면 +1이 된다. 따라서, 디코드된 LLR 값(DL1)은 부호 비트(SB1=0)와 크기 비트(MB1=1)를 갖는 01이다.
제1가변 노드(VN1)에서 각 체크 노드(CN1과 CN2)로 전송될 V2C 메시지들(V2C1과 V2C2)을 결정한 후, 제2가변 노드(VN2)에서 각 체크 노드(CN2와 CN3)로 전송될 V2C 메시지들을 결정한다. 제2가변 노드(VN2)에서 각 체크 노드(CN2와 CN3)로 전송될 V2C 메시지들을 결정하는 과정은 제1가변 노드(VN1)에서 각 체크 노드(CN1과 CN2)로 전송될 V2C 메시지들(V2C1과 V2C2)을 결정하는 과정과 동일 또는 유사하므로 이에 대한 설명은 생략한다.
도 11은 도 1의 체크 노드 모듈에서 수행되는 C2V 메시지의 크기를 결정하는 방법을 설명하기 위한 개념도이고, 도 12는 도 1의 체크 노드 모듈에서 수행되는 C2V 메시지의 크기를 결정하는 방법을 설명하기 위한 테이블이다.
3-비트의 정밀도를 사용하는 디코더의 작동 방법은 도 3, 도 11, 및 도 12를 참조하여 설명된다. 3비트-정밀도를 사용하는 디코더에서, 부호 비트는 1-비트이고, 크기 비트는 2-비트이다.
우선, 각 LLR 값(LLRV)은 -3에서 3 중에서 어느 하나의 값에 해당하고, 특정 크기 또는 특정 신뢰도는 0, 1, 2, 3으로 구별될 수 있다고 가정한다.
제1 LLR 값(LLRV1)은 2이고, 제2 LLR 값(LLRV2)은 0이고, 제3 LLR 값 (LLRV3)은 0이고, 제4 LLR 값(LLRV4)은 1이고, 제5 LLR 값(LLRV5)은 3이라고 가정한다.
따라서 각 가변 노드에 의해 생성된 각 V2C 메시지의 신뢰도는 각 LLR 값에 대응된다.
제1 V2C 메시지(V2C1)는 010이고, 제2V2C 메시지(V2C2)는 000이고, 제3 V2C 메시지(V2C3)는 000이고, 제4 V2C 메시지(V2C4)는 001이고, 제5 V2C 메시지(V2C5)는 011이다. 각 V2C 메시지(V2C1-V2C5)는 제1체크 노드(CN1)로 순차적으로 전송될 수 있다. 그러나 실시 예에 따라, V2C 메시지(V2C1-V2C5)는 제1체크 노드(CN1)로 동시에 또는 병렬적으로 전송될 수 있다.
설명의 편의를 위해 체크 노드 모듈(170B)은 제1체크 노드(CN1)라고 가정한다. 제1체크 노드(CN1)는 제1메모리 장치(171B), 카운터들(173-1, 173-2, 및 173-3), 선택 회로(174), 부호 비트 결정 회로(175B), 제2메모리 장치(177B), 및 C2V 결정 회로(179B)를 포함한다.
메시지의 크기 비트가 m비트 일 때, 카운터의 개수는 (2m-1)개일 수 있다. 따라서, 3-비트 정밀도를 사용하는 디코더에 포함된 카운터의 개수는 3개이다.
체크 노드 모듈(170B) 또는 제1체크 노드(CN1)는 가변 노드들(VN1-VN5)로부터 V2C 메시지들(V2C1-V2C5)을 수신하고, V2C 메시지들(V2C1-V2C5) 중에서 특정 크기(예컨대, 0에 해당하는 크기 비트, 1에 해당하는 크기 비트, 및 2에 해당하는 크기 비트)를 갖는 메시지들의 개수를 카운트하여 카운트 값들(CNT1, CNT2, 및 CNT3)을 생성하고, 가변 노드들(VN1-VN5) 중에서 현재 처리될 가변 노드(VN1)의 V2C 메시지(V2C1)의 크기(예컨대, 크기 비트)와 카운트 값들(CNT1, CNT2, 및 CNT3)을 이용하여 가변 노드(VN1)로 전송될 C2V 메시지(C2V1)의 크기(예컨대, 크기 비트)를 결정할 수 있다.
또한, 체크 노드 모듈(170B) 또는 제1체크 노드(CN1)는 각 V2C 메시지(V2C1-V2C5)의 부호 비트의 XOR 연산 결과와 제1 V2C 메시지(V2C1)의 부호 비트를 XOR 연산하여 가변 노드(VN1)로 전송될 C2V 메시지(C2V1)의 부호 비트를 결정할 수 있다.
제1메모리 장치(171B)는 SRAM(static random access memory)으로 구현될 수 있고, 제2메모리 장치(177B)는 레지스터로 구현될 수 있다. 제1카운터(173-1)는 0을 나타내는 크기 비트(MB)를 카운트한다고 가정하고, 제2카운터(173-2)는 1을 나타내는 크기 비트(MB)를 카운트한다고 가정하고, 제3카운터(173-3)는 2를 나타내는 크기 비트(MB)를 카운트한다고 가정하고, 각 카운터(173-1, 173-2, 및 173-3)의 초기값은 0이라고 가정한다.
각 V2C 메시지(V2C1-V2C5)가 제1체크 노드(CN1)로 순차적으로 전송되므로, 제1메모리 장치(171B)는 제1 V2C 메시지(V2C1=SB1MB1=010)를 수신하여 저장한다. 선택 회로(174)는 제1 V2C 메시지(V2C1)의 부호 비트(MB1=10)를 제3카운터(173-3)로 전송하고, 제3카운터(173-3)는 1을 카운트 값(CNT3)으로 출력한다. 부호 비트 결정 회로(175A)는 제1 V2C 메시지(V2C1=00)의 부호 비트(SB1=0)를 저장한다.
제1메모리 장치(171B)는 제2 V2C 메시지(V2C2=SB2MB2=000)를 수신하여 저장한다. 선택 회로(174)는 제2 V2C 메시지(V2C2)의 부호 비트(MB2=00)를 제1카운터(173-1)로 전송하고, 제1카운터(173-1)는 1을 카운트 값(CNT3)으로 출력한다. 부호 비트 결정 회로(175A)는 제1 V2C 메시지(V2C1=010)의 부호 비트(SB1=0)와 제2 V2C 메시지(V2C2=010)의 부호 비트 (SB2=0)를 XOR 연산하고 제1 XOR 값을 저장한다.
제1메모리 장치(171B)는 제3 V2C 메시지(V2C3=SB3MB3=000)를 수신하여 저장한다. 선택 회로(174)는 제3 V2C 메시지(V2C3)의 부호 비트(MB2=00)를 제1카운터(173-1)로 전송하고, 제1카운터(173-1)는 2를 카운트 값(CNT1)으로 출력한다. 부호 비트 결정 회로(175A)는 제1 XOR 값과 제3 V2C 메시지(V2C3=000)의 부호 비트(SB3=0)를 XOR 연산하고 제2 XOR 값을 저장한다.
제1메모리 장치(171B)는 제4 V2C 메시지(V2C4=SB4MB4=001)를 수신하여 저장한다. 선택 회로(174)는 제4 V2C 메시지(V2C4)의 부호 비트(MB2=01)를 제2카운터(173-2)로 전송하고, 제2카운터(173-2)는 1을 카운트 값(CNT2)으로 출력한다. 부호 비트 결정 회로(175A)는 제2 XOR 값과 제4 V2C 메시지(V2C4=001)의 부호 비트(SB4=0)를 XOR 연산하고 제3 XOR 값을 저장한다.
제1메모리 장치(171B)는 마지막, 예컨대 제5 V2C 메시지(V2C5=SB5MB5=011)를 수신하여 저장한다. 부호 비트 결정 회로 (175A)는 제3 XOR 값과 제5 V2C 메시지(V2C5=011)의 부호 비트(SB5=0)를 XOR 연산하고 제4 XOR 값을 저장한다.
카운터(173A)는 카운트 값들(CNT1, CNT2, 및 CNT3)을 제2메모리 장치(177B)로 출력하고, 제2메모리 장치(177B)는 출력된 카운트 값들(CNT1, CNT2, 및 CNT3)을 저장하고, 부호 비트 결정 회로(175B)는 최종 XOR 값(DSB), 즉 제4 XOR 값을 제2메모리 장치(177B)에 저장한다.
각 V2C 메시지(V2C1-V2C5)가 제1메모리 장치(171B)에 저장되고, 카운트 값들 (CNT1, CNT2, 및 CNT3)과 최종 XOR 값(DSB)이 제2메모리 장치(177B)에 저장된 후, 제1 V2C 메시지 (dV2C1=V2C1=SB1MB1=010)는 C2V 결정 회로(179B)로 전송된다.
C2V 결정 회로(179B)는 카운트 값들(CNT1, CNT2, 및 CNT3), 최종 XOR 값(DSB), 및 제1 V2C 메시지(V2C1=SB1MB1=010)를 이용하여 제1 가변 노드(VN1)로 전송될 제1 C2V 메시지 (C2V1)의 부호 비트와 크기(예컨대, 크기 비트)를 결정할 수 있다.
예컨대, C2V 결정 회로(179B)는 최종 XOR 값(DSB=0)과 제1 V2C 메시지 (dV2C1=V2C1=SB1MB1=010)의 부호 비트(SB1=0)를 XOR 연산하여 제1 C2V 메시지 (C2V1)의 부호 비트를 결정할 수 있다. 또한, C2V 결정 회로(179B)는 카운트 값들 (CNT1=2, CNT2=1, 및 CNT3=1)과 제1 V2C 메시지(dV2C1=V2C1=SB1MB1=010)의 크기 비트(MB1=10)를 이용하여 제1 C2V 메시지(C2V1)의 크기 비트를 결정할 수 있다. 예컨대, 제1 C2V 메시지 (C2V1)의 크기 비트는 0으로 결정될 수 있다.
제1가변 노드(VN1)로 전송될 제1 C2V 메시지(C2V1)의 부호 비트와 크기 비트가 결정된 후, 체크 노드 모듈(170B) 또는 제1체크 노드(CN1)는 제2가변 노드(VN2)로 전송될 제2 C2V 메시지의 부호 비트와 크기 비트를 결정한다. 상기 제2 C2V 메시지의 부호 비트와 크기 비트를 결정하는 과정은 제1 C2V 메시지(C2V1)의 부호 비트와 크기 비트를 결정하는 과정과 동일 또는 유사하므로 이에 대한 설명은 생략한다.
다음, 제1 LLR 값(LLRV1)은 0이고, 제2 LLR 값(LLRV2)은 3이고, 제3 LLR 값 (LLRV3)은 3이고, 제4 LLR 값(LLRV4)은 3이고, 제5 LLR 값(LLRV5)은 3이라고 가정한다.
각 가변 노드에 의해 생성된 각 V2C 메시지의 신뢰도는 각 LLR 값에 대응된다.
제1 V2C 메시지(V2C1)는 000이고, 제2V2C 메시지(V2C2)는 001이고, 제3 V2C 메시지(V2C3)는 001이고, 제4 V2C 메시지(V2C4)는 001이고, 제5 V2C 메시지(V2C5)는 001이다.
각 카운터(173-1, 173-2, 및 173-3)의 초기값은 0이라고 가정한다.
각 V2C 메시지(V2C1-V2C5)가 제1체크 노드(CN1)로 순차적으로 전송되므로, 제1메모리 장치(171B)는 제1 V2C 메시지(V2C1=SB1MB1=000)를 수신하여 저장한다. 선택 회로(174)는 제1 V2C 메시지(V2C1)의 부호 비트(MB1=00)를 제1카운터(173-1)로 전송하고, 제1카운터(173-1)는 1을 카운트 값(CNT1)으로 출력한다. 부호 비트 결정 회로(175A)는 제1 V2C 메시지(V2C1=000)의 부호 비트(SB1=0)를 저장한다.
제1메모리 장치(171B)는 제2 V2C 메시지(V2C2=SB2MB2=011)를 수신하여 저장한다. 부호 비트 결정 회로(175A)는 제1 V2C 메시지(V2C1=000)의 부호 비트(SB1=0)와 제2 V2C 메시지(V2C2=011)의 부호 비트 (SB2=0)를 XOR 연산하고 제1 XOR 값을 저장한다.
제1메모리 장치(171B)는 제3 V2C 메시지(V2C3=SB3MB3=011)를 수신하여 저장한다. 부호 비트 결정 회로(175A)는 제1 XOR 값과 제3 V2C 메시지(V2C3=011)의 부호 비트(SB3=0)를 XOR 연산하고 제2 XOR 값을 저장한다.
제1메모리 장치(171B)는 제4 V2C 메시지(V2C4=SB4MB4=011)를 수신하여 저장한다. 부호 비트 결정 회로(175A)는 제2 XOR 값과 제4 V2C 메시지(V2C4=011)의 부호 비트(SB4=0)를 XOR 연산하고 제3 XOR 값을 저장한다.
제1메모리 장치(171B)는 마지막, 예컨대 제5 V2C 메시지(V2C5=SB5MB5=011)를 수신하여 저장한다. 부호 비트 결정 회로 (175A)는 제3 XOR 값과 제5 V2C 메시지(V2C5=011)의 부호 비트(SB5=0)를 XOR 연산하고 제4 XOR 값을 저장한다.
카운터(173A)는 카운트 값들(CNT1, CNT2, 및 CNT3)을 제2메모리 장치(177B)로 출력하고, 제2메모리 장치(177B)는 카운트 값들(CNT1, CNT2, 및 CNT3)을 저장하고, 부호 비트 결정 회로(175B)는 최종 XOR 값(DSB), 즉 제4 XOR 값을 제2메모리 장치(177B)에 저장한다.
각 V2C 메시지(V2C1-V2C5)가 제1메모리 장치(171B)에 저장되고, 카운트 값들 (CNT1, CNT2, 및 CNT3)과 최종 XOR 값(DSB)이 제2메모리 장치(177B)에 저장된 후, 제1 V2C 메시지 (dV2C1=V2C1=SB1MB1=000)는 C2V 결정 회로(179B)로 전송된다.
C2V 결정 회로(179B)는 카운트 값들(CNT1, CNT2, 및 CNT3), 최종 XOR 값(DSB), 및 제1 V2C 메시지(V2C1=SB1MB1=000)를 이용하여 제1 가변 노드(VN1)로 전송될 제1 C2V 메시지 (C2V1)의 부호 비트와 크기(예컨대, 크기 비트)를 결정할 수 있다.
예컨대, C2V 결정 회로(179B)는 최종 XOR 값(DSB=0)과 제1 V2C 메시지 (dV2C1=V2C1=SB1MB1=000)의 부호 비트(SB1=0)를 XOR 연산하여 제1 C2V 메시지 (C2V1)의 부호 비트를 결정할 수 있다. 또한, C2V 결정 회로(179B)는 카운트 값들 (CNT1=2, CNT2=1, 및 CNT3=1)과 제1 V2C 메시지(dV2C1=V2C1=SB1MB1=000)의 크기 비트(MB1=00)를 이용하여 제1 C2V 메시지(C2V1)의 크기 비트를 결정할 수 있다. 예컨대, 제1 C2V 메시지 (C2V1)의 크기 비트는 3으로 결정될 수 있다.
다음, 제1 LLR 값(LLRV1)은 0이고, 제2 LLR 값(LLRV2)은 2이고, 제3 LLR 값 (LLRV3)은 2이고, 제4 LLR 값(LLRV4)은 3이고, 제5 LLR 값(LLRV5)은 3이라고 가정한다.
각 가변 노드에 의해 생성된 각 V2C 메시지의 신뢰도는 각 LLR 값에 대응된다.
제1 V2C 메시지(V2C1)는 000이고, 제2V2C 메시지(V2C2)는 010이고, 제3 V2C 메시지(V2C3)는 010이고, 제4 V2C 메시지(V2C4)는 011이고, 제5 V2C 메시지(V2C5)는 011이다.
각 카운터(173-1, 173-2, 및 173-3)의 초기값은 0이라고 가정한다.
각 V2C 메시지(V2C1-V2C5)가 제1체크 노드(CN1)로 순차적으로 전송되므로, 제1메모리 장치(171B)는 제1 V2C 메시지(V2C1=SB1MB1=000)를 수신하여 저장한다. 선택 회로(174)는 제1 V2C 메시지(V2C1)의 부호 비트(MB1=00)를 제1카운터(173-1)로 전송하고, 제1카운터(173-1)는 1을 카운트 값(CNT1)으로 출력한다. 부호 비트 결정 회로(175A)는 제1 V2C 메시지(V2C1=000)의 부호 비트(SB1=0)를 저장한다.
제1메모리 장치(171B)는 제2 V2C 메시지(V2C2=SB2MB2=010)를 수신하여 저장한다. 선택 회로(174)는 제2 V2C 메시지(V2C2)의 부호 비트(MB1=10)를 제3카운터(173-3)로 전송하고, 제3카운터(173-3)는 1을 카운트 값(CNT3)으로 출력한다. 부호 비트 결정 회로(175A)는 제1 V2C 메시지(V2C1=000)의 부호 비트(SB1=0)와 제2 V2C 메시지(V2C2=010)의 부호 비트 (SB2=0)를 XOR 연산하고 제1 XOR 값을 저장한다.
제1메모리 장치(171B)는 제3 V2C 메시지(V2C3=SB3MB3=010)를 수신하여 저장한다. 선택 회로(174)는 제3 V2C 메시지(V2C3)의 부호 비트(MB1=10)를 제3카운터(173-3)로 전송하고, 제3카운터(173-3)는 2를 카운트 값(CNT3)으로 출력한다. 부호 비트 결정 회로(175A)는 제1 XOR 값과 제3 V2C 메시지(V2C3=010)의 부호 비트(SB3=0)를 XOR 연산하고 제2 XOR 값을 저장한다.
제1메모리 장치(171B)는 제4 V2C 메시지(V2C4=SB4MB4=011)를 수신하여 저장한다. 부호 비트 결정 회로(175A)는 제2 XOR 값과 제4 V2C 메시지(V2C4=011)의 부호 비트(SB4=0)를 XOR 연산하고 제3 XOR 값을 저장한다.
제1메모리 장치(171B)는 마지막, 예컨대 제5 V2C 메시지(V2C5=SB5MB5=011)를 수신하여 저장한다. 부호 비트 결정 회로 (175A)는 제3 XOR 값과 제5 V2C 메시지(V2C5=011)의 부호 비트(SB5=0)를 XOR 연산하고 제4 XOR 값을 저장한다.
카운터(173A)는 카운트 값들(CNT1, CNT2, 및 CNT3)을 제2메모리 장치(177B)로 출력하고, 제2메모리 장치(177B)는 카운트 값들(CNT1, CNT2, 및 CNT3)을 저장하고, 부호 비트 결정 회로(175B)는 최종 XOR 값(DSB), 즉 제4 XOR 값을 제2메모리 장치(177B)에 저장한다.
각 V2C 메시지(V2C1-V2C5)가 제1메모리 장치(171B)에 저장되고, 카운트 값들 (CNT1, CNT2, 및 CNT3)과 최종 XOR 값(DSB)이 제2메모리 장치(177B)에 저장된 후, 제1 V2C 메시지 (dV2C1=V2C1=SB1MB1=000)는 C2V 결정 회로(179B)로 전송된다.
C2V 결정 회로(179B)는 카운트 값들(CNT1, CNT2, 및 CNT3), 최종 XOR 값(DSB), 및 제1 V2C 메시지(V2C1=SB1MB1=000)를 이용하여 제1 가변 노드(VN1)로 전송될 제1 C2V 메시지 (C2V1)의 부호 비트와 크기(예컨대, 크기 비트)를 결정할 수 있다.
예컨대, C2V 결정 회로(179B)는 최종 XOR 값(DSB=0)과 제1 V2C 메시지 (dV2C1=V2C1=SB1MB1=000)의 부호 비트(SB1=0)를 XOR 연산하여 제1 C2V 메시지 (C2V1)의 부호 비트를 결정할 수 있다. 또한, C2V 결정 회로(179B)는 카운트 값들 (CNT1=2, CNT2=1, 및 CNT3=1)과 제1 V2C 메시지(dV2C1=V2C1=SB1MB1=000)의 크기 비트(MB1=00)를 이용하여 제1 C2V 메시지(C2V1)의 크기 비트를 결정할 수 있다. 예컨대, 제1 C2V 메시지 (C2V1)의 크기 비트는 2로 결정될 수 있다.
도 1과 도 11을 참조하여 설명한 바와 같이, 제1C2V 메시지(C2V1)의 크기는 처리될 가변 노드(VN1)의 제1V2C 메시지(V2C1)의 크기를 제외하고 다른 가변 노드들(VN2-VN5)의 V2C 메시지들(V2C2-V2C5)의 크기들 중에서 가장 작은 크기로 결정될 수 있다.
예컨대, TABLE 3에 도시된 바와 같이, 0을 나타내는 크기 비트를 카운트 한 카운트 값이 2보다 클 때, 1을 나타내는 크기 비트를 카운트 한 카운트 값, 2를 나타내는 크기 비트를 카운트 한 카운트 값, 및 처리될 가변 노드의 V2C 메시지의 크기에 상관없이 C2V 메시지의 크기는 0으로 결정된다.
0을 나타내는 크기 비트를 카운트 한 카운트 값이 1이고, 1을 나타내는 크기 비트를 카운트 한 카운트 값이 0이고, 2를 나타내는 크기 비트를 카운트 한 카운트 값이 0이고, 처리될 가변 노드의 V2C 메시지의 크기가 0일 때, 처리될 가변 노드의 C2V 메시지의 크기는 3으로 결정된다.
0을 나타내는 크기 비트를 카운트 한 카운트 값이 1이고, 1을 나타내는 크기 비트를 카운트 한 카운트 값이 0이고, 2를 나타내는 크기 비트를 카운트 한 카운트 값이 1보다 크고, 처리될 가변 노드의 V2C 메시지의 크기가 0일 때, 처리될 가변 노드의 C2V 메시지의 크기는 2로 결정된다.
도 13은 도 1에 도시된 디코더의 동작 방법을 설명하기 위한 플로우 차트이다.
도 3과 도 13을 참조하면, 체크 노드들 중에서 제1체크 노드(CN1)는 가변 노드들(VN1~VN5) 중에서 적어도 하나로부터 V2C 메시지들(V2C1~V2C5)을 수신할 수 있다(S110).
체크 노드(CN1)는 V2C 메시지들(V2C1~V2C5) 각각의 크기를 카운트하고 카운트 값(K)을 생성할 수 있다(S130).
체크 노드(CN1)는 카운트 값(K)과 처리될 가변 노드 예컨대, 제1가변 노드(VN1)의 V2C 메시지(V2C1)의 크기에 기초하여, 제1가변 노드(VN1)로 전송될 제1C2V 메시지(C2V1)의 크기를 결정할 수 있다(S150).
도 14는 도 1에 도시된 데이터 저장 장치의 동작 방법을 설명하기 위한 플로우 차트이다.
도 1, 도 3, 및 도 14를 참조하면, 입력 버퍼(120)는 메모리(400)로부터 N(1이상의 자연수)-비트의 데이터(DATA)를 수신할 수 있다(S210).
채널 맵퍼(130)는 입력 버퍼(120)로부터 출력된 데이터(DATA)에 포함된 각 비트를 LLR 값(LLRV)으로 매핑할 수 있다(S220).
가변 노드 모듈(150)에 포함된 각 가변 노드들은 채널 맵퍼(130)로부터 출력된 각 LLR 값(LLR)을 수신하고, 수신한 LLR 값(LLRV)에 대응하는 V2C 메시지를 생성할 수 있다(S230).
체크 노드 모듈(170)에 포함된 각 체크 노드는 상기 가변 노드들 중에서 적어도 하나로부터 V2C 메시지를 수신할 수 있다. 각 체크 노드는 상기 V2C 메시지(들)의 특정 크기(예컨대, 약한 신뢰도(W))를 카운트하고 카운트 값(CNT)을 생성할 수 있다(S240).
각 체크 노드는 생성된 카운트 값(CNT)과 상기 가변 노드들 중에서 처리될 가변 노드의 V2C 메시지의 크기에 기초하여, 상기 처리될 가변 노드로 전송될 C2V 메시지의 크기를 결정할 수 있다(S250). 각 체크 노드는 상기 C2V 메시지를 상기 처리될 가변 노드로 전송할 수 있다. 각 체크 노드는 카운트 값(CNT)을 저장할 수 있다.
각 가변 노드는 C2V 메시지에 기초하여 디코드 된 LLR 값(DL)을 출력하고, 에러 체커(180)는 상기 디코드 된 LLR 값들(DL)의 부호 비트들을 이용하여 에러를 체크할 수 있다(S260).
체크 결과 상기 디코드 된 LLR 값들(DL)에 에러들이 존재한다고 판단되면(S270의 YES), 로직 회로(140)는 다음 반복을 수행할 수 있다(S240~S270).
체크 결과 상기 디코드 된 LLR 값들(DL)에 에러들이 없을 때(S270의 NO), 에러 체커(180)는 가변 노드 모듈((150)과 체크 노드 모듈(170) 의 동작을 디스에이블시키기 위한 제어 신호(CTRL)를 생성하고(S280), 생성된 제어 신호(CTRL)를 가변 노드 모듈((150)과 체크 노드 모듈(170) 각각으로 전송할 수 있다.
가변 노드 모듈((150)과 체크 노드 모듈(170)의 동작이 디스에이블 되면, 에러 체커(180)는 데이터(DATA1)를 출력 버퍼(190)로 전송할 수 있다. 출력 버퍼(190)는 디코딩 된 데이터(DATA)를 호스트로 전송할 수 있다(S290).
도 15는 도 1에 도시된 컨트롤러를 포함하는 데이터 처리 시스템의 실시 예를 나타내는 블록도이다. 도 15를 참조하면, 데이터 처리 시스템(800)은 메모리 카드(memory card) 또는 스마트 카드(smart card)로 구현될 수 있다. 데이터 처리 시스템(800)은 반도체 장치(640), 컨트롤러(100), 및 카드 인터페이스 (620)를 포함한다.
컨트롤러(100)는 반도체 장치(640)와 카드 인터페이스(620) 사이에서 데이터의 교환을 제어할 수 있다. 실시 예에 따라, 카드 인터페이스(620)는 SD(secure digital) 카드 인터페이스 또는 MMC(multi-media card) 인터페이스일 수 있으나 이에 한정되는 것은 아니다.
카드 인터페이스(620)는 호스트(700)의 프로토콜에 따라 호스트(700)와 컨트롤러(100) 사이에서 데이터 교환을 인터페이스할 수 있다.
실시 예에 따라 카드 인터페이스(620)는 USB(Universal Serial Bus) 프로토콜, IC(InterChip)-USB 프로토콜을 지원할 수 있다. 여기서, 카드 인터페이스라 함은 호스트(700)가 사용하는 프로토콜을 지원할 수 있는 하드웨어, 하드웨어에 탑재된 소프트웨어, 또는 신호 전송 방식을 의미할 수 있다.
반도체 시스템(800)이 PC, 태블릿 PC, 디지털 카메라, 디지털 오디오 플레이어, 이동 전화기, 콘솔 비디오 게임 하드웨어, 또는 디지털 셋-탑 박스와 같은 호스트(700)의 호스트 인터페이스(740)와 접속될 때, 호스트 인터페이스(740)는 마이크로프로세서(720)의 제어에 따라 카드 인터페이스(620)와 컨트롤러(100)를 통하여 반도체 장치(640)와 데이터 통신을 수행할 수 있다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
500; 데이터 처리 시스템
300; 데이터 저장 장치
200; 호스트
400; 메모리
100; 컨트롤러
110; 디코더
120; 입력 버퍼
130; 채널 맵퍼
140; 로직 회로
150; 가변 노드 모듈
160; 배럴 시프터
170; 체크 노드 모듈
180; 에러 체커
190; 출력 버퍼

Claims (10)

  1. 가변 노드들과 체크 노드들을 포함하는 디코더의 동작 방법에 있어서,
    상기 체크 노드들 중에서 제1체크 노드에서 상기 가변 노드들로부터 가변-투-체크(variable-to-check(V2C)) 메시지들을 수신하는 단계;
    상기 V2C 메시지들 중에서 특정 크기를 갖는 메시지의 개수를 카운트하고 카운트 값을 생성하는 단계; 및
    상기 가변 노드들 중에서 제1가변 노드의 V2C 메시지의 크기와 상기 카운트 값을 이용하여, 상기 제1가변 노드로 전송될 체크-투-가변(check-to-variable(C2V)) 메시지의 크기를 결정하는 단계를 포함하는 디코더의 동작 방법.
  2. 제1항에 있어서,
    상기 V2C 메시지들 각각은 부호 비트와 크기 비트를 포함하고, 상기 부호 비트와 상기 크기 비트 각각은 SRAM에 저장되는 디코더의 동작 방법.
  3. 제1항에 있어서,
    상기 카운트 값은 레지스터에 저장되는 디코더의 동작 방법.
  4. 제1항에 있어서,
    상기 카운트 값과 기준 값을 비교하는 단계; 및
    상기 카운트 값이 상기 기준 값보다 클 때 제1값을 저장하고, 상기 카운트 값이 상기 기준 값이 같을 때 제2값을 저장하고, 상기 카운트 값이 상기 기준 값보다 작을 때 제3값을 저장하는 단계를 더 포함하고,
    상기 제1값은 상기 제2값보다 크고 상기 제2값은 상기 제3값보다 크고,
    상기 제1값, 상기 제2값, 및 상기 제3값 각각의 비트 수는 서로 동일한 디코더의 동작 방법.
  5. 제1항에 있어서,
    현재 반복에서의 상기 제1가변 노드의 V2C 메시지의 크기와 이전 반복에서의 상기 제1가변 노드의 C2V 메시지의 크기를 이용하여 상기 카운트 값을 새로운 카운트 값으로 업데이트하는 단계를 더 포함하는 디코더의 동작 방법.
  6. 제5항에 있어서,
    상기 카운트 값이 최대 경계값보다 크면 상기 카운트 값은 상기 최대 경계값으로 업데이트되고,
    상기 카운트 값이 0보다 작으면 상기 카운트 값은 0으로 업데이트되는 디코더의 동작 방법.
  7. 제5항에 있어서,
    상기 카운트 값이 최대 경계값보다 크면 상기 카운트 값은 0으로 업데이트되고,
    상기 카운트 값이 0보다 작으면 상기 카운트 값은 상기 최대 경계값으로 업데이트되는 디코더의 동작 방법.
  8. 제1항에 있어서,
    상기 V2C 메시지들 각각의 크기 비트가 m-비트 일 때, 상기 디코더에 포함된 카운터의 개수는 (2m-1)개인 디코더의 동작 방법.
  9. 가변 노드들과 체크 노드들을 포함하는 디코더를 포함하는 컨트롤러와, 메모리 장치를 포함하는 데이터 저장 장치의 동작 방법에 있어서,
    상기 메모리 장치로부터 N-비트의 데이터를 수신하는 단계;
    상기 수신된 데이터에 포함된 각 비트를 우도비(log-likelihood ratio(LLR)) 값으로 매핑하는 단계;
    상기 가변 노드들 각각의 상기 각 LLR 값을 수신하고, 수신한 LLR 값에 대응하는 가변-투-체크(variable-to-check(V2C)) 메시지를 생성하는 단계;
    상기 체크 노드들 중에서 제1체크 노드에서 상기 가변 노드들 중에서 적어도 하나로부터 V2C 메시지를 수신하는 단계;
    상기 V2C 메시지들 중에서 특정 크기를 갖는 메시지의 개수를 카운트하고 카운트 값을 생성하는 단계; 및
    상기 카운트 값과 상기 가변 노드들 중에서 제1가변 노드의 V2C 메시지의 크기에 기초하여, 상기 제1가변 노드로 전송될 체크-투-가변(check-to-variable(C2V)) 메시지의 크기를 결정하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  10. 제9항에 있어서,
    상기 가변 노드들 중에서 적어도 하나로부터 출력된 디코드 된 LLR 값의 부호 비트를 이용하여 에러를 체크하는 단계;
    상기 체크 결과에 따라 제어 신호를 생성하는 단계;
    상기 제어 신호에 응답하여 상기 디코드 된 LLR 값에 대응하는 데이터를 호스트로 전송하는 단계를 더 포함하는 데이터 저장 장치의 동작 방법.

KR1020160073538A 2016-06-14 2016-06-14 연산 복잡도를 감소시킬 수 있는 디코더의 동작 방법과 이를 포함하는 데이터 저장 장치의 동작 방법 KR102626162B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020160073538A KR102626162B1 (ko) 2016-06-14 2016-06-14 연산 복잡도를 감소시킬 수 있는 디코더의 동작 방법과 이를 포함하는 데이터 저장 장치의 동작 방법
CN201710216669.8A CN107507648B (zh) 2016-06-14 2017-04-05 操作解码器以及操作包括该解码器的数据存储装置的方法
US15/613,659 US10164663B2 (en) 2016-06-14 2017-06-05 Method of operating decoder for reducing computational complexity and method of operating data storage device including the decoder
US16/229,153 US10700714B2 (en) 2016-06-14 2018-12-21 Method of operating decoder for reducing computational complexity and method of operating data storage device including the decoder
US16/882,627 US11128321B2 (en) 2016-06-14 2020-05-25 Method of operating decoder for reducing computational complexity and method of operating data storage device including the decoder

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160073538A KR102626162B1 (ko) 2016-06-14 2016-06-14 연산 복잡도를 감소시킬 수 있는 디코더의 동작 방법과 이를 포함하는 데이터 저장 장치의 동작 방법

Publications (2)

Publication Number Publication Date
KR20170140871A true KR20170140871A (ko) 2017-12-22
KR102626162B1 KR102626162B1 (ko) 2024-01-18

Family

ID=60573257

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160073538A KR102626162B1 (ko) 2016-06-14 2016-06-14 연산 복잡도를 감소시킬 수 있는 디코더의 동작 방법과 이를 포함하는 데이터 저장 장치의 동작 방법

Country Status (3)

Country Link
US (3) US10164663B2 (ko)
KR (1) KR102626162B1 (ko)
CN (1) CN107507648B (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102626162B1 (ko) * 2016-06-14 2024-01-18 삼성전자주식회사 연산 복잡도를 감소시킬 수 있는 디코더의 동작 방법과 이를 포함하는 데이터 저장 장치의 동작 방법
CN108566210B (zh) * 2018-03-12 2021-10-22 西安电子科技大学 兼容IEEE 802.11n标准的LDPC编码系统及方法、LDPC编码器
US10630329B2 (en) * 2018-03-23 2020-04-21 RFDirect Corp. Programmable, frequency agile direct conversion digital receiver with high speed oversampling
KR20200004195A (ko) * 2018-07-03 2020-01-13 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이의 동작 방법
US10778248B1 (en) * 2020-01-30 2020-09-15 TenaFe, Inc. Low-density parity-check decoding with de-saturation
DE102020106501A1 (de) * 2020-03-10 2021-09-16 Tesat-Spacecom Gmbh & Co. Kg Fehlerkorrektur für LDPC-Dekodierer
US11233528B1 (en) * 2020-09-16 2022-01-25 Seagate Technology Llc Method and apparatus for LDPC decoding using indexed messages
US11444638B2 (en) 2020-09-17 2022-09-13 SK Hynix Inc. Quality-based dynamic scheduling LDPC decoder

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070058477A (ko) * 2004-08-02 2007-06-08 콸콤 플라리온 테크놀로지스, 인코포레이티드 메모리 효율적인 ldpc 디코딩 방법 및 장치

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6633856B2 (en) * 2001-06-15 2003-10-14 Flarion Technologies, Inc. Methods and apparatus for decoding LDPC codes
US7516390B2 (en) 2005-01-10 2009-04-07 Broadcom Corporation LDPC (Low Density Parity Check) coding and interleaving implemented in MIMO communication systems
US7441178B2 (en) 2005-02-24 2008-10-21 Keyeye Communications Low complexity decoding of low density parity check codes
FR2904499B1 (fr) * 2006-07-27 2009-01-09 Commissariat Energie Atomique Procede de decodage a passage de messages avec ordonnancement selon une fiabilite de voisinage.
US20080320374A1 (en) 2007-06-22 2008-12-25 Legend Silicon Corp. Method and apparatus for decoding a ldpc code
US8181083B2 (en) * 2007-08-27 2012-05-15 Stmicroelectronics S.R.L. Methods and architectures for layered decoding of LDPC codes with minimum latency
US8291298B2 (en) * 2009-04-29 2012-10-16 Yim Tu Investments Ltd., Llc Analog iterative decoder with early-termination
US8458556B2 (en) 2009-10-09 2013-06-04 Stmicroelectronics, Sa Low complexity finite precision decoders and apparatus for LDPC codes
US8438461B2 (en) 2009-10-12 2013-05-07 Marvell World Trade Ltd. Power consumption in LDPC decoder for low-power applications
TWI415396B (zh) * 2009-11-23 2013-11-11 Nat Univ Tsing Hua 適用於根據里德-索羅門碼建立之低密度同位檢查碼的解碼器及解碼方法
TWI419481B (zh) * 2009-12-31 2013-12-11 Nat Univ Tsing Hua 低密度奇偶檢查碼編解碼器及其方法
US8433970B2 (en) * 2010-03-31 2013-04-30 Silicon Laboratories Inc. Techniques to control power consumption in an iterative decoder by control of node configurations
US8555131B2 (en) * 2010-03-31 2013-10-08 Silicon Laboratories Inc. Techniques to control power consumption in an iterative decoder by control of node configurations
US8694868B1 (en) 2010-10-21 2014-04-08 Marvell International Ltd. Systems and methods for performing multi-state bit flipping in an LDPC decoder
US8913698B2 (en) * 2011-04-11 2014-12-16 Softwaveradio, Inc. Programmable, frequency agile direct conversion digital receiver with high speed oversampling
US8707144B2 (en) * 2011-10-17 2014-04-22 Lsi Corporation LDPC decoder with targeted symbol flipping
US8819515B2 (en) * 2011-12-30 2014-08-26 Lsi Corporation Mixed domain FFT-based non-binary LDPC decoder
KR101968746B1 (ko) 2011-12-30 2019-04-15 삼성전자주식회사 저장 장치로부터 데이터를 읽는 읽기 방법, 에러 정정 장치, 그리고 에러 정정 코드 디코더를 포함하는 저장 시스템
US8914710B2 (en) 2012-09-27 2014-12-16 Apple Inc. Soft message-passing decoder with efficient message computation
TWI533620B (zh) * 2013-03-15 2016-05-11 國立清華大學 減少硬體緩衝器之低密度奇偶檢查碼階層式解碼架構
US9378765B2 (en) * 2014-04-03 2016-06-28 Seagate Technology Llc Systems and methods for differential message scaling in a decoding process
US9503125B2 (en) * 2014-05-08 2016-11-22 Sandisk Technologies Llc Modified trellis-based min-max decoder for non-binary low-density parity-check error-correcting codes
US10078540B2 (en) * 2014-06-13 2018-09-18 Cisco Technology, Inc. Accurate and fast in-service estimation of input bit error ratio of low density parity check decoders
US9444493B2 (en) 2014-06-26 2016-09-13 Sandisk Technologies Llc Encoder with transform architecture for LDPC codes over subfields using message mapping
KR102189440B1 (ko) * 2014-08-25 2020-12-14 삼성전자주식회사 에러 정정 디코더를 포함하는 스토리지 장치 및 에러 정정 디코더의 동작 방법
US9450606B1 (en) * 2015-10-01 2016-09-20 Seagate Technology Llc Data matching for hardware data compression
KR102626162B1 (ko) * 2016-06-14 2024-01-18 삼성전자주식회사 연산 복잡도를 감소시킬 수 있는 디코더의 동작 방법과 이를 포함하는 데이터 저장 장치의 동작 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070058477A (ko) * 2004-08-02 2007-06-08 콸콤 플라리온 테크놀로지스, 인코포레이티드 메모리 효율적인 ldpc 디코딩 방법 및 장치

Also Published As

Publication number Publication date
US20200287571A1 (en) 2020-09-10
US10164663B2 (en) 2018-12-25
CN107507648B (zh) 2023-06-09
US11128321B2 (en) 2021-09-21
CN107507648A (zh) 2017-12-22
US10700714B2 (en) 2020-06-30
KR102626162B1 (ko) 2024-01-18
US20170359090A1 (en) 2017-12-14
US20190132010A1 (en) 2019-05-02

Similar Documents

Publication Publication Date Title
KR102626162B1 (ko) 연산 복잡도를 감소시킬 수 있는 디코더의 동작 방법과 이를 포함하는 데이터 저장 장치의 동작 방법
CN106997777B (zh) 具有改进的硬解码吞吐量的vss ldpc解码器
KR101753498B1 (ko) 신뢰도 데이터 업데이트
US11184030B2 (en) Storage controller for correcting error, storage device including the same, and operating method thereof
US10691537B2 (en) Storing deep neural network weights in non-volatile storage systems using vertical error correction codes
US8402347B2 (en) Error correction code for unidirectional memory
TWI541820B (zh) 解碼方法、記憶體控制電路單元及記憶體儲存裝置
KR20090019819A (ko) 시행착오에 의한 에러 보정 디코딩
CN107634764B (zh) 使用低密度奇偶校验码的解码器及存储控制器
KR102540772B1 (ko) 에러 정정 회로 및 이의 동작 방법
KR102588969B1 (ko) 오류 정정 디코더 및 이를 포함하는 메모리 시스템
US20170134049A1 (en) Decoding method, memory storage device and memory control circuit unit
KR20200004195A (ko) 메모리 컨트롤러 및 이의 동작 방법
US11669395B2 (en) Memory system including field programmable gate array (FPGA) and method of operating same
KR102582326B1 (ko) 에러 정정 회로 및 이의 동작 방법
US10707901B2 (en) Die-wise residual bit error rate (RBER) estimation for memories
KR101631128B1 (ko) 크기조정 상수를 사용하는 가변 노드 업데이터를 갖는 ldpc 디코더
CN112951313A (zh) 用于纠错的存储控制器、包括其的存储设备及其操作方法
US10884858B2 (en) LDPC decoding device, memory system including the same and method thereof
US20200119751A1 (en) Error correction circuit and method of operating the same
CN107025935B (zh) 译码方法、内存储存装置及内存控制电路单元
US9985647B2 (en) Encoder and decoder design for near-balanced codes
US20240120945A1 (en) Generalized ldpc encoder, generalized ldpc encoding method and storage device
CN104221291A (zh) 更新与迭代解码器关联的变量节点

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)