KR20180112724A - 사전-포화 보상을 갖는 저밀도 패리티 체크(ldpc) 디코더 - Google Patents
사전-포화 보상을 갖는 저밀도 패리티 체크(ldpc) 디코더 Download PDFInfo
- Publication number
- KR20180112724A KR20180112724A KR1020180039169A KR20180039169A KR20180112724A KR 20180112724 A KR20180112724 A KR 20180112724A KR 1020180039169 A KR1020180039169 A KR 1020180039169A KR 20180039169 A KR20180039169 A KR 20180039169A KR 20180112724 A KR20180112724 A KR 20180112724A
- Authority
- KR
- South Korea
- Prior art keywords
- messages
- message
- bit
- size
- cnc
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/11—Error 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/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1111—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/11—Error 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/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/11—Error 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/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1111—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
- H03M13/1117—Soft-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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3707—Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
- H03M13/3715—Adaptation to the number of estimated errors or to the channel state
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/65—Purpose and implementation aspects
- H03M13/6577—Representation or format of variables, register sizes or word-lengths and quantization
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/65—Purpose and implementation aspects
- H03M13/6577—Representation or format of variables, register sizes or word-lengths and quantization
- H03M13/658—Scaling by multiplication or division
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Error Detection And Correction (AREA)
Abstract
데이터를 디코딩하기 위한 방법 및 장치. 일부 실시예들에서, LDPC 디코더는 m-비트 코드 비트들의 비트 신뢰도 값들을 저장하도록 구성되는 복수의 가변 노드들을 갖는 가변 노드 회로(VNC)를 갖는다. 체크 노드 회로(CNC)는 VNC로부터의 n-비트 메시지들에 대해 패리티 체크 동작들을 수행하도록 구성되는 복수의 체크 노드들을 갖는다. 각각의 n-비트 메시지는 비트 신뢰도 값들과 체크 노드들로부터의 저장된 메시지들의 조합으로부터 형성된다. 사전-포화 보상 회로는 CNC에 의해 수신된 각각의 n-비트 메시지의 크기를, p 비트들을 사용하여 표현될 수 있는 최대값을 포함하는 포화 한계 아래로 유지하도록 구성되고, p는 n보다 작고, CNC에 의해 수신되는 p-비트 메시지들 각각은 상이한 크기를 갖는다. 사전-포화 보상 회로는 상이한 디코딩 반복들에 걸쳐 상이한 스케일링 및/또는 바이어스 팩터들을 n-비트 메시지들에 적용할 수 있다.
Description
본원에 개시된 다양한 실시예들은 일반적으로 저밀도 패리티 체크(LDPC) 디코더를 사용하여 데이터 채널에서 데이터를 디코딩하는 것에 관한 것이다.
일부 실시예들에서, LDPC 디코더는 m-비트 입력 코드 워드의 비트 신뢰도(우도) 값들을 생성하도록 구성되는 복수의 가변 노드들을 갖는 가변 노드 회로(VNC)를 갖는다. 체크 노드 회로(CNC)는 VNC로부터의 n-비트 메시지들에 대해 패리티 체크 동작들을 수행하도록 구성되는 복수의 체크 노드들을 갖는다. 각각의 n-비트 메시지는 비트 신뢰도 값과 체크 노드들의 서브세트로부터의 저장된 메시지의 조합으로부터 형성된다. 사전-포화 보상 회로는 CNC에 의해 수신된 n-비트 메시지의 크기를, p 비트들(p<n)을 사용하여 표현될 수 있는 최대값을 포함하는 포화 한계 아래로 유지하도록 구성되고, CNC에 의해 수신되는 p-비트 메시지들 각각은 상이한 크기를 갖는다.
다양한 실시예들을 특성화할 수 있는 이러한 및 다른 특징들 및 이점들은 다음의 상세한 설명 및 첨부된 도면들을 참조하여 이해될 수 있다.
도 1은 본 개시의 다양한 실시예들에 대한 예시적인 동작 환경을 제공하기 위한 데이터 저장 디바이스의 기능적 블록 표현을 제공한다.
도 2는 본 개시의 일부 실시예들에 따라 데이터를 디코딩하기 위한 저밀도 패리티 체크(LDPC) 디코더를 사용하는 데이터 복원 채널의 개략도이다.
도 3은 도 2의 LDPC 디코더의 에러 레이트 응답 특성의 그래픽 표현이다.
도 4는 LDPC 디코더의 양상들을 예시하는 상호접속도이다.
도 5는 일부 실시예들에 따른 LDPC 디코더의 기능적 블록 표현이다.
도 6은 추가적인 실시예들에 따른 LDPC 디코더의 기능적 블록 표현이다.
도 7은 일부 실시예들에서, 도 5 및 도 6의 사전-포화 보상 회로의 배열을 예시한다.
도 8은 사전-포화 보상 회로를 위한 다른 배열을 예시한다.
도 9는 LDPC 디코더에서 메시지들의 가능한 매핑을 설명하는 로그-우도 비율 룩업 테이블(LLR LUT; log-likelihood ratio look-up table)의 예를 표현한다.
도 10은 일부 실시예들에 의해 개시된 바와 같이 사전-포화 보상 기술들의 적용에 의해 획득되는 예시적인 개선들의 그래픽 표현이다.
도 11은 다양한 실시예들에 의해 획득된 상이한 트래핑 세트 타입들에 대한 예시적인 에러 플로어 개선들의 그래픽 표현이다.
도 12는 상이한 실시예들에 대한 예시적인 스루풋 개선들의 그래픽 표현이다.
도 13은 일부 실시예들에 따라 수행되는 동작들을 예시하는 흐름도이다.
도 14는 다양한 실시예들이 유리하게 실시될 수 있는 솔리드 스테이트 드라이브(SSD; Solid State Drive) 타입의 데이터 저장 디바이스의 기능적 블록도이다.
도 15는 다양한 실시예들이 유리하게 실시될 수 있는 하드 디스크 드라이브(HDD) 또는 하이브리드 타입 데이터 저장 디바이스의 기능적 블록도이다.
도 2는 본 개시의 일부 실시예들에 따라 데이터를 디코딩하기 위한 저밀도 패리티 체크(LDPC) 디코더를 사용하는 데이터 복원 채널의 개략도이다.
도 3은 도 2의 LDPC 디코더의 에러 레이트 응답 특성의 그래픽 표현이다.
도 4는 LDPC 디코더의 양상들을 예시하는 상호접속도이다.
도 5는 일부 실시예들에 따른 LDPC 디코더의 기능적 블록 표현이다.
도 6은 추가적인 실시예들에 따른 LDPC 디코더의 기능적 블록 표현이다.
도 7은 일부 실시예들에서, 도 5 및 도 6의 사전-포화 보상 회로의 배열을 예시한다.
도 8은 사전-포화 보상 회로를 위한 다른 배열을 예시한다.
도 9는 LDPC 디코더에서 메시지들의 가능한 매핑을 설명하는 로그-우도 비율 룩업 테이블(LLR LUT; log-likelihood ratio look-up table)의 예를 표현한다.
도 10은 일부 실시예들에 의해 개시된 바와 같이 사전-포화 보상 기술들의 적용에 의해 획득되는 예시적인 개선들의 그래픽 표현이다.
도 11은 다양한 실시예들에 의해 획득된 상이한 트래핑 세트 타입들에 대한 예시적인 에러 플로어 개선들의 그래픽 표현이다.
도 12는 상이한 실시예들에 대한 예시적인 스루풋 개선들의 그래픽 표현이다.
도 13은 일부 실시예들에 따라 수행되는 동작들을 예시하는 흐름도이다.
도 14는 다양한 실시예들이 유리하게 실시될 수 있는 솔리드 스테이트 드라이브(SSD; Solid State Drive) 타입의 데이터 저장 디바이스의 기능적 블록도이다.
도 15는 다양한 실시예들이 유리하게 실시될 수 있는 하드 디스크 드라이브(HDD) 또는 하이브리드 타입 데이터 저장 디바이스의 기능적 블록도이다.
본 개시는 일반적으로 저밀도 패리티 체크(LDPC) 디코더를 사용한 데이터 채널에서의 데이터의 디코딩에 관한 것이다.
LDPC 코드들은 데이터의 송신에 유용한 선형 에러 정정 블록 코드들이다. LDPC 코드들은 정보 컴포넌트(예를 들어, 사용자 데이터 비트들) 및 에러 정정을 위한 오버헤드 또는 여분의 비트들 둘 모두를 갖는 코드 워드들의 형태를 취한다. 통상적 관례는 LDPC 코드 워드들을 k/n 코드들로서 설명하는 것이며, 여기서 n은 비트들의 총 수를 표현하고, k는 사용자 비트들의 수를 표현하고, n-k는 여분의 비트들의 수를 표현한다.
무선 및 유선 인터페이스들을 통한 LDPC 코드 송신들을 용이하게 하기 위해 다수의 업계 표준들이 제정되어 왔다. LDPC 코드들은 인터페이스의 송신 능력의 이론적인 용량에서 또는 그 근처에서 잡음 환경에서의 데이터의 고속 송신을 핸들링할 수 있는 견고한 능력을 갖기 때문에, LDPC 코드들은 솔리드 스테이트 드라이브들(SSD들), 하드 디스크 드라이브들(HDD들), 하이브리드 솔리드 스테이트 드라이브들(HSSD들) 등과 같은 데이터 저장 디바이스들을 포함하지만 이에 제한되는 것은 아닌 높은 데이터 I/O 통신 채널들에서 종종 사용된다.
LDPC 디코더는 LDPC 코드들을 디코딩하기 위해 사용되는 회로의 타입이다. LDPC 디코더는 종종 다수의 가변 노드 유닛들(VNU들) 및 체크 모드 유닛들(CNU들)을 이용한다. VNU들은 개별적인 코드 비트 신뢰도들을 생성한다. CNU들은 조합 로직 함수들을 사용하여 VNU들의 콘텐츠들의 상이한 조합들에 대해 패리티 체크들을 수행하고, 후속 프로세싱에서 메모리에 저장되고 VNU에 의해 사용되는 추가적인 소프트 정보를 생성한다.
CNU들의 모든 패리티 제약들이 충족되면 입력 코드 워드는 성공적으로 디코딩된다. 하나 이상의 에러들이 검출되면, 코드 워드의 상태에 관한 추가적인 정보를 제공하는 소프트 정보의 사용을 통하는 것을 포함하는 후속 반복들이 수행된다. 각각의 반복은 다양한 유닛들 사이에서 메시지들이 전송되는 것을 수반한다. VNU들로부터 CNU들로의 메시지들은 v2c 또는 r 메시지들로 지칭될 수 있으며, CNU들로부터 VNU들로의 메시지들은 c2v 또는 q 메시지들로 지칭될 수 있다. P 및 Q 메시지들 등과 같은 다른 표기법들이 사용될 수 있다.
다수의 상이한 LDPC 접근법들 또는 알고리즘들이 존재한다. 하나의 널리 공지된 알고리즘은 신뢰 전파 알고리즘이다. 이는 효율적인 동작을 제공하지만 큰 회로 복잡도를 요구한다. 최소-합 LDPC 접근법(최소-합 알고리즘)은 하드웨어 요건들을 단순화하기 위해 사용되지만 성능의 신뢰 전파 레벨들을 근사화하는 것을 돕기 위해 확률 테스트를 도입한다. LLR(log-likelihood ratio) 값들은 통상적으로 최소-합 LDPC 디코딩 동작 동안 생성되고, 비트들의 상이한 조합들이 시도될 때 널(null)/대안적 테스트 가설로서 기능한다. 주어진 가변 노드에 대한 높은 LLR 크기는, 노드의 기존의 비트 값(예를 들어, 0 또는 1)이 정확한 값일 가능성이 매우 높은 것을 나타내는 한편 낮은 LLR 크기는 노드의 기존의 비트 값이 정확한 값일 가능성이 매우 높지는 않음을 나타낸다.
LDPC 디코더의 동작 성능은 채널 잡음에 크게 의존한다. 관찰된 비트 에러 레이트(BER) 대 신호 대 잡음비(SNR)의 그래프는, 채널의 잡음이 감소됨에 따라 BER에서 급격한 개선을 나타낸다. 이는 때때로 워터폴(waterfall) 구역으로도 지칭되고, 지수적 기울기를 나타낸다. 잡음의 매우 낮은 레벨들에서, LDPC 디코더의 응답은 평탄하게 되어 소위 에러 플로어를 형성하며, 이는 매우 얕은 기울기를 나타내는 그래프의 어깨 부분이다. 에러 플로어에서 기울기에서의 변화에 대한 하나의 원인은, 존재하는 에러들의 수가 매우 작은 값으로 감소될 때, 특히 용이한 해결을 방해할 수 있는 비트 대칭들을 수반하는 특정 비트 에러 조합들(트래핑 세트들)에 대해, 나머지 에러들을 해결하는 것이 점점 더 어려워질 수 있다는 점이다.
최소-합 LDPC 환경에서, 다수의 c2v 메시지들 및 연관된 입력 LLR 값을 추가함으로써 v2c 메시지가 생성된다. 전송될 수 있는 메시지들의 크기에서 이용가능한 유한한 최대 정밀도가 존재하기 때문에, 연관된 CNU에 도달하기 전에 v2c 메시지들이 포화될 수 있는 가능성이 존재한다. 이러한 상황에서, 포화된 것 또는 포화는 일반적으로, 반복되는 v2c 메시지들의 크기가 메시지를 설명하기 위해 이용가능한 비트들의 수에 기초하여 최대 한계에 도달한 상황을 설명한다. 더 정확하게는, v2c 메시지들이 n 비트의 최대 길이를 가지면, 모두 로직 1들을 갖는 v2c 메시지는 이의 최대 값에 도달하고, 메시지의 크기에서의 추가적인 증가는 통신될 수 없는데, 이는 이러한 것이 버퍼 오버플로우 또는 다른 관련 조건을 초래할 것이기 때문이다.
v2c 메시지들이 포화에 쉽게 도달하는 경향은 바람직하지 않게 디코더의 에러 플로어 응답을 증가시킨다. 동작의 에러 플로어 구역에서, 채널 LLR 값들은 커지는 경향이 있을 것이며, 따라서 모든 메시지들은 또한 커지는 경향이 있을 것이고 디코더에서 빠르게 증가할 것이다. 포화되면, CNU는 이러한 메시지들 사이를 쉽게 구별할 수 없고, 에러 조건을 해결할 수 없다.
따라서, 본 개시의 다양한 실시예들은 최소-합 LDPC 디코더에 사전-포화 보상을 적용하기 위한 장치 및 방법에 관한 것이다. 아래에서 설명되는 바와 같이, 일부 실시예들은 일반적으로 가변 노드 회로(VNC) 및 체크 노드 회로(CNC)를 갖는 디코더를 제공한다. VNC는 코드 비트 신뢰도들을 생성하도록 구성되는 다수의 가변 노드들을 갖는다. CNC는 가변 노드들의 선택된 그룹들에 연결된 다수의 체크 노드들을 갖고, 패리티 체크 능력들을 제공받는다. VNC는 체크 노드에 연결된 가변 노드들의 비트 신뢰도들의 조합에 기초하여 메시지들을 형성하고 이를 CNC의 각각의 체크 노드에 전송한다(예를 들어, v2c 메시지들).
사전-포화 보상 회로는 v2c 메시지들에 대해 동작하여, 대부분의 메시지들이 포화되는 것 또는 메시지의 이용가능한 비트들의 수에 기초하여 최대 이용가능한 크기에 도달하는 것을 방지한다. 사전-포화 보상은 다양한 형태들을 취할 수 있다.
일부 실시예들에서, 사전-포화 보상은 메시지들과 결합된 스케일링 팩터들을 사용함으로써 달성된다. 다른 실시예들에서, 바이어싱 팩터들이 메시지들과 결합된다. 추가적인 실시예들에서, 룩업 테이블(LUT)은 사전-포화 보상을 달성하기 위해 사용될 수 있다. 모든 메시지들이 어떠한 형태의 비트 로그-우도비(LLR)를 표현하기 때문에, 이러한 LLR은 LLR LUT로 지칭된다. 다른 실시예들에서는, 입력 LLR 값들이 감소되고, 이는 VNU에 의한 프로세싱 전에 LLR 값들의 전반적 크기를 감소시키고 메시지들의 일부의 포화를 방지한다. 이러한 접근법들은 요구되는대로 개별적으로 또는 결합하여 적용될 수 있다. 또 다른 실시예들에서, 스케일링/바이어싱 팩터들 및/또는 LLR LUT 값들은 유사하게 CNU로부터 VNU로 리턴되는 메시지들에 적용될 수 있다.
이러한 기술들은 LDPC 디코더 응답의 워터폴 구역 및 에러 플로어 구역 둘 모두에서 더 양호한 성능을 도출할 수 있음이 발견되었다. 기술들은 비교적 적은 추가적인 복잡도를 추가하고, 다수의 상이한 애플리케이션들 및 환경들에 용이하게 적응될 수 있다.
다양한 실시예들의 이러한 및 다른 특징들 및 양상들은, 일반적으로 예시적인 데이터 저장 디바이스(100)를 예시하는 도 1의 검토로 시작하여 이해될 것이다. 다양한 실시예들이 유리하게 실시될 수 있는 예시적인 환경을 제공하기 위한 디바이스(100)가 제시된다. 본원에 기술되는 다양한 실시예들은 데이터 저장 애플리케이션들로 제한되지 않으며, LDPC 알고리즘들을 사용하는 실질적으로 임의의 다른 데이터 송신 채널로 용이하게 확장될 수 있다.
디바이스(100)는 제어기(102) 및 메모리 모듈(104)을 포함한다. 제어기(102)는 디바이스(100)에 대한 최상위 레벨 제어를 제공하고, 로컬 메모리의 연관된 프로그래밍을 갖는 프로그래머블 프로세서로서 구성될 수 있다. 추가적으로 또는 대안적으로, 제어기는 요구되는 제어기 기능들을 수행하기 위해 로직 게이트들 또는 다른 엘리먼트들을 갖는 하드웨어 기반 제어 회로의 형태를 취할 수 있다.
메모리 모듈(104)은 회전가능한 레코딩 디스크들 및 솔리드 스테이트 메모리 어레이들을 포함하는 하나 이상의 비휘발성 메모리 엘리먼트들로서 배열될 수 있다. 별개의 제어기(102)가 도 1에 도시되어 있지만, 대안적인 실시예들은 임의의 필수적인 제어기 기능들을 메모리 모듈에 직접적으로 또는 데이터 저장 디바이스의 외부에 통합할 수 있기 때문에 이러한 것은 불필요하다. 제한적이 아니라 본 논의의 목적으로, 데이터 저장 디바이스(100)는 호스트 디바이스로부터 사용자 데이터를 저장 및 리트리브하기 위해 NAND 플래시 메모리를 활용하는 솔리드 스테이트 드라이브(SSD)인 것으로 고려될 것이다.
도 2는 일부 실시예들에 따라 데이터를 디코딩하기 위한 저밀도 패리티 체크(LDPC) 디코더(112)를 사용하는 데이터 복원 채널(110)의 일부의 개략도를 제공한다. 채널(110)은 도 1의 데이터 저장 디바이스(100)의 일부를 형성할 수 있다.
본질적으로, LDPC 디코더(112)는 입력 코드 비트들 및 이들의 신뢰도들을 수신하고, 수신된 코드 비트들에 임의의 비트 에러들이 존재하는지 여부를 결정한다. 존재한다면, LDPC 디코더(112)는, 비트 에러들을 식별하고 정정하기 위해 반복적인 방식으로 동작하여, 정정된 코드 워드는 추가적인 프로세싱을 위해 출력될 수 있다.
도 2에서, 업스트림 프로세싱은 검출기(114)에 의해 입력된(복원된) 통신 신호에 적용된다. 검출기(114)에 의한 또는 그 이전의 프로세싱 단계들은 아날로그 프론트 엔드, 디지털화, 최대 우도 검출 등을 포함하는 다양한 형태들을 취할 수 있다.
검출기(114)는 저장 매체로부터의 다수의 판독들에 기초하여 코드 비트들 및 비트 신뢰도들, 예를 들어, LLR 값들의 시퀀스를 출력한다. 각각의 코드 워드는 정보성 컴포넌트 및 여분의(오버헤드) 컴포넌트를 가지며, 다수의 비트들(예를 들어, m 비트)로 구성된다. 임의의 적절한 길이의 코드 워드들이 시스템의 아키텍처에 기초하여 사용될 수 있다. 수천개 또는 그 초과의 비트들(m >> 1000)을 갖는 코드 워드들이 통상적으로 많은 데이터 저장 디바이스 애플리케이션들에서 사용된다.
LDPC 디코더(112)는 원래의 데이터(예를 들어, 복원된 신호의 정보 콘텐츠)를 출력하기 위해 특수하게 구성된 최소-합 LDPC 알고리즘을 입력 코드 비트 신뢰도들에 적용한다. LDPC 디코더(112) 및 검출기(114)는 임의의 수의 하드와이어드 및/또는 프로그래머블 회로 구성들을 사용하여 하드웨어, 소프트웨어 및/또는 펌웨어로 실현될 수 있다. 또한, 디코더(112) 및 검출기(114)는 반복적인 방식으로 소프트 비트 신뢰도 정보를 교환할 수 있다.
도 3은, 일반적으로 도 2로부터의 LDPC 디코더(112)의 에러 레이트 성능을 설명하는 에러 레이트 응답 곡선(120)의 그래픽 표현이다. 120과 같은 곡선은 다양한 방법들로 설명될 수 있고; 도 3에서, 곡선(120)은 측정된 코드 워드 비트 에러 레이트(BER)가 y-축에 그리고 관찰된 신호대 잡음비(SNR)가 x-축에 플로팅된다. 도 3의 관례는, 원점을 향하여 y-축을 따라 더 아래로 더 양호한 전반적인 에러 레이트 성능을 나타내고, 원점으로부터 멀리 x-축을 따라 더 양호한 전반적인 신호 성능(예를 들어, 적은 잡음)을 나타낸다. 참조로, 곡선은 SNR이 x-축에 플로팅되는 것 대신에 원시 비트 에러 레이트(RBER)가 x-축에 플로팅될 수 있고, 이는, 유사한 전반적인 형상을 곡선에 제공할 것이고, 수평적으로 플립, 예를 들어, y-축을 중심으로 180도만큼 회전될 것이다.
곡선(120)은 2개의 메인 구역들 또는 부분들, 즉, 워터폴 구역(122) 및 에러 플로어(124)를 갖는 것으로 도시되어 있다. 인식될 바와 같이, 워터폴 구역(122)은 상대적으로 급격한 기울기를 갖고, 적어도 에러 플로어 구역(124)이 지배하는 포인트까지, 채널 잡음의 감소들과 함께 에러 레이트 성능에서의 상당한 개선들을 나타낸다.
에러 플로어(124)는 상당히 감소된 기울기를 가져서, SNR에서의 계속된 개선들(잡음에서의 감소들)과 함께, 최적의 BER에 대해 하한이 달성됨을 나타낸다. 기울기에서의 변화는 또한, 채널의 잡음이 적어짐에 따라, 특히 특정 상황들에서 LDPC 디코더(112)가 코드 워드들을 해결하는 것이 상당히 더 어려워질 수 있음을 제안한다. 예를 들어, 트래핑 세트들은 LDPC 알고리즘의 반복들 내에서 "트래핑되고" 쉽게 해결되지 않는 비트 에러 조합들이다.
도 4는 일부 실시예들에서 도 2의 LDPC 디코더(112)의 양상들을 예시하기 위한 태너(Tanner) 도면(130)을 제공한다. 디코더는, 가변 노드들로 또한 지칭되는 다수의 가변 노드 유닛들(VNU들)(132)을 포함한다. 총 8개의 가변 노드들(132)이 V0 내지 V7로 라벨링되어 도 4에 도시되어 있다.
가변 노드들(132)은 일련의 체크 노드 유닛들(CNU들) 또는 체크 노드들(134들)과 통신한다. C0 내지 C3으로 라벨링된 총 4개의 체크 노드들이 도시되어 있다. 각각의 노드들(132, 134)의 다른 각각의 수들 및 배열들이 원하는대로 제공될 수 있다.
입력 코드 비트 신뢰도들은 초기에 가변 노드들(132)에 로딩되고, 단일 비트 로그-우도비(LLR)가 각각의 가변 노드에 공급된다. 가변 노드들의 비트 LLR 값들은 선택적으로 결합되어, 대응하는 체크 노드들(134)에 전송되는 v2c 메시지들을 형성한다. 도 4에서, 체크 노드 C0은 가변 노드들 V0, V1 및 V2로부터 비트들을 수신하고; 체크 노드 C3은 가변 노드들 V2 내지 V7로부터 비트들을 수신하는 식이다.
수신되면 v2c 메시지들은 코드 워드를 해결하기 위해, 특정 패리티 제약들을 사용하여 체크 노드들에 의해 평가된다. 일례에서, 체크 노드들(134)은, 주어진 v2c 메시지의 모든 비트들이 0(짝수) 값까지 합산되도록 짝수 패리티 제약을 구현할 수 있다. 다른 패리티 제약들이 사용될 수 있다.
이러한 패리티 계산 결과들을 갖는 메시지들은 c2v 메시지들의 형태로 리턴된다. 일반적으로, LDPC 알고리즘의 각각의 반복은 일 세트의 v2c 메시지들의 생성 및 체크 노드들로의 전송을 포함하고, 가변 노드들로의 일 세트의 c2v 메시지들의 리턴이 후속된다. 어떠한 에러들도 존재하지 않으면, 결과적 코드 워드는 해석되고 도 2에 도시된 바와 같이 데이터가 출력된다. 적어도 하나의 에러가 존재하면, 가변 노드들(132)의 값들은 c2v 메시지들 및 일부 경우들에서는 다른 정보를 사용하여 업데이트된다. 후속 반복들은 코드 워드를 해결하기 위한 노력으로 적용될 수 있다.
도 4의 i번째 가변 노드로부터 j번째 가변 체크 노드로의 v2c 메시지들의 계산은 다음과 같이 표현될 수 있다:
[수학식 1]
여기서 LLRi는 i번째 가변 노드에 대응하는 채널 로그-우도비이고, rji는 j번째 체크 노드로부터 i번째 가변 노드로의 c2v 메시지를 표현한다.
LLR 값들은 연관된 가변 노드들의 기존의 상태에 관한 2개의 상태 널-가설의 확률에 대한 멀티-비트 추정치들이다. LLRi 값의 크기가 높을수록, i번째 가변 노드의 기존의 비트 상태(0 또는 1)가 정확한 값이 될 가능성이 더 높다. LLRi 값의 크기가 낮을수록, 대안적인 비트 값(1 또는 0)이 정확한 상태가 될 가능성이 더 높다.
수학식(1)은 각각의 v2c 메시지가 이전 메시지들의 정보성 콘텐츠 뿐만 아니라 코드 워드의 디코딩을 보조하기 위한 추가적인 단서들을 제공할 수 있는 소프트 정보를 포함한다는 것을 나타낸다. 일부 경우들에서, 체크 노드들은 v2c 메시지의 전반적 크기에 의해 제공되는 정보를 사용하여 가변 노드들의 콘텐츠에 대해 조절할 수 있다.
j번째 체크 노드로부터 i번째 가변 노드로의 대응하는 c2v 메시지들은 다음과 같이 표현될 수 있다:
[수학식 2]
LDPC 디코더(112)는 단순화된 하드웨어/소프트웨어를 사용하면서 계산적으로 더 복잡한 신뢰 전파 알고리즘을 근사화하는 최소-합 알고리즘을 구현한다. 최소-합 알고리즘의 하나의 제한은 순수한 신뢰 전파 접근법을 사용하여 이용가능한 것에 비해 악화된 워터폴 성능이어서, 최소-합 알고리즘은 동일한 원시 비트 에러 레이트(RBER)에서 더 불량한 코드 워드 실패 레이트들을 제공한다.
최소-합 알고리즘의 다른 제한은 각각의 v2c 및 c2v 메시지들에서 이용가능한 유한한 정밀도이다. 앞서 언급된 바와 같이, 이러한 유한 정밀도의 실제 결과는 v2c 메시지들의 크기에서 달성될 수 있는 최대 크기가 존재한다는 것이다. 소프트웨어로 구현되든 또는 하드웨어로 구현되든, 일반적으로 각각의 v2c 및 c2v 메시지들을 설명하기 위해 이용가능한 최대 총 n 비트가 존재할 것이다. n = 4 비트, n = 8 비트 등과 같은 값들은 하드웨어 디코더 기반 구현들에 더 적합할 수 있다. n = 32, n = 64 등과 같은 더 높은 값들은 소프트웨어 기반 구현들에 더 적합할 수 있다. 인식될 바와 같이, 본원에 개시된 다양한 실시예들은 구현들의 타입들 둘 모두에 대해 적합하다.
qij 값들은 매우 커질 수 있어서, v2c 메시지들이 포화를 달성하게 할 수 있고, 포화는 위에서 설명된 바와 같이, 최대 이용가능한 값에 도달되는 상황이다(예를 들어, 길이가 n 비트인 v2c 메시지, 여기서 각각의 n 비트 값은 로직 1이다). 수학식들 (1) 및 (2)로부터, 일부 경우들에서, LDPC 디코더의 단지 몇 번의 반복들에서 포화가 달성될 수 있음을 알 수 있다.
도 5는 기존 기술로 이들 및 다른 제한들을 처리하도록 구성되는 LDPC 디코더(112)의 블록도 표현을 도시한다. 도 4의 가변 노드들(132) 및 체크 노드들(134)은 각각 가변 노드 회로(VNC)(136) 및 체크 노드 회로(CNC)(138)에 집합적으로 통합되어 있다. LDPC 디코더(112)의 업스트림에 있는 LLR 생성기(139)는 노드 단위로 LLR들을 생성하고 LLR들을 VNC(136)에 공급한다.
VNC(136)는 상이한 체크 노드들 및 LLR 생성기로부터 수신된 비트 신뢰도 값들을 결합하여 멀티-비트 v2c 메시지 메시지들을 형성하도록 동작한다. 각각의 v2c 메시지는 총 n-비트를 가질 것으로 고려된다. 사전-포화 보상 회로(140)는 스케일링된 v2c 메시지들을 생성하기 위해 n-비트 v2c 메시지에 대해 동작한다. 스케일링된 v2c 메시지들은 p-비트 메시지들이고, 여기서 p는 n보다 작고(p<n), 위에서 논의된 바와 같이 CNC들(138)에 포워딩된다.
사전-포화 보상 회로(140)는, v2c 메시지들의 전반적인 크기를, n 비트로 표현될 수 있는 최대 이용가능한 크기 아래로 유지함으로써 v2c 메시지들의 적어도 많은 부분이 포화를 달성하는 것을 방지한다(n개의 로직 1들로 구성되는 n-비트 값은 n 비트로 표현될 수 있는 최대 이용가능한 값이다). 일부 실시예들에서, p-비트 v2c 메시지들은 p 비트들로 표현될 수 있는 최대 이용가능한 크기 아래로 유지된다. 스케일링된 v2c 메시지들은 코드 워드의 비트 에러들의 해상도를 용이하게 하기 위해 유용한 정보성 콘텐츠를 유지한다. 사전-포화 보상 회로에 대한 다수의 상이한 대안적인 실시예들이 아래에서 상세히 논의될 것이다.
일부 경우들에서, 선택적인 사후-CNC 스케일링 회로(142)는 VNC들(136)로의 전송 전에 로컬 메모리(144)에 일시적으로 저장되는 스케일링된 c2v 메시지들을 제공하기 위해 CNC들(138)에 의해 출력되는 c2v 메시지들을 컨디셔닝하기 위해 사용될 수 있다. c2v 메시지들은 또한 길이에서 p 비트일 것으로 고려된다. 도 5는 디코딩 프로세스의 상태를 나타내는 VNC(136)로부터의 신드롬들의 출력을 도시하며; 모든 신드롬들의 해상도는 코드 워드의 성공적인 디코딩을 시그널링한다.
도 6은 추가적인 실시예들에 따른 LDPC 디코더(112)에 대한 대안적인 구성이다. 전술한 바와 같이, 사전-포화 보상 회로(140), 선택적인 사후-CNC 스케일링 회로(142) 및 로컬 메모리(144)는 VNC들(136)과 CNC들(138) 사이에 전달되는 메시지들을 컨디셔닝하기 위해 공급된다.
부분적인 사후 정보는 원래의(스케일링되지 않은) v2c 메시지들로부터 획득되고 다음 반복에서 메모리(144)에 저장된 스케일링된 c2v 메시지들과 결합하여 보류중인 로컬 메모리(146)에 저장된다. 이러한 배열은 많은 실제적인 LDPC 코드들에 대해 더 효율적인 하드웨어 구현을 제공할 수 있다.
도 7은 일부 실시예들에 따른 도 5 및 도 6로부터의 사전-포화 보상 회로(140)에 대한 블록도를 도시한다. 이러한 경우, 팩터 회로(152)는 스케일링된 v2c("Sv2c") 메시지들을 생성하기 위해 v2c 수정 회로(154)에 공급되는 하나 이상의 팩터들을 생성 및/또는 저장한다. 일반적으로 스케일 팩터(S)는 다음과 같이 스케일링된 v2c 값을 제공하기 위해 계산된 v2c와 결합되는 스칼라 양으로서 동작할 수 있다:
Sv2c = round[(S)(v2c)]
(3)
바이어스 계수(B)는 다음과 같이 v2c 계산 내의 특정 항에 바이어스 또는 가중치 값으로서 활용될 수 있다:
Sv2c = round(v2c + B)
(4)
스케일링 팩터들 및 바이어스 팩터들 둘 모두는 다음과 같이 동시에 활용될 수 있다:
Sv2c = round[(S)(v2c+B)]
(5)
스케일링 팩터들 S 및 바이어스 팩터들 B는 포화 이하의 v2c 크기들의 적어도 대부분을 유지하기 위해 임의의 적합한 방식으로 적용될 수 있다. 적합한 스케일링 팩터들 S 및 바이어스 팩터들 B는 경험적 및/또는 적응적 방법들을 사용하여 획득될 수 있다. 위의 예에서, S 및 B는 둘 모두 0으로부터 1까지의 값들로 고려된다. 스케일링 및/또는 바이어스 팩터들이 Sv2c 메시지들의 전반적 크기를 감소시켜 포화 한계에 도달하는 것을 감소시키는 경향이 있는 한, 다른 배열들이 사용될 수 있다.
팩터 회로(152)는 v2c 크기, 주어진 디코딩 시퀀스에서의 반복 카운트, SNR 등과 같은 특정 프로세스 파라미터들을 모니터링하여, 다양한 스케일링 및/또는 바이어스 팩터들을 스위칭하고 적용할 수 있다. 적어도 일부 실시예들에서, 상이한 스케일링 팩터들 및/또는 바이어스 팩터들이 주어진 LDPC 디코딩 동작 내에서 상이한 반복들에서 적용되며; 제1 세트의 팩터들은 제1 반복 동안 적용될 수 있고, 상이한 제2 세트의 팩터들은 제2 반복 동안 적용될 수 있는 식이다.
도 7의 회로 배열은 또한, 도 5 및 도 6에서 위에서 논의된 바와 같이, 스케일링된 c2v 메시지들을 제공하기 위해 사후-CNC 스케일링 회로(142)를 구현하기 위해 사용될 수 있다. 상이한 스케일링 및/또는 바이어스 팩터들은 사후-CNC 스케일링 회로(142)와 비교하여 사전-포화 보상 회로(140)에서 사용될 수 있는 것으로 고려된다.
도 8은 사전-포화 보상 회로(140)를 위한 다른 구성을 도시한다. LLR 룩업 테이블 메모리(156)는 스케일링된 v2c 메시지(Sv2c)를 생성하기 위해 v2c 수정 회로(154)에 공급되는 하나 이상의 적응적 또는 경험적으로 유도되는 LUT들을 저장한다. 모든 LLR LUT는 n-비트로 표현되는 입력 v2c 메시지들을 p-비트로 표현되는 출력된 확장된 v2c(Sv2c) 메시지들 상에 매핑하는 매핑 기능이다. n = 7 및 p = 4로 가정하는 예시적인 LLR LUT가 도 9에 제공된다.
도 9의 테이블로부터, 입력 메시지들의 크기는 출력에서 감소되어, p = 4 비트가 표현하는 포화 한계(예를 들어, 1111 베이스 2 또는 15 베이스 10)보다 아래에 있는 것을 알 수 있다. 이와 동시에, 스케일링된 출력 메시지 Sv2c는 단순히 v2c 메시지에 포화를 적용하는 것보다 훨씬 더 양호하게 유용한 정보 콘텐츠를 유지한다.
LLR LUT 메모리(156)는 v2c 크기, 주어진 디코딩 시퀀스에서의 반복 카운트, SNR 등과 같은 특정 프로세스 파라미터들을 모니터링하여, 상이한 LLR LUT들을 스위칭하고 적용할 수 있다. 적어도 일부 실시예들에서, 상이한 LUT들이 주어진 LDPC 디코딩 동작 내에서 상이한 반복들에서 적용된다. 제1 LUT는 제1 반복 동안 적용될 수 있고, 상이한 제2 LUT는 제2 반복 동안 적용될 수 있는 식이다.
도 7 및 도 8의 각각의 도면들에 의해 제공된 다양한 형태들의 사전-포화 보상 및 사후 CNC 스케일링은 상호 배타적이지 않다. 오히려, 회로들 둘 모두는 LDPC 디코더(112)에 의해 이용될 수 있다. 추가적인 실시예들에서, 본원에 개시된 사전-포화 보상 및 사후-CNC 스케일링 기술들은 다른 입력 LLR 댐프닝 방법들과 결합될 수 있다.
각각의 경우에, 보상된 v2c 메시지들의 크기들은 대응하는 미보상된 v2c 메시지들(또는 미보상된 LLR을 사용하여 생성되었을 메시지들)의 크기들에 기초하여 각각의 메시지에 대해 상이한 경향이 있을 것이다. 따라서, 보상은 일부 미리 결정된 레벨에서 메시지들을 절단하지 않아서, 특정 크기를 넘는 모든 메시지들은 동일한 최대 값으로 트림(trim)된다. 대신에, 보상은 각각의 메시지를 구성하는 기본적 항들을 하나 이상의 감소 값들과 결합하여, 하나의 메시지로부터 다음 메시지까지의 기존의 변동을 유지하면서 스케일에서의 감소가 달성된다.
도 10은 앞서 논의된 바와 같이 최소-합 LDPC 디코더를 갖는 특정 데이터 채널로부터 획득된 데이터를 표현하는 그래픽 예시를 제공한다. 포스트 CNC 보상된 곡선(160) 및 사전-포화 보상된 곡선(170)은 각각 코드 워드 실패 레이트가 x-축에 그리고 신호대 잡음(SNR)이 y-축에 플로팅된다. 포스트 CNC 보상 곡선(160)은 c2v 메시지들에 대한 스케일링 및 바이어스의 적용을 수반하는 일 타입의 사후-CNC 보상을 갖는 LDPC 디코더에 대한 에러 레이트 성능을 설명한다.
사전-포화 보상된 곡선(170)은 스케일링 및 바이어스 팩터들을 v2c 메시지들에 적용하는 것을 수반하는 사전-포화 보상을 갖는 LDPC 디코더의 에러 레이트 성능을 설명한다.
곡선(160) 내의 워터폴 및 에러 플로어 구역들은 각각 162 및 164로 표기된다. 곡선(170) 내의 워터폴 및 에러 플로어 구역들은 각각 172 및 174로 표기된다. 향상된 워터폴 성능은 사후-CNC 보상 방식을 사용하여 달성되며, 더 낮은 에러 플로어는 사전-포화 보상 방식을 사용하여 달성된다. 성능에서의 유사한 향상들이 다양한 애플리케이션들에서 획득될 수 있고, 팩터들의 다수의 세트들을 테스트하고 도 10에 기술된 것들과 유사한 결과들을 관찰함으로써 적합한 스케일링 및 바이어스 팩터들이 유도될 수 있음이 발견되었다.
도 11은 에러 플로어 성능에서의 개선을 나타내는 곡선들의 세트의 다른 그래픽 표현을 도시한다. 곡선들은 (a, b) 표기를 사용하여 몇몇 통상적 타입들의 트래핑 세트 타입들을 도시하는 x 축에 대해 플로팅되고, a는 비트 에러들의 수를 표현하고 b는 충족되지 않은 패리티 제약들의 수를 표현한다. y 축은 에러 플로어의 개선에 대한 특정 트래핑 세트 퍼센티지 기여도의 기여도를 나타내어, 더 높은 값들은 더 양호한 성능을 나타낸다. 계층화된 디코딩은 100의 최대 반복 카운트로 적용되었다.
3개의 곡선들이 도 11에 플로팅되어 있다. 곡선(180)은 모든 반복들에 대해 사전-포화 스케일링의 적용을 표현한다. 곡선(182)은 입력 LLR 댐프닝의 적용을 도시한다. 곡선(184)은 이러한 기술들 둘 모두의 적용의 조합을 도시한다. 알 수 있는 바와 같이, 스케일링 팩터들 및 LLR 댐프닝 둘 모두가 개선들에 기여했지만, 둘 모두는 세트 (8, 4)를 제외한 모든 나열된 트래핑 세트들에 대해 상당히 더 양호한 성능을 함께 제공하였고, 그 세트에 대해서도, 2개의 기술들의 조합은 사전-포화 스케일링 단독보다 더 양호한 성능을 제공하였다.
도 12는 본원에 제시된 다양한 실시예들을 사용하여 획득된 향상들을 예시하기 위한 또 다른 그래픽 표현을 도시한다. 도 12는 더 빠르고 더 성공적인 디코딩 동작들을 통해 달성되는 더 높은 전반적인 데이터 I/O 레이트들의 측면에서 스루풋 개선들을 평가한다. 곡선(190)은 제1 보상 방식(방식 A)을 나타내고, 곡선(192)은 상이한 제2 보상 방식(방식 B)을 나타낸다.
각각의 곡선들(190, 192)은 원시 비트 에러 레이트(RBER)가 x-축에 그리고 정규화된 것이 y-축에 플로팅된다. y-축 상의 포인트 1.00은 정규의 미보상된 베이스라인 성능을 표현한다. 수직 방향에서의 개선들은 베이스라인에 대한 퍼센티지 개선을 나타낸다(예를 들어, y 축 상의 포인트 1.05는 스루풋 레이트에서 5% 개선을 나타내는 식이다). 도 12에 도시된 결과들에서, 사전-포화 및 사후-CNC 보상이 사용된다. 방식 A(곡선 190) 및 방식 B(곡선 192)는 v2c 및 c2v 메시지들 모두에 대해 2개의 상이한 반복 종속 스케일링 및 바이어스 방식들을 적용한다.
도 13은 이전의 논의에 따라 수행되는 다양한 단계들을 기술하기 위해 사전-포화 보상 루틴(200)을 갖는 LDPC 디코딩을 위한 흐름도를 제공한다. 단계들은 도 2의 채널(110)을 사용하여 도 1의 데이터 저장 디바이스(100)의 상황에서 수행되는 것으로 고려된다.
데이터 저장 디바이스의 비휘발성 메모리로부터 데이터를 리트리브하기 위해 단계(202)에서 판독 동작이 수행된다. 리트리브된 데이터의 프로세싱은 검출기(114)에 의한 초기 코드 워드(판독 LDPC 코드 비트들)의 생성을 포함하며, 이는, 코드 비트들의 임의의 비트 에러들을 식별하기 위해 LDPC 디코더(112)에 제시된다.
초기 하드 디코딩 동작은 단계(204)에서 LDPC 디코더(112)에 의해 수행된다. 이것은 도 4에서 앞서 논의된 바와 같이, 코드 비트들의 초기 비트 값들에 기초하여 체크 노드들에서 v2c 메시지들의 간단한 패리티 체크를 수반할 수 있다. 단계(204)는, 하드 디코딩이 LDPC 디코더에 대한 세팅 1을 사용하여 수행되는 것을 나타내고; 이는, v2c 또는 c2v 메시지들의 스케일/바이어스 또는 LLR LUT 매핑과 같은 파라미터 조절들을 포함할 수 있다.
판정 단계(206)는, 단계(204)의 하드 디코딩 동작이 성공적이었는지 여부를 결정하고; 성공적이었다면, 흐름은, 성공적으로 디코딩된 데이터가 추가적인 프로세싱을 위해 출력되는 단계(208)로 진행한다.
하드 디코딩 동작이 성공적이 아니면, 흐름은 판정 단계(206)로부터 단계(210)로 진행하여, 디코딩 프로세스를 보조하기 위한 소프트 정보를 획득하기 위해 하나 이상의 추가적인 판독 동작들이 수행된다. 이러한 추가적인 판독 동작들은 판독 전압 임계치들에서의 조절들 또는 메모리에 대한 다른 파라메트릭 변화들을 수반할 수 있다.
LDPC 디코더(112)의 제2 디코딩 시도는 소프트 디코딩 동작을 사용하여 단계(212)에서 수행된다. 이것은, 도 5 및 도 6의 LLR 값들이 단계(210)의 추가적인 판독들로부터의 v2c 메시지들의 결정에 통합되는 것을 포함할 수 있다. 단계(212)는 다른 사전-포화 및 사후-CNU 스케일링 방식을 제공하기 위해 상이한 세트의 파라미터들에 대응할 수 있는 세팅 2를 사용하여 LDPC 디코더가 구성되는 것을 나타낸다.
판정 단계(214)는 제2 디코딩 시도가 코드 비트들의 나머지 비트 에러들을 성공적으로 해결했는지 여부를 결정한다. 성공적으로 해결하지 않으면, 흐름은, 블록(212)의 세팅 2와 상이한 또 다른 파라메트릭 구성인 세팅 3을 사용하여 다른 소프트 디코딩 동작이 수행되는 단계(216)로 계속된다. 또한, 스케일링, 바이어스 및 LLR LUT에 추가로, 다음 디코딩 시도를 위한 디코더 세팅을 변경하는 것은 다른 디코더 파라미터들, 예를 들어 최대 수의 반복들, 입력 LLR 댐프닝 등을 수반할 수 있다.
흐름은 에러들이 해결되었는지 여부를 결정하는 판정 단계(218)로 계속되며; 해결되지 않았다면, 흐름은, 단계(220)로 진행하여 더 높은 레벨들의 판독 복원 기술들이 비트 에러들을 해결하는 것을 계속하도록 적용된다. 이러한 더 높은 레벨들은 판독 재시도들, 다양한 판독 파라미터들에 대한 조절들, 더 높은 레벨들의 외부 코드의 사용 등을 포함할 수 있다. 도 13에는 오직 3개의 디코딩 시도들이 도시되어 있지만, 다른 판독 복원 기술들로 전이하기 전에 요구되는대로 임의의 수의 시도들이 활용될 수 있음을 인식할 것이다.
또한, 도 14 및 도 15는 본원에 논의된 LDPC 디코더(112)의 사용을 위한 적절한 환경들에 관한 추가적인 세부사항들을 예시하기 위해 제공되었다. 도 14는 일부 실시예들에 따른 솔리드 스테이트 드라이브(SSD) 데이터 저장 디바이스(300)에 대한 기능 블록도를 도시한다.
제어기 회로(302)는 디바이스(300)에 대한 최상위 레벨 제어를 제공하고, 도 1의 제어기(102)에 대응할 수 있다. 인터페이스 회로(304) 및 로컬 버퍼 메모리(306)는 외부 호스트 디바이스와 플래시 메모리(308) 사이에서 사용자 데이터의 전송을 조정한다. 판독/기록/소거 회로(310)는 입력 기록 데이터의 필수적인 인코딩을 수행하고, 인코딩된 기록 데이터를 메모리(308)에 기록하기 위해 적절한 플래시 메모리 셀들의 프로그래밍을 지시한다. 판독 동작 동안, 프로그래밍된 데이터 비트들은 원래 공급된 데이터의 호스트로의 전송 전에 LDPC 디코더(112)(R/W/E 회로(310)의 일부를 형성함)에 의해 복원되고 프로세싱된다.
도 15는 일부 실시예들에서 하드 디스크 드라이브(HDD) 또는 하이브리드 솔리드 스테이트 드라이브(HSSD) 저장 디바이스(400)에 대한 기능 블록도를 제공한다. 제어기 회로(402), 인터페이스 회로(404) 및 버퍼 메모리(405)는 호스트 디바이스와의 데이터 전송들을 조정하기 위해 도 14에서와 같이 동작한다. 플래시 메모리(406)는 데이터의 저장을 위한 로컬 비휘발성 반도체 메모리를 제공한다. 판독/기록(R/W) 채널(408) 및 전치증폭기/드라이버(preamp)(410)는 데이터 판독/기록 트랜스듀서(헤드)(414)를 사용하여 데이터의 회전가능한 레코딩 매체(디스크)(412)로의 전송들을 지원한다. 헤드 위치는 보이스 코일 모터(VCM)(416) 및 폐루프 서보 제어 회로(418)를 사용하여 제어된다.
호스트로부터의 데이터는 요구되는대로 플래시(406) 및/또는 디스크(412)에 저장될 수 있다. 이전과 같이, 채널(408)은 기록 동작 동안 데이터를 인코딩하고, 후속 판독 동작 동안 데이터를 복원하기 위해 LDPC 프로세싱을 사용한다. 별개의 LDPC 디코더들(112)은 플래시 및 디스크에 저장된 데이터의 디코딩을 위해 요구되는대로 사용될 수 있다.
이제, 본원에 제시된 다양한 실시예들은 기존 기술에 비해 다수의 이점들을 제공한다는 것을 인식할 것이다. 사전-포화 보상 및 사후-CNU 스케일링의 사용은 워터폴 및 에러 플로어 성능에서의 상당한 개선들을 제공할 수 있다.
LDPC 디코더에 의한 초기 디코딩 동작은 하드 디코딩일 것이고, 스케일링/바이어스 팩터들 및/또는 LUT 매핑 및/또는 LLR 댐프닝 값들은 최저 SNR 값에서 최상의 가능한 코드 워드 실패 레이트를 제공하도록 설정될 것으로 고려되지만 반드시 요구되는 것은 아니다. 스루풋이 지배적인 요건이면, 스케일링/바이어스 팩터들 및/또는 LUT 매핑/LLR 댐프닝 값들은 요구되는 스루풋 레이트를 달성하면서 코드 워드 실패 레이트를 실제 범위까지 최소화하도록 설정될 수 있다.
후속 디코딩 시도들은, 소프트 디코딩 동작에 통합될 수 있는 소프트 정보를 제공하기 위해 상이한 판독 파라미터들(예를 들어, 상이한 판독 전압 임계치들, 상이한 헤드 플라이 높이들 등)을 사용하여 데이터가 재판독되는 판독 재시도들에 기초하여 소프트 디코딩들을 구성하는 것으로 고려된다. 상이한 스케일링/바이어스 팩터들 및/또는 LLR 댐프닝 값들은 소프트 디코딩 동작을 위한 최소 SNR에서 최상의 코드 워드 실패 레이트를 제공하기 위해 활용될 수 있다. 상이한 반복들에 대해 2개 이상의 세트들의 스케일링/바이어스/LLR 댐프닝 값들이 스위칭될 수 있다. 위에서 언급된 바와 같이, 이러한 기술들은, 일부 경우들에서는 미보상된 솔루션들보다 양호한 정도의 크기까지 에러 플로어 성능에서의 상당한 개선들을 달성할 수 있다.
본 개시의 다양한 실시예들의 다수의 특성들 및 이점들이 본 개시의 다양한 구조 및 기능의 세부사항들과 함께 전술한 설명에서 기술되었지만, 이러한 상세한 설명은 단지 예시적이고, 첨부된 청구 범위가 표현되는 용어들의 광의의 일반적인 의미에 의해 표시되는 최대한의 범위까지, 특히 본 개시의 원리들 내의 부분들의 구조 및 배열들에 관한 문제들에서 변화들이 상세히 행해질 수 있음을 이해해야 한다.
Claims (20)
- 저밀도 패리티 체크(LDPC) 디코더로서,
코드 비트 신뢰도 값들을 생성하도록 구성되는 복수의 가변 노드들을 포함하는 가변 노드 회로(VNC);
다수의 n-비트 메시지들에 대해 패리티 체크 동작들을 수행하도록 구성되는 복수의 체크 노드들을 포함하는 체크 노드 회로(CNC) - 각각의 n-비트 메시지는 상기 코드 비트 신뢰도 값들의 조합을 포함함 -; 및
상기 CNC에 의해 수신된 각각의 n-비트 메시지의 크기를, p 비트들을 사용하여 표현될 수 있는 최대값을 포함하는 포화 한계 아래로 유지하도록 구성되는 사전-포화 보상 회로를 포함하고, p는 n보다 작고, 상기 CNC에 의해 수신되는 p-비트 메시지들 중 적어도 2개는 상이한 크기를 갖는, LDPC 디코더. - 제1 항에 있어서, 상기 사전-포화 보상 회로는 제1 크기를 갖는 상기 VNC로부터 선택된 메시지를 수신하고, 상기 제1 크기보다 작은 제2 크기를 갖는 스케일링된 메시지를 생성하기 위해, 상기 선택된 메시지에 감소 값을 적용하고, 상기 스케일링된 메시지를 상기 CNC에 송신하도록 구성되는, LDPC 디코더.
- 제2 항에 있어서, 상기 감소 값은 상기 스케일링된 메시지를 생성하기 위해 상기 선택된 메시지와 결합되는 스케일링 팩터인, LDPC 디코더.
- 제2 항에 있어서, 상기 감소 값은 상기 스케일링된 메시지를 생성하기 위해 상기 선택된 메시지의 일부와 결합되는 바이어스 팩터인, LDPC 디코더.
- 제1 항에 있어서, 상기 CNC에 의해 수신된 상기 p-비트 메시지들 각각은 상기 LDPC 디코더에 의한 선택된 디코딩 시도 동안 상이한 크기를 갖는, LDPC 디코더.
- 제1 항에 있어서, 상기 사전-포화 보상 회로는, 상이한 입력 메시지 값들의 수신에 응답하여 보상된 메시지들을 출력하는 메모리 내의 룩업 테이블을 포함하고, 상기 룩업 테이블에 의해 출력되는 각각의 보상된 메시지 값은 상기 룩업 테이블에 입력되는 대응하는 입력 메시지 값에 비해 감소된 크기를 갖는, LDPC 디코더.
- 제1 항에 있어서, 상기 n-비트 메시지들 각각은 연관된 n-비트 메시지의 초기 크기와 관련하여 상이한 크기를 갖는, LDPC 디코더.
- 제1 항에 있어서, 상기 n-비트 메시지들은 제1 메시지들로서 특성화되고, 상기 CNC는 상기 n-비트 메시지들에 대한 상기 패리티 체크 동작들의 적용에 응답하여 제2 메시지들을 생성하도록 추가로 구성되고, 상기 LDP 디코더는,
스케일링된 제2 메시지들을 생성하기 위해 감소 팩터에 응답하여 상기 제2 메시지들 각각의 크기를 감소시키도록 구성되는 사후-CNC 스케일링 회로; 및
상기 스케일링된 제2 메시지들의 상기 VNC로의 전송 전에 상기 스케일링된 제2 메시지들을 일시적으로 저장하도록 구성되는 로컬 메모리를 더 포함하는, LDPC 디코더. - 제1 항에 있어서, 상기 LDPC 디코더의 이전 반복과 연관된 부분적 사후 정보를 저장하도록 구성되는 로컬 메모리를 더 포함하고, 상기 n-비트 메시지들은 상기 LDPC 디코더의 후속 반복 동안 상기 부분적 사후 정보를 더 포함하는, LDPC 디코더.
- 제1 항에 있어서, 메인 메모리를 포함하는 데이터 저장 디바이스의 채널 회로에 통합되고, m-비트 코드 워드들은 상기 데이터 저장 디바이스에 커플링되는 호스트 디바이스에 사용자 데이터를 전송하기 위해 판독 동작 동안 상기 메인 메모리로부터 리트리브되는 데이터를 포함하는, LDPC 디코더.
- 데이터 저장 디바이스로서,
제어기 회로;
호스트 디바이스에 의해 공급되는 사용자 데이터를 저장하도록 구성되는 메인 메모리; 및
상기 메인 메모리로부터 이전에 저장된 사용자 데이터를 리트리브하도록 구성되는 채널 회로를 포함하고, 상기 채널 회로는 검출기 회로 및 저밀도 패리티 체크(LDPC) 디코더를 포함하고, 상기 LDPC 디코더는,
상기 디코더 회로로부터의 입력에 응답하여 m-코드 비트들을 갖는 코드 워드의 비트 신뢰도 값들을 생성하도록 구성되는 복수의 가변 노드들을 포함하는 가변 노드 회로(VNC);
각각 n-비트를 갖는 v2c(variable-to-check) 메시지들에 대해 패리티 체크 동작들을 수행하도록 구성되는 복수의 체크 노드들을 포함하는 체크 노드 회로(CNC) - 각각의 v2c 메시지는 상기 비트 신뢰도 값들의 조합을 포함하고, 상기 CNC는 상기 v2c 메시지들에 대한 상기 패리티 체크 동작들에 응답하여 c2v(check-to-variable) 메시지들을 생성하고, 상기 c2v 메시지들 각각은 p-비트를 갖고, 상기 LDPC 디코더에 의한 하나의 디코딩 반복을 포함하는 상기 c2v 메시지들의 전송이 상기 v2c 메시지들의 전송에 후속함 -; 및
각각의 v2c 메시지의 크기를, 상기 LDPC 디코더들의 에러 플로어 응답을 낮추기 위해 p 비트를 사용하여 표현될 수 있는 최대값 아래로 감소시키도록 구성되는 사전-포화 보상 회로를 포함하고, p는 n보다 작고, 상기 v2c 메시지들 각각은 상이한 크기를 갖는 상기 사전-포화 보상 회로에 의해 크기에서 감소되는, 데이터 저장 디바이스. - 제11 항에 있어서, 상기 LDPC 디코더는 상기 LDPC 디코더의 워터폴 구역 응답을 향상시키기 위한 감소 팩터에 응답하여 상기 c2v 메시지들 각각의 크기를 감소시키도록 구성되는 사후-CNC 스케일링 회로를 더 포함하는, 데이터 저장 디바이스.
- 제11 항에 있어서, 상기 사전-포화 보상 회로는, 상기 VNC에 의해 생성되는 상이한 입력 메시지 값들의 수신에 응답하여 보상된 메시지 값들을 출력하는 메모리 내의 룩업 테이블을 포함하고, 상기 룩업 테이블에 의해 출력되는 각각의 보상된 메시지 값은 상기 룩업 테이블에 입력되는 대응하는 입력 메시지 값에 비해 감소된 크기를 갖는, 데이터 저장 디바이스.
- 제11 항에 있어서, 상기 사전-포화 보상 회로는 제1 반복 동안 선택된 체크 노드에 대해 제1 v2c 메시지를 생성하기 위해 제1 스케일링 팩터 또는 제1 바이어스 팩터 중 적어도 선택된 것, 및 제2 반복 동안 상기 선택된 체크 노드에 대해 제2 v2c 메시지를 생성하기 위해 상이한 제2 스케일링 팩터 또는 상이한 제2 바이어스 팩터 중 적어도 선택된 것을 사용하는, 데이터 저장 디바이스.
- 제11 항에 있어서, 상기 채널 회로는 제1 세트의 파라미터 값들이 사용되는 상기 제어기 회로에 의해 공급되는 판독 커맨드에 응답하여 상기 메인 메모리의 선택된 위치로부터 상기 코드 워드를 복원하고, 제1 디코딩 시도 동안 복원불가능한 에러의 검출에 응답하여, 상기 채널 회로는 제2 세트의 파라미터 값들을 사용하여 상기 코드 워드에 대한 추가적인 정보를 복원함으로써 소프트 정보를 획득하고, 상기 소프트 정보는 제2 디코딩 시도 동안 상기 사전-포화 보상 회로에 의해 보상되는 후속 v2c 메시지에 통합되는, 데이터 저장 디바이스.
- 방법으로서,
가변 노드 회로(VNC)에 의해, 입력 코드 워드를 수신하는 단계 - 상기 VNC는 비트 신뢰도 값들을 생성하도록 구성되는 복수의 가변 노드들을 포함함 -;
복수의 v2c(variable-to-check) 메시지들을 생성하는 단계 - 각각의 v2c 메시지는 n-비트를 갖고 CNC 메시지들의 메모리에 저장된 상기 비트 신뢰도 값들의 조합으로부터 형성됨 -;
복수의 상기 v2c 메시지들의 크기를, p 비트들을 사용하여 표현될 수 있는 최대값을 포함하는 포화 한계 아래로 유지하기 위해 상기 v2c 메시지들 각각을 컨디셔닝하는 단계 - p는 n보다 작고, 컨디셔닝된 v2c 메시지들 각각은 상이한 크기를 가짐 -;
상기 컨디셔닝된 v2c 메시지들에 대해 체크 노드 회로(CNC)에 의한 패리티 체크 동작들을 수행하는 단계 - 상기 CNC는 상기 가변 노드들의 상이한 서브세트들에 각각 커플링되는 복수의 체크 노드들을 포함함 -; 및
상기 패리티 체크 동작들에 응답하여 복수의 c2v(check-to-variable) 메시지들을 생성하는 단계를 포함하는, 방법. - 제16 항에 있어서, 상기 c2v 메시지들을 대응하는 복수의 감소된 크기의 c2v 메시지들을 생성하기 위한 감소 팩터와 결합하는 단계, 및 감소된 크기의 c2v 메시지들을 후속 반복 동안 상기 VN에 공급하도록 구성되는 메모리에 상기 감소된 크기의 c2v 메시지들을 포워딩하는 단계를 더 포함하는, 방법.
- 제16 항에 있어서, 상기 컨디셔닝하는 단계는 제1 크기를 갖는 상기 VNC로부터 선택된 메시지를 수신하는 단계, 상기 제1 크기보다 작은 제2 크기를 갖는 스케일링된 메시지를 생성하기 위해, 상기 선택된 메시지에 감소 값을 적용하는 단계, 및 상기 스케일링된 메시지를 상기 CNC에 송신하는 단계를 포함하는, 방법.
- 제16 항에 있어서, 상기 컨디셔닝하는 단계는 제1 크기를 갖는 메시지를 수신하는 단계, 상기 제1 크기보다 작은 제2 크기를 갖는 보상된 메시지를 출력하기 위해 메모리 내의 룩업 테이블을 사용하는 단계, 및 보상된 메시지를 상기 CNC에 송신하는 단계를 포함하는, 방법.
- 제16 항에 있어서, 부분적 사후 정보를 로컬 메모리에 저장하는 단계 및 상기 v2c 메시지들을 생성하기 위해 상기 부분적 사후 정보를 사용하는 단계를 더 포함하는, 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/478,895 US10263640B2 (en) | 2017-04-04 | 2017-04-04 | Low density parity check (LDPC) decoder with pre-saturation compensation |
US15/478,895 | 2017-04-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180112724A true KR20180112724A (ko) | 2018-10-12 |
KR102563220B1 KR102563220B1 (ko) | 2023-08-02 |
Family
ID=63669986
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180039169A KR102563220B1 (ko) | 2017-04-04 | 2018-04-04 | 사전-포화 보상을 갖는 저밀도 패리티 체크(ldpc) 디코더 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10263640B2 (ko) |
JP (1) | JP2018182735A (ko) |
KR (1) | KR102563220B1 (ko) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10340951B2 (en) * | 2017-09-13 | 2019-07-02 | Toshiba Memory Corporation | Soft decision LDPC decoder with improved LLR from neighboring bits |
US10997017B2 (en) * | 2018-05-03 | 2021-05-04 | SK Hynix Inc. | Neighbor assisted correction error recovery for memory system and method thereof |
US10872013B2 (en) | 2019-03-15 | 2020-12-22 | Toshiba Memory Corporation | Non volatile memory controller device and method for adjustment |
US11086717B2 (en) | 2019-10-31 | 2021-08-10 | Seagate Technology Llc | Random selection of code words for read voltage calibration |
US11233528B1 (en) | 2020-09-16 | 2022-01-25 | Seagate Technology Llc | Method and apparatus for LDPC decoding using indexed messages |
CN112104394B (zh) * | 2020-11-18 | 2021-01-29 | 北京思凌科半导体技术有限公司 | 信号处理方法、装置、存储介质及电子设备 |
JP7535937B2 (ja) | 2020-12-28 | 2024-08-19 | Kddi株式会社 | 無線通信装置、および復号方法 |
EP4329202A4 (en) | 2021-05-25 | 2024-10-16 | Samsung Electronics Co Ltd | SELF-CORRECTING MIN-SUM DECODER BASED ON NEURAL NETWORK AND ELECTRONIC DEVICE COMPRISING SAME |
KR20220159071A (ko) * | 2021-05-25 | 2022-12-02 | 삼성전자주식회사 | 신경망 자기 정정 최소합 복호기 및 이를 포함하는 전자 장치 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130212447A1 (en) * | 2012-02-09 | 2013-08-15 | Lsi Corporation | Non-Binary LDPC Decoder with Low Latency Scheduling |
US20170026055A1 (en) * | 2015-07-24 | 2017-01-26 | Tidal Systems, Inc. | Adaptive desaturation in min-sum decoding of ldpc codes |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2456485C (en) | 2002-07-03 | 2011-11-15 | Hughes Electronics Corporation | Method and system for providing low density parity check (ldpc) encoding |
US7562279B2 (en) | 2005-05-20 | 2009-07-14 | Mitsubishi Electric Research Laboratories, Inc. | 2D-normalized min-sum decoding for ECC codes |
WO2008057616A2 (en) | 2006-11-02 | 2008-05-15 | Advanced Technology Materials, Inc. | Antimony and germanium complexes useful for cvd/ald of metal thin films |
US7934139B2 (en) | 2006-12-01 | 2011-04-26 | Lsi Corporation | Parallel LDPC decoder |
US7911364B1 (en) | 2007-09-04 | 2011-03-22 | Marvell International Ltd. | Interleaver for turbo equalization |
US8219878B1 (en) | 2007-12-03 | 2012-07-10 | Marvell International Ltd. | Post-processing decoder of LDPC codes for improved error floors |
US8291292B1 (en) * | 2008-01-09 | 2012-10-16 | Marvell International Ltd. | Optimizing error floor performance of finite-precision layered decoders of low-density parity-check (LDPC) codes |
US8201051B2 (en) | 2008-10-15 | 2012-06-12 | Lsi Corporation | Method for detecting short burst errors in LDPC system |
EP2181504A4 (en) * | 2008-08-15 | 2010-07-28 | Lsi Corp | DECODING LIST OF CODED WORDS CLOSE IN A ROM MEMORY |
US8286048B1 (en) | 2008-12-30 | 2012-10-09 | Qualcomm Atheros, Inc. | Dynamically scaled LLR for an LDPC decoder |
US8370709B2 (en) * | 2009-04-16 | 2013-02-05 | Micron Technology, Inc. | Multiple-level memory cells and error detection |
US8879640B2 (en) | 2011-02-15 | 2014-11-04 | Hong Kong Applied Science and Technology Research Institute Company Limited | Memory efficient implementation of LDPC decoder |
WO2012118766A1 (en) * | 2011-02-28 | 2012-09-07 | Clariphy Communications, Inc. | Non-concatenated fec codes for ultra-high speed optical transport networks |
US8566665B2 (en) | 2011-06-24 | 2013-10-22 | Lsi Corporation | Systems and methods for error correction using low density parity check codes using multiple layer check equations |
US8650451B2 (en) | 2011-06-30 | 2014-02-11 | Lsi Corporation | Stochastic stream decoding of binary LDPC codes |
US9264073B2 (en) * | 2011-09-02 | 2016-02-16 | Samsung Electronics Co., Ltd | Freezing-based LDPC decoder and method |
US8656249B2 (en) | 2011-09-07 | 2014-02-18 | Lsi Corporation | Multi-level LDPC layer decoder |
US9015547B2 (en) * | 2012-08-17 | 2015-04-21 | Lsi Corporation | Multi-level LDPC layered decoder with out-of-order processing |
US8930788B2 (en) | 2012-09-04 | 2015-01-06 | Lsi Corporation | LDPC decoder with fractional unsatisfied check quality metric |
US8862961B2 (en) | 2012-09-18 | 2014-10-14 | Lsi Corporation | LDPC decoder with dynamic graph modification |
US20140089757A1 (en) | 2012-09-22 | 2014-03-27 | Lsi Corporation | LDPC Decoder With Fractional Local Iterations |
US9048870B2 (en) * | 2012-11-19 | 2015-06-02 | Lsi Corporation | Low density parity check decoder with flexible saturation |
WO2014139123A1 (en) | 2013-03-14 | 2014-09-18 | Qualcomm Incorporated | Method and apparatus of ldpc decoder with lower error floor |
US9059742B1 (en) * | 2013-03-15 | 2015-06-16 | Western Digital Technologies, Inc. | System and method for dynamic scaling of LDPC decoder in a solid state drive |
US20160191079A1 (en) * | 2014-12-24 | 2016-06-30 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Low Dynamic Power Check Node Processor For Low Density Parity Check Decoder |
US9473175B1 (en) * | 2015-02-10 | 2016-10-18 | Microsemi Storage Solutions (U.S.), Inc. | Forward error correction decoder system |
WO2016129108A1 (ja) * | 2015-02-13 | 2016-08-18 | 株式会社日立製作所 | ストレージ装置及びデータ制御方法 |
-
2017
- 2017-04-04 US US15/478,895 patent/US10263640B2/en active Active
-
2018
- 2018-04-03 JP JP2018071650A patent/JP2018182735A/ja active Pending
- 2018-04-04 KR KR1020180039169A patent/KR102563220B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130212447A1 (en) * | 2012-02-09 | 2013-08-15 | Lsi Corporation | Non-Binary LDPC Decoder with Low Latency Scheduling |
US20170026055A1 (en) * | 2015-07-24 | 2017-01-26 | Tidal Systems, Inc. | Adaptive desaturation in min-sum decoding of ldpc codes |
Also Published As
Publication number | Publication date |
---|---|
US10263640B2 (en) | 2019-04-16 |
KR102563220B1 (ko) | 2023-08-02 |
US20180287635A1 (en) | 2018-10-04 |
JP2018182735A (ja) | 2018-11-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102563220B1 (ko) | 사전-포화 보상을 갖는 저밀도 패리티 체크(ldpc) 디코더 | |
US9294132B1 (en) | Dual-stage data decoding for non-volatile memories | |
US9459956B2 (en) | Data decoder with trapping set flip bit mapper | |
US8566666B2 (en) | Min-sum based non-binary LDPC decoder | |
CN102077173B (zh) | 利用写入验证减轻代码的误码平层 | |
US9048874B2 (en) | Min-sum based hybrid non-binary low density parity check decoder | |
US10367526B2 (en) | Irregular low density parity check processing system with non-uniform scaling | |
US8826109B2 (en) | LDPC decoder irregular decoding of regular codes | |
US10164657B2 (en) | Systems and methods for differential message scaling in a decoding process | |
US9130590B2 (en) | Non-binary layered low density parity check decoder | |
US9048870B2 (en) | Low density parity check decoder with flexible saturation | |
US9621188B2 (en) | Soft and hard decision message-passing decoding | |
US9130589B2 (en) | Low density parity check decoder with dynamic scaling | |
US8862961B2 (en) | LDPC decoder with dynamic graph modification | |
JP2008176911A (ja) | ホログラフィック記憶のための連結コード | |
US20140082449A1 (en) | LDPC Decoder With Variable Node Hardening | |
US20160020783A1 (en) | Low Density Parity Check Decoder With Relative Indexing | |
JP6957392B2 (ja) | メモリシステム | |
KR20150129325A (ko) | 솔리드 스테이트 메모리에 저장된 데이터 디코딩 | |
JP2013512524A (ja) | 汎用プロセッサ上の信号処理を用いるメモリ読取チャネル | |
US20170132077A1 (en) | Non-Binary Low Density Parity Check Code Column Rotation | |
US8751915B2 (en) | Systems and methods for selectable positive feedback data processing | |
US8949702B2 (en) | Systems and methods for detector side trapping set mitigation | |
US8868475B2 (en) | Systems and methods for data processing using soft data shaping | |
US9019647B2 (en) | Systems and methods for conditional positive feedback data decoding |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E90F | Notification of reason for final refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |