KR20230086557A - 메모리 매칭된 저 밀도 패리티 검사 코딩 체계 - Google Patents

메모리 매칭된 저 밀도 패리티 검사 코딩 체계 Download PDF

Info

Publication number
KR20230086557A
KR20230086557A KR1020220063394A KR20220063394A KR20230086557A KR 20230086557 A KR20230086557 A KR 20230086557A KR 1020220063394 A KR1020220063394 A KR 1020220063394A KR 20220063394 A KR20220063394 A KR 20220063394A KR 20230086557 A KR20230086557 A KR 20230086557A
Authority
KR
South Korea
Prior art keywords
pages
memory
data pages
data
controller
Prior art date
Application number
KR1020220063394A
Other languages
English (en)
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 KR20230086557A publication Critical patent/KR20230086557A/ko

Links

Images

Classifications

    • 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
    • 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/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • 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/1048Adding 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 arrangements adapted for a specific error detection or correction feature
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • 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
    • G06F11/1032Simple parity
    • 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/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • 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/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1096Parity calculation or recalculation after configuration or reconfiguration of the system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • 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/1114Merged schedule message passing algorithm with storage of sums of check-to-bit node messages or sums of bit-to-check node messages, e.g. in order to increase the memory efficiency
    • 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/1125Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using different domains for check node and bit node processing, wherein the different domains include probabilities, likelihood ratios, likelihood differences, log-likelihood ratios or log-likelihood difference pairs
    • 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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2957Turbo codes and decoding
    • 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/6325Error control coding in combination with demodulation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Probability & Statistics with Applications (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Error Detection And Correction (AREA)
  • Mathematical Physics (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

데이터 저장 디바이스에서의 메모리 셀 전압 분포 (CVD)에 기반한 저-밀도 패리티-검사 (LDPC) 코딩. 일 실시형태에서, 메모리 제어기는 비-휘발성 메모리와 인터페이스하도록 구성된 메모리 인터페이스; 및 제어기를 포함한다. 제어기는 비-휘발성 메모리에 저장될 복수의 데이터 페이지를 수신하고, 복수의 데이터 페이지를 복수의 변환된 데이터 페이지로 변환하도록 구성된다. 제어기는 복수의 변환된 데이터 페이지에 기반하여 복수의 패리티 비트를 결정하고, 비-휘발성 메모리에 복수의 데이터 페이지 및 복수의 패리티 비트를 저장하도록 추가로 구성된다.

Description

메모리 매칭된 저 밀도 패리티 검사 코딩 체계{MEMORY MATCHED LOW DENSITY PARITY CHECK CODING SCHEMES}
본 출원은 일반적으로 데이터 저장 디바이스에 관한 것으로, 보다 특히, 데이터 저장 디바이스에서의 메모리 셀 전압 분포 (CVD)에 기반한 저-밀도 패리티-검사 (LDPC) 코딩에 관한 것이다.
메모리 디바이스는 프로세스 스케일링, 3D 스태킹, 및 메모리 셀당 더 많은 비트의 저장을 통해 메모리 밀도가 증가함에 따라 점점 더 높은 메모리 용량을 경험하고 있다. 메모리 밀도의 증가는 근본적으로 "노이서" 매체를 초래한다. 오류 보정 코드 (ECC)는 또한 메모리에 공간을 할당하여, 실제 사용자 데이터에 대한 공간의 양을 감소시킨다.
본 개시내용의 기술은 ECC의 코딩을 최적화하여, 이론적 한계 (즉, 샤논 한계)에 가깝게 작동시킨다. 구체적으로, 본 개시내용의 코딩 체계는 LDPC 코딩을 수행할 때 다양한 프로그래밍 상태의 예상된 오류율을 고려한다. 아래에 더 상세히 설명되는 바와 같이, 본 개시내용의 코딩 체계는 ECC를 위해 할당된 공간을 포함하여 메모리 오버프로비저닝을 감소시킨다.
고급 코딩 체계, 예컨대, LDPC는 전형적으로 메모리 디바이스에 대한 메모리 오류 모델에 기반하여 테일러링되지 않는다. 구체적으로, 메모리 오류 보호 레벨은 각각의 메모리 판독 임계치에 대해 조정되지 않고, 대신에 전반적으로 결정된다. 메모리 오류 모델은 전형적으로 디코더 초기화 값을 설정하는 데 사용된다. 본 개시내용의 기술은 ECC 구성 및 설계 동안 메모리 오류 모델을 사용하는 것을 제안한다.
본 개시내용은 일 실시형태에서 메모리 인터페이스 및 제어기를 포함하는 메모리 제어기를 제공한다. 메모리 인터페이스는 비-휘발성 메모리와 인터페이스하도록 구성된다. 제어기는 비-휘발성 메모리에 저장될 복수의 데이터 페이지를 수신하고 복수의 데이터 페이지를 복수의 변환된 데이터 페이지로 변환하도록 구성된다. 제어기는 복수의 변환된 데이터 페이지에 기반하여 복수의 패리티 비트를 결정하고, 비-휘발성 메모리에 복수의 데이터 페이지 및 복수의 패리티 비트를 저장하도록 추가로 구성된다.
본 개시는 또한 방법을 제공한다. 일 실시형태에서, 방법은 비-휘발성 메모리에 저장될 복수의 데이터 페이지를 수신하는 단계 및 복수의 데이터 페이지를 복수의 변환된 데이터 페이지로 변환하는 단계를 포함한다. 방법은 복수의 변환된 데이터 페이지에 기반하여 복수의 패리티 비트를 결정하는 단계 및 비-휘발성 메모리에 복수의 데이터 페이지 및 복수의 패리티 비트를 저장하는 단계를 추가로 포함한다.
본 개시내용은 또한 장치를 제공한다. 장치는 비-휘발성 메모리와 인터페이스하기 위한 수단을 포함한다. 장치는 비-휘발성 메모리에 저장될 복수의 데이터 페이지를 수신하기 위한 수단, 및 복수의 데이터 페이지를 복수의 변환된 데이터 페이지로 변환하기 위한 수단을 포함한다. 장치는 복수의 변환된 데이터 페이지에 기반하여 복수의 패리티 비트를 결정하기 위한 수단, 및 비-휘발성 메모리에 복수의 데이터 페이지 및 복수의 패리티 비트를 저장하기 위한 수단을 추가로 포함한다.
이러한 방식으로, 본 개시내용의 다양한 양태는 적어도 데이터 저장 장치 및 이들의 설계 및 아키텍처의 기술 분야에서의 개선을 제공한다. 본 개시내용은 펌웨어에 의해 제어되는 하드웨어 또는 회로 (즉, 프로세서 상에서 실행되는 코드), 및 컴퓨터 시스템 및 네트워크; 뿐만 아니라 하드웨어 구현 방법들, 신호 처리 회로들, 메모리 어레이들, 응용 특정 집적 회로들, 필드 프로그래밍 가능 게이트 어레이들 등을 포함하는 다양한 형태들로 구현될 수 있다. 위의 발명의 내용은 단지 본 개시의 다양한 양태들의 일반적인 개념을 제공하도록 의도되며, 어떠한 방식으로든 본 발명의 범주를 제한하지 않는다.
도 1은 본 개시내용의 일부 실시형태에 따른, 메모리 매칭된 LDPC 코딩/디코딩을 갖는 데이터 저장 디바이스를 포함하는 시스템의 블록도이다.
도 2는 본 개시내용의 일부 실시형태에 따른, 쿼드-레벨 셀 메모리의 다양한 셀 전압 분포 레벨에 대한 오류율을 예시하는 그래프이다.
도 3a-3b는 본 개시내용의 일부 실시형태에 따른, 쿼드-레벨 셀 (QLC) 메모리에 대한 메모리 매칭 변환의 예이다.
도 4는 본 개시내용의 일부 실시형태에 따른, 메모리 매칭된 LDPC 인코딩/디코딩 프로세스를 예시하는 흐름도이다.
도 5는 본 개시내용의 일부 실시형태에 따른, 예시적인 메모리 매칭된 LDPC 메시지 통과 프로세스이다.
도 6은 본 개시내용의 일부 실시형태에 따른, 가우스 메모리 레벨 분포를 갖는 QLC 메모리를 예시하는 그래프이다.
도 7은 본 개시내용의 일부 실시형태에 따른, 셀 오류율의 함수로서 디코더 실패 확률을 예시하는 그래프이다.
도 8은 본 개시내용의 일부 실시형태에 따른, 예시적인 소프트-비트 판독을 제공한다.
다음의 설명에서, 본 발명의 하나 이상의 양태의 이해를 제공하기 위해, 데이터 저장 디바이스 구성들, 제어기 동작들 등과 같은 다수의 상세 사항들이 기재된다. 이들 특정 상세 사항들은 단지 예시적이며 본 출원의 범주를 제한하고자 의도하는 것이 아님이 당업자에게 용이하게 명백할 것이다. 특히, 메모리 디바이스와 연관된 기능들은 하드웨어(예를 들어, 아날로그 또는 디지털 회로들), 하드웨어와 소프트웨어의 조합(예를 들어, 프로세싱 또는 제어 회로부에 의해 실행되는, 비일시적 컴퓨터 판독가능 매체에 저장된 프로그램 코드 또는 펌웨어), 또는 임의의 다른 적합한 수단에 의해 수행될 수 있다. 다음의 설명은 단지 본 개시의 다양한 양태들의 일반적인 개념을 제공하도록 의도되며, 어떠한 방식으로든 본 개시의 범주를 제한하지 않는다.
도 1은 데이터 저장 디바이스 (102)를 포함하는 시스템 (100)의 일례의 블록도이다. 일부 구현예들에서, 데이터 저장 디바이스(102)는 플래시 메모리 디바이스이다. 예를 들어, 데이터 저장 디바이스(102)는 Secure Digital SD® 카드, microSD® 카드, 또는 다른 유사한 유형의 데이터 저장 디바이스이다. 도 1에 예시된 데이터 저장 디바이스 (102)는 비-휘발성 메모리 (104) 및 제어기 (106)를 포함한다. 데이터 저장 디바이스(102)는 호스트 디바이스(108)에 결합된다. 호스트 디바이스 (108)는, 예를 들어, 비-휘발성 메모리 (104)에 저장될 데이터 (110)(예를 들어, 사용자 데이터)를 데이터 저장 디바이스 (102)에 제공하도록 구성된다. 호스트 디바이스 (108)는, 예를 들어, 스마트폰, 음악 재생기, 비디오 재생기, 게임 콘솔, e-북 리더기, 개인용 정보 단말기, 태블릿, 노트북 컴퓨터, 또는 다른 유사한 디바이스이다.
데이터 저장 디바이스 (102)의 비-휘발성 메모리 (104)는 제어기 (106)에 커플링된다. 일부 구현예에서, 비-휘발성 메모리 (104)는 NAND 플래시 메모리이다. 도 1에 예시된 비-휘발성 메모리 (104)는 복수의 메모리 유닛 (112A-112N) (예를 들어, 플래시 메모리 유닛)을 포함한다. 복수의 메모리 유닛 (112A-112N) 각각은 복수의 저장 요소를 포함한다. 예를 들어, 도 1에서, 메모리 유닛 (112A)은 대표적인 저장 요소 (114)를 포함한다. 일부 구현예에서, 저장 요소 (114)는 멀티-레벨 셀 플래시 메모리, 예컨대, 2 레벨 셀 ("SLC"), 4 레벨 셀 ("MLC"), 8 레벨 셀 ("TLC"), 16 레벨 셀 ("QLC"), 또는 셀당 더 많은 수의 비트 (예를 들어, 셀당 5 내지 10개의 비트)를 갖는 플래시 메모리 셀이다. 일부 구현예에서, 복수의 메모리 유닛 (112A-112N)은 멀티-레벨 셀 플래시 메모리의 워드 라인 또는 페이지에 포함된다. 다른 구현예에서, 복수의 메모리 유닛 (112A-112N)은 멀티-레벨 셀 플래시 메모리의 다중 워드 라인 또는 페이지에 걸쳐 확산된다.
도 1에 예시된 제어기 (106)는 호스트 인터페이스 (116), 메모리 인터페이스 (118), 제어기 회로 (120), 및 ECC 엔진 (122)을 포함한다. 제어기(106)는 단순화된 형태로 도 1에 도시되어 있다. 당업자는, 비-휘발성 메모리를 위한 제어기가 도 1에 구체적으로 예시된 것들 이외의 추가적인 모듈 또는 컴포넌트를 포함할 것이라는 것을 인식할 것이다. 추가적으로, 데이터 저장 디바이스 (102)가 예를 들어, ECC를 수행하기 위한 제어기 (106) 및 모듈을 포함하는 것으로서 도 1에 예시되어 있지만, 다른 구현예에서, 제어기 (106)는 대신에 호스트 디바이스 (108) 내에 위치되거나, 그렇지 않으면 데이터 저장 디바이스 (102)와 분리되어 있다. 그 결과, 통상적으로 제어기 (106)에 의해 수행될 ECC 및 기타 플래시 변환 계층 ("FTL") 작업 (예를 들어, 웨어 레벨링(wear leveling), 불량 블록 관리, 데이터 스크램블링, 가비지 수집(garbage collection), 어드레스 맵핑 등)은 호스트 디바이스 (108), 또는 데이터 저장 디바이스 (102)에 연결되는 다른 디바이스에 의해 수행될 수 있다.
제어기 (106)는 호스트 인터페이스 (116)를 통해 호스트 디바이스 (108)에 데이터를 송신하고, 이로부터 데이터 및 명령어를 수신하도록 구성된다. 호스트 인터페이스 (116)는 호스트 디바이스 (108)가, 예를 들어, 임의의 적합한 통신 프로토콜을 사용하여 비-휘발성 메모리 (104)로부터 판독하고 비-휘발성 메모리 (104)에 기록할 수 있게 한다. 적합한 통신 프로토콜들은, 예를 들어, 범용 플래시 스토리지(Universal Flash Storage, "UFS") 호스트 제어기 인터페이스 사양, 보안 디지털(Secure Digital, "SD") 호스트 제어기 사양 등을 포함한다.
제어기 (106)는 또한 메모리 인터페이스 (118)를 이용하여 비-휘발성 메모리 (104)에 데이터 및 커맨드를 송신하고 (예를 들어, 메모리 동작(134)) 이로부터 데이터를 수신하도록 구성된다. 예시적인 예로서, 제어기 (106)는 비-휘발성 메모리 (104)에서의 특정 메모리 위치에 데이터를 저장하도록 비-휘발성 메모리 (104)에 지시하는 기록 커맨드 및 데이터를 송신하도록 구성된다. 제어기 (106)는 또한 비-휘발성 메모리 (104)에서의 특정 메모리 위치로부터의 데이터를 판독하기 위해 판독 커맨드를 비-휘발성 메모리 (104)로 송신하도록 구성된다. 일부 예에서, 제어기 (106)는 메모리 인터페이스 (118)를 조합하여 버스(132)를 이용하여 비-휘발성 메모리 (104)에 커플링된다. 버스 (132)는 제어기 (120)가, 다른 메모리 다이 (103)와의 통신과 병행하여 그리고 독립적으로, 하나 이상의 메모리 유닛 (112) 각각과 통신할 수 있게 하기 위해 다중 개별의 채널을 포함할 수 있다.
도 1에 예시된 제어기 회로 (120)는 프로세서 (124) (예를 들어, 마이크로프로세서, 마이크로제어기, 현장-프로그래밍가능한 게이트 어레이 ["FPGA"] 반도체, 주문형 집적 회로 ["ASIC"] 또는 다른 적합한 프로그래밍가능한 디바이스), 및 비-일시적 컴퓨터 판독가능한 매체 또는 메모리 (126)(예를 들어, 랜덤 액세스 메모리 ["RAM"] 및 판독 전용 메모리 ["ROM"] 포함)를 포함한다. 프로세서 (124)는 제어기 회로 (120), 제어기 (106) 및 데이터 저장 디바이스 (102) 내의 다양한 모듈에 작동가능하게 연결된다. 예를 들어, 펌웨어는 컴퓨터 실행가능한 명령어로서 메모리(126)의 ROM에 로딩된다. 이러한 컴퓨터 실행가능 명령어들은 메모리(126)로부터 검색되고 프로세서 (124)에 의해 실행되어, 제어기(120)의 작업을 제어하고 본 명세서에 설명된 프로세스들을 수행할 수 있다(예를 들어, 데이터 정렬 및 ECC). 일부 구현예에서, 제어기 회로 (120)의 하나 이상의 모듈은 제어기 회로 (120) 내의 개별 하드웨어 컴포넌트에 상응한다. 다른 구현예에서, 제어기 회로 (120)의 하나 이상의 모듈은 메모리 (126) 내에 저장되고 프로세서 (124)에 의해 실행되는 소프트웨어에 상응한다. 메모리(126)는 작업 동안 제어기(120)에 의해 사용되는 데이터를 저장하도록 구성된다.
ECC 엔진 (122)은 비-휘발성 메모리 (104)에 저장될 데이터를 수신하도록 구성된다. ECC 엔진 (122)은 ECC 인코딩 체계를 사용하여 데이터를 인코딩하도록 구성된다. 일부 구현예에서, ECC 인코딩 체계는 Reed Solomon 인코딩 체계, Bose-Chaudhuri-Hocquenghem ("BCH") 인코딩 체계, 저-밀도 패리티 검사 ("LDPC") 인코딩 체계, 또는 다른 적합한 인코딩 체계이다. 도 1에 예시된 ECC 엔진 (122)은 디코더 (128) 및 인코더 (130)를 포함한다. 디코더 (128)는 비-휘발성 메모리 (104)로부터 판독되는 데이터를 디코딩하도록 구성된다. 예를 들어, 디코더 (128)는 비-휘발성 메모리 (104)로부터 판독된 코드워드를 디코딩하도록 구성된다. 코드워드는, 예를 들어, 아래에 더 상세히 설명되는 바와 같이, 4*k 데이터 비트 및 4*m 패리티 비트를 포함할 수 있다. 디코더 (128)는 비-휘발성 메모리 (104)로부터 판독된 데이터에 존재하는 비트 에러를 검출 및 보정하도록 구성된다. 디코더 (128)는 구현된 ECC 체계의 오류 보정 능력까지 비-휘발성 메모리 (104)로부터 판독된 데이터에 존재하는 비트 오류를 보정한다. 일부 구현예에서, ECC 엔진 (122)은 제어기 회로 (120)에 포함된다.
이전에 언급된 바와 같이, 본원에 기재된 코딩 체계는 메모리 디바이스에서 셀 전압 분포 (CVD)에 의해 유도된 각각의 프로그래밍 상태의 예상된 오류율을 사용한다. 도 2는 QLC 메모리의 예시적인 CVD의 그래프 (200)를 예시한다. 복수의 메모리 셀 상태 (S0-S15) 가 범례 (205)에 의해 도시된다. 그래프 (200)는 복수의 메모리 셀 상태 (S0-S15)의 게이트 전압 값을 나타내는 x-축 (210)을 포함한다. 그래프 (200)는 복수의 메모리 셀 상태 (S0-S15) 각각에 대한 비트 분포를 나타내는 y-축(215)을 포함한다. 일부 구현예에서, 메모리 셀 상태 (S0-S15) 중 하나 이상은 주어진 게이트 전압에서 다른 하나 또는 메모리 셀 상태 (S0-S15)와 중첩될 수 있다. 이러한 중첩은 각각의 중첩에 대한 셀 오류율 (CER)을 초래한다. 그래프 (200)는 16개의 메모리 셀 상태 (S0-S15) 사이의 15개의 중첩에 대한 15개의 CER을 포함한다. 추가적으로, 그래프 (200)에서의 각각의 메모리 셀 상태 (S0-S15) 는 대칭이 아니며, 상이한 범위의 게이트 전압 또는 비트 분포를 가질 수 있다. 일부 이상적인 구현예에서, 각각의 메모리 셀 상태 (S0-S15)는 동일하다.
LDPC를 CVD 및 (CER에 의해 정의된) 이의 메모리 오류 모델과 매칭하도록 테일러링하기 위해, 본원에 "메모리 매칭 변환" (즉, m2 변환)으로서 지칭하는 것이 메모리 모델에 적용되어 각각의 판독 임계치에 의해 도입된 오류가 코딩된 비트의 서브세트에만 영향을 미치는 것을 보장한다. 도 3a-3b는 QLC 메모리에 대한 예시적인 메모리 매칭 변환을 예시한다. 도 3a에 예시된 바와 같이, QLC 메모리는 복수의 메모리 셀 상태 (300)를 가지며, 여기서 각각의 메모리 셀 상태 (300)는 총 2n = 16 상태와 함께 각각의 메모리 셀 상태 (300)에서 n=4 사용자 데이터 비트를 저장한다 (상태 0에서 시작하여 상태 15로 끝남). 각각의 메모리 셀 상태 (300)는 하부 페이지 (302), 중간 페이지 (304), 상부 페이지 (306) 및 상단 페이지 (308)를 가지며, 각각의 페이지는 비트를 저장하도록 구성된다. 도 3a의 예에서, 상태를 통해 좌측에서 우측으로 이동할 때 단 하나의 비트만이 변화된다. 예를 들어, 상태 0은 비트 [1 1 1 1]을 저장하는 반면, 상태 1은 상단 페이지 (308)의 비트만이 변화되었던 비트 [1 1 1 0]을 저장한다. 상태 2는 중간 페이지 (306)의 비트만이 변화되었던 비트 [1 0 1 0]을 저장한다.
각각의 메모리 셀 상태 (300)를 판독하기 위해, t = 2n-1 = 15의 판독 임계치 (즉, CER)가 필요하다. 따라서, 메모리 매칭 변환은 모든 n = 4 사용자 데이터 페이지를 t = 15의 변환된 데이터 페이지 (320)로 변환한다. 도 3a으로부터 도 3b로의 변환은 수직으로 발생한다. 예를 들어, 상태 0이 비트 [1 1 1 1]을 저장하는 반면, 변환된 페이지 0은 비트 [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]을 저장한다. 상태 1은 비트 [1 1 1 0]을 저장하는 반면, 변환된 페이지 1은 비트 [0 1 1 1 1 1 1 1 1 1 1 1 1 1 1]을 저장한다. 변환된 데이터 페이지 (320)에서, j번째 판독 임계치에 의해 도입된 임의의 셀 오류는 j번째 변환된 페이지 (320)에서만 비트 오류를 도입할 것이다. 각각의 변환된 페이지는 CER 값 (340)을 갖는다.
예를 들어, 복수의 메모리 셀 상태 (300) 중 제1 메모리 셀 상태 (즉, 상태 0)로 프로그래밍된 셀을 고려하여, 이러한 특이적 셀에 상응하는 변환된 페이지의 값이 [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]이 되게 한다. 그러나, 판독 동안, 세포 오류는 1번째 판독 임계치에 의해 도입되어, 제2 복수의 셀 상태 (200)(즉, 상태 1)에서 셀의 상태를 판독하게 되며, 따라서 판독된 상응하는 변환된 페이지 값은 [0 1 1 1 1 1 1 1 1 1 1 1 1 1 1]이다. 따라서, 비트 오류는 15 개의 변환된 페이지의 1번째 페이지에서만 도입된다.
다른 예에서, 복수의 메모리 셀 상태 중 제4 메모리 셀 상태 (즉, 상태 3)로 프로그래밍된 셀을 고려하여, 이러한 특이적 셀에 상응하는 변환된 페이지의 값이 [0 0 0 1 1 1 1 1 1 1 1 1 1 1 1]이 되게 한다. 그러나, 판독 동안, 세포 오류는 3번째 판독 임계치에 의해 도입되어, 제3 복수의 셀 상태 (200)(즉, 상태 2)에서 셀의 상태를 판독하게 되며, 따라서 판독된 상응하는 변환된 페이지 값은 [0 0 1 1 1 1 1 1 1 1 1 1 1 1 1]이다. 따라서, 비트 오류는 15 개의 변환된 페이지의 3번째 페이지에서만 도입된다.
따라서, 메모리 매칭 변환의 결과로서, 변환된 페이지 (320) 각각의 페이지에 도입된 비트 오류율은 상응하는 판독 임계치와 연관된 셀 오류율에 상응한다. 추가적으로, 상응하는 판독 임계치의 예상된 CER에 대응하는 각각의 변환된 페이지에 적절한 보호 레벨이 할당될 수 있다. 도 3a-3b에 의해 도시된 변환 대신에 상이한 메모리 매칭 변환이 또한 사용될 수 있다. 예를 들어, 페이지 레벨 매칭 변환이 사용될 수 있다.
원본 n = 4 페이지 (즉, 하부 페이지 (302), 중간 페이지 (304), 상부 페이지 (306) 및 상단 페이지 (308))의 전체 비트 오류율 (BER) 및 변환된 페이지 (320)의 전체 BER은 동일하다. 구체적으로:
BER 하부 +BER 중간 +BER 상부 +BER 상단 =BER t1 +BER t2 +…+BER t15
평균적으로, 각각의 변환된 페이지 (320)에 의해 관찰된 BER은 원본 페이지의 n/t = 4/15이다. 따라서, 변환된 페이지 (320)를 보호하기 위해 요구되는 전체 ECC 리던던시는 n = 4의 원본 데이터 페이지를 보호하는 데 필요한 ECC 리던던시와 동일하다.
변환된 페이지 (320)는 변환된 페이지 (320)의 오류율을 고려하는 LDPC 인코더 (즉, 메모리 매칭된 LDPC 인코더, m2LDPC 인코더)를 사용하여 인코딩된다. 패리티 비트의 양은 예상되는 BER에 따라 변환된 페이지 (320) 각각에 할당된다. 따라서, 패리티 비트는 각각의 변환된 페이지 (320)가 동일한 예상된 BER을 갖도록 대칭적으로 할당될 수 있다. 일부 예에서, 변환된 페이지 (320)가 다양한 BER을 가질 때, 패리티 비트는 비대칭적으로 할당될 수 있다. 다른 예에서, 단일 LDPC 코드가 사용될 수 있고, 여기서 LDPC 코드를 나타내는 기본 이분 그래프 내에서, 변환된 페이지 (320) 각각에 대해 상이한 차수 스펙트럼 (즉, 비트당 패리티 검사 방정식의 상이한 할당)이 사용된다. 이어서, 차수 스펙트럼은 각자의 변환된 페이지의 예상된 BER에 상응한다. 예를 들어, 더 많은 오류가 발생하기 쉬운 판독 임계치에 의해 영향을 받는 것들과 같은 더 높은 BER을 나타낼 것으로 예상되는 비트의 서브세트는 더 낮은 비교 BER을 나타낼 것으로 예상되는 비트의 서브세트보다 더 많은 패리티 검사 방정식에 참여한다.
도 4는 메모리 매칭된 LDPC 인코딩 및 디코딩 방법을 위한 예시적인 프로세스 (400)를 예시한다. 프로세스 (400)는 ECC 엔진 (122)에 의해 수행될 수 있다. 도 4의 예에서, n = 4 사용자 데이터 페이지 (즉, 하부 페이지 (302), 중간 페이지 (304), 상부 페이지 (306), 및 상단 페이지 (308))는 입력 데이터로서 제공되며, 각각의 페이지는 k 비트를 포함한다. 4*k 비트의 입력 데이터는 메모리 매칭 변환 인코딩 블록 (405)에 제공된다. 메모리 매칭 변환 블록 인코딩 (405)은 입력 데이터를 k 비트의 t = 15 변환된 페이지 (예컨대, 변환된 페이지 (320))로 변환한다. 변환된 15*k 비트는 메모리 매칭된 LDPC 인코더 (410)에 의해 인코딩되며, 이는 n*m = 4*m 패리티 비트를 생산한다. 메모리 매칭 변환 인코딩 블록 (405) 및 메모리 매칭된 LDPC 인코더 (410)와 병행하여, 4*k의 원래의 사용자 비트가 4*m 패리티 비트와 함께 메모리 (104)(즉, QLC 데이터 페이지)에 저장되어, 페이지당 k+m 비트가 있다.
메모리 셀은 n 페이지만을 저장할 수 있고 t = 2n-1 페이지를 직접 저장할 수 없기 때문에, 변환된 페이지는 메모리 (104)에 직접 저장되지 않는다. 오히려, 판독 작업 동안, 변환된 페이지는 역 메모리 매칭 변환을 통해 판독 셀 전압 (Vt)으로부터 추론된다. 예를 들어, 셀의 상태, 논리 페이지 (예컨대, 하부 페이지 (302), 중간 페이지 (304), 상부 페이지 (306) 및 상단 페이지 (308))의 값, 및 변환된 페이지 (320)의 값은 판독 셀의 Vt로부터 추론될 수 있다. 판독 작업은 임의의 필요한 해상도에서 셀 Vt의 양자화된 버전 (도 5에서 Y로서 표시됨)을 검색한다. 일 실시형태에서, 하드 비트 (HB) 페이지를 검색하고 셀 상태를 추론하기 위해 도 2에 도시된 공칭 판독 임계치에서 판독이 수행된다. 다른 실시형태에서, 하드 비트에 더하여 소프트 비트 (SB)를 검색하기 위한 (셀의 Vt를 더 미세하게 결정하는) 더 높은 판독 해상도는 판독 값에 대한 신뢰도를 할당하는 데 사용된다.
각각의 하드 비트는 메모리 (104)로부터 판독된 논리 페이지 (예컨대, 하부 페이지 (302), 중간 페이지 (304), 상부 페이지 (306) 및 상단 페이지 (308))에 상응한다. 각각의 소프트 비트는 도 8에 예시된 바와 같이 셀의 Vt가 판독 임계치에 얼마나 가까운지를 나타낸다. 따라서, 소프트 비트는 하드 비트가 부정확할 가능성이 있는지 (예컨대, 판독 오류의 가능성)를 나타낸다. 셀의 판독 하드 비트 및 소프트 비트의 조합은 Y로서 표시되고, 셀의 Vt의 양자화된 버전에 상응한다. 판독 셀 값 Y는 셀이 상이한 상태 s = 0, 1, …, 2n-1로 프로그래밍될 확률을 결정하는 데 사용될 수 있다 Pr(Y|s)로서 표시된 상태 s로 프로그래밍된 셀로부터 특정 값 Y가 판독되었을 확률은 CVD 모델에 기반하여 산정될 수 있다.
판독 작업 동안, 메모리 (104)에 의해 도입된 오류를 보정하고 메모리 (104)에 저장된 사용자 데이터를 복구하기 위해 m2LDPC 디코더 (415)에서 판독 셀 값 Y에 대해 디코딩이 수행된다. m2LDPC 디코딩 작업은 고유한 반복 메시지 통과 디코딩 알고리즘을 적용한다. m2LDPC 메시지 통과 알고리즘은 적절한 메시지 산정 규칙과 함께 "셀 노드", "비트 노드" 및 "검사 노드"를 갖는 (2-분 그래프에서 작동하는 종래의 LDPC 메시지 통과 디코딩과 반대로) 3-분 그래프에서 작동하는 것으로 볼 수 있다. 3-분 그래프 전달 추정의 엣지에 걸쳐 교환된 메시지는 코드워드 비트에 대해 교환되며, 이는 반복적으로 개선된다. 비트 추정치를 전달하기 위해 사용되는 공통 메트릭은 로그-우도-비 (LLR)이다. 관측치 V가 주어진 비트 b에 대한 LLR은 식 (1)에 따라 정의된다:
Figure pat00001
여기서 로그 베이스 2는 본원에 기재된 계산에 대해 가정되지만, 다른 값의 베이스가 사용될 수 있다. 예시적인 3-분 그래프 (500)는 도 5에 예시되어 있다. 3-분 그래프 (500)는 셀 노드 (505), 비트 노드 (510), 및 검사 노드 (515)를 포함한다.
셀 노드 (505)는 k 정보 셀 (원래의 n*k = 4*k 정보 비트를 "저장함") 및 m 패리티 셀 (n*m = 4*m 패리티 비트를 "저장함")을 포함한다. 각각의 셀 노드 (505)는, 셀이 간접적으로 저장하는 t = 15 변환된 정보 비트에 상응하는 t = 15 비트 노드에 연결된다. 각각의 패리티 셀 노드는, 셀이 직접적으로 저장하는 n = 4 패리티 비트에 상응하는 n = 4 비트 노드에 연결된다. 정보 셀 노드 (505) 및 이들의 상응하는 비트 노드 (510) 사이에서 수행되는 작업은 "팽창" 작업이고, "팽창"은 n = 4 판독 비트로부터 t = 15 변환된 비트로 팽창된다. 팽창 작업은 로그 우도 비 (LLR) 레벨에서의 메모리 매칭 변환에 상응한다. 셀 노드 (505) 및 비트 노드 (510) 사이에서 수행되는 메모리 매칭 변환은 T 메시지로 표시된, 변환된 비트에 대한 LLR 추정치를 산정한다. 정보 셀 노드 f 로부터의 비트 노드 v로의 LLR 메시지는 다음의 식 (2a)에 따라 산정된다:
Figure pat00002
패리티 셀 노드 f로부터 비트 노드 v로의 LLR 메시지는 다음의 식 (2b)에 따라 산정된다:
Figure pat00003
여기서, s(v)는 상태 s에서의 비트 v의 값이다.
비트 노드 v로부터 셀 노드 f 로의 LLR 메시지는 하기 식 (3)에 따라 산정된다:
Figure pat00004
종래의 LDPC 메시지 통과 디코딩은 비트-대-검사 메시지 (Q 메시지로서 표시됨) 및 검사-대-비트 메시지 (R 메시지로서 표시됨)를 교환함으로써 비트 노드 (510) 및 검사 노드 (515) 사이에서 수행된다. 검사 노드는 (패리티 검사 제약이 충족되도록 패리티 비트를 생성하는 인코딩 작업에 의해 보장된 바와 같이) 이들에 연결된 비트 노드에 대한 패리티 검사 제약을 부여한다. 비트 노드 v로부터 검사 노드 c로의 LLR 메시지 (현재 비트 추정치를 전달함)는 하기 식 (4)에 따라 산정된다:
Figure pat00005
검사 노드 c로부터 비트 노드 v로의 LLR 메시지 (검사 노드에 연결된 비트가 패리티 검사 제약을 만족해야 한다는 사실에 기반하여 업데이트된 비트 추정치를 전달함)는 하기 식 (5)에 따라 산정된다:
Figure pat00006
여기서,
Figure pat00007
.
도 5의 예에서, 각각의 검사 노드 (515)는 4개의 비트 노드 (510)에 연결된다. 다른 예에서, 각각의 검사 노드는 4개 초과 또는 미만의 비트 노드 (510)에 연결된다. 주어진 검사 노드 (515)에 연결되는 4개의 비트 노드 (510)는 0에 추가된다 (모듈로 2). 오류가 있는 경우, 검사 노드 (515)는 대신에 1에 추가된다 (모듈로 2). 이어서, 검사 노드 (515)가 1을 추가할 때 오류가 검출되고 보정될 수 있다. 일부 예에서, 메모리 매칭 변환은 또한 Q 메시지에 의해 전달되는 현재 비트 추정치에 기반한다.
도 4로 되돌아가면, 4*(k+m) "하드 비트" 및 4*(k+m) "소프트 비트"는 메모리 매칭된 LDPC 디코더 (415)에 입력된다. "소프트" 메모리 매칭 변환 디코딩 블록 (420)은 제공된 하드 비트 및 소프트 비트 (양자화된 판독 셀의 Vt 값 Y를 나타냄)를 디코딩하고, LLR 형태로 15*k 변환된 페이지 및 4*m 패리티 비트를 출력한다 (따라서, 이는 변환된 정보 비트 및 패리티 비트의 소프트 추정치를 전달하는 "소프트" 변환임). 소프트 메모리 매칭 변환은 셀 노드 및 비트 노드 사이에서 수행되는 반복 메시지 통과 작업에 상응한다. LDPC 디코더 블록 (425)은 15*k 변환된 비트 및 4*m 패리티 비트가 패리티 검사 제약의 세트를 만족해야 한다는 사실을 활용함으로써 비트의 LLR 추정치를 업데이트한다. 이는 비트 노드 및 검사 노드 사이에서 수행되는 메시지 통과 작업에 상응한다. 15*k 변환된 비트 및 4*m 패리티 비트의 비트 추정치가 모든 패리티 검사 제약을 만족시킬 때까지 메모리 매칭 변환 블록 (420) 및 LDPC 디코더 블록 (425) 사이에서 여러 반복이 수행될 수 있으며, 이는 디코딩 작업이 유효한 코드워드로 수렴함을 나타낸다. 일단 디코딩 작업이 유효한 코드워드로 수렴되면 (디코더 (425)가 15*k 변환된 페이지 내에서 모든 오류를 보정하였음을 나타냄), 디코더 (425)는 보정된 입력 데이터를 출력기 위해 (역 하드 메모리 매칭 변환을 적용함으로써) 15*k 변환된 페이지로부터 원래의 4*k 비트를 검색한다.
도 6은 복수의 메모리 셀 상태 (600)를 갖는 QLC 메모리를 예시한다. 복수의 메모리 셀 상태 (600)는 가우스 분포를 가지며, 여기서 상태 0 (즉, Er 상태)의 표준 편차 (σ)는 다른 상태의 것보다 α 배 더 큰 일부 값이다. 도 6의 QLC 메모리의 LDPC 보정 능력은 다양한 α 값에 대해 도 7에 예시되어 있다. 도 7은 CER의 함수로서 디코더 실패 확률을 예시하는 그래프 (700)를 제공한다. 제1 곡선 (705) 및 제3 곡선(715)은 종래의 LDPC 코딩 방법에 상응한다. 제2 곡선 (710) 및 제4 곡선 (720)은 본원에 기재된 메모리 매칭된 LDPC 코딩 ("m2LDPC"로서 또한 지칭됨)에 상응한다. 추가적으로, 제1 곡선 (705) 및 제2 곡선 (710)은 α = 4에 상응하는 반면, 제3 곡선 (715) 및 제4 곡선 (720)은 α = 1에 상응한다. α가 증가하고 메모리 모델이 더 비대칭이 되기 때문에 (즉, 상이한 판독 임계치의 오류율 사이의 변동이 증가함), 메모리 매칭된 LDPC 코딩의 유효성이 증가한다.
개선된 보정 능력의 이점 외에도, 제안된 메모리 매칭된 LDPC 코딩의 사용은 몇 가지 추가적인 이점을 갖는다. m2LDPC 코드를 사용할 때, 각각의 판독 임계치에 의해 도입된 오류는 비트의 고유한 서브세트 (즉, 해당 판독 임계치와 연관된 특이적 변환된 페이지)에 영향을 미친다. 각각의 변환된 페이지의 비트 오류율 (BER)을 추정함으로써, 각각의 판독 임계치와 연관된 오류율이 추정될 수 있다. 변환된 페이지의 오류율은, 디코더가 수렴하였다고 가정하면, 변환된 페이지의 초기 판독 비트 값을 디코딩 후 보정된 변환된 페이지 비트 값과 비교함으로써 추정될 수 있다. 대안적으로, 변환된 페이지의 초기 판독 비트와 연관된 만족되지 않은 패리티 검사 방정식의 수는 BER 추정을 위해 사용될 수 있다. 만족되지 않은 패리티 검사 제약의 수가 클수록 (일명, 신드롬 가중치), 예상되는 BER이 더 높다. 이러한 접근법은 (초기 판독 비트 값에만 기반하여) 디코딩이 실패하더라도 적용될 수 있다. 판독 임계치 각각의 BER을 추정하는 것은 메모리 (104)의 판독 메모리 워드 라인과 연관된 기본 메모리 오류 모델 또는 CVD를 추정하기 위해 사용될 수 있다. 이는 결과적으로 메모리 상태에 액세스하기 위해 사용될 수 있다. P (Y|s)의 보다 정확한 추정에 기반하여 디코더에 대한 정확한 LLR 값을 산정하는 데 또한 사용될 수 있다.
판독 임계치당 BER을 추정하는 능력의 다른 적용은 판독 임계치를 조정 및 튜닝하기 위한 것이다. 최적의 판독 임계치는 이의 연관된 BER 추정을 최소화하는 판독 임계치로서 발견될 수 있다. 얼마나 많은 비트가 0에서 1로 플립되었지 (BER0→1), 및 얼마나 많은 비트가 1에서 0으로 플립되었는지 (BER1→0)를 나타내는 방향성 BER은 또한 디코딩하기 전에 초기 변환된 페이지 비트 값을 디코딩 후 이들의 값과 비교함으로써 판독 임계치마다 추정될 수 있다. 방향성 BER은 BER을 최소화하고 BER0→1 및 BER1→0의 균형을 맞추기 위해 판독 임계치가 조정되어야 하는 방향에 대한 지표를 제공할 수 있다.
지금까지 기재된 실시형태는 반복 메시지 통과 디코딩을 이용한 LDPC 코딩에 기반한다. 그러나, 메모리 매칭된 코딩 개념은 다른 코딩 체계에 또한 적용될 수 있다. 메모리 매칭 변환이 사용자 데이터에 적용될 수 있고, 이어서, 임의의 주어진 코딩 체계 (BCH, RS 또는 다른 적합한 코딩 체계)가 변환된 페이지 각각에 적용될 수 있다. 판독 동안, 역 메모리 매칭 변환이 적용될 수 있다. 역 메모리 매칭 변환은 (판독 비트에 대한) 하드 변환 또는 (소프트 디코더에 대한 LLR을 출력하는) 소프트 변환일 수 있다. 이후, 변환된 페이지에 걸친 오류를 보정하기 위해 역 메모리 매칭 변환 디코딩이 적용될 수 있다.
본 명세서에 기술된 프로세스들, 시스템들, 방법들, 휴리스틱들 등과 관련하여, 그러한 프로세스들의 단계들 등이 소정의 순서화된 순서에 따라 발생하는 것으로 기술되었지만, 이러한 프로세스들은 기술된 단계들이 본 명세서에 기술된 순서와 다른 순서로 수행되게 실행될 수 있음이 이해되어야 한다. 또한, 소정 단계들이 동시에 수행될 수 있거나, 다른 단계들이 추가될 수 있거나, 또는 본 명세서에 기술된 소정 단계들이 생략될 수 있다는 것이 이해되어야 한다. 다시 말해서, 본 명세서의 프로세스들의 설명들은 소정 실시예들을 설명하기 위한 목적으로 제공되며, 어떠한 방식으로든 청구범위를 제한하는 것으로 해석되어서는 안 된다.
따라서, 위의 설명은 예시적인 것이며 비제한적인 것으로 의도된다는 것이 이해될 것이다. 제공된 예들과는 다른 많은 실시예들 및 응용들이 상기 설명을 읽으면 명백해질 것이다. 범주는 설명을 참조하지 않고 결정되어야 하지만, 대신에 이러한 청구범위의 권리를 갖는 등가물들의 전체 범주에 따라 첨부된 청구범위를 참조하여 결정되어야 한다. 본 명세서에 논의된 기술들에서 미래의 개발들이 이루어질 것이고, 개시된 시스템들 및 방법들이 그러한 미래의 실시예들에 포함될 것으로 예상되고 의도된다. 요약하면, 본 출원은 수정 및 변형이 가능하다는 것을 이해해야 한다.
청구범위에서 사용되는 모든 용어들은 본 명세서에 정반대에 대한 명백한 지시가 없는 한, 본 명세서에 기술된 기술들에서 알 수 있는 것에 의해 이해되는 바와 같은 가장 광범위한 합리적인 구성들 및 그들의 통상의 의미들을 제공하기 위한 것으로 의도된다. 특히, "a", "the", "상기" 등과 같은 단수형 관사들의 사용은, 청구항이 반대로 명시적인 제한을 기술하지 않는 한, 지시된 요소들 중 하나 이상을 인용하기 위한 것으로 해석되어야 한다.
요약은 독자가 신속하게 기술적 개시의 특성을 확인할 수 있도록 제공된다. 그것은 청구범위의 범주 또는 의미를 해석하거나 제한하는 데 사용되지 않을 것이라는 이해와 함께 제출된다. 또한, 위의 발명을 실시하기 위한 구체적인 내용에서, 다양한 특징부들이 본 발명을 간소화할 목적으로 다양한 실시예들에서 함께 그룹화된다는 것을 알 수 있다. 본 발명의 이러한 방법은 청구된 실시예들이 각각의 청구항에서 명백하게 인용되는 것보다 더 많은 특징부들을 필요로 한다는 의도를 반영하는 것으로 해석되지 않아야 한다. 오히려, 다음의 청구범위가 반영함에 따라, 본 발명의 요지는 개시된 단일 실시예의 모든 특징부들보다 적은 특징에 있다. 따라서, 다음의 청구범위는 이에 의해 발명을 실시하기 위한 구체적인 내용에 포함되며, 각각의 청구항은 개별적으로 청구된 주제로서 그 자체로 존재한다.

Claims (20)

  1. 메모리 제어기로서,
    비-휘발성 메모리와 인터페이스하도록 구성된 메모리 인터페이스; 및
    제어기를 포함하고, 상기 제어기는,
    상기 비-휘발성 메모리에 저장될 복수의 데이터 페이지를 수신하고,
    상기 복수의 데이터 페이지를 복수의 변환된 데이터 페이지로 변환하고,
    상기 복수의 변환된 데이터 페이지에 기반하여 복수의 패리티 비트를 결정하고,
    상기 비-휘발성 메모리에 복수의 데이터 페이지 및 복수의 패리티 비트를 저장하도록 구성된, 제어기를 포함하는, 메모리 제어기.
  2. 제1항에 있어서, 상기 복수의 변환된 데이터 페이지 각각이 비-휘발성 메모리의 연관된 판독 임계치의 오류율에 의해 영향을 받는, 메모리 제어기.
  3. 제1항에 있어서, 상기 복수의 데이터 페이지의 비트 오류율이 복수의 변환된 데이터 페이지의 비트 오류율과 동일한, 메모리 제어기.
  4. 제1항에 있어서, 상기 비-휘발성 메모리가 복수의 메모리 셀 상태를 포함하고, 복수의 변환된 데이터 페이지의 수가 복수의 메모리 셀 상태의 판독 임계치의 수에 기반하는, 메모리 제어기.
  5. 제1항에 있어서, 상기 제어기가,
    비-휘발성 메모리로부터, 복수의 데이터 하드 비트 및 복수의 데이터 소프트 비트를 포함하는 저장된 복수의 데이터 페이지, 및 복수의 패리티 하드 비트 및 복수의 패리티 소프트 비트를 포함하는 저장된 복수의 패리티 비트를 검색하도록 구성되는 것인, 메모리 제어기.
  6. 제5항에 있어서, 상기 제어기가,
    저장된 복수의 데이터 페이지를 제2 복수의 변환된 데이터 페이지로 변환하고,
    제2 복수의 변환된 데이터 페이지 및 복수의 패리티 비트에 대한 로그 우도 비 추정치를 결정하도록 추가로 구성되는 것인, 메모리 제어기.
  7. 제6항에 있어서, 상기 제어기가,
    제2 복수의 변환된 데이터 페이지에 대한 로그 우도 비 추정치 및 복수의 패리티 비트에 대한 로그 우도 비 추정치에 기반하여 보정된 복수의 데이터 페이지를 생성하도록 구성되는 것인, 메모리 제어기.
  8. 제5항에 있어서, 상기 제어기가,
    저장된 복수의 데이터 페이지를 제2 복수의 변환된 데이터 페이지로 변환하고,
    제2 복수의 변환된 데이터 페이지 및 복수의 패리티 비트가 패리티 검사 제약의 세트를 만족시키는지 여부를 결정하고,
    제2 복수의 변환된 데이터 페이지 및 복수의 패리티 비트에 응답하여, 패리티 검사 제약의 세트를 만족시키지 못하는 것에 응답하여, 제2 복수의 변환된 데이터 페이지 중 하나 이상의 값의 값을 조정하게 하도록 구성되는 것인, 메모리 제어기.
  9. 제8항에 있어서, 상기 제어기가,
    제2 복수의 변환된 데이터 페이지 및 복수의 패리티 비트가 패리티 검사 제약의 세트를 만족시키는지 여부를 결정하고,
    제2 복수의 변환된 데이터 페이지 및 복수의 패리티 비트가 패리티 검사 제약의 세트를 만족시킬 때까지 제2 복수의 변환된 데이터 페이지 중 하나 이상의 값을 조정하도록 구성되는 것인, 메모리 제어기.
  10. 제1항에 있어서, 복수의 변환된 데이터 페이지에 대한 비-휘발성 메모리에 의해 유도된 비트 오류 분포가 복수의 데이터 페이지에 대한 오류 분포와 상이한, 메모리 제어기.
  11. 제1항에 있어서, 상기 제어기가,
    복수의 변환된 데이터 페이지의 추정된 비트 오류율에 기반하여 비-휘발성 메모리의 메모리 오류 모델을 결정하고,
    메모리 오류 모델에 기반하여 비-휘발성 메모리의 상태를 결정하도록 추가로 구성되는 것인, 메모리 제어기.
  12. 제1항에 있어서, 상기 제어기가,
    복수의 변환된 데이터 페이지의 추정된 비트 오류율에 기반하여 비-휘발성 메모리의 판독 임계치를 조정하도록 추가로 구성되는 것인, 메모리 제어기.
  13. 방법으로서,
    비-휘발성 메모리에 저장될 복수의 데이터 페이지를 수신하는 단계,
    상기 복수의 데이터 페이지를 복수의 변환된 데이터 페이지로 변환하는 단계,
    상기 복수의 변환된 데이터 페이지에 기반하여 복수의 패리티 비트를 결정하는 단계, 및
    상기 비-휘발성 메모리에 복수의 데이터 페이지 및 복수의 패리티 비트를 저장하는 단계를 포함하는 것인, 방법.
  14. 제13항에 있어서, 상기 복수의 변환된 데이터 페이지가 복수의 데이터 페이지보다 더 많은 수의 페이지를 포함하는 것인, 방법.
  15. 제13항에 있어서, 상기 복수의 데이터 페이지의 비트 오류율이 복수의 변환된 데이터 페이지의 비트 오류율과 동일한 것인, 방법.
  16. 제13항에 있어서, 상기 비-휘발성 메모리가 복수의 메모리 셀 상태를 포함하고, 복수의 변환된 데이터 페이지의 수가 복수의 메모리 셀 상태의 수에 기반하는 것인, 방법.
  17. 제13항에 있어서,
    상기 비-휘발성 메모리로부터, 복수의 데이터 하드 비트 및 복수의 데이터 소프트 비트를 포함하는 저장된 복수의 데이터 페이지, 및 복수의 패리티 하드 비트 및 복수의 패리티 소프트 비트를 포함하는 저장된 복수의 패리티 비트를 검색하는 단계를 추가로 포함하는 것인, 방법.
  18. 제17항에 있어서,
    상기 저장된 복수의 데이터 페이지를 제2 복수의 변환된 데이터 페이지로 변환하는 단계, 및
    상기 제2 복수의 변환된 데이터 페이지 및 복수의 패리티 비트에 대한 로그 우도 비 추정치를 결정하는 단계를 추가로 포함하는 것인, 방법.
  19. 제18항에 있어서,
    상기 제2 복수의 변환된 데이터 페이지에 상기 로그 우도 비 추정치 및 상기 복수의 패리티 비트에 대한 로그 우도 비 추정에 기반하여 보정된 복수의 데이터 페이지를 생성하는 단계를 추가로 포함하는 것인, 방법.
  20. 장치로서,
    비-휘발성 메모리와 인터페이스하기 위한 수단;
    상기 비-휘발성 메모리에 저장될 복수의 데이터 페이지를 수신하기 위한 수단,
    상기 복수의 데이터 페이지를 복수의 변환된 데이터 페이지로 변환하기 위한 수단,
    상기 복수의 변환된 데이터 페이지에 기반하여 복수의 패리티 비트를 결정하기 위한 수단; 및
    상기 비-휘발성 메모리에 복수의 데이터 페이지 및 복수의 패리티 비트를 저장하기 위한 수단을 포함하는, 장치.
KR1020220063394A 2021-12-08 2022-05-24 메모리 매칭된 저 밀도 패리티 검사 코딩 체계 KR20230086557A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/545,051 US11860733B2 (en) 2021-12-08 2021-12-08 Memory matched low density parity check coding schemes
US17/545,051 2021-12-08

Publications (1)

Publication Number Publication Date
KR20230086557A true KR20230086557A (ko) 2023-06-15

Family

ID=86607506

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220063394A KR20230086557A (ko) 2021-12-08 2022-05-24 메모리 매칭된 저 밀도 패리티 검사 코딩 체계

Country Status (4)

Country Link
US (1) US11860733B2 (ko)
JP (1) JP7407231B2 (ko)
KR (1) KR20230086557A (ko)
CN (1) CN116302664A (ko)

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3999822B2 (ja) * 1993-12-28 2007-10-31 株式会社東芝 記憶システム
US5450363A (en) * 1994-06-02 1995-09-12 Intel Corporation Gray coding for a multilevel cell memory system
TW405154B (en) * 1997-06-06 2000-09-11 Nippon Steel Corp Semiconductor memory device, employ method and reading method of the same, and memory medium for storing the employ method and the reading method
US7831895B2 (en) * 2006-07-25 2010-11-09 Communications Coding Corporation Universal error control coding system for digital communication and data storage systems
US7966550B2 (en) * 2007-03-31 2011-06-21 Sandisk Technologies Inc. Soft bit data transmission for error correction control in non-volatile memory
KR101436505B1 (ko) * 2008-01-03 2014-09-02 삼성전자주식회사 메모리 장치
US8127091B2 (en) * 2008-10-30 2012-02-28 Micron Technology, Inc. Programming memory cells with additional data for increased threshold voltage resolution
US20130031431A1 (en) * 2011-07-28 2013-01-31 Eran Sharon Post-Write Read in Non-Volatile Memories Using Comparison of Data as Written in Binary and Multi-State Formats
KR101968746B1 (ko) 2011-12-30 2019-04-15 삼성전자주식회사 저장 장치로부터 데이터를 읽는 읽기 방법, 에러 정정 장치, 그리고 에러 정정 코드 디코더를 포함하는 저장 시스템
US8656257B1 (en) * 2012-01-11 2014-02-18 Pmc-Sierra Us, Inc. Nonvolatile memory controller with concatenated error correction codes
US9619381B2 (en) * 2013-12-24 2017-04-11 International Business Machines Corporation Collaborative health management in a storage system
US9286158B2 (en) 2014-02-06 2016-03-15 Macronix International Co., Ltd. Programming method, reading method and operating system for memory
KR20170065076A (ko) * 2015-12-02 2017-06-13 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US20200042223A1 (en) * 2018-08-02 2020-02-06 Alibaba Group Holding Limited System and method for facilitating a high-density storage device with improved performance and endurance
US10802909B2 (en) * 2018-08-17 2020-10-13 Micron Technology, Inc. Enhanced bit flipping scheme

Also Published As

Publication number Publication date
JP7407231B2 (ja) 2023-12-28
CN116302664A (zh) 2023-06-23
JP2023085175A (ja) 2023-06-20
US20230176947A1 (en) 2023-06-08
US11860733B2 (en) 2024-01-02

Similar Documents

Publication Publication Date Title
CN107967186B (zh) 用于控制存储器装置的方法和控制器及存储器系统
US10534665B2 (en) Decoding method, memory storage device and memory control circuit unit
US10389389B2 (en) Method and data storage device using convolutional low-density parity-check coding with a long page write and a short page read granularity
US20160372161A1 (en) Data storage device and operating method thereof
US10355711B2 (en) Data processing method and system based on quasi-cyclic LDPC
US10574272B2 (en) Memory system
US10157097B2 (en) Redundant bytes utilization in error correction code
US11025281B2 (en) Memory system
JP2018160064A (ja) メモリコントローラ、メモリシステムおよび制御方法
US10326473B2 (en) Symbol-based coding for NAND flash devices
US20150317203A1 (en) Code-Based Read Control for Data Storage Devices
US20180191375A1 (en) Tapered variable node memory
JP2020155861A (ja) メモリシステム
US10970166B2 (en) Memory system and method of controlling non-volatile memory
US11128314B2 (en) Error characteristic estimation for NAND flash
US10884858B2 (en) LDPC decoding device, memory system including the same and method thereof
US20180175885A1 (en) Hybrid LDPC-SEC/SECDED Decoding
US11150813B2 (en) Memory system
JP7407231B2 (ja) メモリ一致低密度パリティ検査符号化方式
US11309918B2 (en) Memory system
US11394403B1 (en) Error correction based on rate adaptive low density parity check (LDPC) codes with flexible column weights in the parity check matrices
US9160371B2 (en) Memory controller, storage device and memory control method
US20240086280A1 (en) Memory system and control method
US20240061586A1 (en) Memory controller and method for bit flipping of low-density parity-check codes
CN117707833A (zh) 不规则ldpc码的动态缩放因子更改