KR20100022023A - 메모리 효율적인 ldpc 디코딩 - Google Patents

메모리 효율적인 ldpc 디코딩 Download PDF

Info

Publication number
KR20100022023A
KR20100022023A KR1020097024581A KR20097024581A KR20100022023A KR 20100022023 A KR20100022023 A KR 20100022023A KR 1020097024581 A KR1020097024581 A KR 1020097024581A KR 20097024581 A KR20097024581 A KR 20097024581A KR 20100022023 A KR20100022023 A KR 20100022023A
Authority
KR
South Korea
Prior art keywords
codeword
sub
bit
bits
check
Prior art date
Application number
KR1020097024581A
Other languages
English (en)
Other versions
KR101492595B1 (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 KR20100022023A publication Critical patent/KR20100022023A/ko
Application granted granted Critical
Publication of KR101492595B1 publication Critical patent/KR101492595B1/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
    • H03M13/114Shuffled, staggered, layered or turbo decoding schedules
    • 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

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Error Detection And Correction (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하기 위해, 메시지는 E개의 에지가 비트 노드와 체크 노드를 연결하는 그래프의 N개의 비트 노드와 N-K개의 체크 노드 사이에서 교환된다. 메시지가 교환되는 동안, E개보다 적은 개수의 메시지가 저장되고, 그리고/또는 N개보다 적은 개수의 코드워드 비트의 소프트 추정값이 저장된다. 몇몇 실시예에서, 메시지는 서브-그래프 내, 그리고 서브-그래프와 하나 이상의 외부 체크 노드 사이에서만 교환된다. 메시지가 교환되는 동안, 저장된 메시지의 최대 개수는 가장 많은 에지를 가진 서브-그래프 내의 에지의 개수와 그 서브-그래프와 외부 체크 노드를 연결하는 에지의 개수의 합이고, 그리고/또는 저장된 소프트 추정값의 최대 개수는 가장 많은 비트 노드를 가진 서브-그래프 내의 비트 노드의 개수이다.
인코딩, 디코딩, 정보 비트, 코드워드 비트, 코드워드 표현, 그래프, 패리티 체크 행렬, 체크 노드, 비트 노드, 에지, 추정값, 소프트 추정값.

Description

메모리 효율적인 LDPC 디코딩{MEMORY-EFFICIENT LDPC DECODING}
낮은 복잡도의 디코딩 하드웨어로 최적의 성능에 가까운 성능을 나타내는 매우 긴 LDPC 코드를 구현할 수 있게 하는, 저밀도 패리티 비트(LDPC) 코드를 위한, 낮은 복잡도의 디코더가 개시된다.
에러 보정 코드(ECC)는 통신 시스템 및 저장 시스템에서 통상적으로 사용된다. 통신 채널 및 저장 디바이스 모두에서 발생하는 다양한 물리적 현상은 통신되거나 저장되는 정보를 손상시키는 잡음 효과를 야기한다. 에러 보정 코딩 스킴은 통신되거나 저장된 정보를 최종적인 에러로부터 보호하기 위해 사용될 수 있다. 이것은 통신 채널을 통한 송신, 또는 메모리 디바이스 내의 저장 이전에 정보를 인코딩함으로써 수행된다. 인코딩 프로세스는 정보에 리던던시를 추가함으로써 그 정보 비트 시퀀스를 코드워드로 변환한다. 이러한 리던던시는 디코딩 프로세스를 통해 어떻게든 손상된 코드워드로부터 정보를 복구하기 위해 사용될 수 있다.
통신 시스템 및 저장 시스템 모두에서, 정보 비트 시퀀스 i는 통신 채널 또는 메모리 디바이스에 맞춤된 시퀀스 심벌 x로 변조되거나 맵핑된 코딩된 비트 시퀀스 v로 인코딩된다. 통신 채널 또는 메모리 디바이스의 출력에서, 시퀀스 심벌 y가 얻어진다. 이 시스템의 ECC 디코더는 시퀀스 y를 디코딩하고, 높은 확률로 오 리지널 정보 비트 시퀀스 i를 재구성하는 비트 시퀀스
Figure 112009072485706-PCT00001
를 복구한다.
공통의 ECC 패밀리는 선형 이진 블록 코드의 패밀리이다. 길이 N의 크기 K의 선형 이진 블록 코드는 길이 K의 정보 비트 시퀀스를 길이 N의 코드로의 선형 맵핑이며, 여기서 N>K이다. 코드의 레이트는 R=K/N으로 정의된다. 크기 1×N의 코드워드 v의 인코딩 프로세스는 통상적으로 크기 1×N의 정보 비트 시퀀스 i에 아래의 식에 따라 크기 K×N의 생성행렬 G를 곱함으로써 수행된다.
Figure 112009072485706-PCT00002
(1)
또한, 크기 M×N의 패리티 체크 행렬 H를 정의하는 것이 관습적이다(M=N-K). 패리티 체크 행렬은 식을 통해 생성행렬과 연관된다.
Figure 112009072485706-PCT00003
(2)
패리티 체크 행렬은 길이 N의 이진 백터가 유효한 코드워드인지를 체크하기 위해 사용될 수 있다. 1×N 이진 백터 v는 아래의 식이 유지될 때만 코드에 포함된다.
Figure 112009072485706-PCT00004
(3)
(식(3)에서, v'에서의 따음표는 v'이 열(column) 백터임을 의미한다.)
최근에, 반복 코딩 스킴이 매우 대중화되고 있다. 이 스킴에서, 코드는 몇가지 단순한 구성 코드의 연속으로 구성되고, 그 단순 코드의 구성 디코더 사이에서 정보를 교환함으로써 반복 디코딩 알고리즘을 사용하여 디코딩된다. 통상적으로, 이러한 코드는 구성 코드 간의 상호연결을 나타내는 이분 그래프(bipartite graph)를 사용하여 정의될 수 있다. 이러한 경우에, 디코딩은 그래프 에지를 통해 패싱하는 반복적인 메시지로 보여질 수 있다.
대중적인 종류의 반복적 코드는 저밀도 패리티 체크(LDPC) 코드이다. LDPC 코드는 저밀도의(sparse) 패리티 체크 행렬 H에 의해 형성되는 선형 이진 블록 코드이다. 도 1에 도시된 바와 같이, 코드는 N개의 비트 노드의 세트 V(도 1에서 N=13), M개의 체크 노드의 세트 C(도 1에서 M=10), 및 비트 노드와 체크 노드를 연결하는 에지의 세트 E(도 1에서 E=38)를 가진 저밀도 이분 그래프 G=(V,C,E)에 의해 동등하게 정의될 수 있다. 비트 노드는 그 비트 노드가 함께 참여하는 체크 노드에 에지에 의해 연결된다. 도 1의 좌측면 상의 행렬 표현(representation)에서, 비트 노드 i를 체크 노드 j에 연결하는 에지는 행(row) j 및 열(column) i의 교점에서 논-제로 행렬 엘리먼트에 의해 도시되어 있다.
도 1의 처음 체크 노드와 마지막 체크 노드 옆에, 식(3)의 대응 행이 도시되어 있다. 심볼 "
Figure 112009072485706-PCT00005
"은 "XOR"을 의미한다.
LDPC 코드는 반복적인 메시지 패싱 디코딩 알고리즘을 사용하여 디코딩될 수 있다. 이러한 알고리즘은 그 코드를 나타내는 언더라잉(underlying) 이분 그래프의 에지를 따라 비트 노드와 체크 노드 사이에서 메시지를 교환함으로써 동작한다. 디코더는 (통신 채널 출력을 기초로, 또는 판독 메모리 컨텐츠를 기초로) 코드워드 비트의 초기 추정값과 함께 제공된다. 이러한 초기 추정값은 그 비트가 (식(3)에 따라) 유효한 코드워드인 것을 충족해야 한다는 패리티 체크 조건을 부과함으로써 정제되고 개선된다. 이것은 그래프 에지를 따라 통과되는 메시지를 사용하여, 코 드워드 비트를 나타내는 비트 노드와 코드워드 비트상에 패리티 체크 조건을 나타내는 체크 노드 사이에서 정보를 교환함으로써 수행된다.
반복적 디코딩 알고리즘에서, 비트 추정값 및 비트 추정값의 신뢰도를 모두 전달하는 "소프트" 비트 추정값이 사용되는 것이 일반적이다.
그래프 에지를 따라 통과되는 메시지에 의해 전달되는 비트 추정값은 다양한 형태로 표현될 수 있다. "소프트" 비트 추정값을 표현하기 위한 일반적인 측정값은 로그-우도비(LLR)이다.
Figure 112009072485706-PCT00006
여기서, "현조건 및 관측값"은 메시지를 계산하는 것을 감안한 다양한 패리티 체크 조건이고, 이러한 패리티 체크에 참가한 비트에 대응하는 관측값
Figure 112009072485706-PCT00007
이다. 일반화의 손실없이 간략함을 위해, 지금부터 LLR 메시지가 처음부터 끝까지 사용되는 것으로 가정한다. LLR의 부호는 비트 추정값을 제공한다(즉, 양의 LLR은 v=0에 대응하고, 음의 LLR은 v=1에 대응한다). LLR의 크기는 추정값의 신뢰도를 제공한다(즉, |LLR|=0은 그 추정값이 완전히 신뢰할 수 없음을 의미하고, |LLR|=±∞는 그 추정값이 완전히 신뢰가능하며 비트 값이 알려져 있음을 의미한다).
통상적으로, 비트 노드와 체크 노드 사이에서 그래프 에지를 따라 디코딩중 패싱된 메시지는 외재적(extrinsic)이다. 에지 e 상으로 노드 n 으로부터 패싱된 외재적 메시지 m는 에지 e 외의 n에 연결된 에지 상에서 수신된 모든 값을 고려한다(이는 메시지가 외재적이라 불리는 이유이며; 오직 새로운 정보만 기초로 한다).
메시지 패싱 디코딩 알고리즘의 하나의 예는 이러한 종류의 메시지 패싱 알고리즘 중에서 최고의 알고리즘으로 간주되는 신뢰 확산(BP: Belief Propagation) 알고리즘이다.
Figure 112009072485706-PCT00008
는 수신되거나 판독된 심볼 y만 기초로 하여, 비트 v에 대한 초기 디코더 추정값을 나타낸다. 비트 중 일부는 통신 채널을 통해 전송되지 않거나, 메모리 디바이스에 저장되지 않을 가능성이 있으므로, 이러한 비트에 대한 y 관측값이 존재하지 않을 수도 있음을 이해해야 한다. 이러한 경우에, 두가지 가능성이 존재한다. 1) 절단된 비트 - 비트가 선험적으로(a-priori) 알려져 있고, (비트가 0인지 1인지에 따라) Pv=±∞이다. 2) 펑크난 비트 - 이 비트는 선험적으로 알려져 있지 않고,
Figure 112009072485706-PCT00009
이며, 여기서 Pr(v=0), 및 Pr(v=1)은 비트 v가 0또는 1일 각각의 선험적 확률이다. 정보 비트가 동일한 0또는 1일 선험적 확률을 가지는 것으로 가정하고, 코드가 선형임을 가정하면
Figure 112009072485706-PCT00010
이다.
Figure 112009072485706-PCT00011
는 전체 수신되거나 판독된 시퀀스 y를 기초로 하고, 비트 v가 코드워드의 일부임을 가정하면(즉
Figure 112009072485706-PCT00012
으로 가정하면), 비트 v에 대한 최종 디코더 추정값을 나타낸다.
QVC는 비트 노드 v에서 체크 노드 c로의 메시지를 나타낸다. RCV는 체크 노드 c에서 비트 노드 v로의 메시지를 나타낸다.
BP 알고리즘은 그 메시지를 계산하기 위해 아래의 갱신 룰을 사용한다.
비트 노드에서 체크 노드로의 계산 룰은 아래와 같다.
Figure 112009072485706-PCT00013
(4)
여기서, N(n,G)는 그래프 G 내의 노드 n의 이웃의 세트를 나타내고,
Figure 112009072485706-PCT00014
는 노드 'c'를 제외한 이웃을 의미한다(합산은 c를 제외한 모든 이웃에 걸친다).
체크 노드에서 비트 노드로의 계산 룰은 아래와 같다.
Figure 112009072485706-PCT00015
(5)
여기서,
Figure 112009072485706-PCT00016
, 및 φ 도메인 내의 동작은 그룹{0,1}×R+ 상에서 수행된다(이것은 기본적으로 합산이 본 명세서에서 크기에 걸친 덧셈, 및 부호에 걸친 XOR로 정의됨을 의미한다). 식(4)의 명명법과 유사하게, N(c,G)는 그래프 G 내의 체크 노드 c의 이웃인 비트 노드의 세트를 나타내고,
Figure 112009072485706-PCT00017
는 노드 'v'를 제외한 이웃을 의미한다(합산은 v를 제외한 모든 이웃에 걸친다).
비트 v에 대한 최종 디코더 추정값은 아래와 같다.
Figure 112009072485706-PCT00018
(6)
메시지 패싱 디코딩 중 패싱 메시지의 순서는 디코딩 스케줄이라 불린다. BP 디코딩은 특정한 스케줄을 사용하는 것을 포함하지 않는다 - BP는 단지 계산 룰(식(4), (5), 및 (6))을 정의한다. 디코딩 스케줄은 그 코드의 기대되는 에러 보정 능력에 영향을 미치지 않는다. 그러나, 디코딩 스케줄은 디코더의 수렴률, 및 디코더의 복잡도에 상당한 영향을 줄 수 있다.
LDPC 코드를 디코딩하기 위한 표준 메시지 패싱 스케줄은 각각의 반복에서 모든 가변 노드, 및 후속하여 모든 체크 노드가 새로운 메시지를 자신의 이웃으로 패싱하는 플러딩(flooding) 스케줄이다(알.지. 갈래거, 저밀도 패리티 체크 코드, 캠브리지, MA: MIT Press 1963). 플러딩 스케줄을 기초로 한 표준 BP 알고리즘은 도 2에 주어져 있다.
플러딩 스케줄을 기초로 하는 BP 알고리즘의 표준 구현은 메모리 요구사항에 관하여 비싸다. (Pv, Qv, Qvc, 및 Rcv 메시지를 저장하기 위해) 총 2|V|+2|E|개의 메시지를 저장해야 한다. 또한, 플러딩 스케줄은 낮은 수렴률을 나타내고, 그러므로 주어진 디코딩 처리량에서 필요한 에러 보정 능력을 제공하기 위해 더 높은 디코딩 로직(예컨대, ASIC 상에 더 많은 프로세서)을 필요로 한다.
더욱 효율적인 시리얼 메시지 패싱 디코딩 스케줄이 주지되어 있다. 시리얼 메시지 패싱 스케줄에서, 비트 노드 또는 체크 노드는 직렬로 트래버싱되고, 각각 의 노드에 대하여 대응하는 메시지는 그 노드로 또는 그 노드로부터 전송된다. 예를 들어, 시리얼 스케줄은 그래프 내의 체크 노드를 몇몇 순서로 직렬로 트래버싱함으로써 구현될 수 있고, 각각의 체크 노드 c∈C에 대하여 아래의 메시지가 전송된다.
1. 각각의 v∈N(c)에 대하여 Qvc(즉, 노드 c 로의 모든 Qvc 메시지)
2. 각각의 v∈N(c)에 대하여 Rcv(즉, 노드 c 로부터의 모든 Rcv 메시지)
시리얼 스케줄은, 플러딩 스케줄과 대조적으로, 그래프 상에서 즉각적이고 더 빠른 정보의 확산을 가능하게 하고, 그 결과 더 빠른(대략 두배 더 빠른) 수렴을 야기한다. 또한, 시리얼 스케줄은 메모리 요구사항을 상당한 감소하여 효율적으로 구현될 수 있다. 이것은 온더 플라이(on the fly) Qvc 메시지를 계산하기 위해 Qv 메시지, 및 Rcv 메시지를 사용하여, Qcv 메시지를 저장하기 위한 추가 메모리를 사용할 필요성을 제거함으로써 달성된다. 이것은 식(4) 및 (6)을 기초로 Qvc를 (Qv-Rcv)로 표현함으로써 수행된다. 또한, 선험적 메시지 Pv로 초기화된 동일한 메모리가 반복적으로 갱신된 Qv 후험적 메시지를 저장하기 위해 사용된다. 시리얼 스케줄에서는 N(c) ∀c∈C의 지식을 사용할 필요가 있을 뿐이지만, 플러딩 스케줄의 표준 구현에서는 코드의 그래프 구조를 저장하기 위해 두배 더 많은 메모리를 요구하는, 데이터 구조 N(c) ∀c∈C 및 N(v) ∀v∈V를 모두 사용해야 하기 때문에, 메모리 요구사항이 추가적으로 감소된다. 시리얼 스케줄의 디코딩 알고리즘은 도 3 에 나타난다.
요약하자면, 시리얼 디코딩 스케줄은 플러딩 스케줄에 비해 아래의 장점을 가진다.
1) 표준 플러딩 스케줄에 비하여 1/2배만큼 수렴이 빠르다. 이것은 플러딩 스케줄을 기반으로 한 디코더와 비교하여, 주어진 처리량에서 주어진 에러 보정 능력을 제공하기 위해 단지 절반의 디코더 로직만이 필요함을 의미한다.
2) 시리얼 디코딩 스케줄은 디코더의 메모리 효율적인 구현을 제공한다. (표준 플러딩 스케줄에서처럼 2|V|+2|E|개의 메시지를 저장하는 대신에) |V|+|E|개의 메시지만 저장하기 위한 RAM이 필요하다. 표준 플러딩 스케줄과 비교하여, 코드의 그래프 구조를 저장하기 위해 절반의 ROM 크기가 필요하다.
3) "온더 플라이" 수렴 테스팅은 반복 중 수행된 계산의 일부분으로서 구현될 수 있고, 이는 임의의 포인트에서 반복 및 디코딩 중 수렴 검출을 가능하게 한다. 이것은 디코딩 시간 및 에너지 소비를 절약할 수 있다.
통신 채널 또는 메모리 디바이스 내의 특정 "잡음" 레벨 아래에서, 비트 에러의 원인인 "잡음"이 더 작게 된다 하더라도, 디코더의 출력부에서 블록 에러율(BER)은 훨씬 더 느리게 감소하기 시작하는, 반복적인 코딩 시스템은 도 4에 도시된 에러 플로어(floor)라 불리는 바람직하지 않은 효과를 차단한다. 이러한 효과는 특히, 요구되는 디코더 출력 블록 에러율이 매우 낮아야(~10-10) 하는 저장 시스템에서 문제가 된다. 도 4에서 잡음은 우측으로 증가함을 주목해야 한다.
에러 보정 능력 및 반복적인 코딩 시스템의 에러 플로어는 코드 길이가 증가할수록 개선된다는 점을 주지되어 있다(이것은 임의의 ECC 시스템에 대하여도 그러하지만 특히, 에러 보정 능력이 짧은 코드 길이에서 매우 나쁜 반복적 코딩 시스템에서 그러하다).
그러나 반복적 코딩 시스템의 종래의 구현에서, 디코딩 하드웨어의 메모리 복잡도는 코드 길이에 비례하고; 그로인해 긴 코드를 사용하는 것은, 주지된 가장 효율적인 구현(예컨대, 직렬로 스케줄링 된 디코더)에서도, 높은 복잡도를 유발한다.
그러므로 본 명세서에 낮은 복잡도의 디코딩 하드웨어를 사용하여, 매우 낮은 에러 플로어 및 거의 최적의 에러 보정 능력을 제공하는 매우 긴 LDPC 코드를 구현하는 방법이 개시된다.
본 명세서에 제공된 하나의 실시예는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법이고, 본 방법은 (a) N개의 비트 노드 및 N-K개의 체크 노드를 포함하고, 각각의 비트 노드가 적어도 하나의 체크 노드에 각각의 에지에 의해 연결되어 있고, 총 E개의 에지가 존재하는 그래프 내에서, 서로 연결된 비트 노드와 체크 노드 사이에서 메시지를 교환하는 단계를 포함하는 단계에 의해 코드워드 비트의 추정값을 갱신하는 단계; 및 (b) 메시지의 교환중 임의의 시간에서, E보다 적은 개수의 메시지를 저장하는 단계를 포함한다.
본 명세서에 제공된 다른 실시예는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 디코더이고, 이 디코더는 (a) 판독/기록 메모리; 및 (b) N개의 비트 노드, 및 N-K개의 체크 노드를 포함하고, 각각의 비트 노드가 적어도 하나의 체크 노드에 에지에 의해 연결되어 있고, 총 E개의 에지가 존재하는 그래프에서, 서로 연결되어 있는 비트 노드와 체크 노드 사이에서 메시지를 교환하는 단계를 포함하는 단계에 의해 코드워드 비트의 추정값을 갱신하는 알고리즘을 실행함과 동시에, 메시지의 교환 중 임의의 시간에 판독/기록 메모리에 E보다 적은 개수의 메시지를 저장하는 적어도 하나의 프로세서를 포함한다.
본 명세서에 제공된 다른 실시예는 (a) K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 인코더; 및 (b) 디코더를 갖춘 메모리 컨트롤러이고, 이 디코더는 (i) 판독/기록 메모리; 및 (ii) N개의 비트 노드, 및 N-K개의 체크 노드를 포함하고, 각각의 비트 노트가 적어도 하나의 체크 노드에 에지에 의해 연결되어 있고, 총 E개의 에지가 존재하는 그래프에서, 서로 연결되어 있는 비트 노드와 체크 노드 사이에서 메시지를 교환하는 알고리즘을 실행함으로써 코드워드의 표현을 디코딩함과 동시에, 메시지의 교환 중 임의의 시간에 판독/기록 메모리에 E보다 적은 개수의 메시지를 저장하는 적어도 하나의 프로세서를 포함한다.
본 명세서에 제공된 다른 실시예는 (a) 통신 채널로부터 수신된 메시지를 복조하고, 그로인해 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 제공하는 복조기, 및 (b) 디코더를 갖춘 수신기이고, 이 디코더는 (i) 판독/기록 메모리; 및 (i) N개의 비트 노드, 및 N-K개의 체크 노드를 포함하고, 각각의 비트 노드가 적어도 하나의 체크 노드에 에지에 의해 연결되어 있고, 총 E개의 에지가 존재하는 그래프에서, 서로 연결되어 있는 비트 노드와 체크 노드 사이에서 메시지를 교환하는 알고리즘을 실행함으로써 코드워드의 표현을 디코딩함과 동시에, 메시지의 교환 중 임의의 시간에 판독/기록 메모리에 E보다 적은 개수의 메시지를 저장하는 적어도 하나의 프로세서를 포함한다.
본 명세서에 제공된 다른 실시예는 메시지를 송신하고 수신하는 통신 시스템이고, 본 통신 시스템은 (a) (i) K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 인코더, 및 (ii) 코드워드를 통신 채널을 통해 변조 신호로 송신하는 변조기를 구비한 송신기; 및 (b) (i) 통신 채널로부터 변조 신호를 수신하고, 변조 신호를 복조하는 복조기, 및 (ii) 디코더를 구비한 수신기를 포함하고, 이 디코더는 (A) 판독/기록 메모리; 및 (B) N개의 비트 노드, 및 N-K개의 체크 노드를 포함하고, 각각의 비트 노드가 적어도 하나의 체크 노드에 에지에 의해 연결되어 있고, 총 E개의 에지가 존재하는 그래프에서, 서로 연결되어 있는 비트 노드와 체크 노드 사이에서 메시지를 교환하는 알고리즘을 실행함으로써 코드워드의 표현을 디코딩함과 동시에, 메시지의 교환 중 임의의 시간에 판독/기록 메모리에 E보다 적은 개수의 메시지를 저장하는 적어도 하나의 프로세서를 구비한다.
본 명세서에 제공된 다른 실시예는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법이고, 본 방법은 (a) N개의 비트 노드, 및 N-K개의 체크 노드를 포함하고, 각각의 비트 노드가 적어도 하나의 체크 노드에 각각의 에지에 의해 연결되어 있고, 총 E개의 에지가 존재하는 그래프 내에서, 서로 연결된 비트 노드와 체크 노드 사이에 메시지를 교환하는 단계를 포함하는 단계에 의해 코드워드 비트의 추정값을 갱신하는 단계; 및 (b) 메시지의 교환중 임의의 시간에서, N보다 적은 개수의 코드워드 비트의 소프트 추정값을 저장하는 단계를 포함한다.
본 명세서에 제공된 다른 실시예는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 디코더이고, 이 디코더는 (a) 판독/기록 메모리; 및 (b) N개의 비트 노드, 및 N-K개의 체크 노드를 포함하고, 각각의 비트 노드가 적어도 하나의 체크 노드에 각각의 에지에 의해 연결되어 있고, 총 E개의 에지가 존재하는 그래프 내에서, 서로 연결된 비트 노드와 체크 노드 사이에 메시지를 교환하는 알고리즘을 실행하는 단계를 포함하는 단계에 의해 코드워드 비트의 소프트 추정값을 갱신함으로써 코드워드의 표현을 디코딩함과 동시에, 메시지의 교환중 임의의 시간에서, N보다 적은 개수의 코드워드 비트의 소프트 추정값을 저장하는 적어도 하나의 프로세서를 포함한다.
본 명세서에 제공된 다른 실시예는 메모리 컨트롤러이고, 본 메모리 컨트롤러는 (a) K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 인코더, 및 (b) 디코더를 포함하고, 이 디코더는 (i) 판독/기록 메모리; 및 (ii) N개의 비트 노드, 및 N-K개의 체크 노드를 포함하고, 각각의 비트 노드가 적어도 하나의 체크 노드에 각각의 에지에 의해 연결되어 있고, 총 E개의 에지가 존재하는 그래프 내에서, 서로 연결된 비트 노드와 체크 노드 사이에 메시지를 교환하는 알고리즘을 실행하는 단계를 포함하는 단계에 의해 코드워드 비트의 소프트 추정값을 갱신함으로써 코드워드의 표현을 디코딩함과 동시에, 메시지의 교환중 임의의 시간에서, N보다 적은 개수의 코드워드 비트의 소프트 추정값을 저장하는 적어도 하나의 프로세서를 포함한다.
본 명세서에 제공된 다른 실시예는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법이고, 본 방법은 (a) N개의 비트 백터 엘리먼트를 가진 비트 백터와 N-K개의 체크 백터 엘리먼트를 가진 체크 백터를 연결하기 위해, 비트 백터 엘리먼트와 체크 백터 엘리먼트를 연결하는 E개의 논-제로 행렬 엘리먼트를 가진 패리티 체크 행렬을 사용하여, 서로 연결된 비트 백터 엘리먼트 및 체크 백터 엘리먼트 사이에서 메시지를 교환하는 단계에 의해 코드워드 비트의 추정값을 갱신하는 단계; 및 (b) 메시지의 교환중 임의의 시간에서, E보다 적은 개수의 메시지를 저장하는 단계를 포함한다.
본 명세서에 제공된 다른 실시예는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 디코더이고, 본 디코더는 (a) 판독/기록 메모리; 및 (b) N개의 비트 백터 엘리먼트를 가진 비트 백터와 N-K개의 체크 백터 엘리먼트를 가진 체크 백터를 연결하기 위해, 비트 백터 엘리먼트와 체크 백터 엘리먼트를 연결하는 E개의 논-제로 행렬 엘리먼트를 가진 패리티 체크 행렬을 사용하여, 서로 연결된 비트 백터 엘리먼트 및 체크 백터 엘리먼트 사이에서 메시지를 교환하는 단계에 의해 코드워드 비트의 추정값을 갱신하는 알고리즘을 실행함으로써 코드워드의 표현을 디코딩함과 동시에, (b) 메시지의 교환중 임의의 시간에, 판독/기록 메모리에 E보다 적은 개수의 메시지를 저장하는 적어도 하나의 프로세서를 포함한다.
본 명세서에 제공된 다른 실시예는 메모리 컨트롤러이고, 본 메모리 컨트롤러는 (a) K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 인코더; 및 (b) 디코더를 포함하고, 이 디코더는 (i) 판독/기록 메모리; 및 (ii) N개의 비트 백터 엘리먼트를 가진 비트 백터와 N-K개의 체크 백터 엘리먼트를 가진 체크 백터를 연결하기 위해, 비트 백터 엘리먼트와 체크 백터 엘리먼트를 연결하는 E개의 논-제로 행렬 엘리먼트를 가진 패리티 체크 행렬을 사용하여, 서로 연결된 비트 백터 엘리먼트 및 체크 백터 엘리먼트 사이에서 메시지를 교환하는 알고리즘을 실행함으로써 코드워드의 표현을 디코딩함과 동시에, (b) 메시지의 교환중 임의의 시간에, 판독/기록 메모리에 E보다 적은 개수의 메시지를 저장하는 적어도 하나의 프로세서를 포함한다.
본 명세서에 제공된 다른 실시예는 수신기이고, 본 수신기는 (a) 통신 채널로부터 수신된 메시지를 복조하고, 그로인해 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드 표현을 제공하는 복조기; 및 (b) 디코더를 포함하고, 이 디코더는 (i) 판독/기록 메모리; 및 (ii) N개의 비트 백터 엘리먼트를 가진 비트 백터와 N-K개의 체크 백터 엘리먼트를 가진 체크 백터를 연결하기 위해, 비트 백터 엘리먼트와 체크 백터 엘리먼트를 연결하는 E개의 논-제로 행렬 엘리먼트를 가진 패리티 체크 행렬을 사용하여, 서로 연결된 비트 백터 엘리먼트 및 체크 백터 엘리먼트 사이에서 메시지를 교환하는 알고리즘을 실행함으로써 코드워드의 표현을 디코딩함과 동시에, (b) 메시지의 교환중 임의의 시간에, 판독/기록 메모리에 E보다 적은 개수의 메시지를 저장하는 적어도 하나의 프로세서를 포함한다.
본 명세서에 제공된 다른 실시예는 메시지를 송신하고 수신하는 통신 시스템이고, 본 통신 시스템은 (a) (i) K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 인코더, 및 (ii) 코드워드를 통신 채널을 통해 변조 신호로 송신하는 변조기를 구비한 송신기; 및 (b) (i) 통신 채널로부터 변조 신호를 수신하고, 변조 신호를 복조하는 복조기, 및 (ii) 디코더를 구비한 수신기를 포함하고, 이 디코더는 (A) 판독/기록 메모리; 및 (B) N개의 비트 백터 엘리먼트를 가진 비트 백터와 N-K개의 체크 백터 엘리먼트를 가진 체크 백터를 연결하기 위해, 비트 백터 엘리먼트와 체크 백터 엘리먼트를 연결하는 E개의 논-제로 행렬 엘리먼트를 가진 패리티 체크 행렬을 사용하여, 서로 연결된 비트 백터 엘리먼트 및 체크 백터 엘리먼트 사이에서 메시지를 교환하는 알고리즘을 실행함으로써 코드워드의 표현을 디코딩함과 동시에, (b) 메시지의 교환중 임의의 시간에, 판독/기록 메모리에 E보다 적은 개수의 메시지를 저장하는 적어도 하나의 프로세서를 포함한다.
본 명세서에 제공된 다른 실시예는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법이고, 본 방법은 (a) N개의 비트 백터 엘리먼트를 가진 비트 백터와 N-K개의 체크 백터 엘리먼트를 가진 체크 백터를 연결하기 위해, 비트 백터 엘리먼트와 체크 백터 엘리먼트를 연결하는 복수의 논-제로 행렬 엘리먼트를 가지고, 각각의 비트 백터 엘리먼트가 그것에 의해 체크 백터 엘리먼트의 적어도 일부분에 연결되어 있는 패리티 체크 행렬을 사용하여, 서로 연결된 비트 백터 엘리먼트 및 체크 백터 엘리먼트 사이에서 메시지를 교환하는 단계에 의해 코드워드 비트의 추정값을 갱신하는 단계; 및 (b) 메시지의 교환중 임의의 시간에서, N보다 적은 개수의 코드워드 비트의 소프트 추정값을 저장하는 단계를 포함한다.
본 명세서에 제공된 다른 실시예는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 디코더이고, 본 디코더는 (a) 판독/기록 메모리; 및 (b) N개의 비트 백터 엘리먼트를 가진 비트 백터와 N-K개의 체크 백터 엘리먼트를 가진 체크 백터를 연결하기 위해, 비트 백터 엘리먼트와 체크 백터 엘리먼트를 연결하는 복수의 논-제로 행렬 엘리먼트를 가지고, 각각의 비트 백터 엘리먼트가 그것에 의해 체크 백터 엘리먼트의 적어도 일부분에 연결되어 있는 패리티 체크 행렬을 사용하여, 서로 연결된 비트 백터 엘리먼트 및 체크 백터 엘리먼트 사이에서 메시지를 교환하는 알고리즘을 실행하는 단계에 의해 코드워드 비트의 소프트 추정값을 갱신함으로써 코드워드의 표현을 디코딩함과 동시에, (b) 메시지의 교환중 임의의 시간에, 판독/기록 메모리에 N보다 적은 개수의 코드워드 비트의 소프트 추정값을 저장하는 적어도 하나의 프로세서를 포함한다.
본 명세서에 제공된 다른 실시예는 메모리 컨트롤러이고, 본 메모리 컨트롤러는 (a) K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 인코더; 및 (b) 디코더를 포함하고, 이 디코더는 (i) 판독/기록 메모리; 및 (ii) N개의 비트 백터 엘리먼트를 가진 비트 백터와 N-K개의 체크 백터 엘리먼트를 가진 체크 백터를 연결하기 위해, 비트 백터 엘리먼트와 체크 백터 엘리먼트를 연결하는 복수의 논-제로 행렬 엘리먼트를 가지고, 각각의 비트 백터 엘리먼트가 그것에 의해 체크 백터 엘리먼트의 적어도 일부분에 연결되어 있는 패리티 체크 행렬을 사용하여, 서로 연결된 비트 백터 엘리먼트 및 체크 백터 엘리먼트 사이에서 메시지를 교환하는 알고리즘을 실행하는 단계에 의해 코드워드 비트의 소프트 추정값을 갱신함으로써 코드워드의 표현을 디코딩함과 동시에, (b) 메시지의 교환중 임의의 시간에, 판독/기록 메모리에 N보다 적은 개수의 코드워드 비트의 소프트 추정값을 저장하는 적어도 하나의 프로세서를 포함한다.
본 명세서에서 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하기 위한 4가지 일반적인 방법이 제공된다. 디코딩되는 것은 오직 코드워드의 표현뿐이고, 코드워드는 디코딩하기 위해 이 방법 중 하나가 적용되기 전에 잡음에 의해 손상되었을 수 있으므로, 실제 코드워드는 디코딩되지 않는다.
제1의 일반적인 방법에 따라, 코드워드 비트의 추정값은 N개의 비트 노드 및 N-K개의 체크 노드를 포함하고, 각각의 비트 노드가 각각의 에지에 의해 적어도 하나의 체크 노드에 연결되어 있는 그래프를 사용하여 갱신된다. 에지가 비트 노드 및 체크 노드에 대하여 "각각"이라는 것은 에지가 비트 노드와 체크 노드를 연결하는 그래프의 고유한 에지임을 의미한다. 그래프는 총 E개의 에지를 가진다. 코드워드 비트 추정값을 갱신하기 위해, 메시지는 서로 연결된 비트 노드와 체크 노드 사이에서 교환된다. 메시지가 비트 노드와 체크 노드 "사이에서" 교환된다는 것은 메시지가 비트 노드에서 체크 노드로, 그리고 체크 노드에서 비트 노드로 진행하고, 비트 노드에서 비트 노드로 그리고 체크 노드에서 체크 노드로는 진행하지 않는다는 것을 의미한다. 메시지의 교환중 임의의 시간에, 저장되는 메시지의 개수는 E보다 적다.
일반적으로, 코드워드 비트의 추정값은 소프트 추정값이다. 메시지의 교환중 임의의 시간에, 저장되는 코드워드 비트의 소프트 추정값의 개수는 N보다 적다.
제1의 일반적인 방법의 전형적인 실시예에서, 메시지는 그래프의 각각의 복수의 서브-그래프 내에서, 그리고 각각의 서브-그래프와 하나 이상의 외부 체크 노드 사이에서만 교환된다. "외부" 체크 노드는 임의의 서브-그래프의 일부가 아닌 체크 노드이다. 각각의 서브-그래프는 각각의 내부 에지 개수를 가진다. 서브-그래프의 "내부 에지"는 서브-그래프의 비트 노드와 서브-그래프의 체크 노드를 연결하는 에지이다. 메시지의 교환중 임의의 시간에, 최대 개수의 내부 에지를 가진 서브-그래프 내의 내부 에지의 개수와, 서브-그래프와 외부 체크 노드를 연결하는 에지의 개수의 합보다 더 많은 메시지는 절대 저장되지 않는다. 몇몇 이러한 실시예에서, 코드워드 비트의 추정값은 소프트 추정값이고, 최대 개수의 비트 노드를 가진 서브-그래프 내의 비트 노드가 존재하는 것보다 더 많은 소프트 추정값은 절대 저장되지 않는다. 이러한 몇몇 실시예에서, 메시지의 교환중 임의의 시간에, 메시지는 오직 서브-그래프 중 하나 내에서, 그리고 서브-그래프와 외부 체크 노드 사이에서만 교환되고, 이시간 동안, 그 서브-그래프 내의 내부 에지의 개수와 그 서브-그래프와 그 외부 체크 노드를 연결하는 에지의 개수의 합보다 더 많은 메시지는 절대 저장되지 않는다. 한번에 하나의 서브-그래프만이 메시지 교환에 참가하는 몇몇 실시예에서, 코드워드 비트의 추정값은 소프트 추정값이고, 그 서브-그래프가 메시지 교환에 참가하는 동안 저장되는 소프트 추정값의 개수는 기껏해야 그 서브-그래프 내의 비트 노드의 개수이다.
제1의 일반적인 방법에 대응하는 디코더는 (판독 전용 메모리와 반대되는) 판독/기록 메모리(이는 옵션이고, 필수적인 것은 아님), 및 제1의 일반적인 방법을 구현하는 알고리즘을 실행함으로써 코드워드의 표현을 디코딩하는 하나 이상의 프로세서를 포함한다. 통상적으로, 이러한 디코더는 복수의 프로세서를 포함하고, 또한 프로세서와 판독/기록 메모리 사이에 메시지 및 코드워드 비트의 추정값을 그래프에 따라 라우팅하는 라우팅 층을 포함한다. 이러한 디코더의 몇몇 실시예에서, 코드워드 비트의 추정값은 소프트 추정값이고, 판독/기록 메모리는 N+E보다 적은 메시지와 소프트 비트의 결합된 총 개수를 저장하기 위해, 알고리즘에 대하여, 충분한 저장 용량을 가진다. 알고리즘이 메시지와 소프트 추정값이 표현되는 정밀도(비트의 개수)를 정의하므로, 이러한 저장 용량이 "알고리즘에 대하여" 저장됨을 이해해야 한다. 예를 들어, 그래프 구조가 고정되어 N 및 E가 고정된다면, 판독/기록 메모리의 저장 용량은 알고리즘이 판독/기록 메모리 내의 알고리즘, 예컨대, 룩업 테이블에 의해 요구되는 모든 다른 공간을 할당한 후 N개의 소프트 추정값, 및 E개의 메시지를 저장하는데 불충분하다. 다른 예로서, 그래프 구조가 디코더의 호스트에 의해 제공된다면, 적어도 하나의 이러한 그래프 구조에 대하여, 알고리즘의 종래의 시리얼 스케줄 신뢰 확산 알고리즘이라면, 알고리즘이 메모리 내에서 알고리즘이 필요한 모든 다른 공간을 할당한 후, 이러한 종래의 알고리즘에 의해 필요한 모든 N개의 소프트 추정값 및 모든 E개의 메시지를 저장하기 위한 판독/기록 메모리 내에 충분한 공간이 존재하지 않으므로, 알고리즘은 에러 모드로 진입한다(예컨대, 호스트에 경고를 발송한다). 그러나, 실제로 사용된 알고리즘은 알고리즘이 모든 N개의 소프트 추정값 및 모든 E개의 메시지를 저장하기 위해, 룩업 테이블 등과 더불어 판독/기록 메모리 내에 충분한 저장 공간을 필요로 하지 않기 때문에 그래프 구조에 대하여 이러한 에러 모드로 진입할 필요가 없다.
제1의 일반적 방법에 대응하는 메모리 컨트롤러는 K개의 정보 비트를 N(>K)개의 코드워드 비트의 코드워드로 인코딩하는 인코더, 및 제1의 일반적 방법에 대응하는 디코더를 포함한다.
제1의 일반적 방법에 대응하는 수신기는 통신 채널로부터 수신된 메시지를 복조하는 복조기를 포함한다. 복조기는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드 표현을 제공한다. 이 수신기는 또한 제1의 일반적 방법에 대응하는 디코더를 포함한다.
제1의 일반적 방법에 대응하는 통신 시스템은 송신기 및 수신기를 포함한다. 송신기는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 인코더, 및 통신 채널을 통해 코드워드를 변조 신호로 송신하는 변조기를 포함한다. 이 수신기는 제1의 일반적 방법에 대응하는 디코더를 포함한다.
제2의 일반적 방법에 따라, 코드워드 비트의 소프트 추정값은 N개의 비트 노드 및 N-K개의 체크 노드를 포함하는 그래프를 사용하여 갱신된다. 각각의 비트 노드는 일부 또는 모든(일반적으로 일부만) 체크 노드에 연결된다. 소프트 추정값은 서로 연결된 비트 노드와 체크 노드 사이에서 메시지를 교환하는 단계에 의해 갱신된다. 메세지의 교환중 임의의 시간에, 저장되는 소프트 추정값의 개수는 N보다 적다.
제2의 일반적인 방법의 전형적인 실시예에서, 메시지는 오직 그래프의 각각의 복수의 서브-그래프 내에서, 그리고 각각의 서브-그래프와 하나 이상의 외부 체크 노드 사이에서만 교환된다. 최대 개수의 비트 노드를 가진 서브-그래프 내에 존재하는 비트 노드보다 더 많은 소프트 추정값은 절대 저장되지 않는다. 몇몇 이러한 실시예에서, 메시지의 교환중 임의의 시간에, 메시지는 오직 그래프의 각각의 복수의 서브-그래프 내에서, 그리고 각각의 서브-그래프와 하나 이상의 외부 체크 노드 사이에서만 교환되고, 이러한 시간 동안, 그 서브-그래프 내의 비트 노드의 개수보다 더 많은 소프트 추정값은 절대 저장되지 않는다.
제2의 일반적인 방법에 대응하는 디코더는 판독/기록 메모리, 및 제2의 일반적 방법을 구현하는 알고리즘을 실행함으로써 코드워드의 표현을 디코딩하는 하나 이상의 프로세서를 포함한다. 통상적으로, 이러한 디코더는 복수의 프로세서를 포함하고, 프로세서와 판독/기록 메모리 사이에서 메시지 및 코드워드 비트의 추정값을 그래프에 따라 라우팅하는 라우팅 층을 포함한다. 이러한 디코더의 몇몇 실시예에서, 코드워드 비트의 추정값은 소프트 추정값이고, 비트 노드와 체크 노드를 연결하는 그래프 내의 에지의 개수는 E이고, 판독/기록 메모리는 N+E보다 적은 메시지 및 소프트 추정값의 결합된 총 개수를 저장하기 위해, 알고리즘에 대하여, 충분한 저장 용량을 가진다.
제2의 일반적 방법에 대응하는 메모리 컨트롤러는 K개의 정보 비트를 N(>K)개의 코드워드 비트의 코드워드로 인코딩하는 인코더, 및 제2의 일반적 방법에 대응하는 디코더를 포함한다.
서브-그래프를 사용하는 제1 및 제2 방법의 변형에서, 임의의 적절한 알고리즘, 예컨대, 민-썸(min-sum) 알고리즘이 서브-그래프 내의 메시지를 교환하기 위해 사용될 수 있으나, 일반적으로 메시지는 신뢰 확산 알고리즘에 따라 교환된다. 통상적으로, 신뢰 확산 알고리즘에 사용되는 스케줄은 시리얼 스케줄이다.
통상적으로, 서브-그래프를 사용하는 제1 및 제2방법의 변형에서, 서브-그래프는 서로소이다. 그래프의 서브-그래프가 "서로소"라는 것은 비트 노드가 서브-그래프의 임의의 쌍에 의해 공유되지 않고, 체크 노드가 서브-그래프의 임의의 쌍에 의해 공유되지 않고, 그리고 서브-그래프가 외부 체크 노드를 통해 오직 에지에 의해 연결되어 있음을 의미한다.
통상적으로, 제1 또는 제2의 일반적 방법에 대응하는 메모리 컨트롤러는 메모리 컨트롤러가 컨트롤러 역할을 하는 플래시 메모리와 같은, 메인 메모리에 코드워드의 적어도 일부분을 저장하고, 메인 메모리로부터 (아마도 잡음있는) 코드워드의 표현을 추출하는 회로를 포함한다. 예컨대, 코드워드가 펑크난 실시예에서, 코드워드의 일부분 만이 저장되고 추출된다. 그러나, 이러한 메모리 컨트롤러의 몇몇 실시예에서, 이 회로는 메인 메모리에 모든 코드워드를 저장하고, 메인 메모리로부터 모든 코드워드의 표현을 추출하는 한편, 이러한 메모리 컨트롤러의 다른 실시예에서, 이 회로는 메인 메모리에 코드워드의 일부분만 저장하고, 메인 메모리로부터 코드워드의 일부분의 표현을 추출한다.
제1 및 제2의 일반적 방법에 따른 메모리 디바이스는 이러한 메모리 컨트롤러를 포함하고, 메인 메모리를 포함한다.
앞서 언급한 바와 같이, LDPC 디코딩의 도시적 표현은 도 1에 도시된 바와 같은, 행렬 표현과 동등하다. 그러므로, 제3의 일반적 방법에 따라, 코드워드 비트의 추정값은 N개의 비트 백터 엘리먼트를 가진 비트 백터, 및 N-K개의 체크 백터 엘리먼트를 가진 체크 백터를 연결하기 위한 패리티 체크 행렬을 사용하여 갱신된다. 패리티 체크 행렬은 비트 백터 엘리먼트와 체크 백터 엘리먼트를 연결하는 E개의 논-제로 행렬 엘리먼트를 가진다. 코드워드 비트 추정값을 갱신하기 위해, 메시지는 서로 연결된 비트 백터 엘리먼트와 체크 백터 엘리먼트 사이에서 교환된다. 메시지의 교환중 임의의 시간에, 저장되는 메시지의 개수는 E보다 적다.
통상적으로 코드워드의 추정값은 소프트 추정값이다. 메시지의 교환중 임의의 시간에, 저장되는 코드워드 비트의 소프트 추정값의 개수는 N보다 적다.
제3의 일반적 방법의 전형적인 실시예에서, 메시지는 오직 패리티 체크 행렬의 각각의 복수의 서브-행렬을 따라, 그리고 각각의 서브-행렬과 하나 이상의 외부 체크 백터 엘리먼트 사이에서만 교환된다. "외부" 체크 백터 엘리먼트는 임의의 서브-행렬의 논-제로 행렬 엘리먼트에 의해 임의의 비트 백터 엘리먼트에 연결되지 않고, 임의의 서브-행렬 내에 존재하지 않는 하나 이상의 논-제로 행렬 엘리먼트에 의해 하나 이상의 비트 백터 엘리먼트에만 연결되어 있는 체크 백터 엘리먼트이다. 서브-행렬과 외부 체크 백터 엘리먼트 "사이에서" 메시지를 교환하는 것은 외부 체크 백터 엘리먼트와 서브-행렬의 논-제로 행렬 엘리먼트에 의해 다른 체크 백터 엘리먼트에 연결되어 있는 하나 이상의 비트 백터 엘리먼트 사이에서 메시지를 교환하는 것을 의미한다. 각각의 서브-행렬은 각각의 개수의 자신의 "내부" 논-제로 행렬 엘리먼트를 가진다. 메시지의 교환중 임의의 시간에, 최대 개수의 내부 논-제로 행렬 엘리먼트를 가진 서브-행렬 내의 내부 논-제로 행렬 엘리먼트의 개수와, 서브-행렬과 외부 체크 백터 엘리먼트를 연결하는 논-제로 행렬 엘리먼트의 개수의 합보다 많은 메시지는 절대 저장되지 않는다. 외부 체크 백터 엘리먼트는 외부 체크 백터 엘리먼트가, 서브-행렬의 논-제로 행렬 엘리먼트에 의해 다른 체크 백터 엘리먼트에 연결된 하나 이상의 비트 백터 엘리먼트에, 패리티 체크 행렬의 논-제로 행렬 엘리먼트에 의해 연결되어 있다면, 서브 행렬에 "연결되어" 있다. 몇몇 이러한 실시예에서, 코드워드 비트의 추정ㄱ밧은 소프트 추정값이고, 그것과 연관된 최대 개수의 비트 백터 엘리먼트를 가진 서브-행렬과 연관된 비트 백터 엘리먼트가 존재하는 것보다 많은 소프트 추정값은 절대 저장되지 않는다. 서브-행렬과 "연관된" 비트 백터 엘리먼트는 서브-행렬에 의해 체크 백터 엘리먼트에 연결되어 있는 비트 백터 엘리먼트이다. 패리티 체크 행렬의 각각의 열이 하나의 비트 백터 엘리먼트에 대응하는, 도 1에 도시된 종래기술에 따라, 서브-행렬에 연관된 비트 백터 엘리먼트의 개수는 서브-행렬의 열의 개수이다.
제3의 일반적 방법에 대응하는 디코더는 판독/기록 메모리, 및 제3의 일반적 방법을 구현하는 알고리즘을 실행함으로써 코드워드의 표현을 디코딩하는 하나 이상의 프로세서를 포함한다. 통상적으로, 이러한 디코더는 복수의 프로세서를 포함하고, 또한 프로세서와 판독/기록 메모리 사이에서 메시지와 코드워드 비트의 추정값을 패리티 체크 행렬에 따라 라우팅하는 라우팅 층을 포함한다. 이러한 디코더의 몇몇 실시예에서, 코드워드 비트의 추정값은 소프트 추정값이고, 판독/기록 메모리는 N+E보다 적은, 메시지와 소프트 추정값의 결합된 총 개수를 저장하기 위해, 알고리즘에 대하여, 충분한 저장 용량을 가진다.
제3의 일반적 방법에 대응하는 메모리 컨트롤러는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 인코더, 및 제3의 일반적 방법에 대응하는 디코더를 포함한다.
제3의 일반적 방법에 대응하는 수신기는 통신 채널로부터 수신된 메시지를 복조하는 복조기를 포함한다. 복조기는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드 표현을 제공한다. 이러한 수신기는 또한 제3의 일반적 방법에 대응하는 디코더를 포함한다.
제3의 일반적 방법에 대응하는 통신 시스템은 송신기와 수신기를 포함한다. 송신기는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 인코더, 및 통신 채널을 통해 코드워드를 변조 신호로 송신하는 변조기를 포함한다. 수신기는 제3의 일반적 방법에 대응하는 디코더를 포함한다.
제4의 일반적 방법은 또한 도 1의 행렬 표현을 기초로 한다. 제4의 일반적 방법에 따라, 코드워드 비트의 소프트 추정값은 N개의 비트 백터 엘리먼트를 가진 비트 백터와, N-K개의 체크 백터 엘리먼트를 가진 체크 백터를 연결하기 위한 패리티 체크 행렬을 사용하여 갱신된다. 패리티 체크는 비트 백터 엘리먼트와 체크 백터 엘리먼트를 연결하는 복수의 논-제로 행렬 엘리먼트를 가진다. 각각의 비트 백터 엘리먼트는 일부 또는 모든(일반적으로 일부만) 체크 백터 엘리먼트에 연결되어 있다. 소프트 추정값은 서로 연결된 비트 백터 엘리먼트와 체크 백터 엘리먼트 사이에서 메시지를 교환하는 단계에 의해 갱신된다. 메시지 교환중 임의의 시간에, 저장되는 소프트 추정값의 개수는 N보다 적다.
제4의 일반적 방법의 전형적인 실시예에서, 메시지는 오직 패리티 체크 행렬의 각각의 복수의 서브-행렬에 따라, 그리고 각각의 서브-행렬과 하나 이상의 외부 체크 백터 엘리먼트 사이에서만 교환된다. 그것과 연관된 최대 개수의 비트 백터 엘리먼트를 가진 서브-행렬과 연관된 비트 백터 엘리먼트가 존재하는 것보다 많은 소프트 추정값은 절대 저장되지 않는다.
제4의 일반적 방법에 대응하는 디코더는 판독/기록 메모리, 및 제4의 일반적 방법을 구현하는 알고리즘을 실행함으로써 코드워드의 표현을 디코딩하는 하나 이상의 프로세서를 포함한다. 일반적으로, 이러한 디코더는 복수의 프로세서를 포함하고, 또한 프로세서와 판독/기록 메모리 사이에서 메시지와 코드워드 비트의 추정값을 패리티 체크 행렬에 따라 라우팅하는 라우팅 층을 포함한다. 이러한 디코더의 몇몇 실시예에서, 코드워드 비트의 추정값은 소프트 추정값이고, 비트 백터 엘리먼트와 체크 백터 엘리먼트를 연결하는 패리티 체크 행렬 내의 논-제로 행렬 엘리먼트의 개수는 E이고, 판독/기록 메모리는 N+E보다 적은, 메시지와 소프트 추정값의 결합된 총 개수를 저장하기 위해, 알고리즘에 대하여, 충분한 저장 용량을 가진다.
제4의 일반적 방법에 대응하는 메모리 컨트롤러는 K개의 정보 비트를 N(>K)개의 코드워드 비트의 코드워드로 인코딩하는 인코더, 및 제4의 일반적 방법에 대응하는 디코더를 포함한다.
일반적으로, 제3 또는 제4의 일반적 방법에 대응하는 메모리 컨트롤러는 메모리 컨트롤러가 컨트롤러 역할을 하는 플래시 메모리와 같은, 메인 메모리에 코드워드의 적어도 일부분을 저장하고, 메인 메모리로부터 (아마도 잡음있는) 코드워드의 표현을 추출하는 회로를 포함한다.
제3 또는 제4의 일반적 방법에 대응하는 메모리 디바이스는 이러한 메모리 컨트롤러를 포함하고, 또한 메인 메모리를 포함한다.
모든 4가지 일반적 방법에서, 임의의 적합한 알고리즘, 예컨대, 민-썸 알고리즘이 메시지를 교환하기 위해 사용될 수 있으나, 일반적으로 메시지는 신뢰 확산 알고리즘에 따라 교환된다. 통상적으로, 신뢰 확산 알고리즘에 사용된 스케줄은 시리얼 스케줄이다.
다양한 실시예들은 예시의 방법으로 첨부된 도면을 참조하여 본 명세서에 서술되어 있다.
도 1은 LDPC 코드가 개략적인 패리티 체크 행렬 또는 개략적인 이분 그래프로 어떻게 표현될 수 있는지를 도시하고;
도 2는 플러딩 스케줄 신뢰 확산 알고리즘을 도시하고;
도 3은 종래의 시리얼 스케줄 신뢰 확산 알고리즘을 도시하고;
도 4는 에러 플로어를 도시하고;
도 5는 서브-그래프 내에서, 그리고 서브-그래프와 외부 체크 노드의 세트 사이에서 메시지가 교환되는 방법을 도시하고;
도 6은 메시지가 서브-그래프 내에서, 그리고 서브-그래프와 외부 체크 노드의 세트 사이에서 교환되는 신뢰 확산 알고리즘을 도시하고;
도 7A 및 7B는 도 6의 알고리즘을 구현하는 디코더의 하이레벨의 개략적인 블록 다이어그램이고;
도 8 및 9는 도 1의 개략적인 이분 그래프를 서브-그래프로 분할하는 두 가지 방법을 도시하고;
도 10은 도 7A의 디코더를 포함하는 컨트롤러를 갖춘 플래시 메모리 디바이스의 하이레벨의 개략적인 블록 다이어그램이고;
도 11은 도 10의 상세도이고;
도 12는 도 7A의 디코더를 포함하는 수신기를 갖춘 통신 시스템의 하이레벨의 개략적인 블록 다이어그램이다.
낮은 복잡도의 LDPC 디코딩의 원리 및 동작은 첨부된 설명 및 도면을 참조하여 더 잘 이해될 것이다.
LDPC 코드에 대한 종래의 디코더에서, 디코더에 의해 요구되는 메모리는 코드 길이 N(코드의 밑줄친 그래프 |V| 내의 가변 노드의 개수와 동일함)에 비례하고, 코드의 밑줄친 그래프 |E| 내의 에지의 개수와 비례한다. (예컨대, 시리얼 스케줄식 디코더를 기반으로 하는) 효율적인 구현에서, 필요한 메모리는 (|V|+|E|)×bpm 비트만큼 작을 수 있는데, 여기서 |V|은 비트 개수의 추정값이고, |E|는 에지 메시지의 개수이고, 그리고 bpm은 디코더의 메모리에 저장되는 메시지당 비트의 개수이다(여기서, 간략함을 위해, 비트 추정값 및 에지 메시지를 저장하기 위해 요구되는 비트 수는 동일한 것으로 가정하지만, 이것이 필수적인 것은 아님을 이해해야 한다). 본 명세서에 표시된 디코더는 디코딩을 구현하기 위해, 충분한 디코딩 시간이 사용가능하다고 가정하면 종래의 디코더와 비교하여 임의의 디코더의 에러 보정 능력의 저하없이, |V| 비트 추정값의 일부분, 및 동시에 |E| 에지 메시지의 일부분만을 저장하여 훨씬 적은 메모리를 사용한다. 이것은 본 명세서에 서술된 적합한 디코딩 스케줄 및 디코딩 하드웨어를 사용함으로써 달성된다.
본 명세서에 서술된 방법 및 디코더는 하나의 시점에서 그래프의 상이한 섹션, 하나 이상의 섹션을 순차적으로 프로세싱함으로써, 메시지 패싱 디코딩 알고리즘을 구현하기 위해, 코드를 수개의 섹션으로 나타내는 언더라잉(underlying) 그래프를 분할함으로써 동작한다. 디코딩 중 각각의 스테이지에서, 현재 프로세싱되고 있는 그래프 섹션에 대응하는 비트 추정값 및 에지 메시지만 저장된다. 이러한 방법으로, 매우 긴 LDPC 코드가 사용될 수 있고, 낮은 복잡도의 디코딩 하드웨어를 사용하지만, 거의 최적의 에러 보정 능력, 및 매우 낮은 에러 발생률을 제공한다.
본 명세서에 서술된 디코더는 이론적으로 아래와 같은 3가지 이유로 메모리 디바이스에 사용하는데 매우 적합하다.
1. 낮은 에러 발생률은 수개의 디코더 출력 BER 요구사항(10-15 미만)을 가진 메모리 디바이스에서 특히 중요하다. 짧은 코드가 사용된 때, 이러한 낮은 에러 발생률을 달성하는 것은 매우 힘들고, 통상적으로 코드의 짧은 길이로 인한 이미 손상된 코드의 에러 보정 능력의 희생을 필요로 한다. 그러므로, 동일한 길이의 코드를 사용하여, 코드의 에러 보정 능력이 개선되므로 저장된 데이터를 손상시키는 주어진 메모리 "잡음"에 대하여 정보를 보호하기 위해 낮은 ECC 리던던시가 요구된다. 그 다음, 이것은 더 많은 양의 정보가 주어진 개수의 메모리 셀에(또는 주어진 메모리 실리콘 크기를 사용하여) 저장될 수 있기 때문에, 메모리의 더 우수한 비용 효율성을 야기한다. 그러므로, 메모리 디바이스에 긴 ECC를 채용하는 것은 유의미한 이점을 제공할 것으로 기대된다.
2. 본 명세서에 서술된 LDPC 방법은 한번에 전체 그래프를 프로세싱하는 대신에, 각각의 프로세싱 단계에서 코드의 언더라잉 그래프의 섹션을 프로세싱하는 것을 가능하게 한다. 이것은 한번에 모든 "소프트" 비트의 추정값이 아니라, 각각의 페이즈에서 "소프트" 비트 추정값의 일부분만이 저장될 수 있음을 의미한다. 여기서, 용어 "소프트" 비트 추정값은 저장장치(가능하다면 플래시 디바이스)로부터의 판독으로부터 유도된 각각의 저장된 비트에 대하여 추정값 'y'의 신뢰도를 설명하는 비트의 컬렉션을 의미한다.
이러한 특징은 현재 요구되는 비트 관찰값(y)만이 저장 디바이스로부터 판독되기 때문에, 메모리 디바이스에서 용이하게 사용될 수 있고, 그러므로 ECC 디코딩을 구현하기 위해 메모리 컨트롤러 내에 큰 버퍼에 대한 필요성이 존재하지 않는다. 대안으로서, (백터 y로 표시된) 모든 비트 관찰값이 한번에 메모리로부터 판독된다 하더라도, 그것을 저장하기 위해 필요한 버퍼는 통상적으로 디코더에 의해 요구되는 비트 관찰(Pv 메시지)을 저장하기 위해 필요한 메모리보다 훨씬 더 작을 것이다. 이러한 방법으로, 디코더에 의해 현재 프로세싱되고 있는 그래프 섹션에 대응하는 소프트 비트의 일부분만이 각각의 시간에 생성되고, 그 결과 더 작은 디코더 메모리가 요구된다.
예컨대, SLC 플래시 메모리 디바이스(셀당 하나의 비트를 저장하는 플래시 메모리 디바이스; "SLC"는 "단일 레벨 셀"을 의미하고, 실제로 각각의 셀의 두개의 레벨을 지원하기 때문에 잘못된 명칭이고; "SLC"에서 "S"는 하나의 프로그래밍된 레벨만이 존재함을 의미한다)를 고려하면, 각각의 셀은 단일 비트 v를 저장하고, 각각의 셀로부터 판독된 상태 y는 0 또는 1일 수 있다. 그 다음, 판독된 셀 상태의 백터 y를 저장하기 위해 필요한 메모리는 N 비트이다. 한편, 모든 소프트 비트 추정값(Pv 메시지)을 저장하기 위해 필요한 메모리는 더 클 수 있다(예컨대, 각각의 LLR 추정이 6비트로 저장된다면, 6N 비트이다). 그러므로, 각각의 디코더 작동중 필요한 소프트 비트 추정값 만을 생성하는 것이 더욱 효율적이다. 몇몇 비트 v에 대한 LLR 비트 추정값
Figure 112009072485706-PCT00019
는 메모리 "잡음"의 선험적 지식을 기초로 플래시 메모리 디바이스로부터 판독된, 대응하는 비트 관찰, y로부터 생성될 수 있다. 즉, 메모리 "잡음" 통계를 앎으로써, 'y'가 셀로부터 판독될 때, 특정 메모리 셀에 저장되었던 비트 v가 0/1인 확률을 추론할 수 있다.
예를 들어, 특정 SLC 플래시 메모리 디바이스에서, 프로그래밍되었던 셀의 상태와 상이한 셀의 상태를 판독할 확률이 p=10-2라고 가정하면, y=0일 때
Figure 112009072485706-PCT00020
이고, y=1일 때
Figure 112009072485706-PCT00021
이다. 또한, 셀이 단일 비트(하나의 "하드 비트")를 저장하고, 디바이스가 두개의 "소프트 비트"와 동등한, 8개의 임계전압 레벨을 판독하도록 구성되어 있으므로, 플래시 디바이스의 각각의 셀로부터 판독될 수 있는 상태의 개수가 8이라면, 컨트롤러 내에서 3비트에 대한 저장을 요구하는 각각의 엘리먼트 'y'는 3비트 이상, 예컨대, 6비트(BPM = 메세지당 비트수 = 6)로 표현될 수 있는 LLR 값 Pv로 변환된다. 이러한 6비트는, 플래시 셀로부터 판독된 2개의 소프트 비트와는 대조적으로, 소프트 비트 추정값이고, 이 6비트 LLR 값에 대응한다.
3. 본 명세서에 서술된 타입의 디코딩 스케줄은 (종래의 디코딩 스케줄과 비교하여) 더 적은 메모리 요구사항을 허용한다. 그러나, 본 명세서에 서술된 디코딩 스케줄은 특히, 디코더의 최대 에러 보정 용량에 근접하게 동작할 때, 디코더 수렴 속도를 저하시키고 디코딩 시간을 증가시킬 것이다. 이러한 디코더는 다양한 ECC 디코딩 지연을 허용할 수 있는 메모리 디바이스에 매우 적합하다. 예를 들어, 정확하게 저장된 코드워드로 수렴하기 위해 ECC를 위해 요구되는 디코딩 시간이 손상된 비트의 많은 수로 인해 길다면, 메모리 컨트롤러는 이전에 판독된 코드워드의 디코딩이 종료될 때까지 메모리 판독을 중지할 수 있다. 대부분의 플래시 메모리 디바이스의 수명 동안, 메모리 "잡음"이 작고, 손상된 비트의 개수가 작음을 주목 한다. 그러므로, 디코더는 효율적이고 빠르게 동작하고, 효율적인 파이프라인식 메모리 판독을 가능하게 한다. 드물게도, 메모리로부터 판독되는 손상된 비트의 수가 많을 때, 더 긴 디코딩 시간이 필요하고, 판독 파이프라인 스톨(stall)을 야기한다. 그러므로 평균적으로 처리량은 이러한 다양한 디코딩 시간 특성을 가짐에도 불구하고 무해하게 유지된다.
한 종류의 실시예에 따라, 코드워드를 나타내는 이분 그래프 G=(V, C, E)는 아래의 방법에서 수개의 섹션으로 분할된다. 1) 비트 노드의 세트 V를 t개의 서로소인 서브셋: V1, V2, ...,Vt로 분할한다(V=V1∪V2∪...∪Vt). 2) 비트 노드의 각각의 서브셋 Vi에 대하여, Vi 내의 비트 노드에 단독으로 연결된 모든 체크 노드를 포함하는, 체크 노드의 서브셋 Ci를 형성한다. 3) 지금까지 임의의 체크 노드 서브셋에 존재하지 않는 모든 체크 노드를 포함하는, 외부 체크 노드의 서브셋 CJ을 형성한다(즉, CJ=C\(C1∪C2∪...∪Ct). 4) 그래프 G를 Gi=(Vi,Ci,Ei)이도록 t개의 서브-그래프 G1, G2, ...,Gt로 분할한다. 여기서, Ei는 Vi 내의 비트 노드와 Ci 내의 체크 노드 사이에 연결된 에지의 세트이다. 세트 CJ에 EJ에 의해 연결된 에지를 지정한다(즉, EJ=E\(E1∪E2∪...∪Et임을 주목).
이러한 실시예에서, 그래프 G는 디코딩 페이즈를 반복적으로 수행함으로써, 특수한 메시지 패싱 스케줄에 따라 프로세싱되고, 각각의 디코딩 단계에서, 아래와 같은 순서로 그래프 에지를 따라 메시지를 교환한다.
· i=1 내지 t에 대하여
1. 체크 노드 c∈CJ로부터 비트 노드 v∈Vi로 EJ 내의 에지를 따라 Rcv 메시지를 전송하고, 이는 도 5에서 RCJVi 메시지로 도시되어 있다. 체크 노드 c∈CJ로부터 비트 노드 v∈Vi로의 RCV 메시지를 0으로 설정하고, 이는 도 5에서 RCiVi로 도시되어 있다. 모든 비트 v∈Vi에 대하여 초기 비트 추정값을 Pv로 설정하고, 이는 도 5에 PVi 메시지로 도시되어 있다. 메시지 RCJVi가 이 단계 이전에, 다른 t-1개의 서브-그래프 GR, k≠i에 대하여 디코더를 작동한 결과임을 이해해야 한다. 다른 서브-그래프가 아직 프로세싱되지 않은 경우에는, 도 5의 그 대응 메시지 QvicJ가 Pvi, 즉, 메모리로부터 판독되거나 통신 채널로부터 수신된 추정값으로 설정된다. 펑크난 비트가 존재하는 경우에, 그들의 Pvi는 0이다.
2. 몇몇 스케줄에 따라(예컨대, Ci 내의 체크 노드를 직렬로 트래버싱함으로써, 그리고 각각의 체크 노드에 대하여, 메시지를 그 체크 노드로, 그리고 그 체크 노드로부터 전송함으로써 수행되는, 도 3에 도시된 시리얼 스케줄에 따라), Vi 내의 비트 노드로부터 Ci 내의 체크 노드로 Qvc 메시지, 및 Ci내의 체크 노드로부터 Ei 내의 에지를 따라 Vi 내의 비트 노드로 Rcv 메시지를 전송함으로써 하나 이상의 반복을 수행한다. 이것은 도 5에 Qvici, 및 Rcivi로 도시되어 있다.
3. Qvc 메시지를 Vi 내의 비트 노드로부터 CJ 내의 체크 노드로 EJ내의 에지를 따라 전송하고, 이는 도 5에 QvicJ로 도시되어 있다.
디코딩은 디코더가 모든 패리티 체크 조건을 충족시키는 유효한 코드워드로 수렴할때까지, 또는 허용된 디코딩 단계의 최대 횟수에 도달될 때까지 계속된다. 각각의 서브-그래프 i 내에서 메시지 패싱을 중단하는 기준은 유사하다: 이러한 서브-그래프 내의 모든 패리티 체크 조건이 충족되거나, 허용된 최대 반복 횟수에 도달될 때 까지 최대 개수의 허용된 반복이 도달될 때까지 반복한다. 일반적으로, 허용된 최대 반복 횟수는 서브-그래프마다, 또는 디코더의 작동마다 변할 수 있다.
EJ 내의 에지를 따라 전송되는 메시지(도 5의 RCJVi 메시지, 및 QvicJ)는 그래프의 상이한 섹션 사이에서 정보를 교환하기 위해 사용된다. 디코딩동안 각각의 스테이지에서 전송되는 메시지는 메시지 패싱 디코딩 알고리즘의 표준 계산 룰에 따라 계산될 수 있다. 예를 들어, BP 디코딩이 구현되어 있다면, 메시지는 식 (4) 및 (5)에 따라 계산된다. 민 썸 알고리즘, 갈라거 A 알고리즘 및 갈라거 B 알고리즘과 같은, 다른 메시지 패싱 디코딩 알고리즘은 자신의 계산 룰을 가질 수 있다.
각각의 서브-그래프 내의 시리얼 스케줄식 메시지 패싱 디코딩을 가정하여, BP 디코딩을 구현하는 이러한 디코딩 알고리즘은 도 6에 요약되어 있다. 이 알고리즘에서, 디코딩 동안 각각의 스테이지에서, 비트 노드 v∈Vi에 대응하는 Qv 메시지, 및 Ei 내의 에지에 대응하는 Rcv 메시지, 및 EJ 내의 에지에 대응하는 메시지만 이 저장된다. 그러므로, 이러한 종류의 실시예의 디코더는, 효율적인 종래의 디코더에서 (|V|+|E| 메시지)를 저장하는 것과는 달리, 단지 (max{|V1|,|V2|,...,|Vt|} + max{|E1|,|E2|,...,|Et|} + |EJ|) 메시지만 동시에 저장하는 것을 필요로 한다. 그러므로, 메모리 요구사항의 종래의 디코더에 대하여 요구되는 메모리의 ~1/t이다. 긴 LDPC 코드를 구현할 때, 이것은 디코더의 복잡도 면에서 상당한 이점을 제공한다.
이러한 종류의 실시예에 따른 예시적인 디코더(30)의 하이-레벨의 개략적인 블록 다이어그램이 도 7A에 도시되어 있다. 디코더(30)는 다음을 포함한다.
1. 메모리로부터 판독되거나 통신 채널을 통해 수신된 대응하는 비트 관측값 y i=[yv:v∈Vi]을 기초로(여기서, yv는 비트 v에 대응하는 관측값), 현재 프로세싱되는 서브-그래프 Gi=(Vi,Ci,Ei) 내의 비트 v∈Vi에 대한 초기 비트 추정값 P i=[Pv:v∈Vi]을 계산하는 초기 LLR 계산 블록(32).
2. 현재 프로세싱되는 서브-그래프 내의 비트 노드 v∈Vi에 대한 비트 추정값(Pv 메시지로 초기화된 Qv 메시지)을 저장하는 메모리 섹션(36)을 포함하는 판독/기록 메모리(34).
3. 3a. 현재 프로세싱되는 서브-그래프의 에지 세트 Ei에 대응하는 Rcv 메시지를 저장하는 메모리 섹션(38)과,
3b. EJ 내의 에지를 따른 메시지를 저장하는 메모리 섹션(40)을 포함하는 판 독/기록 메모리(35). 메모리 섹션(40)은 i) 비트 노드 v∈Vi, ∀i'∈{1,...,n}\1로부터 체크 노드 c∈CJ로의 Qvc 메시지를 저장하고(여기서, i는 현재 프로세싱되는 서브-그래프의 인덱스), ii) 비트 노드 v∈Vi에 대하여, 메모리 섹션(40)은 먼저 체크 노드 c∈CJ 로부터의 Rcv 메시지를 저장하고, 그 후 서브-그래프 프로세싱 메모리 섹션(40)은 체크 노드 c∈CJ 로의 Qvc를 저장한다.
4. (도 6에 도시된 바와 같은) 메시지 갱신에 포함된 계산을 구현하는 프로세싱 유닛(42).
5. 메모리(34)와 프로세싱 유닛(42) 사이에서 메시지를 라우팅하는 라우팅 층(44). 예컨대, 이러한 종류의 실시예의 몇몇 서브-클래스에서, 도 6의 서브-그래프 G1 내지 Gt에 걸친 루프 내에서, 라우팅 층(44)은 각각의 프로세서(42)에 현재의 서브-그래프 Gi의 자신의 체크 노드를 할당하고, 체크 노드 프로세싱은 Gi의 모든 체크 노드에 대하여(또는 프로세서(42)가 존재하는 개수 만큼의 Gi의 체크 노드에 대하여) 병렬로 수행된다.
6. 코드의 그래프 구조를 저장하는 판독전용 메모리(ROM, 46). 라우팅 층(44)에 의한 메모리 어드레싱, 및 스위칭은 ROM(46) 내의 엔트리를 기초로 한다.
디코더(30)는 메세지를 갱신하는데 포함된 계산이 병렬로 실행될 수 있도록 복수의 프로세싱 유닛(42)을 포함한다. 하나의 프로세싱 유닛(42)만 가진 대안의 실시예는 라우팅 층(44)을 포함하지 않을 수 있다.
상술된 바와 같이, 시리얼 패싱 스케줄은 체크 노드 또는 비트 노드 중 하나를 직렬로 트래버싱한다. 도 7A의 디코더(30)는 체크 노드를 직렬로 트래버싱한다. 도 7B는 비트 노드를 직렬로 트래버싱하는 유사한 디코더(31)의 하이-레벨의 개략적인 블록 다이어그램이다.
이러한 종류의 실시예에 따른 그래프 분할의 하나의 예가 도 8에 도시되어 있다. LDPC 코드는 모든 비트 노드가 2개의 체크 노드에 연결되고, 모든 체크 노드가 본 예에서 사용된 4개의 비트 노드에 연결되도록, 18개의 비트 노드, 및 9개의 체크 노드를 가진 레귤러 이분 그래프에 의해 설명된다. 이것은 길이 18, 비율 1/2인 LDPC 코드이다. 오리지널 그래프는 도 8의 좌측에 도시되어 있다. 이것은 또한 도 1의 그래프이다. 이 그래프의 비트 노드, 체크 노드, 및 에지를 서브셋으로 분할한 후의 그래프는 도 8의 우측에 도시되어 있다. 이것은 단지 명료함을 위해 재정렬되었을 뿐, 동일한 그래프임을 이해해야 한다. 이러한 코드에 대하여, 종래기술의 효율적인 디코더는 18+36=56 메시지를 저장할 것을 요구하지만, 대응하는 디코더(30)는 단지 6+8+12=26 메시지를 저장할 것을 요구하여, 동일한 에러 보정 능력을 유지하면서 디코더의 메모리 복잡도를 52% 감소시킨다.
도 8의 예처럼, 모든 서브-그래프는 토폴로지적으로 동일한 것이 바람직하다. 본 구문에서, "토폴로지적 동일성"은 모드 서브-그래프가 동일한 개수의 비트 노드, 및 동일한 개수의 체크 노드를 가지고; 각각의 비트 노드는 내부의 체크 노드로의 연결에 관하여, 모든 다른 서브-그래프 내에 대응하는 비트 노드를 가지고; 각각의 서브-그래프 체크 노드는 비트 노드와의 연결에 관하여 모든 다른 서브-그 래프 내에 대응하는 체크 노드를 가진다는 것을 의미한다. 예를 들어, 도 8에서는,
비트 노드(1, 5, 11, 13, 16, 및 17)는, 비트 노드(1 및 5)가 서브-그래프(1)의 두 체크 노드에 연결되어 있고, 비트 노드(11 및 16)가 서브-그래프(2)의 두 체크 노드에 연결되어 있고, 비트 노드(13 및 17)가 서브-그래프(3)의 두 체크 노드에 연결되어 있고, 이러한 비트 노드들은 외부 체크 노드(체크 노드의 세트 CJ)에 연결되어 있지 않으므로, 부합한다.
나머지 비트는 이러한 비트 각각이 동일한 서브-그래프의 하나의 체크 노드에 연결되어 있으므로 부합한다.
서브-그래프의 모든 체크 노드들은, 이러한 체크 노드 각각이 서브-그래프 체크 노드에만 연결되어 있는 그 서브-그래프의 두 비트 노드에, 그리고 또한 외부 체크 노드에 연결되어 있는 그 서브-그래프의 두 개의 다른 비트에 연결되어 있으므로 부합한다.
서브-그래프는 "토폴로지적으로 동일"해지기 위해 외부 체크 노드와 동일한 연결성을 가질 필요는 없다. 예를 들어, 동일한 외부 체크 노드(7)에 연결되어 있는 서브-그래프(3)의 두 비트 노드(15, 및 18)는 또한 서브-그래프(3)의 동일한 체크 노드(9)에 연결되어 있으나, 동일한 외부 체크 노드(2)에 연결되어 있는 서브-그래프(1)의 두 비트 노드(4 및 12)는 서브-그래프(1)의 상이한 체크 노드(3 및 8)에 연결되어 있다.
그러나, 필요하다면, 임의의 LDPC 그래프 G는 그리디(greedy) 알고리즘에 의해 서브-그래프로 분할될 수 있다. 제1 서브-그래프는 임의의 세트의 비트 노드를 선택함으로써 구성된다. 제1 서브-그래프의 체크 노드는 이러한 비트 노드에만 연결된 체크 노드이다. 제2 서브-그래프는 나머지 비트 노드로부터 임의의 세트의 비트 노드를 선택함으로써 구성된다. 바람직하게는, 물론 제2 서브-그래프 내의 비트 노드의 개수는 제1 서브-그래프 내의 비트 노드의 개수와 동일하다. 다시, 제2 서브-그래프의 체크 노드는 제2 서브-그래프의 비트 노드에만 연결된 체크 노드이다. 이러한 비트 노드의 임의의 선택이 원하는 횟수만큼 반복된다. 마지막 서브-그래프는 선택되지 않은 비트 노드, 및 이러한 비트 노드에만 연결된 체크 노드로 구성된다. 나머지 체크 노드는 CJ를 구성한다.
상술된 클래스의 실시예에서, LDPC 그래프 G는 t개의 서브-그래프로 분할되고, 각각 자신의 비트 노드 및 체크 노드를 가지고, 오직 체크 노드의 개별 서브셋 CJ을 더한다. 도 9에 도시된 다른 클래스의 실시예에서, G는 t개의 서브-그래프로 분할되고, 단지 t개의 서브-그래프로 분할되고, 각각은 자신의 비트 노드 및 체크 노드를 포함한다. 예를 들어, 상술된 그리디 알고리즘을 사용하여, 마지막 서브-그래프(Gt)는 선택되지 않은 비트 노드, 이러한 비트 노드에만 연결된 체크 노드, 및 모든 나머지 체크 노드를 포함한다. 이것은 서브-그래프의 비트 노드로부터 개별적인 그 자신의 비트 노드의 서브셋에 연결되어 있는 제1종의 실시예의 세트 CJ와 동등하다. 이러한 종류의 실시예에서, 도 6의 알고리즘은 서브-그래프 루프 내의 서브-그래프 G1 내지 Gt-1만 포함함으로써, 그리고 Gt 내의 배타적인 메시지의 개별적인 교환과 함께, 서브-그래프 루프를 뒤따라 각각의 디코딩 단계를 종료함으로써 변형된다. 도 9는 t=4인 경우를 도시한다. 하나의 서브-클래스의 이러한 실시예에서, 일부의 비트는 손상된 비트이고, Gt는 이러한 비트에 대하여 전용이다. Gt의 모든 비트는 손상된 비트이며, 모든 손상된 비트는 Gt의 비트이다.
도 10은 플래시 메모리 디바이스의 하이-레벨의 개략적인 블록 다이어그램이다. 하나의 행렬에 복수의 메모리 셀(M)을 포함하는 메모리 셀 어레이(1)는 칼럼 컨트롤 회로(2), 로우 컨트롤 회로(3), c-소스 컨트롤 회로(4), 및 c-p-우물 컨트롤 회로(5)에 의해 컨트롤된다. 칼럼 컨트롤 회로(2)는 메모리 셀(M)에 저장된 데이터를 판독하기 위해, 기록 오퍼레이션 동안 메모리 셀(M)의 상태를 판정하기 위해, 그리고 기록을 촉진하거나 금지시키도록 비트라인(BL)의 전위 레벨을 컨트롤하기 위해 칼럼 컨트롤 회로(2)의 비트라인(BL)에 연결된다. 로우 컨트롤 회로(3)는 하나의 워드라인(WL) 중 하나를 선택하기 위해, 판독 전압을 인가하기 위해, 칼럼 컨트롤 회로(2)에 의해 컨트롤되는 비트라인의 전위 레벨과 결합된 기록전압을 인가하기 위해, 그리고 메모리 셀(M)이 형성된 p-타입 영역의 전압과 연결된 삭제 전압을 인가하기 위해 워드라인(WL)에 연결된다. c-소스 컨트롤 회로(4)는 메모리 셀(M)에 연결된 공통의 소스 라인을 컨트롤한다. c-p-우물 컨트롤 회로(5)는 c-p-우물 전압을 컨트롤 한다.
메모리 셀(M)에 저장된 데이터는 칼럼 컨트롤 회로(2)에 의해 판독되고, I/O 라인 및 데이터 입/출력 버퍼(6)를 통해 외부 I/O 라인으로 출력된다. 메모리 셀에 저장될 프로그램 데이터는 데이터 외부 I/O 라인을 통해 입/출력 버퍼(6)로 입력되고, 칼럼 컨트롤 회로(2)로 전송된다. 외부 I/O 라인은 컨트롤러(20)에 연결된다.
플래시 메모리 디바이스를 컨트롤하는 커맨드 데이터는 컨트롤러(20)와 연결되어 있는 외부 컨트롤 라인에 연결된 커맨드 인터페이스로 입력된다. 커맨드 데이터는 플래시 메모리에 요구되는 오퍼레이션이 무엇인지를 알린다. 입력된 커맨드는 칼럼 컨트롤 회로(2), 로우 컨트롤 회로(3), c-소스 컨트롤 회로(4), c-p-우물 컨트롤 회로(5), 및 데이터 입/출력 버퍼(6)를 컨트롤하는 상태 머신(8)으로 전송된다. 상태 머신(8)은 'READY/BUSY', 또는 'PASS/FAIL'과 같은 플래시 메모리의 상태 데이터를 출력할 수 있다.
컨트롤러(20)는 퍼스널 컴퓨터, 디지털 카메라, 개인용 휴대 단말과 같은 호스트 시스템에 연결되어 있거나, 연결가능하다. 메모리 어레이(1)에 데이터를 저장하거나, 그로부터 데이터를 판독하는 것과 같은 커맨드를 개시하고, 그러한 데이터를 각각 제공하거나 수신하는 것이 호스트이다. 컨트롤러(20)는 이러한 커맨드를 커맨드 회로(7)에 의해 번역되고 실행될 수 있는 커맨드 신호로 변환한다. 컨트롤러(20)는 또한 전형적으로 메모리 어레이에 기록되거나, 그로부터 판독될 수 있는 사용자 데이터를 위한 버퍼 메모리를 포함한다. 전형적인 메모리 디바이스는 컨트롤러(20)를 포함하는 하나의 통합된 회로 칩(21), 및 그 각각이 메모리 어레이 및 관련 컨트롤, 입/출력, 및 상태 머신 회로를 포함하는 하나 이상의 집적회로 칩(22)을 포함한다. 물론, 이러한 디바이스의 컨트롤러 회로, 및 메모리 어레이를 하나의 통합된 회로 칩 상에 함께 통합하는 것이 경향이다. 메모리 디바이스는 호스트 시스템의 일부분으로서 내장될 수 있고, 또는 호스트 시스템의 접속 소켓에 제거가능하게 삽입가능한 메모리 카드에 포함될 수 있다. 이러한 카드는 전체 메모리 디바이스를 포함할 수도 있고, 컨트롤러 및 메모리 어레이는 관련된 주변 회로와 함께 별도의 카드에 제공될 수도 있다.
도 11은 도 10의 일부의 확대된 도면이며, 컨트롤러(20)가 호스트로부터 수신된 사용자 데이터를 하나 이상의 코드워드로 인코딩하는 인코더(52), 메모리 셀 어레이(1) 내에 코드워드(또는 코드워드의 임의의 비트가 손상된 비트라면, 코드워드의 손상되지 않은 비트만)를 저장하도록 커맨드 회로(7)에 명령하고, 메모리 셀 어레이(1)로부터 저장된 코드워드(손상된 비트인 경우에 코드워드의 저장된 부분)를 추출하도록 커맨드 회로(7)에 명령하는 회로(54), 및 회로(54)에 의해 추출된 코드워드의 표현을 디코딩하는 디코더(30)를 포함함을 보여준다.
본 명세서에 서술된 방법 및 디코더는 주로 데이터 저장 시스템 용으로 의도되었으나, 이러한 방법 및 디코더는 또한 통신 시스템, 더욱 상세하게는 고주파수를 심하게 감쇠시키는 매체를 통한 전파에 의존하는 통신 시스템에 적용가능하다. 이러한 통신은 원래 저속이며 잡음이 심하다. 이러한 통신의 하나의 예는 해안 기지국과 해저 잠수함 사이의 무선파 통신이다.
도 12는 트랜스미터(110), 채널(103), 및 수신기(112)를 구비한 통신 시스템(100)의 하이-레벨의 개략적인 블록도이다. 트랜스미터(110)는 인코더(101), 및 변조기(102)를 포함한다. 수신기(112)는 복조기(104), 및 디코더(30)를 포함한다. 인코더(101)는 메시지를 수신하고, 대응하는 코드워드를 발생시킨다. 변조기(102)는 생성된 코드워드에 BPSK, QPSK, 또는 다중치 QAM과 같은 디지털 변조를 수행하고, 그 결과적인 변조 신호를 채널(103)을 통해 수신기(112)로 송신한다. 수신기(112)에서, 복조기(104)는 변조 신호를 채널(103)로부터 수신하고, 수신된 변조 신호에 BPSK, QPSK, 또는 다중치 QAM과 같은 디지털 복조를 수행한다. 디코더(30)는 원래의 코드워드의 결과적인 표현을 상술된 바와 같이 디코딩한다. 대안으로서, 수신기(112)는 디코더(30) 대신 디코더(31)를 포함할 수 있다.
본 명세서는 코드워드의 표현을 디코딩하는 방법, 이러한 방법을 사용하는 디코더, 컨트롤러가 이러한 디코더를 포함하는 메모리, 및 수신기가 이러한 디코더를 포함하는 통신 시스템의 제한된 개수의 실시예를 서술하였다. 이러한 방법, 디코더, 메모리, 및 시스템의 다양한 변형, 수정, 및 다른 애플리케이션이 이루어질 수 있음이 이해될 것이다.

Claims (61)

  1. K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법으로서,
    (a) N개의 비트 노드 및 N-K개의 체크 노드를 포함하고, 총 E개의 에지가 있고, 각각의 비트 노드가 각각의 에지에 의해 적어도 하나의 체크 노드에 연결되어 있는 그래프에서, 서로 연결되어 있는 상기 비트 노드와 상기 체크 노드 사이에서 메시지를 교환하는 단계를 포함하는 단계에 의해, 코드워드 비트의 추정값을 갱신하는 단계; 및
    (b) 상기 메시지를 교환하는 단계 중 임의의 시간에, E보다 적은 개수의 메시지를 저장하는 단계;를 포함하는 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법.
  2. 제 1 항에 있어서, 상기 코드워드 비트의 추정값은 소프트 추정값이고, 상기 방법은
    (c) 상기 메시지를 교환하는 단계 중 임의의 시간에, N개보다 적은 개수의 상기 코드워드 비트의 상기 소프트 추정값을 저장하는 단계를 더 포함하는 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법.
  3. 제 1 항에 있어서, 상기 메시지는 신뢰 확산 알고리즘에 따라 교환되는 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법.
  4. 제 3 항에 있어서, 상기 메시지는 시리얼 스케줄에 따라 교환되는 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법.
  5. 제 1 항에 있어서, 상기 교환하는 단계는
    (a) 상기 그래프 중 복수의 서브-그래프의 각각 내에서, 그리고
    (b) 상기 복수의 서브-그래프의 각각의 서브-그래프와 적어도 하나의 외부 체크 노드 사이에서, 메시지가 교환되는 것으로 한정되고,
    상기 각각의 서브-그래프는 각각의 개수의 내부 에지를 가지고,
    상기 메시지의 상기 교환하는 단계 중 임의의 시간에, 최대, 상기 복수의 서브-그래프 중 최대 개수의 내부 에지를 가진 상기 서브-그래프 내에 존재하는 내부 에지와, 상기 복수의 서브-그래프의 상기 서브-그래프와 상기 적어도 하나의 외부 체크 노드를 연결하는 에지의 합만큼의 메시지가 저장되는 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법.
  6. 제 5 항에 있어서, 상기 복수의 서브-그래프의 각각의 서브-그래프는 각각의 개수의 비트 노드를 가지고, 상기 코드워드 비트의 추정값은 소프트 추정값이고; 상기 메시지를 교환하는 단계 중 임의의 시간에, 최대, 상기 상기 복수의 서브-그래프 중 최대 개수의 비트 노드를 가진 상기 서브-그래프 내에 존재하는 비트 노드 만큼의 소프트 추정값이 저장되는 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법.
  7. 제 5 항에 있어서, 상기 메시지를 교환하는 단계 중 임의의 시간에, 상기 교환은
    (a) 상기 복수의 서브-그래프 중 오직 하나의 서브-그래프 내에서만; 그리고
    (b) 상기 복수의 서브-그래프 중 오직 하나의 서브-그래프와 상기 적어도 하나의 외부 체크 노드 사이에서만 메시지가 교환되도록 한정되고,
    상기 메시지가 상기 복수의 서브-그래프 중 오직 하나의 서브-그래프 내에서만, 그리고 (b) 상기 복수의 서브-그래프 중 오직 하나의 서브-그래프와 상기 적어도 하나의 외부 체크 노드 사이에서만 교환되는 동안, 상기 복수의 서브-그래프 중 오직 하나의 서브-그래프 내에 존재하는 내부 에지와, 상기 복수의 서브-그래프의 상기 서브-그래프와 상기 적어도 하나의 외부 체크 노드를 연결하는 에지의 합만큼의 메시지만 저장되는 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법.
  8. 제 7 항에 있어서, 상기 코드워드 비트의 추정값은 소프트 추정값이고, 상기 메시지는 상기 복수의 서브-그래프 중 오직 하나의 서브-그래프 내에서, 그리고 상기 복수의 서브-그래프 중 오직 하나의 서브-그래프와 상기 적어도 하나의 외부 체크 노드 사이에서만 교환되고, 동시에 상기 복수의 서브-그래프 중 오직 하나의 서브-그래프 내에 존재하는 비트 노드만큼의 코드워드 비트의 소프트 추정값만 저장되는 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법.
  9. 제 5 항에 있어서, 상기 복수의 서브-그래프의 각각의 서브-그래프 내에서, 상기 메시지는 신뢰 확산 알고리즘에 따라 교환되는 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법.
  10. 제 9 항에 있어서, 상기 복수의 서브-그래프의 각각의 서브-그래프 내에서, 상기 메시지는 시리얼 스케줄에 따라 교환되는 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법.
  11. 제 5 항에 있어서, 상기 복수의 서브-그래프의 상기 서브-그래프는 서로소 인 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법.
  12. K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드 표현을 디코딩하는 디코더로서,
    (a) 판독/기록 메모리; 및
    (b) N개의 비트 노드 및 N-K개의 체크 노드를 포함하고, 각각의 비트 노드는 각각의 에지에 의해 적어도 하나의 체크 노드에 연결되어 있고, 총 E개의 에지가 존재하는 그래프 내에서, 서로 연결되어 있는 상기 비트 노드와 상기 체크 노드 사이에서 메시지를 교환하는 단계를 포함하는 단계에 의해 상기 코드워드 비트의 추정값을 갱신하는 알고리즘을 실행함으로써 상기 코드워드의 표현을 디코딩함과 동시에, 상기 메시지를 교환하는 단계 중 임의의 시간에, 상기 판독/기록 메모리 내에 E보다 적은 개수의 메세지를 저장하는 적어도 하나의 프로세서;를 포함하는 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드 표현을 디코딩하는 디코더.
  13. 제 12 항에 있어서, 복수의 프로세서를 포함하고,
    (c) 상기 프로세서와 상기 판독/기록 메모리 사이에서 상기 메시지 및 상기 코드워드 비트의 추정값을 상기 그래프에 따라 라우팅하는 라우팅 층을 더 포함하는 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드 표현을 디코딩하는 디코더.
  14. 제 12 항에 있어서, 상기 코드워드 비트의 추정값은 소프트 추정값이고, 상기 판독/기록 메모리는 N+E보다 적은
    (i) 상기 메세지; 및
    (ii) 상기 코드워드 비트의 소프트 추정값의 결합된 총 개수를 저장하기 위해, 상기 알고리즘에 대하여 충분한 저장 용량을 가진 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드 표현을 디코딩하는 디코더.
  15. 메모리 컨트롤러로서,
    (a) K개의 정보 비트를 N(>K)개의 코드워드 비트의 코드워드로 인코딩하는 인코더; 및
    (b) 디코더를 포함하고,
    상기 디코더는
    (i) 판독/기록 메모리; 및
    (ii) N개의 비트 노드 및 N-K개의 체크 노드를 포함하고, 각각의 비트 노드가 각각의 에지에 의해 적어도 하나의 체크 노드에 연결되어 있고, 총 E개의 에지가 존재하는 그래프 내에서, 서로 연결되어 있는 상기 비트 노드와 상기 체크 노드 사이에서 메시지를 교환하는 알고리즘을 실행함으로써, 상기 코드워드의 표현을 디코딩함과 동시에, 상기 메시지를 교환하는 중 임의의 시간에, 상기 판독/기록 메모리 내에 E보다 적은 개수의 메세지를 저장하는 적어도 하나의 프로세서;를 포 함하는 것을 특징으로 하는 메모리 컨트롤러.
  16. 제 15 항에 있어서,
    (c) 메인 메모리 내에 상기 코드워드의 적어도 일부분을 저장하고, 상기 메인 메모리로부터 상기 코드워드의 적어도 일부분의 표현을 추출하는 회로를 더 포함하는 것을 특징으로 하는 메모리 컨트롤러.
  17. 제 16 항에 있어서, 상기 회로는 상기 메인 메모리에 모든 코드워드를 저장하고, 상기 메인 메모리로부터 모든 코드워드의 표현을 추출하는 것을 특징으로 하는 메모리 컨트롤러.
  18. 제 16 항에 있어서, 상기 회로는 상기 메인 메모리에 상기 코드워드의 일부분만을 저장하고, 상기 메인 메모리로부터 상기 코드워드의 상기 일부분을 추출하는 것을 특징으로 하는 메모리 컨트롤러.
  19. 메모리 디바이스로서,
    (a) 제 16 항의 상기 메모리 컨트롤러; 및
    (b) 메인 메모리;를 포함하는 것을 특징으로 하는 메모리 디바이스.
  20. 수신기로서,
    (a) 통신 채널로부터 수신된 메시지를 복조하고, 그로인해 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 제공하는 복조기; 및
    (b) 디코더를 포함하고,
    상기 디코더는
    (i) 판독/기록 메모리; 및
    (ii) N개의 비트 노드 및 N-K개의 체크 노드를 포함하고, 각각의 비트 노드가 각각의 에지에 의해 적어도 하나의 체크 노드에 연결되어 있고, 총 E개의 에지가 존재하는 그래프 내에서, 서로 연결되어 있는 상기 비트 노드와 상기 체크 노드 사이에서 메시지를 교환하는 알고리즘을 실행함으로써, 상기 코드워드의 표현을 디코딩함과 동시에, 상기 메시지를 교환하는 중 임의의 시간에, 상기 판독/기록 메모리 내에 E보다 적은 개수의 상기 메세지를 저장하는 적어도 하나의 프로세서;를 포함하는 것을 특징으로 하는 수신기.
  21. 메시지를 송신하고 수신하는 통신 시스템으로서,
    (a) 송신기로서,
    (i) K개의 정보 비트의 메시지를 N(>K)개의 코드워드 비트의 코드워드로 인코딩하는 인코더; 및
    (ii) 통신 채널을 통해 상기 코드워드를 변조 신호로서 송신하는 변조기를 포함하는 송신기; 및
    (b) 수신기로서,
    (i) 상기 통신 채널로부터 상기 변조 신호를 수신하고, 상기 변조 신호를 복조하고, 그로인해 상기 코드워드의 표현을 제공하는 복조기; 및
    (ii) 디코더;를 포함하는 수신기를 포함하고,
    상기 디코더는
    (A) 판독/기록 메모리; 및
    (B) N개의 비트 노드 및 N-K개의 체크 노드를 포함하고, 각각의 비트 노드가 각각의 에지에 의해 적어도 하나의 체크 노드에 연결되어 있고, 총 E개의 에지가 존재하는 그래프 내에서, 비트 노드와 체크 노드를 연결하는 E개의 에지를 포함하는 그래프의 N개의 비트 노드의 N-K개의 체크 노드 사이에서 메시지를 교환하는 알고리즘을 실행함으로써 상기 코드워드의 표현을 디코딩함과 동시에, 상기 메시지를 교환하는 중 임의의 시간에 상기 판독/기록 메모리 내에 E보다 적은 개수의 상기 메세지를 저장하는 적어도 하나의 프로세서;를 포함하는 것을 특징으로 하는 메시지를 송신하고 수신하는 통신 시스템.
  22. K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법으로서,
    (a) N개의 비트 노드 및 N-K개의 체크 노드를 포함하고, 각각의 비트 노드가 상기 체크 노드의 적어도 일부분에 연결되어 있는 그래프 내에서, 서로 연결되어 있는 상기 비트 노드와 상기 체크 노드 사이에서 메시지를 교환하는 단계를 포함하는 단계에 의해 상기 코드워드 비트의 소프트 추정값을 갱신하는 단계; 및
    (b) 상기 메시지를 교환하는 단계 중 임의의 시간에, N보다 적은 개수의 코드워드 비트의 소프트 추정값을 저장하는 단계;를 포함하는 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법.
  23. 제 22 항에 있어서, 상기 메시지는 신뢰 확산 알고리즘에 따라 교환되는 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법.
  24. 제 23 항에 있어서, 상기 메시지는 시리얼 스케줄에 따라 교환되는 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법.
  25. 제 22 항에 있어서, 상기 교환하는 단계는 메시지가
    (a) 각 서브-그래프가 각각의 비트 노드 개수를 가진, 그래프의 복수의 서브-그래프 각각 서브-그래프 내에서; 그리고
    (b) 상기 복수의 서브-그래프의 각각의 서브-그래프와 적어도 하나의 외부 체크 노드 사이에서 교환되도록 제한되고,
    상기 메시지를 교환하는 단계 중 임의의 시간에, 최대, 상기 복수의 서브-그래프 중 최대 개수의 비트 노드를 가진 상기 서브-그래프 내에 존재하는 비트 노드 만큼의 상기 코드워드 비트의 소프트 추정값이 저장되는 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법.
  26. 제 25 항에 있어서, 상기 메시지를 교환하는 단계 중 임의의 시간에, 상기 교환하는 단계는 메시지가
    (a) 상기 복수의 서브-그래프 중 오직 하나의 서브-그래프 내에서; 그리고
    (b) 상기 복수의 서브-그래프 중 상기 오직 하나의 서브-그래프와 상기 적어도 하나의 외부 체크 노드 사이에서 교환되도록 한정되고,
    상기 메시지가 상기 복수의 서브-그래프 중 상기 오직 하나의 서브-그래프 내에서, 그리고 상기 복수의 서브-그래프 중 상기 오직 하나의 서브-그래프와 상기 적어도 하나의 외부 체크 노드 사이에서 교환되는 동안, 상기 복수의 서브-그래프 중 상기 오직 하나의 서브-그래프 내에 존재하는 비트 노드만큼의 코드워드 비트의 소프트 추정값만 저장되는 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법.
  27. 제 25 항에 있어서, 상기 복수의 서브-그래프의 각각의 서브-그래프 내에서, 상기 메시지는 신뢰 확산 알고리즘에 따라 교환되는 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법.
  28. 제 27 항에 있어서, 상기 복수의 서브-그래프의 각각의 서브-그래프 내에서, 상기 메시지는 시리얼 스케줄에 따라 교환되는 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법.
  29. 제 25 항에 있어서, 상기 복수의 서브-그래프의 서브-그래프는 서로소인 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법.
  30. K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 디코더로서,
    (a) 판독/기록 메모리; 및
    (b) N개의 비트 노드 및 N-K개의 체크 노드를 포함하고, 각각의 비트 노드가 상기 체크 노드의 적어도 일부분에 연결되어 있는 그래프 내에서, 서로 연결되어 있는 상기 비트 노드와 상기 체크 노드 사이에서 메시지를 교환하는 알고리즘을 실행하는 단계를 포함하는 단계에 의해 상기 코드워드 비트의 소프트 추정값을 갱신함으로써, 상기 코드워드의 표현을 디코딩함과 동시에, 상기 메시지를 교환하는 중 임의의 시간에, 상기 판독/기록 메모리에 N보다 적은 개수의 코드워드 비트의 소프트 추정값을 저장하는 적어도 하나의 프로세서;를 포함하는 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코 딩하는 디코더.
  31. 제 30 항에 있어서, 복수의 프로세서를 포함하고,
    (c) 상기 프로세서와 상기 판독/기록 메모리 사이에서 상기 메시지 및 상기 코드워드 비트의 소프트 추정값을 상기 그래프에 따라 라우팅하는 라우팅 층을 더 포함하는 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 디코더.
  32. 제 30 항에 있어서, 상기 그래프는 그 사이에서 상기 메시지가 교환되는 상기 비트 노드와 상기 체크 노드를 연결하는 E개의 에지를 포함하고, 상기 판독/기록 메모리는, N+E보다 적은 (i) 상기 메시지와 (ii) 상기 코드워드 비트의 상기 소프트 추정값의 결합된 총 개수를 저장하기 위해, 상기 알고리즘에 대하여 충분한 저장 용량을 가지는 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 디코더.
  33. 메모리 컨트롤러로서,
    (a) K개의 정보 비트를 N(>K)개의 코드워드 비트의 코드워드로 인코딩하는 인코더; 및
    (b) 디코더;를 포함하고,
    상기 디코더는
    (i) 판독/기록 메모리; 및
    (ii) N개의 비트 노드 및 N-K개의 체크 노드를 포함하고, 각각의 비트 노드가 상기 체크 노드의 적어도 일부분에 연결되어 있는 그래프 내에서, 서로 연결되어 있는 상기 비트 노드와 상기 체크 노드 사이에서 메시지를 교환하는 알고리즘을 실행하는 단계를 포함하는 단계에 의해 상기 코드워드 비트의 소프트 추정값을 갱신함으로써 상기 코드워드의 표현을 디코딩함과 동시에, 상기 메시지를 교환하는 중 임의의 시간에, 상기 판독/기록 메모리에 N보다 적은 개수의 상기 코드워드 비트의 상기 소프트 추정값을 저장하는 적어도 하나의 프로세서;를 포함하는 것을 특징으로 하는 메모리 컨트롤러.
  34. 제 33 항에 있어서, (c) 메인 메모리 내에 상기 코드워드의 적어도 일부분을 저장하고, 상기 메인 메모리로부터 상기 코드워드의 적어도 일부분의 표현을 추출하는 회로를 더 포함하는 것을 특징으로 하는 메모리 컨트롤러.
  35. 제 34 항에 있어서, 상기 회로는 상기 메인 메모리에 모든 코드워드를 저장하고, 상기 메인 메모리로부터 모든 코드워드의 표현을 추출하는 것을 특징으로 하는 메모리 컨트롤러.
  36. 제 34 항에 있어서, 상기 회로는 상기 메인 메모리에 상기 코드워드의 일부분만을 저장하고, 상기 메인 메모리로부터 상기 코드워드의 상기 일부분의 표현을 추출하는 것을 특징으로 하는 메모리 컨트롤러.
  37. 메모리 디바이스로서,
    (a) 제 34 항의 상기 메모리 컨트롤러; 및
    (b) 메인 메모리;를 포함하는 것을 특징으로 하는 메모리 디바이스.
  38. K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법으로서,
    (a) N개의 비트 백터 엘리먼트를 가진 비트 백터와 N-K개의 체크 백터 엘리먼트를 가진 체크 백터를 연결하고, 상기 비트 백터 엘리먼트와 상기 체크 백터 엘리먼트를 연결하는 E개의 논-제로 행렬 엘리먼트를 가진 패리티 체크 행렬을 사용하여, 서로 연결되어 있는 상기 비트 백터 엘리먼트와 상기 체크 백터 엘리먼트 사이에서 메시지를 교환하는 단계를 포함하는 단계에 의해 상기 코드워드 비트의 추정값을 갱신하는 단계; 및
    (b) 상기 메시지를 교환하는 단계 중 임의의 시간에, E보다 적은 개수의 상기 메시지를 저장하는 단계;를 포함하는 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법.
  39. 제 38 항에 있어서, 상기 코드워드 비트의 추정값은 소프트 추정값이고,
    (c) 상기 메시지를 교환하는 단계 중 임의의 시간에, N개보다 적은 개수의 상기 코드워드 비트의 소프트 추정값을 저장하는 단계;를 더 포함하는 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법.
  40. 제 38 항에 있어서, 상기 메시지는 신뢰 확산 알고리즘에 따라 교환되는 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법.
  41. 제 40 항에 있어서, 상기 메시지는 시리얼 스케줄에 따라 교환되는 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법.
  42. 제 38 항에 있어서, 상기 교환하는 단계는 메시지가
    (a) 상기 패리티 체크 행렬의 복수의 서브-행렬의 각각에 따라; 그리고
    (b) 상기 복수의 서브-행렬의 각각의 서브-행렬과 적어도 하나의 외부 체크 백터 엘리먼트 사이에서, 교환되도록 한정되고,
    각각의 서브-행렬은 각각의 개수의 내부 논-제로 행렬 엘리먼트를 가지고,
    상기 메시지를 교환하는 단계 중 임의의 시간에, 최대, 상기 복수의 서브-행렬 중 최대 개수의 내부 논-제로 행렬 엘리먼트를 가진 서브-행렬 내에 존재하는 내부 논-제로 행렬 엘리먼트와, 상기 복수의 서브-행렬의 서브-행렬과 상기 적어도 하나의 외부 체크 백터 엘리먼트를 연결하는 상기 패리티 체크 행렬의 논-제로 행렬 엘리먼트의 합만큼의 메시지가 저장되는 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법.
  43. 제 42 항에 있어서, 상기 복수의 서브-행렬의 각각의 서브-행렬은 서브-행렬과 연관된 각각의 개수의 비트 백터 엘리먼트를 가지고, 상기 코드워드 비트의 상기 추정값은 소프트 추정값이고, 상기 메시지의 상기 교환하는 단계 중 임의의 시간에, 최대, 상기 복수의 서브-행렬 중 서브-행렬과 연관된 최대 개수의 비트 백터 엘리먼트를 가진 상기 서브-행렬과 연관되어 존재하는 비트 백터 엘리먼트만큼의 코드워드 비트의 소프트 추정값이 저장되는 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법.
  44. K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 디코더로서,
    (a) 판독/기록 메모리; 및
    (b) N개의 비트 백터 엘리먼트를 가진 비트 백터와 N-K개의 체크 백터 엘리먼트를 가진 체크 백터를 연결하고, 상기 비트 백터 엘리먼트와 상기 체크 백터 엘리먼트를 연결하는 E개의 논-제로 행렬을 가진 패리티 체크 행렬을 사용하여, 서로 연결된 상기 비트 백터 엘리먼트와 상기 체크 백터 엘리먼트 사이에서 메시지를 교환하는 단계를 포함하는 단계에 의해 상기 코드워드 비트의 추정값을 갱신하는 알 고리즘을 실행함으로서 상기 코드워드의 표현을 디코딩함과 동시에, 상기 메시지의 상기 교환하는 단계 중 임의의 시간에, 상기 판독/기록 메모리에 E보다 적은 개수의 상기 메시지를 저장하는 적어도 하나의 프로세서;를 포함하는 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 디코더.
  45. 제 44 항에 있어서, 복수의 프로세서를 포함하고,
    (c) 상기 프로세서와 상기 판독/기록 메모리 사이에서 상기 메시지 및 상기 코드워드 비트의 추정값을 상기 패리티 체크 행렬에 따라 라우팅하는 라우팅 층을 더 포함하는 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 디코더.
  46. 제 44 항에 있어서, 상기 코드워드 비트의 추정값은 소프트 추정값이고, 상기 판독/기록 메모리는, N+E보다 적은 (i) 상기 메시지, 및 (ii) 상기 코드워드 비트의 소프트 추정값의 결합된 총 개수를 저장하기 위해, 상기 알고리즘에 대하여, 충분한 저장 용량을 가진 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 디코더.
  47. 메모리 컨트롤러로서,
    (a) K개의 정보 비트를 N(>K)개의 코드워드 비트의 코드워드로 인코딩하는 인코더; 및
    (b) 디코더;를 포함하고,
    상기 디코더는
    (i) 판독/기록 메모리; 및
    (ii) N개의 비트 백터 엘리먼트를 가진 비트 백터와 N-K개의 체크 백터 엘리먼트를 가진 체크 백터를 연결하고, 상기 비트 백터 엘리먼트와 상기 체크 백터 엘리먼트를 연결하는 E개의 논-제로 행렬 엘리먼트를 가진 패리티 체크 행렬을 사용하여, 서로 연결되어 있는 상기 비트 백터 엘리먼트와 상기 체크 백터 엘리먼트 사이에서 메시지를 교환하는 알고리즘을 실행함으로써 상기 코드워드의 표현을 디코딩함과 동시에, 상기 메시지의 교환 중 임의의 시간에 상기 판독/기록 메모리 내에 E보다 적은 개수의 메시지를 저장하는 적어도 하나의 프로세서;를 포함하는 것을 특징으로 하는 메모리 컨트롤러.
  48. 제 47 항에 있어서,
    (c) 메인 메모리에 상기 코드워드의 적어도 일부분을 저장하고, 상기 메인 메모리로부터 상기 코드워드의 어도 일부분의 표현을 추출하는 회로를 더 포함하는 것을 특징으로 하는 메모리 컨트롤러.
  49. 메모리 디바이스로서,
    (a) 제 48 항의 상기 메모리 컨트롤러; 및
    (b) 메인 메모리;를 포함하는 것을 특징으로 하는 메모리 디바이스.
  50. 수신기로서,
    (a) 통신 채널로부터 수신된 메시지를 복조하고, 그로인해 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 제공하는 복조기; 및
    (b) 디코더;를 포함하고,
    상기 디코더는
    (i) 판독/기록 메모리; 및
    (ii) N개의 비트 백터 엘리먼트를 가진 비트 백터와 N-K개의 체크 백터 엘리먼트를 가진 체크 백터를 연결하고, 상기 비트 백터 엘리먼트와 상기 체크 백터 엘리먼트를 연결하는 E개의 논-제로 행렬 엘리먼트를 가진 패리티 체크 행렬을 사용하여, 서로 연결된 상기 비트 백터 엘리먼트와 상기 체크 백터 엘리먼트 사이에서 메시지를 교환하는 알고리즘에 의해 상기 코드워드의 표현을 디코딩함과 동시에, 상기 메시지의 교환 중 임의의 시간에 상기 판독/기록 메모리 내에 E보다 적은 개수의 메시지를 저장하는 적어도 하나의 프로세서;를 포함하는 것을 특징으로 하는 수신기.
  51. 메시지를 송신하고 수신하는 통신 시스템으로서,
    (a) 송신기로서,
    (i) 상기 메시지의 K개의 정보 비트를 N(>K)개의 코드워드 비트의 코 드워드로 인코딩하는 인코더; 및
    (ii) 통신 채널을 통해 상기 코드워드를 변조 신호로서 송신하는 변조기를 포함하는 송신기; 및
    (b) 수신기로서,
    (i) 상기 통신 채널로부터 상기 변조 신호를 수신하고, 상기 변조 신호를 복조하고, 그로 인해 상기 코드워드의 표현을 제공하는 복조기; 및
    (ii) 디코더;를 포함하고,
    상기 디코더는
    (A) 판독/기록 메모리; 및
    (B) N개의 비트 백터 엘리먼트를 가진 비트 백터와 N-K개의 체크 백터 엘리먼트를 가진 체크 백터를 연결하고, 상기 비트 백터 엘리먼트와 상기 체크 백터 엘리먼트를 연결하는 E개의 논-제로 행렬 엘리먼트를 가진 패리티 체크 행렬을 사용하여, 서로 연결된 상기 비트 백터 엘리먼트와 상기 체크 백터 엘리먼트 사이에서 메시지를 교환하는 알고리즘을 실행함으로써 상기 코드워드의 표현을 디코딩함과 동시에, 상기 메시지의 교환 중 임의의 시간에 상기 판독/기록 메모리 내에 E보다 적은 개수의 메시지를 저장하는 적어도 하나의 프로세서;를 포함하는 것을 특징으로 하는 메시지를 송신하고 수신하는 통신 시스템.
  52. K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법으로서,
    (a) N개의 비트 백터 엘리먼트를 가진 비트 백터와 N-K개의 체크 백터 엘리먼트를 가진 체크 백터를 연결하고, 상기 비트 백터 엘리먼트와 상기 체크 백터 엘리먼트를 연결하는 복수의 논-제로 행렬 엘리먼트를 가지고, 그로인해 각각의 비트 백터 엘리먼트가 상기 체크 백터 엘리먼트의 적어도 일부분에 연결되어 있는 패리티 체크 행렬을 사용하여, 서로 연결된 상기 비트 백터 엘리먼트와 상기 체크 백터 엘리먼트 사이에서 메시지를 교환하는 단계를 포함하는 단계에 의해 상기 코드워드 비트의 소프트 추정값을 갱신하는 단계; 및
    (b) 상기 메시지를 교환하는 단계 중 임의의 시간에 N보다 적은 개수의 코드워드 비트의 소프트 추정값을 저장하는 단계;를 포함하는 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법.
  53. 제 52 항에 있어서, 상기 메시지는 신뢰 확산 알고리즘에 따라 교환되는 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법.
  54. 제 53 항에 있어서, 상기 메시지는 시리얼 스테쥴에 따라 교환되는 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법.
  55. 제 52 항에 있어서, 상기 교환하는 단계는 메시지가
    (a) 상기 패리티 체크 행렬의 복수의 서브-행렬의 각각에 따라; 그리고
    (b) 상기 복수의 서브-행렬의 각각의 서브-행렬과 적어도 하나의 외부 체크 백터 엘리먼트 사이에서 교환되도록 한정되고,
    상기 각각의 서브-행렬은 서브-행렬과 연관된 각각의 개수의 비트 백터 엘리먼트를 가지고,
    상기 메시지를 교환하는 단계 중 임의의 시간에, 최대, 상기 복수의 서브-행렬의 임의의 하나의 서브-행렬과 연관된 최대 개수의 비트 백터만큼의 상기 코드워드 비트의 소프트 추정값이 저장되는 것을 특징으로 하는 K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 방법.
  56. K개의 정보 비트를 N(>K)개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 디코더로서,
    (a) 판독/기록 메모리; 및
    (b) N 개의 비트 백터 엘리먼트를 가진 비트 백터와 N-K개의 체크 백터 엘리먼트를 가진 체크 백터를 연결하고, 상기 비트 백터 엘리먼트와 상기 체크 백터 엘리먼트를 연결하는 복수의 논-제로 행렬 엘리먼트를 가지고, 그로인해 각각의 비트 백터 엘리먼트가 상기 체크 백터 엘리먼트의 적어도 일부분에 연결되어 있는 패리티 체크 행렬을 사용하여, 서로 연결되어 있는 상기 비트 백터 엘리먼트와 상기 체크 백터 엘리먼트 사이에서 메시지를 교환하는 알고리즘을 실행하는 단계를 포함하 는 단계에 의해 상기 코드워드 비트의 소프트 추정값을 갱신함으로써 상기 코드워드의 표현을 디코딩함과 동시에, 상기 메시지의 상기 교환 중 임의의 시간에 상기 판독/기록 메모리에 N보다 적은 개수의 코드워드 비트의 소프트 추정값을 저장하는 적어도 하나의 프로세서;를 포함하는 것을 특징으로 하는 K개의 정보 비트를 N개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 디코더.
  57. 제 56 항에 있어서, 복수의 프로세서를 더 포함하고,
    (c) 그래프에 따라 상기 프로세서와 상기 판독/기록 메모리 사이에서 상기 메시지 및 상기 코드워드의 소프트 추정값을 라우팅하는 라우팅 층을 더 포함하는 것을 특징으로 하는 K개의 정보 비트를 N개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 디코더.
  58. 제 56 항에 있어서, 상기 패리티 체크 행렬은 상기 비트 백터 엘리먼트와 상기 체크 백터 엘리먼트를 연결하는 E개의 논-제로 행렬 엘리먼트를 포함하고, 상기 비트 백터 엘리먼트 사이에서 메시지가 교환되고, 상기 판독/기록 메모리는 N+E보다 적은 (i) 상기 메시지; 및 (ii) 상기 코드워드 비트의 소프트 추정값의 결합된 총 개수를 저장하기 위해, 상기 알고리즘에 대하여 충분한 저장 용량을 가지는 것을 특징으로 하는 K개의 정보 비트를 N개의 코드워드 비트로 인코딩하는 코드워드의 표현을 디코딩하는 디코더.
  59. 메모리 컨트롤러로서,
    (a) K개의 정보 비트를 N(>K)개의 코드워드 비트의 코드워드로 인코딩하는 인코더; 및
    (b) 디코더;를 포함하고,
    상기 디코더는
    (i) 판독/기록 메모리; 및
    (ii) N 개의 비트 백터 엘리먼트를 가진 비트 백터와 N-K개의 체크 백터 엘리먼트를 가진 체크 백터를 연결하고, 상기 비트 백터 엘리먼트와 상기 체크 백터 엘리먼트를 연결하는 복수의 논-제로 행렬 엘리먼트를 가지고, 그로인해 각각의 비트 백터 엘리먼트가 상기 체크 백터 엘리먼트의 적어도 일부분에 연결되어 있는 패리티 체크 행렬을 사용하여, 서로 연결되어 있는 상기 비트 백터 엘리먼트와 상기 체크 백터 엘리먼트 사이에서 메시지를 교환하는 알고리즘을 실행하는 단계를 포함하는 단계에 의해 상기 코드워드의 소프트 추정값을 갱신함으로써 상기 코드워드의 표현을 디코딩함과 동시에, 상기 메시지의 상기 교환 중 임의의 시간에 상기 판독/기록 메모리에 N보다 적은 개수의 코드워드 비트의 소프트 추정값을 저장하는 적어도 하나의 프로세서;를 포함하는 것을 특징으로 하는 메모리 컨트롤러.
  60. 제 59 항에 있어서, (c) 상기 코드워드의 적어도 일부분을 메인 메모리에 저장하고, 상기 메인 메모리로부터 상기 코드워드의 적어도 일부분의 표현을 추출하는 회로를 더 포함하는 것을 특징으로 하는 메모리 컨트롤러.
  61. 메모리 디바이스로서,
    (a) 청구항 제 60 항의 상기 메모리 컨트롤러; 및
    (b) 메인 메모리;를 포함하는 것을 특징으로 하는 메모리 디바이스.
KR20097024581A 2007-05-21 2008-05-20 메모리 효율적인 ldpc 디코딩 KR101492595B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US93909207P 2007-05-21 2007-05-21
US60/939,092 2007-05-21
PCT/IL2008/000685 WO2008142683A2 (en) 2007-05-21 2008-05-20 Memory-efficient ldpc decoding

Publications (2)

Publication Number Publication Date
KR20100022023A true KR20100022023A (ko) 2010-02-26
KR101492595B1 KR101492595B1 (ko) 2015-02-11

Family

ID=39767206

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20097024581A KR101492595B1 (ko) 2007-05-21 2008-05-20 메모리 효율적인 ldpc 디코딩

Country Status (4)

Country Link
US (2) US8291279B2 (ko)
KR (1) KR101492595B1 (ko)
TW (1) TW200908569A (ko)
WO (1) WO2008142683A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101482684B1 (ko) * 2013-10-15 2015-01-16 한국과학기술원 디코딩 방법 및 이를 포함하는 메모리 시스템의 동작 방법

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8327245B2 (en) 2007-11-21 2012-12-04 Micron Technology, Inc. Memory controller supporting rate-compatible punctured codes
US8458563B2 (en) * 2008-06-23 2013-06-04 Ramot At Tel Aviv University Ltd. Reading a flash memory by joint decoding and cell voltage distribution tracking
US8464131B2 (en) * 2008-06-23 2013-06-11 Ramot At Tel Aviv University Ltd. Reading a flash memory by constrained decoding
US8370711B2 (en) 2008-06-23 2013-02-05 Ramot At Tel Aviv University Ltd. Interruption criteria for block decoding
US8464123B2 (en) * 2009-05-07 2013-06-11 Ramot At Tel Aviv University Ltd. Matrix structure for block encoding
CN102460977A (zh) * 2009-05-27 2012-05-16 诺沃尔赛特有限公司 具有迭代调度的ldpc码迭代解码
US8516352B2 (en) 2009-07-21 2013-08-20 Ramot At Tel Aviv University Ltd. Compact decoding of punctured block codes
US8375278B2 (en) 2009-07-21 2013-02-12 Ramot At Tel Aviv University Ltd. Compact decoding of punctured block codes
US9397699B2 (en) * 2009-07-21 2016-07-19 Ramot At Tel Aviv University Ltd. Compact decoding of punctured codes
US8516351B2 (en) 2009-07-21 2013-08-20 Ramot At Tel Aviv University Ltd. Compact decoding of punctured block codes
JP5197544B2 (ja) * 2009-10-05 2013-05-15 株式会社東芝 メモリシステム
EP2339774B1 (en) * 2009-12-23 2012-11-14 Blue Wonder Communications GmbH Method for decoding data packets in a wireless communication system
US8386895B2 (en) 2010-05-19 2013-02-26 Micron Technology, Inc. Enhanced multilevel memory
JP2012252558A (ja) * 2011-06-03 2012-12-20 Sony Corp 不揮発性メモリ、メモリコントローラ、不揮発性メモリのアクセス方法、およびプログラム
US8880977B2 (en) 2011-07-22 2014-11-04 Sandisk Technologies Inc. Systems and methods of storing data
US8645810B2 (en) 2011-07-31 2014-02-04 Sandisk Technologies Inc. Fast detection of convergence or divergence in iterative decoding
KR20140078576A (ko) 2011-07-31 2014-06-25 샌디스크 테크놀로지스, 인코포레이티드 메모리 및 전력 요건들이 감소된 에러-정정 디코딩
US8989050B2 (en) * 2011-12-01 2015-03-24 Telefonaktiebolaget L M Ericsson (Publ) Graph-based distributed coordination methods for wireless communication networks
US8879428B2 (en) * 2011-12-01 2014-11-04 Telefonaktiebolaget L M Ericsson (Publ) Systems and method for graph-based distributed parameter coordination in a communication network
CN104221291B (zh) * 2012-03-28 2018-02-23 英特尔公司 更新与迭代解码器关联的变量节点
US9136011B2 (en) * 2012-04-26 2015-09-15 Hgst Technologies Santa Ana, Inc. Soft information module
US9183085B1 (en) 2012-05-22 2015-11-10 Pmc-Sierra, Inc. Systems and methods for adaptively selecting from among a plurality of error correction coding schemes in a flash drive for robustness and low latency
US9021336B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for redundantly storing error correction codes in a flash drive with secondary parity information spread out across each page of a group of pages
US8788910B1 (en) 2012-05-22 2014-07-22 Pmc-Sierra, Inc. Systems and methods for low latency, high reliability error correction in a flash drive
US8793556B1 (en) 2012-05-22 2014-07-29 Pmc-Sierra, Inc. Systems and methods for reclaiming flash blocks of a flash drive
US9021337B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for adaptively selecting among different error correction coding schemes in a flash drive
US8996957B1 (en) 2012-05-22 2015-03-31 Pmc-Sierra, Inc. Systems and methods for initializing regions of a flash drive having diverse error correction coding (ECC) schemes
US8972824B1 (en) 2012-05-22 2015-03-03 Pmc-Sierra, Inc. Systems and methods for transparently varying error correction code strength in a flash drive
US9047214B1 (en) 2012-05-22 2015-06-02 Pmc-Sierra, Inc. System and method for tolerating a failed page in a flash device
US9176812B1 (en) 2012-05-22 2015-11-03 Pmc-Sierra, Inc. Systems and methods for storing data in page stripes of a flash drive
US9021333B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for recovering data from failed portions of a flash drive
TWI520501B (zh) * 2012-06-07 2016-02-01 威盛電子股份有限公司 記憶體控制器
US9264182B2 (en) 2012-09-13 2016-02-16 Novelsat Ltd. Iterative receiver loop
US9577673B2 (en) 2012-11-08 2017-02-21 Micron Technology, Inc. Error correction methods and apparatuses using first and second decoders
US9191256B2 (en) 2012-12-03 2015-11-17 Digital PowerRadio, LLC Systems and methods for advanced iterative decoding and channel estimation of concatenated coding systems
US9208018B1 (en) 2013-03-15 2015-12-08 Pmc-Sierra, Inc. Systems and methods for reclaiming memory for solid-state memory
US9407290B2 (en) 2013-03-15 2016-08-02 Sandisk Technologies Llc Error-correction decoding with conditional limiting of check-node messages
US9026867B1 (en) 2013-03-15 2015-05-05 Pmc-Sierra, Inc. Systems and methods for adapting to changing characteristics of multi-level cells in solid-state memory
US9053012B1 (en) 2013-03-15 2015-06-09 Pmc-Sierra, Inc. Systems and methods for storing data for solid-state memory
US9081701B1 (en) 2013-03-15 2015-07-14 Pmc-Sierra, Inc. Systems and methods for decoding data for solid-state memory
US9009565B1 (en) 2013-03-15 2015-04-14 Pmc-Sierra, Inc. Systems and methods for mapping for solid-state memory
US8930790B1 (en) 2013-09-13 2015-01-06 U-Blox Ag Method and apparatus for identifying selected values from among a set of values
US9743397B2 (en) 2013-11-14 2017-08-22 Telefonaktiebolaget L M Ericsson (Publ) Reduced-size message pass in factor graphs for wireless communications networks
US9614547B2 (en) 2014-06-30 2017-04-04 Sandisk Technologies Llc Multi-stage decoder
US10089177B2 (en) 2014-06-30 2018-10-02 Sandisk Technologies Llc Multi-stage decoder
CN105846830B (zh) * 2015-01-14 2019-07-30 北京航空航天大学 数据处理装置
US20160218750A1 (en) * 2015-01-23 2016-07-28 Empire Technology Development Llc Parity check code encoder
JP2019057806A (ja) 2017-09-20 2019-04-11 東芝メモリ株式会社 メモリシステム
US10862512B2 (en) 2018-09-20 2020-12-08 Western Digital Technologies, Inc. Data driven ICAD graph generation
US10735031B2 (en) 2018-09-20 2020-08-04 Western Digital Technologies, Inc. Content aware decoding method and system
KR102631407B1 (ko) * 2018-10-24 2024-01-31 에스케이하이닉스 주식회사 Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법
CN111106837B (zh) * 2018-10-26 2023-09-08 大唐移动通信设备有限公司 一种ldpc译码方法、译码装置及存储介质
CN113168360B (zh) * 2019-06-25 2023-09-19 西部数据技术公司 数据驱动的icad图形生成
US11528038B2 (en) 2020-11-06 2022-12-13 Western Digital Technologies, Inc. Content aware decoding using shared data statistics
US11481271B2 (en) 2021-03-16 2022-10-25 Western Digital Technologies, Inc. Storage system and method for using subcodes and convolutional-based LDPC interleaved coding schemes with read threshold calibration support
CN115425988B (zh) * 2022-07-29 2024-02-09 北京融为科技有限公司 一种高速ldpc全模式列变换方法
CN117375636B (zh) * 2023-12-07 2024-04-12 成都星联芯通科技有限公司 提高qc-ldpc译码器吞吐率的方法、装置及设备

Family Cites Families (18)

* 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
US6789227B2 (en) * 2001-07-05 2004-09-07 International Business Machines Corporation System and method for generating low density parity check codes using bit-filling
KR100502608B1 (ko) * 2002-12-24 2005-07-20 한국전자통신연구원 계산이 간단한 저밀도 패리티 검사 부호를 위한 메시지 전달 복호기
US7036720B2 (en) * 2003-06-25 2006-05-02 Centre National De La Recherche Scientifique (Cnrs) Method and apparatus for resolution of problems using constrained discrete variables
US7484158B2 (en) * 2003-12-03 2009-01-27 Infineon Technologies Ag Method for decoding a low-density parity check (LDPC) codeword
US20050193320A1 (en) * 2004-02-09 2005-09-01 President And Fellows Of Harvard College Methods and apparatus for improving performance of information coding schemes
US8374284B2 (en) * 2004-02-12 2013-02-12 Apple, Inc. Universal decoder
KR100594818B1 (ko) * 2004-04-13 2006-07-03 한국전자통신연구원 순차적 복호를 이용한 저밀도 패리티 검사 부호의 복호장치 및 그 방법
KR100846869B1 (ko) * 2004-12-16 2008-07-16 한국전자통신연구원 저 복잡도 ldpc복호 장치 및 그 방법
US20080028281A1 (en) * 2005-01-14 2008-01-31 Shunji Miyazaki Encoding method, decoding method, and devices for same
US7562279B2 (en) * 2005-05-20 2009-07-14 Mitsubishi Electric Research Laboratories, Inc. 2D-normalized min-sum decoding for ECC codes
KR100727316B1 (ko) * 2005-06-01 2007-06-12 삼성전자주식회사 저밀도채리티체크 채널 디코딩 방법 및 장치
JP4526450B2 (ja) * 2005-06-30 2010-08-18 ルネサスエレクトロニクス株式会社 復号装置と方法並びにプログラム
KR100698192B1 (ko) * 2005-09-02 2007-03-22 엘지전자 주식회사 Ldpc 부호의 복호 방법
US8132072B2 (en) * 2006-01-06 2012-03-06 Qualcomm Incorporated System and method for providing H-ARQ rate compatible codes for high throughput applications
KR100899738B1 (ko) * 2006-02-02 2009-05-27 삼성전자주식회사 노드 메모리 기반의 ldpc 복호기 및 복호방법
US7831895B2 (en) * 2006-07-25 2010-11-09 Communications Coding Corporation Universal error control coding system for digital communication and data storage systems
US7783952B2 (en) * 2006-09-08 2010-08-24 Motorola, Inc. Method and apparatus for decoding data

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101482684B1 (ko) * 2013-10-15 2015-01-16 한국과학기술원 디코딩 방법 및 이를 포함하는 메모리 시스템의 동작 방법

Also Published As

Publication number Publication date
US8291279B2 (en) 2012-10-16
WO2008142683A2 (en) 2008-11-27
TW200908569A (en) 2009-02-16
US8661310B2 (en) 2014-02-25
WO2008142683A3 (en) 2009-02-12
US20080294960A1 (en) 2008-11-27
KR101492595B1 (ko) 2015-02-11
US20130024745A1 (en) 2013-01-24

Similar Documents

Publication Publication Date Title
KR101492595B1 (ko) 메모리 효율적인 ldpc 디코딩
JP5593312B2 (ja) デコーダのリセットによるldpcトラッピング集合の克服
US8806307B2 (en) Interruption criteria for block decoding
KR101621573B1 (ko) 복잡도를 줄인 ldpc 디코더
US8504895B2 (en) Using damping factors to overcome LDPC trapping sets
JP5177767B2 (ja) ガロア体gf(q)におけるldpc符号を復号する方法および機器
US9385753B2 (en) Systems and methods for bit flipping decoding with reliability inputs
US8504890B2 (en) Scheduling for LDPC decoding
CN107370490B (zh) 结构化ldpc的编码、译码方法及装置
RU2450442C2 (ru) Способ и устройство для кодирования и декодирования канала в системе связи с использованием кодов с низкой плотностью проверок на четность
KR101286858B1 (ko) 저밀도 패리티 검사 부호를 위한 고속 복호 방법
WO2018045788A1 (en) Partial sum computation for polar code decoding
CN109889208A (zh) Navdat中基于归一化最小和算法的ldpc信道译码方法
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) 解碼器
JP2020504505A (ja) データ送信方法、データ受信方法、送信デバイス、受信デバイス、及び無線通信システム
TW202203238A (zh) 使用預測性量值映射以用於準循環低密度奇偶校驗碼之垂直分層解碼之方法及設備

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