KR20140099820A - 크기조정 상수를 사용하는 가변 노드 업데이터를 갖는 ldpc 디코더 - Google Patents

크기조정 상수를 사용하는 가변 노드 업데이터를 갖는 ldpc 디코더 Download PDF

Info

Publication number
KR20140099820A
KR20140099820A KR1020140006451A KR20140006451A KR20140099820A KR 20140099820 A KR20140099820 A KR 20140099820A KR 1020140006451 A KR1020140006451 A KR 1020140006451A KR 20140006451 A KR20140006451 A KR 20140006451A KR 20140099820 A KR20140099820 A KR 20140099820A
Authority
KR
South Korea
Prior art keywords
message
llr
values
compute
nodes
Prior art date
Application number
KR1020140006451A
Other languages
English (en)
Other versions
KR101631128B1 (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 KR20140099820A publication Critical patent/KR20140099820A/ko
Application granted granted Critical
Publication of KR101631128B1 publication Critical patent/KR101631128B1/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
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1108Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • H03M13/1117Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using approximations for check node processing, e.g. an outgoing message is depending on the signs and the minimum over the magnitudes of all incoming messages according to the min-sum rule
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3723Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using means or methods for the initialisation of the decoder
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6577Representation or format of variables, register sizes or word-lengths and quantization
    • H03M13/658Scaling by multiplication or division

Abstract

복수의 가변 노드들 중 하나로부터 복수의 검사 노드들 중 하나로 진행하는 것과 관련된 제 1 메시지가 계산되고, (1) 복수의 가변 노드들과 복수의 검사 노드들 사이의 하나 이상의 연결들은 LDPC 패리티 검사 매트릭스에 의해 규정되고, (2) 크기조정 상수는 제 1 메시지를 계산하기 위하여 사용된다. 복수의 검사 노드들 중 하나로부터 복수의 가변 노드들 중 하나로 진행하는 것과 관련된 제 2 메시지가 계산되고, 크기조정 상수는 제 2 메시지를 계산하기 위하여 사용되지 않는다.

Description

크기조정 상수를 사용하는 가변 노드 업데이터를 갖는 LDPC 디코더{LDPC DECODER WITH A VARIABLE NODE UPDATER WHICH USES A SCALING CONSTANT}
본 출원은 2013년 2월 4일에 출원되었고 발명의 명칭이 "MODIFIED LDPC DECODER FOR HARD-READ NAND DEVICES"이고, 그 전체가 본 명세서에 참조로서 병합되는 미국가특허출원 제61/760,519호(변리사 관리번호: LINKP131+)를 우선권으로 주장한다.
본 발명은 크기조정 상수를 사용하는 가변 노드 업데이터를 갖는 LDPC 디코더에 관한 것이다.
저-밀도 패리티-검사(LDPC) 코드들은 고체 상태 저장부에 기록하고 이로부터 판독하기 위하여 사용되고, 이들은 (차례로) 모바일 디바이스들에서 사용된다. 물론, 모바일 디바이스들이 배터리로부터 작동하므로, 전력 소모는 LDPC 디코더들을 포함하여 모든 구성요소들에 대해 중요한 문제이다.
전력을 절약하는 간단한 방식은 LDPC 디코더에 의해 입력되는 소프트 정보를 나타내기 위하여 사용되는 비트들의 수를 줄이는 것이다. 이것은 동작들의 수의 감소로 직접 바뀌고, 이는 차례로 전력 소모를 감소시킨다. 불행히도, 단순하게 비트들의 수를 감소시키는 것은 상당한 성능 악화(예, 수치 에러들로 인해, 반올림 에러들, 및/또는 포화 에러들)를 야기할 수 있다. 성능 열화(특히, 소프트 정보를 나타내기 위하여 사용된 비트들의 수가 상당히 작은 시스템들에서)를 감소시킨 새로운 LDPC 디코딩 기술들이 바람직할 것이다. 이것은 예컨대 성능을 너무 많이 희생시키지 않고 전력이 절약되게 한다.
본 발명은, 프로세스, 장치, 시스템, 물질의 구성물, 컴퓨터 판독 가능한 저장 매체 상에서 구현된 컴퓨터 프로그램, 및/또는 프로세서에 결합된 메모리에 저장되거나 및/또는 메모리에 의해 제공된 명령들을 실행하도록 구성된 프로세서와 같은 프로세서를 포함하여, 다양한 방식들로 구현될 수 있다. 본 명세서에서, 이들 구현들, 또는 본 발명이 취할 수 있는 임의의 다른 형태는 기술들로서 언급될 수 있다. 일반적으로, 개시된 프로세스들의 단계들의 순서는 본 발명의 범주 내에서 변경될 수 있다. 달리 언급되지 않는다면, 업무를 수행하도록 구성된 것으로 기술된 프로세서 또는 메모리와 같은 구성요소는 주어진 시간에 업무를 수행하도록 일시적으로 구성된 일반 구성요소로서, 또는 업무를 수행하도록 제조된 특정 구성요소로서 구현될 수 있다. 본 명세서에서 사용될 때, 용어 "프로세서"는 디바이스들, 회로들, 및/또는 컴퓨터 프로그램 명령들과 같은 데이터를 처리하도록 구성된 하나 이상의 처리 코어들을 언급한다.
본 발명의 하나 이상의 실시예들의 상세한 설명은 본 발명의 원리들을 설명하는 첨부 도면들과 함께 아래에 제공된다. 본 발명은 이러한 실시예들과 관련하여 기술되지만, 본 발명은 임의의 실시예에 국한되지 않는다. 본 발명의 범주는 오로지 청구항들에 의해 제한되고, 본 발명은 다수의 변경들, 수정들 및 등가물들을 포함한다. 본 발명의 철저한 이해를 제공하기 위하여 다수의 특정 세부사항들이 다음의 설명에서 설명된다. 이들 세부사항들은 예시를 위해 제공되고, 본 발명은 이들 특정 세부사항들의 일부 또는 전부가 없이도 청구항들에 따라 실시될 수 있다. 명확성을 위해, 본 발명에 관련된 기술 분야에서 알려진 기술 자료는 본 발명이 불필요하게 모호하게 되지 않도록 상세하게 설명되지 않았다.
본 발명의 다양한 실시예들이 다음의 상세한 설명과 첨부된 도면들에서 개시된다.
도 1은 저-밀도 패리티-검사(LDPC) 디코딩 프로세스에 의해 사용된 메시지 업데이팅 프로세스의 일 실시예를 도시하는 흐름도.
도 2는 크기조정 상수를 사용하는 가변 노드 업데이터를 갖는 LDPC 디코더의 일 실시예를 도시하는 도면.
도 3은 가변 노드로부터 검사 노드로 송신된 메시지의 계산의 수치 예를 도시하는 도면.
도 4는 검사 노드로부터 가변 노드로 송신된 메시지의 계산의 수치 예를 도시하는 도면.
도 5는 가변 노드 업데이트 상태 도중에 업데이트된 메시지들이 크기조정 상수를 사용하여 업데이트되는 LDPC 디코딩 프로세스의 일 실시예를 도시하는 흐름도.
도 6은 크기조정 상수를 사용하는 가변 노드 업데이터를 갖는 LDPC 디코더를 포함하는 저장 시스템의 일 실시예를 도시하는 도면.
도 7은 제 1 메시지(예, Qji) 및/또는 Qj를 계산하는데 사용된 값들을 결정하기 위한 프로세스의 일 실시예를 도시하는 흐름도.
도 8은 본 명세서에서 설명된 기술들에 의해 제공된 성능 개선의 일 실시예를 도시하는 그래프.
도 1은 저-밀도 패리티-검사(LDPC) 디코딩 프로세스에 의해 사용된 메시지 업데이팅 프로세스의 일 실시예를 도시하는 흐름도이다. 도시된 예에서, 프로세스는 LDPC 디코더 내의 하나 이상의 구성요소들에 의해 수행된다. 일부 실시예들에 있어서, 도시된 메시지 업데이팅 프로세스는 통신 시스템 내의 하나 이상의 구성요소들에 의해 수행된다. 일부 실시예들에 있어서, 도시된 메시지 업데이팅 프로세스는 저장 시스템(예, 고체 상태 저장 시스템, NAND 플래쉬 저장 시스템, 및/또는 3D NAND 저장 시스템) 내의 하나 이상의 구성요소들에 의해 수행된다.
100에서, 복수의 가변 노드들 중 하나로부터 복수의 검사 노드들 중 하나로 진행하는 것과 관련된 제 1 메시지가 계산되고, (1) 복수의 가변 노드들과 복수의 검사 노드들 사이의 하나 이상의 연결들은 LDPC 패리티 검사 매트릭스에 의해 규정되고, (2) 크기조정 상수는 제 1 메시지를 계산하기 위하여 사용된다. 예컨대, 제 1 메시지가 j번째 가변 노드로부터 i번째 검사 노드로 전달되면, 제 1 메시지는 Qji로 언급될 수 있다.
102에서, 복수의 검사 노드들 중 하나로부터 복수의 가변 노드들 중 하나로 진행하는 것과 관련된 제 2 메시지가 계산되고, 크기조정 상수는 제 2 메시지를 계산하기 위하여 사용되지 않는다. 예컨대, 제 2 메시지가 i번째 검사 노드로부터 j번째 가변 노드로 전달되면, 제 2 메시지는 Rij로 언급될 수 있다.
제 2 메시지와 관련된 검사 노드와 가변 노드가 반드시 제 1 메시지와 관련된 동일한 검사 노드 및/또는 동일한 가변 노드인 것은 아님을 주목해야 한다. 예컨대, 단계(100)에서 생성된 제 1 메시지는 제 1 가변 노드로부터 제 2 검사 노드(예, Q12)로의 메시지일 수 있고, 단계(102)에서 생성된 제 2 메시지는 제 3 검사 노드로부터 제 4 가변 노드(예, R34)로의 메시지일 수 있다. 사용된 특별한 패리티 검사 매트릭스(H)에 의존하여, 상이한 검사 노드들은 상이한 가변 노드들에 연결될 것이다. 패리티 검사 매트릭스가 N개의 열들과 M개의 행들을 갖는다면, N(m)은 검사 노드(m)에 연결된 가변 노드들의 세트이고, N(m)/n은 가변 노드(n)를 제외한, 검사 노드(m)에 연결된 가변 노드들의 세트이다. 즉, N(m)/n은 요소(n)가 제거된 세트(N(m))이다. 유사하게, M(n)은 가변 노드(n)에 연결된 검사 노드들의 세트이고, M(n)/m은 검사 노드(m)을 제외한, 가변 노드(n)에 연결된 검사 노드들의 세트이다.
다음의 도면은, 도 1의 단계들(100 및 102)을 수행하는 구성요소들을 포함하는, LDPC 디코더의 예를 도시한다.
도 2는 크기조정 상수를 사용하는 가변 노드 업데이터를 갖는 LDPC 디코더의 일 실시예를 도시하는 도면이다. 일부 실시예들에 있어서, LDPC 디코더(200)는 필드-프로그램 가능한 게이트 어레이(FPGA) 또는 주문형 집적 회로(ASIC)와 같은, 반도체 디바이스를 사용하여 구현된다.
도시된 예에 있어서, LDPC 디코더(200)는 가변 노드(j)로부터 검사 노드(i)로 전달되는 것과 관련된 메시지(Qji)를 생성하는 가변 노드 업데이터(202)를 포함한다. 편리성을 위해, 이러한 메시지는 본 명세서에서 "가변 노드(j)로부터 검사 노드(i)로 전달된 메시지"로 언급될 수 있다. 가변 노드 업데이터(202)는 도 1의 단계(100)를 수행하는 구성요소의 한 예이다.
크기조정 상수(α)에 대해, 크기조정 상수가 가변 노드 업데이터(202)에 입력되지만, 검사 노드 업데이터(206)에는 입력되지 않음을 주목해야 한다. 즉, 가변 노드 업데이터(202)는 크기조정 상수에 기초하여 및/또는 크기조정 상수를 사용하여 메시지(Qji)를 계산하고, 반면에 검사 노드 업데이터(206)는 계산시 크기조정 상수를 고려하지 않는다(예컨대, Rij에 대해). 메시지(Qji)를 생성하기 위하여 가변 노드 업데이터(202)에 의해 수행되는 계산의 보다 더 상세한 설명은 아래에서 추가로 상세하게 설명된다.
검사 노드 업데이터(206)는 도 1의 단계(102)를 수행하는 구성요소의 일 예를 도시한다. 예컨대, 검사 노드 업데이터(206)에 의해 출력된 메시지(Rij)는 도 1의 단계(102)에서 생성된 제 2 메시지의 일 예이다. 위와 같이, 검사 노드(i)로부터 가변 노드(j)로 전달되는 것과 관련된 메시지는 본 명세서에서 편리성을 위해 "검사 노드(i)로부터 가변 노드(j)로 전달된 메시지"로서 언급된다. 메시지(Rij)를 생성하기 위하여 검사 노드 업데이터(206)에 의해 수행된 계산의 보다 더 상세한 설명은 아래에서 추가로 상세하게 설명된다.
도시된 예시적인 LDPC 디코더에 있어서, N개의 로그-우도비(LLR) 값들(즉, L=[L0,...,LN-1])이 LDPC 디코더(200)에 입력된다. 예커대, LDPC 디코더(200)는 저장 시스템에서 사용될 수 있고, N개의 셀들을 포함하는 페이지 또는 세그먼트는 저장부로부터 판독된다. LLR 값들 각각은, 부호가 결정(예, 음의 부호는 1을 나타내고, 양의 부호는 0을 나타낸다)을 나타내고, 크기가 결정에 관련된 확실성 또는 가능성을 나타내는(예컨대, 큰 크기는 관련된 결정에서 더 큰 확실성에 대응하는) 소프트 값이다. 도시된 예에서, 고정된 수의 비트들(w)은 LDPC 디코더(200)에 입력된 각 LLR 값을 나타내기 위하여 사용된다. 예컨대, w = 3이면, 각 Li값은 3개의 비트들을 사용하여 표시된다.
Qji 메시지들(j번째 가변 노드로부터 i번째 검사 노드로 보내진)은 다음의 수학식을 사용하여 계산될 수 있다.
Figure pat00001
0 ≤ j ≤ N-1 이고, i ∈ M(j) 이다.
수학식 1은 가변 노드 업데이터에 의해 수행되는 메시지 계산의 단순한 한 표현이다. 예컨대 수학식 1은 다음과 같이 다시 쓰여질 수 있다.
Figure pat00002
유사하게, 0 ≤ j ≤ N-1 이고, i ∈ M(j) 이다.
수학식 2는 특정 경우들에 대해 더 단순화될 수 있다. 예컨대, 일부 경우들에 있어서, 모든 N개의 LLR 값들의 크기는 동일하고, 오로지 부호만이 변한다(예, 판독되는 셀마다). 예컨대, 저장 시스템에 있어서, 페이지 또는 세그먼트의 오로지 한번의 판독만이 수행되었다면, 시스템은 동일한 크기를 갖는 Lj개의 값들을 가질 것이다(예, 판독 임계값보다 낮은 전압을 저장하는 셀들에 대해 Lj = -2, 또는 판독 임계값보다 큰 전압을 저장하는 셀들에 대해 Lj = 2). 크기들(이러한 예에서, 2)은 동일하고, 오로지 부호만이 다르다. 이러한 경우들에서, (예, 수학식 2에서) Lj/α의 크기가 미리 계산될 수 있고, 오로지 부호만이 "처리중"에 결정될 필요가 있다. Lj/α의 (미리-계산된) 크기를 나타내기 위하여 Z(0/1)이 사용되고, (어느 것이 특별한 셀에 대한 것이든지) "±"가 적절한 부호를 나타내기 위하여 사용된다면, 수학식 2는 다음과 같이 다시 쓰여질 수 있다.
Figure pat00003
유사하게, 0 ≤ j ≤ N-1 이고, i ∈ M(j) 이다.
많은 경우들(예, 대략 98%의 시간)에서, LDPC 디코더는 원하는 세그먼트 또는 페이지를 성공적으로 디코딩하기 위하여 페이지의 오로지 한 번의 판독을 필요로 한다. Z(0/1)를 사용함으로써, 더 적은 메모리가 액세스될 수 있고, 따라서, 전력이 절감될 수 있다. 물론, Z(0/1)는 Lj/α보다 단순한 동작이다.
다음의 도면은 수학식 1을 사용하여 일 Qji값의 계산의 수치 예를 도시한다.
도 3은 가변 노드로부터 검사 노드로 보내진 메시지의 계산의 수치 예를 도시하는 도면이다. 일부 실시예들에 있어서, 프로세스는 도 2의 가변 노드 업데이터(202)에 의해 수행된다. 이러한 예에 있어서, w = 3(즉, LDPC 디코더에 입력된 각 LLR 값을 나타내기 위하여 3개의 비트들이 사용된다)이고, 검사 노드들(350, 352 및 354)은 가변 노드(300)(예, 연결들이 패리티 검사 매트릭스 H에 의해 규정되는)에 연결된다.
도시된 예에 있어서, 제 1 가변 노드(300)로부터 제 4 검사 노드(352)로의 메시지(Q14)가 계산되고 있다. 이 예에서 해당 LLR 값은 L1이고, 이는 이 예에서 3b110이고, 이는 2의 보수로 10진수의 -2이다. 접두어 "3b"는 2진 형태의 수를 나타내기 위하여 3개의 비트들이 사용됨을 나타내는 것임을 주목해야 한다. 물론, 2의 보수 표현이 본 명세서에서 도시되지만, 부호가 붙여진 임의의 표현이 사용될 수 있다.
수학식 1의 후자 부분을 참조하면, 합산은 세트 M(j)/i에 걸쳐 수행된다. 도 3에 도시된 예에 대해, 세트 M(j)은 제 2 검사 노드(350), 제 4 검사 노드(352) 및 제 5 검사 노드(354)를 포함하고, 세트 M(j)/i는 제 2 검사 노드(350)와 제 5 검사 노드(354)를 포함한다.
분해된 세트 M(j)/i에 대해, 수학식 1에서의 합산은 (R21 + R51)으로 단순화된다. 그 자체로,
Figure pat00004
이다. 크기조정 인자 α=0.5이면, Q14 = -2 + 0.5×(-1 + -3) = -4이다.
도 2를 참조하면, Qji 메시지들을 생성하는 것에 부가하여, 가변 노드 업데이터(202)는 0 ≤ j ≤ N-1에 대해 Qj를 생성한다. Qj는 본 명세서에서 디코딩된 LLR로서 언급될 수 있다. 이들 값들은 가변 노드 업데이터(202)로부터 코드워드 업데이터(208)로 전달된다. 이러한 예에서, 가변 노드 업데이터(202)는 Qj를 계산하기 위하여 다음의 수학식을 사용한다.
Figure pat00005
0 ≤ j ≤ N-1이다. 이전과 같이, 모든 LLR 값들의 크기들이 동일하고, 오로지 부호만이 다르다면(예, 고체 상태 저장부의 한 번의 판독 이후의 경우와 같이), 수학식 4는 다음과 같이 다시 쓰여질 수 있다.
Figure pat00006
0 ≤ j ≤ N-1이다.
일부 실시예들에 있어서, Z(0/1)은 미리 계산되고, 가변 노드 업데이터(202)는 Z(0/1)의 미리 계산된 값이 저장되는 일부 저장부 또는 메모리(도 2에 미도시)를 포함한다. 예컨대, Z(0/1)는 펌웨에에 의해 설정된 레지스터에 저장될 수 있다. Qji 또는 Qj가 계산되고, Z(0/1)를 사용하는 것이 적절할 때, 저장된 값은 저장부로부터 얻어진다.
도 3을 참조하면, 계산되는 Qj의 수치 예가 도시된다. 이 예에서, 세트 M(j)은 검사 노드들(350, 352 및 354)을 포함하고, 따라서 도시된 예시적인 값들에 대해,
Figure pat00007
= -2 + 0.5 × (-1 + -2 + -3) = -5 이다.
Rij메시지들(i번째 검사 노드로부터 j번째 가변 노드로 전달된)은 다음의 수학식을 사용하여 계산된다.
Figure pat00008
0 ≤ j ≤ N-1이고, j ∈ N(i)이다.
수학식 6의 제 1 부분(즉, Πj' ∈N(i)/j sign(Qi'j))은 +1 또는 -1을 생성한다. 수학식 6의 제 2 부분(즉, minj' ∈N(i)/j|Qi'j|)은 양의 값을 생성한다. 즉, 수학식 6의 제 1 부분은 부호를 결정하고, 수학식 6의 제 2 부분은 크기를 결정한다. 다음의 도면은 계산되는 하나의 Rij값의 수치 예를 도시한다.
도 4는 검사 노드로부터 가변 노드로 보내진 메시지의 계산의 수치 예를 도시하는 도면이다. 도시된 예에서, 제 6 검사 노드(400)로부터 제 3 가변 노드(452)로의 메시지(R63)가 계산되고, 검사 노드(400)는 가변 노드들(450, 452 및 454)에 연결된다. 이전의 예에서와 같이, w = 3이다. 크기조정 상수(즉, α)는 Rij를 계산하는데 사용되지 않아, 이 예에서 예시적인 수치 값을 규정하는 것은 필요하지 않다.
수학식 6에서, 합산 및 최소값 동작 모두 세트 N(i)/j에 걸쳐 동작한다. 본 명세서에 도시된 예에 대해, 세트 N(i)는 제 2 가변 노드(450), 제 3 가변 노드(452) 및 제 4 가변 노드(454)를 포함하고, 세트 N(i)/j는 제 2 가변 노드(450) 및 제 4 가변 노드(454)를 포함한다.
해결된 세트 N(i)/j에 대해, 수학식 6은 R63 = (sign(Q26) × sign(Q46)) min(|Q26|
Figure pat00009
,|Q46|)으로 단순화된다. 이것은 차례로 R63 = ((+1)×(+1))min(1,2)=1로 단순화된다.
도 2를 참조하면, 코드워드 업데이터(208)는 ( 0 ≤ j ≤ N-1에 대해) 다음 수학식을 사용하여
Figure pat00010
를 계산한다.
Figure pat00011
일부 실시예들에 있어서, 디코딩된 LLR 값들(즉,Qi)의 MSB 비트들은 디코딩된 시퀀스(즉,,,
Figure pat00012
)를 포함하여, 디코딩된 LLR 값들의 MSB 비트들은, 디코딩이 성공적인지의 여부를 결정하기 위하여 신드롬 업데이터(210)에 전달된다. 즉, 일부 실시예들에 있어서, 코드워드 업데이터(208)는 상대적으로 단순한 처리를 수행한다.
신드롬 업데이터(210)는 모든 에러들이 코드워드로부터 제거되었는지를 확인하기 위하여 검사한다. 만약
Figure pat00013
=0이면, 신드롬 업데이터(210)는 디코딩이 성공적이고, 모든 에러들이 코드워드로부터 제거되었는지를 결정한다. 만약 그렇다면, LDPC 디코더(200)는 디코딩을 중지하고, 디코더 출력으로서
Figure pat00014
를 출력한다.
만약
Figure pat00015
≠0이면, 코드워드(즉,
Figure pat00016
)는 출력되지 않고, 다른 디코딩 반복이 수행된다(예, 가변 노드 업데이터(202)는 새로운 만약 Qji메시지들 및 새로운 Qj값들을 계산하고, 검사 노드 업데이터(206)는 새로운 Rij메시지를 계산하고, 코드워드 업데이터(208)는 새로운 코드워드를 계산하고, 새로운 코드워드와 패리티 검사 매트릭스의 곱이 0인지를 검사한다), 즉 일부(예, 미리 한정된) 최대 수의 반복들에 도달할 때까지 수행된다.
다음은, 위에서 기술된 메시지 업데이팅 기술들을 사용하는 3단계 LDPC 디코딩 프로세스의 예이고, 양자화의 영향들(즉, w는 고정된, 비-무한 수인)은 명백하게 고려된다. 다음의 예들이 모든 LLR 값들의 크기들이 동일하고, 따라서 Lj/α 대신에 ±Z(0/1)이 사용된다고 가정하는 것을 주목해야 한다. 물론, 조건이 충족되지 않으면, Lj/α가 ±Z(0/1) 대신에 사용될 수 있다.
단계 1 (가변 노드 업데이트 )
0 ≤ j ≤ N-1 및 j ∈ N(i)에 대해, 다음 수학식을 계산한다.
Figure pat00017
0 ≤ j ≤ N-1에 대해, 다음 수학식을 계산한다.
Figure pat00018
단계 2 (검사 노드 업데이트 )
0 ≤ j ≤ M-1 및 j ∈ N(i)에 대해, 다음 수학식을 계산한다.
Figure pat00019
단계 3 (결정)
0 ≤ j ≤ N-1에 대해,
Figure pat00020
를 계산하고,
Figure pat00021
만약
Figure pat00022
=0(즉, 디코딩이 성공적)이면, 디코딩이 중지되고, 코드워드(즉,
Figure pat00023
)는 LDPC 디코더 출력으로서 출력된다. 코드워드(즉,
Figure pat00024
)와 패리티 검사 매트릭스(즉, H)의 곱이 0이 아니면, 프로세스는 일부 최대 수의 반복들에 도달할 때까지, 또는 디코딩이 성공적일 때까지 단계 1로 되돌아간다.
도 5는 가변 노드 업데이트 상태 동안 업데이트된 메시지들이 크기조정 상수를 사용하여 업데이트되는 LDPC 디코딩 프로세스의 일 실시예를 도시하는 흐름도이다. 도시된 예에서, 도 1의 메시지 업데이팅 프로세스는, 그러한 메시지 업데이팅 프로세스가 사용될 수 있는 방법을 설명하기 위하여, LDPC 디코딩 프로세스에 병합된다. 편리성을 위해, 도 1에 도시된 단계들은 동일한 번호를 붙여 도 5에 도시된다.
단계(100)에서, 복수의 가변 노드들 중 하나로부터 복수의 검사 노드들 중 하나로 진행하는 것과 관련된 제 1 메시지가 계산되고, 여기에서 (1) 복수의 가변 노드들과 복수의 검사 노드들 사이의 하나 이상의 연결들은 LDPC 패리티 검사 매트릭스에 의해 규정되고, (2) 크기조정 상수가 제 1 메시지를 계산하기 위하여 사용된다.
단계(500)에서, 모든 제 1 메시지들이 계산되었는지의 여부가 결정된다. 예컨대, 단계(100)는 0 ≤ j ≤ N-1 및 i ∈ M(j)에 대해 수행된다. 단계(100)가 i 및 j의 모든 조합들에 대해 수행되었다면, 500에서의 결정은 "예"이다. 500에서 계산될 더 많은 제 1 메시지들이 남아 있다고 결정되면, 단계(100)는 반복된다.
모든 제 1 메시지들을 계산한 후, Qj는 단계(502)에서 계산된다. 도 2의 예에서, 가변 노드 업데이터(202)는 이러한 단계를 수행한다. 504에서 모든 Qj값들이 계산되었는지가 결정된다. 예컨대 Qj가 아직 0 ≤ j ≤ N-1에 대해 계산되지 않았다면, 단계(502)가 반복된다.
모든 Qj값들이 계산된 후, 102에서 복수의 검사 노드들 중 하나로부터 복수의 가변 노드들 중 하나로 진행하는 것과 관련된 제 2 메시지가 계산되고, 여기에서 크기조정 상수는 제 2 메시지를 계산하기 위하여 사용되지 않는다. 506에서, 모든 제 2 메시지가 계산되었는지가 결정된다. 예컨대, Rij값들이 0 ≤ j ≤ M-1 및 j ∈ M(i)의 모든 조합들에 대해 아직 계산되지 않았다면, 단계(102)가 반복된다.
모든 제 2 메시지들이 계산된 후, 508에서 하나 이상의 Qj값들을 사용하여 코드워드가 계산된다. 도 2에서, 예컨대 단계(508)는
Figure pat00025
를 생성하는 코드워드 업데이터(208)에 의해 수행될 수 있다.
510에서, 디코딩이 성공적인지가 결정된다. 예컨대, 도 2의 코드워드 업데이터(208)는
Figure pat00026
=0인지를 결정할 수 있다. 만약 그렇다면, 프로세스는 디코딩이 성공적(즉, 코드워드에 어떠한 에러도 남아있지 않고)이고, 코드워드가 512에서 출력된다고 결정한다.
Figure pat00027
가 0이 아닌 값이라면, 프로세스는 디코딩이 성공적이 아니라고(즉, 일부 에러들이 코드워드에 남아있다고) 결정한다.
510에서 디코딩이 성공적인 것으로 결정되면, 코드워드는 512에서 출력된다. 510에서 디코딩이 성공적인 것으로 결정되지 않으면, 514에서 최대 수의 시도에 도달하였는지가 결정된다. 예컨대, LDPC 디코더는 만약 상당한 최대 수의 디코딩 시도에 도달되면 페이지 또는 세그먼트를 디코딩하려는 시도를 중지할 수 있다(예, 무한 루프 상황이 발생하는 것을 방지한다). 최대 수의 시도에 도달하지 않으면, 새로운 제 1 메시지가 100에서 계산된다. 최대 수의 시도에 도달하면, 처리는 종료된다(예, 판독 실패 또는 디코딩 실패 신호가 적절한 구성요소 또는 엔티티에 전달된다).
도 5는 플러딩 스케줄링(flooding scheduling)으로 불리는 한 유형의 디코딩 스케줄링을 도시한다. 본 명세서에서 기술된 기술들은 플러딩 스케줄링에 국한되지 않고, 다른 유형의 디코딩 스케줄링에도 사용될 수 있다. 예컨대, 다른 유형들의 디코딩 스케줄링(즉, 비-플러딩 스케줄링)은 단계(500) 및/또는 단계(504)에서 "모두 계산하였는지?"의 검사를 행하지 않는다. 도 5는 단순한 예이고, 제한하려는 것은 아니다.
도 6은 크기조정 상수를 사용하는 가변 노드 업데이터를 갖는 LDPC 디코더를 포함하는 저장 시스템의 일 실시예를 도시하는 도면이다. 도 6은 도 2의 LDPC 디코더(200)가 저장 시스템에 병합될 수 있는 방법의 일 예를 도시한다. 간결함을 위해, 판독 프로세서(600)에 대응하는 기록 프로세서는 도시되지 않았다. 물론 이것은 제한하려는 것은 아니고, 본 명세서에서 기술된 기술들은 공동 위치된 기록 프로세서를 갖는 시스템에서 사용될 수 있다.
판독 프로세서(600)는, 고체 상태 저장부(650)를 판독하기 위하여 사용되는 하나 이상의 판독 임계치들을 생성하는 판독 임계치 생성기(602)를 포함한다. 다양한 실시예들에 있어서, 고체 상태 저장부(650)은 NAND 플래쉬 또는 3D NAND를 포함할 수 있다. 판독 임계치 생성기(602)에 의해 출력된 판독 임계치(들)는 고체 상태 저장부(650) 내에서 N개 셀들의 한 그룹(예, 페이지, 세그먼트, 등)을 판독하기 위하여 사용된다.
초기에, 고체 상태 저장부(650)의 오로지 한 번의 판독이 수행된다(예, N개의 셀들을 포함하는 원하는 페이지 또는 세그먼트가 판독된다). 이들 N개 셀들에 대응하는 N개의 하드 리드(hard read) 값들은 고체 상태 저장부(650)로부터 LLR 값 생성기(604)로 전달된다. 예컨대, 고체 상태 저장부(650)가 단일 레벨의 셀들(SLC)를 포함하면, 각 하드 리드 값들은 1 또는 0이 될 수 있다. 다양한 다른 실시예들에 있어서, 고체 상태 저장부(650)는, 두 개의 비트들이 셀마다 저장되는 다수-레벨 셀들(MLC), 셀마다 3개의 비트들이 저장되는 3중 레벨 셀들(TLC), 등을 포함한다.
LLR 값 생성기(604)는 N개의 하드 리드 값들을 사용하여 N개의 LLRs를 생성한다. (초기에) N개 셀들의 그룹의 오로지 한 번의 판독이 수행되므로, LLR 값 생성기(604)로부터 LDPC 디코더(606)로 전달되는 N개의 LLR 값들 모두(즉, L=[L0,...,LN-1])은 동일한 크기를 갖는다. LDPC 디코더(606)(또는 그 내부의 가변 노드 업데이터)는, 모든 LLR 크기들이 동일하고(예, 디코딩 시도들을 계수하고 있거나, 새로운 세그먼트 또는 페이지의 디코딩이 시작될 때를 추적하고 있기 때문에), 레지스터(608)에 저장된 저장된 Z(0/1) 값을 사용할 수 있음을 인식한다. 예컨대, 레지스터(608)는 펌웨어에 의해 적절한 값으로 프로그램될 수 있다. Z(0/1)의 각 저장된 값과 함께 사용할 부호의 선택(예컨대, 식 Qj = ±Z(0/1) + ∑i∈M(j)Rij에서, Z(0/1) 항의 앞의 부호는 선택되거나 결정될 필요가 있다)은 LDPC 디코더(606)에 입력되는 LLR 값들의 부호를 사용하여 결정될 수 있다.
LDPC 디코더(606)에서 디코딩이 성공적이면, 디코딩된 코드워드가 출력된다. 그러나, 만약 LDPC 디코더(606)에서 디코딩이 성공적이지 않으면(예, 최대 디코딩 시도들의 일부 수에 도달된 이후), 고체 상태 저장부(650)의 다른 판독이 수행된다. 예컨대, 판독 임계치 생성기(602)는 원하는 페이지 또는 세그먼트를 판독하기 위하여 하나 이상의 판독 임계치들의 제 2 세트를 생성한다. N개의 하드 리드 판독값들의 제 2 세트는 고체 상태 저장부(650)로부터 LLR 값 생성기(604)로 전달된다.
이용 가능한 N개의 하드 리드 값들의 2개 세트들을 통해, LLR 값 생성기(604)는 N개의 LLR 값들의 제 2 세트를 생성한다. N개의 LLR 값들의 제 1 세트와 달리, 제 2 세트 내의 이러한 LLR 값들은 모두가 동일한 크기를 갖지는 않을 것이다. 예컨대, 제 2 판독 이후, LLR 값 생성기(604)는 N 개의 셀들 각각을 세 개의 빈들(bins) 중 하나에 할당한다. 가장 좌측 빈과 가장 우측 빈에 할당된 셀들은 동일한 LLR 크기(하지만 다른 부호들)를 가질 것이지만, 중앙 빈에 할당된 셀들은 다른 두 빈들에 할당된 셀들과 상이한 LLR 크기를 가질 것이다. 이와 같이, 제 2 판독 이후, LDPC 디코더(606)(또는 그 내부의 가변 노드 업데이터)는 Qji 및/또는 Qj를 계산할 때, 레지스터(608)에 저장된 Z(0/1)의 저장된 값을 사용할 수 없다.
N개 셀들의 그룹의 두 번의 판독이 수행되면(예, 판독 임계치(들)의 둘 이상의 세트들을 사용하여), N개의 하드 리드 값들의 이들 두 세트들은 N개의 LLR 값들을 생성하는데 사용된다. 임의의 적합한, LLR 값 생성 기술들이 사용될 수 있고, 본 명세서에서 기술된 기술들은 사용된 특별한 LLR 값 생성 기술과 무관하다.
N개의 LLR 값들은 LLR 값 생성기(604)로부터, 크기조정 상수를 사용하는 가변 노드 업데이터를 포함하는 LDPC 디코더(606)(도 2의 LDPC 디코더(200)를 참조)로 전달된다. LDPC 디코더(606)는 상술한 바와 같이 N개의 LLR 값들을 처리하고, 일단 모든 에러가 코드워드로부터 제거되었다고 결정되면, 길이 N(예,
Figure pat00028
)의 디코딩된 코드워드를 출력한다. 필요하다면, 고체 상태 저장부(650)의 추가적인 판독들이 (예, 새로운 세트의 판독 임계치(들)를 사용하여) 수행되어, N개의 하드 리드 값들의 새로운 세트와 N개의 LLR 값들의 새로운 세트가 LDPC 디코더(606)에 의한 다른 디코딩 시도에 대해 생성될 수 있다. 일부 실시예들에 있어서, 디코딩 시도들은 최대 수의 디코딩 시도들에 도달되는 경우 종료된다.
도 7은 제 1 메시지(예, Qji) 및/또는 Qj를 계산하는데 사용된 값들을 결정하는 프로세스의 일 실시예를 도시하는 흐름도이다. 일부 실시예들에 있어서, 도시된 예시적인 프로세스는 도 1 및/또는 도 5의 단계(100)에서 사용된다. 700에서, 가변 노드 업데이터에 입력된 모든 LLR 값들이 동일한 크기를 갖도록 보장되는지의 여부가 결정된다. 예컨대, 상술한 바와 같이, 일부 저장 시스템들에 있어서, 원하는 페이지 또는 세그먼트의 오로지 한 번의 판독이 수행되었다면, 모든 LLR 값들이 동일한 크기를 갖는 것이 보장된다. LDPC 디코더 또는 가변 노드 업데이터는 이것을 다양한 방식으로 추적할 수 있다(예, LDPC 디코더는 펌웨어에 의해 디코딩이 하드 리드 값들 또는 소프트 리드 값들을 사용하는지에 대해 통보받는다).
700에서 모든 LLR 값들이 동일한 크기를 갖도록 보장된다고 결정되면, 702에서 모든 LLR 값들이 갖도록 보장되는 동일한 크기와 관련된 저장된 크기는 702에서 얻어진다. 예컨대, 펌웨어는 도 6의 레지스터(608)에 Z(0/1)에 대한 값(즉, Lj/α의 크기)을 저장할 수 있고, 거기에 저장된 값은 702에서 얻어진다. 704에서, 적절한 부호를 선택하고 저장된 크기를 사용하여 제 1 메시지가 계산된다. 예컨대, 2의 보수에서, 최상위 비트(MSB)가 1이면, 부호는 음이다. 만약 MSB가 0이면, 부호는 양이다. 일 예로서 수학식 9를 사용하여, (j의 그 값에 대해) Lj의 MSB가 1이면, 음의 부호가 선택된다(예, ±Z(0/1) 항의 부호에 대해).
그러나, 만약 700에서 모든 LLR 값들이 (예, 두 번 이상의 판독들이 수행되어, 모든 LLR 값들이 동일한 크기를 갖는 것이 보장될 수 없어서) 동일한 크기를 갖는 것이 보장되지 않는다면, 706에서 저장된 크기에 대응하는 크기를 계산함으로써 제 1 메시지가 계산된다. 예컨대, Lj/α는 처리 중에 계산될 수 있다. 일부 실시예들에 있어서, Lj/α는 Lj의 각 고유 값에 대해 한번 (예, 처리 중에) 계산되고, 이후 706에서 장래의 사용을 위해 저장된다. 만약 Lj의 동일한 값이 이후에 관찰되면, 저장된 값이 사용된다. 분할을 수행하는 것은 계산 집중적이거나 및/또는 값비쌀 수 있고, 이것은 수행되는 분할들의 수를 감소시킨다.
도 8은 본 명세서에서 기술된 기술들에 의해 제공되는 성능 개선의 일 실시예를 도시하는 그래프이다. 이러한 그래프에서, w의 다양한 값들(즉, LDPC 디코더에 입력된 소프트 정보를 나타내기 위하여 사용된 비트들의 수)에 대한 성능 그래프들이 도시된다. 그래프(800)(파선)은 (즉, 무한 수의 비트들이 소프트 정보를 나타내기 위하여 사용 가능할 때) 부동 소수점 표현과 관련된 성능을 도시한다.
그래프들(810 및 812)은, 크기조정 상수가 검사 노드 업데이터에 의해 사용되는 및/또는 고려되는, LDPC 디코더와 관련된다. 그래프(810)(마름모를 갖는 파선)는 소프트 정보를 나타내기 위하여 4개 비트들이 사용될 때의 다른 LDPC 디코더의 성능을 도시하고, 그래프(812)(정사각형을 갖는 파선)는 3개 비트들이 소프트 정보를 나타내기 위하여 사용될 때 다른 시스템에 대한 성능을 도시한다.
그래프(820)(마름모를 갖는 일점 쇄선)와 그래프(822)(정사각형을 갖는 일점쇄선)은 크기조정 상수가 가변 노드 업데이터에 의해 사용되고 및/또는 고려되는 LDPC 디코더와 관련된다. 그래프(820)은 w = 4에 대한 성능을 나타내고, 그래프(822)는 w = 3에 대한 성능을 나타낸다. 그래프(820)의 성능은 둘 모두 w = 4에 제한되는 그래프(820)의 성능보다 양호함을 주목해야 한다. 그래프(822)와 그래프(812)(둘 모두 w = 3에 제한되는) 사이의 성능 개선은 특히 두드러진다. w = 3은 실제 설계 선택 범위 내에 들고, 따라서 본 명세서에서 기술된 기술들에 의해 제공된 성능 개선은 실제 시스템들에서 현저할 것이다.
상술한 실시예들이 이해의 명확성을 위해 일부 상세하게 기술되었지만, 본 발명은 제공된 세부사항들에 국한되지 않는다. 본 발명을 구현하는 많은 대안적인 방식들이 존재한다. 개시된 실시예들은 예시적이며 제한하는 것은 아니다.

Claims (16)

  1. 시스템으로서,
    복수의 가변 노드들 중 하나로부터 복수의 검사 노드들 중 하나로 진행하는 것과 관련된 제 1 메시지를 계산하도록 구성된 가변 노드 업데이터로서, (1) 상기 복수의 가변 노드들과 상기 복수의 검사 노드들 사이의 하나 이상의 연결들은 LDPC 패리티 검사 매트릭스에 의해 규정되고, (2) 크기조정 상수가 상기 제 1 메시지를 계산하기 위하여 사용되는, 가변 노드 업데이터; 및
    상기 복수의 검사 노드들 중 하나로부터 복수의 가변 노드들 중 하나로 진행하는 것과 관련된 제 2 메시지가 계산하도록 구성된 검사 노드 업데이터로서, 상기 크기조정 상수는 상기 제 2 메시지를 계산하기 위하여 사용되지 않는, 검사 노드 업데이터;를 포함하는,
    시스템.
  2. 제 1항에 있어서,
    필드-프로그램 가능한 게이트 어레이(FPGA) 또는 주문형 집적 회로(ASIC) 중 하나 이상을 포함하는 반도체 디바이스를 사용하여 구현되는, 시스템.
  3. 제 1항에 있어서,
    통신 시스템, 고체 상태 저장 시스템, NAND 플래쉬 저장 시스템 또는 3D NAND 저장 시스템 중 하나 이상에 포함되는, 시스템.
  4. 제 1항에 있어서,
    코드워드를 계산하도록 구성된 코드워드 업데이터; 및
    상기 코드워드와 패리티 검사 매트릭스에 적어도 부분적으로 기초하여 디코딩이 성공적인지를 결정하도록 구성된 신드롬 업데이터로서, 디코딩이 성공적인 것으로 결정된 경우, 상기 코드워드가 출력되는, 신드롬 업데이터;를 더 포함하는, 시스템.
  5. 제 1항에 있어서,
    고체 상태 저장부를 판독하는 것과 관련된 하나 이상의 판독 임계치들을 생성하도록 구성된 판독 임계치 생성기; 및
    복수의 로그-우도비(LLR) 값들을 생성하도록 구성된 LLR 값 생성기로서, 상기 가변 노드 업데이터는 상기 복수의 LLR 값들 중 적어도 하나에 기초하여 상기 제 1 메시지를 계산하도록 추가로 구성되는, LLR 값 생성기;를 더 포함하는, 시스템.
  6. 제 1항에 있어서,
    상기 가변 노드 업데이터는,
    상기 제 1 메시지를 계산하는데 사용된 모든 로그-우도비(LLR) 값들이 동일한 크기를 갖도록 보장되는지를 결정하고,
    모든 LLR 값들이 동일한 크기를 갖도록 보장된다고 결정된 경우,
    모든 LLR 값들이 갖도록 보장되는 동일한 크기와 관련된 저장된 크기를 얻고, 및
    적절한 부호를 선택하고 상기 저장된 크기를 사용함으로써 상기 제 1 메시지를 계산하여,
    상기 제 1 메시지를 계산하도록 추가로 구성되는, 시스템.
  7. 방법으로서,
    복수의 가변 노드들 중 하나로부터 복수의 검사 노드들 중 하나로 진행하는 것과 관련된 제 1 메시지를 계산하기 위하여 프로세서를 사용하는 단계로서, (1) 상기 복수의 가변 노드들과 상기 복수의 검사 노드들 사이의 하나 이상의 연결들은 LDPC 패리티 검사 매트릭스에 의해 규정되고, (2) 크기조정 상수가 상기 제 1 메시지를 계산하기 위하여 사용되는, 제 1 메시지를 계산하기 위하여 프로세서를 사용하는 단계; 및
    상기 복수의 검사 노드들 중 하나로부터 복수의 가변 노드들 중 하나로 진행하는 것과 관련된 제 2 메시지를 계산하기 위하여 프로세서를 사용하는 단계로서, 상기 크기조정 상수는 상기 제 2 메시지를 계산하기 위하여 사용되지 않는, 제 2 메시지를 계산하기 위하여 프로세서를 사용하는 단계;를 포함하는,
    방법.
  8. 제 7항에 있어서,
    필드-프로그램 가능한 게이트 어레이(FPGA) 또는 주문형 집적 회로(ASIC) 중 하나 이상을 포함하는 반도체 디바이스를 사용하여 수행되는, 방법.
  9. 제 7항에 있어서,
    통신 시스템, 고체 상태 저장 시스템, NAND 플래쉬 저장 시스템 또는 3D NAND 저장 시스템 중 하나 이상에 의해 수행되는, 방법.
  10. 제 7항에 있어서,
    코드워드를 계산하는 단계; 및
    상기 코드워드와 패리티 검사 매트릭스에 적어도 부분적으로 기초하여 디코딩이 성공적인지를 결정하는 단계로서, 디코딩이 성공적인 것으로 결정된 경우, 상기 코드워드가 출력되는, 결정하는 단계;를 더 포함하는, 방법.
  11. 제 7항에 있어서,
    고체 상태 저장부를 판독하는 것과 관련된 하나 이상의 판독 임계치들을 생성하는 단계; 및
    복수의 로그-우도비(LLR) 값들을 생성하는 단계로서, 상기 프로세서는 상기 복수의 LLR 값들 중 적어도 하나에 기초하여 상기 제 1 메시지를 계산하도록 추가로 구성되는, 생성하는 단계;를 더 포함하는, 방법.
  12. 제 7항에 있어서,
    상기 제 1 메시지를 계산하기 위하여 프로세서를 사용하는 단계는,
    상기 제 1 메시지를 계산하는데 사용된 모든 로그-우도비(LLR) 값들이 동일한 크기를 갖도록 보장되는지를 결정하는 단계;
    모든 LLR 값들이 동일한 크기를 갖도록 보장된다고 결정된 경우,
    모든 LLR 값들이 갖도록 보장되는 동일한 크기와 관련된 저장된 크기를 얻는 단계; 및
    적절한 부호를 선택하고 상기 저장된 크기를 사용함으로써 상기 제 1 메시지를 계산하는 단계;를 포함하는, 방법.
  13. 컴퓨터 프로그램을 저장한 컴퓨터 판독 가능한 저장매체로서,
    상기 컴퓨터 프로그램은,
    복수의 가변 노드들 중 하나로부터 복수의 검사 노드들 중 하나로 진행하는 것과 관련된 제 1 메시지를 계산하되, (1) 상기 복수의 가변 노드들과 상기 복수의 검사 노드들 사이의 하나 이상의 연결들은 LDPC 패리티 검사 매트릭스에 의해 규정되고, (2) 크기조정 상수가 상기 제 1 메시지를 계산하기 위하여 사용되는, 제 1 메시지를 계산하고; 및
    상기 복수의 검사 노드들 중 하나로부터 복수의 가변 노드들 중 하나로 진행하는 것과 관련된 제 2 메시지를 계산하되, 상기 크기조정 상수는 상기 제 2 메시지를 계산하기 위하여 사용되지 않는, 제 2 메시지를 계산하기 위한,
    컴퓨터 명령들을 포함하는,
    컴퓨터 판독 가능한 저장매체.
  14. 제 13항에 있어서,
    코드워드를 계산하고; 및
    상기 코드워드와 패리티 검사 매트릭스에 적어도 부분적으로 기초하여 디코딩이 성공적인지를 결정하는, 컴퓨터 명령들을 더 포함하고,
    디코딩이 성공적인 것으로 결정된 경우, 상기 코드워드가 출력되는,
    컴퓨터 판독 가능한 저장매체.
  15. 제 13항에 있어서,
    고체 상태 저장부를 판독하는 것과 관련된 하나 이상의 판독 임계치들을 생성하고; 및
    복수의 로그-우도비(LLR) 값들을 생성하는, 컴퓨터 명령들을 더 포함하고,
    상기 제 1 메시지를 계산하기 위한 상기 컴퓨터 명령들은, 상기 복수의 LLR 값들 중 적어도 하나에 기초하여 상기 제 1 메시지를 계산하기 위한 컴퓨터 명령들을 더 포함하는, 컴퓨터 판독 가능한 저장매체.
  16. 제 13항에 있어서,
    상기 제 1 메시지를 계산하기 위한 상기 컴퓨터 명령들은,
    상기 제 1 메시지를 계산하는데 사용된 모든 로그-우도비(LLR) 값들이 동일한 크기를 갖도록 보장되는지를 결정하고;
    모든 LLR 값들이 동일한 크기를 갖도록 보장된다고 결정된 경우,
    모든 LLR 값들이 갖도록 보장되는 동일한 크기와 관련된 저장된 크기를 얻고; 및
    적절한 부호를 선택하고 상기 저장된 크기를 사용함으로써 상기 제 1 메시지를 계산하기 위한; 컴퓨터 명령들을 포함하는,
    컴퓨터 판독 가능한 저장매체.
KR1020140006451A 2013-02-04 2014-01-20 크기조정 상수를 사용하는 가변 노드 업데이터를 갖는 ldpc 디코더 KR101631128B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201361760519P 2013-02-04 2013-02-04
US61/760,519 2013-02-04
US14/083,186 2013-11-18
US14/083,186 US9231619B2 (en) 2013-02-04 2013-11-18 LDPC decoder with a variable node updater which uses a scaling constant

Publications (2)

Publication Number Publication Date
KR20140099820A true KR20140099820A (ko) 2014-08-13
KR101631128B1 KR101631128B1 (ko) 2016-06-16

Family

ID=51260378

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140006451A KR101631128B1 (ko) 2013-02-04 2014-01-20 크기조정 상수를 사용하는 가변 노드 업데이터를 갖는 ldpc 디코더

Country Status (2)

Country Link
US (1) US9231619B2 (ko)
KR (1) KR101631128B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9306600B2 (en) * 2014-01-06 2016-04-05 Micron Technology, Inc. Read threshold calibration for LDPC
CN104393952A (zh) * 2014-10-29 2015-03-04 苏州市职业大学 一种纠错码译码器
KR20160102738A (ko) * 2015-02-23 2016-08-31 에스케이하이닉스 주식회사 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
KR20180009558A (ko) 2016-07-19 2018-01-29 삼성전자주식회사 저밀도-패리티 체크 코드를 이용하는 디코더 및 이를 포함하는 메모리 컨트롤러

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080072406A (ko) * 2007-02-02 2008-08-06 엘지전자 주식회사 모델 행렬을 이용하여 ldpc 복호화를 수행하는 방법
KR20090012189A (ko) * 2007-07-27 2009-02-02 고려대학교 산학협력단 Ldpc 부호의 성능 개선을 위한 스케일링 기반의 개선된min-sum 반복복호알고리즘을 이용한 복호 장치 및그 방법

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1717959A1 (en) * 2005-04-29 2006-11-02 STMicroelectronics N.V. Method and device for controlling the decoding of a LDPC encoded codeword, in particular for DVB-S2 LDPC encoded codewords
US8359522B2 (en) * 2007-05-01 2013-01-22 Texas A&M University System Low density parity check decoder for regular LDPC codes
US8151171B2 (en) * 2007-05-07 2012-04-03 Broadcom Corporation Operational parameter adaptable LDPC (low density parity check) decoder
KR100939334B1 (ko) * 2007-12-12 2010-01-29 한국전자통신연구원 기본 행렬을 이용한 저밀도 패리티 검사 부호의 복호화장치 및 그 방법
US8307255B2 (en) * 2008-11-12 2012-11-06 Texas Instruments Incorporated Scalable decoder architecture for low density parity check codes
US8407550B2 (en) * 2009-08-14 2013-03-26 Mitsubishi Electric Research Laboratories, Inc. Method and system for decoding graph-based codes using message-passing with difference-map dynamics
KR101610727B1 (ko) * 2010-04-09 2016-04-08 에스케이 하이닉스 메모리 솔루션즈 인크. Ldpc 선택적 디코딩 스케줄링의 구현
WO2012118766A1 (en) * 2011-02-28 2012-09-07 Clariphy Communications, Inc. Non-concatenated fec codes for ultra-high speed optical transport networks
US20140082449A1 (en) * 2012-09-18 2014-03-20 Fan Zhang LDPC Decoder With Variable Node Hardening

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080072406A (ko) * 2007-02-02 2008-08-06 엘지전자 주식회사 모델 행렬을 이용하여 ldpc 복호화를 수행하는 방법
KR20090012189A (ko) * 2007-07-27 2009-02-02 고려대학교 산학협력단 Ldpc 부호의 성능 개선을 위한 스케일링 기반의 개선된min-sum 반복복호알고리즘을 이용한 복호 장치 및그 방법

Also Published As

Publication number Publication date
US9231619B2 (en) 2016-01-05
KR101631128B1 (ko) 2016-06-16
US20140223264A1 (en) 2014-08-07

Similar Documents

Publication Publication Date Title
US10298261B2 (en) Reduced complexity non-binary LDPC decoding algorithm
CN113032178B (zh) 存储器控制器及快闪存储器的存取方法
US9461671B1 (en) Method and apparatus for power conservation in LDPC decoding
KR20130077962A (ko) 저장 장치로부터 데이터를 읽는 읽기 방법, 에러 정정 장치, 그리고 에러 정정 코드 디코더를 포함하는 저장 시스템
US8984365B1 (en) System and method for reduced memory storage in LDPC decoding
US20150293811A1 (en) Decoding method, memory storage device and memory controlling circuit unit
KR20140084298A (ko) 고체 상태 메모리를 위한 최적의 판독 임계값들 및 관련된 전압들을 찾는 방법
US9274891B2 (en) Decoding method, memory storage device, and memory controlling circuit unit
US10275297B2 (en) Generating soft read values which optimize dynamic range
US9195536B2 (en) Error correction decoder and error correction decoding method
US8935598B1 (en) System and method for adaptive check node approximation in LDPC decoding
US8751895B2 (en) Semiconductor memory device and decoding method
US20170134049A1 (en) Decoding method, memory storage device and memory control circuit unit
KR101631128B1 (ko) 크기조정 상수를 사용하는 가변 노드 업데이터를 갖는 ldpc 디코더
KR20170140871A (ko) 연산 복잡도를 감소시킬 수 있는 디코더의 동작 방법과 이를 포함하는 데이터 저장 장치의 동작 방법
US9564921B1 (en) Method and system for forward error correction decoding based on a revised error channel estimate
TW202205815A (zh) 用於自循環置換矩陣之叢集建構之準循環低密度奇偶檢查碼之垂直分層解碼之方法及裝置
JP6957392B2 (ja) メモリシステム
US9390002B1 (en) Efficient bin labeling schemes for tracking cells in solid state storage devices
CN112860474A (zh) 快速收敛的低密度奇偶校验码的软位翻转解码器
KR20190019798A (ko) 채널 편파 코드의 연속 제거 리스트 디코딩을 위한 효율적인 생존 메모리 아키텍처
US11108410B1 (en) User-programmable LDPC decoder
CN103973316A (zh) 具有使用定标常数的可变节点更新器的ldpc解码器
CN110708077B (zh) Ldpc码大数逻辑译码方法、装置和译码器
US20150254130A1 (en) Error correction decoder

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
AMND Amendment
E902 Notification of reason for refusal
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: 20190527

Year of fee payment: 4