KR102181177B1 - 비휘발성 메모리를 위한 비-바이너리 인코딩 - Google Patents

비휘발성 메모리를 위한 비-바이너리 인코딩 Download PDF

Info

Publication number
KR102181177B1
KR102181177B1 KR1020170094802A KR20170094802A KR102181177B1 KR 102181177 B1 KR102181177 B1 KR 102181177B1 KR 1020170094802 A KR1020170094802 A KR 1020170094802A KR 20170094802 A KR20170094802 A KR 20170094802A KR 102181177 B1 KR102181177 B1 KR 102181177B1
Authority
KR
South Korea
Prior art keywords
binary data
codeword
memory device
binary
nonvolatile memory
Prior art date
Application number
KR1020170094802A
Other languages
English (en)
Other versions
KR20180013759A (ko
Inventor
리차드 레오 갈브레이스
조나스 앤드류 구드
니란제이 라빈드란
Original Assignee
웨스턴 디지털 테크놀로지스, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 웨스턴 디지털 테크놀로지스, 인코포레이티드 filed Critical 웨스턴 디지털 테크놀로지스, 인코포레이티드
Publication of KR20180013759A publication Critical patent/KR20180013759A/ko
Application granted granted Critical
Publication of KR102181177B1 publication Critical patent/KR102181177B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/1171Parity-check or generator matrices with non-binary elements, e.g. for non-binary LDPC codes
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • CCHEMISTRY; METALLURGY
    • C09DYES; PAINTS; POLISHES; NATURAL RESINS; ADHESIVES; COMPOSITIONS NOT OTHERWISE PROVIDED FOR; APPLICATIONS OF MATERIALS NOT OTHERWISE PROVIDED FOR
    • C09BORGANIC DYES OR CLOSELY-RELATED COMPOUNDS FOR PRODUCING DYES, e.g. PIGMENTS; MORDANTS; LAKES
    • C09B11/00Diaryl- or thriarylmethane dyes
    • C09B11/04Diaryl- or thriarylmethane dyes derived from triarylmethanes, i.e. central C-atom is substituted by amino, cyano, alkyl
    • C09B11/10Amino derivatives of triarylmethanes
    • C09B11/24Phthaleins containing amino groups ; Phthalanes; Fluoranes; Phthalides; Rhodamine dyes; Phthaleins having heterocyclic aryl rings; Lactone or lactame forms of triarylmethane dyes
    • CCHEMISTRY; METALLURGY
    • C09DYES; PAINTS; POLISHES; NATURAL RESINS; ADHESIVES; COMPOSITIONS NOT OTHERWISE PROVIDED FOR; APPLICATIONS OF MATERIALS NOT OTHERWISE PROVIDED FOR
    • C09BORGANIC DYES OR CLOSELY-RELATED COMPOUNDS FOR PRODUCING DYES, e.g. PIGMENTS; MORDANTS; LAKES
    • C09B69/00Dyes not provided for by a single group of this subclass
    • C09B69/008Dyes containing a substituent, which contains a silicium atom
    • CCHEMISTRY; METALLURGY
    • C09DYES; PAINTS; POLISHES; NATURAL RESINS; ADHESIVES; COMPOSITIONS NOT OTHERWISE PROVIDED FOR; APPLICATIONS OF MATERIALS NOT OTHERWISE PROVIDED FOR
    • C09BORGANIC DYES OR CLOSELY-RELATED COMPOUNDS FOR PRODUCING DYES, e.g. PIGMENTS; MORDANTS; LAKES
    • C09B69/00Dyes not provided for by a single group of this subclass
    • C09B69/10Polymeric dyes; Reaction products of dyes with monomers or with macromolecular compounds
    • C09B69/103Polymeric dyes; Reaction products of dyes with monomers or with macromolecular compounds containing a diaryl- or triarylmethane dye
    • CCHEMISTRY; METALLURGY
    • C09DYES; PAINTS; POLISHES; NATURAL RESINS; ADHESIVES; COMPOSITIONS NOT OTHERWISE PROVIDED FOR; APPLICATIONS OF MATERIALS NOT OTHERWISE PROVIDED FOR
    • C09KMATERIALS FOR MISCELLANEOUS APPLICATIONS, NOT PROVIDED FOR ELSEWHERE
    • C09K11/00Luminescent, e.g. electroluminescent, chemiluminescent materials
    • C09K11/06Luminescent, e.g. electroluminescent, chemiluminescent materials containing organic luminescent materials
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F21LIGHTING
    • F21VFUNCTIONAL FEATURES OR DETAILS OF LIGHTING DEVICES OR SYSTEMS THEREOF; STRUCTURAL COMBINATIONS OF LIGHTING DEVICES WITH OTHER ARTICLES, NOT OTHERWISE PROVIDED FOR
    • F21V9/00Elements for modifying spectral properties, polarisation or intensity of the light emitted, e.g. filters
    • F21V9/30Elements containing photoluminescent material distinct from or spaced from the light source
    • GPHYSICS
    • G02OPTICS
    • G02FOPTICAL DEVICES OR ARRANGEMENTS FOR THE CONTROL OF LIGHT BY MODIFICATION OF THE OPTICAL PROPERTIES OF THE MEDIA OF THE ELEMENTS INVOLVED THEREIN; NON-LINEAR OPTICS; FREQUENCY-CHANGING OF LIGHT; OPTICAL LOGIC ELEMENTS; OPTICAL ANALOGUE/DIGITAL CONVERTERS
    • G02F1/00Devices or arrangements for the control of the intensity, colour, phase, polarisation or direction of light arriving from an independent light source, e.g. switching, gating or modulating; Non-linear optics
    • G02F1/01Devices or arrangements for the control of the intensity, colour, phase, polarisation or direction of light arriving from an independent light source, e.g. switching, gating or modulating; Non-linear optics for the control of the intensity, phase, polarisation or colour 
    • G02F1/13Devices or arrangements for the control of the intensity, colour, phase, polarisation or direction of light arriving from an independent light source, e.g. switching, gating or modulating; Non-linear optics for the control of the intensity, phase, polarisation or colour  based on liquid crystals, e.g. single liquid crystal display cells
    • G02F1/133Constructional arrangements; Operation of liquid crystal cells; Circuit arrangements
    • G02F1/1333Constructional arrangements; Manufacturing methods
    • G02F1/1335Structural association of cells with optical devices, e.g. polarisers or reflectors
    • G02F1/1336Illuminating devices
    • G02F1/133617Illumination with ultraviolet light; Luminescent elements or materials associated to the cell
    • GPHYSICS
    • G03PHOTOGRAPHY; CINEMATOGRAPHY; ANALOGOUS TECHNIQUES USING WAVES OTHER THAN OPTICAL WAVES; ELECTROGRAPHY; HOLOGRAPHY
    • G03FPHOTOMECHANICAL PRODUCTION OF TEXTURED OR PATTERNED SURFACES, e.g. FOR PRINTING, FOR PROCESSING OF SEMICONDUCTOR DEVICES; MATERIALS THEREFOR; ORIGINALS THEREFOR; APPARATUS SPECIALLY ADAPTED THEREFOR
    • G03F7/00Photomechanical, e.g. photolithographic, production of textured or patterned surfaces, e.g. printing surfaces; Materials therefor, e.g. comprising photoresists; Apparatus specially adapted therefor
    • G03F7/0005Production of optical devices or components in so far as characterised by the lithographic processes or materials used therefor
    • G03F7/0007Filters, e.g. additive colour filters; Components for display devices
    • 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/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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/10Decoders
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1108Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • HELECTRICITY
    • H10SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
    • H10KORGANIC ELECTRIC SOLID-STATE DEVICES
    • H10K85/00Organic materials used in the body or electrodes of devices covered by this subclass
    • H10K85/60Organic compounds having low molecular weight
    • H10K85/611Charge transfer complexes
    • HELECTRICITY
    • H10SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
    • H10KORGANIC ELECTRIC SOLID-STATE DEVICES
    • H10K85/00Organic materials used in the body or electrodes of devices covered by this subclass
    • H10K85/60Organic compounds having low molecular weight
    • H10K85/631Amine compounds having at least two aryl rest on at least one amine-nitrogen atom, e.g. triphenylamine
    • H10K85/636Amine compounds having at least two aryl rest on at least one amine-nitrogen atom, e.g. triphenylamine comprising heteroaromatic hydrocarbons as substituents on the nitrogen atom
    • HELECTRICITY
    • H10SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
    • H10KORGANIC ELECTRIC SOLID-STATE DEVICES
    • H10K85/00Organic materials used in the body or electrodes of devices covered by this subclass
    • H10K85/60Organic compounds having low molecular weight
    • H10K85/649Aromatic compounds comprising a hetero atom
    • H10K85/657Polycyclic condensed heteroaromatic hydrocarbons
    • HELECTRICITY
    • H10SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
    • H10KORGANIC ELECTRIC SOLID-STATE DEVICES
    • H10K85/00Organic materials used in the body or electrodes of devices covered by this subclass
    • H10K85/60Organic compounds having low molecular weight
    • H10K85/649Aromatic compounds comprising a hetero atom
    • H10K85/657Polycyclic condensed heteroaromatic hydrocarbons
    • H10K85/6572Polycyclic condensed heteroaromatic hydrocarbons comprising only nitrogen in the heteroaromatic polycondensed ring system, e.g. phenanthroline or carbazole
    • CCHEMISTRY; METALLURGY
    • C09DYES; PAINTS; POLISHES; NATURAL RESINS; ADHESIVES; COMPOSITIONS NOT OTHERWISE PROVIDED FOR; APPLICATIONS OF MATERIALS NOT OTHERWISE PROVIDED FOR
    • C09KMATERIALS FOR MISCELLANEOUS APPLICATIONS, NOT PROVIDED FOR ELSEWHERE
    • C09K2211/00Chemical nature of organic luminescent or tenebrescent compounds
    • C09K2211/10Non-macromolecular compounds
    • C09K2211/1018Heterocyclic compounds
    • C09K2211/1025Heterocyclic compounds characterised by ligands
    • C09K2211/1044Heterocyclic compounds characterised by ligands containing two nitrogen atoms as heteroatoms
    • C09K2211/1048Heterocyclic compounds characterised by ligands containing two nitrogen atoms as heteroatoms with oxygen
    • GPHYSICS
    • G02OPTICS
    • G02FOPTICAL DEVICES OR ARRANGEMENTS FOR THE CONTROL OF LIGHT BY MODIFICATION OF THE OPTICAL PROPERTIES OF THE MEDIA OF THE ELEMENTS INVOLVED THEREIN; NON-LINEAR OPTICS; FREQUENCY-CHANGING OF LIGHT; OPTICAL LOGIC ELEMENTS; OPTICAL ANALOGUE/DIGITAL CONVERTERS
    • G02F1/00Devices or arrangements for the control of the intensity, colour, phase, polarisation or direction of light arriving from an independent light source, e.g. switching, gating or modulating; Non-linear optics
    • G02F1/01Devices or arrangements for the control of the intensity, colour, phase, polarisation or direction of light arriving from an independent light source, e.g. switching, gating or modulating; Non-linear optics for the control of the intensity, phase, polarisation or colour 
    • G02F1/13Devices or arrangements for the control of the intensity, colour, phase, polarisation or direction of light arriving from an independent light source, e.g. switching, gating or modulating; Non-linear optics for the control of the intensity, phase, polarisation or colour  based on liquid crystals, e.g. single liquid crystal display cells
    • G02F1/133Constructional arrangements; Operation of liquid crystal cells; Circuit arrangements
    • G02F1/1333Constructional arrangements; Manufacturing methods
    • G02F1/1335Structural association of cells with optical devices, e.g. polarisers or reflectors
    • G02F1/1336Illuminating devices
    • G02F1/133614Illuminating devices using photoluminescence, e.g. phosphors illuminated by UV or blue light

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Chemical & Material Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Spectroscopy & Molecular Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Organic Chemistry (AREA)
  • Materials Engineering (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Nonlinear Science (AREA)
  • Optics & Photonics (AREA)
  • Crystallography & Structural Chemistry (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

비휘발성 메모리 디바이스들에 데이터를 저장하기 위한 데이터 저장 시스템 및 방법이 제공된다. 비휘발성 메모리 디바이스에 저장하기 위한 바이너리 데이터가 수신된다. 바이너리 데이터는 X진법 값들을 포함하는 비-바이너리 데이터로 변환되며, 여기서 X는 2보다 큰 정수이다. 비-바이너리 데이터는 인코딩되어 코드워드를 생성하고, 코드워드는 비휘발성 메모리 디바이스의 워드라인에 기입된다.

Description

비휘발성 메모리를 위한 비-바이너리 인코딩{NON-BINARY ENCODING FOR NON-VOLATILE MEMORY}
본 출원은 35 U.S.C. §119(e) 하에서, 2016년 7월 29일자로 출원되고 발명의 명칭이 "NON-BINARY LDPC FOR 3D-NAND AND OTHER NON-VOLATILE STORAGE"인 미국 가출원 제62/368,953호의 이익을 주장하며, 이는 본 명세서에 참조로 포함된다.
데이터는 플래시 메모리 셀들을 원하는 데이터 값들에 대응하는 프로그램 레벨들로 프로그래밍함으로써 플래시 메모리에 저장된다. 플래시 메모리 기술이 향상됨에 따라, 개별 플래시 메모리 셀들에서의 프로그래밍에 사용가능한 프로그램 레벨들의 수가 1비트의 데이터를 저장하는 데 사용되는 단일 레벨 셀(single level cell)(SLC) NAND 플래시 메모리에서 사용가능한 2개의 프로그램 레벨들로부터 증가하였다. 예를 들어, 멀티-레벨 셀(multi-level cell)(MLC) NAND 플래시 메모리는 4개의 프로그램 레벨들을 사용하여 각각의 플래시 메모리 셀에 2비트의 데이터를 저장하고, 트리플-레벨 셀(triple-level cell)(TLC) NAND 플래시 메모리는 8개의 프로그램 레벨들을 사용하여 각각의 플래시 메모리 셀에 3비트의 데이터를 저장하고, 쿼드-레벨 셀(quad-level cell)(QLC) NAND 플래시 메모리는 16개의 프로그램 레벨들을 사용하여 각각의 플래시 메모리 셀에 4비트의 데이터를 저장한다. 3D NAND 플래시 메모리와 같은 더 새로운 기술들이 심지어 더 많은 수들의 사용가능한 프로그램 레벨들을 제공함에 따라, 데이터가 현재 플래시 메모리에 기입되고 이로부터 판독되는 방식에 대한 바이너리 특성이 플래시 메모리의 성능을 방해한다.
대상 기술의 양태들에 따르면, 비휘발성 메모리 디바이스에 저장하기 위한 바이너리 데이터를 수신하는 단계, 및 바이너리 데이터를 비-바이너리 데이터로 변환하는 단계를 포함하는 방법이 제공된다. 본 방법은 비-바이너리 데이터를 인코딩하여 코드워드를 생성하는 단계, 및 코드워드를 비휘발성 메모리 디바이스의 워드라인에 기입하는 단계를 추가로 포함한다.
대상 기술의 양태들에 따르면, 데이터 저장 시스템이 제공된다. 데이터 저장 시스템은 복수의 비휘발성 메모리 디바이스들 및 제어기를 포함한다. 제어기는 데이터 저장 시스템에 저장하기 위한 제1 바이너리 데이터를 수신하고, 제1 바이너리 데이터의 2진법 값들을 X진법 값들을 포함하는 제1 비-바이너리 데이터로 변환하도록 - X는 2보다 큰 정수임 - 구성된다. 제어기는 제1 비-바이너리 데이터를 인코딩하여 제1 코드워드를 생성하고, 제1 코드워드를 복수의 비휘발성 메모리 디바이스들 중 제1 비휘발성 메모리 디바이스의 워드라인에 기입하도록 추가로 구성된다.
대상 기술의 양태들에 따르면, 프로세서에 의해 실행될 때, 방법을 수행하는 명령어들로 인코딩된 프로세서 판독가능 매체가 제공된다. 본 방법은 비휘발성 메모리 디바이스를 비휘발성 메모리 디바이스의 특성에 기초하여 값 X와 연관시키는 단계를 포함하고, X는 2보다 큰 정수이다. 본 방법은 비휘발성 메모리 디바이스에 저장하기 위한 바이너리 데이터를 수신하는 단계, 및 바이너리 데이터의 2진법 값들을 X진법 값들을 포함하는 비-바이너리 데이터로 변환하는 단계를 추가로 포함한다. 본 방법은 비-바이너리 데이터를 인코딩하여 코드워드를 생성하는 단계, 및 코드워드를 비휘발성 메모리 디바이스의 워드라인에 기입하는 단계를 추가로 포함한다.
대상 기술의 양태들에 따르면, 비휘발성 메모리 디바이스를 포함하는 데이터 저장 시스템이 제공된다. 데이터 저장 시스템은 비휘발성 메모리 디바이스에 저장하기 위한 바이너리 데이터를 수신하기 위한 수단, 및 바이너리 데이터의 2진법 값들을 X진법 값들을 포함하는 비-바이너리 데이터로 변환하기 위한 수단 - X는 2보다 큰 정수임 -을 추가로 포함한다. 데이터 저장 시스템은 비-바이너리 데이터를 인코딩하여 코드워드를 생성하기 위한 수단, 및 코드워드를 비휘발성 메모리 디바이스의 워드라인에 기입하기 위한 수단을 추가로 포함한다.
대상 기술의 다른 구성들은 대상 기술의 다양한 구성들이 예로서 도시되고 설명되는 이하의 상세한 설명으로부터 본 기술분야의 통상의 기술자에게 용이하게 명백해질 것으로 이해된다. 이해되는 바와 같이, 대상 기술은 다른 구성 및 상이한 구성이 가능하고, 그 몇몇 세부사항들은 다양한 다른 측면들에서 전체가 대상 기술의 범위를 벗어나지 않고도 수정될 수 있다. 따라서, 도면들 및 상세한 설명은 본질적으로 예시적인 것으로 간주되어야 하며, 제한적이지 않다.
도 1은 대상 기술의 양태들에 따른 데이터 저장 시스템(100)의 컴포넌트들을 나타내는 블록도이다.
도 2는 대상 기술의 양태들에 따른 제어기의 컴포넌트들을 나타내는 블록도이다.
도 3은 대상 기술의 양태들에 따라 비휘발성 메모리에 기입되고 이로부터 판독되는 데이터의 흐름을 나타내는 도면이다.
도 4는 메모리 셀당 프로그램 레벨들의 수, 메모리 셀당 인코딩된 비트들의 수, 및 16kB 메모리 셀들의 워드라인에 저장될 수 있는 1kB, 2kB 및 4kB 코드워드들의 수들에 대한 대응하는 값들을 열거한 테이블이다.
도 5는 상이한 에이지(age)들 및 품질 레벨들의 플래시 메모리 다이에 대해 선택된 X의 상이한 값들의 그래픽 표현이다.
도 6은 대상 기술의 양태들에 따라 워드라인에 데이터를 기입하기 위한 프로세스를 도시하는 흐름도이다.
이하에 설명되는 상세한 설명은 대상 기술의 다양한 구성들에 대한 설명으로서 의도되며, 대상 기술이 실시될 수 있는 유일한 구성들을 나타내도록 의도되지 않는다. 첨부된 도면들은 본 명세서에 통합되어, 상세한 설명의 일부를 구성한다. 상세한 설명은 대상 기술에 대한 철저한 이해를 제공할 목적으로 특정 세부사항들을 포함한다. 그러나, 대상 기술은 이러한 특정 세부사항들 없이도 실시될 수 있다. 일부 경우들에서는, 대상 기술의 개념들을 모호하게 하지 않게 하기 위해 구조들 및 컴포넌트들이 블록도 형태로 도시된다. 이해를 용이하게 하기 위해 유사한 컴포넌트들에는 동일한 엘리먼트 번호들이 부여된다.
대상 기술은 플래시 메모리 셀당 정수 개의 바이너리 비트들을 저장하도록 구성되는 플래시 메모리 시스템들의 바이너리 한계점들을 벗어난다. 이러한 플래시 메모리 시스템들은 2의 거듭제곱(2n)과 동일한 수의 프로그래밍 레벨들을 사용하는 것으로 제한된다. 예를 들어, 위에서 언급된 바와 같이, SLC NAND 플래시 메모리는 2개의 프로그래밍 레벨들을 사용하여 단일 비트를 저장하고, MLC NAND 플래시 메모리는 4개의 프로그래밍 레벨들을 사용하여 2비트를 저장하고, TLC NAND 플래시 메모리는 8개의 프로그래밍 레벨들을 사용하여 3비트를 저장한다. 이러한 타입들의 플래시 메모리는 플래시 메모리 다이가 플래시 메모리 다이의 특성에 기초하여 동작되는 모드를 나타낼 수 있다. 예를 들어, 신형 또는 상위 품질의 플래시 메모리 다이는 구형 또는 하위 품질 플래시 메모리 다이에서 사용가능한 프로그램 레벨들의 수보다 더 많은 수의 프로그램 레벨들을 정확하게 프로그래밍 및 판독하여 데이터를 저장할 수 있다. 이러한 동작 모드들의 바이너리 제한사항들은 플래시 메모리 시스템들이 2개의 프로그램 레벨들, 4개의 프로그램 레벨들, 8개의 프로그램 레벨들, 16개의 프로그램 레벨 등을 사용할 것을 강제한다. 그러나, 바이너리 제한사항들로 인해 상이한 수들의 프로그램 레벨들을 사용할 수 있는 플래시 메모리 다이의 용량 및 성능에 액세스할 수 없게 할 가능성이 있다.
대상 기술은, 데이터를 플래시 메모리 다이에 기입하기 전에, 바이너리 데이터를 비-바이너리 데이터로 변환하고, 비-바이너리 저밀도 패리티 체크(low-density parity-check)(LDPC) 인코딩과 같은 비-바이너리 인코딩 방식을 사용하여 비-바이너리 데이터를 인코딩함으로써 플래시 메모리 다이가 사용될 수 있는 유연성을 증가시킨다. 비-바이너리 데이터 및 비-바이너리 인코딩의 기수(number base)는 플래시 메모리 다이가 원하는 에러 레이트로 프로그래밍 및 판독할 수 있는 프로그램 레벨들의 수에 기초하여 선택될 수 있다. 예를 들어, 테스트 또는 시뮬레이션은 플래시 메모리 다이가 데이터를 저장하기 위해 7개의 프로그램 레벨들을 사용할 수 있다고 결정할 수 있다. 이 예에서, 저장을 위해 지정된 바이너리 데이터의 2진법(base-two) 값들은 7진법(base-seven) 값들로 변환된다. 그 후, 변환된 7진법 값들은 비-바이너리 LDPC를 사용하여 코드워드로 인코딩될 수 있고, 여기서 인코딩 매트릭스의 0이 아닌 엘리먼트들은 갈루아 필드(Galois field) GF(7)의 엘리먼트들로 채워진다. 일단 인코딩되면, 코드워드는 플래시 메모리 다이 내의 워드라인에 기입될 수 있다. 7개의 프로그램 레벨들 각각은 7진법 넘버링(예를 들어, 1, 2, 3, 4, 5, 6, 7)의 각각의 고유한 심볼/디지트에 대응하여, 메모리 셀을 특정 심볼/디지트에 대응하는 프로그램 레벨로 프로그래밍함으로써, 메모리 셀이 특정 심볼/디지트에 대응하는 데이터 값을 저장한다. 워드라인으로부터 코드워드를 판독할 때, 코드워드는 비-바이너리 LDPC를 사용하여 디코딩되며, 디코딩 매트릭스의 0이 아닌 엘리먼트들은 랄루아 필드 GF(7)의 엘리먼트들로 채워진다. MLC, TLC, QLC 등의 플래시 메모리의 바이너리 시스템들과 달리, 대상 기술은 워드라인들로부터 데이터를 판독하기 위해 그레이 코딩을 사용하지 않는다. 그 후, 디코딩된 비-바이너리 데이터는 다시 바이너리 데이터로 변환된다. 이러한 동작들은 아래에서 더 상세히 설명된다.
도 1은 대상 기술의 양태들에 따른 데이터 저장 시스템(100)의 컴포넌트들을 나타내는 블록도이다. 도 1에 도시된 바와 같이, 데이터 저장 시스템(100)은 제어기(110), 휘발성 메모리(120), 비휘발성 메모리 디바이스들(130) 및 호스트 인터페이스(140)를 포함한다. 제어기(110)는 호스트 인터페이스(140)를 통해 호스트 시스템(150)으로부터 수신되는 요청들을 프로세싱하여, 비휘발성 메모리 디바이스들(130)에서 데이터에 액세스하도록 구성된다. 호스트 시스템(150)으로부터 수신되는 데이터 액세스 요청들은 비휘발성 메모리(130)에 호스트 데이터를 저장하라는 기입 요청들, 비휘발성 메모리 디바이스들(130)에 저장된 호스트 데이터를 리트리브(retrieve)하라는 판독 요청들, 및 비휘발성 메모리 디바이스들(130)에 저장된 호스트 데이터를 소거하라는 소거 요청들을 포함할 수 있다. 상태 요청들 또는 디바이스 관리 요청들과 같은 다른 타입들의 요청들이 호스트 시스템(150)으로부터 수신되어, 제어기(110)에 의해 프로세싱될 수 있다.
호스트 인터페이스(140)는 호스트 시스템(150)을 데이터 저장 시스템(100)에 연결하도록 구성된다. 호스트 인터페이스(140)는 호스트 시스템(150)을 제어기(110)에 동작가능하게 연결하기 위한 전기적 및 물리적 접속들을 포함할 수 있다. 전기적 및 물리적 접속들을 통해, 호스트 인터페이스(140)는 호스트 시스템(150)과 제어기(110) 사이에서 데이터, 어드레스들 및 제어 신호들을 전달하도록 구성된다. 제어기(110)는, 호스트 시스템(150)으로부터 수신되는 기입 요청에 응답하여, 호스트 시스템(150)으로부터 수신되는 호스트 데이터를 비휘발성 메모리 디바이스들(130)에 저장하고, 호스트 시스템(150)으로부터 수신되는 판독 요청에 응답하여, 비휘발성 메모리 디바이스들(130)에 저장된 호스트 데이터를 판독하고, 판독된 호스트 데이터를 호스트 인터페이스(140)를 통해 호스트 시스템(150)으로 전송하도록 구성된다.
호스트 인터페이스(140)는 SATA(Serial Advanced Technology Attachment), ATA(Advanced Technology Attachment), SCSI(Small Computer System Interface), PCI-X(PCI-extended), 파이버 채널, SAS(Serial Attached SCSI), SD(Secure Digital), EMMC(Embedded Multi-Media Card), UFS(Universal Flash Storage) 및 PCIe(Peripheral Component Interconnect Express)를 포함하되, 이에 제한되지 않는 표준 인터페이스들을 구현할 수 있다. 그러나, 대상 기술은 표준 인터페이스들의 사용에 제한되지 않고, 호스트 시스템(150)과의 통신을 위해 맞춤형 또는 독점형 인터페이스들을 사용할 수 있다.
호스트 시스템(150)은 호스트 인터페이스(140)를 통해 데이터 저장 시스템(100)에 연결되고 이와 통신하여, 데이터 저장 시스템(100)에서 데이터를 저장 및 리트리브하도록 구성된 임의의 디바이스를 나타낸다. 호스트 시스템(150)은 퍼스널 컴퓨터, 서버, 워크 스테이션, 랩톱 컴퓨터, 스마트폰 등과 같은 컴퓨팅 디바이스일 수 있다. 대안적으로, 호스트 시스템(150)은 디지털 카메라, 디지털 오디오 플레이어, 디지털 비디오 레코더 등과 같은 전자 디바이스일 수 있다.
제어기(110)는, 호스트 시스템(150)으로부터 수신되는 요청들에 응답하여, 내부 유지관리 동작들의 실행 동안에, 데이터 저장 시스템(100)의 컴포넌트들의 동작을 모니터링하고 제어하도록 구성된다. 제어기(110)는 멀티 코어 프로세서, 범용 마이크로 프로세서, 마이크로 제어기, 디지털 신호 프로세서(DSP), 주문형 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA), 프로그래머블 로직 디바이스(PLD), 상태 머신, 게이트 로직(gated logic), 이산 하드웨어 컴포넌트들, 또는 이들의 조합을 포함할 수 있다. 일부 양태들에서, 제어기(110)의 하나 이상의 컴포넌트들은 단일 칩 또는 모듈로 통합될 수 있거나, 또는 둘 이상의 이산 칩들 또는 모듈들로 구현될 수 있다.
휘발성 메모리(120)는 데이터 저장 시스템(100)을 관리하는 데 사용되는 데이터 및 정보를 일시적으로 저장하기 위해 제어기(110)에 의해 사용되는 메모리를 나타낸다. 예를 들어, 제어기(110)는 휘발성 메모리(120)를, 비휘발성 메모리 디바이스들(130)에 기입되는 것을 대기하는 호스트 데이터, 또는 호스트 시스템(150)으로 전송되는 것 또는 비휘발성 메모리 디바이스들(130)에 다시 기입되는 것을 대기하는 비휘발성 메모리 디바이스들(130)로부터 판독된 호스트 데이터를 위한 버퍼들로서 사용할 수 있다. 제어기(110)는 데이터 저장 시스템(100)의 관리에 사용되는 다양한 타입들의 시스템 데이터를 휘발성 메모리(120)에 저장할 수 있다. 시스템 데이터는 비휘발성 메모리 디바이스들(130) 내의 상이한 디바이스들에 데이터를 저장할 때 사용되는 인코딩 타입들을 추적하기 위한 데이터를 포함할 수 있다. 또한, 시스템 데이터는 호스트 시스템(150)에 의해 참조되는 로지컬 어드레스들을 비휘발성 메모리 디바이스들(130)의 물리적 어드레스들에 매핑하는 테이블들, 프로그램/소거(P/E) 사이클 카운트들, 에러 통계들, 유효/무효 데이터 카운트들 등을 포함할 수 있다. 제어기(110)는 비휘발성 메모리 디바이스들(130) 또는 도시되지 않은 다른 형태의 비휘발성 메모리에 전술한 데이터 및 정보의 일부 또는 전부를 저장하여, 데이터 저장 시스템(100)이 셧다운되거나 아니면 전력을 손실하였을 때, 데이터 및 정보를 보존할 수 있다. 제어기(110)는 데이터 및 정보의 사본들을 비휘발성 메모리 디바이스들(130)에 주기적으로 저장할 수 있거나, 또는 셧다운 또는 전력 손실 이벤트를 대기하여 비휘발성 메모리 디바이스들(130)에 데이터 및 정보를 백업할 수 있다.
휘발성 메모리(120)는 SRAM(static RAM) 또는 DRAM(dynamic RAM)과 같은 RAM(random-access memory)일 수 있다. 그러나, 대상 기술은 임의의 특정 타입의 RAM에 제한되지 않는다. 또한, 휘발성 메모리(120)는 단일 RAM 모듈 또는 다수의 RAM 모듈들을 사용하여 구현될 수 있다. 휘발성 메모리(120)는 제어기(110)와 구별되는 것으로 도시되어 있지만, 휘발성 메모리(120)의 일부들 또는 전부가 제어기(110)에 통합될 수 있다.
도 1에 도시된 바와 같이, 다수의 비휘발성 메모리 디바이스들(130)은 다수의 채널들로 배열된다. 예를 들어, 도 1은 하나의 비휘발성 메모리 디바이스(130)를 갖는 N개의 채널들 각각을 도시한다. 각각의 비휘발성 메모리 디바이스들(130)은 단일 다이 또는 다중 다이를 포함할 수 있다. 각각의 다이는 NAND 플래시 메모리 셀들 또는 3D NAND 플래시 메모리 셀들과 같은 비휘발성 메모리 셀들을 포함한다. 각각의 비휘발성 메모리 디바이스들(130)은 각각의 칩들 또는 패키지들 내에 구현될 수 있다. 각각의 채널은 단일 비휘발성 메모리 디바이스(130)를 갖는 것으로 도시되어 있지만, 대상 기술은 각각의 채널이 2개 이상의 비휘발성 메모리 디바이스들(130)을 포함하는 구현들을 포함할 수 있다.
다이의 플래시 메모리 셀들은 물리적 블록들로 배열될 수 있으며, 각각의 블록은 다수의 워드 라인들을 포함한다. 각각의 워드라인은 다수의 비휘발성 메모리 셀들(예를 들어, 1kB, 2kB, 4kB, 16kB 등)을 포함한다. 대상 기술은 각각의 물리적 블록 내의 임의의 특정 개수의 워드라인들에 제한되지 않는다. 예를 들어, 각각의 블록은 8개의 워드라인들, 16개의 워드라인들, 32개의 워드라인들 등을 포함할 수 있다. 또한, 각각의 플래시 메모리 다이에 포함된 물리적 블록들의 개수는 임의의 특정 개수로 제한되지 않는다. NAND 플래시 메모리에서, 워드라인의 페이지 또는 전체로서의 워드라인은 플래시 메모리 다이에 데이터를 기입하거나 또는 플래시 메모리 다이로부터 데이터를 판독하는 데 사용가능한 최소 단위를 나타낸다. 물리적 블록들은 플래시 메모리 다이에서 데이터를 소거하는 데 사용가능한 최소 단위를 나타낸다.
제어기(110)는 각각의 플래시 메모리 채널들 0-N을 통해 플래시 메모리 다이와 커맨드들, 제어 정보, 어드레스들, 데이터 등을 전달하도록 구성된다. 각각의 채널은 제어기(110)와 각각의 플래시 메모리 채널에 연결된 플래시 메모리 다이 사이에서 커맨드들, 제어 정보, 어드레스들 및/또는 데이터로 인코딩된 전기 신호들을 전달하도록 구성된 하나 이상의 버스들을 나타낼 수 있다. 대상 기술은 임의의 특정 개수의 플래시 메모리 채널들에 제한되지 않는다. 예를 들어, 데이터 저장 시스템(100)은 8개의 채널들, 16개의 채널들, 32개의 채널들 등을 포함할 수 있다.
도 2는 대상 기술의 양태들에 따른 제어기(110)의 컴포넌트들을 나타내는 블록도이다. 도 2에 도시된 바와 같이, 제어기(110)는 인코더(210), 디코더(220), 진법 변환 모듈(base conversion module)(230) 및 채널 제어기(240)를 포함할 수 있다. 제어기(110)는 이러한 특정 컴포넌트들에 제한되지 않으며, 다른 타입들의 컴포넌트들을 포함할 수 있다. 또한, 제어기(110)는 임의의 주어진 컴포넌트의 단일 인스턴스들에 제한되지 않고, 컴포넌트들 중 임의의 것의 다중 인스턴스들로 구현될 수 있다.
인코더(210)는 데이터를 인코딩하여 비휘발성 메모리(130)에 저장하기 위한 코드워드를 생성하도록 구성된다. 대상 기술의 양태들에 따르면, 인코더(210)는 비-바이너리 저밀도 패리티 체크(low-density parity-check)(LDPC) 코드 알고리즘과 같은 비-바이너리 에러 정정 코드(error-correcting code)(ECC) 알고리즘을 사용하여 코드워드를 생성한다. 디코더(220)는 데이터를 인코딩하는 데 사용된 ECC 알고리즘의 디코딩 부분을 사용하여 인코딩된 데이터를 리트리브하기 위하여 비휘발성 메모리(130)로부터 판독되는 코드워드를 디코딩하도록 구성된다. 제어기(110)는 비휘발성 메모리(130)에 저장되는 데이터 및 비휘발성 메모리(130)로부터 판독되는 데이터를 프로세싱하는 데 사용가능한 대역폭을 증가시키기 위해 인코더(210) 및/또는 디코더(220)의 다중 인스턴스들을 포함할 수 있다. 디코더(220)는 하드 디코딩 프로세스 또는 소프트 디코딩 프로세스를 구현할 수 있다. 디코더(220)의 다중 인스턴스들이 제어기(110)에 포함되는 경우, 디코더들 중 일부는 하드 디코딩 프로세스들에, 다른 것들은 소프트 디코딩 프로세스들에 전용될 수 있다.
도 2에 도시된 컴포넌트들에 더하여, 제어기(110)는 다른 컴포넌트들을 포함할 수 있다. 예를 들어, 제어기(110)는 데이터 저장 시스템(100) 내의 판독, 기입 및 소거 동작들을 관리하기 위한 관리자들 및 스케줄러들을 포함할 수 있다. 제어기(110)는 또한 호스트 시스템(150)에 의해 사용되는 호스트 어드레스들을 비휘발성 메모리(130) 내의 블록들, 워드라인들 및 페이지들의 물리적 어드레스들로 변환하는 것을 관리하는 어드레스 변환 관리자를 포함할 수 있다. 다른 컴포넌트들은 스크램블러들, 디스크램블러들, 유지관리 관리자들(예를 들면, 가비지 콜렉션(garbage collection), 웨어 레벨링(wear leveling), 데이터 재배치 등)을 포함할 수 있다.
제어기(110)의 컴포넌트들은 각각, 하드웨어 로직 회로들 또는 하드웨어와 소프트웨어/펌웨어의 조합을 사용하여, 프로세서 또는 프로세서 코어에 의해 로딩되고 실행되는 하나 이상의 시퀀스들의 명령어들(예를 들어, 소프트웨어/펌웨어)을 사용하여 구현될 수 있다. 예를 들어, 다수의 프로세서들 또는 멀티-코어 프로세서를 포함하는 제어기에서, 개별적인 프로세서 또는 프로세서 코어들에는 제어기(110)의 각각의 컴포넌트들의 기능을 제공하는 것이 할당될 수 있다. 또한, 위에서 논의된 컴포넌트들 중 하나 이상의 컴포넌트들은 대상 기술의 범위를 벗어나지 않고 제어기(110)의 외부에서 구현될 수 있다.
도 3은 대상 기술의 양태들에 따라 비휘발성 메모리에 기입되고 이로부터 판독되는 데이터의 흐름을 나타내는 도면이다. 예를 들어, 비휘발성 메모리 디바이스(130)에 저장하기 위한 바이너리 데이터가 수신될 수 있다. 바이너리 데이터의 2진법 값들은, 예를 들어, 진법 변환 모듈(230)에 의해 X진법 값들로 변환될 수 있다. 그 후, 비-바이너리 데이터는 비-바이너리 LDPC 인코딩 알고리즘을 사용하여 비-바이너리 데이터를 인코딩하여 예를 들어, 코드워드를 생성하는 인코더(210)에 제공된다. 그 후, 코드워드는 채널 제어기(240)를 통해 비휘발성 메모리 디바이스(130)와 같은 플래시 매체의 워드라인에 기입된다.
비휘발성 메모리 디바이스(130)로부터 코드워드를 판독할 때, 디코더(220)는 예를 들어, 비-바이너리 LDPC 디코딩 알고리즘을 사용하여 비-바이너리 데이터를 리트리브하기 위하여 코드워드를 디코딩한다. 디코딩된 비-바이너리 데이터의 X진법 값들은 진법 변환 모듈(230)에 의해 바이너리 2진법 값들로 다시 변환된다.
대상 기술의 양태들에 따르면, X는 2보다 큰 값을 갖는 정수이다. X의 값은 임의의 특정 범위의 값들로 제한되지 않으며, 2의 거듭제곱이 아닌(non-power-of-two) 정수 값들을 포함할 수 있다. X의 값은 바이너리 데이터를 비-바이너리 데이터로 변환하기 위한 진법(base), LDPC 인코딩 및 디코딩에 사용되는 갈루아 필드의 심볼들, 및 비휘발성 메모리 디바이스(130)의 메모리 셀들을 프로그래밍하는 데 사용되는 프로그램 레벨들의 수를 결정한다.
데이터 저장 시스템들은 데이터 저장 시스템이 동작하도록 설계되는 지정된 최대 비트 에러 레이트(bit error rate)(BER)를 가질 수 있다. 다양한 특성들 및 메트릭들이 비휘발성 메모리 디바이스의 BER에 영향을 미칠 수 있다. 한 가지 이러한 메트릭이 플래시 메모리 셀들의 신호 대 잡음비(signal-to-noise ratio)(SNR)이다. 플래시 메모리 셀에 대한 SNR은 다음을 사용하여 표현될 수 있다.
Figure 112017072087264-pat00001
여기서 D는 플래시 메모리 셀들의 총 전압 범위이고, σ는 프로그램 레벨 분포의 표준 편차이다. 플래시 메모리 셀들을 프로그래밍하는 데 사용되는 프로그램 레벨들의 수가 증가함에 따라, SNR도 비휘발성 메모리 디바이스에 대한 지정된 BER을 유지하기 위해 또한 증가해야 한다.
비휘발성 메모리 디바이스들이 더 많은 프로그램-소거 사이클들을 경험할 때, 메모리 셀들의 프로그램 레벨 분포들이 넓어져서, 이에 의해 프로그램 레벨 분포들의 더 큰 표준 편차들 및 더 작은 SNR을 초래하게 되는 경향이 있다. 마찬가지로, 하위 품질의 비휘발성 메모리 디바이스들은 더 낮은 프로그램-소거 사이클 카운트들에서도 비교적 넓은 프로그램 레벨 분포들을 가질 수 있어, 이에 의해 다시 프로그램 레벨 분포들의 더 큰 표준 편차들 및 더 작은 SNR을 초래하게 된다. 비휘발성 메모리 디바이스들의 상이한 수들의 프로그램-소거 사이클들 및/또는 상이한 품질 레벨들에 대한 프로그램 레벨 분포들 및 대응하는 SNR들은 시뮬레이션 또는 테스트를 사용하여 추정될 수 있다. 그러면, SNR들은 대응하는 프로그램-소거 사이클 카운트들 또는 품질 레벨들로 표현될 수 있다.
따라서, 플래시 메모리 다이와 같은 소정의 비휘발성 메모리 디바이스에 대해, 디바이스 내의 메모리 셀들에 대한 SNR에 기초하여 지정된 BER을 초과하지 않을 것으로 예상되는 다수의 프로그래밍 레벨들이 선택된다. 예를 들어, SNR이 8개의 프로그램 레벨들에 대해 지정된 BER을 유지하기 위한 최소값보다는 작고, 7개의 프로그램 레벨들에 대해 지정된 BER을 유지하기 위한 최소값보다는 큰 경우, X는 7로 설정될 수 있다. 선택은 플래시 메모리 다이의 품질에 기초할 때, 조립 또는 제조시에 행해질 수 있다. 선택은 또한 프로그램-소거 사이클 카운트들에 의해 표현되는 플래시 메모리 다이의 상이한 수명 스테이지들에서 행해질 수 있다. 예를 들어, 룩업 테이블 또는 다른 데이터 구조는 프로그램 레벨들의 수들을 각각의 프로그램-소거 사이클 카운트들과 연관시킬 수 있다. 플래시 메모리 다이가 동작 동안에 특정 프로그램-소거 사이클 카운트를 교차함에 따라, 값 X에 의해 지시되는 프로그램 레벨들의 수는 프로그램-소거 사이클 카운트에 대응하는 룩업 테이블 엔트리로부터 결정될 수 있다.
또한, 제어기(110)는 비휘발성 메모리 디바이스들에 대한 판독 에러 카운트들을 추적할 수 있다. 플래시 메모리 다이가 판독 에러들을 경험하면, 판독 에러 카운트는 업데이트되고, X에 대한 상이한 값들에 대응하는 미리 결정된 값들과 비교될 수 있다. 판독 에러 카운트들이 증가하면, 특정 플래시 메모리 다이에 대한 판독 에러들을 감소시키기 위해, X에 대한 값에 의해 표현되는 프로그램 레벨들의 수가 감소될 필요가 있을 수 있다.
도 4는 메모리 셀당 프로그램 레벨들의 수, 메모리 셀당 인코딩된 비트들의 수, 및 16kB 메모리 셀들의 워드라인에 저장될 수 있는 1kB, 2kB 및 4kB 코드워드들의 수들에 대한 대응하는 값들을 열거하는 테이블이다. 예를 들어, 메모리 셀들을 프로그래밍하는 데에 7개의 프로그램 레벨들이 사용가능하다는 것을 나타내기 위해 X가 7로 설정되면, 2진법 바이너리 데이터를 7진법 비-바이너리 데이터로 변환하고 그 비-바이너리 데이터를 인코딩하여 워드라인에 저장되는 코드워드를 생성하면 셀당 2.807 인코딩된 비트가 된다. 이 인코딩 레이트에서는, 44개의 1kB 바이너리 코드워드들의 데이터가 16kB 워드라인에 저장될 수 있고, 22개의 2kB 바이너리 코드워드들의 데이터가 16kB 워드라인에 저장될 수 있고, 11개의 4kB 바이너리 코드워드들의 데이터가 16kB 워드라인에 저장될 수 있다.
도 5는 상이한 에이지들 및 품질 레벨들의 플래시 메모리 다이에 대해 선택된 X의 상이한 값들의 그래픽 표현이다. 도 5에서, 에이지들은 "신형(NEW)" 및 "노화(AGED)"로 표현된다. 품질 레벨들은 "최우수 다이(BEST DIE)", "우수 다이(BETTER DIE)", "양호한 다이(GOOD DIE)" 및 "최하위 다이(NO DIE LEFT BEHIND)"로 표현된다. 도 5에 도시된 에이지들 및 품질 레벨들은 설명의 목적을 위한 예들이다. 대상 기술은 임의의 특정 개수의 에이지들 또는 품질 레벨들에 제한되지 않는다. 도 5의 8개의 대형 블록들은 플래시 메모리 다이를 표현하며, 상이한 조합들의 에이지 및 품질 레벨에 대해 X의 값으로 표현되는 프로그램 레벨들의 수들의 예시적인 선택들을 나타낸다. 예를 들어, 최고 품질 레벨에 있는 것으로 간주되는 신형 플래시 메모리 다이인 "최우수 다이"는 12개의 프로그램 레벨들을 사용하여 다이 내의 메모리 셀들을 프로그래밍하도록 구성된다. 반면에, 가장 낮은 품질 레벨에 있는 것으로 간주되는 노화된 플래시 메모리 다이인 "최하위 다이"는 6개의 프로그램 레벨들을 사용하여 다이 내의 메모리 셀들을 프로그래밍하도록 구성된다. 도 5의 대형 블록들 내의 소형 블록들은 상이한 수들의 프로그램 레벨들에서 16kB 워드라인에 저장될 수 있는 4kB 바이너리 코드워드들의 수를 표현한다. 예를 들어, 셀당 12개의 프로그램 레벨들에서는, 14개의 4kB 바이너리 코드워드들의 데이터가 16kB 워드라인에 저장될 수 있는 반면, 셀당 6개의 프로그램 레벨들에서는, 10개의 4kB 바이너리 코드워드들의 데이터가 16kB 워드라인에 저장될 수 있다.
선택된 수의 프로그램 레벨들을 사용하도록 플래시 메모리 다이를 구성하는 것은, 다이 상의 메모리 셀들을 프로그래밍하고 다이 상의 메모리 셀들을 판독할 때 사용되는 프로그램 레벨들의 수를 지정하기 위해 커맨드를 발행하거나 또는 플래시 메모리 다이 상의 하나 이상의 레지스터들을 프로그래밍하는 제어기(110)에 의해 행해질 수 있다. 각각의 프로그램 레벨은 X진법 넘버링의 각각의 고유한 심볼/디지트에 대응하기 때문에, 플래시 메모리 다이는, 데이터를 판독할 때, 단지 각각의 메모리 셀이 프로그래밍되는 각각의 프로그램 레벨을 결정하여 리턴하기만 하면 된다. 따라서, 대상 기술은 데이터를 판독할 때 그레이 코딩을 사용하지 않고, 그레이 코딩의 사용으로 인한 셀-레벨 정보의 손실을 피한다.
제어기(110)는 각각의 플래시 메모리 다이가 사용하도록 구성되는 프로그램 레벨들의 수들을 추적하는 시스템 데이터를 유지관리할 수 있다. 플래시 메모리 디바이스의 노화로 인해 X에 대해 선택된 값이 변경되는 경우, 제어기(110)는 플래시 메모리 다이가, X에 대한 이전 값에 기초하여 프로그래밍된 데이터를 판독할 때는 X에 대한 그 이전 값으로 리턴하고, X에 대해 선택된 값에 기초하여 프로그래밍된 데이터에 대한 새로운 데이터 기입 동작들 또는 판독 동작들에 대해서는 X에 대해 선택된 값으로 리턴하도록 재구성할 수 있다. 제어기(110)는 플래시 메모리 다이 내의 어느 워드라인들/블록들이 몇 개의 프로그램 레벨들을 사용하여 프로그래밍되었는지를 추적하는 추가 시스템 데이터를 유지관리할 수 있다.
X에 대해 선택된 값에 따라 비휘발성 메모리 디바이스들을 구성하는 것에 더하여, 제어기(110)는 또한 X에 대한 특정 선택된 값에 대해 인코더(210), 디코더(220) 및 진법 변환 모듈(230)을 구성할 수도 있다. 진법 변환 모듈(230)은 X에 대해 선택된 값에 대한 변환을 조정하도록 구성가능할 수 있다. 대안적으로, 진법 변환 모듈(230)은 X에 대한 각각의 가능한 값에 대해 각각의 모듈을 포함할 수 있고, 제어기(110)는 X에 대해 선택된 값에 대응하는 모듈을 선택하거나 또는 활성화할 수 있다.
상술한 바와 같이, 인코더(210) 및 디코더(220)는 데이터를 인코딩 및 디코딩하기 위해 비-바이너리 LDPC 알고리즘을 사용할 수 있다. 이와 관련하여, 인코더(210)는 비-바이너리 데이터를 인코딩하여 코드워드를 생성하기 위해 생성기 매트릭스를 사용할 수 있고, 디코더(220)는 비-바이너리 데이터를 리트리브하기 위해 코드워드를 디코딩하는 데 패리티 체크 매트릭스를 사용할 수 있다. X에 대해 선택된 값에 관계없이, LDPC 알고리즘은 이들 매트릭스들 내의 0이 아닌 엘리먼트들의 위치들을 동일한 위치에서 유지하도록 설계될 수 있다. 주어진 X의 값에 대해 0이 아닌 엘리먼트들에 할당되는 값들은 X에 대해 선택된 값에 대응하는 X진법 넘버링의 심볼들/디지트들로부터 선택될 수 있다. 각각의 0이 아닌 엘리먼트에 대한 특정 심볼들/디지트들은 미리 결정될 수 있고, 룩업 테이블 또는 심볼들/디지트들을 리트리브하고 인코더 및 디코더를 구성하기 위해 액세스가능한 다른 데이터 구조에 저장될 수 있다.
도 6은 대상 기술의 양태들에 따라 워드라인에 데이터를 기입하기 위한 프로세스를 도시하는 흐름도이다. 블록(600)에서, 비휘발성 메모리 디바이스(130)에 저장하기 위한 바이너리 데이터가 수신된다. 바이너리 데이터는 호스트 시스템(150)으로부터 수신될 수도 있고, 제어기(110)에 의해 유지관리되고 보존을 위해 비휘발성 메모리에 저장될 필요가 있는 시스템 데이터의 일부일 수도 있고, 또는 가비지 콜렉션, 웨어 레벨링, 내부 데이터 이동 등과 같은 유지관리 동작의 일부로서 비휘발성 메모리 디바이스(130)로부터 판독되는 데이터일 수도 있다.
블록(610)에서, 바이너리 데이터는 비휘발성 메모리 디바이스(130)에 대응하여 X에 대해 선택된 값에 따라 비-바이너리 데이터로 변환된다. 블록(620)에서, 비-바이너리 데이터는 인코딩되어 코드워드를 생성하고, 블록(630)에서, 코드워드는 비휘발성 메모리 디바이스(130) 내의 워드라인에 기입된다.
대상 기술은 NAND 플래시 메모리 디바이스들과 같은 비휘발성 메모리 디바이스들의 용량, 내구성 및 성능을 최적화하고 균형을 맞추도록 X에 대한 값들의 선택을 허용한다. X에 대해 선택된 상이한 값들은 비휘발성 메모리 디바이스들의 메모리 셀들을 프로그래밍하는 데 사용되는 프로그램 레벨들의 수를 제어한다. 위의 논의에 반영된 바와 같이, X에 대해 가능한 값들의 범위를 제공하는 것에 의해, 개개의 비휘발성 메모리 디바이스들이, 메모리 디바이스의 특성들에 기초하여 X에 대한 값을 선택함으로써 특정 값들 미만의 비트 에러 레이트들을 유지하면서, 디바이스들에 저장되는 데이터의 양을 최대화하도록 구성되게 할 수 있다.
대상 기술의 양태들에 따르면, 비휘발성 메모리 디바이스에 저장하기 위한 바이너리 데이터를 수신하는 단계, 및 바이너리 데이터를 비-바이너리 데이터로 변환하는 단계를 포함하는 방법이 제공된다. 본 방법은 비-바이너리 데이터를 인코딩하여 코드워드를 생성하는 단계, 및 코드워드를 비휘발성 메모리 디바이스의 워드라인에 기입하는 단계를 추가로 포함한다.
바이너리 데이터를 비-바이너리 데이터로 변환하는 단계는 바이너리 데이터의 2진법 값들을 X진법 값들로 변환하는 단계를 포함할 수 있고, 여기서 X는 2보다 큰 정수이다. X는 2의 거듭제곱이 아닌 정수일 수 있다. 코드워드를 비휘발성 메모리 디바이스의 워드라인에 기입하는 단계는, 비-바이너리 데이터의 값들에 기초하여 X개의 사용가능한 프로그램 레벨들로부터 선택되는 각각의 프로그램 레벨들로 워드라인의 메모리 셀들을 프로그래밍하는 단계를 포함할 수 있다. 비-바이너리 데이터를 인코딩하는 단계는 비-바이너리 저밀도 패리티 체크(LDPC) 코드를 생성하는 단계를 포함할 수 있고, 생성된 코드워드는 비-바이너리 데이터 및 비-바이너리 LDPC 코드를 포함할 수 있다.
본 방법은 비휘발성 메모리 디바이스의 워드라인으로부터 코드워드를 판독하는 단계, 코드워드를 디코딩하여 비-바이너리 데이터를 리트리브하는 단계, 및 비-바이너리 데이터를 바이너리 데이터로 다시 변환하는 단계를 추가로 포함할 수 있다.
대상 기술의 양태들에 따르면, 복수의 비휘발성 메모리 디바이스들 및 제어기를 포함하는 데이터 저장 시스템이 제공된다. 제어기는, 데이터 저장 시스템에 저장하기 위한 제1 바이너리 데이터를 수신하고, 제1 바이너리 데이터의 2진법 값들을 X진법 값들을 포함하는 제1 비-바이너리 데이터로 변환하도록 - X는 2보다 큰 정수임 - 구성될 수 있다. 제어기는, 제1 비-바이너리 데이터를 인코딩하여 제1 코드워드를 생성하고, 제1 코드워드를 복수의 비휘발성 메모리 디바이스들 중 제1 비휘발성 메모리 디바이스의 워드라인에 기입하도록 추가로 구성될 수 있다.
제어기는, 제1 비-바이너리 데이터의 값들에 기초하여 X개의 사용가능한 프로그램 레벨들로부터 선택되는 각각의 프로그램 레벨들로 워드라인의 메모리 셀들을 프로그래밍함으로써, 제1 코드워드를 제1 비휘발성 메모리 디바이스의 워드라인에 기입하도록 추가로 구성될 수 있다. 제어기는, 제1 비-바이너리 저밀도 패리티 체크(LDPC) 코드를 생성함으로써, 제1 비-바이너리 데이터를 인코딩하도록 추가로 구성될 수 있고, 생성된 제1 코드워드는 제1 비-바이너리 데이터 및 제1 LDPC 코드를 포함한다.
제어기는, 데이터 저장 시스템에 저장하기 위한 제2 바이너리 데이터를 수신하고, 제2 바이너리 데이터의 2진법 값들을 Y진법 값들을 포함하는 제2 비-바이너리 데이터로 변환하고 - Y는 2보다 큰 정수이고, X와는 상이함 -, 제2 비-바이너리 데이터를 인코딩하여 제2 코드워드를 생성하도록 추가로 구성될 수 있다. 제어기는 제2 코드워드를 복수의 비휘발성 메모리 디바이스들 중 제2 비휘발성 메모리 디바이스의 워드라인에 기입할 수 있다.
제어기는, 제2 비-바이너리 데이터의 값들에 기초하여 Y개의 사용가능한 프로그램 레벨들로부터 선택되는 각각의 프로그램 레벨들로 워드라인의 메모리 셀들을 프로그래밍함으로써, 제2 코드워드를 제2 비휘발성 메모리 디바이스의 워드라인에 기입하도록 추가로 구성될 수 있다.
제어기는, 제1 비휘발성 메모리 디바이스의 워드라인으로부터 제1 코드워드를 판독하고, 제1 코드워드를 디코딩하여 제1 비-바이너리 데이터를 리트리브하고, 제1 비-바이너리 데이터를 제1 바이너리 데이터로 다시 변환하도록 추가로 구성될 수 있다.
대상 기술의 양태들에 따르면, 프로세서 판독가능 매체가, 프로세서에 의해 실행될 때, 방법을 수행하는 명령어들로 인코딩된다. 본 방법은 비휘발성 메모리 디바이스를 비휘발성 메모리 디바이스의 특성에 기초하여 값 X와 연관시키는 단계 - X는 2보다 큰 정수임 -, 비휘발성 메모리 디바이스에 저장하기 위한 바이너리 데이터를 수신하는 단계, 바이너리 데이터의 2진법 값들을 X진법 값들을 포함하는 비-바이너리 데이터로 변환하는 단계, 비-바이너리 데이터를 인코딩하여 코드워드를 생성하는 단계, 및 코드워드를 비휘발성 메모리 디바이스의 워드라인에 기입하는 단계를 포함한다.
비휘발성 메모리 디바이스의 특성은 프로그램-소거 카운트를 포함할 수 있다. 비휘발성 메모리 디바이스의 특성은 또한 판독 에러 카운트를 포함할 수 있다.
비-바이너리 데이터를 인코딩하여 코드워드를 생성하는 단계는 비-바이너리 저밀도 패리티 체크(LDPC) 코드를 생성하는 단계를 포함할 수 있고, 생성된 코드워드는 비-바이너리 데이터 및 LDPC 코드를 포함한다. 코드워드를 비휘발성 메모리 디바이스의 워드라인에 기입하는 단계는, 비-바이너리 데이터의 값들에 기초하여 X개의 사용가능한 프로그램 레벨들로부터 선택되는 각각의 프로그램 레벨들로 워드라인의 메모리 셀들을 프로그래밍하는 단계를 포함할 수 있다.
본 방법은 비휘발성 메모리 디바이스의 워드라인으로부터 코드워드를 판독하는 단계, 코드워드를 디코딩하여 비-바이너리 데이터를 리트리브하는 단계, 및 비-바이너리 데이터를 바이너리 데이터로 다시 변환하는 단계를 추가로 포함할 수 있다.
대상 기술의 양태들에 따르면, 비휘발성 메모리 디바이스를 포함하는 데이터 저장 시스템이 제공된다. 데이터 저장 시스템은 비휘발성 메모리 디바이스에 저장하기 위한 바이너리 데이터를 수신하기 위한 수단, 및 바이너리 데이터의 2진법 값들을 X진법 값들을 포함하는 비-바이너리 데이터로 변환하기 위한 수단 - X는 2보다 큰 정수임 -을 추가로 포함한다. 데이터 저장 시스템은 비-바이너리 데이터를 인코딩하여 코드워드를 생성하기 위한 수단, 및 코드워드를 비휘발성 메모리 디바이스의 워드라인에 기입하기 위한 수단을 추가로 포함한다.
데이터 저장 시스템은 비휘발성 메모리 디바이스의 워드라인으로부터 코드워드를 판독하기 위한 수단, 코드워드를 디코딩하여 비-바이너리 데이터를 리트리브하기 위한 수단, 및 비-바이너리 데이터를 바이너리 데이터로 다시 변환하기 위한 수단을 추가로 포함할 수 있다.
예시적인 프로세스 및 관련된 특징들 및 애플리케이션들의 상술한 특징들 중 다수는 프로세서 판독가능 저장 매체(또한 컴퓨터-판독가능 매체라고도 함) 상에 기록되는 명령어들의 세트로서 특정되는 소프트웨어 또는 펌웨어 프로세스들로서 구현될 수 있다. 이들 명령어들이 하나 이상의 프로세싱 유닛(들)(예를 들어, 하나 이상의 프로세서들, 프로세서들의 코어들, 또는 다른 프로세싱 유닛들)에 의해 실행될 때, 프로세싱 유닛(들)은 명령어들에서 지시된 동작들을 수행하게 된다. 프로세서 판독가능 매체의 예들은 휘발성 메모리(120), 비휘발성 메모리(130)뿐만 아니라, 자기 매체, 광 매체 및 전자 매체와 같은 다른 형태들의 매체를 포함하지만, 이에 제한되지 않는다. 프로세서 판독가능 매체는 무선으로 또는 유선 접속들을 통해 전달되는 반송파들 및 전자 신호들을 포함하지 않는다.
"소프트웨어"라는 용어는, 적절한 경우, 메모리에 상주하는 펌웨어 또는 메모리에 저장된 애플리케이션들을 포함하는 것을 의미하며, 이는 프로세서에 의한 프로세싱을 위해 작업 메모리로 판독될 수 있다. 또한, 일부 구현들에서, 대상 개시내용의 다수의 소프트웨어 양태들은 대상 개시내용의 명료한 소프트웨어 양태들을 유지하면서 더 큰 프로그램의 하위 부분들로서 구현될 수 있다. 일부 구현들에서, 다수의 소프트웨어 양태들은 또한 개별 프로그램들로서 구현될 수 있다. 마지막으로, 본 명세서에 기술된 소프트웨어 양태를 함께 구현하는 개별 프로그램들의 임의의 조합은 대상 개시내용의 범위 내에 있다. 일부 구현들에서, 소프트웨어 프로그램들은, 하나 이상의 전자 시스템들 상에서 동작하도록 설치될 때, 소프트웨어 프로그램들의 동작들을 실행하고 수행하는 하나 이상의 특정 머신 구현들을 정의한다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트, 또는 코드라고도 함)은 컴파일되거나 또는 해석된 언어들, 선언적이거나 또는 절차적인 언어들을 포함하는 임의의 형태의 프로그래밍 언어로 기입될 수 있으며, 이것은 스탠드얼론 프로그램으로서, 또는 모듈, 컴포넌트, 서브 루틴, 객체, 또는 컴퓨팅 환경에서 사용하기에 적절한 다른 유닛으로서 포함되는 임의의 형태로 배치될 수 있다. 컴퓨터 프로그램은 파일 시스템의 파일에 대응할 수 있지만, 반드시 그럴 필요는 없다. 프로그램은, 당해의 프로그램에 전용되는 단일 파일에 또는 다수의 조정된 파일들(예를 들어, 하나 이상의 모듈들, 하위 프로그램들 또는 코드의 일부들을 저장하는 파일들)에 다른 프로그램들 또는 데이터(예를 들어, 마크 업 언어 문서에 저장된 하나 이상의 스크립트들)를 보유하는 파일의 일부로 저장될 수 있다.
본 명세서에 설명된 예시적인 블록들, 모듈들, 엘리먼트들, 컴포넌트들, 방법들 및 알고리즘들은 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이 둘의 조합들로서 구현될 수 있는 것으로 이해된다. 하드웨어 및 소프트웨어의 이러한 호환성을 설명하기 위해, 다양한 예시적인 블록들, 모듈들, 엘리먼트들, 컴포넌트들, 방법들 및 알고리즘들이 그들의 기능의 관점에서 일반적으로 상술되었다. 이러한 기능이 하드웨어로서 구현되는지 또는 소프트웨어로서 구현되는지 여부는 전체 시스템에 부과된 특정 애플리케이션 및 설계 제약사항들에 따라 달라진다. 통상의 기술자들은 각각의 특정 애플리케이션에 대해 다양한 방식들로 기술된 기능을 구현할 수 있다. 다양한 컴포넌트들 및 블록들은 모두 대상 개시내용의 범위를 벗어나지 않고 상이하게 배열될 수 있다(예를 들어, 상이한 순서로 배열되거나 또는 상이한 방식으로 분할됨).
개시된 프로세스들의 단계들의 특정 순서 또는 계층 구조는 일부 예시적인 접근법들의 예로서 제시되는 것으로 이해되어야 한다. 설계 선호도들 및/또는 다른 고려 사항들에 기초하여, 프로세스들의 단계들의 특정 순서 또는 계층 구조가 재배열될 수 있다는 것을 이해해야 한다. 예를 들어, 일부 구현들에서, 단계들 중 일부는 동시에 수행될 수 있다. 따라서, 첨부된 방법 청구항들은 다양한 단계들의 엘리먼트들을 샘플 순서대로 제시하며, 제시된 특정 순서 또는 계층 구조에 제한되는 것을 의미하지는 않는다.
이전의 설명은 본 기술분야의 통상의 기술자가 본 명세서에 설명된 다양한 양태들을 실시할 수 있도록 제공된다. 이전의 설명은 대상 개시내용의 다양한 예들을 제공하고, 대상 개시내용은 이들 예들에 제한되지 않는다. 이러한 양태들에 대한 다양한 변형들은 본 기술분야의 통상의 기술자에게 용이하게 명백할 것이며, 본 명세서에서 정의된 일반적인 원리들은 다른 양태들에 적용될 수 있다. 따라서, 청구 범위는 본 명세서에 나타낸 양태들로 제한되는 것으로 의도되지 않고, 언어 청구항들과 일치하는 전체 범위로 주어지며, 여기서 단수로 된 엘리먼트에 대한 참조는 "하나 및 오직 하나"라고 구체적으로 언급되지 않는 한, 그렇게 의미하는 것으로 의도되지 않으며, 오히려 "하나 이상"을 의미하는 것으로 의도된다. 구체적으로 다르게 언급하지 않는 한, "일부"라는 용어는 하나 이상을 지칭한다. 남성 대명사(예를 들어, his)는 여성 및 중성의 성(예를 들어, her 및 its)을 포함하고, 그 반대도 마찬가지이다. 표제들 및 부제들이 있다면, 이는 편의를 위해서만 사용되고, 대상 개시내용을 제한하지 않는다.
"-하도록 구성된", "-하도록 동작가능한" 및 "-하도록 프로그래밍된"이라는 술어 단어들은 대상의 임의의 특정한 유형의 또는 무형의 변경을 의미하지 않고, 오히려 상호교환적으로 사용되도록 의도된다. 예를 들어, 동작 또는 컴포넌트를 모니터링 및 제어하도록 구성된 프로세서는 또한 동작을 모니터링 및 제어하도록 프로그래밍된 프로세서 또는 동작을 모니터링 및 제어하도록 동작가능한 프로세서를 의미할 수 있다. 마찬가지로, 코드를 실행하도록 구성된 프로세서는 코드를 실행하도록 프로그래밍되거나 또는 코드를 실행하도록 동작가능한 프로세서로서 해석될 수 있다.
"-과 통신하는" 및 "연결된"이라는 문구들은 본 명세서에서 명명되거나 또는 명명되지 않은 하나 이상의 컴포넌트들(예를 들어, 메모리 카드 판독기)과 직접 통신하는 것 또는 이들과 간접 통신하는 것을 의미한다.
"양태"와 같은 문구는 그러한 양태가 대상 개시내용에 필수적이거나 또는 그러한 양태가 대상 개시내용의 모든 구성들에 적용된다는 것을 의미하지 않는다. 양태와 관련된 개시내용은 모든 구성들 또는 하나 이상의 구성들에 적용될 수 있다. 양태는 하나 이상의 예들을 제공할 수 있다. 양태와 같은 문구는 하나 이상의 양태들을 지칭할 수도 있고, 그 반대일 수도 있다. "구현"과 같은 문구는 그러한 구현이 대상 개시내용에 필수적이거나 또는 그러한 구현이 대상 개시내용의 모든 구성들에 적용된다는 것을 의미하지 않는다. 구현과 관련된 개시내용은 모든 양태들 또는 하나 이상의 양태들에 적용될 수 있다. 구현은 하나 이상의 예들을 제공할 수 있다. "구현"과 같은 문구는 하나 이상의 구현들을 지칭할 수도 있고, 그 반대일 수도 있다. "구성"과 같은 문구는 그러한 구성이 대상 개시내용에 필수적이거나 또는 그러한 구성이 대상 개시내용의 모든 구성들에 적용된다는 것을 의미하지 않는다. 구성과 관련된 개시내용은 모든 구성들 또는 하나 이상의 구성들에 적용될 수 있다. 구성은 하나 이상의 예들을 제공할 수 있다. "구성"과 같은 문구는 하나 이상의 구성들을 지칭할 수도 있고, 그 반대일 수도 있다.
"예시적인"이라는 단어는 "예 또는 예시로서 제공되는"을 의미하는 데 사용된다. 본 명세서에서 "예시적인" 것으로서 설명된 임의의 양태 또는 설계가 반드시 다른 양태들 또는 설계들보다 바람직하거나 유리한 것으로 해석될 필요는 없다.

Claims (20)

  1. 방법으로서,
    호스트로부터의 기입 요청으로부터 비휘발성 메모리 디바이스에 저장하기 위한 바이너리 데이터를 수신하는 단계;
    상기 기입 요청에 응답하여 상기 바이너리 데이터를 상기 비휘발성 메모리 디바이스에 기입하기 위한 비-바이너리 데이터로 변환하는 단계;
    상기 바이너리 데이터를 상기 비-바이너리 데이터로 변환한 후 코드워드를 생성하도록 비-바이너리 인코딩 방식을 이용하여 상기 변환된 비-바이너리 데이터를 인코딩하는 단계 - 상기 비-바이너리 데이터의 기수(number base)는 상기 비휘발성 메모리 디바이스가 프로그래밍할 수 있는 프로그램 레벨의 수에 기초하여 선택됨 -;
    상기 코드워드를 상기 비휘발성 메모리 디바이스의 워드라인에 기입하는 단계; 및
    그레이 코딩을 이용하지 않으면서 상기 비휘발성 메모리 디바이스의 상기 워드라인으로부터 상기 코드워드를 판독하는 단계
    를 포함하고,
    그레이 코딩을 이용하지 않으면서 상기 비휘발성 메모리 디바이스의 상기 워드라인으로부터 상기 코드워드를 판독하는 단계가 그레이 코딩의 이용으로부터 기인하는 셀-레벨 정보의 손실을 피하는 방법.
  2. 제1항에 있어서,
    상기 바이너리 데이터를 비-바이너리 데이터로 변환하는 단계는 상기 바이너리 데이터의 2진법(base-two) 값을 X진법(base-X) 값으로 변환하는 단계를 포함하고, X는 2보다 큰 정수인 방법.
  3. 제2항에 있어서,
    X는 2의 거듭제곱이 아닌(non-power-of-two) 정수인 방법.
  4. 제2항에 있어서,
    상기 코드워드를 상기 비휘발성 메모리 디바이스의 상기 워드라인에 기입하는 단계는 상기 비-바이너리 데이터의 값에 기초하여 X개의 사용가능한 프로그램 레벨로부터 선택된 각각의 프로그램 레벨로 상기 워드라인의 메모리 셀을 프로그래밍하는 단계를 포함하는 방법.
  5. 제1항에 있어서,
    상기 변환된 비-바이너리 데이터를 인코딩하는 단계는 비-바이너리 저밀도 패리티 체크(low-density parity-check)(LDPC) 코드를 생성하는 단계를 포함하고,
    상기 생성된 코드워드는 상기 비-바이너리 데이터 및 상기 비-바이너리 LDPC 코드를 포함하는 방법.
  6. 제1항에 있어서,
    상기 코드워드를 디코딩하여 상기 비-바이너리 데이터를 리트리브(retrieve)하는 단계; 및
    상기 비-바이너리 데이터를 상기 바이너리 데이터로 다시 변환하는 단계
    를 추가로 포함하는 방법.
  7. 데이터 저장 시스템으로서,
    복수의 비휘발성 메모리 디바이스; 및
    제어기
    를 포함하고,
    상기 제어기는,
    호스트로부터의 기입 요청으로부터 상기 데이터 저장 시스템에 저장하기 위한 제1 바이너리 데이터를 수신하고;
    상기 기입 요청에 응답하여 상기 복수의 비휘발성 메모리 디바이스 중 제1 비휘발성 메모리 디바이스에 기입하도록 상기 제1 바이너리 데이터의 2진법 값을 X진법 값을 포함하는 제1 비-바이너리 데이터로 변환하고 - X는 2보다 큰 정수임 -;
    상기 제1 바이너리 데이터를 상기 제1 비-바이너리 데이터로 변환한 후 제1 코드워드를 생성하도록 비-바이너리 인코딩 방식을 이용하여 상기 변환된 제1 비-바이너리 데이터를 인코딩하고 - 상기 제어기는 상기 복수의 비휘발성 메모리 디바이스 중 제1 비휘발성 메모리 디바이스가 프로그래밍할 수 있는 프로그램 레벨의 수에 기초하여 X를 선택하도록 구성됨 -;
    상기 제1 코드워드를 상기 복수의 비휘발성 메모리 디바이스 중 상기 제1 비휘발성 메모리 디바이스의 워드라인에 기입하고;
    그레이 코딩을 이용하지 않으면서 상기 복수의 비휘발성 메모리 디바이스 중 상기 제1 비휘발성 메모리 디바이스의 상기 워드라인으로부터 상기 제1 코드워드를 판독하도록
    구성되고,
    상기 제어기는 그레이 코딩의 이용으로부터 기인하는 셀-레벨 정보의 손실을 피하도록 구성되는 데이터 저장 시스템.
  8. 제7항에 있어서,
    상기 제어기는 상기 제1 비-바이너리 데이터의 값에 기초하여 X개의 사용가능한 프로그램 레벨로부터 선택된 각각의 프로그램 레벨로 상기 워드라인의 메모리 셀을 프로그래밍함으로써 상기 제1 코드워드를 상기 제1 비휘발성 메모리 디바이스의 상기 워드라인에 기입하도록 추가로 구성되는 데이터 저장 시스템.
  9. 제7항에 있어서,
    상기 제어기는 제1 비-바이너리 저밀도 패리티 체크(LDPC) 코드를 생성함으로써 상기 변환된 제1 비-바이너리 데이터를 인코딩하도록 추가로 구성되고,
    상기 생성된 제1 코드워드는 상기 제1 비-바이너리 데이터 및 상기 제1 비-바이너리 LDPC 코드를 포함하는 데이터 저장 시스템.
  10. 제7항에 있어서,
    상기 제어기는,
    상기 데이터 저장 시스템에 저장하기 위한 제2 바이너리 데이터를 수신하고,
    상기 제2 바이너리 데이터의 2진법 값을 Y진법 값을 포함하는 제2 비-바이너리 데이터로 변환하고 - Y는 2보다 큰 정수이고, X와는 상이함 -,
    제2 코드워드를 생성하도록 상기 제2 비-바이너리 데이터를 인코딩하고,
    상기 제2 코드워드를 상기 복수의 비휘발성 메모리 디바이스 중 제2 비휘발성 메모리 디바이스의 워드라인에 기입하도록
    추가로 구성되는 데이터 저장 시스템.
  11. 제10항에 있어서,
    상기 제어기는 상기 제2 비-바이너리 데이터의 값에 기초하여 Y개의 사용가능한 프로그램 레벨로부터 선택된 각각의 프로그램 레벨로 상기 워드라인의 메모리 셀을 프로그래밍함으로써 상기 제2 코드워드를 상기 제2 비휘발성 메모리 디바이스의 상기 워드라인에 기입하도록 추가로 구성되는 데이터 저장 시스템.
  12. 제7항에 있어서,
    상기 제어기는,
    상기 제1 코드워드를 디코딩하여 상기 제1 비-바이너리 데이터를 리트리브하고,
    상기 제1 비-바이너리 데이터를 상기 제1 바이너리 데이터로 다시 변환하도록
    추가로 구성되는 데이터 저장 시스템.
  13. 프로세서에 의해 실행될 때 방법을 수행하는 명령어로 인코딩된 프로세서 판독가능 매체로서,
    상기 방법은,
    비휘발성 메모리 디바이스를 상기 비휘발성 메모리 디바이스의 특성에 기초하여 값 X와 연관시키는 단계 - X는 2보다 큰 정수임 -;
    호스트로부터의 기입 요청으로부터 상기 비휘발성 메모리 디바이스에 저장하기 위한 바이너리 데이터를 수신하는 단계;
    상기 기입 요청에 응답하여 상기 바이너리 데이터의 2진법 값을 상기 비휘발성 메모리 디바이스에 기입하기 위한 X진법 값을 포함하는 비-바이너리 데이터로 변환하는 단계;
    상기 바이너리 데이터를 상기 비-바이너리 데이터로 변환한 후 코드워드를 생성하도록 비-바이너리 인코딩 방식을 이용하여 상기 변환된 비-바이너리 데이터를 인코딩하는 단계 - X는 상기 비휘발성 메모리 디바이스가 프로그래밍할 수 있는 프로그램 레벨의 수에 기초하여 선택됨 -;
    상기 코드워드를 상기 비휘발성 메모리 디바이스의 워드라인에 기입하는 단계; 및
    그레이 코딩을 이용하지 않으면서 상기 비휘발성 메모리 디바이스의 상기 워드라인으로부터 상기 코드워드를 판독하는 단계
    를 포함하고,
    그레이 코딩을 이용하지 않으면서 상기 비휘발성 메모리 디바이스의 상기 워드라인으로부터 상기 코드워드를 판독하는 단계가 그레이 코딩의 이용으로부터 기인하는 셀-레벨 정보의 손실을 피하는 프로세서 판독가능 매체.
  14. 제13항에 있어서,
    상기 비휘발성 메모리 디바이스의 특성은 프로그램 소거 카운트를 포함하는 프로세서 판독가능 매체.
  15. 제13항에 있어서,
    상기 비휘발성 메모리 디바이스의 특성은 판독 에러 카운트를 포함하는 프로세서 판독가능 매체.
  16. 제13항에 있어서,
    상기 코드워드를 생성하도록 상기 비-바이너리 데이터를 인코딩하는 단계는 비-바이너리 저밀도 패리티 체크(LDPC) 코드를 생성하는 단계를 포함하고, 상기 생성된 코드워드는 상기 비-바이너리 데이터 및 상기 비-바이너리 LDPC 코드를 포함하는 프로세서 판독가능 매체.
  17. 제13항에 있어서,
    상기 코드워드를 상기 비휘발성 메모리 디바이스의 상기 워드라인에 기입하는 단계는 상기 비-바이너리 데이터의 값에 기초하여 X개의 사용가능한 프로그램 레벨로부터 선택된 각각의 프로그램 레벨로 상기 워드라인의 메모리 셀을 프로그래밍하는 단계를 포함하는 프로세서 판독가능 매체.
  18. 제13항에 있어서,
    상기 방법은,
    상기 코드워드를 디코딩하여 상기 비-바이너리 데이터를 리트리브하는 단계; 및
    상기 비-바이너리 데이터를 상기 바이너리 데이터로 다시 변환하는 단계
    를 추가로 포함하는 프로세서 판독가능 매체.
  19. 데이터 저장 시스템으로서,
    비휘발성 메모리 디바이스;
    호스트로부터의 기입 요청으로부터 상기 비휘발성 메모리 디바이스에 저장하기 위한 바이너리 데이터를 수신하기 위한 수단;
    상기 기입 요청에 응답하여 상기 바이너리 데이터의 2진법 값을 X진법 값을 포함하는 비-바이너리 데이터로 변환하기 위한 수단 - X는 상기 비휘발성 메모리 디바이스에 기입하기 위한 2보다 큰 정수임 -;
    상기 바이너리 데이터를 상기 비-바이너리 데이터로 변환한 후 코드워드를 생성하도록 비-바이너리 인코딩 방식을 이용하여 상기 변환된 비-바이너리 데이터를 인코딩하기 위한 수단 - 상기 인코딩하기 위한 수단은 상기 비휘발성 메모리 디바이스가 프로그래밍할 수 있는 프로그램 레벨의 수에 기초하여 X를 선택하기 위한 수단을 포함함 -;
    상기 코드워드를 상기 비휘발성 메모리 디바이스의 워드라인에 기입하기 위한 수단; 및
    그레이 코딩을 이용하지 않으면서 상기 비휘발성 메모리 디바이스의 상기 워드라인으로부터 상기 코드워드를 판독하기 위한 수단
    을 포함하고,
    상기 코드워드를 판독하기 위한 수단이 그레이 코딩의 이용으로부터 기인하는 셀-레벨 정보의 손실을 피하기 위한 수단을 포함하는 데이터 저장 시스템.
  20. 제19항에 있어서,
    상기 코드워드를 디코딩하여 상기 비-바이너리 데이터를 리트리브하기 위한 수단; 및
    상기 비-바이너리 데이터를 상기 바이너리 데이터로 다시 변환하기 위한 수단
    을 추가로 포함하는 데이터 저장 시스템.
KR1020170094802A 2016-07-29 2017-07-26 비휘발성 메모리를 위한 비-바이너리 인코딩 KR102181177B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201662368953P 2016-07-29 2016-07-29
US62/368,953 2016-07-29

Publications (2)

Publication Number Publication Date
KR20180013759A KR20180013759A (ko) 2018-02-07
KR102181177B1 true KR102181177B1 (ko) 2020-11-20

Family

ID=60951070

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170094802A KR102181177B1 (ko) 2016-07-29 2017-07-26 비휘발성 메모리를 위한 비-바이너리 인코딩

Country Status (4)

Country Link
US (3) US10530391B2 (ko)
KR (1) KR102181177B1 (ko)
CN (1) CN107665723B (ko)
DE (1) DE102017117066A1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102181177B1 (ko) * 2016-07-29 2020-11-20 웨스턴 디지털 테크놀로지스, 인코포레이티드 비휘발성 메모리를 위한 비-바이너리 인코딩
US10636495B2 (en) * 2018-06-12 2020-04-28 Western Digital Technologies, Inc. Adjustable read retry order based on decoding success trend
CN111902804B (zh) 2018-06-25 2024-03-01 阿里巴巴集团控股有限公司 用于管理存储设备的资源并量化i/o请求成本的系统和方法
US20200127685A1 (en) * 2018-10-19 2020-04-23 Nyquist Semiconductor Limited Systems and methods for a hybrid non-volatile storage system
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
CN112216334A (zh) * 2019-07-09 2021-01-12 本征信息技术(上海)有限公司 一种操作多状态存储器设备的方法和装置
US11617282B2 (en) 2019-10-01 2023-03-28 Alibaba Group Holding Limited System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers
CN110781013B (zh) * 2019-10-25 2022-11-18 湖南水羊科技有限公司 一种灰度发布方法、装置、设备及介质
KR20210082676A (ko) 2019-12-26 2021-07-06 삼성전자주식회사 셀 단위로 액세스 가능한 스토리지 장치 및 그 동작방법
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
US11476874B1 (en) * 2021-05-14 2022-10-18 Alibaba Singapore Holding Private Limited Method and system for facilitating a storage server with hybrid memory for journaling and data storage

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080239830A1 (en) 2007-03-30 2008-10-02 Samsung Electronics Co., Ltd. Methods of Operating Memory Devices Including Discharge of Source/Drain Regions and Related Electronic Devices
US20130145235A1 (en) 2011-01-04 2013-06-06 Lsi Corporation Detection and decoding in flash memories with selective binary and non-binary decoding
US20140269093A1 (en) 2013-03-14 2014-09-18 Kabushiki Kaisha Toshiba Semiconductor memory device
US20160049192A1 (en) 2014-08-17 2016-02-18 Peter Wung Lee Vsl-based vt-compensation and analog program scheme for nand array without csl
US9337864B1 (en) 2014-01-29 2016-05-10 Western Digital Technologies, Inc. Non-binary LDPC decoder using binary subgroup processing

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7293149B2 (en) * 2003-05-30 2007-11-06 Sun Microsystems Inc. Method and apparatus for determining a status of an asynchronous memory
JP4177824B2 (ja) * 2005-03-16 2008-11-05 株式会社東芝 符号化方法、復号化方法および符号化システム
KR101047577B1 (ko) * 2006-12-29 2011-07-08 샌디스크 코포레이션 서로 다른 사전충전 인에이블 전압들을 사용함으로써 프로그램 디스터브가 감소된 비휘발성 메모리 프로그래밍
US8938655B2 (en) * 2007-12-20 2015-01-20 Spansion Llc Extending flash memory data retension via rewrite refresh
US8111548B2 (en) * 2008-07-21 2012-02-07 Sandisk Technologies Inc. Programming non-volatile storage using binary and multi-state programming processes
US7812665B2 (en) * 2009-02-23 2010-10-12 Number 14 B.V. Amplifiers with input offset trim and methods
SG10201700467UA (en) * 2010-02-07 2017-02-27 Zeno Semiconductor Inc Semiconductor memory device having electrically floating body transistor, and having both volatile and non-volatile functionality and method
US8924812B2 (en) 2010-04-08 2014-12-30 Marvell World Trade Ltd. Non-binary LDPC code decoder
US8656263B2 (en) 2010-05-28 2014-02-18 Stec, Inc. Trellis-coded modulation in a multi-level cell flash memory device
US8644067B2 (en) 2011-11-30 2014-02-04 Sandisk Technologies Inc. Systems and methods of decoding data using soft bits at a non-binary decoder that uses probabilistic decoding
US8954820B2 (en) 2012-02-10 2015-02-10 Stec, Inc. Reduced complexity non-binary LDPC decoding algorithm
KR20140114516A (ko) * 2013-03-15 2014-09-29 삼성전자주식회사 메모리 컨트롤러 및 이의 동작 방법
US9047211B2 (en) * 2013-03-15 2015-06-02 SanDisk Technologies, Inc. Managing data reliability
CN104518801A (zh) 2013-09-29 2015-04-15 Lsi公司 非二进制的分层低密度奇偶校验解码器
US9748973B2 (en) 2014-04-22 2017-08-29 Sandisk Technologies Llc Interleaved layered decoder for low-density parity check codes
US9503125B2 (en) * 2014-05-08 2016-11-22 Sandisk Technologies Llc Modified trellis-based min-max decoder for non-binary low-density parity-check error-correcting codes
KR102181177B1 (ko) * 2016-07-29 2020-11-20 웨스턴 디지털 테크놀로지스, 인코포레이티드 비휘발성 메모리를 위한 비-바이너리 인코딩
US20180351577A1 (en) * 2017-05-30 2018-12-06 Western Digital Technologies, Inc. Iteration-adaptive decoding for non-binary ldpc codes

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080239830A1 (en) 2007-03-30 2008-10-02 Samsung Electronics Co., Ltd. Methods of Operating Memory Devices Including Discharge of Source/Drain Regions and Related Electronic Devices
US20130145235A1 (en) 2011-01-04 2013-06-06 Lsi Corporation Detection and decoding in flash memories with selective binary and non-binary decoding
US20140269093A1 (en) 2013-03-14 2014-09-18 Kabushiki Kaisha Toshiba Semiconductor memory device
US9337864B1 (en) 2014-01-29 2016-05-10 Western Digital Technologies, Inc. Non-binary LDPC decoder using binary subgroup processing
US20160049192A1 (en) 2014-08-17 2016-02-18 Peter Wung Lee Vsl-based vt-compensation and analog program scheme for nand array without csl

Also Published As

Publication number Publication date
US10965321B2 (en) 2021-03-30
US20200115555A1 (en) 2020-04-16
DE102017117066A1 (de) 2018-02-01
US20180034479A1 (en) 2018-02-01
US10530391B2 (en) 2020-01-07
CN107665723B (zh) 2021-01-26
US20210175903A1 (en) 2021-06-10
US11545999B2 (en) 2023-01-03
CN107665723A (zh) 2018-02-06
KR20180013759A (ko) 2018-02-07

Similar Documents

Publication Publication Date Title
KR102181177B1 (ko) 비휘발성 메모리를 위한 비-바이너리 인코딩
US10437668B2 (en) Memory controller, memory system, and method for controlling memory system
CN111326199B (zh) 用于存储器设备的多态编程
US9136872B2 (en) Memory, memory system, and error checking and correcting method for memory
CN110047544B (zh) 用于包括qlc单元的存储器装置的编码方法及系统
US11720493B2 (en) Cache management based on memory device over-provisioning
CN112241333B (zh) 用于存储器系统的编码器及其方法
US20240086282A1 (en) Multi-layer code rate architecture for copyback between partitions with different code rates
CN115938446A (zh) 存储器装置、其操作方法以及存储器系统
WO2023014482A1 (en) Managing defective bitline locations in a bit flipping decoder
CN113628655B (zh) 用以存取闪存模块的方法、闪存控制器与电子装置
US10599581B2 (en) Data storage device and operating method thereof
CN110569143A (zh) 用于存储器系统的解码器及其方法
KR20220077041A (ko) 메모리 시스템 내 저장된 데이터를 유지하는 장치 및 방법
CN112840311B (zh) 包含与控制器分离的封装内定序器的存储器子系统
US20230396269A1 (en) Scaled bit flip thresholds across columns for irregular low density parity check decoding
US10095424B2 (en) Apparatus and method for programming non-volatile memory using a multi-cell storage cell group
CN111796774B (zh) 存储器控制方法、存储器存储装置及存储器控制器
CN115910181A (zh) 基于预处理条件生成测试多核ssd固件的系统和方法
CN113342568A (zh) 阈值数目个迭代之后利用可调整参数的迭代性错误校正
CN112216328A (zh) 具有低复杂度解码的存储器系统及其操作方法
US20240168881A1 (en) Storage device and data processing method
CN116343875A (zh) 管理存储器子系统的自适应数据路径选择阈值
CN112599180A (zh) 用于存储器系统的解码器及其方法
CN115708164A (zh) 一种测试预处理生成的系统及方法

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