KR101621573B1 - 복잡도를 줄인 ldpc 디코더 - Google Patents

복잡도를 줄인 ldpc 디코더 Download PDF

Info

Publication number
KR101621573B1
KR101621573B1 KR1020117001027A KR20117001027A KR101621573B1 KR 101621573 B1 KR101621573 B1 KR 101621573B1 KR 1020117001027 A KR1020117001027 A KR 1020117001027A KR 20117001027 A KR20117001027 A KR 20117001027A KR 101621573 B1 KR101621573 B1 KR 101621573B1
Authority
KR
South Korea
Prior art keywords
bits
message
codeword
bit
node
Prior art date
Application number
KR1020117001027A
Other languages
English (en)
Other versions
KR20110031322A (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 라모트 앳 텔-아비브 유니버시티 리미티드
Publication of KR20110031322A publication Critical patent/KR20110031322A/ko
Application granted granted Critical
Publication of KR101621573B1 publication Critical patent/KR101621573B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • H03M13/1114Merged schedule message passing algorithm with storage of sums of check-to-bit node messages or sums of bit-to-check node messages, e.g. in order to increase the memory efficiency
    • 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
    • H03M13/6505Memory efficient implementations
    • 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
    • H03M13/6588Compression or short representation of variables

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Error Detection And Correction (AREA)

Abstract

K개의 정보 비트가 N(>K)개의 코드워드 비트로 인코딩되는 코드워드의 매니페스테이션(manifestation)을 디코딩하기 위해, N개의 비트 노드와 N-K개의 체크 노드 사이에 메시지가 교환된다. 계산 동안, 메시지는 2비트보다 큰 전체 메시지 길이로 표현된다. 각각의 반복에서, 교환되는 메시지의 적어도 일부의 리프리젠테이션이 저장된다. 적어도 하나의 노드에 대하여, 그 노드로부터 전송된 메시지의 리프리젠테이션이 저장된다면, 하나 이상의 메시지의 리프리젠테이션이 적어도 2 비트를 사용하여 그러나 전체 메시지 길이보다는 적은 비트를 사용하여 저장되고, 하나의 다른 메시지의 리프리젠테이션은 전체 메시지 길이로 저장된다. 전체 메시지 길이보다 적은 비트를 사용하여 저장되는 메시지는 체크 노드로부터 전송된 메시지인 것이 바람직하다.

Description

복잡도를 줄인 LDPC 디코더{REDUCED COMPLEXITY LDPC DECODER}
성능을 희생시키지 않고 저밀도 패리티 체크(LDPC)를 구현하기 위해 필요한 메모리를 줄인 방법, 및 관련 디바이스와 시스템이 개시된다.
에러 보정 코드(ECCs)는 통신 시스템 및 저장 시스템에서 통상적으로 사용된다. 통신 채널 및 저장 디바이스 모두에서 발생하는 다양한 물리적 현상은 통신되거나 저장되는 정보를 손상시키는 잡음 효과를 야기한다. 에러 보정 코딩 스킴은 통신되거나 저장된 정보를 최종적인 에러로부터 보호하기 위해 사용될 수 있다. 이것은 통신 채널을 통한 송신, 또는 메모리 디바이스 내의 저장 이전에 정보를 인코딩함으로써 수행된다. 인코딩 프로세스는 정보에 리던던시를 추가함으로써 정보 비트 시퀀스 i를 코드워드 v로 변환한다. 이러한 리던던시는 디코딩 프로세스를 통해 손상된 코드워드 v로부터 정보를 복구하기 위해 사용될 수 있다. ECC 디코더는 손상된 코드워드 y를 디코딩하고, 높은 확률로 오리지널 정보 비트 시퀀스 i와 동일한 비트 시퀀스
Figure 112011003226920-pct00001
를 복구한다.
하나의 일반적인 ECC 종류는 선형 이진 블록 코드 류이다. 길이 N의 크기 K의 선형 이진 블록 코드는 길이 K의 정보 비트 시퀀스를 길이 N의 코드워드로의 선형 맵핑이며, 여기서 N>K이다. 코드율은 R=K/N으로 정의된다. 크기 1×N의 코드워드 v의 인코딩 프로세스는 통상적으로 크기 1×K의 정보 비트 시퀀스 i에 아래의 식에 따라 크기 K×N의 생성행렬 G를 곱함으로써 수행된다.
Figure 112011003226920-pct00002
(1.1)
또한, 크기 M×N의 패리티 체크 행렬 H를 정의하는 것은 관습적이다(여기서, M=N-K). 패리티 체크 행렬은 아래의 식을 통해 생성행렬과 연관된다.
Figure 112011003226920-pct00003
(1.2)
패리티 체크 행렬은 길이 N의 이진 백터가 유효한 코드워드인지를 체크하기 위해 사용될 수 있다. 1×N 이진 백터 v는 아래의 식이 유지될 때만 유효한 코드워드이다.
Figure 112011003226920-pct00004
(1.3)
최근에, 반복 코딩 스킴이 매우 대중화되고 있다. 이러한 스킴에서, 코드는 몇 가지 단순한 구성 코드의 연결(concatencation)로 구성되고, 간단한 코드의 구성 디코더 사이에서 정보를 교환함으로써 반복 디코딩 알고리즘을 사용하여 디코딩된다. 다른 종류의 반복 디코더는 체크 노드와 비트 노드 사이의 상호연결을 설명하는 이분 그래프(bipartite graph)를 사용하여 정의될 수 있는 코드 상에서 동작한다. 이러한 경우에, 디코딩은 그래프의 에지를 통한 메시지의 반복적 전달로서 보여질 수 있다.
하나의 대중적인 종류의 반복 코드는 LDPC 코드이다. LDPC 코드는 저밀도(sparse) 패리티 체크 행렬 H에 의해 정의되는 선형 이진 블록 코드이다. 도 1에 도시된 바와 같이, 코드는 N개의 비트 노드의 세트 V, M개의 체크 노드의 세트 C, 및 비트 노드와 체크 노드를 연결하는 에지의 세트 E를 가진 저밀도 이분 그래프 G=(V,C,E)에 의해 정의될 수 있다. 비트 노드는 코드워드 비트에 대응하고, 체크 노드는 비트 상에 제약된 패리티 체크 대응하거나, 또는 대안으로서 패리티 체크 행렬 H의 열(row)에 대응한다. 비트 노드는 그 비트 노드가 참여하는 체크 노드에 에지에 의해 연결된다.
LDPC 코드는 반복적인 메시지 패싱 디코딩 알고리즘을 사용하여 디코딩될 수 있다. 이러한 알고리즘은 그 코드를 나타내는 언더라잉(underlying) 이분 그래프의 에지를 따라 비트 노드와 체크 노드 사이에서 메시지를 교환함으로써 동작한다. 디코더는 코드워드 비트의 초기 추정값과 함께 제공된다. 이 초기 추정값은 한 세트의 신뢰도 측정값이다. 예컨대, 데이터가 데이터를 홀딩하기 위한 최소 단위가 셀인 플래시 메모리에 저장된다면, 각각의 비트의 신뢰도는 한 그룹의 비트로부터 플래시 셀에 프로그래밍된 상태로 매핑하는 함수이다. 각각의 비트의 신뢰도는 플래시 셀로부터 판독된 전압 대역의 함수이다. 이러한 초기 추정값은 그 비트가 (식 (1.3)에 따라) 유효 코드워드인 것을 충족해야 한다는 패리티 체크 조건을 부과함으로써 정제되고 개선된다. 이것은 그래프 에지를 따라 통과되는 메시지를 사용하여, 코드워드 비트를 나타내는 비트 노드와 코드워드 비트상에 패리티 체크 조건을 나타내는 체크 노드 사이에서 정보를 교환함으로써 수행된다.
반복적 디코딩 알고리즘에서, 비트 추정값 그 자체 및 비트 추정값의 신뢰도를 모두 전달하는 "소프트" 비트 추정값이 사용되는 것이 일반적이다.
그래프 에지를 통해 통과되는 메시지에 의해 전달되는 비트 추정값은 다양한 형태로 표현될 수 있다. "소프트" 비트 추정값을 표현하기 위한 일반적인 측정값은 로그-우도비(LLR)이다.
Figure 112011003226920-pct00005
(1.4)
여기서, "현조건 및 관측값"은 수동적으로 메시지를 계산하는 것을 감안한 다양한 패리티 체크 조건이고, 관측값 y은 이러한 패리티 체크에 참가한 비트의 (예컨대, 비트가 플래시 메모리와 같은 메모리 디바이스에 저장된 데이터를 나타낸다면, 전형적으로 임계 전압 대역값의)측정값이다. 일반성의 손실없이 간략함을 위해, 지금부터 LLR 명명법이 본 명세서에서 사용된다. LLR의 부호는 비트 추정값을 제공한다(즉, 양의 LLR은 v=0에 대응하고, 음의 LLR은 v=1에 대응한다). LLR의 크기는 추정값의 신뢰도를 제공한다(즉, |LLR|=0은 그 추정값이 완전히 신뢰할 수 없음을 의미하고, |LLR|=±∞는 그 추정값이 완전히 신뢰가능하며 비트 값이 알려져 있음을 의미한다).
통상적으로, 비트 노드와 체크 노드 사이에서 그래프 에지를 통한 디코딩 오퍼레이션 동안 전달되는 메시지는 외부적(extrinsic)이다. 노드 n로부터 에지 e를 통해 전달되는 외부적 메시지 m는 에지 e가 아닌 노드 n에 연결된 에지에서 수신되는 모든 값을 고려할 것이다(이것이 외부적이라 불리는 이유이다: 오직 새로운 정보만 기초로 한다).
메시지 패싱 디코딩 알고리즘의 하나의 예는 이러한 종류의 알고리즘에서 가장 우수한 알고리즘인 신뢰 진행(BP) 알고리즘이다.
Figure 112011003226920-pct00006
라 하자. (1.5)
수신된 또는 판독된 심볼 y을 기초로, 비트 v에 대한 초기 디코더 추정값을 지정한다. 몇몇 비트에 대하여 y개의 관측값이 존재하지 않는 것도 가능함을 이해해야 한다. 이러한 경우 2가지 가능성이 존재한다.
제1 가능성: 단축된 비트. 그 비트는 선험적(a-priori)으로 알고 있고, (그 비트가 0인지 1인지의 여부에 따라) Pv=±∞이다.
제2 가능성: 펑쳐링된 비트(punctured bit). 이 비트는 선험적으로 알고 있지 않고,
Figure 112011003226920-pct00007
이다. (1.6)
여기서, Pr(v=0)은 비트 v가 0일 선험적 확률이고, Pr(v=1)은 비트 v가 1일 선험적 확률이다. 정보 비트가 0 또는 1일 확률이 동일한 선험적 확률을 가지는 것으로 가정하고, 코드가 선형적이라고 가정하면,
Figure 112011003226920-pct00008
이다. (1.7)
Figure 112011003226920-pct00009
이라 하자. (1.8)
여기서, 비트 v에 대한 최종 디코더 추정값은 전체 수신된 또는 판독된 시퀀스 v를 기초로 하고, 비트 v는 코드워드의 일부인 것으로 가정한다(즉,
Figure 112011003226920-pct00010
으로 가정한다). Qvc는 비트 노드 v로부터 체크 노드 c로의 메시지를 나타낸다. Rcv는 체크 노드 c로부터 비트 노드 v로의 메시지를 나타낸다. BP 알고리즘은 메시지를 계산하기 위해 아래의 갱신 법칙을 사용한다.
비트 노드에서 체크 노드로의 계산 법칙은 다음과 같다.
Figure 112011003226920-pct00011
(2.1)
여기서, N(n,G)는 그래프 G 내의 노드 n의 이웃의 세트를 나타낸다.
체크 노드에서 비트 노드로의 계산 법칙은 다음과 같다.
Figure 112011003226920-pct00012
(2.2)
여기서,
Figure 112011003226920-pct00013
이고,
Figure 112011003226920-pct00014
도메인에서의 오퍼레이션은 그룹 {0,1}×R+ 상에서 수행된다(이는 기본적으로 여기서의 합산이 크기의 합산 및 부호의 XOR로 정의된다는 것을 의미한다). 비트 v에 대한 최종 디코더 추정값은 다음과 같다.
Figure 112011003226920-pct00015
(2.3)
메시지 패싱 디코딩 동안 통과하는 메시지의 순서를 디코딩 스케줄이라 한다. BP 디코딩은 특정한 스케줄을 사용하는 것을 암시하지 않는다. 그것은 단지 계산 법칙(2.1), (2.2) 및 (2.3)을 정의한다. 디코딩 스케줄은 코드의 기대 에러 보정 능력에 영향을 주지 않는다. 그러나, 디코딩 스케줄은 디코더의 수렴률 및 디코더의 복잡도에 유의미한 영향을 줄 수 있다.
LDPC 코드를 디코딩하기 위한 표준 메시지 패싱 스케줄은 각각의 반복에서, 모든 가변 노드 및 후속적으로 모든 체크 노드가 자신의 이웃에게 새로운 메시지를 전달하는 플러딩(flooding) 스케줄이다. 플러딩 스케줄을 기반으로 하는 표준 BP 알고리즘은 도 2에 주어져 있다.
플러딩 스케줄을 기반으로 하는 BP 알고리즘의 표준적인 구현 방법은 메모리 요구사항에 대하여 고비용이다. (Pv, Qv, Qvc, 및 Rcv 메시지를 저장하기 위해) 총 2|V|+2|E| 개의 메시지를 저장할 필요가 있다. 또한, 플러딩 스케줄은 낮은 수렴률을 나타내고, 그러므로 주어진 디코딩 스루풋에서 요구되는 에러 보정 능력을 제공하기 위해 더 높은 디코딩 로직을 야기한다.
더 효율적인 시리얼 메시지 패싱 디코딩 스케줄은 문헌에 주지되어 있다. 시리얼 메시지 패싱 스케줄에서, 비트 노드 또는 체크 노드 중 하나는 순차적으로 트래버싱되고, 각각의 노드에 대하여, 대응하는 메시지는 그 노드로 전송되거나 그로부터 전송된다. 예를 들어, 시리얼 메시지 패싱 스케줄은 일정한 순서로 그래프 내의 체크 노드를 순차적으로 트래버싱함으로써 구현될 수 있고, 각각의 체크 노드 c∈C에 대하여, 아래의 메시지들이 전송된다.
1. 각각의 v∈N(c)에 대하여 Qvc(즉, 노드 c로 들어가는 모든 Qvc 메시지)
2. 각각의 v∈N(c)에 대하여 Rcv(즉, 노드 c로부터의 모든 Rcv 메시지)
플러딩 스케줄과 대조적으로, 시리얼 스케줄은 그래프 상의 정보의 더 빠른 전파가 가능하여, 더 빠른 수렴(대략 2배 더 빠른)을 야기한다. 또한, 시리얼 스케줄은 메모리 요구사항의 상당한 감소시켜 효율적으로 구현될 수 있다. 이는 작동중(on the fly) Qvc 메시지를 계산하기 위해 Qv 메시지 및 Rcv 메시지를 사용함으로써 달성될 수 있으므로, Qvc 메시지를 저장하기 위해 추가적인 메모리의 사용할 필요성이 없어진다. 이것은 식(2.1) 및 (2.3)을 기초로 Qvc를 (Qv-Rcv)로 표현함으로써 수행된다. 또한 선험적 메시지 Pv로 초기화된 것과 동일한 메모리가 반복적으로 갱신되는 Qv 후험적 메시지를 저장하기 위해 사용된다. 메모리 요구사항의 추가적인 감소가 얻어지는데, 이는 시리얼 스케줄에서는 단지 N(c)∀c∈C의 정보를 사용할 필요가 있고, 한편 플러딩 스케줄의 표준 구현에서는 코드의 그래프 구조를 저장하기 위해 2배 더 많은 메모리를 필요로 하는 데이터 구조 N(c)∀c∈C 및 N(v)∀v∈V를 모두 사용하기 때문이다. 이러한 시리얼 스케줄식 디코딩 알고리즘은 도 3에 도시되어 있다.
요약하자면, 시리얼 디코딩 스케줄은 다음과 같은 몇가지 이점을 가진다.
1) 시리얼 디코딩 스케줄은 표준 플러딩 스케줄에 비하여 수렴 속도를 2배 증가시킨다. 이것은 플러딩 스케줄을 기반으로 하는 디코더와 비교하여, 주어진 스루풋에서 주어진 에러 보정 능력을 제공하기 위해 단지 절반의 디코더 로직이 필요하다는 것을 의미한다.
2) 시리얼 디코딩 스케줄은 디코더의 메모리 효율적인 구현을 제공한다. (표준 플러딩 스케줄에서처럼 2|V|+2|E|개의 메시지를 저장하는 대신에) 단지 |V|+|E|개의 메시지만을 저장하기 위한 RAM이 요구된다. 코드의 그래프 구조를 저장하기 위한 ROM 크기는 표준 플러딩 스케줄과 비교하여, 절반이 필요하다.
3) "동작중" 수렴 테스팅은 반복동안 수행되는 계산의 일부로서 구현될 수 있고, 반복 동안 수렴 검출을 가능하게 하고, 임의의 포인트에서 디코딩 종료를 가능하게 한다. 이는 디코딩 시간 및 에너지 소비를 절감시킬 수 있다.
시리얼 메시지 패싱 디코딩 알고리즘을 구현하기 위한 기본적인 디코더 아키텍처 및 데이터 경로는 도 4에 도시되어 있다. 이 아키텍처는 다음을 포함한다.
1) Q-RAM : (Pv 메시지로 초기화된) 반복적으로 갱신되는 Qv 메시지를 저장하는 메모리.
2) R-RAM : Rcv 에지 메시지를 저장하는 메모리.
3) 메시지를 갱신하는데 포함되는 계산을 구현하기 위한 프로세싱 유닛.
4) 메모리로부터 프로세싱 유닛으로 그리고 그 역으로 메시지를 라우팅할 책임이 있는 라우팅 층.
5) 라우팅 층의 스위칭을 메모리 어드레싱하고 컨트롤할 책임이 있는, 코드의 그래프 구조를 저장하는 메모리.
반복적 코딩 시스템은, 디코더의 출력에서의 비트 에러율(BER)이 "잡음"이, 비트 에러에 대하여 신뢰성 있는 통신 채널 또는 메모리 디바이스에서, 더 작아지게 되는 것처럼, 훨씬 더 느리게 감소하기 시작하는, 도 5에 도시된 바와 같이, 에러 플로어라 불리는 바람직하지 않은 효과를 나타낸다. 이러한 효과는 요구되는 디코더 출력 비트 에러율이 매우 작아야(~1e-15) 하는 메모리 시스템에서 특히 문제가 된다. 도 5에서 잡음은 우측으로 증가함을 이해해야 한다.
반복적 코딩 시스템의 에러 보정 능력 및 에러 플로어는 코드 길이가 증가할 수도록 향상된다는 것은 주지되어 있다(이는 임의의 ECC에 대하여 참이지만, 에러 보정 능력이 짧은 코드 길이에서 오히려 나쁜 반복적 코딩 시스템에 대하여 특히 그러하다). 불행하게도, 반복적 코딩 시스템은, 디코딩 하드웨어의 메모리 복잡도가 코드 길이에 비례하므로, 긴 코드를 사용하는 것은 높은 복잡도의 패널티를 발생시킨다.
준-최적화된 디코딩 알고리즘이 메모리 요구사항 및 로직 복잡도 모두에 관하여 디코더 복잡도를 줄이기 위해 사용될 수 있다. 그러나, 그 결과 디코더는 워터폴 영역에서, 또는 에러 플로어 영역에서, 또는 이 두 영역 모두에서 감소된 에러 보정 능력을 나타낸다.
특히 LDPC와 연관된 메시지 패싱 디코딩 기술의 대중성으로 인해, 디코더의 복잡도를 줄이는 문제는 광범위한 연구 분야이다. 에러 보정 능력의 저하를 최소화하면서, 메시지를 유지하기 위해 요구되는 메모리의 크기를 줄이고, 이러한 종류의 코드에서 디코더의 구현에 있어 가격 및 전력 소비를 최소로 유지하도록 계산 유닛을 단순화시키기 위한 방법을 찾기 위해, 학계 및 산업계에서 모두 노력을 기울이고 있다.
최근의 종래의 LDPC 디코딩 알고리즘은 성능 저하를 희생하지 않고 디코더의 복잡도를 줄이는 것을 목표로 한다. 메모리 크기 요구사항을 모두 줄이고, 동시에 전기회로 구현에서 전력 소비 및 하드웨어(실리콘) 풋프린트를 최소화하는 프로세싱 유닛의 간단하고 낮은 복잡도의 고정 포인트 구현을 제공하는, (즉, 임의의 성능 손실없는) 최적의 BP 디코딩 알고리즘을 구현하는 방법이 여기서 서술된다.
여기서 서술된 알고리즘은 저장되는 메시지의 개수를 줄이고(Qvc 메시지가 동작중 생성되는 동안 Qv 추정값만이 유지된다), 그 메시지를 압축하고(예컨대, 대부분의 Rcv 메시지에 대하여 단지 하나의 비트 'ε'(아래에 설명됨)만 유지하고), 그러나 신뢰 확산 알고리즘의 최적의 성능은 유지한다.
본 명세서에 제공된 하나의 실시예는 K개의 정보 비트가 N(>K)개의 코드워드 비트로 인코딩되는 코드워드의 매니페스테이션(manifestation)을 디코딩하는 방법이다. 본 방법은 ⒜ N개의 비트 노드 및 N-K개의 체크 노드를 포함하는 그래프에서, 적어도 하나의 메시지 교환 반복 동안 상기 비트 노드와 상기 체크 노드 사이에서 메시지를 교환하는 것을 포함하는 스텝에 의해 상기 코드워드 비트의 추정값을 갱신하는 단계; ⒝ 각각의 메시지가 계산 동안 표현되는 2 비트 초과의 전체 메시지 길이를 정의하는 단계; 및 ⒞ 각각의 반복에서, 상기 비트 노드와 상기 체크 노드 사이에서 교환되는 상기 메시지의 적어도 일부분의 리프리젠테이션을 저장하는 단계;를 포함하고, 적어도 하나의 상기 노드에 대하여, 상기 적어도 하나의 반복 중 하나의 반복 동안 상기 노드로부터 전송된 메시지의 리프리젠테이션이 저장된다면, 상기 메시지의 적어도 하나의 리프리젠테이션은 적어도 2개의 비트를 사용하여 그러나 상기 전체 메시지 길이보다 적은 비트를 사용하여 저장된다.
본 명세서에 제공된 다른 실시예는 K개의 정보 비트가 N(>K)개의 코드워드 비트로 인코딩되는 코드워드의 매니페스테이션을 디코딩하는 디코더이다. 본 디코더는 (a) 적어도 하나의 메모리; 및 (b) 적어도 하나의 프로세서;를 포함하고, 상기 적어도 하나의 프로세스는 (i) N개의 비트 노드 및 N-K개의 체크 노드를 포함하는 그래프에서, 적어도 하나의 메시지 교환 반복 동안 상기 비트 노드와 상기 체크 노드 사이에서 각각이 2개의 비트보다 더 긴 전체 메시지 길이로 계산동안 표현되는 메시지를 교환하는 단계; 및 (ii) 상기 비트 노드와 상기 체크 노드 사이에서 교환되는 상기 메시지의 적어도 일부의 리프리젠테이션을, 상기 적어도 하나의 메모리에, 저장하는 단계;를 포함하는 스텝에 의해, 상기 코드워드 비트의 추정값을 갱신하기 위한 알고리즘을 실행함으로써 상기 코드워드의 매니페스테이션을 디코딩하고, 상기 노드 중 적어도 하나의 노드에 대하여, 상기 적어도 하나의 반복 중 하나의 반복 동안 상기 적어도 하나의 노드로부터 전송된 메시지의 리프리젠테이션이 저장되면, 상기 메시지의 적어도 하나의 리프리젠테이션은 적어도 2개의 비트를 사용하여 그러나 상기 전체 메시지 길이보다 적은 비트를 사용하여 저장된다.
본 명세서에서 제공된 다른 실시예는 메모리 컨트롤러이다. 본 메모리 컨트롤러는 (a) K개의 정보 비트를 N(>K)개의 코드워드 비트의 코드워드로 인코딩하는 인코더; 및 (b) 디코더;를 포함하고, 상기 디코더는 (i) 적어도 하나의 디코더 메모리; 및 (ii) (A) N개의 비트 노드 및 N-K개의 체크 노드를 포함하는 그래프에서, 적어도 하나의 메시지 교환 반복 동안 상기 비트 노드와 상기 체크 노드 사이에서 각각이 2 비트보다 큰 전체 메시지 길이로 계산 동안 표현되는 메시지를 교환하는 단계, 및 (B) 상기 비트 노드와 상기 체크 노드 사이에서 교환되는 메시지 중 적어도 일부의 리프리젠테이션을, 상기 적어도 하나의 메모리에, 저장하는 단계에 의해, 상기 코드워드 비트의 추정값을 갱신하기 위한 알고리즘을 실행함으로써 상기 코드워드의 매니페스테이션을 디코딩하는 적어도 하나의 프로세서;를 포함하고, 상기 노드 중 적어도 하나의 노드에 대하여, 상기 적어도 하나의 반복 중 하나의 반복 동안 상기 적어도 하나의 노드로부터 전송된 메시지의 리프리젠테이션이 저장되었다면, 상기 적어도 하나의 메시지의 리프리텐제이션은 적어도 2 비트를 사용하여 그러나 상기 전체 메시지 길이보다 적은 비트를 사용하여 저장된다.
본 명세서에 제공된 다른 실시예는 수신기이다. 본 수신기는 (a) 통신 채널을 통해 수신된 메시지를 복조하고, 그로 인해 K개의 정보 비트가 N(>K)개의 코드워드 비트의 코드워드로 인코딩된 코드워드의 매니페스테이션을 제공하는 복조기; 및 (b) 디코더;를 포함하고, 상기 디코더는 (i) 적어도 하나의 디코더 메모리; 및 (ii) (A) N개의 비트 노드 및 N-K개의 체크 노드를 포함하는 그래프에서, 적어도 하나의 메시지 교환 반복 동안 상기 비트 노드와 상기 체크 노드 사이에서 각각이 2 비트보다 큰 전체 메시지 길이로 계산 동안 표현되는 메시지를 교환하는 단계, 및 (B) 상기 비트 노드와 상기 체크 노드 사이에서 교환되는 메시지 중 적어도 일부의 리프리젠테이션을, 상기 적어도 하나의 메모리에, 저장하는 단계에 의해, 상기 코드워드 비트의 추정값을 갱신하기 위한 알고리즘을 실행함으로써 상기 코드워드의 매니페스테이션을 디코딩하는 적어도 하나의 프로세서;를 포함하고, 상기 노드 중 적어도 하나의 노드에 대하여, 상기 적어도 하나의 반복 중 하나의 반복 동안 상기 적어도 하나의 노드로부터 전송된 메시지의 리프리젠테이션이 저장되었다면, 상기 적어도 하나의 메시지의 리프리텐제이션은 적어도 2 비트를 사용하여 그러나 상기 전체 메시지 길이보다 적은 비트를 사용하여 저장된다.
본 명세서에 제공된 다른 실시예는 메시지를 전송하고 수신하는 통신 시스템이다. 본 통신 시스템은 (a) 송신기; 및 (b) 수신기;를 포함하고, 상기 송신기는 (i) 메시지의 K개의 정보 비트를 N(>K)개의 코드워드 비트의 코드워드로 인코딩하는 인코더; 및 (ii) 통신 채널을 통해 상기 코드워드를 변조된 신호로 전송하는 변조기;를 포함하고, 상기 수신기는 (i) 상기 통신 채널로부터 상기 변조된 신호를 수신하고, 상기 변조된 신호를 복조하고, 그로 인해 상기 코드워드의 매니페스테이션을 제공하는 복조기; 및 (ii) 디코더;를 포함하고, 상기 디코더는 (A) 적어도 하나의 디코더 메모리; 및 (B) (I) N개의 비트 노드 및 N-K개의 체크 노드를 포함하는 그래프에서, 적어도 하나의 메시지 교환 반복 동안 상기 비트 노드와 상기 체크 노드 사이에서 각각이 2 비트보다 큰 전체 메시지 길이로 계산 동안 표현되는 메시지를 교환하는 단계, 및 (II) 상기 비트 노드와 상기 체크 노드 사이에서 교환되는 메시지 중 적어도 일부의 리프리젠테이션을, 상기 적어도 하나의 메모리에, 저장하는 단계에 의해, 상기 코드워드 비트의 추정값을 갱신하기 위한 알고리즘을 실행함으로써 상기 코드워드의 매니페스테이션을 디코딩하는 적어도 하나의 프로세서;를 포함하고, 상기 노드 중 적어도 하나의 노드에 대하여, 상기 적어도 하나의 반복 중 하나의 반복 동안 상기 적어도 하나의 노드로부터 전송된 메시지의 리프리젠테이션이 저장되었다면, 상기 적어도 하나의 메시지의 리프리텐제이션은 적어도 2 비트를 사용하여 그러나 상기 전체 메시지 길이보다 적은 비트를 사용하여 저장된다.
LDPC 코드의 2개의 일반적인 리프리젠테이션에 존재한다. 하나의 리프리젠테이션은 패리티 체크 매트릭스를 사용하여, 매트릭스의 로우와 칼럼 사이에세 메시지를 통해 정보를 교환한다. 다른 리프리젠테이션은 이분 그래프를 사용한다. 이러한 리프리젠테이션들이 동등함이 당업자들에게 주지되어 있다. 앞선 실시예들은 이분 그래프 리프리젠테이션에 대응한다. 아래의 실시예들은 패리티 체크 매트릭스 리프리젠테이션에 대응한다.
본 명세서에 제공된 다른 실시예는 K개의 정보 비트가 N(>K)개의 코드워드 비트로 인코딩되는 코드워드의 매니페스테이션을 디코딩하는 방법이다. 본 방법은 (a) N-K개의 로우 및 N개의 칼럼을 가진 패리티 체크 매트릭스를 제공하는 단계; (b) 적어도 하나의 메시지 교환 반복 동안 상기 매트릭스의 로우와 칼럼 사이에서 메시지를 교환하는 스텝에 의해 상기 코드워드 비트의 추정값을 갱신하는 단계; (c) 각각의 메시지가 계산 동안 표현될, 2비트보다 큰 전체 메시지 길이를 정의하는 단계; 및 (d) 상기 로우와 칼럼 사이에서 교환되는 메시지의 적어도 일부의 리프리젠테이션을 저장하는 단계;를 포함하고, 상기 로우 또는 칼럼 중 적어도 하나 로우 또는 칼럼에 대하여, 상기 적어도 하나의 반복 중 하나의 반복 동안 상기 적어도 하나의 로우 또는 칼럼으로부터 전송된 메시지의 리프리젠테이션이 저장된다면, 상기 적어도 하나의 메시지의 리프리젠테이션은 적어도 2비트를 사용하여 그러나 상기 전체 메시지 길이보다 적은 비트를 사용하여 저장된다.
본 명세서에 제공된 다른 실시예는 K개의 정보 비트가 N(>K)개의 코드워드 비트로 인코딩되는 코드워드의 매니페스테이션을 디코딩하는 디코더이다. 본 디코더는 (a) 적어도 하나의 메모리; 및 (b) (i) N-K개의 로우 및 N개의 칼럼을 가진 패리티 체크 매트릭스를 제공하는 단계, (ii) 적어도 하나의 메시지 교환 반복 동안 상기 매트릭스의 로우와 칼럼 사이에서, 각각이 2비트보다 큰 전체 메시지 길이로 표현된 메시지를 교환하는 단계, 및 (iii) 상기 로우와 칼럼 사이에서 교환되는 메시지 중 적어도 일부의 리프리젠테이션을, 적어도 하나의 메모리에, 저장하는 단계에 의해, 상기 코드워드 비트의 추정값을 갱신하기 위한 알고리즘을 실행함으로써 상기 코드워드의 매니페스테이션을 디코딩하는 적어도 하나의 프로세서;를 포함하고, 상기 로우 또는 칼럼 중 적어도 하나의 로우 또는 칼럼에 대하여, 상기 적어도 하나의 반복 중 하나의 반복 동안 상기 적어도 하나의 로우 또는 칼럼으로부터 전송된 메시지의 리프리젠테이션이 저장되었다면, 상기 적어도 하나의 메시지의 리프리텐제이션은 적어도 2 비트를 사용하여 그러나 상기 전체 메시지 길이보다 적은 비트를 사용하여 저장된다.
본 명세서에 제공된 다른 실시예는 메모리 컨트롤러이다. 본 메모리 컨트롤러는 (a) K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 인코더; 및 (b) 디코더;를 포함하고, 상기 디코더는 (i) 적어도 하나의 메모리; 및 (ii) (A) N-K개의 로우 및 N개의 칼럼을 가진 패리티 체크 매트릭스를 제공하는 단계, (B) 적어도 하나의 메시지 교환 반복 동안 상기 매트릭스의 로우와 칼럼 사이에서, 각각이 2비트보다 큰 전체 메시지 길이로 표현된 메시지를 교환하는 단계, 및 (C) 상기 로우와 칼럼 사이에서 교환되는 메시지 중 적어도 일부의 리프리젠테이션을, 상기 적어도 하나의 메모리에, 저장하는 단계에 의해, 상기 코드워드 비트의 추정값을 갱신하기 위한 알고리즘을 실행함으로써 상기 코드워드의 매니페스테이션을 디코딩하는 적어도 하나의 프로세서;를 포함하고, 상기 로우 또는 칼럼 중 적어도 하나의 로우 또는 칼럼에 대하여, 상기 적어도 하나의 반복 중 하나의 반복 동안 상기 적어도 하나의 로우 또는 칼럼으로부터 전송된 메시지의 리프리젠테이션이 저장되었다면, 상기 적어도 하나의 메시지의 리프리텐제이션은 적어도 2 비트를 사용하여 그러나 상기 전체 메시지 길이보다 적은 비트를 사용하여 저장된다.
본 명세서에 제공된 다른 실시예는 수신기이다. 본 수신기는 (a) 통신 채널로부터 수신된 메시지를 복조하고, 그로 인해 K개의 정보비트가 N(>K)개의 코드워드 비트로 인코딩된 코드워드의 매니페스테이션을 제공하는 복조기; 및 (b) 디코더;를 포함하고, 상기 디코더는 (i) 적어도 하나의 메모리; 및 (ii) (A) N-K개의 로우 및 N개의 칼럼을 가진 패리티 체크 매트릭스를 제공하는 단계, (B) 적어도 하나의 메시지 교환 반복 동안 상기 매트릭스의 로우와 칼럼 사이에서, 각각이 2비트보다 큰 전체 메시지 길이로 표현된 메시지를 교환하는 단계, 및 (C) 상기 로우와 칼럼 사이에서 교환되는 메시지 중 적어도 일부의 리프리젠테이션을, 상기 적어도 하나의 메모리에, 저장하는 단계에 의해, 상기 코드워드 비트의 추정값을 갱신하기 위한 알고리즘을 실행함으로써 상기 코드워드의 매니페스테이션을 디코딩하는 적어도 하나의 프로세서;를 포함하고, 상기 로우 또는 칼럼 중 적어도 하나의 로우 또는 칼럼에 대하여, 상기 적어도 하나의 반복 중 하나의 반복 동안 상기 적어도 하나의 로우 또는 칼럼으로부터 전송된 메시지의 리프리젠테이션이 저장되었다면, 상기 적어도 하나의 메시지의 리프리텐제이션은 적어도 2 비트를 사용하여 그러나 상기 전체 메시지 길이보다 적은 비트를 사용하여 저장된다.
본 명세서에 제공된 다른 실시예는 메시지를 전송하고 수신하는 통신 시스템이다. 본 통신 시스템은 (a) 송신기; 및 (b) 수신기;를 포함하고, 상기 송신기는 (i) 메시지의 K개의 정보 비트를 N(>K) 코드워드 비트의 코드워드로 인코딩하는 인코더, 및 (ii) 통신 채널을 통해 상기 코드워드를 변조된 신호로 전송하기 위한 변조기를 포함하고, 상기 수신기는 (i) 상기 통신 채널로부터 상기 변조된 신호를 수신하고, 상기 변조된 신호를 복조하고, 그로 인해 상기 코드워드의 매니페스테이션을 제공하는 복조기, 및 (ii) 디코더를 포함하고, 상기 디코더는 (A) 적어도 하나의 메모리; 및 (B) (I) N-K 개의 로우, 및 N개의 칼럼을 가진 패리티 체크 매트릭스를 제공하는 단계; (II) 적어도 하나의 메시지 교환 반복동안 상기 매트릭스의 로우와 칼럼 사이에서, 각각이 계산 동안 2 비트보다 더 긴 전체 메시지 길이로 표현되는 메시지를 교환하는 단계; 및 (III) 적어도 하나의 메모리에, 상기 로우와 칼럼 사이에서 교환되는 메시지 중 적어도 일부의 리프리젠테이션을 저장하는 단계;에 의해, 상기 코드워드 비트의 추정값을 갱신하는 알고리즘을 실행함으로써 상기 코드워드의 매니페스테이션을 디코딩하는 적어도 하나의 프로세서를 포함하고, 상기 로우 또는 칼럼 중 적어도 하나의 로우 또는 칼럼에 대하여, 적어도 하나의 반복 중 하나의 반복동안 상기 적어도 하나의 로우 또는 칼럼으로부터 전송된 메시지의 리프리젠테이션이 저장된다면, 상기 적어도 하나의 메시지의 리프리젠테이션은 적어도 2비트를 사용하여 그러나 전체 메시지 길이보다 적은 비트를 사용하여 저장된다.
K개의 정보 비트가 N(>K)개의 코드워드 비트로 인코딩되는 코드워드의 매니페스테이션을 디코딩하기 위한 2개의 일반적인 방법이 본 명세서에 제공된다. 디코딩되는 것은 코드워드가 하나의 디코딩 방법이 적용되기 전에 잡음에 의해 손상되었기 때문에, 단지 코드워드의 메니페스테이션이며, 실제적인 코드워드가 아니다.
제1의 일반적인 방법에 따라, 코드워드 비트의 추정값은 반복적으로 갱신된다. N개의 비트 노드 및 N-K개의 체크 노드를 포함하는 그래프에서, 메시지는 하나 이상의 메시지 교환 반복에서 비트 노드와 체크 노드 사이에서 교환된다.
용어 "메시지 길이"는 메모리 내에 메시지를 저장하기 위해 사용되는 비트의 개수로 본 명세서에 정의된다. 2비트보다 큰 전체 메시지 길이는 각각의 메시지가 계산 동안 전체 메시지 길이로 표현되도록 정의된다. 예를 들어, 아래에 서술된 바람직한 실시예에서, 계산 동안 사용되는 전체 메시지 길이는 n+m+1이다. 여기서 n은 정수 비트, m은 분수 비트이고, 하나의 비트는 그 수의 부호를 나타내기 위한 것이다.
각각의 반복에서, 비트 노드와 체크 노드 사이에서 교환되는 메시지의 적어도 일부의 리프리젠테이션이 저장된다. 여기서 이해되는 바와 같이, 수의 "표현"은 수 그 자체이거나, 그 수의 근사값이다. 수의 "리프리젠테이션"은 수의 표현이거나 그 수에 특정된 정보인데, 가능하다면 그 수로 특정되지 않는 다른 정보와 결합하여 수가 유도될 수도 있다. 예를 들어, 아래에 서술된 바람직한 실시에에서, Rc는 Rc를 저장하기 위해 사용되는 비트가 Rcv의 리프리젠테이션을 저장하기 위해 사용되는 비트 사이에서 카운팅되지 않도록, 임의의 하나의 메시지 Rcv로 특정되지 않는다. Rcv의 인덱스를 저장하기 위해 사용되는 비트 또한 Rcv의 리프리젠테이션을 저장하기 위해 사용되는 비트 사이에서 카운팅되지 않는데, 이는 인덱스 비트가 Rcv의 값에 대한 정보를 제공하지 않기 때문이다.
적어도 하나의 노드에 대하여, 하나의 반복 동안 그 노드로부터 전송되는 메시지의 리프리젠테이션이 저장되면, 적어도 하나의 메시지의 리프리젠테이션은 적어도 2개의 비트를 사용하여, 그러나 전체 메시지 길이 보다는 적은 비트를 사용하여 저장된다. 바람직하게는, 그 반복에서 그 노드로부터 전송된 하나의 다른 메시지의 리프리젠테이션은 전체 메시지 길이로 저장된다.
바람직하게는, 하나의 다른 메시지를 제외한, 하나의 반복 동안 그 노드로부터 전송되는 모든 메시지는 적어도 2개의 비트를 사용하여 그러나 전체 메시지 길이보다는 적은 비트를 사용하여 저장된다. 또한 바람직하게는, 전체 메시지 길이보다 적은 비트를 사용하여 저장된 메시지는 정확히 2비트를 사용하여 저장된다. 예를 들어, 아래에 서술된 바람직한 실시예에서,
Figure 112011003226920-pct00016
을 제외한 모든 Rcv는 하나의 부호 비트와 |Rcv|가 |Rc|인지 또는 |Rc|+1인지를 나타내는 하나의 비트의 합으로 저장되고,
Figure 112011003226920-pct00017
는 전체 메시지 길이로 저장된다.
바람직하게는, 적어도 하나의 메시지의 리프리젠테이션이 전체 메시지 길이보다 적은 비트를 사용하여 저장되어 있는 노드는 체크 노드이다. 더욱 바람직하게는 (하나의) 반복 동안 체크 노드로부터 전송된 모든 메시지의 리프리젠테이션이 저장된다. 각각의 체크 노드에 대하여, 그 체크 노드로부터 전송된 적어도 하나의 메시지의 리프리젠테이션은 적어도 2 비트를 사용하여 그러나 전체 메시지 길이보다 적은 비트를 사용하여 저장되고, 그 체크 노드로부터 전송된 하나의 다른 메시지의 리프리젠테이션은 전체 메시지 길이로 저장된다.
바람직하게는, (하나의) 반복 동안 그 노드로부터 전송된 메시지의 리프리젠테이션이 저장되는 각각의 노드에 대하여, 그 노드로부터 전송된 메시지 중 적어도 하나의 메시지의 리프리젠테이션이 적어도 2비트를 사용하여 그러나 전체 메시지 길이보다 적은 비트를 사용하여 저장되고, 그 노드로부터 전송된 하나의 다른 메시지의 리프리젠테이션은 전체 메시지 길이로 저장된다.
바람직하게는, 하나 이상의 노드에 대하여, 그 노드로부터 전송된 메시지의 리프리젠테이션이 저장되는 각각의 반복에서, 적어도 하나의 메시지의 리프리젠테이션은 적어도 2 비트를 사용하여 그러나 전체 메시지 길이보다 적은 비트를 사용하여 저장되고, 하나의 다른 메시지의 리프리젠테이션은 전체 메시지 길이로 저장된다.
바람직하게는, 메시지는 신뢰 확산 알고리즘에 따라, 예컨대, 플러딩 스케줄에 따라, 또는 시리얼 스케줄에 따라 교환된다.
제2의 일반적인 방법에 따라, 코드워드 비트의 추정값은 반복적으로 갱신된다. 하나 이상의 교환 반복에서, 메시지는 N-K개의 로우, 및 N개의 칼럼을 가진 패리티 체크 매트릭스의 로우와 칼럼 사이에서 교환된다. 2비트보다 큰 전체 미시지 길이는 각각의 메시지가 계산동안 전체 메시지 길이로 표현되도록 정의된다. 각각의 반복에서, 매트릭스의 로우와 칼럼 사이에서 교환되는 메시지의 적어도 이부의 리프리젠테이션이 저장된다. 적어도 하나의 로우 또는 칼럼에 대하여, 그 로우 또는 칼럼으로부터 전송된 메시지의 리프리젠테이션은 하나의 반복 동안 저장되고, 적어도 하나의 메시지의 리프리젠테이션은 적어도 2비트를 사용하여 그러나 전체 메시지 길이보다 적은 비트를 사용하여 저장되고, 하나의 다른 메시지의 리프리젠테이션은 전체 메시지 길이로 저장된다.
제1 또는 제2의 일반적인 방법에 대응하는 디코더는 하나 이상의 메모리, 및 제1 또는 제2의 일반적인 방법을 구현하는 알고리즘을 실행함으로써 코드워드의 매니페스테이션을 디코딩하는 하나 이상의 프로세서를 포함하고, 저장된 리프리젠테이션은 메모리에 저장된다.
제1 또는 제2의 일반적인 방법에 대응하는 메모리 컨트롤러는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 인코더, 및 제1의 일반적인 방법에 대응하는 디코더를 포함한다. 통상적으로, 메모리 컨트롤러는 또한 메인 메모리에 코드워드의 적어도 일부를 저장하고, 그 메인 메모리로부터 코드워드(일부)의 매니페스테이션을 추출하는 회로를 포함한다.
제1 또는 제2의 일반적인 방법에 대응하는 메모리 디바이스는 그러한 메모리 컨트롤러 및 메인 메모리를 포함한다.
제1 또는 제2의 일반적인 방법에 대응하는 수신기는 통신 채널을 통해 수신된 메시지를 복조하는 복조기를 포함한다. 복조기는 K개의 정보 비트가 N(>K)개의 코드워드 비트로 인코딩되는 코드워드의 매니페스테이션을 제공한다. 이러한 수신기는 또한 제1 또는 제2의 일반적인 방법에 대응하는 디코더를 포함한다.
제1 또는 제2의 일반적인 방법에 대응하는 통신 시스템은 송신기 및 수신기를 포함한다. 송신기는 메시지의 K개의 정보비트를 N(>K)개의 코드워드 비트의 코드워드로 인코딩하는 인코더, 및 코드워드를 통신 채널을 통해 변조된 신호로 전송하는 변조기를 포함한다. 수신기는 제1 또는 제2의 일반적인 방법에 대응하는 수신기이다.
본 명세서에 다양한 실시예가 단지 예시의 방법으로 첨부된 도면을 참조하여 서술되어 있다.
도 1은 저밀도 패리티 체크 매트릭스와 저밀도 이분 그래프 간의 동일성을 도시한다.
도 2는 플러딩 스케줄 신뢰 확산 알고리즘을 도시한다.
도 3은 체크 노드 시리얼 스케줄 신뢰 확산 알고리즘을 도시한다.
도 4는 시리얼 스케줄러 메시지 패싱 디코더의 기본적인 아키텍처 및 데이터 경로를 도시한다.
도 5는 에러 플로어 현상을 도시한다.
도 6은 함수
Figure 112011003226920-pct00018
의 그래프이다.
도 7 및 8은 이론 1의 도식적 표현이다.
도 9는 'dc'의 함수로서 R-RAM 메모리 감소를 도시한다.
도 10은 'dc'의 함수로서 전체 R-RAM 메모리 감소를 도시한다.
도 11은 플러딩 스케줄 신뢰 확산 알고리즘의 고정 포인트 버전을 구현하기 위한 종래의 디코더의 기본적인 아키텍처 및 데이터 경로를 도시한다.
도 12는 플러딩 스케줄 신뢰 확산 알고리즘의 고정 포인트 버전을 구현하기 위해 감소된 메모리 요구사항과 함께 동작하는 디코더의 기본적인 아키텍처 및 데이터 경로를 도시한다.
도 13은 도 12의 디코더에 대한 가변 노드 프로세서 알고리즘을 나타낸다.
도 14은 도 12의 디코더에 대한 체크 노드 프로세서 알고리즘을 나타낸다.
도 15는 시리얼 스케줄 신뢰 확산 알고리즘의 고정 포인트 버전을 구현하기 위한 종래의 디코더의 기본적인 아키텍처 및 데이터 경로를 도시한다.
도 16은 시리얼 스케줄 신뢰 확산 알고리즘의 고정 포인트 버전을 구현하기 위한 감소된 메모리 요구사항을 가진 디코더의 기본적인 아키텍처 및 데이터 경로를 도시한다.
도 17은 그 컨트롤러가 감소된 메모리 디코더를 포함하는 플래시 메모리 디바이스의 하이 레벨의 개략적인 블록 다이어그램이다.
도 18은 도 17의 플래시 메모리 디바이스의 컨트롤러의 하이 레벨의 부분적고 개략적인 블록 다이어그램이다.
도 19는 그 수신기가 감소된 메모리 디코더를 포함하는 통신 시스템의 하이 레벨의 개략적인 블록 다이어그램이다.
발명에 따른 LDPC 디코딩의 원리 및 그 동작은 도면과 아래의 설명을 참조하여 더 잘 이해될 것이다.
아래의 설명은 도 3에 도시된 시리얼 스케줄식 BP 디코딩 알고리즘의 고정 포인트 버전 및 메모리 및 로직 형태로 감소된 복잡도를 가진 연관된 디코더의 설명이다.
일반성의 손실없이, 디코더에 의해 사용되는 LLR의 로그 밑수가 2인 것으로 가정한다. 일반적인 방법은 이러한 경우로 한정되지 않지만, 밑수가 2인 LLR은 디코더의 디지털 회로의 편리하고 효율적인 구현을 제공한다.
본 발명은 디코더 메모리에 저장된 Rcv 메시지가 더욱 간결하게 압축되고 표현될 수 있다는 관측을 기초로 한다. 이러한 관측은 아래의 이론에 의해 뒷받침된다.
이론 1:
Figure 112011003226920-pct00019
라 하면,
Figure 112011003226920-pct00020
(3.1)
증명:
밑수-2 LLRs의 특수한 경우에, 함수
Figure 112011003226920-pct00021
(x)는 아래와 같이 정의된 함수
Figure 112011003226920-pct00022
2(x)가 된다.
Figure 112011003226920-pct00023
(3.2)
Figure 112011003226920-pct00024
라 하자. 도면을 다시 참조하면, 도 6에 도시된 함수
Figure 112011003226920-pct00025
는 아래의 속성들을 충족시킴을 알 수 있다.
Figure 112011003226920-pct00026
(3.3)
이 이론은 증명하는 제1 단계는 아래의 보조정리를 증명하는 것이다.
수개의 항의 합이 주어진 때, 가장 큰 항이 아닌 하나의 항이 그 합으로부터 배제된다면, 그 서브-합(최대값이 아닌 항을 배제한 항의 합)은 적어도 오리지널 합(모든 항의 합)의 절반이다.
이러한 보조정리의 수학적 증명은 아래와 같이 제공된다.
Figure 112011003226920-pct00027
이면, 모든
Figure 112011003226920-pct00028
에 대하여,
Figure 112011003226920-pct00029
이다. (3.4)
이 식은 임의의 세트의 양수, s1, s2,..., sn(n≥2)에 대하여 유지되고, 상기 정의된 함수
Figure 112011003226920-pct00030
에 독립적이다.
증명: 식(3.4)의 우변을 sj가 아닌 항의 합과 sj의 덧셈으로서 나타내고, 식(3.4)의 좌변에 대하여 동일하게 수행한다.
Figure 112011003226920-pct00031
(3.5)
(3.5)로부터, 다음을 증명하는 것이 충분하다.
Figure 112011003226920-pct00032
(3.6)
sj≠smax이므로, (3.6)의 우변을 smax과 다른 항의 합의 덧셈으로서 나타낼 수 있으므로, smax=sk를 가정하면, 다음과 같다.
Figure 112011003226920-pct00033
(3.7)
sj에 다른 양의 값을 더할 때는 말할 것도 없이, smax 그 자체가 sj 자체보다 더 크기 때문에 식(3.7)은 참이다.
본 이론을 증명하는 제2 단계는 아래의 내용을 증명하는 것이다.
a>b≥a/2; a,b≥2이면;
Figure 112011003226920-pct00034
(3.8)
Figure 112011003226920-pct00035
는 단조(monotonically) 감소하므로, 명백하게
Figure 112011003226920-pct00036
이다. 그러므로,
Figure 112011003226920-pct00037
Figure 112011003226920-pct00038
간의 최대 차이는 'b'가 최소일 때이다. 그러므로, b=a/2에 대하여 식(3.8)을 증명하는 것은 충분하다. 이제 b=a/2로 가정하면,
Figure 112011003226920-pct00039
Figure 112011003226920-pct00040
와 동등함을 증명한다. 그러나 이는 이미 앞서 주어진
Figure 112011003226920-pct00041
함수의 6번째 속성으로서 주어져 있으므로, 식(3.8)은 증명된다.
본 이론의 증명의 제3 단계는
Figure 112011003226920-pct00042
,
Figure 112011003226920-pct00043
을 정의하는 것이다. 식(2.2) 내에서 Rc 및 Rcv의 정의를 기초로 하면, 아래의 식이 성립한다.
Figure 112011003226920-pct00044
(4.1)
vmin의 정의 및
Figure 112011003226920-pct00045
의 속성들(도 6 참조)로부터, 다음이 명백하다.
Figure 112011003226920-pct00046
(4.2)
이는
Figure 112011003226920-pct00047
가 합
Figure 112011003226920-pct00048
에서 최대 항임을 의미한다.
제1 단계(식 3.4)에 제공된 보조정리로부터,
Figure 112011003226920-pct00049
이는 아래와 같다.
Figure 112011003226920-pct00050
(4.3)
식(4.3)으로부터, 아래의 내용이 증명된다.
Figure 112011003226920-pct00051
(4.4)
Figure 112011003226920-pct00052
이므로, (4.5)
식(4.5)에 식(4.4)을 대입하면,
Figure 112011003226920-pct00053
(4.6)
Figure 112011003226920-pct00054
(4.7)
이제 R을 정의하면:
Figure 112011003226920-pct00055
(4.8)
'y'를 정의하면, 아래와 같다.
Figure 112011003226920-pct00056
(4.9)
정의(4.8)에 정의(4.9)를 대입하면,
Figure 112011003226920-pct00057
(4.10)
식(3.3) 에서
Figure 112011003226920-pct00058
의 속성(6) 및 (2)을 식(4.10)에 적용하면, 정의(4.8)에서 정의된 'R'은 다음을 만족한다.
R≤1 (4.11)
이제 정의(4.8)에 식(4.7)을 대입하고, 식(3.3)에
Figure 112011003226920-pct00059
의 속성(5)을 대입하면, 그 결과는 다음과 같다.
Figure 112011003226920-pct00060
(4.12)
부등식(4.11) 및 (4.12)을 조합하면, 다음과 같다.
Figure 112011003226920-pct00061
(4.13)
부등식(4.13)으로부터, 다음이 명백하다.
Figure 112011003226920-pct00062
(4.14)
부등식(4.14)과 함께, 이론-1이 증명된다. 이론-1의 직접적인 이점은 각각의 V≠Vmin에 대하여, 하나의 체크 노드 내의 모든 Rcv 메시지를 재구성하기 위해, 메모리에 유지될 필요가 있는 모든 것이 (3.1)에서 이론-1의 서술문에 정의된 Rc이고, vmin에 대하여,
Figure 112011003226920-pct00063
을 개별적으로 유지한다는 점이다(
Figure 112011003226920-pct00064
에서 'min'은 체크 노드로 들어가는 대응하는
Figure 112011003226920-pct00065
메시지가 체크 노드로 들어가는 모든 Qvc 메시지 중 최소값 Qvc임을 나타내고,
Figure 112011003226920-pct00066
에서 'max'는
Figure 112011003226920-pct00067
이 도착한 에지 상으로 전송된 결과적인 Rcv 메시지가 그 체크 노드로부터 전송된 모든 다른 Rcv 메시지 중에서 그 체크 노드로부터 전송된 최대값의 메시지임을 나타낸다). 이러한 관찰(이론-1)의 도식적 표현이 도 7 및 8에 제공되어 있다. 도 7에 x-도메인에서
Figure 112011003226920-pct00068
도메인으로의 변환이 도시되어 있다.
Figure 112011003226920-pct00069
도메인에서의 최대값이 명백하게
Figure 112011003226920-pct00070
에 속할 것임이 분명하다.
도 8에서, Rcv 메시지를 계산하여
Figure 112011003226920-pct00071
도메인에서 x-도메인으로 되돌아간다. 그래프 내의 각각의 에지 'k'에서(도 1 참조), Qvc -k 메시지는 가변 노드에서 체크 노드로 전달된다. 동일한 에지에서 다른 방향으로, 메시지 Rcv -k는 체크 노드로부터 가변 노드로 전송된다. 도 8에서, (
Figure 112011003226920-pct00072
을 제외한) 모든 Rcv 메시지는 대부분 Rc로부터 거리 '1'에 있음이 강조되었다. 그러므로, 우리의 메모리가 Rc,
Figure 112011003226920-pct00073
,
Figure 112011003226920-pct00074
의 인덱스(즉, 체크 노드로부터 전송된 메시지 중 어떤 것이
Figure 112011003226920-pct00075
에 대응하는지)를 유지하는 것은 충분하고, 모든 다른 Rcv 메시지에 대하여 하나의 비트가 이러한 메시지 각각에 대하여 그 메시지의 크기가 |Rc| 또는 |Rc+1|과 동일한지 여부를 나타낸다. 또한, Rcv 메시지 각각에 대하여, 부호 비트를 저장할 필요가 있다.
이제 메모리 사용의 절감은 체크 노드당 유지되는 Rcv 메시지의 개수가 증가될수록 증가함이 명백하다. 이러한 개수는 dc, 체크 노드 차수(check node dgree)라 한다.
BP 디코딩의 고정 포인트 구현에서, 각각의 메시지가 하나의 부호 비트, n개의 정수 비트, 및 m개의 분수 비트에 의해 표현되는 메시지의 (1.n.m) 유니폼 양자화를 사용하는 것으로 가정하자. 체크 노드 c가 dc개의 가변 노드에 연결된 것으로 간주한다(즉,
Figure 112011003226920-pct00076
). BP 디코딩 알고리즘의 종래의 고정 포인트 구현에 따라, 하나의 체크 노드 내에 모든 메시지 {Rcv, ∀v∈N(c,G)}를 저장하기 위해 dc·(1+n+m) 비트의 메모리가 필요하다. 그러나, 본 방법에서는, 이론-1에서 증명된 속성을 사용하여, 하나의 체크 노드의 메시지{Rcv, ∀v∈N(c,G)}는 단지
Figure 112011003226920-pct00077
비트를 사용하여 저장된다. 모든 체크 노드가 dc개의 이웃을 가진다면, 도 4에 도시된 디코더 R-RAM 메모리의 크기는 아래의 팩터만큼 감소된다.
Figure 112011003226920-pct00078
(4.15)
식(4.15)은 아래와 같이 요약된다.
Figure 112011003226920-pct00079
(4.16)
도 9는 'n' 및 'm'의 수개의 값에 대하여 'dc'의 함수인 R-RAM감소의 비율(퍼센트)을 나타내고, 'dc'는 20에서 32까지 설정된다.
코드율을 'r'이라 하고, LDPC 코드가 평균 노드 차수
Figure 112011003226920-pct00080
및 평균 체크 차수
Figure 112011003226920-pct00081
를 가지는 것으로 가정하면, 코드율은 아래와 같다.
Figure 112011003226920-pct00082
(4.17)
Figure 112011003226920-pct00083
가 일정하게 유지되는 것으로 가정하면, 코드율이 증가할수록,
Figure 112011003226920-pct00084
역시 증가하여, 본 발명은 특히 고율 코드에 유용하다. 코드 길이가 Nv이고, 독립된 체크 노드의 개수가 Nc라면, 코드율은 아래와 같이 표현될 수 있다.
Figure 112011003226920-pct00085
(4.18)
식(4.17) 및 (4.18)로부터, 아래와 같은 결과를 얻는다.
Figure 112011003226920-pct00086
(4.19)
종래의 시리얼 디코더가 각각의 Qv 메시지에 대하여 Q-RAM에 2+n+m 비트를 보유한다고 가정하면, 결합된 Q-RAM 및 R-RAM은 아래의 팩터만큼 감소된다.
Figure 112011003226920-pct00087
(4.20)
식(4.20)에 식(4.19)을 대입하면, 감소 팩터는 아래와 같다.
Figure 112011003226920-pct00088
(4.21)
식(4.21)에 다시 식(4.17)을 대입하면, 코드율 'r' 및 'dc'의 함수인 감소는 아래와 같다.
Figure 112011003226920-pct00089
(4.22)
도 10은 n=5, m=0의 경우를 채용하여, 도 9에 도시된 20 내지 32의 dc 값에 대한 몇가지 코드율에 대한 식(4.22)에 따른 전체 RAM 크기 감소를 보여준다. 도 10에서 알 수 있듯이, R-RAM 감소 팩터는 dc가 큰 고율 LDPC 코드에 대하여 더 크다. 예를 들어, IEEE802.3 표준에 정의된 코드율 0.8413 RS-LDPC를 고려한다. 이러한 코드는 dc=32를 가진다. 또한, (1.n.m)=(1.5.0)의 메시지 양자화를 가진 고정포인트 구현을 가정한다. 시뮬레이션 결과는 이러한 양자화가 거의 최적의 결과, 즉, 동등한 종래의 플로팅 포인트 BP 디코더와 비교하여 무시할만한 열화(degradation)를 제공함을 보여준다. 본 예에서, 본 명세서에 나타난 방법에 따른 R-RAM 크기는 종래의 구현에 의해 필요한 R-RAM 크기의 40.63%를 필요로 한다.
R-RAM이 디코더에서 가장 큰 메모리이고, 그러므로 본 예에서 본 명세서에 나타난 방법에 따른 전체 디코더 메모리의 크기는 종래의 디코더의 전체 디코더 메모리 크기의 50% 내지 55%이여야 함을 이해해야 한다. 또한, R-RAM 메모리 크기의 감소는 또한, 각각의 클록에서 더 적은 비트가 R-RAM 데이터 버스를 통해 구동되므로, 디코더의 전력소비에 영향을 준다.
그 다음, 본 명세서에 서술된 디코딩 방법 및 디코더의 2개의 예시적인 실시예가 서술된다. 제1 실시예는 플러팅 스케줄을 기반으로 한 디코더를 예로 든다. 제2 실시예는 시리얼 스케줄을 예로 든다.
일반성을 훼손하지 않고 간략함을 위해, 디코더가 하나의 프로세싱 유닛을 사용하는 것으로 가정한다. 또한, LDPC 코드는 우 정규적(right regular)인 것으로 가정한다. 즉, 그것의 패리티 체크 매트릭스의 각각의 로우 내에 1의 개수(또는 그것의 언더라잉 이분 그래프 리프리젠테이션 내에 각각의 체크 노드로부터 나오는(emanating) 에지의 개수)는 일정하고, dc와 같다. 더 많은 프로세싱 유닛 및/또는 비정규적 LDPC를 지원하기 위해 서술된 디코더를 일반화하는 것은 간단하며 당업자들에게 주지되어 있다. 또한 메시지 양자화는 (1.n.0)인 것으로 가정한다. 즉, "플로팅 포인트" 메시지는 구간[-(2n-1):2n-1]에서 가장 근접한 정수로 양자화되고, 분수 부는 0인 것으로 가정한다. 이것은 메모리 내에 메시지를 저장하기 위해 참이지만, 더 높은 레졸루션이 프로세싱 유닛 내의 메시지 갱신 프로시저 동안 적용될 수 있다.
종래의 디코더(210)의 기본 아키텍처 및 데이터 경로는 도 11에 도시되어 있다. 종래의 디코더(210)는 도 2에 도시된 플러딩 스케줄 BP 디코더의 고정 포인트 버전을 구현한다. (모든 메시지의 한번의 갱신으로 정의되는) 각각의 디코딩 반복에서, 종래의 디코더(210)는 체크 노드 프로세서(218)를 사용하여 모든 패리티 체크를 프로세싱한 후, 가변 노드 프로세서(216)를 사용하여 모든 가변 노드를 프로세싱한다. 이러한 프로세싱의 지원에 있어서, 패리티 체크 매트릭스의 논-제로 엘리먼트의 리프리젠테이션은 매트릭스 ROMs(M-ROMs)(220 및 222)에 저장된다. 대안으로서, 디코더(210)는 각각의 반복에서 먼저 모든 가변 노드를 프로세싱한 후, 모든 체크 노드를 프로세싱하도록 설정될 수 있다.
판독 클록이 기록 클록으로부터 분리되어 있거나, Qvc 메시지를 홀딩하는 Q-RAM(214)과 Rcv 메시지를 홀딩하는 R-RAM(212)이 모두 듀얼 포트 RAM이 되도록 세팅된, 도 11에 도시된 아키텍처는 또한 동시에 가변 노드 및 체크 노드를 프로세싱할 수 있다. 본 실시예에 따라, 각각의 패리티 노드는 dc개의 연속적인 클록 동안 프로세싱되고, 각각의 가변 체크 노드는 dv개의 연속적인 클록 동안 프로세싱된다.
E=N×dv=M×dc 에지는 각각의 반복동안 트래버싱되므로, 모든 Qvc 및 모든 Rcv 메시지 갱신은 동일한 크기의 클록을 요구하고, 하나의 가변 노드의 갱신은 하나의 체크 노드를 갱신하기 위해 요구되는 평균적인 클록 개수와 비교하여 평균적으로 더 적은 클록을 필요로 한다(항상 가변 노드보다 체크 노드가 적기 때문이다). 갱신 메시지는 적절한 메모리에 다시 기록된다. 갱신된 Qvc 메시지는 Q-RAM(214)에 다시 기록되고, 갱신된 Rcv 메시지는 R-RAM(212)에 다시 기록된다.
본 발명의 방법의 플러딩 스케줄에 따른 기본적인 디코더 아키텍처 및 디코더 데이터 경로는 도 12에 도시되어 있다. 본 실시예에 따른 감소된 메모리 디코더(230)는 디코더(210)에서 종래에 구현되었던 것과 동일한 고정 포인트 버전의 BP 디코더를 구현한다. 디코더(230)는 하나 다음에 하나씩 패리티 체크를 처리하기 위해 체크 노드 프로세서(240)를 사용하고, 하나 다음에 하나씩 가변 노드를 프로세싱하기 위해 가변 노드 프로세서(238)를 사용한다. 각각의 패리티 체크는 평균적으로, dc개의 연속적인 클록 동안 프로세싱된다. 각각의 가변 노드는 dv개의 연속적인 클록 동안 프로세싱된다. 종래의 디코더(210)에서와 마찬가지로, 패리티 체크 매트릭스의 논-제로 엘리먼트의 리프리젠테이션은 매트릭스 ROMs(M-ROMs)(242 및 244)에 저장되고, Qvc 메시지는 Q-RAM(236)에 저장된다.
그러나, Rcv 메시지는 2개의 메모리: R-RAM1(232) 및 R-RAM2(234)에 "압축되어" 저장된다. R-RAM1(232) 내의 각각의 메모리 어드레스는 2개의 비트를 저장하는데, 하나의 비트는 대응하는 Rcv 메시지의 부호를 나타내고, 하나의 비트는 |Rcv|=|Rc| 또는 |Rcv|= |Rc|+1인지 여부를 나타낸다. 모든 패리티 체크 노드에 대하여, R-RAM1(232)은 dc-1 개의 엘리먼트를 포함하고, 각각의 엘리먼트는
Figure 112011003226920-pct00090
메시지 이외의 패리티 체크 노드에 관련된 Rcv 메시지 중 하나에 관한 정보를 포함한다. R-RAM2(234)는 각각의 패리티 체크 노드에 대하여 하나의 어드레스씩 M개의 어드레스를 가진다. R-RAM2(234) 내의 각각의 메모리 어드레스는 패리티 체크 중 하나에 관련된
Figure 112011003226920-pct00091
, |Rc|, 및 vmin 인덱스를 저장한다. 그러므로, 각각의 R-RAM2(234) 어드레스는 2n+1+[log2dc]비트를 저장한다.
Q-RAM(236)는 종래의 디코더(210)에서와 같이,N×dv개의 엔트리를 유지한다. 연속적인 dv 메시지의 모든 세트는 하나의 가변 노드로부터 전송된 Qvc 메시지들이다.
디코더(230)에서, 관련된 메시지를 하나씩(one by one) 프로세싱함으로써 패리티 체크 노드를 프로세싱함을 이해해야 한다(즉, 클록 사이클당 하나의 메시지씩 프로세서로의 메시지를 판독한다). 또한 디코더의 쓰루풋을 증가시키기 위해 패리티 체크 메시지를 순차적으로 처리하는 것도 가능하다.
도 13은 디코더(230)에 대한 가변 노드 프로세서 알고리즘을 도시한다. 도 2의 알고리즘과 비교되는 주요한 차이점은 R-RAM1(232) 및 R-RAM2(234) 내의 그들의 대응하는 리프리젠테이션으로부터 Rcv 메시지를 재구성하는 것이다.
도 14는 디코더(230)의 체크 노드 프로세서 알고리즘을 도시한다. 도 2의 알고리즘과 비교되는 주요한 차이점은 Rcv 메시지를 R-RAM1(232) 및 R-RAM2(234)에 저장하는 것이다. Rcv 메시지는 그들의 "압축된" 형태로 저장된다. 이러한 압축은 임의의 정보를 손실하지 않음을 이해해야 한다.
제2 실시예는 시리얼 스케줄러의 계산 파트는 그대로 유지되면서, Rcv의 저장 및 로딩이 본 발명의 방법에 따라 제공되는 시리얼 스케줄러를 기반으로 하는 디코더를 예로 든다.
대응하는 종래의 시리얼 스케줄 디코더(250)의 기본적인 디코더 아키텍처 및 데이터 경로가 도 15에 도시되어 있다. 디코더(250)는 도 3에 도시된 시리얼 스케줄식의 BP 디코더 알고리즘의 고정 포인트 버전을 구현한다. 디코더(250)는 패리티 체크를 하나 다음에 하나씩 프로세싱한다("순차적 어드레싱"). 각각의 패리티 체크 노드는 dc 개의 연속적인 클록 동안 프로세싱된다. 각각의 클록동안, 하나의 Qv 메시지 및 하나의 Rcv 메시지가 Q-RAM 메모리(254) 및 R-RAM 메모리(252)로부터 각각 판독되고, 프로세서(256)로 라우팅된다. 이러한 시리얼 스케줄러의 이점 중 하나는 모든 M×dc 메시지(Qvc)를 유지하는 대신에, (Qv를 홀딩한) N개의 메시지만이 Qvc 메시지가 동작중 계산되는 동안 유지된다는 것이다.
프로세서(256)는 메시지를 갱신하고 메모리(252 및 254)에 다시 메시지를 기록한다. 이러한 프로시저는 각각의 클록 내에서 새로운 세트의 메시지가 메모리(252 및 254)로부터 판독되고 그에 기록되도록 설계된다.
본 발명에 따른 방법의 시리얼 스케줄 실시예에 따른 감소된 메모리 디코더(270)의 기본적인 아키텍처 및 데이터 경로가 도 16에 도시되어 있다. 디코더(270)는 디코더(250)에서 종래에 구현된 것과 동일한 고정포인트 버전의 도 3에 도시된 시리얼 스케줄 BP 디코더를 구현한다. 디코더(270)는 패리티 체크를 하나 다음에 하나씩 프로세싱한다("순차적 어드레싱"). 각각의 패리티 체크는 dc 연속적인 클록 동안 프로세싱된다. 각각의 클록동안, 하나의 Qv 메시지가 Q-RAM 메모리(276)로부터 판독된다. 그러나, Rcv 메시지는 2개의 메모리: R-RAM1(272), 및 R-RAM2(274)에 "압축되어" 저장된다. R-RAM1(272) 내의 각각의 메모리 어드레스는 2개의 비트를 저장하는데, 하나의 비트는 Rcv 메시지의 부호를 나타내고, 하나의 비트는 |Rcv|=|Rc| 또는 |Rcv|= |Rc|+1인지 여부를 나타낸다. 모든 패리티 체크 노드에 대하여, R-RAM1(272)은 dc-1 어드레스를 포함하고, 각각의 어드레스는
Figure 112011003226920-pct00092
메시지 이외의 패리티 체크에 관련된 Rcv 메시지 중 하나에 관한 정보를 포함한다. R-RAM2(274)는 각각의 패리티 체크 노드에 대하여 하나의 어드레스씩 M개의 어드레스를 가진다. R-RAM2(274) 내의 각각의 메모리 어드레스는 패리티 체크 노드 중 하나에 관련된
Figure 112011003226920-pct00093
, |Rc|, 및 vmin 인덱스를 저장한다. 그러므로, 각각의 R-RAM2(274) 어드레스는 2n+1+[log2dc]비트를 저장한다.
도 16의 실시예에서, 우리는 그와 관련된 메시지를 하나씩 프로세싱함으로써(즉, 클록 사이클당 하나의 메시지씩 프로세서로의 메시지를 판독함으로써), 패리티 체크를 프로세싱한다. 또한, 디코더의 쓰루풋을 증가시키기 위해 메시지를 순차적으로 처리하는 것이 가능하다. 또한, 하나씩 가변 노드를 프로세싱하고, 대응하는 Rcv 메시지를 각각의 클록에 재구성하는 것이 가능하므로, 체크 노드 시리얼 스케줄러를 대신하여 가변 노드 시리얼 스케줄러를 구현한다. 그러나, R-RAM2(274)가 dc 메시지를 재구성하기 위해 단지 한번만 판독되므로, 이러한 경우에 체크 노드 시리얼 스케줄러를 사용하는 것이 더 효율적이다. 한편, 가변 노드 시리얼 스케줄러의 경우에, 가변 노드 시리얼 스케줄러 내에서, 각각의 Rcv는 상이한 체크 노드에 관련되어 있어, Rc,
Figure 112011003226920-pct00094
, 및 Vmin 값의 개별 세트를 가지기 때문에, 각각의 재구성된 Rcv 메시지에 대하여 R-RAM2(274)를 독립적으로 판독할 것이 요구된다. 그럼에도 불구하고, 도 16에 도시된 바와 같이 Rcv 메시지를 저장의 압축된 형태의 저장을 사용하는 것도 여전히 가능하다.
도 17은 플래시 메모리 디바이스의 개략적인 하이 레벨 블록 다이어그램이다. 하나의 매트릭스 내에 배열된 복수의 메모리 셀을 포함하는 메모리 셀 어레이(1)는 칼럼 컨트롤 회로(2), 로우 컨트롤 회로(3), c-소스 컨트롤 회로(4), c-p-우물 컨트롤 회로(5)에 의해 제어된다. 칼럼 컨트롤 회로(2)는 메모리 셀 어레이(1) 내에 저장된 데이터를 판독하고, 쓰기 오퍼레이션 동안 메모리 셀 어레이(1)의 상태를 판정하고, 그리고 쓰기를 장려하거나 금지하기 위해 비트 라인(BL)의 포텐셜 레벨을 제어하기 위해 메모리 셀 어레이(1)의 비트 라인(BL)에 연결된다. 로우 컨트롤 회로(3)는 판독 전압을 적용하고, 칼럼 컨트롤 회로(2)에 의해 제어되는 비트 라인 포텐셜 레벨과 결합된 기록 전압을 적용하고, 그리고 메모리 셀 어레이(1)가 형성된 p-타입 영역의 전압과 연결된 삭제 전압을 적용하기 위해, 워드 라인(WL) 중 하나를 선택하기 위해 워드 라인(WL)에 연결된다. c-소스 컨트롤 회로(4)는 메모리 셀 어레이(1)에 연결된 공통의 소스 라인을 제어한다. c-p-우물 컨트롤 회로(5)는 c-p-우물 전압을 제어한다.
메모리 셀 어레이(1)에 저장된 데이터는 칼럼 컨트롤 회로(2)에 의해 판독되고, 외부 I/O 라인으로 I/O 데이터 라인 및 데이터 입/출력 버퍼(6)를 통해 출력된다. 메모리 셀에 저장될 프로그램 데이터는 외부 I/O 라인을 통해 데이터 입/출력 버퍼(60)로 입력되고, 칼럼 컨트롤 회로(2)로 전달된다. 외부 I/O 라인은 컨트롤러(20)에 연결된다.
플래시 메모리 디바이스를 제어하기 위한 커맨드 데이터는 컨트롤러(20)에 연결된 외부 컨트롤 라인에 연결된 커맨드 인터페이스에 대한 입력이다. 커맨드 데이터는 플래시 메모리에 어떠한 오퍼레이션이 요청되는지를 알린다. 입력 커맨드는 칼럼 컨트롤 회로(2), 로우 컨트롤 회로(3), c-소스 컨트롤 회로(4), c-p-우물 컨트롤 회로(5), 및 데이터 입/출력 버퍼(6)를 제어하는 상태 머신(8)으로 전달된다. 상태 머신(8)은 'READY/BUDY' 또는 'PASS/FAIL'과 같은 플래시 메모리의 상태 데이터를 출력할 수 있다.
컨트롤러(20)는 개인용 컴퓨터, 디지털 카메라, 휴대 정보 단말기와 같은 호스트 시스템에 연결되거나 연결가능할 수 있다. 호스트는 메모리 어레이(1)에 데이터를 저장하거나 그로부터 데이터를 판독하는 것과 같은, 커맨드를 초기화하고, 그러한 데이터를 각각 제공하거나 수신하는 것이다. 컨트롤러(20)는 이러한 커맨드를 커맨드 회로(70)에 의해 해석되고 실행될 수 있는 커맨드 신호로 변환한다. 컨트롤러(20)는 또한 메모리 어레이에 기록되고 그로부터 판독되는 사용자 데이터에 대한 버퍼 메모리를 포함하는 것이 전형적이다. 전형적인 메모리 디바이스는 컨트롤러(20)를 포함하는 하나의 집적회로 칩(21), 및 각각 메모리 어레이 및 관련 컨트롤을 포함하는 하나 이상의 집적회로 칩(22), 입력/출력, 및 상태 머신 회로를 포함한다. 물론, 하나 이상의 집적회로 칩 상에 이러한 디바이스의 컨트롤러 회로 및 메모리 어레이를 통합시키는 것이 경향이다. 메모리 디바이스는 호스트 시스템의 일부로서 내장될 수 있고, 또는 호스트 시스템의 접속 소켓에 제거가능하게 삽입가능한 메모리 카드 내에 포함될 수도 있다. 이러한 카드는 전체 메모리 디바이스를 포함할 수 있고, 또는 관련된 주변 회로를 가진 컨트롤러 및 메모리 어레이가 개별적인 카드에 제공될 수 있다.
도 18은 17의 일부분의 확대도로서, 컨트롤러(20)가 호스트로부터 추출된 사용자 데이터를 하나 이상의 코드워드로 인코딩하는 인코더(52), 도 17의 메모리 셀 어레이(10)에 코드워드(또는 코드워드의 임의의 비트가 펑처링된 비트라면, 그것의 펑처링되지 않은 비트만)를 저장하도록 도 17의 커맨드 회로(17)를 인스트럭팅하고, 도 23의 메모리 셀 어레이(1)로부터 저장된 코드워드(또는 펑처링된 비트인 경우 그것의 저장된 부분)를 추출하도록 도 17의 커맨드 회로(7)를 인스트럭팅하기 위한 회로(54), 및 회로(54)에 의해 추출된 코드워드의 매니페스테이션을 디코딩하는 감소된 메모리 디코더(270)를 포함한다는 것을 보여준다. 대안으로서, 컨트롤러(20)는 감소된 메모리 디코더(270) 대신에 감소된 메모리 디코더(230)를 포함할 수 있다.
본 명세서에 개시된 방법 및 디코더는 주로 데이터 저장 시스템에서 사용하는 것으로 의도되었으나, 이러한 방법 및 디코더는 통신 시스템, 특히, 몇몇 주파수에서 강하게 감쇠하는 매체를 통해 웨이브 전파를 릴레이하는 통신 시스템에 적용가능하다. 이러한 통신은 본질적으로 느리고 잡음이 존재한다. 이러한 통신의 한가지 예는 해안 스테이션과 수중의 잠수함 사이의 매우 낮은 주파수 무선 웨이브 통신이다.
도 19는 송수신기(110), 채널(103), 및 수신기(112)를 포함하는 통신 시스템(100)의 개략적인 하이 레벨 블록 다이어그램이다. 송수신기(110)는 인코더(102) 및 변조기(102)를 포함한다. 수신기(112)는 복조기(104) 및 감소된 메모리 디코더(270)를 포함한다. 인코더(101)는 메시지를 수신하고, 대응하는 코드워드를 생성한다. 변조기(102)는 생성된 코드워드에 BPSK, QPSK, 다중값 QAM, 또는 OFDM과 같은 디지털 변조를 수행하고, 그 결과적인 변조 신호를 수신기(112)로 채널(103)을 통해 전송한다. 수신기(112)에서, 복조기(104)는 채널(103)로부터의 변조 신호를 수신하고, 수신된 변호 신호를 BPSK, QPSK, 다중값 QAM과 같은 디지털 복조를 수행한다. 디코더(270)는 앞서 서술한 바와 같은 오리지널 코드워드의 최종적인 매니페스테이션을 디코딩한다. 대안으로서, 수신기(112)는 디코더(270)를 대신하여 디코더(230)를 포함할 수 있다.
플래시 메모리의 컨트롤 메타데이터를 저장하는 방법, 및 그러한 방법을 사용하는 디바이스 및 시스템의 제한된 수의 실시예가 서술되었다. 이러한 방법, 디바이스, 및 시스템의 다양한 변형, 수정, 및 다른 애플리케이션이 이루어질 수 있음을 이해해야 한다.

Claims (24)

  1. K개의 정보 비트가 N(>K)개의 코드워드 비트로 인코딩되는 코드워드의 매니페스테이션(manifestation)을 디코딩하는 방법으로서,
    ⒜ N개의 비트 노드 및 N-K개의 체크 노드를 포함하는 그래프에서, 적어도 하나의 메시지 교환 반복 동안 상기 비트 노드와 상기 체크 노드 사이에서 메시지를 교환하는 스텝에 의해 상기 코드워드 비트의 추정값을 갱신하는 단계;
    ⒝ 각각의 메시지가 계산 동안 표현되는 2 비트 초과의 전체 메시지 길이를 정의하는 단계; 및
    ⒞ 각각의 반복에서, 상기 비트 노드와 상기 체크 노드 사이에서 교환되는 상기 메시지의 적어도 일부분의 리프리젠테이션을 저장하는 단계;를 포함하고,
    상기 노드 중 적어도 하나의 노드에 대하여, 상기 적어도 하나의 반복 중 하나의 반복 동안 상기 적어도 하나의 노드로부터 전송된 메시지의 리프리젠테이션이 저장된다면, 상기 메시지 중 적어도 하나의 메시지의 리프리젠테이션은 적어도 2 비트를 사용하여 그러나 상기 전체 메시지 길이보다 적은 비트를 사용하여 저장되고,
    상기 적어도 2 비트는 다른 저장된 메시지 측면에서 크기를 나타내는 크기 비트를 포함하는 것을 특징으로 하는 K개의 정보 비트가 N(>K)개의 코드워드 비트로 인코딩되는 코드워드의 매니페스테이션을 디코딩하는 방법.
  2. 제 1 항에 있어서, 상기 하나의 반복 동안 상기 적어도 하나의 노드로부터 전송된 하나의 다른 메시지의 리프리젠테이션은 상기 전체 메시지 길이로 저장되는 것을 특징으로 하는 K개의 정보 비트가 N(>K)개의 코드워드 비트로 인코딩되는 코드워드의 매니페스테이션을 디코딩하는 방법.
  3. 제 2 항에 있어서, 상기 하나의 다른 메시지를 제외한 상기 하나의 반복 동안 상기 적어도 하나의 노드로부터 전송된 모든 메시지는 적어도 2 비트를 사용하여 그러나 상기 전체 메시지 길이보다 적은 비트를 사용하여 저장되는 것을 특징으로 하는 K개의 정보 비트가 N(>K)개의 코드워드 비트로 인코딩되는 코드워드의 매니페스테이션을 디코딩하는 방법.
  4. 제 1 항에 있어서, 상기 적어도 하나의 메시지의 리프리젠테이션은 정확하게 2 비트를 사용하여 저장되는 것을 특징으로 하는 K개의 정보 비트가 N(>K)개의 코드워드 비트로 인코딩되는 코드워드의 매니페스테이션을 디코딩하는 방법.
  5. 제 1 항에 있어서, 상기 적어도 하나의 메시지의 리프리젠테이션이 적어도 2 비트를 사용하여 그러나 전체 메시지 길이보다 적은 비트를 사용하여 저장되는 노드는 체크 노드인 것을 특징으로 하는 K개의 정보 비트가 N(>K)개의 코드워드 비트로 인코딩되는 코드워드의 매니페스테이션을 디코딩하는 방법.
  6. 제 5 항에 있어서, 상기 적어도 하나의 반복 동안 상기 체크 노드로부터 전송된 모든 메시지의 리프리젠테이션이 저장되고, 상기 체크 노드로부터 전송된 메시지 중 적어도 하나의 메시지의 리프리젠테이션은 적어도 2 비트를 사용하여 그러나 상기 전체 메시지 길이보다 적은 비트를 사용하여 저장되고, 상기 체크 노드로부터 전송된 하나의 다른 메시지의 리프리젠테이션은 전체 메시지 길이로 저장되는 것을 특징으로 하는 K개의 정보 비트가 N(>K)개의 코드워드 비트로 인코딩되는 코드워드의 매니페스테이션을 디코딩하는 방법.
  7. 제 1 항에 있어서, 적어도 하나의 반복 중 하나의 반복 동안 상기 적어도 하나의 노드로부터 전송된 메시지의 리프리젠테이션이 저장되는 각각의 노드에 대하여, 상기 적어도 하나의 노드로부터 전송된 메시지 중 적어도 하나의 메시지의 리프리젠테이션은 적어도 2 비트를 사용하여 그러나 전체 메시지 길이보다 적은 비트를 사용하여 저장되고, 상기 적어도 하나의 노드로부터 전송된 하나의 다른 메시지의 리프리젠테이션은 전체 메시지 길이로 저장된 것을 특징으로 하는 K개의 정보 비트가 N(>K)개의 코드워드 비트로 인코딩되는 코드워드의 매니페스테이션을 디코딩하는 방법.
  8. 제 1 항에 있어서, 상기 노드 중 적어도 하나에 대하여,
    상기 적어도 하나의 노드로부터 전송된 메시지의 리프리젠테이션이 저장된 적어도 하나의 반복 각각에서, 상기 메시지 중 적어도 하나의 메시지의 리프리젠테이션은 적어도 2 비트를 사용하여, 그러나 상기 전체 메시지 길이보다 적은 비트를 사용하여 저장되고, 하나의 다른 메시지의 리프리젠테이션은 상기 전체 메시지 길이로 저장되고,
    상기 적어도 2 비트는 다른 저장된 메시지 측면에서 크기를 나타내는 크기 비트를 포함하는 것을 특징으로 하는 K개의 정보 비트가 N(>K)개의 코드워드 비트로 인코딩되는 코드워드의 매니페스테이션을 디코딩하는 방법.
  9. 제 1 항에 있어서, 상기 메시지는 신뢰 진행 알고리즘에 따라 교환되는 것을 특징으로 하는 K개의 정보 비트가 N(>K)개의 코드워드 비트로 인코딩되는 코드워드의 매니페스테이션을 디코딩하는 방법.
  10. 제 9 항에 있어서, 상기 메시지는 플러딩 스케줄에 따라 교환되는 것을 특징으로 하는 K개의 정보 비트가 N(>K)개의 코드워드 비트로 인코딩되는 코드워드의 매니페스테이션을 디코딩하는 방법.
  11. 제 9 항에 있어서, 상기 메시지는 시리얼 스케줄에 따라 교환되는 것을 특징으로 하는 K개의 정보 비트가 N(>K)개의 코드워드 비트로 인코딩되는 코드워드의 매니페스테이션을 디코딩하는 방법.
  12. K개의 정보 비트가 N(>K)개의 코드워드 비트로 인코딩되는 코드워드의 매니페스테이션(manifestation)을 디코딩하는 디코더로서,
    (a) 적어도 하나의 메모리; 및
    (b) 적어도 하나의 프로세서;를 포함하고,
    상기 적어도 하나의 프로세스는
    (i) N개의 비트 노드 및 N-K개의 체크 노드를 포함하는 그래프에서, 적어도 하나의 메시지 교환 반복 동안 상기 비트 노드와 상기 체크 노드 사이에서 각각이 2 비트보다 더 긴 전체 메시지 길이로 계산동안 표현되는 메시지를 교환하는 단계; 및
    (ii) 상기 비트 노드와 상기 체크 노드 사이에서 교환되는 상기 메시지의 적어도 일부의 리프리젠테이션을 상기 적어도 하나의 메모리에 저장하는 단계;를 포함하는 스텝에 의해, 상기 코드워드 비트의 추정값을 갱신하기 위한 알고리즘을 실행함으로써 상기 코드워드의 매니페스테이션을 디코딩하고,
    상기 노드 중 적어도 하나의 노드에 대하여, 상기 적어도 하나의 반복 중 하나의 반복 동안 상기 적어도 하나의 노드로부터 전송된 메시지의 리프리젠테이션이 저장되면, 상기 메시지 중 적어도 하나의 메시지의 리프리젠테이션은 적어도 2 비트를 사용하여 그러나 상기 전체 메시지 길이보다 적은 비트를 사용하여 저장되고,
    상기 적어도 2 비트는 다른 저장된 메시지 측면에서 크기를 나타내는 크기 비트를 포함하는 것을 특징으로 하는 K개의 정보 비트가 N(>K)개의 코드워드 비트로 인코딩되는 코드워드의 매니페스테이션을 디코딩하는 디코더.
  13. 메모리 컨트롤러로서,
    (a) K개의 정보 비트를 N(>K)개의 코드워드 비트의 코드워드로 인코딩하는 인코더; 및
    (b) 디코더;를 포함하고,
    상기 디코더는
    (i) 적어도 하나의 디코더 메모리; 및
    (ii) (A) N개의 비트 노드 및 N-K개의 체크 노드를 포함하는 그래프에서, 적어도 하나의 메시지 교환 반복 동안 상기 비트 노드와 상기 체크 노드 사이에서 각각이 2 비트보다 큰 전체 메시지 길이로 계산 동안 표현되는 메시지를 교환하는 단계, 및
    (B) 상기 비트 노드와 상기 체크 노드 사이에서 교환되는 메시지 중 적어도 일부의 리프리젠테이션을 상기 적어도 하나의 디코더 메모리에 저장하는 단계에 의해, 상기 코드워드 비트의 추정값을 갱신하기 위한 알고리즘을 실행함으로써 상기 코드워드의 매니페스테이션(manifestation)을 디코딩하는 적어도 하나의 프로세서;를 포함하고,
    상기 노드 중 적어도 하나의 노드에 대하여, 상기 적어도 하나의 반복 중 하나의 반복 동안 상기 적어도 하나의 노드로부터 전송된 메시지의 리프리젠테이션이 저장되었다면, 상기 적어도 하나의 메시지의 리프리텐제이션은 적어도 2 비트를 사용하여 그러나 상기 전체 메시지 길이보다 적은 비트를 사용하여 저장되고,
    상기 적어도 2 비트는 다른 저장된 메시지 측면에서 크기를 나타내는 크기 비트를 포함하는 것을 특징으로 하는 메모리 컨트롤러.
  14. (a) 청구항 제 13 항의 메모리 컨트롤러; 및
    (b) 메인 메모리;를 포함하는 것을 특징으로 하는 메모리 디바이스.
  15. 제 14 항에 있어서, 상기 메모리 컨트롤러는 상기 메인 메모리에 상기 코드워드의 적어도 일부분을 저장하고, 상기 메인 메모리로부터 상기 코드워드의 적어도 일부분의 매니페스테이션을 추출하는 회로를 포함하는 것을 특징으로 하는 메모리 디바이스.
  16. 수신기로서,
    (a) 통신 채널을 통해 수신된 메시지를 복조하고, 그로 인해 K개의 정보 비트가 N(>K)개의 코드워드 비트의 코드워드로 인코딩된 코드워드의 매니페스테이션(manifestation)을 제공하는 복조기; 및
    (b) 디코더;를 포함하고,
    상기 디코더는
    (i) 적어도 하나의 디코더 메모리; 및
    (ii) (A) N개의 비트 노드 및 N-K개의 체크 노드를 포함하는 그래프에서, 적어도 하나의 메시지 교환 반복 동안 상기 비트 노드와 상기 체크 노드 사이에서 각각이 2 비트보다 큰 전체 메시지 길이로 계산 동안 표현되는 메시지를 교환하는 단계, 및
    (B) 상기 비트 노드와 상기 체크 노드 사이에서 교환되는 메시지 중 적어도 일부의 리프리젠테이션을 상기 적어도 하나의 디코더 메모리에 저장하는 단계에 의해, 상기 코드워드 비트의 추정값을 갱신하기 위한 알고리즘을 실행함으로써 상기 코드워드의 매니페스테이션을 디코딩하는 적어도 하나의 프로세서;를 포함하고,
    상기 노드 중 적어도 하나의 노드에 대하여, 상기 적어도 하나의 반복 중 하나의 반복 동안 상기 적어도 하나의 노드로부터 전송된 메시지의 리프리젠테이션이 저장되었다면, 상기 적어도 하나의 메시지의 리프리텐제이션은 적어도 2 비트를 사용하여 그러나 상기 전체 메시지 길이보다 적은 비트를 사용하여 저장되고,
    상기 적어도 2 비트는 다른 저장된 메시지 측면에서 크기를 나타내는 크기 비트를 포함하는 것을 특징으로 하는 수신기.
  17. 메시지를 전송하고 수신하는 통신 시스템으로서,
    (a) 송신기; 및
    (b) 수신기;를 포함하고,
    상기 송신기는
    (i) 메시지의 K개의 정보 비트를 N(>K)개의 코드워드 비트의 코드워드로 인코딩하는 인코더; 및
    (ii) 통신 채널을 통해 상기 코드워드를 변조된 신호로 전송하는 변조기;를 포함하고,
    상기 수신기는
    (i) 상기 통신 채널로부터 상기 변조된 신호를 수신하고, 상기 변조된 신호를 복조하고, 그로 인해 상기 코드워드의 매니페스테이션(manifestation)을 제공하는 복조기; 및
    (ii) 디코더;를 포함하고,
    상기 디코더는
    (A) 적어도 하나의 디코더 메모리; 및
    (B) (I) N개의 비트 노드 및 N-K개의 체크 노드를 포함하는 그래프에서, 적어도 하나의 메시지 교환 반복 동안 상기 비트 노드와 상기 체크 노드 사이에서 각각이 2 비트보다 큰 전체 메시지 길이로 계산 동안 표현되는 메시지를 교환하는 단계, 및
    (II) 상기 비트 노드와 상기 체크 노드 사이에서 교환되는 메시지 중 적어도 일부의 리프리젠테이션을 상기 적어도 하나의 디코더 메모리에 저장하는 단계에 의해, 상기 코드워드 비트의 추정값을 갱신하기 위한 알고리즘을 실행함으로써 상기 코드워드의 매니페스테이션을 디코딩하는 적어도 하나의 프로세서;를 포함하고,
    상기 노드 중 적어도 하나의 노드에 대하여, 상기 적어도 하나의 반복 중 하나의 반복 동안 상기 적어도 하나의 노드로부터 전송된 메시지의 리프리젠테이션이 저장되었다면, 상기 적어도 하나의 메시지의 리프리텐제이션은 적어도 2 비트를 사용하여 그러나 상기 전체 메시지 길이보다 적은 비트를 사용하여 저장되고,
    상기 적어도 2 비트는 다른 저장된 메시지 측면에서 크기를 나타내는 크기 비트를 포함하는 것을 특징으로 하는 메시지를 전송하고 수신하는 통신 시스템.
  18. K개의 정보 비트가 N(>K)개의 코드워드 비트로 인코딩되는 코드워드의 매니페스테이션(manifestation)을 디코딩하는 방법으로서,
    (a) N-K개의 로우 및 N개의 칼럼을 가진 패리티 체크 매트릭스를 제공하는 단계;
    (b) 적어도 하나의 메시지 교환 반복 동안 상기 매트릭스의 로우와 칼럼 사이에서 메시지를 교환하는 스텝에 의해 상기 코드워드 비트의 추정값을 갱신하는 단계;
    (c) 각각의 메시지가 계산 동안 표현되는, 2비트보다 큰 전체 메시지 길이를 정의하는 단계; 및
    (d) 상기 로우와 칼럼 사이에서 교환되는 메시지의 적어도 일부의 리프리젠테이션을 저장하는 단계;를 포함하고,
    상기 로우 또는 칼럼 중 적어도 하나 로우 또는 칼럼에 대하여, 상기 적어도 하나의 반복 중 하나의 반복 동안 상기 적어도 하나의 로우 또는 칼럼으로부터 전송된 메시지의 리프리젠테이션이 저장된다면, 상기 적어도 하나의 메시지의 리프리젠테이션은 적어도 2비트를 사용하여 그러나 상기 전체 메시지 길이보다 적은 비트를 사용하여 저장되고,
    상기 적어도 2 비트는 다른 저장된 메시지 측면에서 크기를 나타내는 크기 비트를 포함하는 것을 특징으로 하는 K개의 정보 비트가 N(>K)개의 코드워드 비트로 인코딩되는 코드워드의 매니페스테이션을 디코딩하는 방법.
  19. K개의 정보 비트가 N(>K)개의 코드워드 비트로 인코딩되는 코드워드의 매니페스테이션을 디코딩하는 디코더로서,
    (a) 적어도 하나의 메모리; 및
    (b) (i) N-K개의 로우 및 N개의 칼럼을 가진 패리티 체크 매트릭스를 제공하는 단계,
    (ii) 적어도 하나의 메시지 교환 반복 동안 상기 매트릭스의 로우와 칼럼 사이에서 각각이 2비트보다 큰 전체 메시지 길이로 표현된 메시지를 교환하는 단계, 및
    (iii) 상기 로우와 칼럼 사이에서 교환되는 메시지 중 적어도 일부의 리프리젠테이션을, 적어도 하나의 메모리에, 저장하는 단계에 의해, 상기 코드워드 비트의 추정값을 갱신하기 위한 알고리즘을 실행함으로써 상기 코드워드의 매니페스테이션을 디코딩하는 적어도 하나의 프로세서;를 포함하고,
    상기 로우 또는 칼럼 중 적어도 하나의 로우 또는 칼럼에 대하여, 상기 적어도 하나의 반복 중 하나의 반복 동안 상기 적어도 하나의 로우 또는 칼럼으로부터 전송된 메시지의 리프리젠테이션이 저장되었다면, 상기 적어도 하나의 메시지의 리프리텐제이션은 적어도 2 비트를 사용하여 그러나 상기 전체 메시지 길이보다 적은 비트를 사용하여 저장되고,
    상기 적어도 2 비트는 다른 저장된 메시지 측면에서 크기를 나타내는 크기 비트를 포함하는 것을 특징으로 하는 K개의 정보 비트가 N(>K)개의 코드워드 비트로 인코딩되는 코드워드의 매니페스테이션을 디코딩하는 디코더.
  20. 메모리 컨트롤러로서,
    (a) K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 인코더; 및
    (b) 디코더;를 포함하고,
    상기 디코더는
    (i) 적어도 하나의 메모리; 및
    (ii) (A) N-K개의 로우 및 N개의 칼럼을 가진 패리티 체크 매트릭스를 제공하는 단계,
    (B) 적어도 하나의 메시지 교환 반복 동안 상기 매트릭스의 로우와 칼럼 사이에서, 각각이 2비트보다 큰 전체 메시지 길이로 표현된 메시지를 교환하는 단계, 및
    (C) 상기 로우와 칼럼 사이에서 교환되는 메시지 중 적어도 일부의 리프리젠테이션을 상기 적어도 하나의 메모리에 저장하는 단계에 의해, 상기 코드워드 비트의 추정값을 갱신하기 위한 알고리즘을 실행함으로써 상기 코드워드의 매니페스테이션(manifestation)을 디코딩하는 적어도 하나의 프로세서;를 포함하고,
    상기 로우 또는 칼럼 중 적어도 하나의 로우 또는 칼럼에 대하여, 상기 적어도 하나의 반복 중 하나의 반복 동안 상기 적어도 하나의 로우 또는 칼럼으로부터 전송된 메시지의 리프리젠테이션이 저장되었다면, 상기 적어도 하나의 메시지의 리프리텐제이션은 적어도 2 비트를 사용하여 그러나 상기 전체 메시지 길이보다 적은 비트를 사용하여 저장되고,
    상기 적어도 2 비트는 다른 저장된 메시지 측면에서 크기를 나타내는 크기 비트를 포함하는 것을 특징으로 하는 메모리 컨트롤러.
  21. (a) 제 20 항의 메모리 컨트롤러; 및
    (b) 메인 메모리;를 포함하는 것을 특징으로 하는 메모리 디바이스.
  22. 제 21 항에 있어서, 상기 메모리 컨트롤러는 상기 메인 메모리에 상기 코드워드의 적어도 일부분을 저장하고, 상기 메인 메모리로부터 상기 코드워드의 적어도 일부분의 매니페스테이션을 추출하는 회로;를 포함하는 것을 특징으로 하는 메모리 디바이스.
  23. 수신기로서,
    (a) 통신 채널로부터 수신된 메시지를 복조하고, 그로 인해 K개의 정보 비트가 N(>K)개의 코드워드 비트로 인코딩된 코드워드의 매니페스테이션(manifestation)을 제공하는 복조기; 및
    (b) 디코더;를 포함하고,
    상기 디코더는
    (i) 적어도 하나의 메모리; 및
    (ii) (A) N-K개의 로우 및 N개의 칼럼을 가진 패리티 체크 매트릭스를 제공하는 단계,
    (B) 적어도 하나의 메시지 교환 반복 동안 상기 매트릭스의 로우와 칼럼 사이에서, 각각이 2비트보다 큰 전체 메시지 길이로 표현된 메시지를 교환하는 단계, 및
    (C) 상기 로우와 칼럼 사이에서 교환되는 메시지 중 적어도 일부의 리프리젠테이션을 상기 적어도 하나의 메모리에 저장하는 단계에 의해, 상기 코드워드 비트의 추정값을 갱신하기 위한 알고리즘을 실행함으로써 상기 코드워드의 매니페스테이션을 디코딩하는 적어도 하나의 프로세서;를 포함하고,
    상기 로우 또는 칼럼 중 적어도 하나의 로우 또는 칼럼에 대하여, 상기 적어도 하나의 반복 중 하나의 반복 동안 상기 적어도 하나의 로우 또는 칼럼으로부터 전송된 메시지의 리프리젠테이션이 저장되었다면, 상기 적어도 하나의 메시지의 리프리텐제이션은 적어도 2 비트를 사용하여 그러나 상기 전체 메시지 길이보다 적은 비트를 사용하여 저장되고,
    상기 적어도 2 비트는 다른 저장된 메시지 측면에서 크기를 나타내는 크기 비트를 포함하는 것을 특징으로 하는 수신기.
  24. 메시지를 전송하고 수신하는 통신 시스템으로서,
    (a) 송신기; 및
    (b) 수신기;를 포함하고,
    상기 송신기는
    (i) 메시지의 K개의 정보 비트를 N(>K)개의 코드워드 비트의 코드워드로 인코딩하는 인코더, 및
    (ii) 통신 채널을 통해 상기 코드워드를 변조된 신호로 전송하기 위한 변조기를 포함하고,
    상기 수신기는
    (i) 상기 통신 채널로부터 상기 변조된 신호를 수신하고, 상기 변조된 신호를 복조하고, 그로 인해 상기 코드워드의 매니페스테이션(manifestation)을 제공하는 복조기, 및
    (ii) 디코더를 포함하고,
    상기 디코더는
    (A) 적어도 하나의 메모리; 및
    (B) (I) N-K 개의 로우, 및 N개의 칼럼을 가진 패리티 체크 매트릭스를 제공하는 단계,
    (II) 적어도 하나의 메시지 교환 반복동안 상기 매트릭스의 로우와 칼럼 사이에서, 각각이 계산 동안 2 비트보다 더 긴 전체 메시지 길이로 표현되는 메시지를 교환하는 단계, 및
    (III) 적어도 하나의 메모리에, 상기 로우와 칼럼 사이에서 교환되는 메시지 중 적어도 일부의 리프리젠테이션을 저장하는 단계에 의해, 상기 코드워드 비트의 추정값을 갱신하는 알고리즘을 실행함으로써 상기 코드워드의 매니페스테이션을 디코딩하는 적어도 하나의 프로세서;를 포함하고,
    상기 로우 또는 칼럼 중 적어도 하나의 로우 또는 칼럼에 대하여, 적어도 하나의 반복 중 하나의 반복동안 상기 적어도 하나의 로우 또는 칼럼으로부터 전송된 메시지의 리프리젠테이션이 저장된다면, 상기 적어도 하나의 메시지의 리프리젠테이션은 적어도 2비트를 사용하여 그러나 전체 메시지 길이보다 적은 비트를 사용하여 저장되고,
    상기 적어도 2 비트는 다른 저장된 메시지 측면에서 크기를 나타내는 크기 비트를 포함하는 것을 특징으로 하는 메시지를 전송하고 수신하는 통신 시스템.
KR1020117001027A 2008-06-23 2009-03-26 복잡도를 줄인 ldpc 디코더 KR101621573B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US7469008P 2008-06-23 2008-06-23
US61/074,690 2008-06-23
US12/404,308 US8429512B2 (en) 2008-06-23 2009-03-15 Reduced complexity LDPC decoder
US12/404,308 2009-03-15

Publications (2)

Publication Number Publication Date
KR20110031322A KR20110031322A (ko) 2011-03-25
KR101621573B1 true KR101621573B1 (ko) 2016-05-16

Family

ID=41432516

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117001027A KR101621573B1 (ko) 2008-06-23 2009-03-26 복잡도를 줄인 ldpc 디코더

Country Status (5)

Country Link
US (1) US8429512B2 (ko)
KR (1) KR101621573B1 (ko)
CN (1) CN102138282B (ko)
TW (1) TW201001929A (ko)
WO (1) WO2009156871A1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8370711B2 (en) 2008-06-23 2013-02-05 Ramot At Tel Aviv University Ltd. Interruption criteria for block decoding
US8645810B2 (en) 2011-07-31 2014-02-04 Sandisk Technologies Inc. Fast detection of convergence or divergence in iterative decoding
KR101881877B1 (ko) 2012-04-19 2018-07-25 삼성전자주식회사 Ldpc 부호 복호기 및 복호 방법
US9407290B2 (en) 2013-03-15 2016-08-02 Sandisk Technologies Llc Error-correction decoding with conditional limiting of check-node messages
US9235653B2 (en) * 2013-06-26 2016-01-12 Google Inc. Discovering entity actions for an entity graph
US8930790B1 (en) 2013-09-13 2015-01-06 U-Blox Ag Method and apparatus for identifying selected values from among a set of values
CN106464701B (zh) * 2014-05-06 2019-11-12 华为技术有限公司 一种数据处理设备和方法
CN106936444B (zh) * 2015-12-29 2020-09-01 北京航空航天大学 一种集合译码方法和集合译码器
EP3396603B1 (en) * 2017-04-27 2019-12-25 Dassault Systèmes Learning an autoencoder
US10484008B2 (en) * 2017-09-28 2019-11-19 SK Hynix Inc. Memory system with on-the-fly error detection and termination and operating method thereof
CN113472362A (zh) * 2020-03-31 2021-10-01 华为技术有限公司 用于数据通信的编码方法及装置
TWI712269B (zh) * 2020-05-06 2020-12-01 國立交通大學 以低密度奇偶校驗碼作為錯誤更正碼的資料解碼及其傳輸方法
US11152956B1 (en) 2020-09-24 2021-10-19 Gylicon Ltd Coset probability based decoding for non-binary LDPC codes
US11316541B2 (en) * 2020-09-25 2022-04-26 Samsung Electronics Co., Ltd. Low-density parity-check (LDCP) decoder of reconstruction-computation-quantization (RCQ) approach for a storage device

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6964005B2 (en) * 2001-06-08 2005-11-08 Broadcom Corporation System and method for interleaving data in a communication device
US7484158B2 (en) * 2003-12-03 2009-01-27 Infineon Technologies Ag Method for decoding a low-density parity check (LDPC) codeword
KR100594818B1 (ko) * 2004-04-13 2006-07-03 한국전자통신연구원 순차적 복호를 이용한 저밀도 패리티 검사 부호의 복호장치 및 그 방법
KR100846869B1 (ko) * 2004-12-16 2008-07-16 한국전자통신연구원 저 복잡도 ldpc복호 장치 및 그 방법
JP4526450B2 (ja) * 2005-06-30 2010-08-18 ルネサスエレクトロニクス株式会社 復号装置と方法並びにプログラム
US8006161B2 (en) * 2005-10-26 2011-08-23 Samsung Electronics Co., Ltd Apparatus and method for receiving signal in a communication system using a low density parity check 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

Also Published As

Publication number Publication date
CN102138282A (zh) 2011-07-27
US8429512B2 (en) 2013-04-23
US20090319858A1 (en) 2009-12-24
TW201001929A (en) 2010-01-01
KR20110031322A (ko) 2011-03-25
WO2009156871A1 (en) 2009-12-30
CN102138282B (zh) 2014-05-28

Similar Documents

Publication Publication Date Title
KR101621573B1 (ko) 복잡도를 줄인 ldpc 디코더
US8291279B2 (en) Memory-efficient LDPC decoder and method
US9385753B2 (en) Systems and methods for bit flipping decoding with reliability inputs
JP5593312B2 (ja) デコーダのリセットによるldpcトラッピング集合の克服
US8370711B2 (en) Interruption criteria for block decoding
US8504895B2 (en) Using damping factors to overcome LDPC trapping sets
US8504887B1 (en) Low power LDPC decoding under defects/erasures/puncturing
US8943381B1 (en) Systems and methods for performing bit flipping in an LDPC decoder
US8984378B1 (en) Systems and methods for performing multi-state bit flipping in an LDPC decoder
US9369152B2 (en) Systems and methods for decoding with late reliability information
US8375278B2 (en) Compact decoding of punctured block codes
US8516351B2 (en) Compact decoding of punctured block codes
US8516352B2 (en) Compact decoding of punctured block codes
US9397699B2 (en) Compact decoding of punctured codes
KR101722798B1 (ko) 천공 코드의 콤팩트 디코딩
TWI407703B (zh) 解碼器
US9379738B2 (en) Systems and methods for decoding using partial reliability information

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee