DE102017117066A1 - Nichtbinäre codierung für einen nichtflüchtigen speicher - Google Patents

Nichtbinäre codierung für einen nichtflüchtigen speicher Download PDF

Info

Publication number
DE102017117066A1
DE102017117066A1 DE102017117066.9A DE102017117066A DE102017117066A1 DE 102017117066 A1 DE102017117066 A1 DE 102017117066A1 DE 102017117066 A DE102017117066 A DE 102017117066A DE 102017117066 A1 DE102017117066 A1 DE 102017117066A1
Authority
DE
Germany
Prior art keywords
binary data
codeword
data
nonvolatile memory
memory device
Prior art date
Legal status (The legal status 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 status listed.)
Withdrawn
Application number
DE102017117066.9A
Other languages
English (en)
Inventor
Richard Leo Galbraith
Jonas Andrew Goode
Niranjay RAVINDRAN
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
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 Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE102017117066A1 publication Critical patent/DE102017117066A1/de
Withdrawn legal-status Critical Current

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

Ein Datenspeicherungssystem und ein Verfahren sind zum Speichern von Daten in nichtflüchtigen Speichereinrichtungen bereitgestellt. Binäre Daten werden zur Speicherung in einer nichtflüchtigen Speichereinrichtung empfangen. Die binären Daten werden in nichtbinäre Daten, die Werte mit Basis X umfassen, wobei X eine ganze Zahl größer als zwei ist, umgewandelt. Die nichtbinären Daten werden codiert, um ein Codewort zu erzeugen, und das Codewort wird in eine Wortleitung der nichtflüchtigen Speichereinrichtung geschrieben.

Description

  • Diese Anmeldung beansprucht den Nutzen unter 35 U.S.C. § 119(e) der vorläufigen US-Anmeldung mit der Nr. 62/368,953, mit dem Titel NON-BINARY LDPC FOR 3D-NAND AND OTHER NON-VOLATILE STORAGE und eingereicht am 29. Juli 2016, die hiermit hierin unter Bezugnahme aufgenommen wird.
  • HINTERGRUND
  • Daten werden in einem Flash-Speicher gespeichert, indem Flash-Speicherzellen zu Programmpegeln, die gewünschten Datenwerten entsprechen, programmiert werden. Durch die Verbesserung der Flash-Speichertechnologie ist die Anzahl von Programmpegeln, die zum Programmieren in individuellen Flash-Speicherzellen zur Verfügung stehen, von den zwei Programmpegeln, die in einem zum Speichern von einem Bit von Daten verwendeten Einzelpegelzellen(SLC)-NAND-Flash-Speicher zur Verfügung stehen, gestiegen. Beispielsweise nutzt ein Mehrpegelzellen(MLC)-NAND-Flash-Speicher vier Programmpegel zum Speichern von zwei Bit von Daten in jeder Flash-Speicherzelle, ein Dreifachpegelzellen(TLC)-NAND-Flash-Speicher verwendet acht Programmpegel zum Speichern von drei Bit von Daten in jeder Flash-Speicherzelle und ein Vierfachpegelzellen(QLC)-NAND-Flash-Speicher verwendet sechzehn Programmpegel zum Speichern von vier Bit von Daten in jeder Flash-Speicherzelle. Da neuere Technologien wie etwa 3D-NAND-Flash-Speicher eine noch höhere Anzahl von verfügbaren Programmpegeln bereitstellen, beeinträchtigt die binäre Art, wie Daten gegenwärtig in einen Flash-Speicher geschrieben werden und aus diesem gelesen werden, die Leistung des Flash-Speichers.
  • KURZDARSTELLUNG
  • Gemäß Aspekten der vorliegenden Technologie ist ein Verfahren bereitgestellt, das Empfangen von binären Daten zur Speicherung in einer nichtflüchtigen Speichereinrichtung und Umwandeln der binären Daten in nichtbinäre Daten beinhaltet. Das Verfahren beinhaltet ferner Codieren der nichtbinären Daten, um ein Codewort zu erzeugen, und Schreiben des Codewortes in eine Wortleitung der nichtflüchtigen Speichereinrichtung.
  • Gemäß Aspekten der vorliegenden Technologie ist ein Datenspeicherungssystem bereitgestellt. Das Datenspeicherungssystem beinhaltet mehrere nichtflüchtige Speichereinrichtungen und eine Steuerung. Die Steuerung ist zum Empfangen von ersten binären Daten zur Speicherung im Datenspeicherungssystem und zum Umwandeln von Werten mit Basis zwei der ersten binären Daten in erste nichtbinäre Daten, die Werte mit Basis X umfassen, wobei X eine ganze Zahl größer als zwei ist, konfiguriert. Die Steuerung ist ferner zum Codieren der ersten nichtbinären Daten, um ein erstes Codewort zu erzeugen, und zum Schreiben des ersten Codewortes in eine Wortleitung einer ersten nichtflüchtigen Speichereinrichtung der mehreren nichtflüchtigen Speichereinrichtungen konfiguriert.
  • Gemäß Aspekten der vorliegenden Technologie ist ein prozessorlesbares Medium, das mit Anweisungen codiert ist, bereitgestellt, die, wenn sie durch einen Prozessor ausgeführt werden, ein Verfahren durchführen. Das Verfahren beinhaltet Assoziieren einer nichtflüchtigen Speichereinrichtung mit einem Wert X basierend auf einer Eigenschaft der nichtflüchtigen Speichereinrichtung, wobei X eine ganze Zahl größer als zwei ist. Das Verfahren beinhaltet ferner Empfangen von binären Daten zur Speicherung in der nichtflüchtigen Speichereinrichtung und Umwandeln von Werten mit Basis zwei der binären Daten in nichtbinäre Daten, die Werte mit Basis X umfassen. Das Verfahren beinhaltet ferner Codieren der nichtbinären Daten, um ein Codewort zu erzeugen, und Schreiben des Codewortes in eine Wortleitung der nichtflüchtigen Speichereinrichtung.
  • Gemäß Aspekten der vorliegenden Technologie ist ein Datenspeicherungssystem bereitgestellt, das eine nichtflüchtige Speichereinrichtung beinhaltet. Das Datenspeicherungssystem beinhaltet ferner Mittel zum Empfangen von binären Daten zur Speicherung in der nichtflüchtigen Speichereinrichtung und Mittel zum Umwandeln von Werten mit Basis zwei der binären Daten in nichtbinäre Daten, die Werte mit Basis X umfassen, wobei X eine ganze Zahl größer als zwei ist. Das Datenspeicherungssystem beinhaltet ferner Mittel zum Codieren der nichtbinären Daten, um ein Codewort zu erzeugen, und Mittel zum Schreiben des Codewortes in eine Wortleitung der nichtflüchtigen Speichereinrichtung.
  • Es versteht sich, dass andere Konfigurationen der vorliegenden Technologie Fachleuten aus der folgenden ausführlichen Beschreibung ersichtlich werden, wobei verschiedene Konfigurationen der vorliegenden Technologie zur Veranschaulichung dargestellt und beschrieben sind. Wie erkannt werden wird, ist die vorliegende Technologie zu anderen und unterschiedlichen Konfigurationen imstande und ihre mehreren Einzelheiten sind zu einer Modifikation in verschiedenen anderen Hinsichten imstande, ohne jeweils vom Schutzumfang der vorliegenden Technologie abzuweichen. Dementsprechend soll in Betracht gezogen werden, dass die Zeichnungen und die ausführliche Beschreibung veranschaulichend und nicht einschränkend sind.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Blockdiagramm, das Komponenten eines Datenspeicherungssystems 100 gemäß Aspekten der vorliegenden Technologie veranschaulicht.
  • 2 ist ein Blockdiagramm, das Komponenten einer Steuerung gemäß Aspekten der vorliegenden Technologie veranschaulicht.
  • 3 ist ein Diagramm, das den Fluss von Daten, die in einen nichtflüchtigen Speicher geschrieben und aus diesem gelesen werden, gemäß Aspekten der vorliegenden Technologie veranschaulicht.
  • 4 ist eine Tabelle, die entsprechende Werte für die Anzahl von Programmpegeln pro Speicherzelle, die Anzahl von codierten Bits pro Speicherzelle und die Anzahl von 1-kB-, 2-kB- und 4-kB-Codewörtern, die in einer Wortleitung mit 16-kB-Speicherzellen gespeichert werden können, auflistet.
  • 5 ist eine graphische Darstellung verschiedener Werte von X, die für ein Flash-Speicher-Die mit verschiedenen Altern und Qualitätsstufen ausgewählt werden.
  • 6 ist ein Flussdiagramm, das einen Prozess zum Schreiben von Daten in eine Wortleitung gemäß Aspekten der vorliegenden Technologie abbildet.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Es ist beabsichtigt, dass die im Folgenden dargelegte ausführliche Beschreibung eine Beschreibung verschiedener Konfigurationen der vorliegenden Technologie ist, und es ist nicht beabsichtigt, dass sie die einzigen Konfigurationen, in denen die vorliegende Technologie realisiert werden kann, repräsentiert. Die angehängten Zeichnungen sind hierin aufgenommen und bilden ein Teil der ausführlichen Beschreibung. Die ausführliche Beschreibung beinhaltet spezifische Einzelheiten zum Zweck der Bereitstellung eines umfassenden Verständnisses der vorliegenden Technologie. Die vorliegende Technologie kann jedoch ohne diese spezifischen Einzelheiten realisiert werden. In manchen Fällen sind Strukturen und Komponenten in Blockdiagrammform dargestellt, um ein Verdunkeln der Konzepte der vorliegenden Technologie zu vermeiden. Ähnliche Komponenten sind zum leichten Verständnis mit identischen Elementnummern beschriftet.
  • Die vorliegende Technologie entfernt sich von den binären Einschränkungen von Flash-Speichersystemen, die dazu konfiguriert sind, eine ganzzahlige Anzahl von Binärbits pro Flash-Speicherzelle zu speichern. Derartige Flash-Speichersysteme sind darauf eingeschränkt, eine Anzahl von Programmierpegeln zu verwenden, die gleich einer Potenz von zwei (2n) sind. Wie zum Beispiel oben angemerkt wurde, verwendet ein SLC-NAND-Flash-Speicher zwei Programmierpegel zum Speichern eines einzelnen Bit, ein MLC-NAND-Flash-Speicher verwendet vier Programmierpegel zum Speichern von zwei Bit und ein TLC-NAND-Flash-Speicher verwendet acht Programmierpegel zum Speichern von drei Bit. Diese Arten von Flash-Speicher können Modi repräsentieren, in denen Flash-Speicher-Dies basierend auf Charakteristiken der Flash-Speicher-Dies betrieben werden. Beispielsweise können neuere Flash-Speicher-Dies oder Flash-Speicher-Dies mit höherer Qualität in der Lage sein, eine größere Anzahl von Programmpegeln zum Speichern von Daten als die Anzahl von Programmpegeln, die in älteren Flash-Speicher-Dies oder in Flash-Speicher-Dies mit niedrigerer Qualität zur Verfügung stehen, akkurat zu programmieren und zu lesen. Die binären Einschränkungen dieser Betriebsmodi zwingen die Flash-Speichersysteme, zwei Programmpegel, vier Programmpegel, acht Programmpegel, sechzehn Programmpegel usw. zu verwenden. Die binären Einschränkungen lassen potentiell jedoch die Kapazität und Leistung von Flash-Speicher-Dies, die in der Lage sind, verschiedene Anzahlen von Programmpegeln zu nutzen, als unerreichbar.
  • Die vorliegende Technologie erhöht die Flexibilität, mit der Flash-Speicher-Dies verwendet werden können, indem binäre Daten in nichtbinäre Daten umgewandelt werden und die nichtbinären Daten unter Verwendung eines nichtbinären Codierungsschemas, wie etwa einer nichtbinären LDPC(Low-Density Parity-Check)-Codierung, codiert werden, bevor die Daten in einen Flash-Speicher-Die geschrieben werden. Die Zahlenbasis der nichtbinären Daten und der nichtbinären Codierung kann basierend auf der Anzahl von Programmpegeln, die der Flash-Speicher-Die in der Lage ist, zu programmieren und mit einer gewünschten Fehlerrate zu lesen, ausgewählt werden. Eine Prüfung oder Simulation kann zum Beispiel bestimmen, dass ein Flash-Speicher-Die in der Lage ist, sieben Programmpegel zum Speichern von Daten zu verwenden. Bei diesem Beispiel werden die Werte mit Basis zwei der binären Daten, die zur Speicherung designiert sind, in Werte mit Basis sieben umgewandelt. Die umgewandelten Werte mit Basis sieben können dann unter Verwendung einer nichtbinären LDPC, bei der die von Null verschiedenen Elemente der Codierungsmatrix mit Elementen eines Galois-Felds GF(7) aufgefüllt werden, in ein Codewort codiert werden. Sobald es codiert ist, kann das Codewort in eine Wortleitung im Flash-Speicher-Die geschrieben werden. Jeder der sieben Programmpegel entspricht einem jeweiligen einzigartigen Symbol/einer jeweiligen einzigartigen Ziffer in der Nummerierung mit Basis sieben (z.B. 1, 2, 3, 4, 5, 6, 7), so dass eine Speicherzelle einen Datenwert, der einem bestimmten Symbol/einer bestimmten Ziffer entspricht, speichert, indem die Speicherzelle zum Programmpegel, der dem bestimmten Symbol/der bestimmten Ziffer entspricht, programmiert wird. Beim Lesen des Codewortes aus der Wortleitung wird das Codewort unter Verwendung der nichtbinären LDPC decodiert, bei der die von Null verschiedenen Elemente der Decodierungsmatrix mit Elementen des Galois-Felds GF(7) aufgefüllt werden. Im Gegensatz zu den binären Systemen eines MLC-, TLC-, QLC-Flash-Speichers usw., nutzt die vorliegende Technologie keine Gray-Codierung, um Daten aus Wortleitungen zu lesen. Die decodierten nichtbinären Daten werden dann zurück in binäre Daten umgewandelt. Diese Vorgänge werden im Folgenden ausführlicher beschrieben.
  • 1 ist ein Blockdiagramm, das Komponenten eines Datenspeicherungssystems 100 gemäß Aspekten der vorliegenden Technologie veranschaulicht. Wie in 1 abgebildet, beinhaltet ein Datenspeicherungssystem 100 eine Steuerung 110, einen flüchtigen Speicher 120, nichtflüchtige Speichereinrichtungen 130 und eine Host-Schnittstelle 140. Die Steuerung 110 ist zum Verarbeiten von Anfragen, die von einem Host-System 150 über die Host-Schnittstelle 140 empfangen werden, konfiguriert, um auf Daten in den nichtflüchtigen Speichereinrichtungen 130 zuzugreifen. Die vom Host-System 150 empfangenen Datenzugriffsanfragen können Schreibanfragen zum Speichern von Host-Daten im nichtflüchtigen Speicher 130, Leseanfragen zum Abrufen von Host-Daten, die in den nichtflüchtigen Speichereinrichtungen 130 gespeichert sind, und Löschanfragen zum Löschen von Host-Daten, die in den nichtflüchtigen Speichereinrichtungen 130 gespeichert sind, beinhalten. Andere Arten von Anfragen, wie etwa Statusanfragen oder Einrichtungsverwaltungsanfragen, können vom Host-System 150 empfangen und durch die Steuerung 110 verarbeitet werden.
  • Die Host-Schnittstelle 140 ist dazu konfiguriert, das Host-System 150 mit dem Datenspeicherungssystem 100 zu koppeln. Die Host-Schnittstelle 140 kann elektrische und physische Verbindungen beinhalten, um das Host-System 150 funktionsfähig mit der Steuerung 110 zu koppeln. Die Host-Schnittstelle 140 ist dazu konfiguriert, Daten, Adressen und Steuersignale über die elektrischen und physischen Verbindungen zwischen dem Host-System 150 und der Steuerung 110 zu kommunizieren. Die Steuerung 110 ist zum Speichern von Host-Daten, die vom Host-System 150 empfangen werden, in die nichtflüchtigen Speichereinrichtungen 130 als Reaktion auf eine Schreibanfrage, die vom Host-System 150 empfangen wird, und zum Lesen von Host-Daten, die in den nichtflüchtigen Speichereinrichtungen 130 gespeichert sind, und zum Übertragen der gelesenen Host-Daten über die Host-Schnittstelle 140 zum Host-System 150 als Reaktion auf eine Leseanfrage, die vom Host-System 150 empfangen wird, konfiguriert.
  • Die Host-Schnittstelle 140 kann Standardschnittstellen implementieren, einschließlich unter anderem SATA (Serial Advanced Technology Attachment), ATA (Advanced Technology Attachment), SCSI (Small Computer System Interface), PCI-X (PCI-extended), Fibre Channel, SAS (Serial Attached SCSI), SD (Secure Digital), EMMC (Embedded Multi-Media Card), UFS (Universal Flash Storage) und PCIe (Peripheral Component Interconnect Express). Die vorliegende Technologie ist jedoch nicht auf die Verwendung von Standardschnittstellen eingeschränkt und kann benutzerdefinierte oder proprietäre Schnittstellen für Kommunikationen mit dem Host-System 150 nutzen.
  • Das Host-System 150 repräsentiert eine beliebige Einrichtung, die dazu konfiguriert ist, mit dem Datenspeicherungssystem 100 über die Host-Schnittstelle 140 gekoppelt zu werden und mit diesem zu kommunizieren, um Daten im Datenspeicherungssystem 100 zu speichern und aus diesem abzurufen. Das Host-System 150 kann eine Datenverarbeitungseinrichtung sein, wie etwa ein Personal Computer, ein Server, eine Arbeitsstation, ein Laptop-Computer, ein Smartphone und dergleichen. Alternativ dazu kann das Host-System 150 eine elektronische Einrichtung sein, wie etwa eine Digitalkamera, ein digitaler Audio-Player, ein digitaler Videorecorder und dergleichen.
  • Die Steuerung 110 ist zum Überwachen und Steuern des Betriebs von Komponenten des Datenspeicherungssystems 100 als Reaktion auf Anfragen, die vom Host-System 150 empfangen werden, und während der Ausführung von internen Wartungsoperationen konfiguriert. Die Steuerung 110 kann einen Mehrkernprozessor, einen Allzweck-Mikroprozessor, einen Mikrocontroller, einen Digitalsignalprozessor (DSP), eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA), eine programmierbare Logikeinrichtung (PLD), eine Zustandsmaschine, gattergesteuerte Logik, diskrete Hardwarekomponenten oder eine Kombination der Vorangehenden beinhalten. Bei manchen Aspekten kann bzw. können eine oder mehrere Komponenten der Steuerung 100 in einen einzelnen Chip oder ein einzelnes Modul integriert sein oder können in zwei oder mehr diskrete Chips oder Module implementiert werden.
  • Der flüchtige Speicher 120 repräsentiert einen Speicher, der durch die Steuerung 110 verwendet wird, um Daten und Informationen, die zum Verwalten des Datenspeicherungssystems 100 verwendet werden, temporär zu speichern. Die Steuerung 110 kann zum Beispiel den flüchtigen Speicher 120 als Puffer für Host-Daten, die darauf warten, in die nichtflüchtigen Speichereinrichtungen 130 geschrieben zu werden, oder Host-Daten, die aus den nichtflüchtigen Speichereinrichtungen 130 gelesen werden und darauf warten, zum Host-System 150 übertragen zu werden oder zu den nichtflüchtigen Speichereinrichtungen 130 zurückgeschrieben zu werden, verwenden. Die Steuerung 110 kann verschiedene Arten von Systemdaten, die bei der Verwaltung des Datenspeicherungssystems 100 verwendet werden, im flüchtigen Speicher 120 speichern. Die Systemdaten können Daten zum Verfolgen der Codierungsarten, die verwendet werden, wenn Daten in verschiedenen Einrichtungen in den nichtflüchtigen Speichereinrichtungen 130 gespeichert werden, beinhalten. Die Systemdaten können auch Tabellen, die logische, durch das Host-System 150 referenzierte Adressen auf physische Adressen der nichtflüchtigen Speichereinrichtungen 130 abbilden, Programmier-/Lösch(P/E)-Zyklus-Zählungen, Fehlerstatistiken, gültige/ungültige Datenzählungen usw. beinhalten. Die Steuerung 110 kann einen Teil oder alle der oben beschriebenen Daten und Informationen in den nichtflüchtigen Speichereinrichtungen 130 oder einer anderen Form eines nicht dargestellten, nichtflüchtigen Speichers speichern, um die Daten und Informationen zu bewahren, wenn das Datenspeicherungssystem 100 abgeschaltet wird oder anderweitig Leistung verliert. Die Steuerung 110 kann periodisch Kopien der Daten und Informationen in den nichtflüchtigen Speichereinrichtungen 130 speichern oder kann auf ein Herunterfahren oder ein Leistungsverlustereignis warten, um die Daten und Informationen in den nichtflüchtigen Speichereinrichtungen 130 zu sichern.
  • Der flüchtige Speicher 120 kann ein Direktzugriffsspeicher (RAM) sein, wie etwa ein statischer RAM (SRAM) oder ein dynamischer RAM (DRAM). Die vorliegende Technologie ist jedoch nicht auf irgendeine bestimmte Art von RAM eingeschränkt. Zusätzlich dazu kann der flüchtige Speicher 120 unter Verwendung eines einzelnen RAM-Moduls oder mehrerer RAM-Module implementiert werden. Obwohl der flüchtige Speicher 120 so beschrieben wird, dass er distinkt von der Steuerung 110 ist, können Teile des flüchtigen Speichers 120 bzw. kann der gesamte flüchtige Speicher 120 in die Steuerung 110 integriert sein.
  • Wie in 1 abgebildet, sind die mehreren nichtflüchtigen Speichereinrichtungen 130 in mehreren Kanälen angeordnet. 1 veranschaulicht zum Beispiel, dass jeder von N Kanälen eine nichtflüchtige Speichereinrichtung 130 aufweist. Jede der nichtflüchtigen Speichereinrichtungen 130 kann einen einzelnen Die oder mehrere Dies beinhalten. Jeder Die beinhaltet nichtflüchtige Speicherzellen, wie etwa NAND-Flash-Speicherzellen oder 3D-NAND-Flash-Speicherzellen. Jede der nichtflüchtigen Speichereinrichtungen 130 kann in jeweiligen Chips oder Paketen implementiert werden. Obwohl abgebildet ist, dass jeder Kanal eine einzelne nichtflüchtige Speichereinrichtung 130 aufweist, kann die vorliegende Technologie Implementierungen beinhalten, bei denen jeder Kanal zwei oder mehr nichtflüchtige Speichereinrichtungen 130 beinhaltet.
  • Die Flash-Speicherzellen eines Die können in physischen Blöcken angeordnet sein, wobei jeder Block mehrere Wortleitungen enthält. Jede Wortleitung beinhaltet eine Anzahl von nichtflüchtigen Speicherzellen (z.B. 1 kB, 2 kB, 4 kB, 16 kB usw.). Die vorliegende Technologie ist nicht auf irgendeine bestimmte Anzahl von Wortleitungen in jedem physischen Block eingeschränkt. Jeder Block kann zum Beispiel 8 Wortleitungen, 16 Wortleitungen, 32 Wortleitungen usw. enthalten. Des Weiteren ist die Anzahl von physischen Blöcken, die in jedem Flash-Speicher-Die enthalten sind, nicht auf irgendeine bestimmte Anzahl eingeschränkt. In einem NAND-Flash-Speicher repräsentiert die Seite einer Wortleitung oder die Wortleitung insgesamt die kleinste Einheit, die zum Schreiben von Daten in den Flash-Speicher-Die oder zum Lesen von Daten aus dem Flash-Speicher-Die verfügbar ist. Physische Blöcke repräsentieren die kleinste Einheit, die zum Löschen von Daten im Flash-Speicher-Die verfügbar ist.
  • Die Steuerung 110 ist zum Kommunizieren von Befehlen, Steuerinformationen, Adressen, Daten usw. mit dem Flash-Speicher-Die über die jeweiligen Flash-Speicherkanäle 0–N konfiguriert. Jeder Kanal kann einen oder mehrere Busse repräsentieren, der bzw. die zum Kommunizieren von elektrischen Signalen, die mit Befehlen, Steuerinformationen, Adressen und/oder Daten codiert sind, zwischen der Steuerung 110 und dem Flash-Speicher-Die, der mit dem jeweiligen Flash-Speicherkanal gekoppelt ist, konfiguriert ist bzw. sind. Die vorliegende Technologie ist nicht auf irgendeine bestimmte Anzahl von Flash-Speicherkanälen eingeschränkt. Das Datenspeicherungssystem 100 kann zum Beispiel 8 Kanäle, 16 Kanäle, 32 Kanäle usw. beinhalten.
  • 2 ist ein Blockdiagramm, das Komponenten der Steuerung 110 gemäß Aspekten der vorliegenden Technologie veranschaulicht. Wie in 2 abgebildet, kann die Steuerung 110 einen Codierer 210, einen Decodierer 220, ein Basisumwandlungsmodul 230 und eine Kanalsteuerung 240 beinhalten. Die Steuerung 110 ist nicht auf diese bestimmten Komponenten eingeschränkt und kann andere Arten von Komponenten beinhalten. Zusätzlich dazu ist die Steuerung 110 nicht auf einzelne Instanzen einer beliebigen gegebenen Komponente eingeschränkt und kann mit mehreren Instanzen einer beliebigen der Komponenten implementiert werden.
  • Der Codierer 210 ist zum Codieren von Daten konfiguriert, um ein Codewort zur Speicherung im nichtflüchtigen Speicher 130 zu erzeugen. Gemäß Aspekten der vorliegenden Technologie verwendet der Codierer 210 einen nichtbinären Algorithmus mit fehlerkorrigierendem Code (ECC), wie etwa einen nichtbinären LDPC(Low-Density Parity-Check)-Code-Algorithmus, zum Erzeugen des Codewortes. Der Decodierer 220 ist zum Decodieren eines Codewortes, das aus dem nichtflüchtigen Speicher 130 gelesen wird, konfiguriert, um die codierten Daten unter Verwendung des Decodierungsteils des ECC-Algorithmus, der zum Codieren der Daten verwendet wird, abzurufen. Die Steuerung 110 kann mehrere Instanzen des Codierers 210 und/oder des Decodierers 220 beinhalten, um die verfügbare Bandbreite zum Verarbeiten von Daten, die im nichtflüchtigen Speicher 130 gespeichert sind, und von Daten, die aus dem nichtflüchtigen Speicher 130 gelesen werden, zu erhöhen. Der Decodierer 220 kann einen harten Decodierungsprozess oder einen weichen Decodierungsprozess implementieren. Falls mehrere Instanzen des Decodierers 220 in der Steuerung 110 enthalten sind, können manche der Decodierer zu harten Decodierungsprozessen und andere zu weichen Decodierungsprozessen dediziert sein.
  • Zusätzlich zu den in 2 abgebildeten Komponenten kann die Steuerung 110 andere Komponenten beinhalten. Die Steuerung 110 kann zum Beispiel Manager und Scheduler zum Verwalten von Lese-, Schreib- und Löschvorgängen im Datenspeicherungssystem 100 beinhalten. Die Steuerung 110 kann auch einen Adressenübersetzungsmanager zum Verwalten der Übersetzung von Host-Adressen, die durch das Host-System 150 verwendet werden, in physische Adressen der Blöcke, Wortleitungen und Seiten im nichtflüchtigen Speicher 130 beinhalten. Andere Komponenten können Verwürfeler, Entwürfeler, Wartungsmanager (z.B. Speicherbereinigung, Verschleißausgleich, Datenverlagerung usw.) beinhalten.
  • Die Komponenten der Steuerung 100 können jeweils unter Verwendung von einer oder mehreren Sequenzen von Anweisungen (z.B. Software/Firmware), die durch einen Prozessor oder Prozessorkern geladen und ausgeführt werden, unter Verwendung von Hardwarelogikschaltungen oder einer Kombination von Hardware und Software/Firmware implementiert werden. In einer Steuerung, die mehrere Prozessoren oder einen Mehrkernprozessor beinhaltet, können zum Beispiel individuelle Prozessoren oder Prozessorkerne zugewiesen sein, um die Funktionalität von jeweiligen Komponenten der Steuerung 100 bereitzustellen. Des Weiteren kann bzw. können eine oder mehrere der oben besprochenen Komponenten außerhalb der Steuerung 110 implementiert werden, ohne vom Schutzumfang der vorliegenden Technologie abzuweichen.
  • 3 ist ein Diagramm, das den Fluss von Daten, die in einen nichtflüchtigen Speicher geschrieben und aus diesem gelesen werden, gemäß Aspekten der vorliegenden Technologie veranschaulicht. Binäre Daten können zum Beispiel zur Speicherung in der nichtflüchtigen Speichereinrichtung 130 empfangen werden. Die Werte mit Basis zwei der binären Daten können zum Beispiel durch ein Basisumwandlungsmodul 230 in Werte mit Basis X umgewandelt werden. Die nichtbinären Daten werden dann dem Codierer 210 bereitgestellt, der die nichtbinären Daten zum Beispiel unter Verwendung eines nichtbinären LDPC-Codierungsalgorithmus codiert, um ein Codewort zu erzeugen. Das Codewort wird dann über die Kanalsteuerung 240 in eine Wortleitung der Flash-Medien, wie etwa die nichtflüchtige Speichereinrichtung 130, geschrieben.
  • Beim Lesen des Codewortes aus der nichtflüchtigen Speichereinrichtung 130 decodiert der Decodierer 220 das Codewort, um die nichtbinären Daten zum Beispiel unter Verwendung eines nichtbinären LDPC-Decodierungsalgorithmus abzurufen. Die Werte mit Basis X der decodierten nichtbinären Daten werden dann durch das Basisumwandlungsmodul 230 zurück in binäre Werte mit Basis zwei umgewandelt.
  • Gemäß Aspekten der vorliegenden Technologie ist X eine ganze Zahl mit einem Wert größer als zwei. Der Wert von X ist nicht auf irgendeinen bestimmten Bereich von Werten eingeschränkt und kann ganzzahlige Nicht-Zweierpotenz-Werte beinhalten. Der Wert von X bestimmt die Basis für die Umwandlung der binären Daten in nichtbinäre Daten, die Symbole des Galois-Feldes, das bei der LDPC-Codierung und -Decodierung verwendet wird, und die Anzahl von Programmpegeln, die bei der Programmierung der Speicherzellen der nichtflüchtigen Speichereinrichtung 130 verwendet werden.
  • Datenspeicherungssysteme können eine spezifizierte maximale Bitfehlerrate (BER) aufweisen, mit der das Datenspeicherungssystem zum Arbeiten ausgelegt ist. Verschiedene Eigenschaften und Metriken können die BER einer nichtflüchtigen Speichereinrichtung beeinflussen. Eine derartige Metrik ist ein Rauschabstand (SNR) der Flash-Speicherzellen. Der SNR für eine Flash-Speicherzelle kann unter Verwendung des Folgenden repräsentiert werden: SNR = 20log10 D / σ (1) wobei D der Gesamtspannungsbereich der Flash-Speicherzellen ist und σ die Standardabweichung einer Programmpegelverteilung ist. Wenn sich die Anzahl von Programmpegeln, die bei der Programmierung der Flash-Speicherzellen verwendet werden, erhöht, muss sich der SNR auch erhöhen, um eine spezifizierte BER für die nichtflüchtige Speichereinrichtung beizubehalten.
  • Wenn nichtflüchtige Speichereinrichtungen mehr Programmier-Lösch-Zyklen erfahren, neigen die Programmpegelverteilungen der Speicherzellen dazu, sich zu vergrößern, was zu größeren Standardabweichungen der Programmpegelverteilungen und einem kleineren SNR führt. Gleichermaßen können nichtflüchtige Speichereinrichtungen mit niedrigerer Qualität relativ große Programmpegelverteilungen selbst bei niedrigeren Programmier-Lösch-Zyklus-Zählungen aufweisen, was wiederum zu größeren Standardabweichungen der Programmpegelverteilungen und einem kleineren SNR führt. Die Programmpegelverteilungen und die entsprechenden SNRs für verschiedene Anzahlen von Programmier-Lösch-Zyklen und/oder verschiedene Qualitätsstufen von nichtflüchtigen Speichereinrichtungen können unter Verwendung einer Simulation oder Prüfung geschätzt werden. Die SNRs können dann mit den entsprechenden Programmier-Lösch-Zyklus-Zählungen oder Qualitätsstufen repräsentiert werden.
  • Dementsprechend wird für eine gegebene nichtflüchtige Speichereinrichtung, wie etwa einen Flash-Speicher-Die, eine Anzahl von Programmierpegeln ausgewählt, von der erwartet wird, dass sie die spezifizierte BER basierend auf dem SNR für die Speicherzellen in der Einrichtung nicht überschreitet. Falls der SNR zum Beispiel unter einem Minimalwert zum Beibehalten der spezifizierten BER für acht Programmpegel aber über einem Minimalwert zum Beibehalten der spezifizierten BER für sieben Programmpegel liegt, kann X auf sieben festgelegt werden. Die Auswahl kann zum Zeitpunkt der Montage oder Fertigung vorgenommen werden, wenn sie auf der Qualität des Flash-Speicher-Die basiert. Die Auswahl kann auch bei anderen Lebensdauerphasen des Flash-Speicher-Die vorgenommen werden, die durch Programmier-Lösch-Zyklus-Zählungen repräsentiert werden. Beispielsweise kann eine Nachschlagetabelle oder eine andere Datenstruktur Anzahlen von Programmpegeln mit jeweiligen Programmier-Lösch-Zyklus-Zählungen assoziieren. Wenn ein Flash-Speicher-Die eine bestimmte Programmier-Lösch-Zyklus-Zählung während des Betriebs überschreitet, kann die Anzahl von Programmpegeln, die durch den Wert X angegeben wird, aus dem Nachschlagetabelleneintrag, der der Programmier-Lösch-Zyklus-Zählung entspricht, bestimmt werden.
  • Die Steuerung 110 kann auch Lesefehlerzählungen für die nichtflüchtigen Speichereinrichtungen verfolgen. Wenn die Flash-Speicher-Dies Lesefehler erfahren, kann die Lesefehlerzählung aktualisiert und mit vorbestimmten Werten, die verschiedenen Werten von X entsprechen, verglichen werden. Falls sich die Lesefehlerzählungen erhöhen, muss die Anzahl von Programmpegeln, die durch den Wert für X repräsentiert wird, möglicherweise verringert werden, um Lesefehler für den bestimmten Flash-Speicher-Die zu verringern.
  • 4 ist eine Tabelle, die entsprechende Werte für die Anzahl von Programmpegeln pro Speicherzelle, die Anzahl von codierten Bits pro Speicherzelle und die Anzahl von 1-kB-, 2-kB- und 4-kB-Codewörtern, die in einer Wortleitung mit 16-kB-Speicherzellen gespeichert werden können, auflistet. Wenn X zum Beispiel auf sieben festgelegt wird, um anzugeben, dass sieben Programmpegel zur Programmierung von Speicherzellen zur Verfügung stehen, führt die Umwandlung von binären Daten mit Basis zwei in nichtbinäre Daten mit Basis sieben und das Codieren der nichtbinären Daten, um ein Codewort zu erzeugen, das in der Wortleitung gespeichert wird, zu 2,807 codierten Bits pro Zelle. Mit dieser Codierungsrate können die Daten von 44 binären 1-kB-Codewörtern in einer 16-kB-Wortleitung gespeichert werden, können die Daten von 22 binären 2-kB-Codewörtern in der 16-kB-Wortleitung gespeichert werden und können die Daten von 11 binären 4-kB-Codewörtern in der 16-kB-Wortleitung gespeichert werden.
  • 5 ist eine graphische Darstellung verschiedener Werte von X, die für Flash-Speicher-Dies mit verschiedenen Altern und Qualitätsstufen ausgewählt werden. In 5 werden Alter durch „NEU“ und „GEALTERT“ repräsentiert. Qualitätsstufen werden durch „BESTER DIE“, „BESSERER DIE“, „GUTER DIE“ und „KEIN DIE WIRD ZURÜCKGELASSEN“ repräsentiert. Die in 5 abgebildeten Alter und Qualitätsstufen sind Beispiele zum Zweck der Erläuterung. Die vorliegende Technologie ist nicht auf irgendeine bestimmte Anzahl von Altern oder Qualitätsstufen eingeschränkt. Die acht größeren Blöcke in 5 repräsentieren einen Flash-Speicher-Die und geben beispielhafte Auswahlen von Anzahlen von Programmpegeln, die durch den Wert von X repräsentiert werden, für verschiedene Kombinationen von Alter und Qualitätsstufe an. Ein neuer Flash-Speicher-Die, von dem angenommen wird, dass er die höchste Qualitätsstufe, „BESTER DIE“, besitzt, ist zum Beispiel zum Verwenden von 12 Programmpegeln zum Programmieren von Speicherzellen im Die konfiguriert. Andererseits ist eine gealterter Flash-Speicher-Die, von dem angenommen wird, dass er die niedrigste Qualitätsstufe, „KEIN DIE WIRD ZURÜCKGELASSEN“, besitzt, zum Verwenden von 6 Programmpegeln zum Programmieren von Speicherzellen im Die konfiguriert. Die kleineren Blöcke in den größeren Blöcken in 5 repräsentieren die Anzahl von binären 4-kB-Codewörtern, die in einer 16-kB-Wortleitung bei den verschiedenen Anzahlen von Programmpegeln gespeichert werden können. Bei 12 Programmpegeln pro Zelle können zum Beispiel die Daten von 14 binären 4-kB-Codewörtern in einer 16-kB-Wortleitung gespeichert werden, während bei 6 Programmpegeln pro Zelle die Daten von 10 binären 4-kB-Codewörtern in der 16-kB-Wortleitung gespeichert werden können.
  • Das Konfigurieren eines Flash-Speicher-Die, so dass er die ausgewählte Anzahl von Programmpegeln verwendet, kann durch die Steuerung 110 durchgeführt werden, die einen Befehl ausgibt oder ein oder mehrere Register auf dem Flash-Speicher-Die programmiert, um die Anzahl von zu verwendenden Programmpegeln, wenn Speicherzellen auf dem Die programmiert und die Speicherzellen auf dem Die gelesen werden, zu spezifizieren. Da jeder Programmpegel einem jeweiligen einzigartigen Symbol/einer jeweiligen einzigartigen Ziffer der Nummerierung mit Basis X entspricht, muss der Flash-Speicher-Die nur den jeweiligen Programmpegel, zu dem jede Speicherzelle programmiert ist, bestimmen und zurückgeben, wenn Daten gelesen werden. Dementsprechend nutzt die vorliegende Technologie keine Gray-Codierung, wenn Daten gelesen werden, und vermeidet den Verlust von Informationen auf Zellebene, der sich aus der Verwendung einer Gray-Codierung ergibt.
  • Die Steuerung 110 kann Systemdaten verwalten, um die Anzahlen von Programmpegeln zu verfolgen, die jeder Flash-Speicher-Die konfiguriert ist, zu verwenden. Wenn der ausgewählte Wert für X aufgrund des Alterns einer Flash-Speichereinrichtung geändert wird, kann die Steuerung 110 den Flash-Speicher-Die umkonfigurieren, so dass er einen früheren Wert für X zurückgibt, wenn Daten gelesen werden, die basierend auf dem früheren Wert für X programmiert werden, und den ausgewählten Wert für X für neue Datenschreibvorgänge oder -lesevorgänge für Daten zurückgibt, die basierend auf dem ausgewählten Wert für X programmiert werden. Die Steuerung 110 kann zusätzliche Systemdaten verwalten, um zu verfolgen, welche Wortleitungen/Blöcke in einem Flash-Speicher-Die unter Verwendung welcher Programmpegel programmiert wurden.
  • Zusätzlich zum Konfigurieren der nichtflüchtigen Speichereinrichtungen gemäß dem ausgewählten Wert für X kann die Steuerung 110 auch den Codierer 210, den Decodierer 220 und das Basisumwandlungsmodul 230 für den bestimmten ausgewählten Wert für X konfigurieren. Das Basisumwandlungsmodul 230 kann zum Anpassen der Umwandlung für den ausgewählten Wert für X konfigurierbar sein. Alternativ dazu kann das Basisumwandlungsmodul 230 ein entsprechendes Modul für jeden möglichen Wert für X beinhalten und die Steuerung 110 kann das Modul, das dem ausgewählten Wert für X entspricht, auswählen oder aktivieren.
  • Wie oben angemerkt, können der Codierer 210 und der Decodierer 220 einen nichtbinären LDPC-Algorithmus zum Codieren und Decodieren von Daten nutzen. Diesbezüglich kann der Codierer 210 eine Generatormatrix zum Codieren der nichtbinären Daten verwenden, um ein Codewort zu erzeugen, und der Decodierer 220 kann eine Paritätsprüfmatrix beim Decodieren des Codewortes verwenden, um die nichtbinären Daten abzurufen. Der LDPC-Algorithmus kann so ausgelegt sein, dass er die Positionen der von Null verschiedenen Elemente in diesen Matrizen bei den gleichen Positionen beibehält, unabhängig vom ausgewählten Wert für X. Die Werte, die den von Null verschiedenen Elementen für einen gegebenen Wert von X zugewiesen werden, können aus den Symbolen/Ziffern der Nummerierung mit Basis X, die dem ausgewählten Wert für X entspricht, ausgewählt werden. Die spezifischen Symbole/Ziffern für jedes von Null verschiedene Element können vorbestimmt und in einer Nachschlagetabelle oder einer anderen Datenstruktur, auf die zugegriffen werden kann, um die Symbole/Ziffern abzurufen und den Codierer und den Decodierer zu konfigurieren, gespeichert werden.
  • 6 ist ein Flussdiagramm, das einen Prozess zum Schreiben von Daten in eine Wortleitung gemäß Aspekten der vorliegenden Technologie abbildet. Bei Block 600 werden binäre Daten zur Speicherung in einer nichtflüchtigen Speichereinrichtung 130 empfangen. Die binären Daten können vom Host-System 150 empfangen werden, können Teil von Systemdaten sein, die durch die Steuerung 110 verwaltet werden und in einem nichtflüchtigen Speicher zur Erhaltung gespeichert werden müssen, oder können Daten sein, die aus der nichtflüchtigen Speichereinrichtung 130 als Teil einer Wartungsoperation, wie etwa Speicherbereinigung, Verschleißausgleich, interner Datenverschiebung usw., gelesen werden.
  • Bei Block 610 werden die binären Daten in nichtbinäre Daten gemäß dem ausgewählten Wert für X, der der nichtflüchtigen Speichereinrichtung 130 entspricht, umgewandelt. Die nichtbinären Daten werden codiert, um bei Block 620 ein Codewort zu erzeugen, und das Codewort wird bei Block 630 in eine Wortleitung in der nichtflüchtigen Speichereinrichtung 130 geschrieben.
  • Die vorliegende Technologie ermöglicht die Auswahl von Werten für X, so dass die Kapazität, die Beständigkeit und die Leistung von nichtflüchtigen Speichereinrichtungen, wie etwa NAND-Flash-Speichereinrichtungen, optimiert und abgeglichen werden. Verschiedene ausgewählte Werte für X steuern die Anzahl von Programmpegeln, die zum Programmieren von Speicherzellen der nichtflüchtigen Speichereinrichtungen verwendet werden. Wie in der obigen Besprechung widergespiegelt ist, ermöglicht die Bereitstellung einer Auswahl von möglichen Werten für X, dass individuelle nichtflüchtige Speichereinrichtungen so konfiguriert sind, dass die Menge an Daten, die in den Einrichtungen gespeichert werden, maximiert wird, während Bitfehlerraten unter spezifizierten Werten gehalten werden, indem ein Wert für X basierend auf Charakteristiken der Speichereinrichtung ausgewählt wird.
  • Gemäß Aspekten der vorliegenden Technologie ist ein Verfahren bereitgestellt, das Empfangen von binären Daten zur Speicherung in einer nichtflüchtigen Speichereinrichtung und Umwandeln der binären Daten in nichtbinäre Daten beinhaltet. Das Verfahren beinhaltet ferner Codieren der nichtbinären Daten, um ein Codewort zu erzeugen, und Schreiben des Codewortes in eine Wortleitung der nichtflüchtigen Speichereinrichtung.
  • Das Umwandeln der binären Daten in nichtbinäre Daten kann Umwandeln von Werten mit Basis zwei der binären Daten in Werte mit Basis X beinhalten, wobei X eine ganze Zahl größer als zwei ist. X kann eine ganze Nicht-Zweierpotenz-Zahl sein. Das Schreiben des Codewortes in die Wortleitung der nichtflüchtigen Speichereinrichtung kann Programmieren von Speicherzellen der Wortleitung zu entsprechenden Programmpegeln, die aus X verfügbaren Programmpegeln basierend auf Werten der nichtbinären Daten ausgewählt werden, beinhalten. Das Codieren der nichtbinären Daten kann Erzeugen eines nichtbinären LDPC(Low-Density Parity-Check)-Codes beinhalten, wobei das erzeugte Codewort die nichtbinären Daten und den nichtbinären LDPC-Code beinhalten kann.
  • Das Verfahren kann ferner Lesen des Codewortes aus der Wortleitung der nichtflüchtigen Speichereinrichtung, Decodieren des Codewortes, um die nichtbinären Daten abzurufen, und Umwandeln der nichtbinären Daten zurück in die binären Daten beinhalten.
  • Gemäß Aspekten der vorliegenden Technologie ist ein Datenspeicherungssystem bereitgestellt, das mehrere nichtflüchtige Speichereinrichtungen und eine Steuerung beinhaltet. Die Steuerung kann zum Empfangen von ersten binären Daten zur Speicherung im Datenspeicherungssystem und zum Umwandeln von Werten mit Basis zwei der ersten binären Daten in erste nichtbinäre Daten, die Werte mit Basis X umfassen, wobei X eine ganze Zahl größer als zwei ist, konfiguriert sein. Die Steuerung kann ferner zum Codieren der ersten nichtbinären Daten, um ein erstes Codewort zu erzeugen, und zum Schreiben des ersten Codewortes in eine Wortleitung einer ersten nichtflüchtigen Speichereinrichtung der mehreren nichtflüchtigen Speichereinrichtungen konfiguriert sein.
  • Die Steuerung kann ferner zum Schreiben des ersten Codewortes in die Wortleitung der ersten nichtflüchtigen Speichereinrichtung durch Programmieren von Speicherzellen der Wortleitung zu entsprechenden Programmpegeln, die aus X verfügbaren Programmpegeln basierend auf den Werten der ersten nichtbinären Daten ausgewählt werden, konfiguriert sein. Die Steuerung kann ferner zum Codieren der ersten nichtbinären Daten durch Erzeugen eines ersten nichtbinären LDPC(Low-Density Parity-Check)-Codes konfiguriert sein, wobei das erzeugte erste Codewort die ersten nichtbinären Daten und den ersten LDPC-Code umfasst.
  • Die Steuerung kann zum Empfangen von zweiten binären Daten zur Speicherung im Datenspeicherungssystem, zum Umwandeln von Werten mit Basis zwei der zweiten binären Daten in zweite nichtbinäre Daten, die Werte mit Basis Y umfassen, wobei Y eine ganze Zahl größer als zwei ist und sich von X unterscheidet, und zum Codieren der zweiten nichtbinären Daten, um ein zweites Codewort zu erzeugen, konfiguriert sein. Die Steuerung kann das zweite Codewort in eine Wortleitung einer zweiten nichtflüchtigen Speichereinrichtung der mehreren nichtflüchtigen Speichereinrichtungen schreiben.
  • Die Steuerung kann ferner zum Schreiben des zweiten Codewortes in die Wortleitung der zweiten nichtflüchtigen Speichereinrichtung durch Programmieren von Speicherzellen der Wortleitung zu entsprechenden Programmpegeln, die aus Y verfügbaren Programmpegeln basierend auf den Werten der zweiten nichtbinären Daten ausgewählt werden, konfiguriert sein.
  • Die Steuerung kann ferner zum Lesen des ersten Codewortes aus der Wortleitung der ersten nichtflüchtigen Speichereinrichtung, zum Decodieren des ersten Codewortes, um die ersten nichtbinären Daten abzurufen, und zum Umwandeln der ersten nichtbinären Daten zurück in die ersten binären Daten konfiguriert sein.
  • Gemäß Aspekten der vorliegenden Technologie ist ein prozessorlesbares Medium mit Anweisungen codiert, die, wenn sie durch einen Prozessor ausgeführt werden, ein Verfahren durchführen. Das Verfahren beinhaltet Assoziieren einer nichtflüchtigen Speichereinrichtung mit einem Wert X basierend auf einer Eigenschaft der nichtflüchtigen Speichereinrichtung, wobei X eine ganze Zahl größer als zwei ist, Empfangen von binären Daten zur Speicherung in der nichtflüchtigen Speichereinrichtung, Umwandeln von Werten mit Basis zwei der binären Daten in nichtbinäre Daten, die Werte mit Basis X umfassen, Codieren der nichtbinären Daten, um ein Codewort zu erzeugen, und Schreiben des Codewortes in eine Wortleitung der nichtflüchtigen Speichereinrichtung.
  • Die Eigenschaft der nichtflüchtigen Speichereinrichtung kann eine Programmier-Lösch-Zählung beinhalten. Die Eigenschaft der nichtflüchtigen Speichereinrichtung kann auch eine Lesefehlerzählung beinhalten.
  • Das Codieren der nichtbinären Daten, um das Codewort zu erzeugen, kann Erzeugen eines nichtbinären LDPC(Low-Density Parity-Check)-Codes beinhalten, wobei das erzeugte Codewort die nichtbinären Daten und den LDPC-Code umfasst. Das Schreiben des Codewortes in die Wortleitung der nichtflüchtigen Speichereinrichtung kann Programmieren von Speicherzellen der Wortleitung zu entsprechenden Programmpegeln, die aus X verfügbaren Programmpegeln basierend auf den Werten der nichtbinären Daten ausgewählt werden, beinhalten.
  • Das Verfahren kann ferner Lesen des Codewortes aus der Wortleitung der nichtflüchtigen Speichereinrichtung, Decodieren des Codewortes, um die nichtbinären Daten abzurufen, und Umwandeln der nichtbinären Daten zurück in die binären Daten beinhalten.
  • Gemäß Aspekten der vorliegenden Technologie ist ein Datenspeicherungssystem bereitgestellt, das eine nichtflüchtige Speichereinrichtung beinhaltet. Das Datenspeicherungssystem beinhaltet ferner Mittel zum Empfangen von binären Daten zur Speicherung in der nichtflüchtigen Speichereinrichtung und Mittel zum Umwandeln von Werten mit Basis zwei der binären Daten in nichtbinäre Daten, die Werte mit Basis X umfassen, wobei X eine ganze Zahl größer als zwei ist. Das Datenspeicherungssystem beinhaltet ferner Mittel zum Codieren der nichtbinären Daten, um ein Codewort zu erzeugen, und Mittel zum Schreiben des Codewortes in eine Wortleitung der nichtflüchtigen Speichereinrichtung.
  • Das Datenspeicherungssystem kann ferner Mittel zum Lesen des Codewortes aus der Wortleitung der nichtflüchtigen Speichereinrichtung, Mittel zum Decodieren des Codewortes, um die nichtbinären Daten abzurufen, und Mittel zum Umwandeln der nichtbinären Daten zurück in die binären Daten beinhalten.
  • Viele der oben beschriebenen Merkmale des beispielhaften Prozesses und verwandte Merkmale und Anwendungen können als Software- oder Firmwareprozesse implementiert werden, die als ein Satz von Anweisungen, die auf einem prozessorlesbaren Speichermedium (auch als computerlesbares Medium bezeichnet) aufgezeichnet sind, spezifiziert sind. Wenn diese Anweisungen durch eine oder mehrere Verarbeitungseinheiten (z.B. einen oder mehrere Prozessoren, Kerne von Prozessoren oder andere Verarbeitungseinheiten) ausgeführt werden, wird bewirkt, dass die eine oder die mehreren Verarbeitungseinheiten die in den Anweisungen angegebenen Handlungen durchführt bzw. durchführen. Beispiele von prozessorlesbaren Medien beinhalten unter anderem den flüchtigen Speicher 120, den nichtflüchtigen Speicher 130, sowie andere Formen von Medien, wie etwa magnetische Medien, optische Medien und elektronische Medien. Die prozessorlesbaren Medien beinhalten keine Trägerwellen und elektronische Signale, die drahtlos oder über verdrahtete Verbindungen kommuniziert werden.
  • Der Ausdruck „Software“ soll, wenn angemessen, Firmware beinhalten, die in einem Speicher oder in im Speicher gespeicherten Anwendungen liegt und in einen Arbeitsspeicher zum Verarbeiten durch einen Prozessor gelesen werden kann. Bei manchen Implementierungen können außerdem mehrere Softwareaspekte der vorliegenden Offenbarung als Unterteile eines größeren Programms implementiert werden, während distinkte Softwareaspekte der vorliegenden Offenbarung beibehalten werden. Bei manchen Implementierungen können mehrere Softwareaspekte auch als separate Programme implementiert werden. Schließlich befindet sich eine beliebige Kombination von separaten Programmen, die zusammen einen vorliegend beschriebenen Softwareaspekt implementieren, im Schutzumfang der vorliegenden Offenbarung. Bei manchen Implementierungen definieren die Softwareprogramme, wenn sie so installiert sind, dass sie auf einem oder mehreren elektronischen Systemen arbeiten, eine oder mehrere spezifische Maschinenimplementierungen, die die Vorgänge der Softwareprogramme ausführt bzw. ausführen und durchführt bzw. durchführen.
  • Ein Computerprogramm (auch als ein Programm, eine Software, eine Softwareanwendung, ein Script, oder ein Code bekannt) kann in einer beliebigen Form von Programmiersprache geschrieben werden, einschließlich kompilierten oder interpretierten Sprachen, deklarativen oder prozeduralen Sprachen, und kann in einer beliebigen Form eingesetzt werden, einschließlich als ein eigenständiges Programm oder als ein Modul, eine Komponente, ein Unterprogramm, ein Objekt oder eine andere Einheit, die zur Verwendung in einer Datenverarbeitungsumgebung geeignet ist. Ein Computerprogramm kann, aber muss nicht, einer Datei in einem Dateisystem entsprechen. Ein Programm kann in einem Teil einer Datei, die andere Programme oder Daten (z.B. ein oder mehrere Scripts, das bzw. die in einem Markup-Language-Dokument gespeichert ist bzw. sind) hält, in einer einzelnen Datei, die dem betreffenden Programm dediziert ist, oder in mehreren koordinierten Dateien (z.B. Dateien, die ein oder mehrere Module, Unterprogramme oder Teile von Code speichern) gespeichert sein.
  • Es versteht sich, dass vorliegend beschriebene veranschaulichende Blöcke, Module, Elemente, Komponenten, Verfahren und Algorithmen als elektronische Hardware, Computersoftware oder Kombinationen von beiden implementiert werden können. Um diese Austauschbarkeit von Hardware und Software zu veranschaulichen, sind verschiedene veranschaulichende Blöcke, Module, Elemente, Komponenten, Verfahren und Algorithmen oben allgemein hinsichtlich ihrer Funktionalität beschrieben worden. Ob eine derartige Funktionalität als Hardware oder Software implementiert wird, hängt von der bestimmten Anwendung und Designeinschränkungen, die dem Gesamtsystem auferlegt werden, ab. Fachleute können die beschriebene Funktionalität auf variierende Weisen für jede bestimmte Anwendung implementieren. Verschiedene Komponenten und Blöcke können andersartig angeordnet sein (z.B. in einer anderen Reihenfolge angeordnet oder auf eine andere Weise partitioniert), ohne jeweils vom Schutzumfang der vorliegenden Offenbarung abzuweichen.
  • Es versteht sich, dass die spezifische Reihenfolge oder Hierarchie der Schritte in den offenbarten Prozessen als eine Veranschaulichung mancher beispielhaften Ansätze dargelegt ist. Basierend auf Designpräferenzen und/oder anderen Erwägungen versteht es sich, dass die spezifische Reihenfolge oder Hierarchie der Schritte in den Prozessen umgeordnet werden kann. Bei manchen Implementierungen können zum Beispiel manche der Schritte gleichzeitig durchgeführt werden. Somit legen die begleitenden Verfahrensansprüche Elemente der verschiedenen Schritte in einer Beispielreihenfolge dar und diese sollen nicht auf die spezifische dargelegte Reihenfolge oder Hierarchie eingeschränkt sein.
  • Die vorangegangene Beschreibung ist bereitgestellt, um einem beliebigen Fachmann zu ermöglichen, die verschiedenen vorliegend beschriebenen Aspekte praktizieren. Die vorangegangene Beschreibung stellt verschiedene Beispiele der vorliegenden Offenbarung bereit und die vorliegende Offenbarung ist nicht auf diese Beispiele eingeschränkt. Verschiedene Modifikationen an diesen Aspekten werden Fachleuten leicht ersichtlich und die allgemeinen vorliegend definierten Prinzipien können bei anderen Aspekten angewendet werden. Somit ist nicht beabsichtigt, dass die Ansprüche auf die vorliegend dargestellten Aspekte eingeschränkt sind, sondern sollen den vollständigen Schutzumfang vereinbar mit den Sprachansprüchen erhalten, wobei Erwähnung eines Elements im Singular nicht „eines und nur eines“ bedeuten soll, sofern es nicht spezifisch so angegeben wird, sondern „eines oder mehrere“. Sofern es nicht ausdrücklich anders angegeben wird, bezieht sich der Ausdruck „manche“ auf eines oder mehrere. Männliche Pronomen (z.B. sein) umfassen das weibliche und neutrale Geschlecht (z.B. ihr und sein) und umgekehrt. Etwaige Titel und Untertitel dienen lediglich der Zweckmäßigkeit und schränken die vorliegende Offenbarung nicht ein.
  • Die Prädikate „konfiguriert zum“, „betreibbar zum“ und „programmiert zum“ bedingen nicht irgendeine konkrete greifbare oder nichtgreifbare Modifikation eines Subjekts, sondern sollen stattdessen austauschbar verwendet werden. Ein Prozessor, der zum Beispiel zum Überwachen und Steuern einer Operation oder einer Komponente konfiguriert ist, kann auch bedeuten, dass der Prozessor dafür programmiert ist, die Operation zu überwachen und zu steuern, oder der Prozessor betreibbar ist zum Überwachen und Steuern der Operation. Gleichermaßen kann ein zum Ausführen von Code konfigurierter Prozessor als ein Prozessor, programmiert zum Ausführen von Code oder betreibbar zum Ausführen von Code, aufgefasst werden.
  • Die Ausdrücke „in Kommunikation mit“ und „gekoppelt“ bedeuten in direkter Kommunikation mit oder in indirekter Kommunikation mit, über eine oder mehrere Komponenten, die vorliegend benannt oder unbenannt sind (z.B. ein Speicherkartenlesegerät).
  • Ein Ausdruck wie etwa ein „Aspekt“ impliziert nicht, dass ein derartiger Aspekt für die vorliegende Offenbarung unerlässlich ist, oder dass ein derartiger Aspekt auf alle Konfigurationen der vorliegenden Offenbarung zutrifft. Eine Offenbarung bezüglich eines Aspekts kann auf alle Konfigurationen oder eine oder mehrere Konfigurationen zutreffen. Ein Aspekt kann ein oder mehrere Beispiele bereitstellen. Ein Ausdruck wie etwa ein Aspekt kann sich auf einen oder mehrere Aspekte beziehen und umgekehrt. Ein Ausdruck wie etwa eine „Implementierung“ impliziert nicht, dass eine derartige Implementierung für die vorliegende Offenbarung unerlässlich ist, oder dass eine derartige Implementierung auf alle Konfigurationen der vorliegenden Offenbarung zutrifft. Eine Offenbarung bezüglich einer Implementierung kann auf alle Aspekte oder einen oder mehrere Aspekte zutreffen. Eine Implementierung kann ein oder mehrere Beispiele bereitstellen. Ein Ausdruck wie etwa eine „Implementierung“ kann sich auf eine oder mehrere Implementierungen beziehen und umgekehrt. Ein Ausdruck wie etwa eine „Konfiguration“ impliziert nicht, dass eine derartige Konfiguration für die vorliegende Offenbarung unerlässlich ist, oder dass eine derartige Konfiguration auf alle Konfigurationen der vorliegenden Offenbarung zutrifft. Eine Offenbarung bezüglich einer Konfiguration kann auf alle Konfigurationen oder eine oder mehrere Konfigurationen zutreffen. Eine Konfiguration kann ein oder mehrere Beispiele bereitstellen. Ein Ausdruck wie etwa eine „Konfiguration“ kann sich auf eine oder mehrere Konfigurationen beziehen und umgekehrt.
  • Das Wort „beispielhaft“ wird in der Bedeutung verwendet, dass es „als ein Beispiel oder eine Veranschaulichung dient“. Jeglicher Aspekt oder jegliches Design, der/das vorliegend als „beispielhaft“ beschrieben ist, ist nicht notwendigerweise als bevorzugt oder vorteilhaft gegenüber anderen Aspekten oder Designs aufzufassen.

Claims (20)

  1. Verfahren, umfassend: Empfangen von binären Daten zur Speicherung in einer nichtflüchtigen Speichereinrichtung; Umwandeln der binären Daten in nichtbinäre Daten; Codieren der nichtbinären Daten, um ein Codewort zu erzeugen; und Schreiben des Codewortes in einer Wortleitung der nichtflüchtigen Speichereinrichtung.
  2. Verfahren nach Anspruch 1, wobei das Umwandeln der binären Daten in nichtbinäre Daten Umwandeln von Werten mit Basis zwei der binären Daten in Werte mit Basis X umfasst, wobei X eine ganze Zahl größer als zwei ist.
  3. Verfahren nach Anspruch 2, wobei X eine ganze Nicht-Zweierpotenz-Zahl ist.
  4. Verfahren nach Anspruch 2, wobei das Schreiben des Codewortes in die Wortleitung der nichtflüchtigen Speichereinrichtung Programmieren von Speicherzellen der Wortleitung zu entsprechenden Programmpegeln, die aus X verfügbaren Programmpegeln basierend auf Werten der nichtbinären Daten ausgewählt werden, umfasst.
  5. Verfahren nach Anspruch 1, wobei das Codieren der nichtbinären Daten Erzeugen eines nichtbinären LDPC(Low-Density Parity-Check)-Codes umfasst und wobei das erzeugte Codewort die nichtbinären Daten und den nichtbinären LDPC-Code umfasst.
  6. Verfahren nach Anspruch 1, ferner umfassend: Lesen des Codewortes aus der Wortleitung der nichtflüchtigen Speichereinrichtung; Decodieren des Codewortes, um die nichtbinären Daten abzurufen; und Umwandeln der nichtbinären Daten zurück in die binären Daten.
  7. Datenspeicherungssystem, umfassend: mehrere nichtflüchtige Speichereinrichtungen und eine Steuerung, die konfiguriert ist zum: Empfangen von ersten binären Daten zur Speicherung im Datenspeicherungssystem; Umwandeln von Werten mit Basis zwei der ersten binären Daten in erste nichtbinäre Daten, die Werte mit Basis X umfassen, wobei X eine ganze Zahl größer als zwei ist; Codieren der ersten nichtbinären Daten, um ein erstes Codewort zu erzeugen; Schreiben des ersten Codewortes in eine Wortleitung einer ersten nichtflüchtigen Speichereinrichtung der mehreren nichtflüchtigen Speichereinrichtungen.
  8. Datenspeicherungssystem nach Anspruch 7, wobei die Steuerung ferner zum Schreiben des ersten Codewortes in die Wortleitung der ersten nichtflüchtigen Speichereinrichtung durch Programmieren von Speicherzellen der Wortleitung zu entsprechenden Programmpegeln, die aus X verfügbaren Programmpegeln basierend auf den Werten der ersten nichtbinären Daten ausgewählt werden, konfiguriert ist.
  9. Datenspeicherungssystem nach Anspruch 7, wobei die Steuerung ferner zum Codieren der ersten nichtbinären Daten durch Erzeugen eines ersten nichtbinären LDPC(Low-Density Parity-Check)-Codes konfiguriert ist, wobei das erzeugte erste Codewort die ersten nichtbinären Daten und den ersten LDPC-Code umfasst.
  10. Datenspeicherungssystem nach Anspruch 7, wobei die Steuerung ferner konfiguriert ist zum: Empfangen von zweiten binären Daten zur Speicherung im Datenspeicherungssystem; Umwandeln von Werten mit Basis zwei der zweiten binären Daten in zweite nichtbinäre Daten, die Werte mit Basis Y umfassen, wobei Y eine ganze Zahl größer als zwei ist und sich von X unterscheidet; Codieren der zweiten nichtbinären Daten, um ein zweites Codewort zu erzeugen; Schreiben des zweiten Codewortes in eine Wortleitung einer zweiten nichtflüchtigen Speichereinrichtung der mehreren nichtflüchtigen Speichereinrichtungen.
  11. Datenspeicherungssystem nach Anspruch 10, wobei die Steuerung ferner zum Schreiben des zweiten Codewortes in die Wortleitung der zweiten nichtflüchtigen Speichereinrichtung durch Programmieren von Speicherzellen der Wortleitung zu entsprechenden Programmpegeln, die aus Y verfügbaren Programmpegeln basierend auf den Werten der zweiten nichtbinären Daten ausgewählt werden, konfiguriert ist.
  12. Datenspeicherungssystem nach Anspruch 7, wobei die Steuerung ferner konfiguriert ist zum: Lesen des ersten Codewortes aus der Wortleitung der ersten nichtflüchtigen Speichereinrichtung; Decodieren des ersten Codewortes, um die ersten nichtbinären Daten abzurufen; und Umwandeln der ersten nichtbinären Daten zurück in die ersten binären Daten.
  13. Prozessorlesbares Medium, das mit Anweisungen codiert ist, die, wenn die durch einen Prozessor ausgeführt werden, ein Verfahren durchführen, das Folgendes umfasst: Assoziieren einer nichtflüchtigen Speichereinrichtung mit einem Wert X basierend auf einer Eigenschaft der nichtflüchtigen Speichereinrichtung, wobei X eine ganze Zahl größer als zwei ist; Empfangen von binären Daten zur Speicherung in der nichtflüchtigen Speichereinrichtung; Umwandeln von Werten mit Basis zwei der binären Daten in nichtbinäre Daten, die Werte mit Basis X umfassen; Codieren der nichtbinären Daten, um ein Codewort zu erzeugen; und Schreiben des Codewortes in eine Wortleitung der nichtflüchtigen Speichereinrichtung.
  14. Prozessorlesbares Medium nach Anspruch 13, wobei die Eigenschaft der nichtflüchtigen Speichereinrichtung eine Programmier-Lösch-Zählung umfasst.
  15. Prozessorlesbares Medium nach Anspruch 13, wobei die Eigenschaft der nichtflüchtigen Speichereinrichtung eine Lesefehlerzählung umfasst.
  16. Prozessorlesbares Medium nach Anspruch 13, wobei das Codieren der nichtbinären Daten, um das Codewort zu erzeugen, Erzeugen eines nichtbinären LDPC(Low-Density Parity-Check)-Codes umfasst, und wobei das erzeugte Codewort die nichtbinären Daten und den LDPC-Code umfasst.
  17. Prozessorlesbares Medium nach Anspruch 13, wobei das Schreiben des Codewortes in die Wortleitung der nichtflüchtigen Speichereinrichtung Programmieren von Speicherzellen der Wortleitung zu entsprechenden Programmpegeln, die aus X verfügbaren Programmpegeln basierend auf den Werten der nichtbinären Daten ausgewählt werden, umfasst.
  18. Prozessorlesbares Medium nach Anspruch 13, wobei das Verfahren ferner Folgendes umfasst: Lesen des Codewortes aus der Wortleitung der nichtflüchtigen Speichereinrichtung; Decodieren des Codewortes, um die nichtbinären Daten abzurufen; und Umwandeln der nichtbinären Daten zurück in die binären Daten.
  19. Datenspeicherungssystem, umfassend: eine nichtflüchtige Speichereinrichtung; Mittel zum Empfangen von binären Daten zur Speicherung in der nichtflüchtigen Speichereinrichtung; Mittel zum Umwandeln von Werten mit Basis zwei der binären Daten in nichtbinäre Daten, die Werte mit Basis X umfassen, wobei X eine ganze Zahl größer als zwei ist; Mittel zum Codieren der nichtbinären Daten, um ein Codewort zu erzeugen; und Mittel zum Schreiben des Codewortes in einer Wortleitung der nichtflüchtigen Speichereinrichtung.
  20. Datenspeicherungssystem nach Anspruch 19, ferner umfassend: Mittel zum Lesen des Codewortes aus der Wortleitung der nichtflüchtigen Speichereinrichtung; Mittel zum Decodieren des Codewortes, um die nichtbinären Daten abzurufen; und Mittel zum Umwandeln der nichtbinären Daten zurück in die binären Daten.
DE102017117066.9A 2016-07-29 2017-07-27 Nichtbinäre codierung für einen nichtflüchtigen speicher Withdrawn DE102017117066A1 (de)

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 (1)

Publication Number Publication Date
DE102017117066A1 true DE102017117066A1 (de) 2018-02-01

Family

ID=60951070

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102017117066.9A Withdrawn DE102017117066A1 (de) 2016-07-29 2017-07-27 Nichtbinäre codierung für einen nichtflüchtigen speicher

Country Status (4)

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

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

Family Cites Families (23)

* 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 샌디스크 코포레이션 서로 다른 사전충전 인에이블 전압들을 사용함으로써 프로그램 디스터브가 감소된 비휘발성 메모리 프로그래밍
KR100875295B1 (ko) * 2007-03-30 2008-12-23 삼성전자주식회사 향상된 성능을 갖는 플래시 메모리 장치
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
US9086984B2 (en) * 2011-01-04 2015-07-21 Seagate Technology Llc Detection and decoding in flash memories with selective binary and non-binary decoding
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
JP2014179142A (ja) * 2013-03-14 2014-09-25 Toshiba Corp 半導体記憶装置
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公司 非二进制的分层低密度奇偶校验解码器
US9337864B1 (en) * 2014-01-29 2016-05-10 Western Digital Technologies, Inc. Non-binary LDPC decoder using binary subgroup processing
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
WO2016028717A1 (en) * 2014-08-17 2016-02-25 Aplus Flash Technology, Inc Vsl-based vt-compensation and analog program scheme for nand array without csl
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

Also Published As

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

Similar Documents

Publication Publication Date Title
DE102017117066A1 (de) Nichtbinäre codierung für einen nichtflüchtigen speicher
DE102019124438B4 (de) Multi-state-programmierung für speichervorrichtungen
DE112014004778B4 (de) Vorrichtung und Verfahren zum Verwalten von Chipgruppen
DE102018105948A1 (de) Leseniveau-Nachverfolgung und Optimierung
DE112020006139B4 (de) Vor-lese-und lese-schwellenspannungsoptimierung
DE112014004761B4 (de) Beeinflussung des Wear-Leveling in Speichersystemen
DE102017001420B4 (de) Redundanz von fehlerkorrekturcodierten daten in einem speichersystem
DE102008003113B4 (de) ECC-Steuereinheit, Speichersystem und Verfahren zur Korrektur eines Fehlers
DE102010021516B4 (de) Fehlerkorrekturcodes für erhöhte Speicherkapazität in Mehrpegelspeichereinrichtungen
DE102019116520A1 (de) Datenspeichersysteme und -verfahren für eine verbesserte datenumlagerung basierend auf lesepegelspannungen, die mit einer fehlerwiederherstellung verbunden sind
DE112019000167T5 (de) Anpassbare Lesewiederholungsreihenfolge basierend auf einem Decodierungserfolgstrend
DE102019133129A1 (de) Mehrphasenprogrammierung mit symmetrischer gray-codierung
DE112012006153T5 (de) Rekonstruktion von Codewörtern unter Verwendung eines Seitenkanals
DE102018123926A1 (de) Dynamische mehrstufige Decodierung
DE102019125059A1 (de) Abbildung für multi-state-programmierung von speichervorrichtungen
DE102017128999A1 (de) Lesebetrieb und weiches Dekodierungs-Timing
DE112014001305T5 (de) Auswahl einer redundanten Datenspeicherkonfiguration auf der Grundlage verfügbaren Speicherplatzes
DE112018000485T5 (de) Komprimierer/Dekomprimierer für nicht binäre Kontextmischung
DE112021000776T5 (de) Verwaltung von schreib-operationen in einer nichtflüchtigen speichervorrichtung unter verwendung eines variablen vor-lese-spannungspegels
DE112020005502T5 (de) Dynamische überprovisionierungszuweisung für zweckbestimmte blöcke
DE102020110856A1 (de) Komprimierung von fehlervektoren zur dekodierung von logik zum komprimierten speichern in einem dekodiererspeicher, verwendet von der dekodierungs-logik
DE102018123961A1 (de) Gruppen-leseaktualisierung
DE102022101607A1 (de) Verwaltung der hostspeicherpufferzuweisung
DE102021106721A1 (de) Schnelles durch-steuerung-kopieren
DE102021006246A1 (de) Doppelt verschachtelte Programmierung einer Speichervorrichtung in einem Speicher-Untersystem

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee