KR20150004732A - 저밀도 패리티-검사(ldpc) 디코더들에서 로그-우도비(llr) 완충 - Google Patents

저밀도 패리티-검사(ldpc) 디코더들에서 로그-우도비(llr) 완충 Download PDF

Info

Publication number
KR20150004732A
KR20150004732A KR20140026669A KR20140026669A KR20150004732A KR 20150004732 A KR20150004732 A KR 20150004732A KR 20140026669 A KR20140026669 A KR 20140026669A KR 20140026669 A KR20140026669 A KR 20140026669A KR 20150004732 A KR20150004732 A KR 20150004732A
Authority
KR
South Korea
Prior art keywords
llr values
llr
values
shortened
codeword
Prior art date
Application number
KR20140026669A
Other languages
English (en)
Other versions
KR102155795B1 (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
Priority claimed from US13/934,999 external-priority patent/US9337865B2/en
Application filed by 엘에스아이 코포레이션 filed Critical 엘에스아이 코포레이션
Publication of KR20150004732A publication Critical patent/KR20150004732A/ko
Application granted granted Critical
Publication of KR102155795B1 publication Critical patent/KR102155795B1/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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/618Shortening and extension of codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • 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/1142Decoding using trapping sets
    • 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/63Joint error correction and other techniques
    • H03M13/6306Error control coding in combination with Automatic Repeat reQuest [ARQ] and diversity transmission, e.g. coding schemes for the multiple transmission of the same information or the transmission of incremental redundancy
    • 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
    • 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/6591Truncation, saturation and clamping

Abstract

기술된 실시예들은 매체에 저장된 데이터를 판독하기 위한 매체 제어기를 제공한다. 매체 제어기는 매체로부터 단축된 코드워드의 각각의 비트에 대한 값을 결정한다. 단축된 코드워드는 완전한 코드워드의 복수의 비단축된 비트들을 포함하고, 완전한 코드워드는 복수의 비단축된 비트들 및 하나 이상의 단축된 비트들을 포함한다. 단축된 비트들은 단축된 코드워드에서 사용되지 않은 비트들에 대응한다. 매체 제어기는 단축된 코드워드의 각각의 비트에 대해 결정된 값들을 제 1 세트의 로그 우도비(LLR) 값들로 변환한다. 완전한 코드워드는 단축된 코드워드에 대하여 제 1 세트의 LLR 값들을 사용하여 디코딩된다. 매체 제어기는 코드워드의 비단축된 비트들에 대응하는 하나 이상의 LLR 값들을 완충하여 제 2 세트의 LLR 값들을 생성하고 제 2 세트의 LLR 값들을 디코딩한다.

Description

저밀도 패리티-검사(LDPC) 디코더들에서 로그-우도비(LLR) 완충{LOG-LIKELIHOOD RATIO(LLR) DAMPENING IN LOW-DENSITY PARITY-CHECK(LDPC) DECODERS}
관련 출원들에 대한 교차-참조
본 출원은 2012년 11월 21일에 출원된 미국 가특허 출원 제 61/729,178 호의 출원 일자의 이점을 청구하고, 그의 교시들은 참조로서 그의 전체들로 여기에 통합된다.
본 출원의 요지는 2012년 5월 4일에 출원된 미국 특허 출원 제 13/464,433 호 및 2012년 8월 4일에 출원된 제 13/567,025 호에 관한 것이고, 그의 교시들은 참조로서 그의 전체들로 여기에 통합된다.
본 발명은 제어기에 의해 저장 매체 및 통신 채널 중 적어도 하나로부터 데이터를 판독하는 방법에 관한 것이다.
플래시 메모리는 전기적 소거가능 프로그램가능 판독-전용 메모리(EEPROM)의 특정 형태인 비휘발성 메모리(NVM)이다. 하나의 일반적으로 채용된 형태의 플래시 메모리 기술은 NAND 플래시 메모리이다. NAND 플래시 메모리는 셀당 작은 칩 영역을 요구하고 일반적으로 하나 이상의 뱅크들 또는 평면들로 분할된다. 각각의 뱅크는 블록들로 분할되고, 각각의 블록은 페이지들로 분할된다. 각각의 페이지는 사용자 데이터, 에러 보정 코드(ECC) 정보, 또는 둘 모두를 저장하기 위한 다수의 바이트들을 포함한다.
NAND 디바이스들에 대한 세 개의 기본 동작들: 판독, 기록 및 삭제가 존재한다. 판독 및 기록 동작들은 한 페이지씩 수행된다. 페이지 크기들은 일반적으로, 예를 들면, 페이지당 2,048 바이트(2KB), 4,096 바이트(4KB), 8192 바이트(8KB) 또는 그 이상의 일반적인 사용자 데이터 페이지 크기들을 갖는, 2N 바이트의 사용자 데이터(ECC 정보에 대한 추가의 바이트들을 더함)이고, 여기서 N은 정수이다. "판독 유닛"은 NVM으로부터 판독될 수 있고 ECC에 의해 보정되는 가장 작은 양의 데이터 및 대응하는 ECC 정보이고, 일반적으로 4K 비트와 32K 비트 사이에 있다(예를 들면, 일반적으로 페이지당 정수의 판독 유닛들이 존재한다.). 페이지들은 일반적으로 블록들로 정렬되고, 삭제 동작은 한 블록씩 수행된다. 일반적인 블록 크기들은, 예를 들면, 블록당 64, 128 또는 그 이상의 페이지들이다. 페이지들은 일반적으로 블록내에서 낮은 어드레스부터 높은 어드레스로 순차적으로 기록되어야 한다. 더 낮은 어드레스들은 블록이 삭제될 때까지 재기록될 수 없다. 메모리 관리를 위해 사용된 ECC 정보 및/또는 다른 메타데이터의 저장을 위해 일반적으로 사용된 여분의 영역(일반적으로 100 내지 640 바이트)이 각각의 페이지와 연관된다. ECC 정보는 일반적으로 페이지에 저장된 사용자 데이터에서 에러들을 검출하고 보정하기 위해 채용되고, 메타데이터는 논리적 어드레스들을 물리적 어드레스들로 및 물리적 어드레스들로부터 맵핑하기 위해 사용된다. 다수의 뱅크들을 갖는 NAND 플래시 칩들에서, 페이지들이 각각의 뱅크로부터 실질적으로 동시에 액세스되게 하는 다수의-뱅크 동작들이 지원된다.
NAND 플래시 메모리는 플로팅 게이트 트랜지스터들로 만들어진 메모리 셀들의 어레이에 정보를 저장한다. 이들 트랜지스터들은 외부 전력이 공급되지 않고, 수 개월 또는 수 년 정도의, 긴 시간 기간들 동안, 전하라고도 또한 불리는, 그들의 전압 레벨을 유지한다. 단일-레벨 셀(SLC) 플래시 메모리에서, 각각의 셀은 1 비트의 정보를 저장한다. 멀티-레벨 셀(MLC) 플래시 메모리에서, 각각의 셀은 그의 셀들의 플로팅 게이트들에 적용할 전하의 다수의 레벨들을 선택함으로써 셀당 1비트보다 많이 저장할 수 있다. MLC NAND 플래시 메모리는 동일한 수의 트랜지스터를 사용하여 더 많은 비트들이 저장되게 하기 위해 직렬로 링크된 트랜지스터 정렬을 통해 셀당 다수의 전압 레벨들을 채용한다. 따라서, 개별적으로 고려하면, 각각의 셀은 셀에 저장되는 논리적 비트 값(들)에 대응하는 특정한 저장된(프로그래밍된) 전하를 갖고, 셀들은 각각의 셀에 대하여 하나 이상의 임계 전압들에 기초하여 판독된다.
이상적으로, NVM에서 모든 셀들은 동일한 임계 전압들을 가지지만, 실제로 임계 전압들은 가우시안 확률 곡선에 형태상 유사한 "임계 전압 분포들"에서 셀들에 걸쳐 상이하다. 다수의 셀들에 걸쳐 생각하면(예를 들면, 판독 유닛 또는 페이지), 셀당 상태들이 존재하는 만큼 많은 임계 전압 분포들(예를 들면, 가우시안 확률 곡선들)이 존재한다(예를 들면, 셀당 2b 분포들, 여기서 b는 비트들의 수이다.). 따라서, SLC 플래시 메모리들에 대하여, 두 개의 상태들(0 또는 1)이 존재하고, 따라서 셀당 두 개의 임계 전압 분포들(하나는 0이고, 다른 하나는 1), 및 단일 판독 임계 전압이 존재한다. 대부분 MLC NAND 플래시 메모리들은 셀당 네 개의 가능한 상태들을 채용하고, 따라서, 셀당 2비트의 정보를 저장할 수 있다. 따라서, MLC 플래시 메모리들에 대하여, 네 개의 상태들(예를 들면, 00, 01, 10, 11)이 존재하고, 따라서 네 개의 임계 전압 분포들 및 세 개의 판독 임계치들이 존재한다.
셀당 비트들의 수의 증가는 셀간 간섭 및 보유 잡음(예를 들면, 누출에 의한 것과 같은 저장된 전하에서 드리프트)이 더 심각해지게 하고, 이는 각각의 전압 레벨을 분리하는 전압 마진의 양을 감소시키고, 판독 에러들의 가능성 및 이와 같이 시스템의 비트 에러비(BER)를 증가시킨다. 또한, 각각의 셀의 임계 전압 분포들은, 예를 들면, 판독 방해, 기록 방해, 보유 손실, 셀 노화 및 처리, 전압 및 온도(PVT) 변동들에 의해, NVM의 동작 시간에 걸쳐 변할 수 있어, BER을 또한 증가시킨다. NVM으로부터 판독된 비트 에러가 판독 유닛에서 경험될 때, 시스템(예를 들면, NVM에 결합된 제어기)은 하드-디코딩 보정가능한 판독 유닛의 샘플을 위치 지정하기를 시도하기 위해 판독 임계치의 상이한 전압 값들에서 판독 유닛을 재판독한다. 또한, 소프트웨어 복잡성은 예를 들면, 보제-차우두리-호퀴엔헴(Bose-Chaudhuri-Hocquenghem; BCH) 및 저밀도 패리티-검사(LDPC)와 같은 에러 보정 코드(ECC)를 채용함으로써, 더 큰 BER을 보상하기 위해 증가될 수 있다.
메모리 디바이스들이 더 작아지고, 셀당 레벨들의 수가 증가하기 때문에, 더 효과적인 ECC가 요구된다. 예를 들면, ECC는 BCH 코드들에 대한 코드 레이트를 감소시킴으로서 개선되지만, 코드 레이트를 감소시키는 것은 NVM의 저장 용량을 감소시킨다. BCH 코드들와 달리, LDPC 코드들은 연판정 디코딩을 허용하고, 각각의 비트 값("하드 디코딩")을 추정하는 것에 더하여, 디코더는 또한 각각의 비트의 신뢰성을 추정한다("연판정 디코딩"). BCH 코드들보다 성능이 뛰어난 LDPC 코드들에 대하여, 각각의 비트의 신뢰성의 개선된 추정이 바람직하다.
본 개요는 상세한 설명에서 이하에 또한 기술되는 간략화된 형태의 개념들의 선택을 도입하기 위해 제공된다. 본 개요는 청구된 요지의 주요 특징들 또는 필수적인 특징들을 식별하기 위해 의도되는 것이 아니고, 청구된 요지의 범위를 제한하기 위해 사용되는 것으로 의도되는 것도 아니다.
기술된 실시예들은 매체에 저장된 데이터를 판독하기 위한 매체 제어기를 제공한다. 매체 제어기는 매체로부터 단축된 코드워드의 각각의 비트에 대한 값을 결정한다. 단축된 코드워드는 완전한 코드워드의 복수의 비단축된 비트들을 포함하고, 완전한 코드워드는 복수의 비단축된 비트들 및 하나 이상의 단축된 비트들을 포함한다. 단축된 비트들은 단축된 코드워드에서 미사용된 비트들에 대응한다. 매체 제어기는 단축된 코드워드의 각각의 비트에 대한 결정된 값들을 제 1 세트의 로그-우도비(LLR) 값들로 변환한다. 완전한 코드워드는 단축된 코드워드에 대한 제 1 세트의 LLR 값들을 사용하여 디코딩된다. 매체 제어기는 코드워드의 비단축된 비트들에 대응하는 하나 이상의 LLR 값들을 완충시켜서 제 2 세트의 LLR 값들을 생성하고 제 2 세트의 LLR 값들을 디코딩한다.
본 발명은 제어기에 의해 저장 매체 및 통신 채널 중 적어도 하나로부터 데이터를 판독하는 방법을 제공한다.
도 1은 예시적인 실시예들에 따른 플래시 메모리 저장 시스템의 블록도.
도 2는 단일 표준 플레시 메모리 셀의 예시적인 기능적 블록도.
도 3은 예시적인 실시예들에 따른 예시적인 NAND MLC 플래시 메모리 셀을 도시하는 도면.
도 4는 시간에 따른 도 3의 MLC NAND 플래시 셀에서 상태 비트 값들의 전압 분포의 변동의 예시적인 도면.
도 5a는 초기 시간에서 도 3의 MLC NAND 클래시 셀의 임계 전압 확률 분포들의 일 예시적인 도면.
도 5b는 이후 시간에서 도 3의 MLC NAND 클래시 셀의 시프트된 임계 전압 확률 분포들의 일 예시적인 도면.
도 6a은 도 1의 저장 매체상에 저장된 일 예시적인 비단축된 코드워드를 도시하는 도면.
도 6b는 도 1의 저장 매체상에 저장된 일 예시적인 단축된 코드워드를 도시하는 도면.
도 7은 도 6b의 단축된 코드워드의 일 예시적인 완충된 버전을 도시하는 도면.
도 8은 예시적인 실시예들에 따른 도 1의 플래시 메모리 저장 시스템의 일 예시적인 LDPC 디코딩 알고리즘의 흐름도.
도 9는 도 8의 LDPC 디코딩 알고리즘에 따른 완충이 있는 및 완충이 없는 신호 대 잡음비를 통해 보정불가 비트 에러들의 에러 플로어를 보여주는 일 예시적인 차트를 도시하는 도면.
기술된 실시예들의 다른 양태들, 피처들, 및 이점들은 다음의 상세한 설명, 첨부된 청구항들, 및 유사한 참조 번호들이 유사하거나 동일한 요소들을 나타내는 첨부하는 도면들로부터 더 완전히 명백해질 것이다.
기술된 실시예들은 매체에 저장된 데이터를 판독할 매체 제어기를 제공한다. 매체 제어기는 매체로부터 단축된 코드워드의 각각의 비트에 대한 값을 결정한다. 단축된 코드워드는 완전한 코드워드의 복수의 비단축된 비트들을 포함하고, 완전한 코드워드는 복수의 비단축된 비트들 및 하나 이상의 단축된 비트들을 포함한다. 단축된 비트들은 단축된 코드워드들에서 미사용된 비트들에 대응한다. 매체 제어기는 단축된 코드워드의 각각의 비트에 대한 결정된 값들을 제 1 세트의 로그-우도비(LLR) 값들로 변환한다. 완전한 코드워드는 단축된 코드워드에 대한 제 1 세트의 LLR 값들을 사용하여 디코딩된다. 매체 제어기는 코드워드의 비단축된 비트들에 대응하는 하나 이상의 LLR 값들을 완충시켜서 제 2 세트의 LLR 값들을 생성하고 제 2 세트의 LLR 값들을 디코딩한다.
표 1은 기술된 실시예들을 이해하는 것을 돕는 본 명세서 전반에 채용된 두문자들의 리스트를 규정한다.
BER 비트 에러 레이트 DSP 디지털 신호 처리
ECC 에러 보정 코드 HDD 하드 디스크 드라이브
IC 집적 회로 I/O 입력/출력
LDPC 저밀도 패리티-검사 LLR 로그-우도비
LSB 최하위 비트 MLC 멀티-레벨 셀
MSB 최상위 비트 NVM 비휘발성 메모리
PCI-E 주변 구성 요소 상호 접속 익스프레스 SAS 직렬 접속 SCSI
SATA 직렬 어드밴스 기술 접속 SCSI 소형 컴퓨터 시스템 인터페이스
SoC 시스템 온 칩 SSD 고체 상태 디스크
UBER 보정불가 비트 에러 레이트 USB 범용 직렬 버스
도 1은 비휘발성 메모리(NVM) 저장 시스템(100)의 블록도를 도시한다. NVM 저장 시스템(100)은 매체 제어기(120)에 결합된 매체(110)를 포함한다. 매체(110)는 NAND 플래시 고체-상태 디스크(SSD), 하드 디스크 드라이브(HDD)와 같은 자기 저장 매체, 콤팩트 디스크(CD) 또는 디지털 다기능 디스크(DVD)와 같은 광 저장 매체, 하이브리드 고체-상태 및 자기 시스템 또는 다른 유사한 저장 시스템들로서 실행된다. 매체(110)는 일반적으로 백플레인과 같은 물리적 송신 매체, 자기 기록 시스템의 구동 헤드, 광섬유들, 하나 이상의 동축 케이블들, 하나 이상의 꼬임쌍 구리선들, 또는 하나 이상의 무선 주파수(RF) 채널들에 의해 매체 제어기(120)에 결합된다. 또한, NVM 저장 시스템에 관하여 여기에 기술되었지만, 기술된 실시예들은 유선 또는 무선 채널을 통해 수신된 데이터를 디코딩하기 위한 휴대 전화 또는 기지국의 기저대역 처리 시스템 또는 유선 또는 무선 통신 채널로부터 수신된 데이터를 디코딩하는 임의의 시스템에서 추가적으로 또는 대안적으로 채용된다.
도 1에 도시된 바와 같이, 매체(110) 및 매체 제어기(120)는 집합적으로 SSD(101)이다. 매체 제어기(120)는 고체 상태 제어기(130), 제어 프로세서(140), 버퍼(150), 및 I/O 인터페이스(160)를 포함한다. 매체 제어기(120)는 매체(110)와 통신 링크(170)에 결합되는 호스트 디바이스(180) 사이의 데이터의 전달을 제어한다. 매체 제어기(120)는 시스템-온-칩(SoC) 또는 다른 집적 회로(IC)로서 실행된다. 고체 상태 제어기(130)는 매체(110)에서 메모리 위치들을 액세스하기 위해 사용되고, 일반적으로 매체(110)와 인터페이스하기 위해 저 레벨, 장치에 특정된 동작들을 실행한다. 버퍼(150)는 제어 프로세서(140)에 대한 캐시로서 및/또는 고체 상태 매체(110)와 호스트 디바이스(180) 사이의 동작들에 대한 판독/기록 버퍼로서 동작하도록 채용된 RAM 버퍼이다. 예를 들면, 데이터는 일반적으로 I/O 인터페이스(160) 및 링크(170)를 통해 고체 상태 매체(110)와 호스트 디바이스(180) 사이의 전달 동안 버퍼(150)에 일시적으로 저장된다. 버퍼(150)는 통신 링크(170)의 데이터 전달 크기와 매체(110)의 저장 유닛 크기(예를 들면, 판독 유닛 크기, 페이지 크기, 섹터 크기, 또는 맵핑된 유닛 크기) 사이의 차이들을 고려하기 위해 데이터를 그룹화 또는 분할하기 위해 채용된다. 버퍼(150)가 더블-데이터-레이트(예를 들면, DDR-3) DRAM으로서 일반적으로 실행되는 매체 제어기(120)(도시되지 않음) 외부에 메모리를 또한 포함할 수 있지만, 버퍼(150)는 정적 랜덤-액세스 메모리(SRAM)로서, 또는 매체 제어기(120) 내부에 임베딩된 동적 랜덤-액세스 메모리(eDRAM)로서 실행된다.
제어 프로세서(140)는 매체(110)에서 데이터 액세스를 제어(예를 들면, 판독 또는 기록 동작들)하기 위해 고체 상태 제어기(130)와 통신한다. 제어 프로세서(140)는 하나 이상의 Pentium
Figure pat00001
, Power PC
Figure pat00002
, Tensilica
Figure pat00003
또는 ARM 프로세서들, 또는 상이한 프로세서 형태들의 조합으로 실행된다(Pentium
Figure pat00004
은 인텔사의 등록 상표이고, Tensilica
Figure pat00005
는 텐실리카, 인크.의 상표이고, ARM 프로세서들은 ARM 홀딩스, 유한 책임 회사에 의한 것이고, Power PC
Figure pat00006
는 IBM의 등록 상표이다). 도 1에 단일 프로세서로서 도시되었지만, 제어 프로세서(140)는 다수의 프로세서들(도시되지 않음)에 의해 실행되고 기술된 실시예들에 따라 임계 최적화된 동작들을 수행하는 것을 포함하여, 동작에 필요할 때 소프트웨어/펌웨어를 포함한다. 제어 프로세서(140)는, 매체(110)에 기록된 데이터에 대한 LDPC 인코딩 및 매체(110)로부터 판독된 데이터의 디코딩을 수행하는, 저밀도 패리티-검사(LDPC) 코덱/디코더(코덱)(142)와 통신 상태이다.
통신 링크(170)는 NVM 시스템(100)과 인터페이스하는 컴퓨터 시스템인 호스트 디바이스(180)와 통신하기 위해 사용된다. 통신 링크(170)는 주문형 통신 링크일 수 있거나, 또는 예를 들면, 소형 컴퓨터 시스템 인터페이스("SCSI") 프로토콜 버스, 직렬 접속 SCSI("SAS") 프로토콜 버스, 직렬 어드밴스 기술 접속("SATA") 프로토콜 버스, 범용 직렬 버스("USB"), 범용 플래시 저장("UFS") 프로토콜 인터페이스, 이더넷 링크, IEEE 802.11 링크, IEEE 802.15 링크, IEEE 802.16 링크, 주변 구성 요소 상호 접속 익스프레스("PCI-E") 링크, 직렬 고속 I/O("SRIO") 링크, 또는 주변 장치를 컴퓨터에 접속하기 위한 임의의 다른 유사한 인터페이스 링크와 같은 표준 통신 프로토콜에 따라 동작하는 버스일 수 있다.
도 2는 고체 상태 매체(110)에서 발견되는 단일 플래시 메모리 셀의 예시적인 기능 블록도를 도시한다. 플래시 메모리 셀(200)은 두 개의 게이트들을 갖는 MOSFET이다. 워드선 제어 게이트(230)는 플로팅 게이트(240)의 상부에 위치된다. 플로팅 게이트(240)는 워드선 제어 게이트(230) 및 N-채널들(250, 260), 및 P-채널(270)을 포함하는 MOSFET 채널로부터 절연층에 의해 분리된다. 플로팅 게이트(240)가 전기적으로 분리되기 때문에, 플로팅 게이트(240)상에 놓인 임의의 전하는 유지될 것이고 일반적으로 수 개월 동안 크게 방전하지 않을 것이다. 플로팅 게이트(240)가 전하를 보유할 때, 셀의 임계 전압을 수정하는 워드선 제어 게이트(230)로부터 전계를 부분적으로 취소한다. 임계 전압은 채널을 도전하게 하기 위해 제어 게이트(230)에 적용된 전압의 양이다. 채널의 도전은, 예를 들면, 플로팅 게이트(240)상의 전하를 감지함으로써 셀에 저장된 값을 결정한다.
도 3은 고체 상태 매체(110)에서 발견될 수 있는 예시적인 NAND MLC 플래시 메모리 스트링(300)을 도시한다. 도 3에 도시된 바와 같이, 플래시 메모리 스트링(300)은 드레인에서 소스로 직렬로 접속된, 하나 이상의 워드선 트랜지스터들(200(2), 200(4), 200(6), 200(8), 200(10), 200(12), 200(14), 200(16))(예를 들면, 8 개의 플래시 메모리 셀들), 및 비트선 선택 트랜지스터(304)를 포함할 수 있다. 이러한 직렬 접속은 접지 선택 트랜지스터(302), 워드선 트랜지스터들(200(2), 200(4), 200(6), 200(8), 200(10), 200(12), 200(14), 200(16)), 및 비트선 선택 트랜지스터(304)가 비트선(322)이 완전히 낮아지게 하기 위해 대응하는 게이트를 하이로 구동함으로써, 모두 "턴 온"된다(예를 들면, 선형 모드 또는 포화 모드에서). 턴 온되는(또는 트랜지스터들이 선형 또는 포화 모드로 동작하고 있는) 워드선 트랜지스터들(200(2), 200(4), 200(6), 200(8), 200(10), 200(12), 200(14), 200(16))의 수를 변경하는 것은 MLC 스트링(300)이 다수의 전압 레벨들을 달성하게 한다. 일반적인 MLC NAND 플래시는 플로팅 게이트들을 갖는 64 개의 트랜지스터들의 "NAND 스트링"(예를 들면, 도 3에 도시된 바와 같이)을 채용한다. 기록 동작 동안, 기록될 워드-선 위치의 NAND 스트링에 고전압이 인가된다. 기록 동작 동안, 전압은 원하는 판독 위치에 대응하는 트랜지스터를 제외한 NAND 스트링 내의 모든 트랜지스터들의 게이트들에 인가된다. 원하는 판독 위치는 플로팅 게이트를 갖는다.
여기에 기술된 바와 같이, SLC 및 MLC NAND 플래시 모두에서, 각각의 셀은 판독 임계 전압 레벨과의 비교에 의해서와 같이 감지될 수 있는 전압 전하 레벨(예를 들면, 아날로그 신호)을 갖는다. 매체 제어기는 전압 전하 레벨을 판독하고 셀의 대응하는 2진 값을 검출하기 위해 채용된 주어진 수의 미리 결정된 전압 임계치들을 갖는다. 예를 들면, MLC NAND 플래시에 대하여, 3 개의 임계치들(0.1, 0.2, 0.3)이 있는 경우, 셀 전압 레벨이 0.0 ≤ 셀 전압 < 0.1일 때, 셀은 [00]의 값을 갖는 것으로 검출된다. 일반적인 MLC 플래시를 판독할 때, 세 개의 판독 임계치들은 처음에 플래시 제작자에 의해 프로그래밍된 디폴트 값들로 설정된다. ECC가 성공하지 못한 경우, 세 개의 임계치들은 데이터를 재판독하기 위해 수정된다. 셀 전압 레벨이 0.1 ≤ 셀 전압 < 0.2인 경우, 상기 값은 [10] 등이다. 따라서, 측정된 셀 레벨은 셀 레벨이 두 개의 임계치들 사이에 있다고 결정되고 검출될 수 있을 때까지 일반적으로 임계치들에 하나씩 비교될 수 있다. 따라서, 검출된 데이터 값들은 메모리 제어기(120)의 디코더에 제공되어 검출된 값들(예를 들면, 에러-보정 코드를 갖는)을 호스트 디바이스(180)에 제공될 데이터로 디코딩한다.
기술된 실시예들은 저밀도 패리티-검사(LDPC) 디코더들을 채용하여 플래시 메모리에 저장된 데이터를 디코딩한다(예를 들면, 도 1의 LDPC 코덱(142)). LDPC 디코더들은 보정 능력에 의해 샤논 제한에 근접할 수 있다. 대수적인 코드들을 채용하는 디코더들과 달리, LDPC 디코더들은 (코드워드당 보정가능한 에러들의 비트들과 같이) 고정된 보정 능력을 갖지 않는다. 또한, LDPC 디코더들은 "에러 플로어"- 출력 비트-에러-레이트 대 입력 비트-에러-레이트의 정규의 "워터폴" 특징의 변경, 여기서 출력 비트-에러-레이트는 훨씬 낮은 급경사로 갑자기 변한다-를 생성하는 그들의 태너 그래프에서 트래핑 설정들에 영향을 받기 쉽다. 그러나, LDPC 코드들을 더 효율적으로 채용하기 위해, LDPC 디코더들은 디코딩되는 각각의 비트가 주어진 값(예를 들면, 각각의 셀은 특정 전하 레벨을 갖는다)을 갖는 아날로그형 확률과 같은 "소프트" 데이터를 채용한다. 주어진 값을 갖는 디코딩된 비트의 이러한 확률은 일반적으로 로그-우도비(LLR)로서 특정된다. 플래시 메모리들에서, 예를 들면, 판독 동작들 동안 비트 검출을 위해 임계 전압을 움직이는 능력은 각각의 비트가 얼마나 신뢰성 있는지를 결정하기 위하여 비트 값들의 다수의 샘플들을 취하는 것을 가능하게 하고 이후 이러한 신뢰성은 각각의 비트에 대한 LLR로서 나타내질 수 있다. 여기에 기술된 바와 같이, 플래시 메모리의 연판정 LDPC 디코딩의 일 부분은 주어진 플래시 셀(각각은 상이한 임계 전압에 있음)의 하나 이상의 판독들을 채용하여 각각의 비트 위치에 대하여 LLR을 생성한다.
예를 들면, 도 4는 MLC NAND 플래시 셀에서 상태(비트 값들)의 전압 분포가 시간에 따라 어떻게 변하는지를 도시한다. 특히, 모든 비트들이 동일하게 이동하지는 않고, 단일의 고정된 전압 임계치로 판독할 때 변동들을 초래한다. 또한, 몇몇 비트들은, 단지 그의 정확한 위치로부터 이동하는 값들보다는 부정확한 값을 보고하는 것에 의해서와 같이 "고정(stuck: 스턱)"일 수 있다. 기술된 실시예들은, LDPC 디코더들이 코드워드의 부분이지만, 송신/저장되지 않는 "단축된" 비트들을 제외한, 모든 비트들에 사용된 로그 우도비(LLR)을 변경함으로써, "스턱" 비트들(부정확하지만, 그들이 정확하다는 것을 높은 확률로 주장하는 비트들)의 효과들을 극복하게 한다.
도 5a 및 도 5b는 도 3에 도시되는 것과 같은 MLC NAND 플래시의 임계 전압 및 임계 전압 확률 분포들의 예시적인 도면들을 도시한다. 도 5a는 그레이 코딩된 MLC 상태들(11)(예를 들면, 분포(550)), 01(예를 들면, 분포(560)), 00(예를 들면, 분포(570)), 및 10(예를 들면, 분포(580))에 대한 초기 시간(예를 들면, 데이터가 기록될 때)에서 임계 전압 확률 분포들을 나타낸다. 도시된 바와 같이, 공칭 판독 임계치들(540, 542, 544)은 이상적으로 각각의 MLC 상태 사이에 위치된다. 도 5b는 나중 시간에서 임계 전압 확률 분포들을 나타낸다. 도 5b에 도시된 바와 같이, 임계 전압 분포들(551, 561, 571, 581)은 도 5a에 도시된 그들의 먼저의 각각의 임계 전압 확률 분포들(550, 560, 570, 580)에 관하여, 보유 드리프트에 의해서와 같이, 시프트된다. 도 5b가 왼쪽으로 균일하게 시프트된 모든 네 개의 분포들을 도시하지만, 실제로, 분포들은 일반적으로 서로에 독립적으로 시프트된다. 또한, 임계 전압 분포들에서 시프트들의 방향은 일반적으로 알려지지 않거나 직접 알 수 없다. 또한, 시프트는 각각의 비트로 독립적이고, 시프트는 또한 분포들을 확장시킬 수 있고, 확장은 비대칭적일 수 있다.
몇몇 실시예들에서, 다양한 스크램블링 기술들은 네 개의 상태들의 통계적 분포가 각각의 상태에 대하여 25%이도록 사용된다. 시프트된 분포들(예를 들면, 도 5b에 도시된)을 갖는 MLC 셀이 공칭 판독 임계치들을 사용하여 판독될 때(예를 들면, 도 5a에 도시된 시프트되지 않은 분포 위치들에 대해 위치된 540, 542, 544), (많은 샘플들에 걸쳐) 각각의 상태에 대하여 25%의 기대된 판독 데이터로부터의 편차가 관찰된다(예를 들면, 임의의 에러 보정 전에). 매체 제어기(120)는 판독 데이터 상태들의 이러한 디스패리티를 채용하여 임계 전압 분포들에서 시프트들의 존재를 추론한다. 이후, 매체 제어기(120)는 도 5b에 도시된 시프트된 판독 임계치들(565, 575, 585)이 되도록 관측된 디스패리티에 적어도 부분적으로 기초하여 공칭 판독 임계치들(예를 들면, 540, 542, 544)을 조정한다. 몇몇 실시예들에서, 디스패리티들은 전체 페이지에 기초하여(또는 다수의 페이지에 기초하여) 평가된다. 다른 실시예들에서, 디스패리티들은 판독 유닛 및/또는 코드워드 기반으로 평가된다. 도 4a 및 도 4b에 도시되지 않았지만, SLC 셀들에 대하여, 두 개의 상태들(예를 들면, 1 및 0) 및 단일 판독 임계치가 존재한다. 스크램블링은 두 개의 상태들의 통계적인 분포가 각각의 상태에 대하여 50 퍼센트이도록 채용된다. 판독 임계치들은 일반적으로 참조로서 여기에 통합된 2012년 5월 4일에 출원된 관련된 U.S. 특허 출원 제 13/464,433 호에 기술된 것과 같이 시프트된다.
따라서, 도 5a 및 도 5b에서 보여질 수 있는 바와 같이, 최하위 비트(LSB)를 판독할 때, 임계치 기준보다 적은 전압들은 1로서 판독된다. 이해될 수 있는 바와 같이, V4는 더 많은 비트들을 1로서 샘플링하는 경향이 있고, V0는 더 많은 비트들을 0으로서 샘플링하는 경향이 있을 것이다. 그리고, 두 개의 분포들의 중앙에서, V2에 의해 샘플링된 비트들은 때때로 정확히 규정할 수 없다. 각각의 셀이 그의 전압 임계치를 갖는 곳(1로부터 0으로 가로질러)에 정확하게 기초하여, 셀이 실제로 1 또는 0을 유지하는 가능성이 결정될 수 있지만, 이러한 가능성은 시간에 따라 변할 수 있다(도 5a와 도 5b 사이의 차이에 의해 나타낸 바와 같이). NAND 플래시 메모리의 연판정 LDPC 디코딩의 일부는 NAND 플래시의 하나 이상의 판독들(상이한 임계 전압에서 각각)을 각각의 비트 위치에 대한 LLR로 바꾸고 있다. 상이한 임계치들에서 NAND 플래시의 다수의 판독들이 수행되는 순서는, 다수의 실시예들에 따라, 정적 및/또는 동적 추적 정보(분포 추적 정보와 같은), 판독들의 관측된 디스패리티, 디코딩 시도들로부터 관측된 에러 레이트들과 같은 팩터들, 및 다른 팩터들에 기초하여 변한다.
많은 실제 경우들에서, 코드워드들은 단축된다. 단축은 저장/송신되지 않고 인코딩 및 디코딩 모두를 행할 때 사용되지 않고 효과적으로 알려지는, 몇몇 메시지 비트 위치들과 같은 코드워드 위치들이 존재한다는 것을 의미한다. 단축된 코드워드들은 코드워드들의 가변의 크기들을 지원하고 코드 레이트 선택시 더 큰 융통성을 제공하도록 채용된다. 예를 들면, 검사 바이트들의 수가 고정되지만 상이한 NAND 플래시 벤더들이 상이한 양들의 여분의 영역을 제공하는 경우, 코드워드당 사용자 바이트들의 수가 상이한 양들의 여분의 영역을 수용하기 위해 코드워드를 단축함으로써 변경될 수 있다. 도 6a는 매체(110) 상에 저장되는 예시적인 단축된 코드워드(600)를 도시한다. 도 6a에 도시된 바와 같이, 단축된 코드워드(600)는 단축된 메시지 비트들(602), 비단축된 메시지 비트들(604), 및 ECC 비트들(606)을 포함한다. 함께, 비단축된 메시지 비트들(604) 및 ECC 비트들(606)은 매체(110)상에 저장되는 비단축된 코드워드부(608)를 형성한다. 도 6b는 매체(110)로부터 판독되는 예시적인 단축된 코드워드(620)를 도시한다. 도 6b에 도시된 바와 같이, 단축된 코드워드(620)는 몇몇 단축된 메시지 비트 LLRs(622), 몇몇 비단축된 메시지 비트 LLRs(624), 및 ECC 비트 LLRs(626)를 포함한다. 함께, 비단축된 메시지 비트 LLRs(624) 및 ECC 비트 LLRs(626)은 매체(110)로부터 판독되는 데이터에 대응하여 비단축된 코드워드부(628)를 형성한다.
예를 들면, 제 1 NAND 플래시 벤더는 사용자 데이터의 16 KB 페이지당 1216 바이트의 여분 공간을 채용하고, 제 2 NAND 플래시 벤더는 사용자 데이터의 16 KB 페이지당 1280 바이트의 여분 공간을 채용한다. 2 KB 코드워드당 144 바이트의 LDPC 검사 비트를 갖는 일 예시적인 실시예에서, 제 1 벤더의 NAND 플래시는 (2200B, 2056B) 코드의 8 개의 인스턴스들을 채용하고, 제 2 벤더의 NAND 플래시는 (2208B, 2064B) 코드의 8 개의 인스턴스들을 채용하여, 각각의 벤더의 메모리에 대한 각각의 페이지에서 모든 바이트들을 효율적으로 사용한다. 구현에 따라, LDPC 인코더 및 디코더(예를 들면, 도 1의 LDPC 코덱(142))는, 144 바이트의 LDPC 검사 비트들을 갖는 (2320B, 2176B) 코드, 2176 바이트의 사용자 데이터와 같은, 더 큰 크기의 코드워드를 구현한다. 이후, (2200B, 2056B) 코드 및 (2208B, 2064B) 코드 모두는 구현된 코드워드의 단축된 버전들이다.
몇몇 채널들은 하나의 값(예를 들면, 0)으로 강하게 나타나지만, 실제로 다른 값(예를 들면, 1)인 에러들인 "스턱 비트" 에러들로 알려진 에러들을 갖는다. 스턱 비트 에러들은: (1) 기록/프로그래밍될 수 없고 고정된 값으로 항상 판독하는 비트들과 같은 정적 스턱 비트들(예를 들면, 도 3의 NAND MLC 플래시 메모리 스트링(300)에 하나 이상의 단락된 또는 개방 트랜지스터들); (2) 멀티-레벨 셀(MLC) 플래시와 같은 셀당 다수의 비트들을 저장하는 몇몇 기술들에서 셀의 LSB가 상기 셀의 MSB를 프로그래밍할 때 잘못 판독되는 경우, 결과의 전하 상태가 부정확한 LSB에 기초하여, 상기 셀의 LSB 및/또는 MSB 위치들에서 "스턱" 비트를 초래하는-잘못된 프로그래밍; (3) 기록/프로그래밍되도록 전송되는 데이터가 기록/프로그래밍 전에 임의의 에러들(예, 알파 입자들에 기인하는)을 경험하는 경우, 에러의 비트가 잘못된 값으로 프로그래밍되는, 단일 이벤트 업셋들(SEUs); 중 하나에 의한 것이다.
이러한 "스턱 비트" 에러들은, 주어진 값(예를 들면, 큰 크기 LLR)을 갖는 것으로 매우 강하게 나타나기 때문에, 실제로 비트들이 반대 값일 때, 스턱 비트 에러들은 따라서 LDPC 디코딩에서 에러들을 생성할 수 있다. 이러한 스턱 비트 에러들은 그들의 값에 관하여 강하게 "놓임"으로써 LDPC 디코딩에 대한 에러 플로우를 상승시키고 "트랩핑 설정 문제"를 악화시킨다. 트랩핑 설정 문제는, LLR 값이 비트가 0인 것을 강하게 나타내지만, 실제로 비트가 1이고, 트랩핑 설정에서 다른 비트들은 몇몇 경우들에서 잘못된 비트의 강도를 무효로 할 수 없을 때이다. 기술된 실시예들은 단축된 비트 위치들의 상대적인 "확실성"을 증가시키기 위해 비단축된 비트 위치들의 LLR을 선택적으로 변경한다. 이는 LDPC 디코딩이 스턱 비트들을 극복하는 것을 돕고 스턱 비트의 존재시 에러 플로우를 낮춘다.
LDPC 디코더는 일반적으로 LLR의 최대 크기를 갖는 단축된 위치들을 처리한다. 다른 (비-단축된) 비트 위치들은 저장/전송 매체로부터 획득된 아날로그 데이터에 의해 결정되는(예를 들면, 각각의 비트에 대한 가능성을 결정하기 위해 도 5a 및 도 5b에 도시된 바와 같은 다양한 임계치들에 비교된 측정된 셀 레벨), 제공된 값을 갖는 그들의 실제 가능성으로부터 결정된 LLR을 갖는다.
몇몇 실시예들에서, 단축된 비트 위치들은 항상 인코딩시(및 유사하게는 디코딩시) 0으로 처리된다. 다른 실시예들에서, 단축된 비트 위치들은 항상 인코딩에서(및 유사하게는 디코딩에서) 1로서 처리된다. 다른 실시예들에서, 단축된 비트 위치들 중 몇몇 또는 모두는, 인코딩에서(및 유사하게는 디코딩에서) 0들 및 1들을 대체하는 것과 같이, 지정된 패턴을 갖는 것으로 처리된다. 따라서, 기술된 실시예들에 따라서, 단축된 비트 위치들에 대한 LLR은 최대 LLR 크기를 갖는 것으로 또는 무한한 LLR 크기를 갖는 것으로 처리되고, 디코딩 프로세스 동안 변경되는 것이 방지된다. 예를 들면, 몇몇 실시예들에서, 단축된 비트 위치들은 "무한한" 크기에 대한 특정 인코딩을 갖고, LDPC 디코더에서 로직은 (그의 수학적 의미에 따라서와 같이, 또는 임의의 다른 값보다 매우 큰 것과 같이)특히 "무한" 값을 처리하도록 변경된다. 단축된 비트 위치들에 대하여 특별한 "무한" LLR 크기를 갖는 것은, 이들 비트 위치들의 "확실성"을 강화하여, 비단축된 비트 위치들에 대해, 이들 비트 위치들이 정확한 것으로 보장되게 하는데, 스턱 비트들의 존재시, 심지어 큰 크기 LLR 값을 갖는 비단축된 비트 위치들에 대해 그렇지 못하다. 다른 실시예들에서, 단축된 비트 위치들의 LLR은 초기의 LDPC 디코딩 단계에서 최대 가능한 LLR 크기로 설정되고(예를 들면, 반복적인 LDPC 디코딩 프로세스의 제 1 반복의 시작에서), 후속하는 LDPC 디코딩 반복들에서 변경이 허용되지 않는다. 단축된 비트 위치들의 LLR이 변경이 허용되지 않는 경우라도, 단축된 비트 위치들의 LLR은 그들의 신뢰할 수 있는 초기 크기들에 의해 잘못된 값(예를 들면, 잘못된 부호)으로 변경할 가능성이 없다.
디코딩 동안, 스턱 비트들에 대한 LLR은 예를 들면, 비트에 대한 아날로그 레벨을 결정하고, 비트가 0 또는 1일 확률을 결정함으로써, 임의의 다른 비단축된 비트에 관하여 결정된다. 그러나, 스턱 비트들에 대하여, 비트에 대한 아날로그 레벨은 부정확하다. 따라서, 스턱 비트들은 최대값 LLR과 같은, 큰 LLR 크기를 갖고, 에러 플로우를 잠재적으로 높여 LDPC 디코더의 출력 비트 에러 레이트를 제한한다. 특히, 스턱 비트들은 LDPC 디코더가 트랩핑 설정에서 포착된 LDPC 디코더의 가능성을 증가시킴으로써 해결책에 집중하는 것을 방지한다. 이것이 일어날 때, LDPC 디코딩은 실패한다. LDPC 디코딩은 더욱 더 정확한 LLR 정보를 사용하여 다수회 반복된다. 예를 들면, 경판정 LDPC 디코딩이 실패하는 경우, NAND 플래시 메모리의 하나 이상의 추가의 판독들이 상이한 임계 전압들에서 제 1 차 LLR 정보를 얻기 위해 행해지고, LDPC 디코딩은 연판정 정보로 반복된다. LDPC 디코딩이 다시 실패한 경우, NAND 플래시 메모리의 다른 추가의 판독들이, 중간 임계 전압들에서와 같이, 제 2 차 LLR 정보를 얻기 위해 행해지고, LDPC 디코딩은 개선된 연판정 정보로 반복된다. LDPC 디코딩이 다시 실패한 경우, 다수의 실시예들은 DSP 기술들, 또는 다수의 코드워드들에 걸친 몇몇 형태의 고레벨 코드(예, RAID5-형 코드)와 같은 다른 대비책 전략들을 또한 갖는다.
스턱 비트들의 존재시, 반복된 판독 재시도들 및 LDPC 디코딩은, 스턱 비트들이 변하지 않고 대신에 부정확한 상태를 유지하기 때문에, LDPC 디코딩을 개선하지 않는다. 다른 대비책 전략들은 매우 처리 집중적인 경향이 있고 여전히 스턱 비트들에 대해 보정할 수 없다.
다수의 실시예들에서, 연판정 LDPC 디코딩 단계가 실패할 때, 비단축된 비트 위치들은 완충된 그들의 LLR 값을 갖고(크기상 감소됨), 반면에 단축된 비트 위치들은 그들의 (예를 들면, 최대의) LLR 값을 유지한다. 이후, LDPC 디코딩은 반복된다. 비단축된 비트 위치들을 완충시키는 것은 단축된 비트 위치들에 비교되는 스턱 비트들의 LLR 크기를 감소시키는 효과를 가져서, LDPC 디코더에게 어느 비트들이 정확한 값을 갖는지를 결정하기 위한 더 큰 능력을 제공한다. 완충이 비단축된 비트 위치들에 적용된 후, LDPC 디코딩이 갱신된 LLR로 다시 시도된다. 완충은 예를 들면, 먼저 약한 완충이 성공적인 LDPC 디코딩을 초래하지 않을 경우, 반복되고, 하나 이상의 추가의, 더 공격적인 완충 단계들이 수행될 수 있고 LDPC 디코딩이 재시도된다. 따라서, LDPC 디코딩을 완충 및 반복하는 것은 디코딩 프로세스의 하나 이상의 스테이지들에서 행해진다. 도 7은 단축된 메시지 비트 LLRs(622), 코드워드(620)의 모든 비단축된 위치들이 완충되도록 완충된 비단축된 메시지 비트 LLRs(704) 및 완충된 ECC 비트 LLRs(706)을 포함하는 일 예시적인 완충된 단축된 코드워드(700)(예를 들면, 도 6b의 코드워드(620)의 완충된 버전)를 도시한다(예를 들면, 완충된 비단축된 메시지 비트 LLRs(704)은 비단축된 메시지 비트 LLRs(704)의 완충된 버전들이고 완충된 ECC 비트 LLRs(706)은 ECC 비트 LLRs(626)의 완충된 버전들이다). 단축된 메시지 비트 LLRs(622)은 완충되지 않는다.
도 8은 비휘발성 메모리(예를 들면, MLC NAND 플래시 메모리)의 예시적인 LDPC 디코딩 프로세스(800)의 흐름도를 도시한다. 단계 802에서, LDPC 디코딩 프로세스(800)가 시작한다. 단계 804에서, 매체(110)의 하나 이상의 셀들(예를 들면, 도 3에 도시된 바와 같은) 제 1 판독은 하나 이상의 셀들의 각각의 제 1 아날로그 레벨을 결정하도록 수행된다. 단계 806에서, 하나 이상의 셀들의 각각에 대한 아날로그 레벨들은 LLR 값으로 변환되어 각각의 LLR 값에 대응하는 비트 값을 결정한다. 점선 807로 표시된 바와 같이, 선택 단계 808에서, 비단축된 비트 위치들은 단계 810에서 LDPC 디코딩을 수행하기 전에 완충된다. 단계 810에서, LDPC 디코딩은 코드워드에서 하나 이상의 셀들의 각각에 대한 LLR 값들상에 수행된다. 단계 812에서, LDPC 디코딩이 성공적인 경우, 프로세스(800)는 단계 824로 진행한다. 단계 812에서, LDPC 디코딩(선택적인 완충 단계(808)를 갖고 또는 그것이 없이)가 성공적이지 않은 경우, 프로세스(800)는 단계 814로 진행하고, 여기서 비단축된 위치들의 완충이 수행되는지의 여부가 결정된다. 단계 814에서, 완충이 수행되어야 하는 경우, 단계 816에서, 코드워드의 비단축된 비트 위치들이 완충되고, 프로세스(800)는 단계 810으로 리턴하고, 단계 810에서, LDPC 디코딩은 코드워드에서 하나 이상의 셀들의 각각에 대한 LLR 값들에 수행된다. 단계 814에서, 완충이 수행되지 않아야 할 경우, 단계 818에서, 매체 제어기(120)의 판독 재시도 한계가 도달되었는지의 여부가 결정된다. 단계 818에서, 판독 재시도 한계가 도달되지 않은 경우, 단계 820에서, 매체(110)의 하나 이상의 셀들의 후속하는 판독이 하나 이상의 대안적인 임계치 레벨들(도 5a 및 도 5b에 도시된 바와 같이)로 수행되어 결정된 전압 레벨을 개선한다. 후속하는 판독 동작이 단계 820에서 수행된 후, 프로세스(800)는 단계 806으로 리턴하고, 단계 806에서, 하나 이상의 셀들의 각각에 대한 개선된 아날로그 레벨들은 LLR 값으로 변환되어, 각각의 LLR 값에 대응하는 비트 값을 결정한다. 단계 818에서, 판독 재시도 한계가 도달된 경우, 단계 822에서, 하나 이상의 추가의 디코딩 방법들이 데이터(예를 들면, 디지털 신호 프로세싱(DSP) 등)를 복구하도록 시도된다. 단계 824에서, 프로세스(800)가 완료하고 복구된 데이터는 또한 매체 제어기(120)에 의해 처리된다.
따라서, 기술된 실시예들에서, LDPC 디코딩을 완충 및 반복하는 것은 더 정확한 연판정 정보를 얻기 위해 추가의 판독들과 동시와 같이 LDPC 디코딩(완충 없이)이 실패할 때마다 시도된다. 몇몇 예시적인 실시예들에서, LDPC 디코딩을 완충 및 반복하는 것은 모든 원하는 추가의 판독들(추가의 연판정 정보를 얻기 위한)후의 LDPC 디코딩이 실패한 후, 단독으로 행해진다. LDPC 디코딩을 완충 및 반복하는 것은 DSP가 완충 전 또는 후에 행해지기 때문에 반드시 최종 시도가 아니고, 다수의 코드워드들(예를 들면, RAID5형 코드)에 걸친 고차-레벨 코딩의 사용은 일반적으로 마지막 복구 시도이다. 스턱 비트 에러들이 더 일반적일 때, 완충은 단지 비단축된 비트 위치들이 최대 LLR 값을 갖게 되도록 모든 LDPC 디코딩에 대해 행해진다. 완충에서 제 1 시도는 제 1 완충 레벨에서 수행되고, LDPC 디코딩이 실패한 경우, 하나 이상의 더 강한 레벨들의 완충이 다른 LDPC 디코딩 시도들에 대하여 적용된다.
하드 에러들이 트랩핑 설정으로 LDPC 디코딩 스턱을 얻는 원인일 때, LDPC 디코딩은 일반적으로 단일의 "작은" 트랩핑 설정 스턱을 얻는다. 트랩핑 설정의 크기(참여하는 잘못된 비트들 노드들 및 만족되지 않는 체크 노드들의 수)는 LDPC 코드의 패리티 검사 행렬, 특히 컬럼 가중치 및 그래프의 짧은-주기 스펙트럼에 대응하는 태너 그래프에 의해 결정된다. 예시의 작은 트랩핑 설정들은, 4 개의 에러 비트 노드들 및 2 및 4의 만족되지 않는 검사들, 각각을 의미하는 (4, 2) 및 (4, 4)를 포함한다. LDPC 디코딩이 이러한 작은 트랩핑 설정에 매여있을 때, 이는 증상 가중치에 의해 또는 다수의 만족되지 않은 검사들에 의해 동등하게 결정될 수 있다. LDPC 디코딩이 최대 수의 허용가능한 반복들에 도달한 후, 증상 가중치가 작거나 마지막 수 회의 반복들에 대해 작다는 것이 발견된 경우, 이는 작은 트랩핑 설정을 유도하는 영구 에러들을 나타낼 가능성이 있다. 이에 대응하여, 판독 재시도들이 영구 에러들을 신뢰가능하게 검출할 수 없을 때(기록된 아날로그 전압이 최소 및 최대 판독 기준 전압들에 의해 제한된 전압 윈도우를 넘길 때와 같은), 추가의 판독 재시도들보다는 더 공격적인 완충을 사용하는 것이 효과적이다.
완충은 비단축된 비트 위치들의 LLR에 대한 비율을 적용함으로써 수행된다. 예를 들면, LLR이 -7로부터 +7 까지의 범위인 경우, 비단축된 비트 위치들은 5/7, 또는 4.5/7, 또는 4/7과 같은 완충 팩터와 곱해진다. 단축된 비트 위치들은 그들의 최대 LLR(예를 들면, +7 또는 -7)을 유지한다. 도 9는 완충 없는 에러 플로우(삼각형들) 대 곱셈의 완충 팩터들 2/7, 3/7, 4/7, 및 5/7을 사용하여 완충을 갖는 다수의 결과들을 도시한다. 도 9에서, s=10은 10 개의 스턱 비트 에러들이 코드워드당 존재된다는 것을 나타내고, UBER은 LDPC 디코딩 후 수정불가능한 비트 에러 레이트를 나타내고, SNR은 신호대 잡음비이다. 몇몇 실시예들에서, 완충은 지정된 임계치보다 큰 임의의 비단축된 비트 위치의 LLR 값들의 크기를 선택적으로 감소시킴으로써 수행된다. 제 1 예시(-7로부터 +7 까지의 범위인 LLR 값들을 사용하는)에서, 4보다 큰 크기를 갖는 임의의 LLR 값은 4로 감소된 그의 크기를 갖는다. 제 2 예시(-7로부터 +7 까지의 범위인 LLR 값들을 사용하는)에서, 5보다 큰 크기를 갖는 임의의 LLR 값은 1로 감소된 그의 크기를 갖는다. 제 3 예시에서, 최대 크기를 갖는 임의의 LLR 값은 1 또는 2와 같이 지정된 양으로 감소된 그의 크기를 갖는다. 대안적으로, 완충은 지수적 감쇠(더 작은 LLR 값들보다 더 큰 크기 LLR 값들을 완충하는), 단차 함수, 2차 함수, 또는 임의의 다른 수학적 함수와 같은, 비단축된 비트 위치들의 LLR에 적용된 임의의 함수일 수 있다.
몇몇 실시예들에서, 완충은 특정 형태들의 실패들의 가능성의 지식에 기초하여 비대칭적이다. 예를 들면, 값 1이 양의 LLR을 갖고 값 0이 음의 LLR을 갖는 경우, 및 스턱 비트들이 값 0보다 값 1을 가질 가능성이 더 많을 경우, 비선형적 완충은 음의 LLR 값들보다 더 강하게 양의 LLR 값들을 완충한다. 또한 상기 예시에서, 임의의 스턱 비트들이 값 0을 가질 가능성이 거의 없는 경우, 단지 양의 LLR 값들이 완충된다.
MLC NAND 플래시를 채용하는 실시예들에서, 스턱 비트 실패들이 셀들에 얼마나 영향을 주는지의 가능성의 지식과 결합된 동일한 셀들에 저장된 다른 비트의 값의 지식(예를 들면, MSB 비트에 대한 LSB 비트 값이 디코딩되거나, 또는 LSB 비트에 대한 MSB 비트 값이 디코딩되는, 등)은 동일한 셀에 저장된 다른 비트의 값의 지식에 기초하여 각각의 비트 위치의 선택적인 완충을 가능하게 한다. 예를 들면, 더 낮은 페이지를 디코딩할 때, 상부 페이지를 판독하고 디코딩하는 것은 더 낮은 페이지 디코딩에 사용된 LLR 값들을 선택적으로 완충하기 위한 추가의 정보를 제공한다. 따라서, LLR 값들은 각각의 임계 전압들에서 NAND 플래시의 제공된 부분(하나 이상의 코드워드들과 같은)을 판독함으로써 취해진 하나 이상의 샘플들을 변환함으로써 생성된다. 다른 실시예들에서, 표검색은 각각의 비트 위치에서 취해진 샘플들을 상기 비트 위치에 대한 LLR 값으로 변환하기 위해 사용된다. 상기 표는 판독되는 NAND 플래시의 부분에서 셀들의 상태 분포들의 정적 또는 동적 지식에 기초하여, 펌웨어에 의해서와 같이 미리 계산된다. 또 다른 실시예들에서, 샘플들은 각각의 임계 전압에 의해 순서화되고, 변환은 LLR 값을 결정하기 위해 이동 지점(1로부터 0으로, 또는 0으로부터 1로와 같은)의 인덱스를 사용하게 한다.
다양한 실시예들에 따라, LLR 값들은: LDPC 디코더; 전용 하드웨어 유닛; 펌웨어; 및 다른 유사한 기술들 중 하나 이상에 의해 생성된다. 다수의 실시예들에 따라, LLR 완충은: 처리 단계로서 LDPC 디코더; 참조표에 제공된 LLR 값들을 변경하는 펌웨어; 메모리에 저장된 LLR 값들을 직접 변경; 및 다른 유사한 기술들 중 하나 이상에 의해 행해진다.
예시적인 실시예들은 계통적 코드를 채용하고, 여기서 ECC 비트들은 (예를 들면, 도 6a, 도 6b, 도 7에 도시된 바와 같이) 메시지 비트들의 단부에 있다. 그러나, 몇몇 실시예들에서, ECC 비트들은 데이터 내 임의의 장소(중간, 앞)에 있고, 코드는 비계통적이고, 이는 LDPC 디코더(예를 들면, 142)가 메시지와 ECC 비트들 사이를 구별할 수 없다는 것을 의미한다. 이러한 경우에서, 디코더는 단축된 비트들(예를 들면, 602)과 비단축된 비트들(예를 들면, 604) 사이를 구별하여 모든 비트들은 "코딩"되고 ECC 정보 및 데이터는 수학적 알고리즘에 따라 함께 인터리브된다.
따라서, 기술된 실시예들은 매체에 저장된 데이터를 판독하기 위한 매체 제어기를 제공한다. 매체 제어기는 매체로부터 단축된 코드워드의 각각의 비트에 대한 값을 결정한다. 단축된 코드워드는 완전한 코드워드의 복수의 비단축된 비트들을 포함하고, 여기서 완전한 코드워드는 복수의 비단축된 비트들 및 하나 이상의 단축된 비트들을 포함한다. 단축된 비트들은 디폴트 값으로 설정되는 단축된 코드워드에서 미사용된 비트들에 대응한다. 매체 제어기는 단축된 코드워드의 각각의 비트에 대한 결정된 값들을 제 1 세트의 우도비(LLR) 값들로 변환한다. 완전한 코드워드는 단축된 코드워드에 대한 제 1 세트의 LLR 값들을 사용하여 디코딩된다. 매체 제어기는 제 2 세트의 LLR 값들을 생성하기 위해 코드워드의 비단축된 비트들에 대응하는 하나 이상의 LLR 값들을 완충하고 제 2 세트의 LLR 값들을 디코딩한다.
여기서 "일 실시예" 또는"하나의 실시예"는 실시예와 관련하여 기술된 특별한 피처, 구조, 또는 특징이 적어도 하나의 실시예에 포함될 수 있다는 것을 의미한다. 명세서에서 다수의 장소들의 어구 "일 실시예에서"의 출현들은 반드시 모두 동일한 실시예들을 말하는 것이 아니고, 또한 반드시 다른 실시예들을 공통으로 제외하는 개별적 또는 대안적인 실시예들을 말하는 것이 아니다. 동일한 것이 용어 "구현"에 적용된다. 이러한 적용에 사용된 바와 같이, 단어 "예시적인"은 예, 경우, 또는 예시의 역할을 하는 의미로 여기에 사용된다. "예시적인"으로 여기에 기술된 임의의 양태 또는 설계는 반드시 다른 양태들 또는 설계들을 통해 바람직하거나 또는 이로운 것으로 해석되는 것은 아니다. 오히려, 용어 "예시적인"의 사용은 구체적인 방식으로 개념들을 나타내도록 의도된다.
예시적인 실시예들이,디지털 신호 프로세서, 마이크로-제어기, 또는 범용 컴퓨터와 같은 가능한 구현을 포함하는, 소프트웨어 프로그램에서 블록들을 처리하는 것에 관하여 기술되지만, 기술된 실시예들은 그렇게 제한되지 않는다. 본 기술에 숙련된 자들에 명백한 바와 같이, 소프트웨어의 다수의 기능들은 또한 회로들의 프로세스로서 구현된다. 이러한 회로들은 예를 들면, 단일 집적 회로, 멀티-칩 모듈, 단일 카드, 또는 멀티-카드 회로 팩에 채용된다.
추가적으로, 용어 "또는"은 배타적인 "또는"이라기보다는 포괄적인 "또는"을 의미하는 것으로 의도된다. 즉, 달리 지정되거나, 또는 문맥으로부터 명백하지 않으면, "X는 A 또는 B를 채용한다"는 임의의 자연적인 포괄적인 치환들을 의미하는 것이 의도된다. 즉, X가 A를 채용하는 경우; X는 B를 채용하고; 또는 X는 A 및 B를 모두 포함하고, "X는 A 또는 B를 채용한다"는 임의의 전술한 예들하에서 만족된다. 추가로, 본 명세서 및 첨부된 청구항들에서 사용되는 단수 용어는 일반적으로 달리 지정되거나 문맥으로부터 단일 형태에 대해 지시되는 것이 명백하지 않으면 "하나 이상"을 의미하는 것으로 해석되어야 한다.
더욱이, 용어들 "시스템", "구성 요소", "모듈", "인터페이스", "모델" 등은 일반적으로 컴퓨터-관련 엔티티, 하드웨어, 하드웨어 및 소프트웨어의 조합, 소프트웨어, 또는 수행중의 소프트웨어 중의 하나를 말하는 것으로 의도된다. 예를 들면, 구성 요소는, 프로세서상에 구동하는 프로세스, 프로세서, 객체, 시행가능한, 실행의 스레드, 프로그램, 및/또는 컴퓨터인 것일 수 있지만, 그에 한정되지 않는다. 예로서, 제어기상에 구동하는 애플리케이션 및 제어기는 구성요소일 수 있다. 하나 이상의 구성요소들은 프로세스내 및/또는 실행의 스레드에 있고, 구성요소는 하나의 컴퓨터상에 국한되고/국한되거나 두 개 이상의 컴퓨터들 사이에 분배될 수 있다.
요소 및 표준을 참조하여 여기에 사용되는 바와 같이, 용어 "호환가능한"은 요소가 표준에 의해 전체로 또는 부분적으로 지정된 방식으로 다른 요소들과 통신하고, 표준에 의해 지정된 방식으로 다른 요소들과 충분히 통신할 수 있는 다른 요소들에 의해 인식되는 것을 의미한다. 호환가능한 요소는 표준에 의해 지정된 방식으로 내부적으로 동작할 필요가 없다.
또한 이러한 설명의 목적들을 위해, 용어들 "결합하다", "결합하는", "결합된", "접속하다", "접속하는", 또는 "접속된"은 두 개 이상의 요소들 사이에 에너지가 전달되도록 허용되고, 하나 이상의 추가의 요소들의 삽입이 요구되지 않지만, 생각될 수 있는 본 기술 또는 이후 개발된 알려진 임의의 방식을 말한다. 반대로, 용어들 "직접 결합된", "직접 접속된" 등은 이러한 추가의 요소들의 부재를 암시한다. 신호들 및 대응하는 노드들 또는 포트들은 동일한 명칭으로 불릴 수 있고 여기서 목적들에 대하여 교체할 수 있다.
여기에 기술된 요지는 사용자-대화식 구성요소들을 갖는 컴퓨팅 애플리케이션을 위한 하나 이상의 컴퓨팅 애플리케이션 피처들/동작들을 처리하기 위해 예시적인 구현들의 환경에서 설명될 수 있지만, 본 요지는 이들 특정 실시예들에 한정되지 않는다. 오히려, 여기에 설명된 기술들은 임의의 적절한 형태의 사용자-대화식 구성요소 실행 관리 방법들, 시스템들, 플랫폼들, 및/또는 장치에 적용될 수 있다.
설명된 실시예들은 이들 방법들을 실시하기 위한 방법들 및 장치들의 형태로 구현될 수 있다. 설명된 실시예들은 또한 자기 기록 매체, 광 기록 매체, 고체 상태 메모리, 플로피 디스켓들, CD-ROM들, 하드 드라이브들, 또는 임의의 다른 비일시적 머신-판독가능 저장 매체와 같은 실체적인 매체에 구현된 프로그램 코드의 형태로 구현될 수 있고, 프로그램 코드가 컴퓨터와 같은 머신에 로딩되고 그에 의해 실행될 때, 머신은 설명된 실시예들을 실행하기 위한 장치가 된다. 설명된 실시예들은 또한, 예를 들면, 비일시적 머신-판독가능 저장 매체에 저장되거나, 머신에 로딩 및/또는 머신에 의해 실행되거나, 또는 전기 배선 또는 캐이블링을 통해, 광섬유들을 통해, 또는 전자기 복사를 통해서와 같이, 몇몇 송신 매체 또는 캐리어를 통해 전송되는, 프로그램 코드의 형태로 구현될 수 있고, 여기서 프로그램 코드가 컴퓨터와 같은 머신으로 로딩되고 그에 의해 실행될 때, 머신은 설명된 실시예들을 실시하기 위한 장치가 된다. 범용 프로세서상에 구현될 때, 프로그램 코드 세그먼트들은 프로세서와 조합하여 특정 로직 회로들과 유사하게 동작하는 고유한 장치를 제공한다. 설명된 실시예들은 여기에 설명된 바와 같은 방법 및/또는 장치를 사용하여 생성된 매체를 통해 전기적 또는 광학적으로 송신된 신호 값들의 다른 시퀀스 또는 비트 스트림, 자기 기록 매체에서 저장된 자기장 변동들 등의 형태로 구현될 수 있다.
여기에 설명된 예시적인 방법들의 단계들이 설명된 순서로 수행되는 것이 반드시 요구되지는 않고, 이러한 방법들의 단계들의 순서는 단순히 예시적인 것으로 이해되어야 한다는 것이 이해되어야 한다. 유사하게, 추가의 단계들은 이러한 방법들에 포함되고, 특정 단계들은 다양한 실시예들과 일관된 방법들에서 생략되거나 조합될 수 있다.
기술된 실시예들의 특성을 설명하기 위해 기술되고 예시되는 부분들의 상세들, 재료들, 및 장치들에서 다수의 변경들은 다음의 청구항들의 범위로부터 벗어나지 않고 본 기술의 숙련자들에 의해 행해진다는 것이 또한 이해될 것이다.
100 : 비휘발성 메모리 저장 시스템 110 : 매체
120 : 매체 제어기 130 : 고체 상태 제어기
140 : 제어 프로세서 150 : 버퍼
160 : I/O 인터페이스 170 : 통신 링크
180 : 호스트 디바이스

Claims (10)

  1. 제어기에 의해 저장 매체 및 통신 채널 중 적어도 하나로부터 데이터를 판독하는 방법에 있어서,
    상기 판독된 데이터의 단축된 코드워드의 각각의 비트에 대한 값을 결정하는 단계로서, 상기 단축된 코드워드는 완전한 코드워드의 복수의 비단축된 비트들을 포함하고, 상기 완전한 코드워드는 상기 복수의 비단축된 비트들 및 하나 이상의 단축된 비트들을 포함하고, 상기 단축된 비트들은 상기 단축된 코드워드에서 미사용된 비트들에 대응하는, 상기 결정 단계;
    상기 단축된 코드워드의 각각의 비트에 대한 상기 결정된 값들을 제 1 세트의 로그-우도비(LLR) 값들로 변환하는 단계;
    상기 단축된 코드워드에 대한 상기 제 1 세트의 LLR 값들을 사용하여 상기 완전한 코드워드를 디코딩하는 단계;
    상기 제 1 세트의 LLR 값들 중, 제 2 세트의 LLR 값들을 생성하기 위한 상기 코드워드의 비단축된 비트들에 대응하는, 하나 이상의 LLR 값들을 완충하는 단계; 및
    상기 제 2 세트의 LLR 값들을 디코딩하는 단계를 포함하는, 제어기에 의해 저장 매체 및 통신 채널 중 적어도 하나로부터 데이터를 판독하는 방법.
  2. 제 1 항에 있어서,
    상기 하나 이상의 LLR 값들을 완충하는 단계는, 상기 제 1 세트의 LLR 값들의 디코딩이 상기 단축된 코드워드에 대응하는 데이터를 성공적으로 복구하지 않을 경우에만 수행되는, 제어기에 의해 저장 매체 및 통신 채널 중 적어도 하나로부터 데이터를 판독하는 방법.
  3. 제 1 항에 있어서,
    상기 하나 이상의 LLR 값들을 완충하는 단계는:
    상기 단축된 코드워드의 단축된 비트들에 대응하는 하나 이상의 LLR 값들을 하나의 연관된 최대 LLR 크기로 설정하는 단계;
    상기 제 1 세트의 LLR 값들의 하나 이상의 상기 LLR 값들의 크기를 미리 결정된 양만큼 감소시키는 단계; 및
    상기 제 1 세트의 LLR 값들의 하나 이상의 상기 LLR 값들의 크기를 미리 결정된 스케일링 팩터만큼 스케일링하는 단계, 중 하나를 포함하는, 제어기에 의해 저장 매체 및 통신 채널 중 적어도 하나로부터 데이터를 판독하는 방법.
  4. 제 1 항에 있어서,
    상기 단축된 코드워드에 대한 상기 제 1 세트의 LLR 값들을 디코딩하기 전에 상기 제 1 세트의 LLR 값들의 하나 이상의 LLR 값들을 완충하는 단계를 추가로 포함하는, 제어기에 의해 저장 매체 및 통신 채널 중 적어도 하나로부터 데이터를 판독하는 방법.
  5. 제 1 항에 있어서,
    상기 디코딩 단계가 상기 제 2 세트의 LLR 값들로부터 상기 단축된 코드워드에 대응하는 데이터를 성공적으로 복구하지 않을 경우:
    상기 제 2 세트의 LLR 값들 중, 제 3 세트의 LLR 값들을 생성하기 위한 상기 코드워드의 비단축된 비트들에 대응하는, 하나 이상의 LLR 값들을 완충하는 단계; 및
    상기 제 3 세트의 LLR 값들을 디코딩하는 단계를 추가로 포함하는, 제어기에 의해 저장 매체 및 통신 채널 중 적어도 하나로부터 데이터를 판독하는 방법.
  6. 제 5 항에 있어서,
    상기 제 1 세트의 LLR 값들의 완충은 상기 제 1 세트의 LLR 값들의 하나 이상의 상기 LLR 값들의 크기를 제 1 미리 결정된 양만큼 감소시킴으로써 수행되고,
    상기 제 2 세트의 LLR 값들의 완충은 상기 제 2 세트의 LLR 값들 중 하나 이상의 상기 제 2 세트의 LLR 값들의 크기를 제 2 미리 결정된 양만큼 감소시킴으로써 수행되는, 제어기에 의해 저장 매체 및 통신 채널 중 적어도 하나로부터 데이터를 판독하는 방법.
  7. 제 5 항에 있어서,
    상기 제 1 세트의 LLR 값들의 완충은 상기 제 1 세트의 LLR 값들의 하나 이상의 상기 LLR 값들의 크기를 제 1 스케일링 팩터만큼 스케일링함으로써 수행되고,
    상기 제 2 세트의 LLR 값들의 완충은 상기 제 2 세트의 LLR 값들의 하나 이상의 상기 LLR 값들의 크기를 제 2 스케일링 팩터만큼 스케일링함으로써 수행되는, 제어기에 의해 저장 매체 및 통신 채널 중 적어도 하나로부터 데이터를 판독하는 방법.
  8. 제 1 항에 있어서,
    상기 결정된 값들은 2진 데이터 또는 아날로그 전압 레벨 중 적어도 하나이고, 상기 단축된 코드워드의 각각의 비트에 대해 상기 결정된 값들을 제 1 세트의 로그-우도비(LLR) 값들로 변환하는 단계는, 제 1 임계치 레벨을 채용하여 수행되고,
    상기 방법은:
    완충 동작들의 임계 횟수가 도달된 경우,
    상기 제어기의 판독 재시도 제한이 도달되었는지의 여부를 결정하는 단계;
    상기 판독 재시도 제한에 도달되지 않은 경우:
    상기 저장 매체로부터 상기 단축된 코드워드의 각각의 비트에 대한 값들을 재판독하는 단계;
    하나 이상의 후속 임계치 레벨들을 채용하여 상기 단축된 코드워드의 각각의 비트에 대한 상기 결정된 값들을 후속 세트의 로그-우도비(LLR) 값들로 변환하는 단계; 및
    상기 후속 세트의 LLR 값들을 채용하여 완충 및 디코딩 단계들을 재수행하는 단계를 추가로 포함하는, 제어기에 의해 저장 매체 및 통신 채널 중 적어도 하나로부터 데이터를 판독하는 방법.
  9. 제 8 항에 있어서,
    상기 판독 재시도 제한에 도달된 경우,
    상기 세트의 LLR 값들에 추가의 데이터 복구를 수행하는 단계를 추가로 포함하는, 제어기에 의해 저장 매체 및 통신 채널 중 적어도 하나로부터 데이터를 판독하는 방법.
  10. 제 9 항에 있어서,
    상기 디코딩 단계는 저밀도 패리티 검사(LDPC) 디코딩 단계이고,
    상기 추가의 데이터 복구는 디지털 신호 처리(DSP) 및 복수 어레이의 독립 디스크들(RAID) 데이터 복구 중 적어도 하나인, 제어기에 의해 저장 매체 및 통신 채널 중 적어도 하나로부터 데이터를 판독하는 방법.
KR1020140026669A 2013-07-03 2014-03-06 저밀도 패리티-검사(ldpc) 디코더들에서 로그-우도비(llr) 감쇠 KR102155795B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/934,999 2013-07-03
US13/934,999 US9337865B2 (en) 2012-05-04 2013-07-03 Log-likelihood ratio (LLR) dampening in low-density parity-check (LDPC) decoders

Publications (2)

Publication Number Publication Date
KR20150004732A true KR20150004732A (ko) 2015-01-13
KR102155795B1 KR102155795B1 (ko) 2020-09-14

Family

ID=51167664

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140026669A KR102155795B1 (ko) 2013-07-03 2014-03-06 저밀도 패리티-검사(ldpc) 디코더들에서 로그-우도비(llr) 감쇠

Country Status (5)

Country Link
EP (1) EP2822184B1 (ko)
JP (1) JP6367607B2 (ko)
KR (1) KR102155795B1 (ko)
CN (1) CN104283570B (ko)
TW (1) TWI619353B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10623019B2 (en) 2017-11-22 2020-04-14 Samsung Electronics Co., Ltd. Method of decoding low density parity check (LDPC) code, decoder and system performing the same

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9818488B2 (en) * 2015-10-30 2017-11-14 Seagate Technology Llc Read threshold voltage adaptation using bit error rates based on decoded data
KR102265220B1 (ko) * 2015-03-09 2021-06-16 에스케이하이닉스 주식회사 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
US9727416B2 (en) * 2015-07-01 2017-08-08 Xilinx, Inc. Variable code rate solid-state drive
US10268539B2 (en) * 2015-12-28 2019-04-23 Intel Corporation Apparatus and method for multi-bit error detection and correction
JP2018045387A (ja) 2016-09-13 2018-03-22 東芝メモリ株式会社 メモリシステム
US10222996B2 (en) 2017-02-07 2019-03-05 Western Digital Technologies, Inc. Read operation and soft decoding timing
US10269422B2 (en) * 2017-09-08 2019-04-23 Cnex Labs, Inc. Storage system with data reliability mechanism and method of operation thereof
US10884858B2 (en) * 2018-03-16 2021-01-05 SK Hynix Inc. LDPC decoding device, memory system including the same and method thereof
CN108683423B (zh) * 2018-05-16 2022-04-19 广东工业大学 一种多级闪存信道下的ldpc码动态串行调度译码算法及装置
US20190379399A1 (en) * 2018-06-08 2019-12-12 Goke Us Research Laboratory Log-likelihood-ratio (llr) generation algorithm for low-density-parity-check (ldpc) codes used in flash memory
US10715182B2 (en) * 2018-07-27 2020-07-14 Innogrit Technologies Co., Ltd. Systems and methods for decoding error correcting codes with self-generated LLR
KR20200019046A (ko) * 2018-08-13 2020-02-21 에스케이하이닉스 주식회사 에러 정정 회로 및 이의 동작 방법
US10778248B1 (en) * 2020-01-30 2020-09-15 TenaFe, Inc. Low-density parity-check decoding with de-saturation

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060192691A1 (en) * 2005-02-25 2006-08-31 Sony Corporation Decoding apparatus, decoding method and program
WO2011036864A1 (ja) * 2009-09-25 2011-03-31 パナソニック株式会社 符号化装置、復号装置、符号化方法、復号方法、及び通信システム
US20120005551A1 (en) * 2010-06-30 2012-01-05 Lsi Corporation Breaking trapping sets using targeted bit adjustment
US20120272000A1 (en) * 2008-10-15 2012-10-25 Ofir Shalvi Efficient data storage in storage device arrays
KR20130012550A (ko) * 2011-07-25 2013-02-04 한양대학교 산학협력단 Ldpc 부호화 및 복호화 방법 및 그 방법을 사용하는 장치

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7702986B2 (en) * 2002-11-18 2010-04-20 Qualcomm Incorporated Rate-compatible LDPC codes
CN101595700B (zh) * 2006-03-14 2014-04-16 高通股份有限公司 使用llr函数的分段线性逼近的对数似然比(llr)计算
US8873671B2 (en) * 2008-03-26 2014-10-28 Qualcomm Incorporated Method and system for LLR buffer reduction in a wireless communication modem
US8677218B2 (en) * 2010-01-27 2014-03-18 Sk Hynix Memory Solutions Inc. LDPC decoding with on the fly error recovery

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060192691A1 (en) * 2005-02-25 2006-08-31 Sony Corporation Decoding apparatus, decoding method and program
US20120272000A1 (en) * 2008-10-15 2012-10-25 Ofir Shalvi Efficient data storage in storage device arrays
WO2011036864A1 (ja) * 2009-09-25 2011-03-31 パナソニック株式会社 符号化装置、復号装置、符号化方法、復号方法、及び通信システム
US20120005551A1 (en) * 2010-06-30 2012-01-05 Lsi Corporation Breaking trapping sets using targeted bit adjustment
KR20130012550A (ko) * 2011-07-25 2013-02-04 한양대학교 산학협력단 Ldpc 부호화 및 복호화 방법 및 그 방법을 사용하는 장치

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10623019B2 (en) 2017-11-22 2020-04-14 Samsung Electronics Co., Ltd. Method of decoding low density parity check (LDPC) code, decoder and system performing the same

Also Published As

Publication number Publication date
CN104283570A (zh) 2015-01-14
EP2822184A9 (en) 2015-06-10
EP2822184B1 (en) 2017-03-15
EP2822184A1 (en) 2015-01-07
TW201503604A (zh) 2015-01-16
TWI619353B (zh) 2018-03-21
KR102155795B1 (ko) 2020-09-14
JP2015015701A (ja) 2015-01-22
JP6367607B2 (ja) 2018-08-01
CN104283570B (zh) 2020-05-19

Similar Documents

Publication Publication Date Title
US9337865B2 (en) Log-likelihood ratio (LLR) dampening in low-density parity-check (LDPC) decoders
KR102155795B1 (ko) 저밀도 패리티-검사(ldpc) 디코더들에서 로그-우도비(llr) 감쇠
US8938659B2 (en) Low-density parity-check decoder disparity preprocessing
US9319073B2 (en) Mitigation of write errors in multi-level cell flash memory through adaptive error correction code decoding
US9454414B2 (en) System and method for accumulating soft information in LDPC decoding
JP6110953B2 (ja) 階層化反復誤り訂正のための停止基準
US10484008B2 (en) Memory system with on-the-fly error detection and termination and operating method thereof
US9471421B2 (en) Data accessing method, memory storage device and memory controlling circuit unit
US9935735B2 (en) Multiuse data channel
US10075191B2 (en) Method for decoding bits-by varying LLR values in a solid-state drive, and solid-state drive implementing the method
US10324787B2 (en) Decoding method, memory storage device and memory control circuit unit
KR102606829B1 (ko) Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법
US10884858B2 (en) LDPC decoding device, memory system including the same and method thereof
KR20230019573A (ko) 컨트롤러 및 컨트롤러의 동작 방법
TWI571885B (zh) 讀取快閃記憶體中所儲存之資料的方法、記憶體控制器與系統
CN112331244A (zh) 广义低密度奇偶校验码的软输入软输出分量代码解码器
CN113496752B (zh) 解码方法、存储器存储装置及存储器控制电路单元
CN111258791B (zh) 存储器控制方法、存储器存储装置及存储器控制电路单元
CN110795268B (zh) 比特判断方法、存储器控制电路单元以及存储器存储装置
US10628259B2 (en) Bit determining method, memory control circuit unit and memory storage device
CN113138947A (zh) 数据写入方法、存储器控制电路单元以及存储器存储装置
KR20210100357A (ko) Ldpc 디코더, ldpc 디코더의 동작 방법 및 반도체 메모리 시스템
CN117707833A (zh) 不规则ldpc码的动态缩放因子更改

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant