DE102019125059A1 - Abbildung für multi-state-programmierung von speichervorrichtungen - Google Patents

Abbildung für multi-state-programmierung von speichervorrichtungen Download PDF

Info

Publication number
DE102019125059A1
DE102019125059A1 DE102019125059.5A DE102019125059A DE102019125059A1 DE 102019125059 A1 DE102019125059 A1 DE 102019125059A1 DE 102019125059 A DE102019125059 A DE 102019125059A DE 102019125059 A1 DE102019125059 A1 DE 102019125059A1
Authority
DE
Germany
Prior art keywords
data
mapped
mapped data
mode
transitions
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.)
Pending
Application number
DE102019125059.5A
Other languages
English (en)
Inventor
Bernie Rub
Mostafa EL GAMAL
Niranjay RAVINDRAN
Richard David Barndt
Henry Chin
Ravi J. Kumar
James Fitzpatrick
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.)
SANDISK TECHNOLOGIES, INC. (N.D.GES. D. STAATE, US
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 DE102019125059A1 publication Critical patent/DE102019125059A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/10Decoders
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/313In storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/403Error protection encoding, e.g. using parity or ECC codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel memory having cells with different number of storage levels

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Es werden Verfahren, Systeme und Vorrichtungen zur Programmierung von Speichermedien beschrieben. Ein Verfahren kann eine Abbildung von Daten basierend auf einem Datensatz erzeugen, wobei die Abbildung von Daten erste abgebildete Daten und zweite abgebildete Daten einschließt. Das Verfahren kann Durchführen einer ersten Programmieroperation einschließen, um in einem ersten Modus die ersten abgebildeten Daten in die Speichervorrichtung zu schreiben. Das Verfahren kann Speichern der zweiten abgebildeten Daten in einem Cache einschließen. Das Verfahren kann Erzeugen eines zweiten Datensatzes, basierend auf einer umgekehrten Abbildung der Abbildung von Daten einschließlich der zweiten abgebildeten Daten aus dem Speicher und der ersten abgebildeten Daten aus der Speichervorrichtung, zum Schreiben, in einem zweiten Modus, in die Speichervorrichtung einschließen, wobei der zweite Datensatz den Datensatz einschließt und der erste Modus und der zweite Modus verschiedenen Modi zum Schreiben in die Speichervorrichtung entsprechen.

Description

  • HINTERGRUND
  • Die vorliegende Anmeldung bezieht sich im Allgemeinen auf Datenspeichersysteme, -vorrichtungen und -verfahren. Genauer gesagt, bezieht sich die vorliegende Anmeldung zum Beispiel, ohne Einschränkung, auf eine Multi-State-Programmierung zum Schreiben von Daten in Speichervorrichtungen.
  • Die im Hintergrundabschnitt vorgesehene Beschreibung sollte nicht als Stand der Technik angenommen werden, lediglich weil sie in dem Hintergrundabschnitt erwähnt wird oder diesem zugeordnet ist. Der Hintergrundabschnitt kann Informationen einschließen, die einen oder mehrere Aspekte der vorliegenden Technologie beschreiben, und die Beschreibung in diesem Abschnitt schränkt die Erfindung nicht ein.
  • Figurenliste
  • Eine detaillierte Beschreibung erfolgt unter Bezugnahme auf die beigefügten Zeichnungen:
    • 1 ist ein Blockdiagramm, das Komponenten eines Flash-Speichersystems gemäß Aspekten der vorliegenden Technologie veranschaulicht;
    • 2 veranschaulicht konzeptionell ein Beispiel für eine Multi-State-Programmierung, die von verschiedenen Komponenten eines Flash-Speichersystems gemäß einer oder mehreren Implementierungen der vorliegenden Technologie bereitgestellt wird;
    • 3 veranschaulicht konzeptionell ein Beispiel für die Abbildung gemäß einer oder mehreren Implementierungen der vorliegenden Technologie;
    • 4 veranschaulicht konzeptionell ein Beispiel für die Abbildung und die anschließende Durchführung einer umgekehrten Abbildung gemäß einer oder mehreren Implementierungen der vorliegenden Technologie;
    • 5 veranschaulicht konzeptionell ein Beispiel für Daten in einer ersten Tabelle und ein Beispiel für abgebildete Daten in einer zweiten Tabelle;
    • 6 zeigt ein Flussdiagramm eines Prozesses zum Durchführen einer Multi-State-Programmierung gemäß einer oder mehreren Implementierungen.
  • DETAILLIERTE BESCHREIBUNG
  • Die nachstehend dargelegte detaillierte Beschreibung ist als eine Beschreibung verschiedener Konfigurationen der vorliegenden Technologie gedacht und soll nicht die einzigen Konfigurationen darstellen, in denen die vorliegende Technologie in der Praxis umgesetzt werden kann. Die beigefügten Zeichnungen sind in dieses Dokument integriert und Bestandteil der detaillierten Beschreibung. Die detaillierte Beschreibung beinhaltet spezifische Details, um ein gründliches Verständnis der vorliegenden Technologie zu ermöglichen. Jedoch wird für Fachleute offensichtlich sein, dass die vorliegende Technologie ohne diese spezifischen Details in der Praxis umgesetzt werden kann. In einigen Fällen sind bekannte Strukturen und Komponenten in Blockdiagrammform gezeigt, um zu vermeiden, dass die Konzepte der vorliegenden Technologie unklar werden. Gleiche Komponenten sind zum leichteren Verständnis mit identischen Elementnummern gekennzeichnet.
  • Einige Flash-Speicher und andere Solid-State-Speichervorrichtungen können Multi-Level-Cell- (MLC-) Speicher, Triple-Level-Cell- (TLC-) Speicher, Quadruple-Level-Cell- (QLC-) Speicher oder dergleichen implementieren, um mehrere Datenbits in derselben Speicherzelle zu speichern. Im Allgemeinen sind MLC-, TLC- und/oder QLC-Speicherzellen auf mehrere Zustände programmierbar, die jeweils durch separate Spannungsschwellen gekennzeichnet sind. So kann beispielsweise eine Zwei-Bit-MLC-Speicherzelle auf einen von vier verschiedenen Zuständen programmiert werden, eine Drei-Bit-TLC-Speicherzelle kann auf einen von acht verschiedenen Zuständen programmiert werden oder eine Vier-Bit-QLC-Speicherzelle kann auf einen von sechzehn verschiedenen Zuständen programmiert werden, wobei jeder Zustand einem bestimmten Spannungsbereich entspricht. MLC-, TLC- und QLC-Speicher können unterschiedliche Schreibzeiten, Lesezeiten, Programmieranforderungen, Zuverlässigkeiten, Fehlerraten oder dergleichen aufweisen.
  • In einem oder mehreren Beispielen können sich Foggy-und-Fine-Programmiertechniken für NAND-Flash-Speicher mit mehreren Bits pro Zelle auf eine zweiphasige oder Multi-State-Programmiertechnik (z. B. „Foggy/Fine-Programmierung“) beziehen, wobei NAND-Zellenspannungen in einer ersten Wortleitungsprogrammieroperation (z. B. Foggy-Programmieroperation) schnell nahe an gewünschte Spannungspegel (z. B., wie durch das in jeder Zelle gespeicherte Bitmuster bestimmt) gebracht werden, dann in einer zweiten Programmieroperation, in der die Programmschrittgröße viel kleiner ist (z. B. Fine-Programmieroperation) auf ihre endgültigen Spannungspegel programmiert werden.
  • Die Quadruple-Level-Cell- (QLC-) Technologie erfordert einen sehr präzisen Programmierprozess, um sechzehn Verteilungen in einem kleinen Spannungsbereich (-6,2 V) mit einer QLC-Zustandsbreite von -0,4 V zu platzieren. In einem Beispiel werden zwei Programmierdurchgänge verwendet, nämlich die zuvor genannten Foggy- und Fine-Programmierdurchgänge. Ein Nachteil dieses Ansatzes besteht darin, dass der Foggy-Programmierdurchgang unlesbar ist und daher vier Seiten Host-Daten zwischengespeichert werden müssen, bis der Fine-Durchgang abgeschlossen ist. Durch das Daten-Caching reduziert sich die für die Host- und Systemverwaltungsalgorithmen verfügbare Festplattenkapazität. Daher kann die Suche nach einer Alternative zur Foggy-Fine-Programmierung, die weniger Caching erfordert, die Festplattenkosten pro Gigabyte reduzieren oder eine Überversorgung ermöglichen, die die Lebensdauer der Festplatte erhöht. In einer oder mehreren hierin beschriebenen Implementierungen reduziert die vorliegende Technologie auf vorteilhafte Weise die Datenpufferanforderungen in der Steuerung, was die Funktionalität einer gegebenen Rechenvorrichtung verbessert.
  • In einer oder mehreren Implementierungen kann die Programmierung eines Speichers in mehreren Durchgängen (z. B. zwei Durchgängen) durchgeführt werden. So kann beispielsweise die Programmierung in einem TLC-Modus unter Verwendung der hierin beschriebenen Abbildungstechniken durchgeführt, dann auf einen QLC-Modus unter Verwendung der hierin beschriebenen umgekehrten Abbildungstechniken erweitert werden. In einer oder mehreren Implementierungen ist die Abbildung von TLC auf QLC kritisch, da diese Abbildung die Programmiergeschwindigkeit beeinflusst und ob die Bitfehlerrate (BER) und die Leselatenz über die vier QLC-Seiten ausgeglichen sind (wenn keine vertikale Codierung angenommen wird).
  • In einem Beispiel beinhaltet eine Abbildung die Programmierung von Standard-TLC in einem ersten Programmierdurchgang, dann die Aufteilung jedes TLC-Zustandes auf zwei benachbarte QLC-Zustände in einem zweiten Programmierdurchgang. Diese Abbildung erreicht die höchste Programmgeschwindigkeit (z. B. breite TLC-Zustände), die geringste Programmstörung (geringe Spannungsänderung im zweiten Programmdurchgang), kann aber zu einem unausgewogenen QLC-Gray-Code (z. B. 2328) führen, sodass die Leselatenz und die BER auf den vier Seiten (unten, Mitte, oben und Anfang) variieren. Die Seite mit acht Leseebenen kann die höchste BER und Leselatenz aufweisen.
  • Wie hierin genannt, ist ein Gray-Code eine Codierung von Informationen, bei der für eine definierte Sequenz nur ein einzelnes Bit bei jedem Schritt durch die Sequenz den Zustand ändert. Ein herkömmlicher Binärzähler weist diese Eigenschaft nicht auf, da zum Beispiel die Vier-Bit-Codierung für die Zahl drei 0011 ist und die Vier-Bit-Codierung für die Zahl vier 0100 ist. In diesem Beispiel erfordert der Übergang von 0011 auf 0100 die Änderung von drei Bits, nämlich den drei niedrigstwertigen Bits, von 1 auf 0 oder 0 auf 1. Ein Beispiel für einen Vier-Bit-Gray-Code ist in der nachstehenden Tabelle 1 dargestellt. Tabelle 1
    Zustand Muster
    0 0000
    1 0001
    2 0011
    3 0111
    4 1110
    5 1100
    6 1000
    7 1000
  • Es ist zu beachten, dass in Tabelle 1 ein einzelnes Bit den Zustand in allen Fällen ändert, in denen in der definierten Reihenfolge von einem Zustand zum nächsten gewechselt wird. Für eine bestimmte Anzahl von Bits wird vorausgesetzt, dass es mehrere Codierschemas geben kann, die Gray-Codes bilden.
  • Eine oder mehrere Implementierungen der vorliegenden Technologie bieten verschiedene Vorteile gegenüber anderen Verfahren (z. B. Foggy-/Fine-Programmierung), einschließlich, ohne Einschränkungen: 1) signifikantes Reduzieren der Größe des Programm-Caching (nur 25 % der Größe, die für die Foggy/Fine-Programmierung erforderlich ist), was die Festplattenkosten pro Gigabyte (GB) reduzieren oder mehr Überversorgung ermöglichen kann, die die Laufwerkslebensdauer erhöht, 2) Erreichen einer hohen Programmiergeschwindigkeit und 3) Ausgleichen der BER und Leselatenz auf allen Seiten.
  • Eine oder mehrere Implementierungen der vorliegenden Technologie stellen verschiedene Leistungsvorteile bereit, die die Funktionalität eines Computers (z. B. einer Rechenvorrichtung) verbessern. Zum Beispiel ermöglicht die vorliegende Technologie, Multi-State-Programmiertechniken ohne eine große Zunahme der Speicheranforderungen für die Steuerung zu verwenden. Als ein Ergebnis versteht es sich, dass Implementierungen der vorliegenden Technologie die Funktionalität einer Rechenvorrichtung, einschließlich eines Flash-Speichersystems, wie hierin beschrieben, durch mindestens ein Reduzieren der Speicheranforderungen verbessern kann, was auch die Verarbeitungslast einer solchen Rechenvorrichtung verbessern kann. Weiterhin kann Latenz beim Schreiben von Daten, wenn die hierin beschriebenen Multi-State-Programmiertechniken verwendet werden, auf eine Flash-Speichervorrichtung verbessert werden, wodurch sich die Funktionalität einer solchen Rechenvorrichtung weiterhin verbessert. Außerdem können die hierin beschriebenen Implementierungen die Decodierungslatenz verbessern und die Decodierungskomplexität von Daten reduzieren, wenn Multi-State-Programmierung verwendet wird, wodurch die Leistung der Rechenvorrichtung verbessert wird.
  • 1 ist ein Blockdiagramm, das Komponenten eines Flash-Speichersystems 110 gemäß Aspekten der vorliegenden Technologie veranschaulicht. Wie in 1 dargestellt, schließt das Flash-Speichersystem 110 eine Schnittstelle 115, eine Steuerung 120, einen Speicher 125, einen Cache 126, einen Codierer 160, einen ECC-Codierer 162, eine Abbildungskomponente 164, einen Decodierer 170, eine umgekehrte Abbildungskomponente 172, einen ECC-Decodierer 174 und Flash-Speichervorrichtungen 130 ein. Die Schnittstelle 115 ermöglicht die Kommunikation von Daten, Befehlen und/oder Steuersignalen zwischen dem Flash-Speichersystem 110 und einem Host 150. Die Steuerung 120 steuert den Betrieb des Flash-Speichersystems 110 zum Speichern und Abrufen von Daten in den Flash-Speichervorrichtungen 130 (z. B. als Flash-Speichervorrichtung 130(a), 130(b) bis 130(n) veranschaulicht, um mindestens einige Vorrichtungen darzustellen) gemäß Befehlen, die von dem Host 150 empfangen werden. Die Steuerung 120 kann einen Einkernprozessor oder einen Mehrkernprozessor, der mehrere separate Rechenkerne zum Ausführen von Anweisungen einschließt, einschließen. Zum Beispiel können die Rechenkerne in der Mehrkernimplementierung jeweilige Anweisungen parallel ausführen, einschließlich Abschnitten der Firmware des Flash-Speichersystems 110. Der Speicher 125, der ein Direktzugriffsspeicher (RAM) sein kann, stellt temporären Speicherplatz für die Steuerung 120 bereit, um Befehle zu verarbeiten und Daten zwischen dem Host 150 und den Flash-Speichervorrichtungen 130 zu übertragen.
  • Der Decodierer 170, der Speicher, Register, einen oder mehrere Prozessoren, ein Ein-Chip-System (SoC), eine anwendungsspezifische integrierte Schaltung (ASIC), ein Field Programmable Gate Array (FPGA) oder eine andere programmierbare Logikvorrichtung, diskrete Gate- oder Transistorlogikvorrichtung, diskrete Hardwarekomponenten oder eine beliebige Kombination davon einschließen kann und integral mit oder getrennt von der Steuerung 120 sein kann, decodiert Daten unter Verwendung von verschiedenen Decodierschemas. Der Speicher 125 kann den Cache 126 einschließen. Alternativ kann der Cache 126 getrennt von dem Speicher 125 als ein separater flüchtiger Speicher (z. B. Direktzugriffsspeicher) implementiert werden, der ein schnellerer Speicher als der Speicher 125 sein kann. In einem weiteren Beispiel kann der Cache 126 auch mit einer oder mehreren der Flash-Speichervorrichtungen 130 versehen sein. Der Codierer 160, der Speicher, Register, einen oder mehrere Prozessoren, ein Ein-Chip-System (SoC), eine anwendungsspezifische integrierte Schaltung (ASIC), ein Field Programmable Gate Array (FPGA) oder eine andere programmierbare Logikvorrichtung, diskrete Gate- oder Transistorlogikvorrichtung, diskrete Hardwarekomponenten oder eine beliebige Kombination davon einschließen kann und integral mit oder getrennt von der Steuerung 120 sein kann, codiert in die Flash-Speichervorrichtung 130 zu schreibende Daten unter Verwendung von verschiedenen Codierschemas. Der Betrieb jeder dieser Komponenten wird nachstehend ausführlicher beschrieben.
  • Die Schnittstelle 115 stellt physische und elektrische Verbindungen zwischen dem Host 150 und dem Flash-Speichersystem 110 bereit. Die Schnittstelle 115 ist so eingerichtet, dass sie die Kommunikation von Daten, Befehlen und/oder Steuersignalen zwischen dem Host 150 und dem Flash-Speichersystem 110 über die physischen und elektrischen Verbindungen ermöglicht. Die Verbindung und die Kommunikation mit der Schnittstelle 115 können auf einer Standardschnittstelle wie Universal Serial Bus (USB), Small Computer System Interface (SCSI), Serial Advanced Technology Attachment (SATA), Mini-SATA (mSATA), PCle usw. basieren. Alternativ können die Verbindung und/oder Kommunikation auf einer proprietären Schnittstelle basieren, obwohl die vorliegende Technologie nicht auf eine bestimmte Art von Schnittstelle beschränkt ist.
  • Der Host 150 kann eine Rechenvorrichtung sein, wie etwa ein Computer/Server, ein Smartphone oder eine beliebige andere elektronische Vorrichtung, die Daten von dem Flash-Speichersystem 110 liest und Daten in dieses schreibt. Der Host 150 kann ein Betriebssystem oder eine andere Software aufweisen, die Lese- und Schreibbefehle an das Flash-Speichersystem 110 ausgibt. Das Flash-Speichersystem 110 kann mit dem Host 150 integriert sein oder kann extern zu dem Host 150 sein. Das Flash-Speichersystem 110 kann drahtlos mit dem Host 150 verbunden sein oder kann physisch mit dem Host 150 verbunden sein.
  • Die Steuerung 120 kann auch einen internen Verwaltungsprozessor einschließen, der auf einem der Kerne der Steuerung 120 in einer Mehrkernimplementierung betrieben wird. Der interne Verwaltungsprozessor kann die Schnittstelle 115 verwenden, um mit anderen Komponenten zu kommunizieren, die in 1 veranschaulicht sind, einschließlich des Hosts 150, des Speichers 125, der Steuerung 120 und der Flash-Speichervorrichtungen 130.
  • 1 zeigt mehrere Flash-Speichervorrichtungen 130. Das Flash-Speichersystem 110 kann eine oder mehrere Flash-Speichervorrichtungen 130 einschließen und ist nicht auf eine bestimmte Anzahl von Flash-Speichervorrichtungen 130 beschränkt. Die Flash-Speichervorrichtungen 130 können jeweils einen einzigen Flash-Speicherchip oder Flash-Speicher-Die einschließen. Die Flash-Speichervorrichtungen 130 können unter mehreren Kanälen organisiert sein, durch die Daten durch die Steuerung 120 von den Flash-Speichervorrichtungen 130 gelesen und in diese geschrieben werden, oder mit einem einzigen Kanal gekoppelt sein. Die Flash-Speichervorrichtungen 130 können unter Verwendung von NAND-Flash-Speicher, einschließlich 3D-NAND-Speicher, implementiert werden, wobei Speicherzellen in mehreren Schichten gestapelt werden, wobei Triple-Level Cells (TLC) und/oder Quadruple-Level Cells (QLC) verwendet werden, die drei bzw. vier Bits pro Zelle speichern können. Zum Beispiel können die Flash-Speichervorrichtungen NAND-Flash-Speicher einschließen, der aus Speicherzellen zusammengesetzt ist, die zum Speichern von mehreren Bits oder mehreren Ebenen programmiert werden können, die als Multi-Level Cells (MLC) bezeichnet werden, wie etwa die vorgenannten TLC und/oder QLC.
  • Außerdem können die Speichervorrichtungen 130 jeweils ein oder mehrere Register zum Speichern von Operationsparametern der jeweiligen Flash-Speichervorrichtungen 130 einschließen. In einem Beispiel können solche Operationsparameter einschließen: Leseoperationsparameter, wie etwa Lesespannungen; Schreiboperationsparameter, wie etwa Anfangspulswert, inkrementeller Pulswert und Pulsweite; und Löschoperationsparameter, wie etwa Anfangspulswert, inkrementeller Pulswert und Pulsweite.
  • Wie veranschaulicht, weisen die Flash-Speichervorrichtungen 130 mehrere Speicherzellen auf, die in Speicherblöcke, wie etwa Flash-Speicherblöcke 140 (z. B. als Flash-Speicherblöcke 140(a), 140(b) bis 140(n) veranschaulicht, um mindestens einige Blöcke in jeweiligen Flash-Speichervorrichtungen darzustellen) verteilt sind. Die Flash-Speichervorrichtungen 130 können einen oder mehrere Flash-Speicherblöcke 140 aufweisen, und die Flash-Speichervorrichtungen 130 können jeweils die gleiche oder eine unterschiedliche Anzahl von Flash-Speicherblöcken 140 aufweisen. Die Flash-Speicherblöcke 140 können als Datenblöcke oder Speicherblöcke bezeichnet werden und sind durch die Steuerung 120 unter Verwendung einer physischen Blockadresse adressierbar. Jeder der Flash-Speicherblöcke 140 ist weiter in mehrere Datensegmente oder Seiten aufgeteilt, die durch die Steuerung 120 unter Verwendung einer physischen Seitenadresse oder eines Offsets von einer physischen Blockadresse des Speicherblocks, der die referenzierte Seite enthält, adressierbar sind. Die Seiten können Sektoren oder andere Host-Dateneinheiten speichern. Die Flash-Speicherblöcke 140 stellen die Einheiten von Daten dar, die innerhalb der Flash-Speichervorrichtungen 130 in einer einzigen Löschoperation gelöscht werden. Die Seiten stellen die Einheiten von Daten dar, die in einer Lese- oder Schreiboperation von den Flash-Speichervorrichtungen 130 gelesen oder in diese geschrieben werden. Obwohl die Flash-Speichervorrichtungen 130 unter Bezugnahme auf Blöcke und Seiten beschrieben sind, kann andere Terminologie verwendet werden, um sich auf diese Dateneinheiten innerhalb einer Flash-Speichervorrichtung zu beziehen.
  • Es versteht sich weiterhin, dass die vorliegende Technologie nicht auf eine bestimmte Kapazität von Flash-Speicher beschränkt ist. Zum Beispiel können Speicherblöcke jeweils 32, 64, 128 oder 512 Seiten oder eine beliebige andere Anzahl von Seiten aufweisen. Zusätzlich können Seiten jeweils zum Beispiel 512 Bytes, 2 KB, 4 KB oder 32 KB aufweisen. Die Sektoren können jeweils zum Beispiel 512 Bytes, 4 KB oder andere Größen aufweisen. Es kann einen oder mehrere Sektoren pro Seite geben.
  • In 1 stellen der Speicher 125 und der Cache 126 flüchtigen Speicher dar, der während des Betriebs des Flash-Speichersystems 110 mit der Steuerung 120 gekoppelt ist und von dieser verwendet wird. Die Steuerung 120 kann Befehle und/oder Daten in dem Speicher 125 und/oder dem Cache 126 puffern. Die Steuerung 120 kann den Speicher 125 und/oder den Cache 126 auch verwenden, um Adressabbildungstabellen oder Lookup-Tabellen zu speichern, die verwendet werden, um von dem Host 150 verwendete logische Adressen in virtuelle und/oder physische Adressen umzuwandeln, die Blöcken und Seiten der Flash-Speichervorrichtungen 130 entsprechen. Andere Typen von Tabellen, Daten, Statusanzeigern usw., die verwendet werden, um die Flash-Speichervorrichtungen 130 zu verwalten, können auch von der Steuerung 120 in dem Speicher 125 gespeichert werden. Der Speicher 125 und/oder der Cache 126 können unter Verwendung von dynamischem Direktzugriffsspeicher (DRAM), statischem Direktzugriffsspeicher (SRAM) oder anderen Typen von flüchtigem Direktzugriffsspeicher implementiert werden, ohne vom Umfang der vorliegenden Technologie abzuweichen. Die Steuerung 120 kann auch periodisch den Inhalt des Speichers 125 und/oder des Cache 126 in einen oder mehrere bezeichnete Flash-Speicherblöcke 140 speichern, wie etwa vor dem Herunterfahren des Flash-Speichersystems 110.
  • Die Steuerung 120 verwaltet den Datenfluss zwischen dem Host 150 und den Flash-Speichervorrichtungen 130. Die Steuerung 120 ist eingerichtet, um Befehle und Daten von dem Host 150 über die Schnittstelle 115 zu empfangen. Zum Beispiel kann die Steuerung 120 Daten und einen Schreibbefehl (hierin auch als „Programmier“- oder „Programm“-Befehl bezeichnet) von dem Host 150 empfangen, um die Daten in die Flash-Speichervorrichtungen 130 zu schreiben. Die Steuerung 120 ist weiterhin eingerichtet, um Daten über die Schnittstelle 115 an den Host 150 zu senden. Zum Beispiel kann die Steuerung 120 Daten von den Flash-Speichervorrichtungen 130 lesen und die Daten als Reaktion auf einen Lesebefehl an den Host 150 senden.
  • Die Steuerung 120 ist weiterhin eingerichtet, um in den Flash-Speichervorrichtungen 130, dem Speicher 125 und dem Cache 126 gespeicherte Daten basierend auf internen Steueralgorithmen oder anderen Typen von Befehlen, die von dem Host 150 empfangen werden können, zu verwalten. Zum Beispiel ist die Steuerung 120 eingerichtet, um Operationen, wie etwa Speicherbereinigung (GC), Fehlerkorrekturcodiertechniken (z. B. LDPC), Verschleißausgleich, Sicherheitstechniken (z. B. Verschlüsselung), Komprimierungstechniken, Redundanztechniken (z. B. Techniken mit einem redundanten Array unabhängiger Platten (RAID)), Multi-State-Programmierung usw., durchzuführen. Zum Beispiel kann die Steuerung 120 Fehlerkorrekturcodierung verwenden, um auf die Flash-Speichervorrichtungen 130 geschriebene Daten zu schützen. In diesem Zusammenhang kann der ECC-Codierer 162 Daten codieren, die vom Host 150 empfangen wurden. Die Steuerung 114 (oder (eine) Komponente(n) davon) schreibt dann die codierten Daten in die eine oder mehreren der Flash-Speichervorrichtungen 130 und/oder puffert die codierten Daten in dem Speicher 125 und/oder dem Cache 126. In einem zweiten Programmierdurchgang oder -zustand decodiert der ECC-Decodierer 174 die Daten von der einen oder den mehreren der Flash-Speichervorrichtungen 130 und/oder gepufferte Daten in dem Speicher 125 und/oder dem Cache 126. Die Steuerung 114 (oder (eine) Komponente(n) davon) schreibt dann die decodierten Daten als Teil des zweiten Programmierdurchgangs in die eine oder mehreren der Flash-Speichervorrichtungen 130. In einer oder mehreren Implementierungen ist der Cache 126 getrennt und verschieden von den Flash-Speichervorrichtungen 130, und der Cache 126 ist nicht Teil der Flash-Speichervorrichtungen 130.
  • Wenn die Steuerung 120 (oder (eine) Komponente(n) davon) anschließend die Daten von der einen oder den mehreren der Flash-Speichervorrichtungen 130 liest, werden die Daten von der Steuerung 120 über die Schnittstelle 115 an den Host 150 bereitgestellt. Fachleute werden mit anderen Operationen vertraut sein, die durch eine Steuerung in einer Flash-Speichervorrichtung durchgeführt werden, die hierin nicht im Detail beschrieben werden.
  • Die Steuerung 120 kann mit einem Mehrzweckprozessor, Mehrkernprozessor, Mikrocontroller, digitalen Signalprozessor (DSP), einem Ein-Chip-System (SoC), einer anwendungsspezifischen integrierten Schaltung (ASIC), einem Field Programmable Gate Array (FPGA) oder einer anderen programmierbaren Logikvorrichtung, diskreten Gate- oder Transistorlogikvorrichtung, diskreten Hardwarekomponenten oder einer beliebigen Kombination davon implementiert werden, die zum Durchführen der hierin beschriebenen Operationen und Funktionen ausgelegt und eingerichtet sind. In der Mehrkernprozessor-Implementierung kann jeder der mehreren Rechenkerne jeweilige Anweisungen parallel ausführen, einschließlich Abschnitten der Firmware des Flash-Speichersystems 110. Die Steuerung 120 kann die hierin beschriebenen Operationen und Funktionen durchführen, indem sie eine oder mehrere Sequenzen von Anweisungen, die auf einem maschinen-/computerlesbaren Medium gespeichert sind, ausführt. Bei dem maschinen-/computerlesbaren Medium kann es sich um die Flash-Speichervorrichtungen 130, den Speicher 125, den Cache 126 oder andere Typen von Medien handeln, von denen die Steuerung 120 Anweisungen oder Code lesen kann. Zum Beispiel kann das Flash-Speichersystem 110 einen Nur-Lese-Speicher (ROM), wie etwa einen EPROM oder EEPROM einschließen, der mit Firmware/Software codiert ist, die eine oder mehrere Sequenzen von Anweisungen aufweist, die während des Betriebs des Flash-Speichersystems 110 durch die Steuerung 120 gelesen und ausgeführt werden.
  • 2 veranschaulicht konzeptionell ein Beispiel für eine Multi-State-Programmierung, die von verschiedenen Komponenten eines Flash-Speichersystems gemäß einer oder mehreren Implementierungen der vorliegenden Technologie bereitgestellt wird; 2 wird unter Bezugnahme auf Komponenten des Flash-Speichersystems 110 in 1 erörtert.
  • Wie veranschaulicht, werden Host-Daten 255 von einer Host-Vorrichtung (z. B. dem Host 150) durch den ECC-Codierer 162 empfangen. Im Beispiel von 2 werden zum Programmieren von Daten in den NAND-Flash-Speicher (eine oder mehrere der Flash-Speichervorrichtungen 130) drei Seiten von Daten als Teil eines ersten Programmierdurchgangs in den Flash-Speicher geschrieben, der TLC-Zellen verwendet, und vier Seiten von Daten werden als Teil eines zweiten Programmierdurchgangs in den Flash-Speicher geschrieben, der QLC-Zellen verwendet (z. B. vier Bits pro Zelle). Obwohl in diesem Beispiel drei und vier Seiten von Daten beschrieben sind, kann die vorliegende Technologie basierend auf dem Typ von Flash-Speicher unterschiedliche Anzahlen von Seiten schreiben.
  • Unter Verwendung eines ECC-Codierschemas (z. B. Reed-Solomon, BCH, LDPC usw.) codiert der ECC-Codierer 162 die Host-Daten 255, wobei vier Seiten von codierten Daten erzeugt werden. Der ECC-Codierer 162 sendet die vier Seiten von codierten Daten an die Abbildungskomponente 164. Die Abbildungskomponente 164 empfängt die vier Seiten codierter Daten und führt eine Abbildungsoperation durch, um die codierten Daten in abgebildete Daten in Form von Gray-Code umzuwandeln. Beispiele für die Abbildung von Daten auf Gray-Code werden im Folgenden näher beschrieben, z. B. in 3-5. Das Ergebnis der Abbildungsoperation erzeugt drei Seiten von Daten zum Speichern im Flash-Speicher und eine zusätzliche Seite von Daten zum Speichern in einem Cache. Die Steuerung 120 (oder alternativ der ECC-Codierer 162) führt eine erste Programmieroperation 250 durch, um die drei Seiten von abgebildeten Daten als Teil eines ersten Programmierdurchgangs in eine oder mehrere der Flash-Speichervorrichtungen 130 (z. B. NAND-Flash-Speicher) zu schreiben. Die Steuerung 120 (oder alternativ die Abbildungskomponente 164) schreibt die eine Seite von Daten in einen Cache (z. B. den Cache 126). In einem Beispiel ist der Cache 126 von den Flash-Speichervorrichtungen 130 (z. B. NAND) getrennt. In einem weiteren Beispiel befindet sich der Cache 126 nicht an der gleichen Stelle wie dort, wo die ersten abgebildeten Daten geschrieben sind, aber könnte in den Flash-Speichervorrichtungen 130 gespeichert werden (z. B. im NAND, aber an einer anderen Stelle).
  • Die Steuerung 120 (oder die umgekehrte Abbildungskomponente 172) führt eine Leseoperation für die in dem Cache 126 gespeicherte eine Seite von Daten durch. Die Steuerung 120 (oder die umgekehrte Abbildungskomponente 172) führt eine zweite Leseoperation für die in den Flash-Speichervorrichtungen 130 gespeicherten drei Seiten von Daten durch.
  • Die umgekehrte Abbildungskomponente 172 führt eine umgekehrte Abbildungsoperation auf den drei Seiten von Daten durch, die mindestens teilweise auf der einen Seite von Daten aus dem Cache 126 basiert, um vier Seiten von Daten zu erzeugen. Die vier Seiten von Daten entsprechen den vier Seiten von Daten, die in einem Beispiel vom Host empfangen wurden. Ein Beispiel für umgekehrtes Abbilden von Daten ist in 4 und 5 unten ausführlicher erörtert. Die umgekehrte Abbildungskomponente 172 sendet die vier Seiten von Daten zur ECC-Decodierung an den ECC-Decodierer 174.
  • Der ECC-Decodierer 174 decodiert unter Verwendung eines ECC-Decodierschemas weiterhin die vier Seiten von Daten, um Fehler aus den Daten zu beseitigen und die Daten zum Schreiben in eine oder mehrere der Flash-Speichervorrichtungen 130 vorzubereiten. Als einen zweiten Durchgang der Programmierung zum Schreiben auf den TLC-Speicher führt die Steuerung 120 (oder der ECC-Decodierer 174) eine Programmieroperation 254 durch, um die ECC-decodierten vier Seiten von Daten in eine oder mehrere der Flash-Speichervorrichtungen 130 zu schreiben.
  • 3 veranschaulicht konzeptionell ein Beispiel für Abbildung gemäß einer oder mehreren Implementierungen der vorliegenden Technologie. 3 wird unter Bezugnahme auf Komponenten des Flash-Speichersystems 110 in 1 erörtert.
  • In einem ersten Programmierdurchgang werden drei Seiten einer abgebildeten Version der Host-Daten auf Standard-TLC (232) programmiert, während eine Seite in einem Cache (z. B. dem Cache 126) gespeichert wird. In einem zweiten Programmierdurchgang werden die drei TLC-Seiten zusammen mit der zwischengespeicherten Seite gelesen, um die Host-Daten durch eine umgekehrte Abbildungsoperation wiederherzustellen. Die Host-Daten werden verwendet, um den bereits programmierten TLC in QLC-Verteilungen zu erweitern, wie in 3 dargestellt.
  • 3 veranschaulicht mehrere Sätze von drei Bits, einschließlich Bits 311, Bits 312, Bits 313, Bits 314, Bits 315, Bits 316, Bits 317, Bits 318, Bits 319, Bits 320, Bits 321, Bits 322, Bits 323, Bits 324 und Bits 325. Diese Bits können mit Daten übereinstimmen, die in einem ersten Modus für den TLC-Speicher in die Flash-Speichervorrichtung 130 geschrieben wurden, wie zuvor erläutert. Wie weiterhin veranschaulicht, können die vorgenannten Sätze von drei Bits logisch in Spalten 350, 352 und 354 eingeteilt werden, die in einer beispielhaften Abbildungstabelle von 5 näher erläutert werden. In diesem Beispiel verwendet der Flash-Speicher einen TLC-Speicher, der acht mögliche Zustände pro Zelle (z. B. Werte von 000 bis 111) speichern kann, was drei Informationsbits pro Zelle ergibt. Das Lesen von in TLC-Speicher gespeicherten Daten kann daher das Lesen von bis zu sieben Verteilungen erfordern.
  • In diesem Beispiel verwendet der Flash-Speicher eine Quad-Level-Speicherzelle (QLC), die sechzehn mögliche Zustände pro Zelle (z. B. Werte von 0000 bis 1111) speichern kann, was vier Informationsbits pro Zelle ergibt. Das Lesen von in QLC-Speicher gespeicherten Daten kann daher das Lesen von fünfzehn Verteilungen erfordern.
  • In einem Beispiel für die Verwendung des TLC-Speichers liest die umgekehrte Abbildungskomponente 172 die drei Seiten von Daten aus den Flash-Speichervorrichtungen 130 und die eine Seite von Daten aus dem Cache 126. Unter Verwendung dieser Abbildungstechnik mehrere Sätze von vier Bits, einschließlich der Bits 311, Bits 332, Bits 333, Bits 334, Bits 335, Bits 336, Bits 337, Bits 338, Bits 339, Bits 340, Bits 341, Bits 342, Bits 343, Bits 344, Bits 345 und Bits 346.
  • 4 veranschaulicht konzeptionell ein Beispiel für die Abbildung und die anschließende Durchführung einer umgekehrten Abbildung gemäß einer oder mehreren Implementierungen der vorliegenden Technologie. 4 wird unter Bezugnahme auf Komponenten des Flash-Speichersystems 110 in 1 erörtert.
  • Die Implementierung der vorliegenden Technologie bietet eine vorteilhafte Abbildung eines bestimmten TLC-Gray-Codes auf QLC-Gray-Code, der nur eine Seite von Daten zwischenspeichert. So kann zum Beispiel die vorliegende Technologie auch verwendet werden, um MLC auf TLC oder QLC mit einer bzw. zwei zwischengespeicherten Seiten abzubilden.
  • Wie veranschaulicht, werden vier Bits von Host-Daten 410 von der Abbildungskomponente 164 empfangen. Die Abbildungskomponente 164 speichert ein Datenbit aus den Host-Daten 410 in dem Cache 126 zwischen. Für jeden Satz von vier Datenbits führt die Abbildungskomponente 164 eine Abbildungsoperation durch, um drei Bits eines ausgeglichenen Gray-Codes 430 (z. B. abgebildete Daten) zum Speichern gemäß einem 232 ausgeglichenen Gray-Code-Schema in den Flash-Speichervorrichtungen 130 zu erzeugen.
  • Wie veranschaulicht, werden drei Bits des ausgeglichenen Gray-Codes 430 von der umgekehrten Abbildungskomponente 172 empfangen. Für jeden Satz von drei Datenbits des ausgeglichenen Gray-Codes 430 führt die Abbildungskomponente 164 eine Abbildungsoperation durch, um vier Bits eines ausgeglichenen Gray-Codes 440 zum Speichern gemäß einem 4344 ausgeglichenen Gray-Code-Schema in den Flash-Speichervorrichtungen 130 zu erzeugen.
  • 5 veranschaulicht konzeptionell ein Beispiel für Daten in einer ersten Tabelle und ein Beispiel für abgebildete Daten in einer zweiten Tabelle. Die Host-Datentabelle 510 schließt, wie veranschaulicht, Darstellungen von Daten, die der Spalte 360, der Spalte 362, der Spalte 364 und der Spalte 366 in 3 entsprechen, ein. 5 wird unter Bezugnahme auf Komponenten des Flash-Speichersystems 110 in 1 erörtert.
  • Die Abbildungskomponente 164 führt eine Abbildungsoperation 530 durch, um die drei Bits eines ausgeglichenen Gray-Codes 430 (z. B. abgebildete Daten) zum Speichern gemäß einem 232 ausgeglichenen Gray-Code-Schema in den Flash-Speichervorrichtungen 130 zu erzeugen. Die Tabelle 520 schließt, wie veranschaulicht, Darstellungen von Daten, die der Spalte 350, der Spalte 352 und der Spalte 354 in 3 entsprechen, ein. Weiterhin schließt die Tabelle 520 eine Spalte, die der einen Seite der zwischengespeicherten Daten 420 entspricht, ein. Wie zu erkennen ist, schließt die Spalte 350 zwei Übergänge ein, schließt die Spalte 352 drei Übergänge ein und schließt die Spalte 354 zwei Übergänge ein. Die Spalte, die der einen Seite der zwischengespeicherten Daten 420 entspricht, schließt acht Übergänge ein. Da die zwischengespeicherten Daten 420 nicht im TLC-Flash-Speicher gespeichert werden, können die zwischengespeicherten Daten 420 mehr Übergänge einschließen als die Spalte 350, die Spalte 352 und die Spalte 354.
  • Die umgekehrte Abbildungskomponente 172 führt eine umgekehrte Abbildungsoperation 540 durch, um die vier Bits eines ausgeglichenen Gray-Codes 410 (z. B. umgekehrt abgebildete Daten) zum Speichern gemäß einem 4344 ausgeglichenen Gray-Code-Schema in den Flash-Speichervorrichtungen 130 zu erzeugen. Wie veranschaulicht, schließt die Host-Datentabelle 510 Daten, die im 4344 ausgeglichenen Gray-Code-Schema für die Spalte 360, die Spalte 362, die Spalte 364 und die Spalte 366 dargestellt sind, ein. So schließt zum Beispiel die Spalte 360 vier Übergänge ein, die Spalte 362 schließt drei Übergänge ein, die Spalte 364 schließt vier Übergänge ein und die Spalte 366 schließt vier Übergänge ein.
  • 6 zeigt ein Flussdiagramm von einem Prozess 600 zum Durchführen einer Multi-State-Programmierung gemäß einer oder mehreren Implementierungen. Weiterhin sind zu Erläuterungszwecken die Blöcke des Prozesses 600 hierin als seriell oder linear erfolgend beschrieben. Allerdings können mehrere Blöcke des Prozesses 600 parallel erfolgen. Zusätzlich müssen die Blöcke des Prozesses 600 nicht in der gezeigten Reihenfolge durchgeführt werden, und/oder ein oder mehrere Blöcke des Prozesses 600 müssen nicht durchgeführt werden und/oder können durch andere Operationen ersetzt werden. Ein oder mehrere Blöcke von 6 können durch ein Flash-Speichersystem ausgeführt werden (einschließlich z. B. einer Steuerung einer Flash-Speichervorrichtung, einer Datenspeichersteuerung eines Datenspeichersystems oder einer Solid-State-Speichervorrichtung (SSD), eines Prozessors oder dergleichen). Beispiele für ein Flash-Speichersystem oder eine Steuerung können das Flash-Speichersystem 110 und/oder die Steuerung 120 sein. Auf ähnliche Weise kann ein nicht transitorisches maschinenlesbares Medium maschinenausführbare Anweisungen darauf einschließen, die bei Ausführung durch einen Computer oder eine Maschine die Blöcke von 6 durchführen. Die Schritte in Prozess 600 können als Hardware/Firmware oder Software implementiert sein. 6 wird unter Bezugnahme auf Komponenten des Flash-Speichersystems 110 beschrieben.
  • Der Prozess 600 kann initiiert werden, wenn Host-Daten (z. B. von Host 150) durch den ECC-Codierer 162 empfangen werden. In einem Beispiel, in dem eine gegebene Flash-Speichervorrichtung QLC-Speicher verwendet, können von dem Host vier Seiten von Daten zum Programmieren in die Flash-Speichervorrichtung empfangen werden. Der ECC-Codierer 162 codiert Daten basierend auf einer ersten Codieroperation, um einen codierten Datensatz zu erzeugen. Die erste Codieroperation kann auf einem ECC-Codierschema basieren.
  • Bei 610 erzeugt die Steuerung 120 (oder Abbildungskomponente 164) eine Abbildung von Daten basierend auf einem Datensatz, wobei die Abbildung von Daten erste abgebildete Daten und zweite abgebildete Daten einschließt. In einem Beispiel ist eine Menge der ersten abgebildeten Daten größer als eine Menge der zweiten abgebildeten Daten. Darüber hinaus kann das Erzeugen der Abbildung von Daten, die auf dem Datensatz basieren, weiterhin Folgendes beinhalten: Erzeugen der ersten abgebildeten Daten und der zweiten abgebildeten Daten, die auf einer Gray-Code-Codierung des Datensatzes basieren, wobei die ersten abgebildeten Daten erste Daten einschließen, die in Zeilen und Spalten darstellbar sind, die ersten Daten durch ausgeglichene Gray-Codes dargestellt werden und die zweiten abgebildeten Daten zweite Daten einschließen. Die Daten in allen zwei Zeilen der ersten Daten sind ein identisches Paar. Eine Anzahl von Übergängen für die ersten abgebildeten Daten kann sieben Übergänge einschließen, und eine Anzahl von Übergängen für die zweiten abgebildeten Daten schließt acht Übergänge ein, wobei jeder Übergang einer Änderung zwischen benachbarten Daten entspricht. Weiterhin schließen die ersten abgebildeten Daten mindestens ein höchstwertiges Bit (MSB) ein und die zweiten abgebildeten Daten schließen mindestens ein niedrigstwertiges Bit (LSB) ein.
  • In einer Implementierung schließen die ausgeglichenen Gray-Codes eine Summe von Übergängen für jede Spalte in der ersten Vielzahl von Daten ein, wobei eine Gesamtsumme der Summen der Übergänge für alle Spalten nicht größer ist als eine maximale Anzahl von Leseebenen zum Schreiben im ersten Modus in die Flash-Speichervorrichtung. Außerdem sind eine Summe der Übergänge für eine der Spalten und eine Summe der Übergänge für eine nächste der Spalten gleich oder unterscheiden sich um nicht mehr als eins. Weiterhin stellt jeder der Übergänge für eine Spalte eine Änderung der Werte zwischen benachbarten Zeilen innerhalb der Spalte dar.
  • Bei 612 führt die Steuerung 120 (oder die Abbildungskomponente 164) eine erste Programmieroperation durch, um in einem ersten Modus die ersten abgebildeten Daten in die Speichervorrichtung zu schreiben.
  • Bei 614 speichert die Steuerung 120 (oder die Abbildungskomponente 164) die zweiten abgebildeten Daten in einem Cache (z. B. dem Cache 126).
  • Bei 616 erzeugt die Steuerung 120 (oder die umgekehrte Abbildungskomponente 172) einen zweiten Datensatz, basierend auf einer umgekehrten Abbildung der Abbildung von Daten einschließlich der zweiten abgebildeten Daten aus dem Cache und der ersten abgebildeten Daten aus der Speichervorrichtung, um in einem zweiten Modus in die Speichervorrichtung zu schreiben, wobei der zweite Datensatz den Datensatz einschließt und der erste Modus und der zweite Modus verschiedenen Modi des Schreibens in die Speichervorrichtung entsprechen. In einer Implementierung schließt Erzeugen des zweiten Datensatzes Durchführen einer ersten Leseoperation mit den zweiten abgebildeten Daten aus dem Cache und Durchführen einer zweiten Leseoperation mit den ersten abgebildeten Daten aus der Speichervorrichtung ein. Darüber hinaus schließt Erzeugen des zweiten Datensatzes Durchführen einer ersten Leseoperation mit den zweiten abgebildeten Daten aus dem Cache, Durchführen einer zweiten Leseoperation mit den ersten abgebildeten Daten aus der Speichervorrichtung und Erzeugen des zweiten Datensatzes, der durch einen Satz ausgeglichener Gray-Codes dargestellt wird, basierend auf einer Kombination der ersten abgebildeten Daten und der zweiten abgebildeten Daten, ein, wobei der Satz ausgeglichener Gray-Codes eine Summe von Übergängen einschließt, die nicht größer als eine maximale Anzahl von Leseebenen zum Schreiben im zweiten Modus in die Speichervorrichtung ist.
  • Zusätzlich führt der ECC-Decodierer 174 eine Decodieroperation basierend auf dem zweiten Datensatz durch, um einen decodierten Datensatz zu erzeugen, und führt eine zweite Programmieroperation durch, um im zweiten Modus den decodierten Datensatz in die Speichervorrichtung zu schreiben. In einem Beispiel bezieht sich der zuvor genannte erste Modus auf die Programmierung für den Triple-Level-Cell- (TLC-) Speicher, und der zweite Modus bezieht sich auf die Programmierung für den Quadruple-Level-Cell- (QLC-) Speicher.
  • Verschiedene Beispiele von Aspekten der Offenbarung werden nachfolgend beschrieben. Diese dienen als Beispiele und schränken die vorliegende Technologie nicht ein.
  • Ein oder mehrere Aspekte der vorliegenden Technologie stellen Verfahren zum Bereitstellen einer verbesserten mehrphasigen Programmierung mit einer reduzierten Speicheranforderung zum Puffern von Daten bereit. Gemäß einigen Aspekten kann ein Verfahren Erzeugen einer Abbildung von Daten basierend auf einem Datensatz, die Abbildung von Daten einschließlich erster abgebildeter Daten und zweiter abgebildeter Daten einschließen, wobei eine Menge der ersten abgebildeten Daten größer ist als eine Menge der zweiten abgebildeten Daten. Das Verfahren kann auch Durchführen einer ersten Programmieroperation einschließen, um in einem ersten Modus die ersten abgebildeten Daten in die Speichervorrichtung zu schreiben. Das Verfahren kann auch Speichern der zweiten abgebildeten Daten in einem Cache einschließen. Das Verfahren kann auch Erzeugen eines zweiten Datensatzes einschließen, basierend auf einer umgekehrten Abbildung der Abbildung von Daten einschließlich der zweiten abgebildeten Daten aus dem Cache und der ersten abgebildeten Daten aus der Speichervorrichtung, um in einem zweiten Modus in die Speichervorrichtung zu schreiben, wobei der zweite Datensatz den Datensatz einschließt und der erste Modus und der zweite Modus verschiedenen Schreibmodi in die Speichervorrichtung entsprechen.
  • Gemäß anderen Aspekten kann ein System Flash-Speichervorrichtungen und eine Steuerung einschließen. Die Steuerung kann eingerichtet sein, um eine Abbildung von Daten basierend auf einem Datensatz zu erzeugen, wobei die Abbildung von Daten erste abgebildete Daten und zweite abgebildete Daten einschließt, wobei eine Menge der ersten abgebildeten Daten größer ist als eine Menge der zweiten abgebildeten Daten. Die Steuerung kann auch eingerichtet sein, um eine erste Programmieroperation durchzuführen, um in einem ersten Modus die ersten abgebildeten Daten in mindestens eine der Vielzahl von Flash-Speichervorrichtungen zu schreiben. Die Steuerung kann eingerichtet sein, um die zweiten abgebildeten Daten in einen Cache zu speichern. Die Steuerung kann eingerichtet sein, um einen zweiten Datensatz zu erzeugen, basierend auf einer umgekehrten Abbildung der Abbildung von Daten einschließlich der zweiten abgebildeten Daten aus dem Cache und der ersten abgebildeten Daten aus der Speichervorrichtung, um in einem zweiten Modus in die Speichervorrichtung zu schreiben, wobei der zweite Datensatz den Datensatz umfasst und der erste Modus und der zweite Modus verschiedenen Modi zum Schreiben in die mindestens eine der Vielzahl von Flash-Speichervorrichtung entsprechen.
  • In weiteren Aspekten kann ein System Mittel zum Erzeugen einer Abbildung von Daten basierend auf einem Datensatz einschließen, wobei die Abbildung von Daten erste abgebildete Daten und zweite abgebildete Daten einschließt, wobei eine Menge der ersten abgebildeten Daten größer ist als eine Menge der zweiten abgebildeten Daten. Das System kann auch Mittel zum Durchführen einer ersten Programmieroperation einschließen, um in einem ersten Modus die ersten abgebildeten Daten in eine Speichervorrichtung zu schreiben. Das System kann auch Mittel zum Speichern der zweiten abgebildeten Daten in einen Cache einschließen. Das System kann auch Mittel zum Erzeugen eines zweiten Datensatzes einschließen, basierend auf einer umgekehrten Abbildung der Abbildung von Daten einschließlich der zweiten abgebildeten Daten aus dem Cache und der ersten abgebildeten Daten aus der Speichervorrichtung, um in einem zweiten Modus in die Speichervorrichtung zu schreiben, wobei der zweite Datensatz den Datensatz umfasst und der erste Modus und der zweite Modus verschiedenen Schreibmodi in die Speichervorrichtung entsprechen.
  • In weiteren Aspekten kann ein nichtflüchtiges maschinenlesbares Medium maschinenausführbare Anweisungen einschließen, die bei Ausführung von einem Prozessor ein Verfahren ausführen. Das Verfahren kann auch Erzeugen einer Abbildung von Daten einschließen, basierend auf einem Datensatz, wobei die Abbildung von Daten erste abgebildete Daten und zweite abgebildete Daten einschließt, wobei eine Menge der ersten abgebildeten Daten größer ist als eine Menge der zweiten abgebildeten Daten. Das Verfahren kann auch Durchführen einer ersten Programmieroperation einschließen, um in einem ersten Modus die ersten abgebildeten Daten in die Speichervorrichtung zu schreiben. Das Verfahren kann auch Speichern der zweiten abgebildeten Daten in einem Cache einschließen. Das Verfahren kann auch Erzeugen eines zweiten Datensatzes einschließen, basierend auf einer umgekehrten Abbildung der Abbildung von Daten einschließlich der zweiten abgebildeten Daten aus dem Cache und der ersten abgebildeten Daten aus der Speichervorrichtung, um in einem zweiten Modus in die Speichervorrichtung zu schreiben, wobei der zweite Datensatz den Datensatz einschließt und der erste Modus und der zweite Modus verschiedenen Schreibmodi in die Speichervorrichtung entsprechen.
  • Für Fachleute versteht sich, dass veranschaulichende Blöcke, Module, Elemente, Komponenten, Verfahren und Algorithmen, die hierin beschrieben werden, als elektronische Hardware, Computersoftware oder Kombinationen von beiden implementiert werden können. Um diese Austauschbarkeit von Hardware und Software zu veranschaulichen, wurden verschiedene veranschaulichende Blöcke, Module, Elemente, Komponenten, Verfahren und Algorithmen vorstehend allgemein hinsichtlich ihrer Funktionalität beschrieben. Ob eine derartige Funktionalität als Hardware oder Software implementiert ist, hängt von der spezifischen Anwendung und Designeinschränkungen ab, denen das Gesamtsystem unterliegt. Fachleute können die beschriebene Funktionalität auf verschiedene Arten für jede bestimmte Anwendung implementieren. Verschiedene Komponenten und Blöcke können anders angeordnet sein (zum Beispiel in einer anderen Reihenfolge angeordnet oder auf eine andere Weise partitioniert), ohne vom Umfang der vorliegenden Technologie abzuweichen.
  • Es versteht sich, dass die spezifische Reihenfolge oder Hierarchie von Schritten in den offenbarten Prozessen eine Veranschaulichung von beispielhaften Ansätzen ist. Basierend auf Designpräferenzen versteht es sich, dass die spezifische Reihenfolge oder Hierarchie von Schritten in den Prozessen anders angeordnet werden kann. Einige der Schritte können gleichzeitig durchgeführt werden. Die beigefügten Verfahrensansprüche stellen Elemente der verschiedenen Schritte in einer beispielhaften Reihenfolge dar und sollen nicht auf die spezielle dargestellte Reihenfolge oder Hierarchie beschränkt sein.
  • Die vorhergehende Beschreibung wird bereitgestellt, um es einem Fachmann zu ermöglichen, die verschiedenen hierin beschriebenen Aspekte in der Praxis umzusetzen. Die vorhergehende Beschreibung stellt verschiedene Beispiele der vorliegenden Technologie bereit, und die vorliegende Technologie ist nicht auf diese Beispiele beschränkt. Verschiedene Modifikationen dieser Aspekte werden dem Fachmann leicht ersichtlich sein, und die hierin definierten generischen Prinzipien können auf andere Aspekte angewendet werden. Daher sollen die Ansprüche nicht auf die hier gezeigten Aspekte beschränkt sein, sondern sollen den vollen Schutzumfang erhalten, der mit den in Sprachform niedergelegten Ansprüchen konsistent ist, wobei die Bezugnahme auf ein Element im Singular nicht „ein und nur ein“ Element bedeuten soll, sofern dies nicht speziell angegeben ist, sondern „ein oder mehrere“. Sofern nicht spezifisch anders angegeben, bezieht sich der Ausdruck „einige“ auf ein(en) oder mehrere. Pronomen im grammatikalischen Maskulin (zum Beispiel sein) schließen das grammatikalische Feminin und Neutrum (zum Beispiel ihr und sein) ein und umgekehrt. Überschriften und Unterüberschriften, falls vorhanden, werden nur aus Gründen der Zweckmäßigkeit verwendet und schränken die Erfindung nicht ein.
  • Ein Ausdruck wie zum Beispiel „ein Aspekt“ bedeutet nicht, dass ein solcher Aspekt für die vorliegende Technologie wesentlich ist oder dass ein derartiger Aspekt für alle Konfigurationen der vorliegenden Technologie gilt. Eine Offenbarung, die sich auf einen Aspekt bezieht, kann auf alle Konfigurationen oder eine oder mehrere Konfigurationen angewendet werden. Ein Aspekt kann ein oder mehrere Beispiele bereitstellen. Ein Ausdruck, wie beispielsweise ein Aspekt, kann sich auf einen oder mehrere Aspekte beziehen und umgekehrt. Ein Ausdruck wie beispielsweise eine „Ausführungsform“ impliziert nicht, dass eine solche Ausführungsform für die vorliegende Technologie wesentlich ist oder dass eine solche Ausführungsform für alle Konfigurationen der vorliegenden Technologie gilt. Eine Offenbarung, die sich auf eine Ausführungsform bezieht, kann für alle Ausführungsformen oder eine oder mehrere Ausführungsformen gelten. Eine Ausführungsform kann ein oder mehrere Beispiele bereitstellen. Ein Ausdruck wie beispielsweise eine „Ausführungsform“ kann sich auf eine oder mehrere Ausführungsform beziehen und umgekehrt. Ein Ausdruck wie beispielsweise eine „Konfiguration“ impliziert nicht, dass eine solche Konfiguration für die vorliegende Technologie wesentlich ist oder dass eine solche Konfiguration für alle Konfigurationen der vorliegenden Technologie gilt. Eine Offenbarung, die sich auf eine Konfiguration bezieht, kann auf alle Konfigurationen oder eine oder mehrere Konfigurationen angewendet werden. Eine Konfiguration kann ein oder mehrere Beispiele bereitstellen. Ein Ausdruck, wie z. B. eine „Konfiguration“, kann sich auf eine oder mehrere Konfigurationen beziehen und umgekehrt.
  • Das Wort „beispielhaft“ wird in diesem Dokument in der Bedeutung „als Beispiel oder zur Veranschaulichung dienend“ verwendet. Jeder Aspekt oder jedes Design, der bzw. das hier als „beispielhaft“ beschrieben wird, ist nicht zwangsläufig als bevorzugt oder vorteilhaft gegenüber anderen Aspekten oder Designs zu verstehen.
  • Alle strukturellen und funktionalen Äquivalente zu den Elementen der verschiedenen Aspekte, die in dieser Offenbarung beschrieben sind, die Fachleuten bekannt sind oder später bekannt werden, werden hiermit ausdrücklich durch Bezugnahme aufgenommen und sollen in den Ansprüchen eingeschlossen sein. Darüber hinaus soll nichts hierin Offenbartes der Öffentlichkeit gewidmet sein, ungeachtet dessen, ob eine solche Offenbarung in den Ansprüchen ausdrücklich erwähnt wird. Kein Anspruchselement ist gemäß den Bestimmungen von 35 U.S.C.§ 112, Absatz sechs, zu verstehen, sofern das Element nicht explizit unter Verwendung des Ausdrucks „Mittel für“ oder im Falle eines Verfahrensanspruchs des Ausdrucks „Schritt für“ erwähnt wird. Sofern die Ausdrücke „einschließen“, „haben“ oder dergleichen in der Beschreibung oder den Ansprüchen verwendet werden, soll ein solcher Begriff ähnliche Begriffe wie etwa „aufweisen“ beinhalten, wenn „aufweisen“ bei der Verwendung als Übergangswort in einem Anspruch ausgelegt wird.

Claims (20)

  1. Verfahren, das unter Verwendung von einer oder mehreren Steuerungen für eine Speichervorrichtung implementiert wird, das Verfahren umfassend: Erzeugen einer Abbildung von Daten basierend auf einem Datensatz, wobei die Abbildung von Daten erste abgebildete Daten und zweite abgebildete Daten einschließt, wobei eine Menge der ersten abgebildeten Daten größer ist als eine Menge der zweiten abgebildeten Daten; Durchführen einer ersten Programmieroperation, um in einem ersten Modus die ersten abgebildeten Daten in die Speichervorrichtung zu schreiben; Speichern der zweiten abgebildeten Daten in einem Cache und Erzeugen eines zweiten Datensatzes, basierend auf einer umgekehrten Abbildung der Abbildung von Daten einschließlich der zweiten abgebildeten Daten aus dem Cache und der ersten abgebildeten Daten aus der Speichervorrichtung, um in einem zweiten Modus in die Speichervorrichtung zu schreiben, wobei der zweite Datensatz den Datensatz umfasst und der erste Modus und der zweite Modus verschiedenen Schreibmodi in die Speichervorrichtung entsprechen.
  2. Verfahren gemäß Anspruch 1, wobei Erzeugen der Abbildung von Daten basierend auf dem Datensatz ferner umfasst: Erzeugen der ersten abgebildeten Daten und der zweiten abgebildeten Daten basierend auf einer Gray-Code-Codierung des Datensatzes, wobei die ersten abgebildeten Daten eine erste Vielzahl von Daten umfassen, die in Zeilen und Spalten darstellbar sind, die erste Vielzahl von Daten durch ausgeglichene Gray-Codes dargestellt wird und die zweiten abgebildeten Daten eine zweite Vielzahl von Daten umfassen.
  3. Verfahren gemäß Anspruch 2, wobei: die ausgeglichenen Gray-Codes eine Summe von Übergängen für jede Spalte in der ersten Vielzahl von Daten einschließen, wobei eine Gesamtsumme der Summen der Übergänge für alle Spalten nicht größer ist als eine maximale Anzahl von Leseebenen zum Schreiben im ersten Modus in die Speichervorrichtung, eine Summe der Übergänge für eine der Spalten und eine Summe der Übergänge für eine nächste der Spalten gleich sind oder sich um nicht mehr als eins unterscheiden und jeder der Übergänge für eine Spalte eine Änderung der Werte zwischen benachbarten Zeilen innerhalb der Spalte darstellt.
  4. Verfahren gemäß Anspruch 2, wobei die Daten in allen zwei Zeilen der ersten Vielzahl von Daten ein identisches Paar sind.
  5. Verfahren gemäß Anspruch 2, wobei eine Anzahl von Übergängen für die ersten abgebildeten Daten sieben Übergänge aufweist, und eine Anzahl von Übergängen für die zweiten abgebildeten Daten acht Übergänge aufweist, wobei jeder Übergang einer Änderung zwischen benachbarten Daten entspricht.
  6. Verfahren gemäß Anspruch 1, wobei die ersten abgebildeten Daten mindestens ein höchstwertiges Bit (MSB) umfassen und die zweiten abgebildeten Daten mindestens ein niedrigstwertiges Bit (LSB) umfassen.
  7. Verfahren gemäß Anspruch 1, wobei das Erzeugen des zweiten Datensatzes Folgendes umfasst: Durchführen einer ersten Leseoperation bei den zweiten abgebildeten Daten aus dem Cache; Durchführen einer zweiten Leseoperation bei den ersten abgebildeten Daten aus der Speichervorrichtung und Erzeugen des zweiten Datensatzes, dargestellt durch einen Satz ausgeglichener Gray-Codes, basierend auf einer Kombination der ersten abgebildeten Daten und der zweiten abgebildeten Daten, wobei der Satz ausgeglichener Gray-Codes eine Summe von Übergängen einschließt, die nicht größer als eine maximale Anzahl von Leseebenen zum Schreiben im zweiten Modus in die Speichervorrichtung ist.
  8. Verfahren gemäß Anspruch 1, weiterhin aufweisend: Codieren von Daten, die von einer Host-Vorrichtung empfangen werden, basierend auf einer ersten Codieroperation, um einen codierten Datensatz zu erzeugen, der den Datensatz umfasst.
  9. Verfahren gemäß Anspruch 7, ferner umfassend: Durchführen einer Decodieroperation basierend auf dem zweiten Datensatz, um einen decodierten Datensatz zu erzeugen; und Durchführen einer zweiten Programmieroperation, um in dem zweiten Modus den decodierten Datensatz in die Speichervorrichtung zu schreiben.
  10. Verfahren gemäß Anspruch 1, wobei sich der erste Modus auf die Programmierung für den Triple-Level-Cell- (TLC-) Speicher bezieht und sich der zweite Modus auf die Programmierung für den Quadruple-Level-Cell- (QLC-) Speicher bezieht.
  11. System, aufweisend: eine Vielzahl von Flash-Speichervorrichtungen und eine Steuerung, die eingerichtet ist, um: eine Abbildung von Daten basierend auf einem Datensatz zu erzeugen, wobei die Abbildung von Daten erste abgebildete Daten und zweite abgebildete Daten einschließt, wobei eine Menge der ersten abgebildeten Daten größer ist als eine Menge der zweiten abgebildeten Daten; eine erste Programmieroperation durchzuführen, um in einem ersten Modus die ersten abgebildeten Daten in mindestens eine der Vielzahl von Flash-Speichervorrichtungen zu schreiben; die zweiten abgebildeten Daten in einem Cache zu speichern und einen zweiten Datensatz zu erzeugen, basierend auf einer umgekehrten Abbildung der Abbildung von Daten einschließlich der zweiten abgebildeten Daten aus dem Cache und der ersten abgebildeten Daten aus der Speichervorrichtung, um in einem zweiten Modus in die Speichervorrichtung zu schreiben, wobei der zweite Datensatz den Datensatz umfasst und der erste Modus und der zweite Modus verschiedenen Modi zum Schreiben in die mindestens eine der Vielzahl von Flash-Speichervorrichtung entsprechen.
  12. System gemäß Anspruch 11, wobei die Steuerung weiterhin eingerichtet ist zum: Erzeugen der ersten abgebildeten Daten und der zweiten abgebildeten Daten basierend auf einer Gray-Code-Codierung des Datensatzes, wobei die ersten abgebildeten Daten eine erste Vielzahl von Daten umfassen, die in Zeilen und Spalten darstellbar sind, die erste Vielzahl von Daten durch ausgeglichene Gray-Codes dargestellt wird und die zweiten abgebildeten Daten eine zweite Vielzahl von Daten umfassen.
  13. System gemäß Anspruch 12, wobei die ausgeglichenen Gray-Codes eine Summe von Übergängen für jede Spalte in der ersten Vielzahl von Daten einschließen, wobei eine Gesamtsumme der Summen der Übergänge für alle Spalten nicht größer ist als eine maximale Anzahl von Leseebenen zum Schreiben im ersten Modus in die Speichervorrichtung, eine Summe der Übergänge für eine der Spalten und eine Summe der Übergänge für eine nächste der Spalten gleich sind oder sich um nicht mehr als eins unterscheiden und jeder der Übergänge für eine Spalte eine Änderung der Werte zwischen benachbarten Zeilen innerhalb der Spalte darstellt.
  14. System gemäß Anspruch 12, wobei die Daten in allen zwei Zeilen der ersten Vielzahl von Daten ein identisches Paar sind.
  15. System gemäß Anspruch 12, wobei eine Anzahl von Übergängen für die ersten abgebildeten Daten sieben Übergänge aufweist, und eine Anzahl von Übergängen für die zweiten abgebildeten Daten acht Übergänge aufweist, wobei jeder Übergang einer Änderung zwischen benachbarten Daten entspricht.
  16. System gemäß Anspruch 11, wobei die ersten abgebildeten Daten mindestens ein höchstwertiges Bit (MSB) aufweisen und die zweiten abgebildeten Daten mindestens ein niedrigstwertiges Bit (LSB) aufweisen.
  17. System gemäß Anspruch 11, wobei die Steuerung weiterhin eingerichtet ist zum: Codieren von Daten, die von einer Host-Vorrichtung empfangen werden, basierend auf einer ersten Codieroperation, um einen codierten Datensatz zu erzeugen, der den Datensatz umfasst.
  18. System gemäß Anspruch 17, wobei die Steuerung weiterhin eingerichtet ist zum: Durchführen einer Decodieroperation basierend auf dem zweiten Datensatz, um einen decodierten Datensatz zu erzeugen; und Durchführen einer zweiten Programmieroperation, um in dem zweiten Modus den decodierten Datensatz in die Speichervorrichtung zu schreiben.
  19. Flash-Speichersystem, aufweisend: Mittel zum Erzeugen einer Abbildung von Daten basierend auf einem Datensatz, wobei die Abbildung von Daten erste abgebildete Daten und zweite abgebildete Daten einschließt, wobei eine Menge der ersten abgebildeten Daten größer ist als eine Menge der zweiten abgebildeten Daten; Mittel zum Durchführen einer ersten Programmieroperation, um in einem ersten Modus die ersten abgebildeten Daten in eine Speichervorrichtung zu schreiben; Mittel zum Speichern der zweiten abgebildeten Daten in einem Cache und Mittel zum Erzeugen eines zweiten Datensatzes, basierend auf einer umgekehrten Abbildung der Abbildung von Daten einschließlich der zweiten abgebildeten Daten aus dem Cache und der ersten abgebildeten Daten aus der Speichervorrichtung, um in einem zweiten Modus in die Speichervorrichtung zu schreiben, wobei der zweite Datensatz den Datensatz umfasst und der erste Modus und der zweite Modus verschiedenen Schreibmodi in die Speichervorrichtung entsprechen.
  20. Flash-Speichersystem nach Anspruch 19, wobei das Mittel zum Erzeugen der Abbildung von Daten weiterhin Folgendes aufweist: Mittel zum Erzeugen der ersten abgebildeten Daten und der zweiten abgebildeten Daten basierend auf einer Gray-Code-Codierung des Datensatzes, wobei die ersten abgebildeten Daten eine erste Vielzahl von Daten umfassen, die in Zeilen und Spalten darstellbar sind, die erste Vielzahl von Daten durch ausgeglichene Gray-Codes dargestellt wird und die zweiten abgebildeten Daten eine zweite Vielzahl von Daten umfassen.
DE102019125059.5A 2018-12-14 2019-09-18 Abbildung für multi-state-programmierung von speichervorrichtungen Pending DE102019125059A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/221,378 2018-12-14
US16/221,378 US10705966B1 (en) 2018-12-14 2018-12-14 Mapping for multi-state programming of memory devices

Publications (1)

Publication Number Publication Date
DE102019125059A1 true DE102019125059A1 (de) 2020-06-18

Family

ID=70858439

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019125059.5A Pending DE102019125059A1 (de) 2018-12-14 2019-09-18 Abbildung für multi-state-programmierung von speichervorrichtungen

Country Status (3)

Country Link
US (3) US10705966B1 (de)
CN (1) CN111324299B (de)
DE (1) DE102019125059A1 (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10705966B1 (en) * 2018-12-14 2020-07-07 Western Digital Technologies, Inc. Mapping for multi-state programming of memory devices
US10748606B2 (en) 2018-12-14 2020-08-18 Western Digital Technologies, Inc. Multi-state programming for memory devices
US10726936B2 (en) * 2018-12-20 2020-07-28 Micron Technology, Inc. Bad block management for memory sub-systems
US11733994B2 (en) * 2019-05-03 2023-08-22 EMC IP Holding Company LLC System and method for state management
CN111831999B (zh) * 2020-07-13 2022-08-19 中国银行股份有限公司 一种聚合多站操作的方法和***
CN113254372A (zh) * 2020-08-07 2021-08-13 广东高云半导体科技股份有限公司 用两阶段配置过程提供可编程微控制器的方法和***
US11914886B2 (en) 2020-10-02 2024-02-27 Western Digital Technologies, Inc. Nonvolatile memory with on-chip encoding for foggy-fine programming
US11650756B2 (en) 2020-12-28 2023-05-16 Western Digital Technologies, Inc. Nonvolatile memory with encoding for foggy-fine programming with soft bits
US11495296B2 (en) 2021-01-20 2022-11-08 Western Digital Technologies, Inc. Read threshold calibration for nonvolatile memory with encoded foggy-fine programming
CN113272902B (zh) * 2021-03-31 2023-02-10 长江存储科技有限责任公司 使用不同格雷码的编程和读取操作以及用于执行这种操作的存储器件
US11507303B2 (en) 2021-04-21 2022-11-22 Western Digital Technologies, Inc. User controlled data-in for lower and middle page in MLC-fine QLC memories

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012014140A2 (en) * 2010-07-27 2012-02-02 International Business Machines Corporation Logical to physical address mapping in storage systems comprising solid state memory devices
US8874994B2 (en) * 2011-07-22 2014-10-28 Sandisk Technologies Inc. Systems and methods of storing data
US8885410B2 (en) 2012-08-29 2014-11-11 Sandisk Technologies Inc. Direct multi-level cell programming
US9785558B2 (en) * 2013-10-29 2017-10-10 Hua Zhong University Of Science Technology Mixed cache management
US9400713B2 (en) 2014-10-02 2016-07-26 Sandisk Technologies Llc System and method for pre-encoding of data for direct write to multi-level cell memory
US10229051B2 (en) * 2015-12-30 2019-03-12 Samsung Electronics Co., Ltd. Storage device including nonvolatile memory device and controller, operating method of storage device, and method for accessing storage device
MA44821A (fr) * 2016-02-27 2019-01-02 Kinzinger Automation Gmbh Procédé d'allocation d'une pile de registres virtuels dans une machine à pile
US9792998B1 (en) 2016-03-29 2017-10-17 Sandisk Technologies Llc System and method for erase detection before programming of a storage device
US10635335B2 (en) * 2017-03-21 2020-04-28 Western Digital Technologies, Inc. Storage system and method for efficient pipeline gap utilization for background operations
US10679708B2 (en) * 2018-09-17 2020-06-09 Western Digital Technologies, Inc. Pre-program read to counter wordline failures
US10705966B1 (en) * 2018-12-14 2020-07-07 Western Digital Technologies, Inc. Mapping for multi-state programming of memory devices
US11133067B2 (en) * 2019-03-08 2021-09-28 Western Digital Technologies, Inc. Multi-phased programming with balanced gray coding

Also Published As

Publication number Publication date
US10705966B1 (en) 2020-07-07
CN111324299B (zh) 2023-06-09
US20220283950A1 (en) 2022-09-08
US11636039B2 (en) 2023-04-25
US11372765B2 (en) 2022-06-28
CN111324299A (zh) 2020-06-23
US20200192807A1 (en) 2020-06-18
US20200320009A1 (en) 2020-10-08

Similar Documents

Publication Publication Date Title
DE102019125059A1 (de) Abbildung für multi-state-programmierung von speichervorrichtungen
DE102019124438B4 (de) Multi-state-programmierung für speichervorrichtungen
DE102019133129A1 (de) Mehrphasenprogrammierung mit symmetrischer gray-codierung
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE102020130044A1 (de) Techniken zum verhindern von lese-störung in nand-speicher
DE102011086227A1 (de) Adress mapping method, data storage device and user device
DE112014005521T5 (de) Speichermodul und Verfahren zum Verwalten des Abbildens logischer Adressen auf physikalische Adressen
DE112010003887T5 (de) Datenverwaltung in Halbleiter-Speichereinheiten
DE102012112354A1 (de) Speichervorrichtung und nichtflüchtige Speichervorrichtung sowie Betriebsverfahren davon
DE112020006139T5 (de) Vor-lese-und lese-schwellenspannungsoptimierung
DE102010037290A1 (de) Speichersysteme und Verfahren zur Erfassung einer Verteilung von instabilen Speicherzellen
DE102017128999A1 (de) Lesebetrieb und weiches Dekodierungs-Timing
DE102015008923A1 (de) Vielfache ECC-Codewortgrössen in einem SSD
DE112019000167T5 (de) Anpassbare Lesewiederholungsreihenfolge basierend auf einem Decodierungserfolgstrend
DE102019125060A1 (de) Datenspeichersysteme und verfahren zum autonomen anpassen der leistung, kapazität und/oder der betriebsanforderungen eines datenspeichersystems
DE112017003906T5 (de) Vorrichtung und Verfahren für eine Ausdauer-freundliche Programmierung unter Verwendung niedrigerer Spannungsschwellen
DE102018123926A1 (de) Dynamische mehrstufige Decodierung
DE102008033518A1 (de) Datenverarbeitungsverfahren für eine Solid-State-Disk-Steuereinheit, Solid-State-Disk-Steuereinheit und Datenspeicherelement
DE112017004916T5 (de) Verwendung von Kompression zur Kapazitätserhöhung eines speicherseitigen Caches mit grosser Blockgrösse
DE102021114457A1 (de) Abwicklung von lesen in vorrichtungen mit in zonen unterteiltem namensraum
DE112020005502T5 (de) Dynamische überprovisionierungszuweisung für zweckbestimmte blöcke
DE102021107436A1 (de) Speichersystem und Verfahren zum direkten Quad-Level-Cell-Programmieren (QLC-Programmieren)
DE102018123961A1 (de) Gruppen-leseaktualisierung
DE102022101607A1 (de) Verwaltung der hostspeicherpufferzuweisung
DE102020107166A1 (de) Zweidimensional skalierbares vielseitiges speicherformat fürdatenspeichervorrichtungen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE

R016 Response to examination communication
R081 Change of applicant/patentee

Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES. D. STAATE, US

Free format text: FORMER OWNER: WESTERN DIGITAL TECHNOLOGIES, INC., SAN JOSE, CA, US