KR101610727B1 - Ldpc 선택적 디코딩 스케줄링의 구현 - Google Patents

Ldpc 선택적 디코딩 스케줄링의 구현 Download PDF

Info

Publication number
KR101610727B1
KR101610727B1 KR1020127029196A KR20127029196A KR101610727B1 KR 101610727 B1 KR101610727 B1 KR 101610727B1 KR 1020127029196 A KR1020127029196 A KR 1020127029196A KR 20127029196 A KR20127029196 A KR 20127029196A KR 101610727 B1 KR101610727 B1 KR 101610727B1
Authority
KR
South Korea
Prior art keywords
group
check node
ldpc
check
decoding
Prior art date
Application number
KR1020127029196A
Other languages
English (en)
Other versions
KR20130050937A (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 KR20130050937A publication Critical patent/KR20130050937A/ko
Application granted granted Critical
Publication of KR101610727B1 publication Critical patent/KR101610727B1/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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices

Landscapes

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

Abstract

데이터를 디코딩하기 위한 방법이 개시된다. 상기 방법은 저-밀도 패리티 검사(LDPC) 행렬을 각각이 하나 이상의 검사 노드 계층들을 포함하는 복수의 그룹들로 분할하는 단계를 포함한다. 상기 방법은 적어도 부분적으로 비용 함수에 기초하여 상기 그룹들 중 하나를 선택하는 단계를 추가로 포함하고, 상기 비용 함수는 가변 노드와 연관된 정보, 또는 검사 노드와 연관된 정보, 또는 둘 모두에 적어도 부분적으로 기초한다. 상기 방법은 상기 선택된 그룹에 대한 LDPC 계층화된 디코딩을 수행하는 단계를 추가로 포함한다.

Description

LDPC 선택적 디코딩 스케줄링의 구현{IMPLEMENTATION OF LDPC SELECTIVE DECODING SCHEDULING}
다른 출원들에 대한 상호 참조
본 출원은 모든 목적들을 위해 참조로서 여기에 통합되는, 2010년 4월 9일에 출원된 LDPC 선택적 디코딩 스케줄링의 구현(IMPLEMENTATION OF LDPC SELECTIVE DECODING SECHDULING)으로 명명된 미국 가 특허 출원 제 61/342,141호(대리인 문서 번호 LINKP061+)에 대한 우선권을 주장한다.
저-밀도 패리티-검사(Low-density parity-check; LDPC) 코드들은 하나의 유형의 에러 정정 코드이다. LDPC 코드들은 하드 디스크 드라이브들 또는 플래시 드라이브들과 같은, 저장 매체로 기록되는 데이터를 인코딩하기 위해 점차 대중적이게 되고 있다.
다른 메시지-전달 스케줄링 방법들, 예로서, 플러딩 스케줄링(flooding scheduling)과 비교할 때, LDPC 계층화 디코딩은 반복들의 수에 관하여 보다 양호한 수렴 속도(convergence speed) 및 보다 양호한 디코딩 성능을 가진다. 그러므로, LDPC 계층화 디코딩을 위한 기술들을 개발하는 것이 바람직할 것이다.
본 발명은 데이터를 디코딩하기 위한 방법을 제공하고, 상기 데이터를 디코딩하기 위한 방법은: 저-밀도 패리티 검사(LDPC) 행렬을 각각이 하나 이상의 검사 노드 계층들을 포함하는 복수의 그룹들로 분할하는 단계; 비용 함수에 적어도 부분적으로 기초하여 상기 그룹들 중 하나를 선택하는 단계로서, 상기 비용 함수는 가변 노드와 연관된 정보, 또는 검사 노드와 연관된 정보, 또는 둘 모두에 적어도 부분적으로 기초하는, 상기 선택 단계; 및 상기 선택된 그룹에 대해 LDPC 계층화 디코딩을 수행하는 단계를 포함한다.
본 발명의 다양한 실시예들이 다음의 상세한 설명 및 첨부한 도면들에 개시된다.
도 1은 데이터를 디코딩하기 위한 프로세스의 일 실시예를 도시한 흐름도.
도 2는 검사 노드들의 그룹들의 몇몇 실시예들을 도시한 도면.
도 3은 왜곡된 LDPC 인코딩된 데이터의 후속 프로세싱을 위한 프로세스의 일 실시예를 도시한 흐름도.
도 4 및 도 5는 비용 함수에 기초하여 선택적인 순서로 처리되는 검사 노드들의 그룹의 일 실시예를 도시한 도면들.
도 6a 및 도 6b는 검사 노드와 연관된 입력 정보로서 취한 비용 함수를 이용하는 일 실시예를 도시한 도면들.
도 7은 가변 노드들과 연관된 신뢰성 값들의 일 실시예를 도시한 도면.
도 8은 검사 노드들의 그룹을 선택하기 위해 비용 함수를 이용하도록 구성된 에러 정정 디코더를 포함하는 디스크 드라이브 시스템의 일 실시예를 도시한 도면.
도 9는 비용 함수에 기초하여 검사 노드들의 그룹을 선택하도록 구성된 시스템의 일 실시예를 도시한 도면.
도 10은 비용 함수를 평가하고 상기 평가(들)에 기초하여 검사 노드들의 그룹을 선택하도록 구성된 비용 함수 평가기의 일 실시예를 도시한 도면.
도 11은 비용 함수에 기초하여 선택적인 순서로 검사 노드들의 그룹을 처리하기 위한 검사 노드 메모리 블록(1102), 선택적 계층화 디코딩 스케줄러(1104), 및 LDPC 계층화 디코더(1106)를 포함하는 시스템(1100)의 일 실시예를 도시한 도면.
도 12는 복수의 검사 노드 계층들의 그룹들로 분할된 LDPC 행렬(1200)의 일 실시예를 도시한 도면.
도 13은 선택적 계층화 디코딩 스케줄링의 대표적인 일 실시예를 도시한 도면.
도 14는 선택적 계층화 디코딩 스케줄링의 제 2 대표적인 실시예를 도시한 도면.
본 발명은 프로세스; 장치; 시스템; 물질의 구성; 컴퓨터 판독가능한 저장 매체상에 구현된 컴퓨터 프로그램 제품; 및/또는 프로세서에 결합된 메모리 상에 저장되고/저장되거나 그것에 의해 제공된 명령들을 실행하도록 구성된 프로세서와 같은, 프로세서를 포함하여, 다수의 방식들로 구현될 수 있다. 본 명세서에서, 이들 구현들, 또는 본 발명이 취할 수 있는 임의의 다른 형태가 기술들로서 언급될 수 있다. 일반적으로, 개시된 프로세스들의 단계들의 순서는 본 발명의 범위 내에서 변경될 수 있다. 달리 서술되지 않는다면, 태스크를 수행하도록 구성되는 바와 같이 설명된 메모리 또는 프로세서와 같은 구성요소는 상기 태스크를 수행하기 위해 제조되는 특정 구성요소 또는 주어지 시간에 상기 태스크를 수행하도록 임시로 구성되는 일반적인 구성요소로서 구현될 수 있다. 여기에 이용된 바와 같이, 용어 '프로세서'는 컴퓨터 프로그램 명령들과 같이, 데이터를 처리하도록 구성된 하나 이상의 디바이스들, 회로들, 및/또는 프로세싱 코어들을 나타낸다.
다양한 실시예들에서, 여기에 설명된 기술들은 다양한 시스템들 또는 형태들로 구현된다. 몇몇 실시예들에서, 상기 기술들은 주문형 반도체(ASIC) 또는 필드-프로그래밍가능한 게이트 어레이(FPGA)로서 하드웨어로 구현된다. 몇몇 실시예들에서, 프로세서가 여기에 설명된 기술들을 설명하기 위해 명령들을 제공받거나 그것으로 로딩되는, 상기 프로세서(예로서, ARM 코어와 같은 내장된 것)가 이용된다. 몇몇 실시예들에서, 상기 기술은 컴퓨터 판독가능한 저장 매체에 구현되고 컴퓨터 명령들을 포함하는 컴퓨터 프로그램 제품으로서 구현된다.
본 발명의 하나 이상의 실시예들의 상세한 설명이 본 발명의 원리들을 도시하는 첨부한 도면들과 함께 아래에 제공된다. 본 발명은 이러한 실시예들과 관련되어 설명되지만, 본 발명은 임의의 실시예에 한정되지 않는다. 본 발명의 범위는 단지 청구항들에 의해 제한되고 본 발명은 다수의 대안들, 변경들, 및 등가물들을 포함한다. 다수의 특정 상세들은 본 발명의 완전한 이해를 제공하기 위해 다음의 설명에 제시된다. 이들 상세들은 예를 위해 제공되고 본 발명은 이들 특정 상세들의 일부 또는 모두 없이 청구항들에 따라 실시될 수 있다. 명료함을 위해, 본 발명에 관련된 기술 분야들에 알려져 있는 기술 재료는 본 발명이 불필요하게 모호해지지 않도록 상세히 설명되지 않는다.
도 1은 데이터를 디코딩하기 위한 프로세스의 일 실시예를 도시한 흐름도이다. 도시된 상기 예에서, 왜곡된 LDPC(저-밀도 패리티 검사) 인코딩된 데이터가 디코딩된다. LDPC 코드들은 에러 정정 코드들의 클래스이다. LDPC 코드는 드문 패리티-검사 행렬(H)의 널 공간(null space)으로서 규정된다. LDPC 코드워드(L=(l0, l1,..., ln -1))는 H의 검사 노드들 모두를 만족시킬 수 있는 널 공간에서의 벡터이다. LDPC 코드는 메시지 전달 알고리즘(SPA(합-곱 알고리즘), 최소-합, 등)을 이용함으로써 비교적 양호한 에러 성능을 달성할 수 있다.
LDPC 코드의 패리티-검사 행렬(H)은 또한 태너 그래프(Tanner Graph)로 불리우는, 비트파티트 그래프(bitpartite graph)와 관련된다. LDPC 코드의 m×n 패리티-검사 행렬(H)을 고려할 때, 상기 태너 그래프(G)의 노드들은 두 개의 세트들의 노드들(V, C)로 분할된다. V는 H의 컬럼들에 대응하는 n개의 가변 노드들(vj)(또는 좌측 노드들), 및 H의 로우들에 대응하는 m개의 검사 노드들(ci)(또는 우측 노드들)을 포함한다. 가변 노드(vj)는 상기 패리터-검사 매크릭스(H)의 대응 엔트리(hi,j)가 비-제로인 경우에만 검사 노드(ci)에 접속된다. G에서의 노드의 정도는 그것에 접속된 에지들의 수로서 규정된다. 가변 노드의 정도는 단순히 H의 대응하는 컬럼의 가중치와 등가(equal)이고, 검사 노드의 정도는 단순히 H의 대응하는 로우의 가중치와 등가이다.
100에서, 비용 함수가 획득된다. 몇몇 실시예들에서, 비용 함수(f)는 각각의 가변 노드와 연관된 왜곡된 신뢰성 값 및 상기 접속된 검사 노드들로부터의 업데이트된 메시지와 같이, 가변 노드들과 연관된 입력 정보로서 수신된다. 몇몇 실시예들에서, f는 검사 노드들의 각각의 그룹 내의 만족되지 않은 검사 노드들의 수와 같은, 검사 노드들 정보의 함수이다. 몇몇 실시예들에서, 비용 함수는 검사 노드들 및 가변 노드들 정보 둘 모두의 함수이다. 몇몇 실시예들에서, 비용 함수는 또한 몇몇 특별한 제약들(예로서, 검사 노드들의 동일한 그룹은 동일한 반복에서 결코 두 번 처리되지 않으며 및/또는 검사 노드들의 동일한 그룹은 상이한 반복들에서조차 결코 연속으로 처리되지 않는다)을 포함할 것이다.
비용 함수는 102에서 검사 노드들과 연관된 정보 및/또는 가변 노드들과 연관된 정보를 이용하여 복수의 검사 노드들의 그룹들 각각에 대해 평가된다. 특정 비용 함수들의 몇몇 예들은 이하에 추가로 상세히 설명된다. 상기 검사 노드들의 그룹들 중 하나는 104에서 평가된 비용 함수들에 적어도 부분적으로 기초하여 선택된다. 예를 들면, 몇몇 실시예들에서, 상기 평가된 비용 함수를 최소화/최대화하는 그룹이 선택된다. 상기 비용 함수를 최소화하는 하나 이상의 그룹이 존재한다면, 또 다른 비용 함수가 추가 선택을 행하기 위해 이용될 수 있다. 상기 비용 함수들 모두를 평가한 후 남아있는 다수의 그룹들이 여전히 존재한다면, 상기 그룹들 중 하나는 몇몇 실시예들에서 임의로 선택된다.
106에서, 에러 정정 디코딩과 관련된 프로세싱은 선택된 그룹의 검사 노드들과 연관된 데이터에 대해 수행된다. 몇몇 실시예들에서, 이것은 검사 노드 업데이트(예로서, 다른 접속된 가변 노드들(vj'(j'≠j)) 모두로부터의 인입 메시지들에 기초하여 각각의 접속된 가변 노드(vj)로 송출 메시지를 선택된 그룹에서의 각각의 검사 노드에 대해 계산함으로써) 및 가변 노드 업데이트(예로서, 상기 선택된 그룹에서 임의의 검사 노드에 접속된 각각의 가변 노드(vj)에 대해, 다른 접속된 검사 노드들(ci'(i'≠i)) 모두로부터의 인입 메시지들에 기초하여 각각의 접속된 검사 노드(ci)에 그것의 송출 메시지를 계산함으로써)을 수행하는 것을 포함한다.
여기에 설명된 기술을 이용하는 것에 대한 하나의 이득은 에러 정정 디코딩(적어도 몇몇 경우들에서)이 몇몇 다른 기술들보다 짧은 양의 시간에 완료된다는 것이다. 예를 들면, 각각의 그룹이 단일 검사 노드를 포함하는, 검사 노드들의 m개의 그룹들이 존재한다고 가정하자. 항상 그룹 1, 그룹 2,..., 그룹 m의 순서로 검사 노드들의 그룹들을 처리하는 HSS 프로세싱 기술과 비교하여, 여기에 설명된 기술은 보다 빨리 끝낼 수 있다. 예를 들면, 몇몇 에러 또는 잡음이 그룹 m에 남아있다면(즉, 반복에서 HSS 기술에 의해 처리될 마지막 그룹), 여기에 설명된 기술은 HSS 기술이 하기 전에 그룹 m과 연관된 데이터를 선택하고 처리할 가능성이 높을 것이다.
도 2는 검사 노드들의 그룹들의 몇몇 실시예들을 도시한 도면이다. 도시된 도면들에서, 도 1에 도시된 예시적인 프로세스는 비용 함수를 이용하여 검사 노드들의 그룹을 선택하기 위해 이용된다. 도시된 제 1 예에서(도면(210)), 6개의 가변 노드들이 존재하면, 그 각각의 가면 노드는 (총 4개 중) 2개의 검사 노드들에 접속된다. 상기 4개의 검사 노드들의 각각은 차례로 총 6개 중 3개의 가면 노드들에 접속된다. 상기 접속들은 상기 왜곡된 LDPC 인코딩된 데이터의 에러 정정 디코딩 동안 정보의 전파를 제어한다.
도면(210)에서, 제 1 그룹의 검사 노드들(그룹 1)은 3개의 검사 노드들을 포함한다: 200a 내지 200c. 제 2 그룹의 검사 노드들(그룹 2)은 단일 검사 노드를 포함한다: 200d. 각각의 그룹에 대해, 비용 함수가 평가된다. 그룹 1에 대해, 상기 평가된 비용 함수는 3의 값을 가진다. 그룹 2에 대해, 상기 평가된 비용 함수는 5의 값을 가진다. 이 예에서, 최저 평가된 비용 함수를 가진 그룹이 선택되고(즉, 그룹 1), 에러 정정 프로세싱이 상기 선택된 그룹(즉, 이 예에서 그룹 1)과 연관된 등식들 또는 함수들 상에서 수행된다.
도면(220)은 상이한 그룹들의 검사 노드들을 가진 도면(210)에서와 같이 동일한 가변 노드들, 검사 노드들, 및 접속들을 도시한다. 도면(220)에서, 4개의 그룹들이 있으며, 각각의 그룹은 단일 검사 노드를 포함한다. 즉, 그룹 A는 검사 노드(200a)를 포함하고, 그룹 B는 검사 노드(200b)를 포함하고, 그룹 C는 검사 노드(200c)를 포함하고, 그룹 D는 검사 노드(200d)를 포함한다.
도시된 4개의 그룹들 각각에 대해, 비용 함수가 평가된다. 상기 평가된 비용 함수의 값들은 각각 7, 4, 1, 및 4이다. 이 예에서, 최고 평가된 비용 함수를 가진 그룹이 선택되고, 에러 정정 디코딩이 그룹 A와 연관된 함수(들)/등식(들) 상에서 수행된다.
도면(210)에 도시된 상기 선택된 그룹들을 이용하여, 검사 노드 업데이팅(도 1에서의 106에서 몇몇 실시예들에 이용된)의 보다 상세한 예가 아래에 도시된다. 도면(210)에서, 상기 선택된 그룹은 검사 노드들(200a 내지 200c)을 포함한다. 검사 노드 업데이팅 동안, 상기 선택된 그룹에서의 각각의 검사 노드에 대해, 송출 메시지가 모든 다른 접속된 가변 노드들로부터의 인입 메시지들에 기초하여 각각 접속된 가변 노드에 대해 결정된다. 검사 노드(200d)는 그것이 상기 선택된 그룹에 있지 않기 때문에 아래의 표에 포함되지 않는다는 것을 주의하자.
Figure 112012091353817-pct00001
도면(210)에 도시된 상기 선택된 그룹들을 이용하여, 가변 노드 업데이팅(도 1에서의 106에서 몇몇 실시예들에 이용된)의 보다 상세한 예가 이하에 도시된다. 몇몇 실시예들에서, 검사 노드 업데이팅이 먼저 수행되고, 그 후 가변 노드 업데이팅이 수행된다. 가변 노드 업데이팅 동안, 상기 선택된 그룹에서의 검사 노드에 접속된 각각의 가변 노드에 대해(이 예에서, 상기 가변 노드들의 모두는 상기 선택된 그룹에서의 검사 노드에 접속된다), 송출 메시지는 모든 다른 접속된 검사 노드들로부터의 인입 메시지들에 기초하여 접속된 검사 노드로 전송되도록 결정된다.
Figure 112012091353817-pct00002
상기 예에 도시된 바와 같이, 검사 노드들의 그룹은 하나 이상의 검사 노드들을 포함할 수 있다. 몇몇 실시예들에서, 각각의 그룹은 동일한 수의 검사 노드들(예로서, 도면(220) 참조)을 가지며; 다른 실시예들에서, 상기 그룹들은 그것들에 상이한 수들의 검사 노드들을 가진다(예로서, 도면(210) 참조).
도 3은 왜곡된 LDPC 인코딩된 데이터의 후속 프로세싱을 위한 프로세스의 일 실시예를 도시한 흐름도이다. 도시된 상기 예에서, 도 1에 도시된 프로세스가 계속된다. 이러한 도면에 도시된 상기 프로세싱의 몇몇은 도 1에 도시된 프로세싱과 유사하다. 예를 들면, 단계들(102, 308) 모두는 비용 함수를 평가하고, 단계들(104, 310)은 평가된 비용 함수에 기초하여 검사 노드들의 그룹을 선택하고, 단계들(106, 312)은 에러 정정 디코딩에 관한 프로세싱을 수행한다. 몇몇 실시예들에서, (예로서, 단일) 하드웨어 구성요소 또는 다른 프로세서는 도 1 및 도 3에서의 유사한 단계들을 수행하기 위해 이용된다.
300에서, 에러 정정 디코딩이 완료되는지 여부가 결정된다. 몇몇 실시예들에서, 이것은 상기 패리티 검사들 모두가 만족되는지를 검사하는 것을 포함한다. 일 예에서, 이것은 상기 접속된 검사 노드들(ci) 모두로부터의 인입 메시지들 및 채널 정보에 기초하여 각각의 가변 노드(vj)에 대한 경 결정(hard decision)(
Figure 112012091353817-pct00003
)을 계산하는 것을 포함한다. 상기 결정들(
Figure 112012091353817-pct00004
)이 상기 검사 노드들 모두를 만족한다면, 에러 정정 디코딩은 성공적이며 상기 디코딩된 데이터가 출력된다. 몇몇 실시예들에서, 디코딩은 (예로서, 사전 규정된) 최대 수의 반복들이 도달되면 종료한다. 여기에 이용된 바와 같이, 반복은 (x개의 검사 노드들의 그룹들에 대해) x개의 선택들을 포함한다. 따라서, x개의 그룹들이 존재한다면, 완전한 또는 전체 반복에서 x개의 선택들이 존재한다. 예를 들면, 도 2에서의 도면(210)에서, 전체 또는 완전한 반복은 2개의 선택들(하나는 그룹 1을 위한 것이고 하나는 그룹 2를 위한 것)을 포함하고, 도면(220)에서, 완전하거나 전체 반복은 4개의 선택/프로세싱의 인스턴스들(그룹 A 내지 그룹 D를 위해 각 하나)을 포함한다.
임의의 나머지 그룹들이 존재하는지가 304에서 결정된다. 예를 들면, 도 2에서 도면(210)에서, 그룹 1 및 그룹 2 둘 모두가 선택되고 처리된다면, 적어도 이러한 반복 동안 나머지 그룹들은 존재하지 않는다. 나머지 그룹들이 존재하지 않는다면, 상기 프로세스는 상기 미리-결정된 최대 수의 반복이 311에 도달된다면 디코딩을 종료할 것이다. 그렇지 않다면, 상기 프로세스는 도 1에서의 102에서 비용 함수를 평가할 것이다(예로서, 새로운 반복이 시작한 이래 모든 그룹들에 대해). 그렇지 않다면(즉, 현재 반복 동안 남아있는 적어도 하나의 그룹이 존재한다면) 비용 함수는 308에서 나머지 그룹들에 대해 평가된다. 몇몇 실시예들에서, 반복 동안 단지 하나의 남아있는 검사 노드들의 그룹이 존재한다면, 단계(308)는 건너뛰어지며 단일의 나머지 그룹이 비용 함수를 평가하지 않고 선택된다. 310에서, 나머지 그룹들 중 하나는 상기 평가된 비용 함수들에 적어도 부분적으로 기초하여 선택된다. 에러 정정 디코딩에 관련된 프로세싱이 312에서 선택된 그룹의 검사 노드들과 연관된 데이터에 대해 수행된다.
다음의 도면은 도 1 및 도 3에 설명된 예시적인 프로세스들을 대표적인 데이터에 적용한다.
도 4 및 도 5는 비용 함수에 기초하여 선택적인 순서로 프로세싱되는 검사 노드들의 그룹의 일 실시예를 도시한다. 도면(400)에서, 도 1의 예시적인 프로세스는 그룹들(401a 내지 401d)에 대한 비용 함수의 평가에 기초하여 검사 노드들(401a)의 그룹을 선택하기 위해 이용된다. 이 예에서, 그룹 A 내지 그룹 D에 대한 상기 평가된 비용 함수는 (각각) 7, 4, 1, 및 4이며 (적어도 이 예에서) 최고 평가된 비용 함수를 가진 그룹이 선택된다(즉, 그룹 A).
도면(400)에서 그룹(401a)을 선택하고 상기 그룹과 연관된 데이터에 대해 프로세싱을 수행한 후, 에러 정정 프로세싱은 완료되지 않는다(예로서, 하나 이상의 패리티 검사들이 만족되지 않기 때문에). 예를 들면, 도 3에서 단계(300)를 참조하자. 다음의 그룹이 그 후 도면(402)에서 선택된다. 검사 노드들의 그룹은 단지 주어진 반복 동안 기껏해야 한 번 선택될 수 있기 때문에, 그룹(401a)은 도면(402)에 도시된 시간 포인트에서 선택될 자격이 없다. 몇몇 실시예들에서, 비용 함수는 그것들이 선택될 자격이 없기 때문에 비-자격 그룹들에 대해 평가되지 않는다.
상기 비용 함수는 제 2 시간 동안 평가되고, 적어도 이 예에서 각각의 그룹에 대한 상기 평가된 비용 함수는 도면들(400, 402)에서 상이하다. 도면(402)에서, 그룹 B 내지 그룹 D에 대한 상기 평가된 비용 함수는 각각 3, 0, 및 6이다. 그룹 D는 그것이 최고 평가된 비용 함수를 갖기 때문에 선택된다.
에러 정정 프로세싱은 수행되지 않으며(예로서, 하나 이상의 패리티 검사들이 여전히 만족되지 않는다), 도면(404)에서 상기 비용 함수는 도 5에서 다시 평가된다. 그룹 B는 그것이 그룹 C(2)와 비교하여 보다 높게 평가된 비용 함수(3)를 갖기 때문에 선택된다. 도면(406)에서, 단지 그룹 C가 모든 다른 그룹들(즉, 그룹 A, 그룹 B, 그룹 D)이 선택되었기 때문에 남아있다. 몇몇 실시예들에서, 상기 비용 함수는 검사 노드들의 단지 하나의 그룹이 남아있거나 그렇지 않은 경우 자격이 있을 때 평가되지 않는다.
도 6a 및 도 6b는 검사 노드와 연관된 입력 정보로서 취해진 비용 함수를 이용하는 일 실시예를 도시한다. 도시된 상기 예에서, 가장 적은 수의 만족되지 않은 검사 노드들을 가진 검사 노드들의 그룹이 선택된다. 몇몇 실시예들에서, 이러한 기술은 비교적 낮은 신호-대-잡음 비(SNR)가 존재하는 애플리케이션들 또는 환경들에 이용된다.
도면(600)은 제 i 반복의 제 1 선택을 도시한다. 이 예에서, 만족되지 않은 검사 노드들(예로서, 상기 검사 노드와 연관된 패리티 검사는 통과되지 않는다)은 "U"를 갖고 표시된다. 그룹들(601c, 601d)은 가장 적은 수의 만족되지 않은 검사 노드들을 가지며(즉, 0개의 만족되지 않은 검사 노드들), 그 사이에 타이(tie)가 존재한다. 그룹(601c)이 이 예에서 선택된다. 상기 반복의 제 2 선택(예로서, 선택된 그룹(601c)과 연관된 데이터의 프로세싱이 완료된 후)이 도면(602)에 도시된다. 도면(602)에서, 그룹(601d)은 가장 적은 수의 만족되지 않은 검사 노드들을 가지며 선택된다.
제 i 반복의 제 3 선택이 도면(604)에 도시된다. 상기 선택 동안, 그룹들(601a, 601b)은 상기 제 i 반복에서 아직 선택되지 않았으며, 그룹(601a)은 그룹(601b)에서의 검사 노드가 만족되지 않은 검사 노드이기 때문에 선택된다.
도 6b는 상기 제 i 반복의 제 4 선택을 도시하는 도면(606)을 포함한다. 그룹(601b)은 남아있는 유일한 그룹이며 선택된다. 새로운 반복이 도면(608)에서 시작한다. 도면(608)에서, 그룹들(601b, 601d)은 둘 모두가 최소 수의 만족되지 않은 검사 노드들을 가지기 때문에 (만족되지 않은 검사 노드들의 수에 엄격하게 기초하여) 타이된다. 따라서, 적어도 이 예에서 그룹(601d)이 임의로 선택된다. 몇몇 실시예들에서, 그룹(601d)은 비연속적인 프로세싱이 동일한 그룹의 검사 노드들 상에서 수행되는 제약(예로서, 비용 함수에서) 때문에, 유일한 자격 있는 선택이다. 도면(601)에 도시된 제 (i+1) 반복의 제 2 선택에서, 그룹들(601a 내지 601c)은 상기 제 (i+1) 반복에서 아직 선택되지 않았으며, 그룹(601b)은 그것이 최소 수의 선택되지 않은 검사 노드들을 갖기 때문에 선택된다.
도 7은 가변 노드들과 연관된 신뢰성 값들의 일 실시예를 도시한 도면이다. 몇몇 실시예들에서, 가변 노드와 연관된 정보(신뢰성 값과 같은)는 검사 노드들의 그룹을 선택하기 위해 이용된 비용 함수를 평가하기 위해 이용된다. 몇몇 예들은 이하에 추가로 상세히 설명된다. 이하에 설명된 상기 예에서, 신뢰성 값은 양의 값 또는 임의 값일 수 있으며, 이하의 예시적인 프로세스들은 상기 신뢰성 값들의 절대 값(예로서, 크기 또는 진폭)을 이용한다.
제 1 예에서, 상기 신뢰성 값들의 평균은 먼저 모든 그룹들에 대해 결정되고, 그 후 가장 큰 평균을 가진 그룹이 선택된다. 도 7에 도시된 상기 신뢰성 값들을 이용하여, 이것의 예는 이하에 도시된다. 이 예에서, 그룹 C(801c) 및 그룹 D(801d) 사이에 타이가 존재한다. 이 예에서(및 다른 실시예들에서), 상기 그룹들 중 하나를 (예를 들면,) 랜덤하게 선택하는 것, 디폴트 그룹(예로서, 제 1/마지막 그룹)을 선택하는 것, 그것이 마지막으로 선택된 이래 가장 긴 그룹을 선택하는 것을 포함하는 임의의 타이 브레이커(tie-breaker)가 이용될 수 있다.
Figure 112012091353817-pct00005
제 2 예에서, (예로서, 사전 설정된) 임계값 아래의 최저 수의 신뢰성 값들을 가진 그룹이 선택된다. 이하의 표는 도 7에 도시된 데이터 및 7의 임계값을 이용하는 일 예를 도시한다. 이러한 기술을 이용하고 상기 예시적인 신뢰성 값들을 갖는 그룹 C(801c)가 선택된다.
Figure 112012091353817-pct00006
제 3 예에서, 가장 작은 신뢰성들 중 가장 큰 값을 가진 그룹이 선택된다. 즉, 처음에, 각각의 그룹에 대한 가장 작은 신뢰성이 선택되고 그 후 이들 값들 중 가장 큰 값을 가진 그룹이 선택된다. 이하의 표는 그룹 7로부터 신뢰성 값들을 이용한 일 예를 도시한다. 이러한 기술을 이용하고 예시적인 신뢰성 값들을 갖는 그룹 C(801c)가 선택된다.
Figure 112012091353817-pct00007
몇몇 실시예들에서, 표 3 내지 표 5에 상기 도시된 3개의 기술들이 SNR이 비교적 낮은 애플리케이션들 또는 경우들에서 이용된다. 몇몇 이러한 낮은 SNR 환경들에서, 많은 작은 에러들이 존재하고, 상술된 기술들이 "열악한(bad)" 데이터 또는 정보보다 앞서 보다 신뢰성 있는 데이터 또는 정보를 확산시키는 쪽으로 향해지고 있다.
다양한 실시예들에서, 상기 예들은 수정될 수 있다. 예를 들면, 제 1 예의 수정에서, 최소 평균 신뢰성 값들을 가진 그룹이 선택된다. 또 다른 예에서, 현재 임계값 아래의 신뢰성 값을 가진 가변 노드들 중 가장 큰 수를 가진 그룹들이 선택된다. 또 다른 예에서, 각각의 그룹에 대해, 최소 신뢰성 값이 선택되고, 그 후 상기 신뢰성 값들 중 가장 작은 값을 가진 그룹이 선택된다(즉, 최소 신뢰성 값들 중 최소). 또 다른 예에서, 만족되지 않은 검사 노드들 중 가장 큰 수를 가진 그룹이 선택된다. 몇몇 실시예들에서, 상기 설명된 예들은 단지 매우 작은 수의 에러들이 존재하도록 SNR이 비교적 높을 때 이용된다. 그러므로, 상기 에러 가변 노드들이 연관되고 정정될 수 있는 검사 노드들의 그룹을 선택하기 위해 보다 많은 기회가 존재한다.
도 8은 검사 노드들의 그룹을 선택하기 위해 비용 함수를 이용하도록 구성된 에러 정정 디코더를 포함하는 디스크 드라이브 시스템의 일 실시예를 도시한 도면이다. 명료함을 위해, 몇몇 구성요소들이 반드시 도시되는 것은 아닐 것이다. 도시된 상기 예에서, 인코딩된 데이터(예로서, LDPC 코드를 이용하여 인코딩된)는 하나 이상의 디스크들(도시되지 않음) 상에 저장된다. 아날로그 데이터는 아날로그-디지털 변환기(ADC)(800)로 전달되고, 디지털 데이터는 ADC(800)로부터 필터(802)로 전달된다. 상기 필터링된 데이터는 차례로 에러 정정 디코더(806)로 결합되는 소프트 출력 검출기(804)에 전달된다. 에러 정정 디코더(806)는 비용 함수에 기초하여 검사 노드들의 그룹을 선택하고 상기 선택된 그룹과 연관된 데이터를 처리하도록 구성된다.
이러한 도면에서, 저장 애플리케이션이 도시된다. 몇몇 다른 실시예들에서, 비용 함수를 이용하여 검사 노드들의 그룹을 선택하도록 구성된 에러 정정 디코더가 몇몇 다른 시스템에 포함되거나 저장장치 이외의 몇몇 다른 애플리케이션 또는 환경에 이용된다.
도 9는 비용 함수에 기초하여 검사 노드들의 그룹을 선택하도록 구성된 시스템의 일 실시예를 도시한 도면이다. 몇몇 실시예들에서, 도 8로부터 에러 정정 디코더(806)는 도시된 시스템을 포함한다. 다양한 실시예들에서, 이 도면에 도시된 상기 시스템은 임의의 적절한 구성요소들을 이용하여 구성된다. 예를 들면, 몇몇 실시예들에서, 범용 프로세서가 여기에 설명된 기능들을 수행하기 위해 구성된다.
도시된 상기 예에서, 비용 함수 평가기(902)는 태너 그래프 행렬(904)로부터 적절한 가변 및/또는 검사 노드 정보를 획득하고; 이러한 정보는 비용 함수를 평가하기 위해 이용된다. 이러한 특정 예에서, 비용 함수 평가기(902)는 태너 그래프 행렬(904)에 대한 그룹을 특정하고, 관련된 가변 노드 및/또는 검사 노드 정보가 태너 그래프 행렬(904)로부터 전달된다. 태너 그래프 행렬(904)은 가변 노드들 및 검사 노드들 간의 접속들을 저장하고; 상기 특정 접속들은 이용된 특정 LDPC 코드에 의존할 것이다. 태너 그래프 행렬(904)은 또한 예를 들면, 상기 가변 노드들 및 검사 노드들에 관련된, 예를 들면, 어떤 검사 노드들이 만족되지 않는지(예로서, 패리티 검사에 기초하여)에 관련한 정보 및/또는 상기 가변 노드들과 연관된 신뢰성 값들을 저장한다.
다양한 실시예들에서, 다양한 비용 함수들이 이용되고, 획득된 특정 정보는 특정 비용 함수에 의존하여 변할 것이다. 몇몇 실시예들에서, 비용 함수 평가기(902)가 구성가능하다. 예를 들면, 비용 함수를 수신하거나 그 외 획득하기 위해 구성된 인터페이스를 포함할 수 있다. 몇몇 실시예들에서, 태너 그래프 행렬(904)로부터 획득된 특정 정보는 비용 함수 평가기(902)로 프로그래밍되거나 그 외 그것에 제공된 특정 비용 함수에 의존하여 변할 것이다.
상기 그룹들 모두(적절하다면)에 대한 비용 함수를 평가한 후, 상기 그룹들 중 하나가 선택되고 상기 선택 그룹으로서 비용 함수 평가기(902)에 의해 출력된다. 몇몇 실시예들에서, 비용 함수 평가기(902)는 단지 단일의 나머지 그룹이 존재한다면 상기 비용 함수를 평가하지 않도록 구성된다. 예를 들면, 하나의 그룹이 존재하고 그것이 반복의 제 1 선택이라면, 상기 그룹은 상기 비용 함수를 평가하지 않고 선택된다. 즉, 플러딩 스케줄은 특별한 경우이다.
상기 선택된 그룹은 비용 함수 평가기(902)로부터 메시지 업데이터(906)로 전달된다. 메시지 업데이터(906)는 선택된 그룹과 연관된 데이터에 대해 에러 정정 디코딩과 관련된 프로세싱을 수행한다. 예를 들면, 메시지 업데이터(906)는 상기 선택된 그룹과 관련된 태너 그래프 행렬(904)에 저장된 데이터에 대한 검사 노드 업데이트들 및/또는 가변 노드 업데이트들을 수행할 수 있다.
태너 그래프 행렬(904)에 저장된 정보를 업데이트한 후, 메시지 업데이터(906)는 "메시지 업데이트 완료" 신호를 패리티 검사기(908)로 전송한다. 패리티 검사기(908)는 모든 패리티 검사들이 태너 그래프 행렬(904)에 저장된 정보를 이용하여 만족되는지를 검사함으로써 에러 정정 디코딩이 완료되었는지 여부를 결정한다. 에러 정정이 완료되지 않았다면, 패리티 검사기(908)는 "디코딩 계속" 신호를 비용 함수들 평가기(902)로 전송하고 다음 그룹이 선택된다.
도 10은 비용 함수를 평가하고 상기 평가(들)에 기초하여 검사 노드들의 그룹을 선택하도록 구성된 비용 함수 평가기의 일 실시예를 도시한 도면이다. 몇몇 실시예들에서, 도 9에서의 비용 함수 평가기(902)가 도시된 바와 같이 구현된다. 이러한 특정 예에서, 상기 비용 함수는 연관된 가변 노드들에 대한 입력 신뢰성 값들로서 취한다. 다른 비용 함수들에 대해, 대응하는 비용 함수 평가기에 의해 수행된 함수들 및/또는 그것에 입력된 정보는 도시된 상기 예와 상이하다.
주어진 그룹에서 각각의 검사 노드에 대해, 상기 검사 노드에 접속되는 가변 노드들의 신뢰성 값들이 획득된다. 상기 신뢰성 값들의 평균은 평균화기(1000)에 의해 주어진 그룹에서의 각각의 검사 노드에 대해 결정된다. 그것의 대응하는 그룹과 함께 평균은 평균화기(1000)로부터 정보가 저장되는 저장장치(1002)에 전달된다. 평균화기(1000)가 저장장치(1002)에서의 선택된 그룹에서의 각각의 검사 노드에 대한 평균을 결정하고 저장한 후, 선택기(1004)는 상기 저장된 평균들을 액세스하고 가장 큰 저장된 평균을 가진 그룹을 선택하고; 상기 그룹은 상기 선택된 그룹으로서 출력된다. 몇몇 경우들에서, 타이가 존재하고 선택기(1004)는 타이 브레이킹을 수행하도록 구성된다. 예를 들면, 랜덤 그룹은 상기 타이 그룹들로부터 선택되고, 가장 긴 시간 동나 선택되지 않은 상기 타이 그룹, 또는 디폴트 그룹(예로서, 몇몇 순서로 첫번째/마지막 타이 그룹)이 선택된다.
몇몇 실시예들에서, 비용 함수에 기초한 선택적인 순서로 검사 노드들의 그룹들을 처리하는 것은 LDPC 계층화 디코딩에 적용될 수 있다. 이것은 여기에서 선택적 계층화 디코딩 스케줄링으로서 불리운다. LDPC 계층화 디코딩에서, 패리티-검사 행렬(H)은 복수의 수평 계층들을 포함한다. LDPC 계층화 디코딩은 디코딩 알고리즘을 층마다 적용함으로써 수행된다. 다른 메시지-전달 스케줄링 방법들, 예로서 플러딩 스케줄링에 비교될 때, LDPC 계층화 디코딩은 반복들의 수에 관하여 보다 양호한 수렴 속도 및 보다 양호한 디코딩 성능을 가진다.
LDPC 계층화 디코딩에서, 검사 노드 업데이트들 및 가변 노드 업데이트들은 층 단위로 수행된다. 상기 설명된 바와 같이, LDPC 코드는 드문 패리티 검사 행렬(H)에 의해 규정될 수 있다. 상기 정보 비트들을 표현하는 가변 노드들은 H의 컬럼들에 대응하고, 상기 행렬(H)에 대한 패리티-검사를 구현한 검사 노드들은 H의 로우들에 대응한다. LDPC 디코딩 동안, 메시지들은 상기 가변 노드들 및 상기 검사 노드들 사이에 전달된다. 특히, 검사 노드 업데이트 동안, 하나의 계층에서의 각각의 검사 노드에 대해, 상기 검사 노드로부터 각각의 접속된 가변 노드로의 송출 메시지는 모든 다른 접속된 가변 노드들로부터의 상기 검사 노드에 대한 인입 메시지들에 기초하여 결정된다. 가변 노드 업데이트 동안, 상기 계층에서의 검사 노드에 접속된 각각의 가변 노드에 대해, 상기 가변 노드로부터 각각의 접속된 검사 노드로의 송출 메시지는 모든 다른 접속된 검사 노드들로부터의 상기 가변 노드에 대한 인입 메시지들에 기초하여 결정된다. 통상적으로, 검사 노드 업데이트가 먼저 수행되고, 그 후 가변 노드 업데이트가 수행된다. 이러한 방식으로, 종료 조건이 도달될 때까지, 검사 노드 업데이트들 및 가변 노드 업데이트들이 층 단위로 수행된다.
예를 들면, 몇몇 기술들로, 제 1 계층 반복 동안, 이하의 표에 도시된 바와 같이 검사 노드 업데이트(다음 표에서 "C"로 표시된)가 제 i 계층에서 수행되고 가변 노드 업데이트(다음 표에서 "V"로 표시된)가 제 (i-1) 계층에서 수행된다. 다음 계층 반복(즉, 제 2 계층 반복) 동안, 검사 노드 업데이트가 제 (i+1) 계층상에서 수행되고 가변 노드 업데이터는 제 i 계층 상에서 수행된다. 검사 노드 업데이트는 먼저 특정 계층 상에서 수행되고, 그 후 가변 노드 업데이트가 다음 반복 동안 동일한 계층 상에서 수행된다.
계층 반복들
Figure 112012091353817-pct00008
선택적 계층화 디코딩 스케줄링에서, 검사 노드 계층들은 복수의 그룹들로 분할된다. 아래의 표를 참조하면, 다음에 처리될 그룹(및 그에 따라 계층)은 제 2 계층 반복 동안 순차적인 순서로 선택되는 것이 아니라 비용 함수에 기초하여 선택될 수 있으며, 검사 노드 업데이트는 제 (i+1) 계층이 아닌 계층, 예를 들면, 제 (k) 계층 상에서 수행될 수 있다. 그러나, 가변 노드 업데이트는 제 2 계층 반복 동안 여전히 제 i 계층 상에서 수행된다. 이것은 검사 노드 업데이트가 제 i 계층 반복 동안 제 i 계층 상에서 수행되고 가변 노드 업데이트는 제 2 계층 반복 동안 제 i 계층의 프로세싱을 계속하기 위해 수행되기 때문이다. 제 3 계층 반복 동안, 검사 노드 업데이트는 제 (j) 계층 상에서 수행되고, 가변 노드 업데이트는 상기 (k) 계층 상에서 수행된다.
계층 반복들
Figure 112012091353817-pct00009
도 11은 비용 함수에 기초하여 선택적인 순서로 검사 노드들의 그룹들을 처리하기 위한 검사 노드 메모리 블록(1102), 선택적 계층화 디코딩 스케줄러(1104), 및 LDPC 계층화 디코더(1106)를 포함하는 시스템(1100)의 일 실시예를 도시한 도면이다. 검사 노드 메모리 블록(1102)은 상이한 검사 노드 계층들을 위한 검사 노드 업데이트들(예로서, 검사 노드로부터 가변 노드로 전송된 메시지들)의 결과들을 저장한다. 선택적 계층화 디코딩 스케줄러(1104)는 하나 이상의 비용 함수들을 획득하고, 상기 비용 함수(들)를(을) 평가하고, 다음에 디코딩될 그룹을 선택하고, 상기 선택된 그룹을 디코딩될 LDPC 계층화 디코더(1106)로 전송한다. LDPC 계층화 디코더(1106)는 LDPC 계층화 디코딩을 구현한다. 시스템(1100)은 이하에 보다 상세히 설명될 바와 같이 하나의 계층에서 또 다른 계층으로 검사 노드 업데이트들을 선택적 계층화 디코딩 및 스위칭을 하기 위해 이용될 수 있다.
검사 노드 메모리 블록(1102)은 상이한 검사 노드 계층들을 위한 검사 노드 업데이트들의 결과들을 저장한다. 예를 들면, 상기 결과들은 검사 노드 업데이트 동안 검사 노드로부터 가변 노드로 전송된 메시지들을 포함한다. 검사 노드 메모리 블록(1102)은 선택적 계층화 디코딩 스케줄러(1104)가 디코딩을 위해 LDPC 계층화 디코더(1106)로 전송할 그룹을 선택할 수 있도록 복수의 계층들의 그룹들로 분할된다.
도 12는 검사 노드 계층들의 복수의 그룹들로 분할된 LDPC 행렬(1200)의 일 실시예를 도시한 도면이다. 도 12에 도시된 바와 같이, LDPC 행렬(1200)은 5개의 그룹들을 포함하고, 각각의 그룹은 4개의 계층들을 가지며, 따라서 LDPC 행렬(1200)은 총 20개의 검사 노드 계층들을 가진다.
예를 들면, 도 12에서 LDPC 행렬(1200)은 준-사이클 LDPC 코드(QC-LDPC 코드)를 위한 패리티-검사 행렬(H)일 수 있다. 각각의 정사각형(1202)은 순환 행렬이며, 이것은 정방 행렬이다. 예를 들면, 빈 정사각형(1202)은 제로 행렬이며, "1"로 표시된 정사각형(1202)은 이하에 도시된 바와 같이 1의 컬럼 가중치를 가진 정방 행렬이다:
Figure 112012091353817-pct00010
상기 컬럼 가중치는 상기 순환 행렬의 각각의 컬럼이 단지 1의 값을 가진 단일 계수를 갖기 때문에 상기 예에서 1이다. 패리티-검사 행렬(H)은 순환 행렬들의 "컬럼들"을 포함하는 것처럼 보여질 수 있으며, 각각의 이러한 "컬럼"은 순환 행렬 컬럼으로서 언급된다. 도 12에서, 그룹 1은 각각의 순환 행렬 컬럼에서 1의 컬럼 가중치들을 가진 2개의 순환 행렬들을 가진다. 그러므로, 그룹 1은 그것의 대응하는 순환 행렬 컬럼들의 각각에 대해 2의 컬럼 가중치를 가진다. 따라서, 그룹 1은 2의 그룹 컬럼 가중치를 가진다. 그룹 2 내지 그룹 5는 또한 그것들 각각의 순환 행렬 컬럼들에 대해 2와 등가인 컬럼 가중치들을 가지며, 따라서 LDPC 행렬(1200)은 그것의 순환 행렬 컬럼들에 대해 10의 전체 컬럼 가중치를 가진다. 상기 도시된 정방 행렬의 크기는 3×3 행렬이지만; 상이한 크기들의 다른 정방 행렬들이 또한 이용될 수 있다.
LDPC 행렬(1200)을 각각의 그룹이 많은 제로 행렬들 및 낮은 그룹 컬럼 가중치(예로서, 1 또는 2)를 갖는 복수의 그룹들로 분할하는 것은 다수의 이점들을 가진다. 예를 들면, 각각의 그룹에 대한 그룹 컬럼 가중치가 단지 1일 때, 그 후 각각의 그룹 내의 단지 1의 비-제로 계층(활성층)이 한 번에 처리될 필요가 있다. 그러므로, 선택적 계층화 디코딩 스케줄러(1104)는 각각의 그룹 내에서 유일한 비-제로 계층을 선택할 수 있으며 상기 비-제로 계층을 한 번에 디코딩하기 위한 LDPC 계층화 디코더(1106)로 전송한다. 몇몇 실시예들에서, 다중화기(MUX) 구조가 이용될 수 있으며, 이것은 전체 하드웨어 설계를 단순화하고 시스템(1100)을 위해 요구된 하드웨어의 양을 감소시킨다. LDPC 계층화 디코더(1106)의 설계는 또한 상기 디코더가 단지 한 번에 단일 계층을 처리하도록 요구되기 때문에 단순해진다.
몇몇 실시예들에서, LDPC 행렬은 그룹 수가 감소되는 방식으로 구성될 수 있다. 보다 적은 그룹들로, 상기 디코딩 대기시간은 감소될 수 있으며, 따라서 상기 시스템의 디코딩 성능을 향상시킬 수 있다.
도 11을 다시 참조하면, 선택적 계층화 디코딩 스케줄러(1104)가 검사 노드 메모리 블록(1102) 및 LDPC 계층화 디코더(1106)와 결합된다. 선택적 계층화 디코딩 스케줄러(1104)는 하나 이상의 비용 함수들을 획득하고, 상기 비용 함수(들)를(을) 평가하고, 상기 비용 함수(들)에 기초하여 다음에 디코딩될 그룹을 선택하고, 상기 선택된 그룹을 디코딩될 LDPC 계층화 디코더(1106)로 전송한다.
선택적 계층화 디코딩 스케줄러(1104)에 의해 평가된 비용 함수는 본 출원에서 설명된 임의의 비용 함수들일 수 있다. 몇몇 실시예들에서, 최소 수의 만족되지 않는 검사 노드들을 가진 그룹이 선택된다. 몇몇 실시예들에서, 가변 노드들과 연관된 신뢰성 값들의 평균이 모든 그룹들에 대해 먼저 결정되고, 그 후 가장 큰 평균을 가진 그룹이 선택된다. 몇몇 실시예들에서, 임계값 아래의 최소 수의 신뢰성 값들을 가진 그룹이 선택된다. 몇몇 실시예들에서, 최소 신뢰성들 중 가장 큰 값을 가진 그룹이 선택된다.
도 13은 선택적 계층화 디코딩 스케줄링의 대표적인 실시예를 도시한 도면이다. 그것은 LDPC 행렬이 4개의 그룹들의 검사 노드 계층들로 분할될 때 LDPC 계층화 디코딩을 위한 스케줄을 도시한다.
도 13에서, 가변 노드 업데이트는 "V"로 표시되고; 검사 노드 업데이트 "C"로 표시되고, 그룹 프리페치(group prefetch)는 "P"로 표시된다. 그룹 프리페치(P)가 먼저 수행된다. P는 검사 노드 업데이트가 수행되는 다음 그룹을 선택한다. 그것은 다음 계층 반복 동안 상기 선택된 그룹상에서 수행될 검사 노드 업데이트를 준비한다. 그러므로, P가 제 n 계층 반복 동안 특정 그룹상에서 수행된다면, C는 제 (n+1) 반복 동안 동일한 그룹상에서 수행되고, V는 제 (n+2) 반복 동안 동일한 그룹상에서 수행된다. 예를 들면, 도 13에 도시된 바와 같이, P는 제 1 계층 반복 동안 그룹 3에서 수행되고, C는 제 2 계층 반복 동안 그룹 3에서 수행되고, V는 제 3 계층 반복 동안 그룹 3에서 수행된다. 유사하게, P, C, 및 V는 제 2 내지 제 4 계층 반복들 동안 그룹 4를 위해 번갈아 수행된다.
도 13에 도시된 바와 같이, V, C, 및 P는 특정 계층 반복 동안 동시에 수행될 수 있다. 몇몇 실시예들에서, V, C, 및 P는 각각 상기 계층 반복 동안 상이한 그룹상에서 수행된다. 예를 들면, 제 1 계층 반복 동안, V는 그룹 1에서 수행되고, C는 그룹 2에서 수행되고, P는 그룹 3에서 수행된다.
상술된 바와 같이, P는 검사 노드 업데이트가 수행되는 다음 그룹을 선택한다. 그것은 다음 계층 반복 동안 상기 선택된 그룹상에서 수행될 검사 노드 업데이트를 준비한다. 몇몇 실시예들에서, P는 몇 개의 계층 반복들 마다 단지 1회 비용 함수에 기초하여 다음 그룹을 선택한다. 몇몇 실시예들에서, P는 각각의 계층 반복에서 비용 함수에 기초하여 다음 그룹을 선택한다.
도 13에 도시된 대표적인 스케줄에서, P는 몇 개의 계층 반복들마다 단지 1회 비용 함수에 기초하여 다음 그룹을 선택한다. 특히, P는 상기 그룹들 모두가 적어도 1회 가변 노드 업데이트를 가진 후 비용 함수에 기초하여 다음 그룹을 선택한다. 예를 들면, 상기 그룹들 각각은 제 4 반복 후 적어도 1회 가변 노드 업데이트를 가지며; 그러므로, P는 제 5 반복 동안 비용 함수에 기초하여 그룹 4를 선택하고, 그룹 3은 건너 뛰어진다. 유사하게는, 상기 그룹들 각각은 제 5에서 제 10 계층 반복까지 적어도 1회 가변 노드 업데이트를 가진다. 따라서, P는 제 11 계층 반복 동안 비용 함수에 기초하여 그룹 2를 선택한다.
몇몇 그룹들은 비용 함수에 기초하여 선택하기 위해 P에 대해 자격이 없을 수 있다는 것을 주의하자. 제 5 반복 동안, P는 그룹 1이 가변 노드 업데이트를 가지며 그룹 2가 그때에 수행된 검사 노드 업데이트를 가지기 때문에 단지 그룹 3 또는 그룹 4를 선택하는 것에 제한될 수 있다.
도 14는 선택적 계층화 디코딩 스케줄링의 제 2 대표적인 실시예를 도시한 도면이다. 이 예에서, P는 각각의 계층 반복에서 비용 함수에 기초하여 다음 그룹을 선택한다.
각각의 반복 동안, 상기 그룹들의 서브세트는 P가 비용 함수에 기초하여 선택하는데 자격이 없을 수 있다. 예를 들면, 제 1 계층 반복 동안, 가변 노드 업데이트는 그룹 1에서 수행되고, 검사 노드 업데이트는 그룹 2에서 수행되고; 그러므로, 프리페치하기 위해 이용가능한 그룹들은 단지 그룹 3 및 그룹 4이며, P는 비용 함수에 기초하여 그룹 3을 선택한다. 제 2 계층 반복 동안, 프리페치하기 위해 이용가능한 그룹들은 단지 그룹 4로 감소되는데, 왜냐하면, 프리페치 선택을 위한 그룹들을 모든 그룹들로 리셋하는 것 사이에서의 반복들 내에서 그룹을 두 번 프리페치하는 것은 이 실시예에서 바람직하지 않기 때문이다. 제 3 계층 반복 동안, 이용가능한 그룹들은 모든 4개의 그룹들로 다시 리셋된다. 유사하게는, 제 6 계층 반복 동안, 프리페치하기 위해 이용가능한 그룹들은 단지 그룹 3으로 감소되고, 이는 프리페치 선택을 위한 그룹들을 모든 그룹들로 리셋하는 것 사이에서의 상기 반복들 내에서 그룹 2를 두 번 프리페치하는 것이 이 실시예에서 바람직하지 않기 때문이다. 제 7 계층 반복 동안, 프리페치하기 위해 이용가능한 그룹들은 모든 4개의 그룹들로 다시 리셋된다.
앞서 말한 실시예들은 이해의 명료함을 위해 어느 정도 상세히 설명되었지만, 본 발명은 제공된 상세들에 제한되지 않는다. 본 발명을 구현하는 많은 대안적인 방식들이 존재한다. 개시된 실시예들은 예시적이며 비제한적이다.
800: 아날로그-디지털 변환기 802: 필터
804: 소프트 출력 검출기 806: 에러 정정 디코더
902: 비용 함수 평가기 906: 메시지 업데이터
908: 패리티 검사기 1000: 평균화기
1002: 저장장치 1004: 선택기
1100: 시스템 1102: 검사 노드 메모리
1104: 선택적 계층화 디코딩 스케줄러
1106: LDPC 계층화 디코더

Claims (23)

  1. 데이터를 디코딩하기 위한 방법에 있어서:
    프로세서에 의해, 저-밀도 패리티 검사(LDPC) 행렬을 각각이 하나 이상의 검사 노드 계층들을 포함하는 복수의 그룹들로 분할하는 단계;
    상기 프로세서에 의해, 비용 함수에 적어도 부분적으로 기초하여 상기 그룹들 중 하나를 선택하는 단계로서, 상기 비용 함수는 가변 노드와 연관된 정보, 또는 검사 노드와 연관된 정보, 또는 둘 모두에 적어도 부분적으로 기초하는, 상기 선택 단계; 및
    상기 프로세서에 의해, LDPC 계층화 디코딩(LDPC layered decoding)을 수행하는 단계를 포함하고, 상기 LDPC 계층화 디코딩의 현재 계층 반복에서, 검사 노드 업데이트는 현재 계층에서 수행되고, 상기 LDPC 계층화 디코딩의 다음 계층 반복에서, 검사 노드 업데이트는 상기 현재 계층에 후속하는 다음 순차적인 계층에서 수행되지 않고, 선택된 상기 그룹에서 수행되고, 상기 LDPC 계층화 디코딩의 상기 다음 계층 반복에서, 가변 노드 업데이트는 상기 선택된 그룹에서 수행되지 않고, 상기 현재 계층에서 수행되는, 데이터를 디코딩하기 위한 방법.
  2. 제 1 항에 있어서,
    상기 하나 이상의 검사 노드 계층들 중 하나는 복수의 순환 행렬들을 포함하고, 순환 행렬은 정방 행렬을 포함하는, 데이터를 디코딩하기 위한 방법.
  3. 제 2 항에 있어서,
    상기 복수의 순환 행렬들 각각은 1의 컬럼 가중치를 갖는, 데이터를 디코딩하기 위한 방법.
  4. 제 1 항에 있어서,
    상기 복수의 그룹들 각각은 미리 결정된 그룹 컬럼 가중치를 갖는, 데이터를 디코딩하기 위한 방법.
  5. 제 4 항에 있어서,
    상기 미리 결정된 그룹 컬럼 가중치는 1 또는 2인, 데이터를 디코딩하기 위한 방법.
  6. 제 4 항에 있어서,
    상기 선택된 그룹에 대해 LDPC 계층화 디코딩을 수행하는 단계는 상기 선택된 그룹에서 미리 결정된 수의 검사 노드 계층들을 디코딩하는 단계를 포함하고, 상기 검사 노드 계층들의 미리 결정된 수는 상기 미리 결정된 그룹 컬럼 가중치와 등가인(equal), 데이터를 디코딩하기 위한 방법.
  7. 제 6 항에 있어서,
    상기 선택된 그룹에서 상기 미리 결정된 수의 검사 노드 계층들은 다중화기(MUX) 구조에 의해 선택되는, 데이터를 디코딩하기 위한 방법.
  8. 제 1 항에 있어서,
    상기 선택된 그룹에 대해 LDPC 계층화 디코딩을 수행하는 단계는:
    제 1 계층 반복 동안 상기 선택된 그룹에 대해 검사 노드 업데이트를 위한 그룹 프리페치(group prefetch)를 수행하는 단계;
    제 2 계층 반복 동안 상기 검사 노드 업데이트를 수행하는 단계; 및
    제 3 계층 반복 동안 상기 검사 노드 업데이트에 대응하는 가변 노드 업데이트를 수행하는 단계를 포함하고,
    상기 제 1 계층 반복, 상기 제 2 계층 반복, 및 상기 제 3 계층 반복은 순차적인, 데이터를 디코딩하기 위한 방법.
  9. 제 8 항에 있어서,
    상기 제 1 계층 반복 동안 상기 선택된 그룹이 아닌 제 1 그룹에 대해 검사 노드 업데이트를 수행하는 단계; 및
    상기 제 1 계층 반복 동안 상기 선택된 그룹이 아닌 제 2 그룹에 대해 가변 노드 업데이트를 수행하는 단계를 추가로 포함하는, 데이터를 디코딩하기 위한 방법.
  10. 제 1 항에 있어서,
    상기 선택된 그룹은, 상기 그룹들 모두가 적어도 한 번 가변 노드 업데이트를 가진 후, 상기 비용 함수에 기초하여 선택되는, 데이터를 디코딩하기 위한 방법.
  11. 제 1 항에 있어서,
    상기 그룹들의 서브세트는 선택되지 않는데,
    상기 서브세트는 상기 선택 단계에 의해 고려될 자격이 없는 것으로 결정되기 때문인, 데이터를 디코딩하기 위한 방법.
  12. 제 1 항에 있어서,
    상기 LDPC 행렬은 상기 그룹들의 수가 감소되는 방식으로 구성되는, 데이터를 디코딩하기 위한 방법.
  13. 데이터를 디코딩하기 위한 시스템에 있어서:
    저-밀도 패리티 검사(LDPC) 행렬을 각각이 하나 이상의 검사 노드 계층들을 포함하는 복수의 그룹들로 분할하도록 구성된 인터페이스;
    비용 함수에 적어도 부분적으로 기초하여 상기 그룹들 중 하나를 선택하도록 구성된 선택적 계층화 디코딩 스케줄러로서, 상기 비용 함수는 가변 노드와 연관된 정보, 또는 검사 노드와 연관된 정보, 또는 둘 모두에 적어도 부분적으로 기초하는, 상기 선택적 계층화 디코딩 스케줄러; 및
    LDPC 계층화 디코딩(LDPC layered decoding)을 수행하도록 구성된 LDPC 계층화 디코더로서, 상기 LDPC 계층화 디코딩의 현재 계층 반복에서, 검사 노드 업데이트는 현재 계층에서 수행되고, 상기 LDPC 계층화 디코딩의 다음 계층 반복에서, 검사 노드 업데이트는 상기 현재 계층에 후속하는 다음 순차적인 계층에서 수행되지 않고, 선택된 상기 그룹에서 수행되고, 상기 LDPC 계층화 디코딩의 상기 다음 계층 반복에서, 가변 노드 업데이트는 상기 선택된 그룹에서 수행되지 않고, 상기 현재 계층에서 수행되는 것을 위한, 상기 LDPC 계층화 디코더를 포함하는, 데이터를 디코딩하기 위한 시스템.
  14. 제 13 항에 있어서,
    상기 하나 이상의 검사 노드 계층들 중 하나는 복수의 순환 행렬들을 포함하고, 순환 행렬은 정방 행렬을 포함하는, 데이터를 디코딩하기 위한 시스템.
  15. 제 14 항에 있어서,
    상기 복수의 순환 행렬들 각각은 1의 컬럼 가중치를 갖는, 데이터를 디코딩하기 위한 시스템.
  16. 제 13 항에 있어서,
    상기 복수의 그룹들 각각은 미리 결정된 그룹 컬럼 가중치를 갖는, 데이터를 디코딩하기 위한 시스템.
  17. 제 16 항에 있어서,
    상기 미리 결정된 그룹 컬럼 가중치는 1 또는 2인, 데이터를 디코딩하기 위한 시스템.
  18. 제 16 항에 있어서,
    상기 선택된 그룹에 대해 LDPC 계층화 디코딩을 수행하는 것은 상기 선택된 그룹에서 미리 결정된 수의 검사 노드 계층들을 디코딩하는 것을 포함하고, 상기 검사 노드 계층들의 미리 결정된 수는 상기 미리 결정된 그룹 컬럼 가중치와 등가인, 데이터를 디코딩하기 위한 시스템.
  19. 제 18 항에 있어서,
    상기 선택된 그룹에서 상기 미리 결정된 수의 검사 노드 계층들을 선택하도록 구성된 다중화기(MUX) 구조를 추가로 포함하는, 데이터를 디코딩하기 위한 시스템.
  20. 제 13 항에 있어서,
    상기 선택된 그룹에 대해 LDPC 계층화 디코딩을 수행하는 것은:
    제 1 계층 반복 동안 상기 선택된 그룹에 대해 검사 노드 업데이트를 위한 그룹 프리페치를 수행하는 것;
    제 2 계층 반복 동안 상기 검사 노드 업데이트를 수행하는 것; 및
    제 3 계층 반복 동안 상기 검사 노드 업데이트에 대응하는 가변 노드 업데이트를 수행하는 것을 포함하고,
    상기 제 1 계층 반복, 상기 제 2 계층 반복, 및 상기 제 3 계층 반복은 순차적인, 데이터를 디코딩하기 위한 시스템.
  21. 제 20 항에 있어서,
    상기 LDPC 계층화 디코더는:
    상기 제 1 계층 반복 동안 상기 선택된 그룹이 아닌 제 1 그룹에 대해 검사 노드 업데이트를 수행하고;
    상기 제 1 계층 반복 동안 상기 선택된 그룹이 아닌 제 2 그룹에 대해 가변 노드 업데이트를 수행하도록 구성되는, 데이터를 디코딩하기 위한 시스템.
  22. 제 13 항에 있어서,
    상기 선택적 계층화 디코딩 스케줄러 및 상기 LDPC 계층화 디코더와 결합된 검사 노드 메모리 블록을 추가로 포함하고, 상기 검사 노드 메모리는 검사 노드 업데이트들의 결과들을 저장하도록 구성되는, 데이터를 디코딩하기 위한 시스템.
  23. 데이터를 디코딩하기 위한 컴퓨터 프로그램이 기록된 컴퓨터 판독 가능한 저장 매체로서, 컴퓨터 명령들을 포함하는, 상기 컴퓨터 판독 가능한 저장 매체에 있어서:
    상기 컴퓨터 명령들은:
    프로세서에 의해, 저-밀도 패리티 검사(LDPC) 행렬을 각각이 하나 이상의 검사 노드 계층들을 포함하는 복수의 그룹들로 분할하고;
    상기 프로세서에 의해, 비용 함수에 적어도 부분적으로 기초하여 상기 그룹들 중 하나를 선택하고; 상기 비용 함수는 가변 노드와 연관된 정보, 또는 검사 노드와 연관된 정보, 또는 둘 모두에 적어도 부분적으로 기초하고,
    상기 프로세서에 의해, LDPC 계층화 디코딩(LDPC layered decoding)을 수행하고, 상기 LDPC 계층화 디코딩의 현재 계층 반복에서, 검사 노드 업데이트는 현재 계층에서 수행되고, 상기 LDPC 계층화 디코딩의 다음 계층 반복에서, 검사 노드 업데이트는 상기 현재 계층에 후속하는 다음 순차적인 계층에서 수행되지 않고, 선택된 상기 그룹에서 수행되고, 상기 LDPC 계층화 디코딩의 상기 다음 계층 반복에서, 가변 노드 업데이트는 상기 선택된 그룹에서 수행되지 않고, 상기 현재 계층에서 수행되는 것을 위한, 컴퓨터 판독 가능한 저장 매체.










KR1020127029196A 2010-04-09 2011-04-11 Ldpc 선택적 디코딩 스케줄링의 구현 KR101610727B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US34214110P 2010-04-09 2010-04-09
US61/342,141 2010-04-09
PCT/US2011/000646 WO2011126578A1 (en) 2010-04-09 2011-04-11 Implementation of ldpc selective decoding scheduling

Publications (2)

Publication Number Publication Date
KR20130050937A KR20130050937A (ko) 2013-05-16
KR101610727B1 true KR101610727B1 (ko) 2016-04-08

Family

ID=44761808

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127029196A KR101610727B1 (ko) 2010-04-09 2011-04-11 Ldpc 선택적 디코딩 스케줄링의 구현

Country Status (4)

Country Link
US (1) US8918696B2 (ko)
KR (1) KR101610727B1 (ko)
CN (1) CN102859885B (ko)
WO (1) WO2011126578A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11139832B1 (en) 2020-03-17 2021-10-05 SK Hynix Inc. LDPC decoder and operating method thereof

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8751912B1 (en) 2010-01-12 2014-06-10 Marvell International Ltd. Layered low density parity check decoder
US8756478B2 (en) * 2011-09-07 2014-06-17 Lsi Corporation Multi-level LDPC layer decoder
US8656249B2 (en) * 2011-09-07 2014-02-18 Lsi Corporation Multi-level LDPC layer decoder
US8954816B2 (en) * 2011-11-28 2015-02-10 Sandisk Technologies Inc. Error correction coding (ECC) decode operation scheduling
US8819515B2 (en) * 2011-12-30 2014-08-26 Lsi Corporation Mixed domain FFT-based non-binary LDPC decoder
US9015547B2 (en) * 2012-08-17 2015-04-21 Lsi Corporation Multi-level LDPC layered decoder with out-of-order processing
US8972826B2 (en) 2012-10-24 2015-03-03 Western Digital Technologies, Inc. Adaptive error correction codes for data storage systems
US9021339B2 (en) 2012-11-29 2015-04-28 Western Digital Technologies, Inc. Data reliability schemes for data storage systems
US9059736B2 (en) 2012-12-03 2015-06-16 Western Digital Technologies, Inc. Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme
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
US9619317B1 (en) 2012-12-18 2017-04-11 Western Digital Technologies, Inc. Decoder having early decoding termination detection
US9122625B1 (en) 2012-12-18 2015-09-01 Western Digital Technologies, Inc. Error correcting code encoder supporting multiple code rates and throughput speeds for data storage systems
US8966339B1 (en) 2012-12-18 2015-02-24 Western Digital Technologies, Inc. Decoder supporting multiple code rates and code lengths for data storage systems
US9214963B1 (en) 2012-12-21 2015-12-15 Western Digital Technologies, Inc. Method and system for monitoring data channel to enable use of dynamically adjustable LDPC coding parameters in a data storage system
US9231619B2 (en) * 2013-02-04 2016-01-05 SK Hynix Inc. LDPC decoder with a variable node updater which uses a scaling constant
US9325347B1 (en) 2014-02-21 2016-04-26 Microsemi Storage Solutions (U.S.), Inc. Forward error correction decoder and method therefor
US9344116B2 (en) * 2014-05-29 2016-05-17 Yuan Ze University Method for determining layer stoppage in LDPC decoding
US20160091951A1 (en) * 2014-09-29 2016-03-31 Lsi Corporation Systems and Methods for Power Reduced Data Decoder Scheduling
US10075190B2 (en) * 2015-10-27 2018-09-11 Sandisk Technologies Llc Adaptive scheduler for decoding
TWI583141B (zh) * 2016-05-12 2017-05-11 國立清華大學 低密度奇偶檢查碼的解碼方法與解碼器
US10425104B2 (en) 2016-11-11 2019-09-24 Electronics And Telecommunications Research Institute Scheduling method of a parity check matrix and an LDPC decoder for performing scheduling of a parity check matrix
US10637503B2 (en) * 2018-08-03 2020-04-28 Innogrit Technologies Co., Ltd. Systems and methods for decoding low density parity check encoded codewords
EP3963723A4 (en) 2019-09-10 2022-07-20 Samsung Electronics Co., Ltd. METHOD AND APPARATUS FOR DECODED DATA IN A COMMUNICATION OR BROADCASTING SYSTEM
FR3108221B1 (fr) * 2020-03-11 2022-03-11 Commissariat Energie Atomique Méthode de décodage de codes ldpc à inversion de bits et effet inertiel
US11863201B2 (en) * 2022-04-01 2024-01-02 Qualcomm Incorporated Correlation-based hardware sequence for layered decoding

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040194007A1 (en) * 2003-03-24 2004-09-30 Texas Instruments Incorporated Layered low density parity check decoding for digital communications
US20100037121A1 (en) * 2008-08-05 2010-02-11 The Hong Kong University Of Science And Technology Low power layered decoding for low density parity check decoders

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7234098B2 (en) * 2003-10-27 2007-06-19 The Directv Group, Inc. Method and apparatus for providing reduced memory low density parity check (LDPC) codes
WO2006055086A1 (en) * 2004-10-01 2006-05-26 Thomson Licensing A low density parity check (ldpc) decoder
KR100913876B1 (ko) * 2004-12-01 2009-08-26 삼성전자주식회사 저밀도 패리티 검사 부호의 생성 방법 및 장치
US7536629B2 (en) 2005-01-10 2009-05-19 Broadcom Corporation Construction of LDPC (Low Density Parity Check) codes using GRS (Generalized Reed-Solomon) code
CN100490334C (zh) * 2005-01-10 2009-05-20 美国博通公司 构建和选择基于grs不规则ldpc码的方法
US7900127B2 (en) * 2005-01-10 2011-03-01 Broadcom Corporation LDPC (Low Density Parity Check) codes with corresponding parity check matrices selectively constructed with CSI (Cyclic Shifted Identity) and null sub-matrices
US7660368B2 (en) * 2005-01-11 2010-02-09 Qualcomm Incorporated Bit log likelihood ratio evaluation
KR100941680B1 (ko) * 2005-07-01 2010-02-12 삼성전자주식회사 준순환 저밀도 패리티 검사 부호의 생성 방법 및 장치
US20070245217A1 (en) 2006-03-28 2007-10-18 Stmicroelectronics S.R.L. Low-density parity check decoding
US7831895B2 (en) * 2006-07-25 2010-11-09 Communications Coding Corporation Universal error control coding system for digital communication and data storage systems
FR2904499B1 (fr) * 2006-07-27 2009-01-09 Commissariat Energie Atomique Procede de decodage a passage de messages avec ordonnancement selon une fiabilite de voisinage.
KR100981501B1 (ko) 2006-11-06 2010-09-10 연세대학교 산학협력단 통신 시스템에서 신호 송신 장치 및 방법
US8359522B2 (en) 2007-05-01 2013-01-22 Texas A&M University System Low density parity check decoder for regular LDPC codes
CN101796488A (zh) * 2007-07-02 2010-08-04 技术源于创意有限公司 奇偶校验矩阵的产生
US7958429B2 (en) 2007-07-02 2011-06-07 Broadcom Corporation Distributed processing LDPC (low density parity check) decoder
US8156409B2 (en) 2008-02-29 2012-04-10 Seagate Technology Llc Selectively applied hybrid min-sum approximation for constraint node updates of LDPC decoders
CN101803206B (zh) * 2008-08-15 2013-09-04 Lsi公司 近码字的rom列表解码
US8291285B1 (en) * 2008-09-18 2012-10-16 Marvell International Ltd. Circulant processing scheduler for layered LDPC decoder
US8219873B1 (en) * 2008-10-20 2012-07-10 Link—A—Media Devices Corporation LDPC selective decoding scheduling using a cost function
US8407555B2 (en) * 2009-03-30 2013-03-26 Broadcom Corporation LDPC codes robust to non-stationary narrowband ingress noise

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040194007A1 (en) * 2003-03-24 2004-09-30 Texas Instruments Incorporated Layered low density parity check decoding for digital communications
US20100037121A1 (en) * 2008-08-05 2010-02-11 The Hong Kong University Of Science And Technology Low power layered decoding for low density parity check decoders

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11139832B1 (en) 2020-03-17 2021-10-05 SK Hynix Inc. LDPC decoder and operating method thereof

Also Published As

Publication number Publication date
US8918696B2 (en) 2014-12-23
KR20130050937A (ko) 2013-05-16
CN102859885B (zh) 2015-10-07
CN102859885A (zh) 2013-01-02
WO2011126578A1 (en) 2011-10-13
US20110252294A1 (en) 2011-10-13

Similar Documents

Publication Publication Date Title
KR101610727B1 (ko) Ldpc 선택적 디코딩 스케줄링의 구현
US8219873B1 (en) LDPC selective decoding scheduling using a cost function
JP6555759B2 (ja) 構造化されたldpcのコーディング方法、デコーディング方法、コーディング装置及びデコーディング装置
US9544090B2 (en) Hard input low density parity check decoder
KR101854954B1 (ko) 치환 소행렬의 합을 사용하는 체크섬
US9432053B1 (en) High speed LDPC decoder
JP4702632B2 (ja) 符号化方法および符号化装置、並びにプログラム
KR100941680B1 (ko) 준순환 저밀도 패리티 검사 부호의 생성 방법 및 장치
US20140053037A1 (en) Multi-Level LDPC Layered Decoder With Out-Of-Order Processing
WO2011109084A1 (en) Quasi-cyclic ldpc encoding and decoding for non-integer multiples of circulant size
KR20110124659A (ko) 저밀도 패리티 검사 부호를 사용하는 통신 시스템에서 계층적 복호 장치 및 방법
WO2010057407A1 (zh) 可变码长ldpc码编码或译码的方法与装置及编码器和译码器
EP2712090A2 (en) Iterative detection and LDPC decoding with full and fractional local iterations
JP5631846B2 (ja) 半導体メモリ装置および復号方法
US20080046801A1 (en) Low density parity check codes decoder and method thereof
US20160020783A1 (en) Low Density Parity Check Decoder With Relative Indexing
US8566665B2 (en) Systems and methods for error correction using low density parity check codes using multiple layer check equations
US8166364B2 (en) Low density parity check decoder using multiple variable node degree distribution codes
US11641213B2 (en) Log-likelihood ratio mapping tables in flash storage systems
WO2007101483A2 (en) Method for generating ldpc codes and apparatus using the ldpc codes
KR20060071856A (ko) 채널 코드를 이용한 복호화 및 복호화 장치
CN105071818A (zh) 一种低复杂度ldpc码编码方法
TWI583141B (zh) 低密度奇偶檢查碼的解碼方法與解碼器
KR100698192B1 (ko) Ldpc 부호의 복호 방법
KR101268061B1 (ko) 다상-누산 코드를 이용한 부호화 방법 및 복호화 방법

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190325

Year of fee payment: 4