DE102019133129A1 - Mehrphasenprogrammierung mit symmetrischer gray-codierung - Google Patents

Mehrphasenprogrammierung mit symmetrischer gray-codierung Download PDF

Info

Publication number
DE102019133129A1
DE102019133129A1 DE102019133129.3A DE102019133129A DE102019133129A1 DE 102019133129 A1 DE102019133129 A1 DE 102019133129A1 DE 102019133129 A DE102019133129 A DE 102019133129A DE 102019133129 A1 DE102019133129 A1 DE 102019133129A1
Authority
DE
Germany
Prior art keywords
data
memory
cell mode
mode
programming
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
DE102019133129.3A
Other languages
English (en)
Inventor
Sergey Anatolievich Gorobets
Xinmiao Zhang
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.)
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 DE102019133129A1 publication Critical patent/DE102019133129A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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
    • 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
    • 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/1015Read-write modes for single port memories, i.e. having either a random port or a serial port
    • G11C7/1045Read-write mode select circuits
    • 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/5642Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • 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/26Sensing or reading circuits; Data output circuits
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Read Only Memory (AREA)

Abstract

Es werden Systeme und Verfahren zum Bereitstellen einer Mehrphasenprogrammierung mit symmetrischer Gray-Codierung offenbart. Ein Verfahren schließt in einer ersten Phase das Programmieren eines ersten Teils von Daten in Speicherzellen eines Flash-Speichers in einem Zellenmodus der ersten Stufe ein. Das Verfahren schließt auch das Speichern von mindestens einer Teilmenge der Daten in einem Zwischenspeicher ein. Das Verfahren schließt auch das Wiederherstellen der Daten von mindestens dem Zwischenspeicher ein, wobei die wiederhergestellten Daten einen zweiten Teil der Daten einschließen. Das Verfahren schließt in einer zweiten Phase auch das Programmieren der wiederhergestellten Daten in einem Zellenmodus der zweiten Stufe auf Grundlage einer Zuordnung von dem Zellenmodus der ersten Stufe zu dem Zellenmodus der zweiten Stufe ein. Die Zuordnung ordnet jeder Zustandsverteilung in dem Zellenmodus der ersten Stufe mindestens zwei nicht benachbarten Zustandsverteilungen in dem Zellenmodus der zweiten Stufe zu, und eine Breite jeder Zustandsverteilung in dem Zellenmodus der ersten Stufe kann verringert werden.

Description

  • HINTERGRUND
  • Die wachsende Nachfrage nach Speichervorrichtungen mit hoher Kapazität hat die Verwendung von Multi-Level-NAND-Flash-Speicherzellen beschleunigt, die Multi-Level-Zellen (MLC, 2 Bits pro Zelle), Triple-Level-Zellen (TLC, 3 Bits pro Zelle), Quad-Level-Zellen (QLC, 4 Bits pro Zelle) und höhere Kapazitäten einschließen. Da die Anzahl der in einer Speicherzelle gespeicherten Bits zunimmt, wird auch der für eine in diesem Zusammenhang zuverlässige Datenprogrammierung erforderliche Präzisionsgrad strikter. Bestehende Lösungen für eine genaue Programmierung von Multi-Level-Zellen können nach Bedarf zusätzliche Hardware-Ressourcen erfordern, was den Aufwand und die Kosten der Speichervorrichtung bei gleichzeitiger Verkleinerung des zur Verfügung stehenden Platzes für andere produktive Verwendungszwecke erhöht. Somit gibt es einen Bedarf für ein effizienteres Verfahren zum Programmieren von Multi-Level-Zellen.
  • 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:
    • 1A veranschaulicht ein beispielhaftes System zum Programmieren von QLC-Speicherzellen im Foggy-Fine-Modus.
    • 1B veranschaulicht beispielhafte Programmierverteilungen für QLC-Speicherzellen nach dem Programmieren in einer Foggy-Phase und einer Fine-Phase.
    • 1C veranschaulicht ein Beispiel einer symmetrischen Gray-Codierung zum Programmieren von QLC-Speicherzellen im Foggy-Fine-Modus.
    • 1D und 1E veranschaulichen Beispiele von Programmierverteilungen nach einer ersten Programmierphase im MLC-Modus und einer zweiten Programmierphase im QLC-Modus unter Verwendung der asymmetrischen 2-Stufen-Gray-Verschachtelung von 1 F.
    • 1F veranschaulicht ein Beispiel einer asymmetrischen 2-Stufen-Gray-Verschachtelung für Mehrphasenprogrammierung.
    • 2A veranschaulicht ein beispielhaftes System für die mehrphasige Programmierung von QLC-Speicherzellen.
    • 2B veranschaulicht eine beispielhafte versetzte Wortleitungsprogrammierfolge zur Verwendung mit einer Foggy-Fine-Modus-Programmierung oder Mehrphasenprogrammierung.
    • 3A und 3B veranschaulichen Beispiele von Programmierverteilungen nach einer ersten Programmierphase im MLC-Modus und einer zweiten Programmierphase im QLC-Modus unter Verwendung der 2-Stufen-Gray-Verschachtelung von 3C.
    • 3C veranschaulicht eine beispielhafte 2-Stufen-Gray-Verschachtelung für Mehrphasenprogrammierung.
    • 4 ist ein Flussdiagramm, das einen beispielhaften Prozess für Mehrphasenprogrammierung unter Verwendung einer symmetrischen Gray-Codierung veranschaulicht.
    • 5 ist ein Blockschema der Komponenten eines beispielhaften Objektspeichersystems.
  • 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. Die betreffende Technologie kann auch ohne diese spezifischen Details genutzt werden. In einigen Fällen sind 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.
  • Die vorliegende Beschreibung bezieht sich im Allgemeinen auf Datenspeichersysteme und -verfahren und insbesondere zum Beispiel auf die Bereitstellung einer Mehrphasenprogrammierung unter Verwendung eines symmetrischen Gray-Codes, ohne darauf beschränkt zu sein. Unter anderem aufgrund der Hardware- und physikalischen Begrenzungen werden Speicherzellen oftmals in einem begrenzten Spannungsbereich programmiert, wie etwa bei 6,2 V. Für Multi-Level-Zellen mit einer großen Anzahl von Bits pro Zelle muss eine entsprechende große Anzahl von Verteilungen programmiert werden. Wenn zum Beispiel der gelöschte Zustand eingeschlossen wird, werden die QLC-Speicherzellen in 16 Verteilungen, die 24 möglichen Zuständen zum Speichern von 4 Bits von Daten innerhalb eines begrenzten Spannungsbereich entsprechen, wie 6,2 V, programmiert. Es ist möglicherweise nicht möglich, diese Verteilungen in einem einzigen Programmierdurchgang präzise zu programmieren.
  • Ein Ansatz, um die erforderliche Programmiergenauigkeit für Multi-Level-Zellen bereitzustellen, ist die Verwendung eines Foggy-Fine-Programmierungsansatzes. Wenn zum Beispiel QLC-Speicherzellen programmiert werden, kann eine erste Foggy-Phase grob 4 Bits von Daten für jede Speicherzelle in breite überlappende Verteilungen programmieren, die unter Zielspannungen liegen, wobei eine zweite Fine-Phase genau dieselben 4 Bits von Daten für jede Speicherzelle programmieren kann, um sich in engeren Verteilungen fortzusetzen, welche die Zielspannungen enthalten.
  • 1A veranschaulicht ein beispielhaftes System 100 zum Programmieren von QLC-Speicherzellen in einem Foggy-Fine-Modus. System 100 schließt die Steuerung 101 und den Flash-Speicher 103 ein. Steuerung 101 schließt Codierer 122, Zwischenspeicher 124 und Decoder 126 ein. Flash-Speicher 103 schließt Speicher-Array 108 und Schreibpuffer 130 ein. Mit Bezug auf 1A und 5 können gleich bezifferte Elemente gleichen Komponenten entsprechen. Zum Beispiel kann die Steuerung 101 einer Steuerung 501 entsprechen, Flash-Speicher 103 kann einem Flash-Speicher 503 entsprechen, und das Speicher-Array 108 kann einem NAND-Array 508 entsprechen. Der Einfachheit halber können Elemente von 5, die in dem System 100 von 1A weggelassen sind, tatsächlich vorhanden sein, wie zum Beispiel ein Speichermedium 502, ein Host 504, eine Schnittstelle 505, Register 506 und eine Steuerung 507. Während 1A mit dem Speicherarray 108 als QLC-Speicherzellen veranschaulicht ist, versteht es sich, dass die beschriebenen Techniken ferner allgemeine Prinzipien sind und auch auf Speicherzellen verschiedener Ebenen anwendbar sein können.
  • In Schritt 1 kann die Steuerung 101 Hostdaten für einen Schreibvorgang empfangen, der durch den Codierer 122 verarbeitet wird. Zum Beispiel können Decoder 126 und Codierer 122 Low-Density-Parity-Check-Codes (LDPC) zum Bereitstellen einer Fehlerkorrekturunterstützung nutzen. Die codierten Host-Daten werden dann in Schreibpuffer 130 geschrieben, die als eine erste First-In-First-Out (FIFO)-Warteschlange eingerichtet sein können. Die Schreibpuffer 130 können vorzugsweise SLC-Speicherzellen für eine hohe Schreiblebensdauer sein, aber es können auch Speicherzellen einer höheren Ebene verwendet werden. Unter Verwendung eines nichtflüchtigen Speichers kann z. B. SLC-Flashspeicher für Schreibpuffer 130 eine Ausfallsicherheit gegen Stromausfälle bereitstellen, um die Datenintegrität aufrecht zu erhalten, und kann auch kostengünstiger und energiesparender im Vergleich zu flüchtigen Speichern mit wahlfreiem Zugriff sein. Während ein Flash-Speicher als ein Beispiel eines nichtflüchtigen Speichers bereitgestellt wird, können auch andere Technologien, die nicht auf Flash basieren, verwendet werden, was die Entwicklung bestehender und neue Technologien einschließt. In anderen Gesichtspunkten der vorliegenden Technologie können die Schreibpuffer 130 einen flüchtigen Speicher einschließlich Datenzwischenspeicher, Register, RAM oder andere Hardware verwenden.
  • Es ist zu beachten, dass Schreibpuffer 130 in einem Stapel mit 4 Blöcken dargestellt sind. Die Anzahl von Blöcken kann der Anzahl von Speicherseiten oder der Anzahl von Bits pro Speicherzelle in dem Speicher-Array 108 entsprechen. Wenn beispielsweise das Speicher-Array 108 QLC-Speicherzellen oder 4-Bits pro Speicherzelle entspricht, dann können die Schreibpuffer 130 4 Blöcke oder einen Flash-Speicherblock für jede Speicherseite, die programmiert werden soll, einschließen.
  • In Schritt 2 stellt die Steuerung 101 die Schreibpuffer 130 wieder her und wendet unter Verwendung des Decoders 126 Fehlerkorrekturalgorithmen zur Korrektur etwaiger Fehler beim Lesen der Schreibpuffer 130 an. Zwischenspeicher 124 kann einem dynamischen Direktzugriffsspeicher (DRAM) oder einem statischen Direktzugriffsspeicher (SRAM) entsprechen und kann ein Zwischendatenergebnis zwischen dem Decoder 126 und dem Codierer 122 halten. Ein Zwischenspeicher 124 kann einen Puffer, wie zum Beispiel einen Seitenpuffer, einschließen. Ein Zwischenspeicher 124 kann ein nichtflüchtiger Speicher sein. Ferner codiert die Steuerung 101 die decodierten Daten aus dem Zwischenspeicher 124, um die Daten für die Programmierung vorzubereiten.
  • Es ist zu beachten, dass es sich, obwohl die Schreibpuffer 130 als Teil des Flash-Speichers 103 gezeigt werden, auf den die Steuerung 101 direkt zugreifen kann, versteht, dass auf Schreibpuffer 130 auch von anderen Stellen aus zugegriffen werden kann. Beispielsweise können unter Bezugnahme auf 5 Schreibpuffer 130 extern von der Steuerung 501 gespeichert werden, wie beispielsweise in dem Speichermedium 502. Somit kann das Speichermedium 502 Schreibpuffer 130 einschließen, die Flash- oder Nicht-Flash-basierte nichtflüchtige Speicher, SRAM, DRAM, magnetische RAM (MRAM) oder Phasenwechselspeicher (PCM) einschließen können. Datenübertragungen zwischen der Steuerung 501 und dem Speichermedium 502 können über einen Datenbus serialisiert werden oder ein anderes Transportverfahren verwenden.
  • In Schritt 3 programmiert Steuerung 101 die decodierten und codierten Daten in das Speicher-Array 108 in einer ersten Foggy-Phase. Unter Bezugnahme auf 1B wird eine beispielhafte Programmierverteilung 140A für QLC-Speicherzellen dargestellt, die dem Speicherarray 108 nach Programmierung in der ersten Foggy-Phase entsprechen kann. Wie in 1B dargestellt, werden die Zustände in der Verteilung 140A relativ breit gestreut oder nicht so präzise programmiert, um der Foggy-Phase die komplette Programmierung im Vergleich zu der Fine-Phase in einer relativ kurzen Zeit zu ermöglichen. Demzufolge können die in das Speicher-Array 108 programmierten Daten jedoch nicht wiederhergestellt werden, da Zustände in der Verteilung 140A zu weit in andere Zustände überlappen können, um unter Verwendung von Fehlerkorrektur unterschieden werden zu können. Ferner können Lesestöreffekte und andere Faktoren auch das Auslesen der programmierten Daten aus der Speichermatrix 108 behindern. Somit werden stattdessen Schreibpuffer 130 verwendet, um die Daten für den Schreibvorgang zu speichern.
  • In Schritt 4 werden die Daten für den Schreibvorgang in den Schreibpuffern 130 erneut gelesen und durch den Decodierer 126, den Zwischenspeicher 124 und den Codierer 122 verarbeitet, um die Programmierung der zweiten Fine-Phase vorzubereiten. Folglich kann Schritt 4 auf ähnliche Weise wie Schritt 2, wie oben beschrieben, ablaufen.
  • In Schritt 5 programmiert in einer zweiten Fine-Phase Steuerung 101 die decodierten und codierten Daten in das Speicher-Array 108. Unter Bezugnahme auf 1B wird eine beispielhafte Programmierverteilung 140B für QLC-Speicherzellen gezeigt, die nach Programmierung in der zweiten Fine-Phase dem Speicher-Array 108 entsprechen kann. Wie in 1B dargestellt, werden die Zustände in Verteilung 140B mit größerer Genauigkeit auf ihre endgültigen Zielspannungen programmiert, was, verglichen mit der Foggy-Phase, in einem entsprechend längeren Zeitraum abgeschlossen wird. Die zweite Fine-Phase kann von der Foggy-Phase zu der Fine-Phase gemäß Zuordnung 150 von 1C, die einem Gray-Code entsprechen kann, programmieren. Ein Gray-Code ist eine Codierung, bei der benachbarte Codes sich nur durch ein Bit unterscheiden, was eine effizientere Fehlerkorrektur ermöglicht. Zum Beispiel ist in der Zuordnung 150 der Code zum Zustand S0 „1111“, während der Code für den rechten benachbarten Code S1 „1110“ und für den linken benachbarten Code S15 „1011“ ist. Codes S1 und S15 unterscheiden sich von Code S0 jeweils durch genau ein Bit, beziehungsweise die vierten und zweiten Bits.
  • Ferner kann die Zuordnung 150 ein symmetrischer Gray-Code sein, der schnellere Lesevorgänge ermöglicht. In Zuordnung 150 hat die oberste Seite (TP) einen Übergangszähler 4, die obere Seite (UP) hat einen Übergangszähler 3, die mittlere Seite (MP) hat einen Übergangszähler 4 und die untere Seite (LP) hat einen Übergangszähler 4. Bei einem oder mehreren Beispielen kann ein symmetrischer Gray-Code ausreichend sein, wenn eine Differenz zwischen Übergangszählern von zwei beliebigen Seiten der Speicherseiten eine vorbestimmte Übergangszählerdifferenz nicht überschreitet. Die vorbestimmte Übergangszählerdifferenz kann eins (1) sein.
  • Beim Prüfen des Gray-Codes 4-3-4-4 von Zuordnung 150 kann eine Differenz zwischen den Übergangszählern von zwei beliebigen Seiten aus TP, UP, MP und LP berechnet werden. Dies kann das Berechnen der Differenz für jedes der folgenden Speicherseitenpaare einschließen: (1) TP und UP, (2) TP und MP, (3) TP und LP, (4) UP und MP, (5) UP und LP, und (6) MP und LP. Wenn ein Gray-Code so eingerichtet ist, dass jeder dieser Unterschiede nicht die vorbestimmte Übergangszählerdifferenz, z. B. 1, überschreitet, dann ist der Gray-Code ein symmetrischer Gray-Code.
  • Zum Beispiel ist die Differenz zwischen den Übergangszählern von TP und UP 1. Die Differenz zwischen den Übergangszählern von TP und MP ist 0. Die Differenz zwischen den Übergangszählern von TP und LP ist 0. Die Differenz zwischen den Übergangszählern von UP und MP ist 1. Die Differenz zwischen den Übergangszählern von UP und LP ist 1. Die Differenz zwischen den Übergangszählern von MP und LP ist 0. Somit übersteigt für alle Speicherseitenpaarungen der Speicherseiten die Differenz zwischen den Übergangszählern 1 nicht, und der 4-3-4-4 Gray-Code ist daher symmetrisch.
  • Bei einem oder mehreren Beispielen kann ein symmetrischer Gray-Code auch erfüllt werden, wenn eine Differenz zwischen Übergangszählern zwischen jeweils zwei benachbarten Seiten der Speicherseiten eine vorbestimmte Übergangszählerdifferenz nicht überschreitet. Die vorbestimmte Übergangszählerdifferenz kann eins (1) sein. Zum Beispiel kann beim Prüfen des Gray-Codes 4-3-4-4 der Zuordnung 150 eine Differenz zwischen den Übergangszählern von jeweils zwei benachbarten Seiten berechnet werden, wie (1) oberste Seite (TP) und obere Seite (UP), (2) obere Seite (UP) und mittlere Seite (MP), (3) mittlere Seite (MP) und untere Seite (LP), und (4) untere Seite (LP) und oberste Seite (TP). In diesem Beispiel sind LP und TP ein Umhüllungspaar und werden somit als zwei benachbarte Seiten betrachtet. Wenn ein Gray-Code so eingerichtet ist, dass jeder dieser Unterschiede nicht die vorbestimmte Übergangszählerdifferenz, z. B. 1, überschreitet, dann ist der Gray-Code ein symmetrischer Gray-Code.
  • Zum Beispiel ist die Differenz zwischen den Übergangszählern von TP und UP 1. Die Differenz zwischen den Übergangszählern von UP und MP ist 0. Die Differenz zwischen den Übergangszählern von MP und LP ist 0. Die Differenz zwischen den Übergangszählern von LP und TP ist 1. Somit übersteigt für jeweils zwei benachbarte Paarungen der Speicherseiten die Differenz zwischen Übergangszählern 1 nicht, und der Gray-Code 4-3-4-4 ist daher symmetrisch. Somit ist der Gray-Code 4-3-4-4 von Zuordnung 150 ein symmetrischer Gray-Code.
  • Ein symmetrischer Gray-Code ermöglicht schnellere Lesevorgänge, da die maximale Anzahl von Übergängen zum Unterscheiden für jede Speicherseite minimiert wird. Beispielsweise unterscheidet ein Lesevorgang bei Verwendung eines symmetrischen Gray-Codes 4-3-4-4 bis zu vier (4) Übergänge für jede Speicherseite. Dementsprechend gibt es keine Engpässe beim Lesevorgang auf einer beliebigen der bestimmten Speicherseiten mit einer deutlich höheren Zahl von Übergängen in Bezug auf die anderen Speicherseiten.
  • Ein Nachteil des in System 100 von 1A veranschaulichten Ansatzes sind die zusätzlichen Kosten, die Komplexität und die Leistung in Verbindung mit Schreibpuffern 130. Da die E/A-Arbeitsbelastung für Schreibpuffer 130 signifikante Schreibaktivität einschließt, sind Flash-Speicher mit hoher Lebensdauer, wie etwa der SLC-Flash-Speicher, für Schreibpuffer 130 vorzuziehen. Da der SLC jedoch eine geringere Speicherdichte bereitstellt und damit teurer in der Herstellung im Vergleich zu Multi-Level-Speicherzellen der gleichen Kapazität ist, erhöht die Verwendung des SLC die Kosten insgesamt und verringert den verfügbaren Bauraum im Flash-Speicher 103 für andere produktive Zwecke. Wenn zum Beispiel Schreibpuffer 130 weggelassen werden, kann das Speicher-Array 108 erweitert werden, um mehr Benutzerdaten und/oder eine Überversorgung unterzubringen. Folglich kann die Kapazität, Lebensdauer, Leistung und Wirtschaftlichkeit einer Speichervorrichtung unter Verwendung des Foggy-Fine-Programmierungsansatzes des Systems 100 begrenzt sein.
  • Anstelle der Verwendung eines Foggy-Fine-Programmierungsansatzes kann ein mehrphasiger Programmieransatz verwendet werden, wie in 1D, 1E und 1F dargestellt. Unter Bezugnahme auf 1D wird eine beispielhafte Programmverteilung 160 gezeigt, die einer Spannungsverteilung des Speicher-Arrays 108 nach Programmierung in einem MLC-Modus innerhalb einer ersten Phase entsprechen kann. Wie in der Verteilung 160 gezeigt, werden vier Verteilungen, die dem gelöschten Zustand (ER, „11“ zugeordnet), dem ersten Zustand (AA, „10“ zugeordnet), dem zweiten Zustand (BB, „00“ zugeordnet) und dem dritten Zustand (CC, „01“ zugeordnet) entsprechen, in einem Spannungsbereich von 0 bis Max1 Volt programmiert. Wie in der Verteilung 160 gezeigt, verwendet der MLC-Modus einen Gray-Code 1-2, wobei die obere Seite (UP) einen Übergang (zwischen den AA- und BB-Zuständen) aufweist und die untere Seite (LP) zwei Übergänge aufweist (den ersten zwischen den ER- und AA-Zuständen und den zweiten zwischen den BB- und CC-Zuständen). Im Unterschied zur Verteilung 140A nach Programmierung in einer Foggy-Phase ist die Verteilung 160 nach Programmierung in einem MLC-Modus noch lesbar, und somit müssen die in der Verteilung 160 programmierten Daten nicht notwendigerweise in Schreibpuffern gespeichert werden, um die verbleibenden Programmierphasen abzuschließen.
  • Wie in 1D dargestellt, werden die Zustände in der Verteilung 160 relativ breit programmiert, wobei jede MLC-Zustandsbreite in der Programmverteilung 160 etwa die gemeinsame Breite der zugeordneten QLC-Zustände nach Programmierung in einem QLC-Modus innerhalb einer zweiten Phase ist, wie durch die Programmverteilung 170 in 1E veranschaulicht ist. Beispielsweise ordnet der MLC-AA(S1)-Zustand die QLC-Zustände D (S4), E (S5), F (S6) und G (S7) gemäß der Zuordnung 180 in 1F zu. Somit ist die MLC-AA(S1)-Zustandsbreite etwa die gemeinsame Breite von vier QLC-Zuständen. Breitere Zustandsbreiten können wegen höherer Zuverlässigkeit (z. B. größere Sicherheitsmarge zwischen Zuständen) und/oder schnellerer Programmierzeit bevorzugt werden.
  • Wenn die MLC-Zustandsbreiten in der Verteilung 160 jedoch verhältnismäßig breit sind und bereits einen großen Teil des endgültigen Spannungsbereichs V=Max2 belegen, können mögliche Permutationen der Zuordnung 180 in 1F entsprechend eingeschränkt werden. Beispielsweise können durchführbare Zuordnungen auf einfache Zuordnungen von MLC-Zuständen zu aufeinander folgenden QLC-Zuständen beschränkt sein. In diesem Fall kann es schwierig sein, einen symmetrischen Gray-Code für die zweite Phase in dem QLC-Modus aufrechtzuerhalten. Somit wird in der Verteilung 170 und in der Zuordnung 180 ein asymmetrischer Gray-Code 1-2-6-6 verwendet. Ein asymmetrischer Gray-Code führt jedoch unerwünscht zu längeren Lesezeiten und höheren Fehlerraten aufgrund bestimmter Speicherseiten mit breiteren Übergangszählern, wie etwa der mittleren Seite (MP) und der unteren Seite (LP) mit sechs (6) Übergängen in der Zuordnung 180.
  • Eine oder mehrere Implementierungen von Verfahren und Systemen werden für mehrphasige Programmierungen mit symmetrischer Gray-Codierung bereitgestellt. Bei diesem Ansatz kann jede Programmierphase Zustände programmieren und erweitern, um einen symmetrischen Gray-Code in jeder Phase aufrechtzuerhalten. Dies kann auch als eine Gray-Verschachtelung mit N-Stufen bezeichnet werden, wobei N die Anzahl er Phasen ist. Durch Verwendung einer Zuordnung, die jeden Programmzustand in einer ersten Phase auf mindestens zwei nicht benachbarte Programmzustände in einer nachfolgenden zweiten Phase zuordnet, kann eine Erweiterung von Codewerten bereitgestellt werden, um eine Auswahl eines symmetrischen Gray-Codes für jede Programmierphase zu erleichtern. Um einen ausreichenden Spannungsbereich für die Ausdehnung bereitzustellen, können ferner die Zustandsbreiten in einer ersten Phase kleiner als die gemeinsame Breite der entsprechenden zugeordneten Zustände in einer nachfolgenden zweiten Phase sein. Da die programmierten Daten in jeder Phase lesbar sein können, können Schreibpuffer entsprechend reduziert oder eliminiert werden, um die Effizienz, Kosten und Leistung einer Speichervorrichtung unter Verwendung der beschriebenen Mehrphasenprogrammierung mit symmetrischer Gray-Codierung zu verbessern.
  • In einem Beispiel zum Programmieren der QLC-Speicherzellen programmiert eine erste Phase die Speicherzellen in einem MLC-Modus unter Verwendung eines symmetrischen Gray-Codes. Die Zielprogrammierungsverteilungen in der ersten Phase können so eingerichtet sein, dass die Zustandsbreiten in der ersten Phase ungefähr die Hälfte der gemeinsamen Breite der entsprechenden zugeordneten Zustände in der zweiten Phase oder etwa die Breite von 2 QLC-Zuständen betragen (d. h. die Hälfte der 4 zugeordneten QLC-Zustände). Alternativ können die Zustandsbreiten etwa 50 % bis 75 % der entsprechenden zugeordneten Zustände oder etwa 2-3 QLC-Zustandsbreiten sein. Da die Speicherzellen nach der ersten Phase lesbar sind, kann die zweite Phase die programmierten Daten direkt aus den Speicherzellen lesen, um die Speicherzellen in einem QLC-Modus zu programmieren. Je nach Verfügbarkeit von zwischengespeicherten Programmdaten können einige oder alle der Schreibpuffer weggelassen werden, was zur Vereinfachung der Gestaltung der Speichervorrichtung beiträgt und in der Vorrichtung Platz für andere produktive Anwendungen wie etwa das Speichern von Benutzerdaten oder Überversorgung freimacht.
  • Eine oder mehrere Implementierungen der vorliegenden Technologie bieten verschiedene Leistungsvorteile und verbessern die Funktionalität eines Computers. Wie oben erläutert, erfordert ein Foggy-Fine-Programmierungsansatz Schreibpuffer, die auf der Vorrichtung reserviert werden müssen, was wiederum Platz für andere produktive Zwecke verringert. Da die beschriebenen mehrphasigen Programmierverfahren die Daten direkt aus den programmierten Speicherzellen wiederherstellen können, kann der Schreibpuffer teilweise oder ganz weggelassen werden, wodurch in der Vorrichtung Platz für Benutzerdaten, Überversorgung oder andere Zwecke wiedergewonnen werden kann. Ein nichtflüchtiger Speicher mit hoher Lebensdauer, der für Schreibpuffer geeignet ist, wie SLC-Speicherzellen, kann teuer sein, und somit kann das teilweise oder vollständige Weglassen der Schreibpuffer dazu beitragen, die Kosteneffektivität der Speichervorrichtung zu verbessern. Außerdem können durch Verwendung des in der Vorrichtung wiedergewonnenen Platzes für Benutzerdaten, Überversorgung oder andere Zwecke verschiedene Leistungseigenschaften der Speichervorrichtung verbessert werden, wie zum Beispiel Schreiblebensdauer, Lese-/Schreibbandbreite, Lese-/Schreiblatenz und/oder Speicherkapazität. Ein Host-Computer, der mit der Datenspeichervorrichtung gekoppelt ist, empfängt wiederum auch die Vorteile der verbesserten Leistung der Datenspeichervorrichtung.
  • 2A veranschaulicht ein beispielhaftes System 200 für mehrphasige Programmierung von QLC-Speicherzellen. System 200 schließt Steuerung 201 und Flash-Speicher 203 ein. Steuerung 201 schließt Codierer 222, Zwischenspeicher 224 und Decoder 226 ein. Flash-Speicher 203 schließt Speicher-Array 208 und Schreibpuffer 230 ein. Mit Bezug auf 1A, 2A und 5 können gleich bezifferte Elemente gleichen Komponenten entsprechen. Zum Beispiel kann Steuerung 201 der Steuerung 101 entsprechen, Flash-Speicher 203 kann Flash-Speicher 103 entsprechen, Speicher-Array 208 kann Speicher-Array 108 entsprechen, Codierer 222 kann Codierer 122 entsprechen, Zwischenspeicher 224 kann Zwischenspeicher 124 entsprechen, Decoder 226 kann Decoder 126 entsprechen, und Schreibpuffer 230 können Schreibpuffern 130 entsprechen.
  • Während die in 2A und 3A, 3B und 3C veranschaulichten Beispiele eine 2-Stufen-Gray-Code-Verschachtelung von MLC zu QLC darstellen, versteht sich ferner, dass die beschriebenen Techniken im Allgemeinen auf mehrphasige Programmierung mehrphasiger Speicherzellen mit unterschiedlichen Anzahlen von Bits pro Zelle anwendbar sind. Somit können ein oder mehrere Aspekte der vorliegenden Technologie Speicherzellen mit einer beliebigen Anzahl von Zuständen verwenden. Zum Beispiel sind eine 2-Stufen-Gray-Code-Verschachtelung von SLC zu QLC oder andere Variationen möglich.
  • In Schritt 1 kann Steuerung 201 einen ersten Teil der eigenen Daten für einen Schreibvorgang empfangen. Der erste Teil kann durch Codierer 222 verarbeitet werden. Der erste Teil kann 2 Bits jedes 4 Bit-Halbbytes in den eigenen Daten entsprechen und kann beliebig gewählt werden, z. B. von den 2 höchstwertigsten Bits oder den 2 niedrigwertigsten Bits. Der codierte erste Teil kann dann in einer ersten Phase, die einem MLC-Modus oder einem 2-Bit-Programmmodus entspricht, in das Speicher-Array 208 programmiert werden.
  • Unter Bezugnahme auf 3A ist eine beispielhafte Programmverteilung 310 dargestellt, die einer Spannungsverteilung des Speicher-Arrays 108 nach Programmierung der ersten Phase in Schritt 1 entsprechen kann. Wie in der Verteilung 310 gezeigt, werden vier Verteilungen, die dem gelöschten Zustand (ER, „11“ zugeordnet), dem ersten Zustand (AA, „10“ zugeordnet), dem zweiten Zustand (BB, „00“ zugeordnet) und dem dritten Zustand (CC, „01“ zugeordnet) entsprechen, in einem Spannungsbereich von 0 bis Max1 Volt programmiert. Wie in der Verteilung 310 gezeigt, verwendet der MLC-Modus einen Gray-Code 1-2, wobei die obere Seite (UP) einen Übergang (zwischen den AA- und BB-Zuständen) aufweist und die untere Seite (LP) zwei Übergänge aufweist (den ersten zwischen den ER- und AA-Zuständen und den zweiten zwischen den BB- und CC-Zuständen).
  • Die Programmierung der ersten Phase kann jede geeignete MLC-Programmiertechnik verwenden. Zum Beispiel können Programmier- und Prüfimpulse abgewechselt werden, bis der letzte Prüfimpuls anzeigt, dass alle programmierten Speicherzellen die Programmierprüfspannung für den gewünschten Programmierzustand erfüllen oder überschreiten. Es ist zu beachten, dass die Programmierung der ersten Phase in dem MLC-Modus erlaubt, dass die programmierten Daten normal wiederhergestellt werden können, im Gegensatz zu der Foggy-Phase des Foggy-Fine-Programmierungsansatzes. Zum Beispiel kann in Verteilung 310 beobachtet werden, dass benachbarte Zustände geringe Mengen von Überlappungen aufweisen, die unter Verwendung von Fehlerkorrekturalgorithmen, welche von Codierer 222 und Decoder 226 bereitgestellt werden, korrigiert werden können.
  • Wie in 3A dargestellt, werden die Zustände in der Verteilung 310 im Vergleich zu beispielsweise den Zuständen in der Verteilung 160 von 1D relativ eng programmiert, wobei jede MLC- Zustandsbreite in Programmverteilung 310 kleiner als die gemeinsame Breite der zugeordneten QLC-Zustände in der Programmverteilung 320 ist. Beispielsweise ordnet der MLC-AA(S1)-Zustand die QLC-Zustände C (S3), D (S4), J (S10) und K (S11) gemäß der Zuordnung 330 in 3C zu. Die MLC-AA(S1)-Zustandsbreite ist kleiner als die gemeinsame Breite der vier QLC-Zustände und kann etwa zwei QLC-Zustandsbreiten betragen. Natürlich sind andere Zuordnungen mit breiteren oder schmäleren MLC-Zustandsbreiten ebenfalls möglich.
  • In Schritt 2 kann die Steuerung 201 einen zweiten Teil der eigenen Daten für den Schreibvorgang empfangen. Der zweite Teil kann durch den Codierer 222 verarbeitet werden. Der zweite Teil kann den verbleibenden 2 Bits der 4 Halbbytes in den eigenen Daten entsprechen und kann somit die Bits aufweisen, die nicht für den ersten Teil jedes 4-Bit-Halbbytes in den eigenen Daten ausgewählt wurden. Der codierte zweite Teil kann dann in die Schreibpuffer 230 programmiert werden.
  • Es ist zu beachten, dass Schreibpuffer 230 in einem Stapel mit 2 Blöcken dargestellt sind. Da der erste Teil bereits in Speicher-Array 208 in Schritt 1 programmiert werden konnte, kann der erste Teil durch Wiederherstellen aus dem Speicher-Array 208 abgerufen werden, wie oben erläutert. Dementsprechend können die Puffer für die Speicherseiten entsprechend dem ersten Teil von Schreibpuffer 230 weggelassen werden, wodurch die SLC-Speicherblockanforderungen für Schreibpuffer 230 im Vergleich zu einem Foggy-Fine-Programmierungsansatz halbiert werden. Wenn stattdessen eine 2-Stufen-Gray-Code-Verschachtelung von SLC zu QLC verwendet wurde, dann würden die SLC-Speicherblockanforderungen für Schreibpuffer 230 um 25 % reduziert werden, z. B. 3 Blöcke anstelle von 4 Blöcken. Demzufolge kann System 200 dem Speicher-Array 208 mehr Platz zur Verbesserung der Leistungseigenschaften der Speichervorrichtung widmen. In anderen Variationen können Speicherseiten ohne die Verwendung von Schreibpuffern 230 zwischengespeichert werden, wodurch ermöglicht wird, dass Schreibpuffer 230 vollständig weggelassen werden.
  • In Schritt 3 liest die Steuerung 201 den zweiten Teil der eigenen Daten von Schreibpuffer 230 und wendet Fehlerkorrekturalgorithmen unter Verwendung des Decoders 226 zur Korrektur etwaiger Fehler beim Lesen der Schreibpuffer 230 an. Auf ähnliche Weise liest die Steuerung 201 in Schritt 4 den ersten Teil der eigenen Daten aus dem Speicher-Array 208 und wendet Fehlerkorrekturalgorithmen unter Verwendung des Decoders 226 zur Korrektur etwaiger Fehler beim Lesen des Speicher-Arrays 208 an. Der erste und der zweite Teil können in dem Zwischenspeicher 224 zur Codierung durch den Codierer 222 kombiniert werden, um die eigenen Daten für die Programmierung in der zweiten Phase vorzubereiten.
  • In Schritt 5 programmiert Steuerung 201 in einer zweiten Phase die decodierten und die codierten Daten entsprechend eines QLC-Modus in das Speicher-Array 208. Zum Beispiel können unter Verwendung des verschachtelten Gray-Codes in Zuordnung 330 von 3C die Speicherzellen, die bereits in dem MLC-Modus programmiert sind, durch Programmieren einer Spannungsdifferenz, die durch die Zuordnung 330 angezeigt wird, auf ihre jeweiligen endgültigen QLC-Zustände erweitert werden. Somit kann die zweite Phase als ein „4-Bit-in-situ-Zerlegen“ bezeichnet werden, da die vorhandenen im MLC-Modus programmierten Speicherzellen, welche bereits 2 Bits an Information speichern, durch Programmieren zusätzlicher Spannung an die gleichen Speicherzellen an ihrem Platz angepasst werden, um die MLC-Zustände in ihre endgültigen QLC-Zustände zum Speichern von 4 Bits an Informationen anzupassen.
  • Zum Beispiel kann MLC UP QLC TP zugeordnet werden, und MLC LP kann QLC MP zugeordnet werden. In diesem Fall stellt die zweite Phase die zusätzliche Programmierspannung bereit, um die verbleibenden zwei Bits oder QLC UP und QLC LP für jede Speicherzelle zu definieren. Natürlich werden die bestimmten Seiten zur Zuordnung von der ersten Phase in die zweite Phase in Zuordnung 330 beliebig ausgewählt, und eine unterschiedliche Zuordnung kann eine unterschiedliche Auswahl verwenden. Es ist zu beachten, dass die Zuordnung 330 Spannungen von der ersten zu der zweiten Phase aufrechterhält oder erhöht, da das Verringern einer programmierten Spannung für eine Speicherzelle ein Löschen eines gesamten NAND-Blocks, der die Speicherzelle enthält, erfordern würde.
  • Wenn zum Beispiel in einem Ansatz die Daten, die in eine bestimmte Speicherzelle programmiert werden sollen, den Bits „1000“ entsprechen und ein Lesen der bestimmten Speicherzelle eine Lesespannung innerhalb der MLC-„10“-Verteilung oder einen MLC-Zustand AA (SI) bestimmt, dann entspricht gemäß der Zuordnung 130 die letzte Zustandszuordnung zu „1000“ dem QLC-Zustand C (S3), welcher eine Zielspannung aufweist, die der Mitte einer Spannungsverteilung für den QLC-Zustand C (S3) entspricht. Somit kann die zusätzliche Spannung zum Programmieren aus einer Differenz zwischen der Zielspannung und der bestimmten Lesespannung bestimmt werden.
  • Nach Schritt 5 wird unter Bezugnahme auf 3B eine beispielhafte Programmverteilung 320 für QLC-Speicherzellen dargestellt, die dem Speicher-Array 208 nach Programmierung der zweiten Phase in einem QLC-Modus entsprechen kann. Wie in der Verteilung 320 gezeigt, werden beispielsweise sechzehn Verteilungen, die dem gelöschten Zustand (ER oder S0, „1111“ zugeordnet) bis dem fünfzehnten Zustand (O oder S15, „1011“ zugeordnet) entsprechen, in einen Spannungsbereich von 0 bis Max2 Volt, der größer als Max1 und etwa 6,2 Volt sein kann, programmiert. Wie in den Verteilungen 310 und 320 gezeigt, werden QLC-Zustände mit dergleichen Abstufung wie ihre jeweiligen MLC-Zustände vor der zweiten Phase angezeigt. Zum Beispiel teilen sich alle Zustände QLC ER (S0), A (S1), B (S2) und O (S15), die sich von dem MLC-Zustand ER (S0) aus erstrecken, dieselbe diagonale Querabstufung.
  • Da die Zuordnung 330 verwendet wird, um die Programmverteilungen 310 und 320 in der ersten und der zweiten Phase zu generieren, werden die Verteilungen in jeder Phase gemäß einem symmetrischen Gray-Code programmiert. Wie oben erläutert, ermöglichen die engeren Zustandsverteilungen für die erste Phase und die Zuordnung von MLC-Zuständen auf mindestens zwei nicht benachbarte QLC-Zustände, dass der symmetrische Gray-Code für jede Phase erfüllt wird. Es ist zu beachten, dass der Begriff „nicht benachbarte QLC-Zustände“ Umhüllungszustände einschließt und somit die Zuordnung zu den Zuständen QLC ER (S0) und QLC O (S15) als „zwei nicht benachbarte QLC-Zustände“ qualifiziert.
  • Ferner ist zu beachten, dass die Summe der Übergangszähler für alle Seiten in der Zuordnung 330 nicht über der Höchstanzahl von Programmierstufen liegt oder dieser entspricht. Zum Beispiel veranschaulicht 3C ein Maximum von 16 QLC-Zuständen (z. B. die Zustände ER, A, B, C, D, E, F, G, H, I, J, K, L, M, N und O). In diesem Beispiel beträgt die maximale Anzahl von Programmierstufen für den QLC-Modus 15 (z. B. 16 - 1 = 15). Hier werden der Gray-Code oder die Übergangszähler für die vier Seiten durch 4-3-4-4 dargestellt, und die Summe der Übergangszähler für alle vier Seiten in der Zuordnung 330 ist 15 (4+3+4+4 = 15).
  • Während Zuordnung 330 als ein spezifisches Beispiel einer 2-Stufen-Gray-Verschachtelung bereitgestellt wird, können andere Zuordnungen, die symmetrische Gray-Codes in jeder Phase aufrechterhalten, ebenso verwendet werden. Zum Beispiel kann es möglich sein, eine Zuordnung zu bestimmen, bei der die MLC-Zustandsbreiten größer als 2 QLC-Zustandsbreiten sind, wodurch die erste Phase schneller programmiert werden kann. Ferner können Zuordnungen angepasst werden, um große Spannungsdifferenzen zwischen Phasen zu vermeiden, um Programmierzeit zu reduzieren. Beispielsweise schließt Zuordnung 330 eine Zuordnung von MLC ER (S0) zu QLC O (S15) ein, wodurch die Programmierung aufgrund der großen Spannungsdifferenz lange dauern kann. Alternative Zuordnungen können die Zuordnungen so anordnen, um solch große Spannungsunterschiede zwischen Phasen zu vermeiden.
  • Um die Programmiergeschwindigkeit zu verbessern, kann es vorteilhaft sein, die mehreren Phasen in einer gestaffelten Wortleitungsprogrammierfolge anstatt sequentiell durch eine Wortleitung zu programmieren. Auf diese Weise muss die Folge nicht auf jede einzelne Wortleitung warten, um die Programmierung vor dem Fortfahren abzuschließen, sondern kann stattdessen Programmierphasen über verschiedene Wortleitungen abwechseln.
  • Zum Beispiel veranschaulicht 2B eine beispielhafte gestaffelte Wortleitungsprogrammierfolge 250 zur Verwendung mit einer Foggy-Fine-Modus-Programmierung oder Mehrphasenprogrammierung. Wie in 2B dargestellt, werden acht Strings angenommen (Str0 bis Str7). Folge 250 programmiert zunächst Strings 0-7 für WL0 (Schritte 1-8) und WL1 (Schritte 9-16) in einer Foggy-Phase, springt dann zu WL0 zurück, um die Programmierung der Strings 0-7 in einer Fine-Phase (Schritte 17-24) abzuschließen, springt dann nach vorne zu WL2, um Strings 0-7 in einer Foggy-Phase zu programmieren (Schritte 25-32), springt dann zu WL1 zurück, um Strings 0-7 in einer Fine-Phase zu programmieren (Schritte 33-40). Folge 250 kann die Wortleitungspaare abwechselnd in Foggy-/Fine-Modi für die verbleibenden Wortleitungen weiter programmieren.
  • Während 2B insbesondere unter Verwendung des Foggy-/Fine-Programmiermodus veranschaulicht ist, kann Folge 250 auch zur Verwendung durch die Mehrphasenprogrammierung, die in 2A und 3A, 3B und 3C beschrieben wird, angepasst werden. Zum Beispiel kann 2B interpretiert werden als: 1) Schreiben im MLC-Modus auf WL0, 2) Schreiben im MLC-Modus auf WL1, 3) Schreiben im QLC-Modus auf WL0, 4) Schreiben im MLC-Modus auf WL2, 5) Schreiben im QLC-Modus auf WL1, und so weiter.
  • Es ist zu beachten, dass WL1 und WL2 als „Durchgangsdaten“ identifiziert werden. Mit anderen Worten, die Daten in WL1 und WL2 können noch nicht vollständig an Speicher-Array 208 übergeben werden und die Wortleitungen können „offen“ sein, da die verbleibenden Phasen noch nicht programmiert worden sind. Somit müssen die Daten für diese Wortleitungen zwischengespeichert oder erneut aus den Speicherzellen gelesen werden, um die verbleibenden Phasen zu vervollständigen. Wie oben erläutert, ist für den Foggy-Fine-Programmieransatz nur ein Zwischenspeichern möglich, da die Speicherzellen nach einer Foggy-Programmierung unlesbar sind. Jedoch ist für mehrphasige Programmierungen jeder Ansatz gültig.
  • Somit können die Daten für „offene“ Wortleitungen in Zwischenspeicher 224, Schreibpuffer 230 oder an einem anderen Ort gespeichert werden, bis die „offenen“ Wortleitungen oder WL1 und WL2 vollständig programmiert sind (d. h. alle Programmierphasen abgeschlossen sind). Sobald die Daten aus dem Speicher-Array 208 „sicher“ oder lesbar sind, können die Daten aus dem Zwischenspeicher 224 oder den Schreibpuffern 230 gelöscht werden. Es ist zu beachten, dass dies Zwischenspeicher 224 ermöglicht, Schreibpuffer 230 zu ersetzen, auf die dann verzichtet werden kann. Jedoch sollte Zwischenspeicher 224 groß genug sein, um die „Durchgangsdaten“ zu speichern. In diesem Beispiel sollte Zwischenspeicher 224 groß genug sein, um bis zu zwei Wortleitungen zu speichern, die einer vorbestimmten Anzahl von Speicherseiten entsprechen können.
  • Eine erste alternative Folge ermöglicht, dass die vorbestimmte Anzahl von Seiten für Zwischenspeicher 224 reduziert wird. Wenn zum Beispiel Zwischenspeicher 224 groß genug ist, um Daten für bis zu 4 Speicherseiten zu speichern, kann die erste alternative Folge wie folgt vorgehen: 1) MLC auf WL0 schreiben, 2) MLC auf WL1 schreiben, 3) WL0 (MLC) lesen und QLC auf WL0 schreiben, 4) MLC auf WL2 schreiben, 5) WL1 lesen und QLC auf WL1 schreiben. Wenn aus dem Speicher-Array 208 ausgelesen wird, dann kann auch die optionale Fehlerkorrektur erfolgen, z. B. unter Verwendung des Decoders 226. Ähnlich wie in der Folge 250, kann die erste alternative Folge Schreibpuffer 230 weglassen.
  • Eine zweite alternative Folge erfordert, dass Schreibpuffer 230 vorhanden sind, kann aber für Speichervorrichtungen mit hoher Chip-Parallelität geeigneter sein. Die oben in Bezug auf das System 200 beschriebenen Schritte 1 bis 5 beschreiben den zweiten alternativen Fortschritt.
  • 4 ist ein Flussdiagramm, das einen beispielhaften Prozess 400 für mehrphasige Programmierung unter Verwendung einer symmetrischen Gray-Codierung veranschaulicht. Einer oder mehrere Blöcke von 4 können durch ein Rechensystem ausgeführt werden (einschließlich z. B. einer Steuerung eines Flash-Speichers, einer Datenspeicher-Steuerung eines Datenspeichersystems oder eines Solid-State-Speichergerätes (SSD), eines Prozessors oder dergleichen). Beispiele eines Rechensystems oder einer Steuerung können Steuerung 501 und/oder 507 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 4 durchführen. Die Schritte in Prozess 400 können als Hardware/Firmware oder Software implementiert sein.
  • Unter Bezugnahme auf 5 programmiert in Block 411 Steuerung 501 in einer ersten Phase einen ersten Teil der Daten in ein NAND-Array 508 in einem Zellenmodus der ersten Stufe. Dies kann dem oben in Bezug auf das System 200 beschriebenen Schritt 1 entsprechen, wobei die Steuerung 201 2 Bits jedes eigenen Daten-Halbbytes in das Speicher-Array 208 in dem MLC-Modus programmiert.
  • Unter Bezugnahme auf 5 speichert die Steuerung 501 in Block 412 in dem Cache 224 oder den Schreibpuffern 230 mindestens eine Teilmenge der Daten. Dies kann dem oben mit Bezug auf das System 200 beschriebenen Schritt 2 entsprechen, wobei die Steuerung 201 die verbleibenden 2 Bits jedes eigenen Daten-Halbbytes in Schreibpuffer 230 programmiert. Alternativ, wie oben in Bezug auf die Folge 250 von 2A und die erste alternative Folge beschrieben, kann die Steuerung 501 eine vorbestimmte Anzahl von Speicherseiten in Zwischenspeicher 224 speichern, wobei Schreibpuffer 230 ignoriert werden. Zwischenspeicher 224 kann zum Beispiel dem Speichermedium 502 von 5 entsprechen.
  • Unter Bezugnahme auf 5 stellt die Steuerung 501 in Block 413 die Daten von mindestens einem Speichermedium 502 wieder her, wobei die wiederhergestellten Daten einen zweiten Teil der Daten einschließen. Je nach in Block 412 verwendetem Verfahren liest Block 413 unter Bezugnahme auf 2 Daten aus dem Zwischenspeicher 224 oder aus den Schreibpuffern 230. Falls nicht zwischengespeichert, kann der erste Teil der Daten auch während des Wiederherstellungsprozesses aus dem Speicherarray 208 ausgelesen werden. Der erste und der zweite Teil der Daten können kombiniert werden, um die Gesamtheit der Daten wiederherzustellen, zum Beispiel ein gesamtes 4-Bit-Halbbyte von Daten. Es ist zu beachten, dass in alternativen Gesichtspunkten der vorliegenden Technologie die Blöcke 412 und 413 durch Lesen der Daten direkt aus den programmierten Speicherzellen modifiziert werden können, wenn Schreibpuffer 230 weggelassen werden.
  • Unter Bezugnahme auf 5 programmiert in Block 414 die Steuerung 501 in einer zweiten Phase die wiederhergestellten Daten in einem Zellenmodus einer zweiten Stufe auf Grundlage einer Zuordnung von dem Zellenmodus der ersten Stufe zu dem Zellenmodus der zweiten Stufe. Zum Beispiel kann die Steuerung 501 die wiederhergestellten Daten auf Grundlage einer Zuordnung 330 von 3C programmieren, die eine Zuordnung von einem MLC Modus zu einem QLC- Modus ist. Ferner ordnet die Zuordnung 330 jede Zustandsverteilung in dem Zellenmodus der ersten Stufe (MLC-Modus) mindestens zwei nicht benachbarten Zustandsverteilungen in dem Zellenmodus der zweiten Stufe (QLC-Modus) zu. Zuordnung 330 sieht auch vor, dass eine Breite jeder Zustandsverteilung in dem Zellenmodus der ersten Stufe (MLC-Modus) kleiner als eine gemeinsame Breite entsprechender Zustandsverteilungen in dem Zellenmodus der zweiten Stufe (QLC-Modus) ist. Wie oben erläutert, erfüllt Zuordnung 330 diese Definitionen, was Zuordnung 330 ermöglicht, einen symmetrischen Gray-Code für jede Phase aufrechtzuerhalten.
  • 5 ist ein Blockdiagramm, das beispielhafte Komponenten eines Datenspeichersystems gemäß Aspekten der vorliegenden Technologie veranschaulicht. Wie in 5 dargestellt, beinhaltet das Datenspeichersystem 500 (z. B. ein Solid-State-Laufwerk) nach einigen Aspekten den Datenspeichersteuerung 501, das Speichermedium 502 und das Flash-Speicherarray 510, einschließlich eines oder mehrerer Flash-Speicher 503. Steuerung 501 kann Speichermedium 502 zur temporären Speicherung von Daten und Informationen verwenden, die verwendet werden, um das Datenspeichersystem 500 zu verwalten. Steuerung 501 kann mehrere interne Komponenten (nicht abgebildet) wie Nur-Lese-Speicher, eine Flash-Komponentenschnittstelle (beispielsweise einen Multiplexer zum Verwalten von Befehls- und Datentransport entlang einer seriellen Verbindung zu dem Flash-Speicher 503), eine E/A-Schnittstelle, eine Fehlerkorrekturschaltung und dergleichen beinhalten. Nach einigen Aspekten können alle diese Elemente von Steuerung 501 in einem einzelnen Chip integriert sein. In anderen Aspekten können diese Elemente getrennt auf ihren eigenen Leiterplatten vorhanden sein.
  • In einigen Implementierungen können Aspekte der vorliegenden Offenbarung in einem Datenspeichersystem 500 implementiert werden. Die Aspekte der vorliegenden Offenbarung können beispielsweise mit der Funktion der Datenspeichersteuerung 501 integriert werden oder können als separate Komponenten zur Verwendung in Verbindung mit Datenspeichersteuerung 501 vorhanden sein.
  • Steuerung 501 kann auch einen Prozessor beinhalten, der eingerichtet sein kann, um Code oder Befehle auszuführen und die hierin beschriebenen Operationen und Funktionen auszuführen, Anforderungsabläufe und Adressenzuordnungen zu verwalten, Berechnungen durchzuführen und Befehle zu erzeugen. Der Prozessor der Steuerung 501 kann eingerichtet sein, um den Betrieb der Komponenten in der Datenspeichersteuerung 501 zu überwachen und/oder zu steuern. Der Prozessor kann ein Allzweck-Mikroprozessor, ein Mikrocontroller, ein digitaler Signalprozessor (DSP), ein anwendungsspezifischer integrierter Schaltkreis (ASIC), ein im Feld programmierbares Gate-Array (FPGA), ein programmierbarer Logikbaustein (PLD), ein Controller, ein Zustandsmaschine, ein Logikgatter, diskrete Hardwarekomponenten oder eine Kombination der Vorstehenden sein. Eine oder mehrere Sequenzen von Anweisungen können als Firmware im ROM von Steuerung 501 und/oder seinem Prozessor gespeichert sein. Eine oder mehrere Sequenzen von Anweisungen können gespeicherte Software sein, die von dem Speichermedium 502 und dem Flash-Speicher 503 gelesen wird oder von der Host-Vorrichtung 504 empfangen wird (zum Beispiel über die Host-Schnittstelle 505). ROM, Speichermedium 502, Flash-Speicher 503 stellen Beispiele von maschinen- oder computerlesbaren Medien dar, auf denen Befehle/Code gespeichert werden können, die von Steuerung 501 und/oder seinem Prozessor ausführbar sind. Die Begriffe maschinen- oder computerlesbare Medien können allgemein jedes Medium oder jeden Datenträger bezeichnen, das/der verwendet wird, um Befehle an Steuerung 501 bereitzustellen, einschließlich sowohl flüchtiger Medien, wie beispielsweise dynamischer Speicher, der für Speichermedien 502 oder für Puffer in Steuerung 501 verwendet wird, als auch nichtflüchtige Medien wie elektronische Medien, optische Medien und magnetische Medien.
  • In einigen Aspekten kann Steuerung 501 eingerichtet sein, um Daten, die von einem Host-Gerät 504 empfangen werden, als Reaktion auf einem Schreibbefehl von Host-Gerät 504 im Flash-Speicher 503 zu speichern. Steuerung 501 ist weiterhin so eingerichtet, dass sie in dem Flash-Speicher 503 gespeicherte Daten liest und die gelesenen Daten als Reaktion auf einen Lesebefehl von Host-Gerät 504 an Host-Gerät 504 überträgt.
  • Host-Gerät 504 stellt jede Vorrichtung dar, die eingerichtet ist, um mit dem Datenspeichersystem 500 gekoppelt zu werden und Daten in dem Datenspeichersystem 500 zu speichern. Die Host-Vorrichtung 504 kann ein Rechensystem, wie beispielsweise ein Personal Computer, ein Server, eine Workstation, ein Laptop-Computer, ein PDA, ein Smartphone und dergleichen, sein. Alternativ kann die Host-Vorrichtung 504 eine elektronische Vorrichtung wie eine Digitalkamera, ein digitaler Audio-Player, ein digitaler Videorecorder und dergleichen sein.
  • In manchen Gesichtspunkten stellt das Datenspeichermedium 502 flüchtigen Speicher dar, der zum temporären Speichern von Daten und Informationen verwendet wird, die verwendet werden, um das Datenspeichersystem 500 zu verwalten. Gemäß Aspekten der vorliegenden Technologie ist das Speichermedium 502 ein Speicher mit wahlfreiem Zugriff (RAM), wie ein RAM mit doppelter Datenrate (DDR). Andere Bauweisen von RAM können auch verwendet werden, um das Speichermedium 502 zu implementieren. Speicher 502 kann unter Verwendung eines einzelnen RAM-Moduls oder mehrerer RAM-Module implementiert werden. Obwohl das Speichermedium 502 als von Steuerung 501 verschieden dargestellt ist, ist für Fachleute leicht ersichtlich, dass das Speichermedium 502 in die Steuerung 501 integriert sein kann, ohne vom Umfang der vorliegenden Technologie abzuweichen. Alternativ kann das Speichermedium 502 ein nichtflüchtiger Speicher sein wie eine Magnetplatte, ein Flash-Speicher, eine periphäre SSD und dergleichen.
  • Wie weiterhin in 5 dargestellt, kann das Datenspeichersystem 500 auch die Host-Schnittstelle 505 beinhalten. Die Host-Schnittstelle 505 kann eingerichtet sein, um betriebsfähig (z. B. durch drahtgebundene oder drahtlose Verbindung) mit der Host-Einrichtung 504 gekoppelt zu sein, um Daten von der Host-Vorrichtung 504 zu empfangen und Daten an die Host-Vorrichtung 504 zu senden. Die Host-Schnittstelle 505 kann elektrische und physikalische Verbindungen oder eine drahtlose Verbindung zum betriebsfähigen Koppeln der Host-Vorrichtung 504 mit der Steuerung 501 (z. B. über die E/A-Schnittstelle der Steuerung 501) einschließen. Die Host-Schnittstelle 505 kann eingerichtet sein, um Daten, Adressen und Steuersignale zwischen der Host-Vorrichtung 504 und Steuerung 501 zu kommunizieren. Alternativ kann die E/A-Schnittstelle der Steuerung 501 eine Host-Schnittstelle 505 beinhalten und/oder mit dieser kombiniert sein. Die Host-Schnittstelle 505 kann eingerichtet sein, um eine Standardschnittstelle wie etwa Serial Attached SCSI (SAS), Fiber Channel Interface, PCI Express (PCIe), SATA, USB und dergleichen zu implementieren. Die Host-Schnittstelle 505 kann eingerichtet sein, um nur eine Schnittstelle zu implementieren. Alternativ kann Host-Schnittstelle 505 (und/oder die E/A-Schnittstelle von Steuerung 501) eingerichtet sein, um mehrere Schnittstellen zu implementieren, welche durch Verwendung eines Konfigurationsparameters, der von einem Benutzer ausgewählt oder bei der Montage programmiert wurde, individuell wählbar sind. Die Host-Schnittstelle 505 kann einen oder mehrere Puffer zum Zwischenspeichern von Übertragungen zwischen der Hostvorrichtung 504 und Steuerung 501 beinhalten.
  • Ein Flash-Speicher 503 stellt eine nichtflüchtige Speichervorrichtung zum Speichern von Daten dar. Nach Aspekten der vorliegenden Technologie schließt der Flash-Speicher 503 beispielsweise einen NAND-Flash-Speicher ein. Flash-Speicher 503 kann eine einzelne Flash-Speichervorrichtung oder einen einzelnen Chip einschließen oder kann, wie in 5 dargestellt, mehrere Flash-Speichervorrichtungen oder Chips einschließen, die in mehreren Kanälen angeordnet sind. Flash-Speicher 503 ist nicht auf irgendeine bestimmte Kapazität oder Konfiguration beschränkt. Zum Beispiel können die Anzahl physischer Blöcke, die Anzahl physischer Seiten pro physischem Block, die Anzahl von Sektoren pro physischer Seite und die Größe der Sektoren innerhalb des Umfangs der vorliegenden Technologie variieren.
  • Der Flash-Speicher kann eine Standard-Schnittstellenspezifikation aufweisen, so dass Chips von mehreren Herstellern austauschbar (zumindest zu einem großen Grad) verwendet werden können. Die Schnittstelle verbirgt die interne Arbeitsweise des Flash und gibt nur intern erkannten Bitwert für Daten zurück. In einigen Aspekten wird die Schnittstelle des Flash-Speichers 503 dazu verwendet, um auf ein oder mehrere interne Register 506 und eine interne Flash-Steuerung 507 zur Kommunikation durch externe Geräte zuzugreifen. Nach einigen Aspekten können die Register 506 Adress-, Befehls- und/oder Datenregister beinhalten, die intern die notwendigen Daten zu und von einem NAND-Speicherzellen-Array 508 abrufen und ausgeben. Ein Datenregister kann zum Beispiel Daten beinhalten, die in dem Speicher-Array 508 gespeichert werden sollen oder Daten nach einem Abruf aus dem Speicher-Array 508 und kann auch zur temporären Datenspeicherung verwendet werden und/oder wie ein Puffer wirken. Ein Adressenregister kann die Speicheradresse speichern, von der Daten an Host 504 abgerufen werden, oder die Adresse, zu der Daten gesendet und gespeichert werden. Nach einigen Aspekten ist ein Befehlsregister enthalten, um die Parität, die Unterbrechungssteuerung und dergleichen zu steuern. Nach einigen Aspekten ist die interne Flash-Steuerung 507 über ein Steuerregister zugänglich, um das allgemeine Verhalten des Flash-Speichers 503 zu steuern. Die interne Flash-Steuerung 507 und/oder das Steuerregister können die Anzahl von Stoppbits, die Wortlänge und die Empfänger-Taktquelle steuern und können auch das Umschalten des Adressiermodus, der Paging-Steuerung, Coprozessorsteuerung und dergleichen steuern.
  • Nach einigen Aspekten kann Register 506 auch ein Testregister beinhalten. Auf das Testregister kann durch spezifische Adressen und/oder Datenkombinationen zugegriffen werden, die an der Schnittstelle des Flash-Speichers 503 bereitgestellt werden (z. B. durch spezialisierte Software, die vom Hersteller bereitgestellt wird, um verschiedene Tests an den internen Komponenten des Flash-Speichers durchzuführen). Nach weiteren Aspekten kann das Testregister verwendet werden, um andere interne Register, beispielsweise die Befehls - und/oder Steuerregister, aufzurufen und/oder zu modifizieren. Nach einigen Ausführungsformen können Testmodi, auf die über das Testregister zugegriffen werden kann, verwendet werden, um bestimmte Programmierbedingungen des Flash-Speichers 503 (z. B. Lesestufen) einzugeben oder zu modifizieren, um dynamisch zu variieren, wie Daten aus den Speicherzellen der Speicherarrays 508 gelesen werden. Die Register 506 können auch einen oder mehrere Datenzwischenspeicher beinhalten, die mit dem Flash-Speicher 503 gekoppelt sind.
  • Es versteht sich, dass nicht in allen Fällen Daten das Ergebnis eines empfangenen Befehls von Host 504 und/oder der Rücksendung an Host 504 sein können. Nach einigen Aspekten kann Steuerung 501 eingerichtet sein, um eine Leseoperation unabhängig von Host 504 auszuführen (z. B. um Lesestufen oder BER zu verifizieren). Die Prädikatswörter „eingerichtet, um“, „betreibbar, um“ und „programmiert, um“, wie hier verwendet, implizieren keine spezielle materielle oder immaterielle Modifikation eines Subjekts, sondern sollen stattdessen austauschbar verwendet werden. Zum Beispiel kann ein Prozessor, der eingerichtet ist, um eine Operation oder eine Komponente zu überwachen, auch bedeuten, dass der Prozessor so programmiert ist, die Operation zu überwachen und zu steuern, oder der Prozessor betreibbar ist, die Operation zu überwachen und zu steuern. Ebenfalls kann ein Prozessor, der eingerichtet ist, um Code auszuführen, als ein Prozessor ausgelegt sein, der programmiert ist, um Code auszuführen oder betreibbar ist, um Code auszuführen.
  • Steuerung 507 kann die in den Blöcken 411-414 identifizierten Vorgänge ausführen. Steuerung 507 kann bewirken, dass die in den Blöcken 411-414 identifizierten Vorgänge eintreten, oder Steuerung 501 kann Anweisungen bereitstellen, um Steuerung 507 (und Register 506) zu veranlassen oder es ihnen zu erleichtern, Vorgänge durchzuführen, die in den Blöcken 411-414 identifiziert wurden.
  • Verschiedene Beispiele von Aspekten der Offenbarung werden nachfolgend beschrieben. Diese dienen als Beispiele und schränken die vorliegende Technologie nicht ein.
  • Ein oder mehrere Gesichtspunkte der vorliegenden Technologie stellen eine Datenspeichervorrichtung bereit, die einen Flash-Speicher einschließen kann, der Speicherzellen, einen Zwischenspeicher und eine Steuerung aufweist. Die Steuerung kann eingerichtet sein, um in einer ersten Phase einen ersten Teil von Daten in die Speicherzellen in einem Zellenmodus der ersten Stufe zu programmieren. Die Steuerung kann auch eingerichtet sein, um in dem Zwischenspeicher mindestens eine Teilmenge der Daten zu speichern. Die Steuerung kann auch eingerichtet sein, um die Daten von mindestens dem Zwischenspeicher wiederherzustellen, wobei die wiederhergestellten Daten einen zweiten Teil der Daten einschließen. Die Steuerung kann ferner in einer zweiten Phase eingerichtet sein, die wiederhergestellten Daten in einem Zellenmodus der zweiten Stufe auf Grundlage einer Zuordnung von einem Zellenmodus der ersten Stufe zu programmieren, wobei die Zuordnung jeder Zustandsverteilung in dem Zellenmodus der ersten Stufe mindestens zwei nicht benachbarten Zustandsverteilungen in dem Zellenmodus der zweiten Stufe zuordnet, und wobei die Zuordnung eine Breite jedes Verteilungszustands in dem Zellenmodus der ersten Stufe einrichtet, die kleiner als eine gemeinsame Breite der entsprechenden Zustandsverteilungen in dem Zellenmodus der zweiten Stufe sein muss.
  • In anderen Gesichtspunkten werden Verfahren zur Mehrphasenprogrammierung mit symmetrischer Gray-Codierung bereitgestellt. Gemäß einigen Gesichtspunkten kann ein Verfahren das Programmieren in einer ersten Phase eines ersten Teils von Daten in Speicherzellen eines Flash-Speichers in einem Zellenmodus einer ersten Stufe einschließen. Das Verfahren kann auch das Speichern von mindestens einer Teilmenge der Daten in einem Zwischenspeicher einschließen, der Single-Level-Zellen (SLC) aufweist. Das Verfahren kann auch das Wiederherstellen der Daten von mindestens dem Zwischenspeicher einschließen, wobei die wiederhergestellten Daten einen zweiten Teil der Daten einschließen. Das Verfahren kann auch in einer zweiten Phase eine Programmierung der wiederhergestellten Daten in einem Zellenmodus der zweiten Stufe auf Grundlage einer Zuordnung von einem Zellenmodus der ersten Stufe zu dem Zellenmodus der zweiten Stufe einschließen, wobei die Zuordnung jeder Zustandsverteilung in dem Zellenmodus der ersten Stufe mindestens zwei nicht benachbarten Zustandsverteilungen in dem Zellenmodus der zweiten Stufe zuordnet, und wobei die Zuordnung eine Breite jedes Verteilungszustands in dem Zellenmodus der ersten Stufe bereitstellt, die kleiner als eine gemeinsame Breite der entsprechenden Zustandsverteilungen in dem Zellenmodus der zweiten Stufe ist.
  • In weiteren Gesichtspunkten kann ein System Mittel zum Programmieren eines ersten Teils von Daten in Speicherzellen eines Flash-Speichers in einem Multi-Level-Zellenmodus (MLC-Modus) in einer ersten Phase einschließen. Das System kann auch Mittel zum Speichern von mindestens einer Teilmenge der Daten in einem Zwischenspeicher einschließen, der Single-Level-Zellen (SLC) aufweist. Das System kann auch Mittel zum Wiederherstellen der Daten von mindestens dem Zwischenspeicher einschließen, wobei die wiederhergestellten Daten einen zweiten Teil der Daten einschließen. Das System kann auch in einer zweiten Phase Mittel zum Programmieren der wiederhergestellten Daten in einem Quad-Level-Zellenmodus (QLC) auf Grundlage einer Zuordnung von dem MLC-Modus zu dem QLC-Modus einschließen, wobei die Zuordnung jeder Zustandsverteilung in dem MLC-Modus mindestens zwei nicht benachbarten Zustandsverteilungen in dem QLC-Modus zuordnet, und wobei die Zuordnung so eingerichtet ist, dass eine Breite jedes Verteilungszustands in dem MLC-Modus kleiner als eine gemeinsame Breite der entsprechenden Zustandsverteilungen in dem QLC-Modus ist, und wobei die Zuordnung eingerichtet ist, einen symmetrischen Gray-Code in dem MLC-Modus und dem QLC-Modus bereitzustellen.
  • Verschiedene Implementierungen der Verfahren und Systeme für die Mehrphasenprogrammierung mit symmetrischem Gray-Codierung stellen mehrere Leistungsvorteile bereit, welche die Funktion der Speichervorrichtung verbessern. Einem Host-Computer, der mit der Datenspeichervorrichtung über eine Schnittstelle verbunden ist, werden ebenfalls verbesserte Funktionsweisen bereitgestellt, wobei die Datenspeichervorrichtung mit höherer Lese- und Schreibleistung und Datenspeicherkapazität betrieben wird. Somit stellen die beschriebenen Verfahren und Systeme Leistungsvorteile bereit, die das Funktionieren einer Datenspeichervorrichtung und eines Host-Computers verbessern.
  • Es versteht sich, dass andere Konfigurationen der vorliegenden Technologie für Fachleute aus der folgenden detaillierten Beschreibung leicht ersichtlich werden, wobei verschiedene Konfigurationen der vorliegenden Technologie zur Veranschaulichung gezeigt und beschrieben werden. Es ist einleuchtend, dass die vorliegende Technologie andere und unterschiedliche Konfigurationen ermöglicht, und dass ihre verschiedenen Details in verschiedener anderer Hinsicht modifiziert werden können, ohne vom Umfang der vorliegenden Technologie abzuweichen. Dementsprechend sind die Zeichnungen und die detaillierte Beschreibung als veranschaulichend und nicht als einschränkend zu betrachten.
  • 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 (z. B. in einer anderen Reihenfolge angeordnet oder auf eine andere Weise partitioniert sein), 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 (z. B. sein) schließen das grammatikalische Feminin und Neutrum (z. B. ihr und sein) ein, und umgekehrt. Überschriften und Unterüberschriften, falls vorhanden, werden nur der Einfachheit halber verwendet und schränken die vorliegende Technologie 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. Ein Datenspeichersystem, aufweisend: einen Flash-Speicher mit Speicherzellen; einen Zwischenspeicher; und eine Steuerung, die eingerichtet ist, um: in einer ersten Phase einen ersten Teil von Daten in die Speicherzellen in einem Zellenmodus der ersten Stufe zu programmieren; in dem Zwischenspeicher mindestens eine Teilmenge der Daten zu speichern; die Daten von mindestens dem Zwischenspeicher wiederherzustellen, wobei die wiederhergestellten Daten einen zweiten Teil der Daten einschließen; und in einer zweiten Phase die wiederhergestellten Daten in einem Zellenmodus der zweiten Stufe auf Grundlage einer Zuordnung von dem Zellenmodus der ersten Stufe auf den Zellenmodus der zweiten Stufe zu programmieren, wobei die Zuordnung jeder Zustandsverteilung in dem Zellenmodus der ersten Stufe mindestens zwei nicht benachbarten Zustandsverteilungen der zweiten Stufe zuordnet, und wobei die Zuordnung eine Breite jeder Zustandsverteilung in dem Zellenmodus der ersten Stufe so einrichtet, dass sie kleiner als eine gemeinsame Breite entsprechender Zustandsverteilungen in dem Zellenmodus der zweiten Stufe ist.
  2. Datenspeichervorrichtung gemäß Anspruch 1, wobei die Steuerung so eingerichtet ist, in dem Zwischenspeicher nicht mehr als den ersten Teil der Daten in Single-Level-Speicherzellen (SLC) zu speichern.
  3. Datenspeichervorrichtung gemäß Anspruch 1, wobei die Steuerung so eingerichtet ist, die Daten durch Lesen des ersten Teils der Daten aus den programmierten Speicherzellen wiederherzustellen und den ersten Teil der Daten mit mindestens der Teilmenge der Daten aus dem Zwischenspeicher zu kombinieren.
  4. Datenspeichervorrichtung gemäß Anspruch 1, wobei die Steuerung so eingerichtet ist, in dem Zwischenspeicher den zweiten Teil der Daten zu speichern.
  5. Datenspeichervorrichtung gemäß Anspruch 4, wobei die Steuerung so eingerichtet ist, in dem Zwischenspeicher den ersten Teil der Daten zu speichern.
  6. Datenspeichervorrichtung gemäß Anspruch 1, wobei die Steuerung so eingerichtet ist, die erste Phase und die zweite Phase in einer gestaffelten Folge über Wortleitungen der Speicherzellen zu programmieren.
  7. Datenspeichervorrichtung gemäß Anspruch 1, wobei die Zuordnung eingerichtet ist, einen symmetrischen Gray-Code in dem Zellenmodus der zweiten Stufe bereitzustellen, wobei eine Differenz zwischen Übergangszählern von jeweils zwei benachbarten Seiten der Speicherseiten in dem Zellenmodus der zweiten Stufe eine vorbestimmte Übergangszählerdifferenz nicht überschreitet und eine Summe der Übergangszähler für alle Speicherseiten eine Höchstanzahl von Programmierstufen nicht überschreitet.
  8. Datenspeichervorrichtung gemäß Anspruch 1, wobei die Zuordnung so eingerichtet ist, dass die Breite jeder Zustandsverteilung in dem Zellenmodus der ersten Stufe etwa die Hälfte der gemeinsamen Breite der entsprechenden Zustandsverteilungen in dem Zellenmodus der zweiten Stufe ist.
  9. Datenspeichervorrichtung gemäß Anspruch 1, wobei die Steuerung so eingerichtet ist, dass er im Zwischenspeicher bis zu einer vorbestimmten Anzahl von Speicherseiten speichert.
  10. Datenspeichervorrichtung gemäß Anspruch 1, wobei der Zwischenspeicher von dem Flash-Speicher getrennt ist und sich davon unterscheidet.
  11. Datenspeichervorrichtung gemäß Anspruch 3, wobei der Zwischenspeicher einen flüchtigen Direktzugriffsspeicher aufweist und wobei der Flash-Speicher einen nichtflüchtigen Speicher aufweist.
  12. Verfahren, das unter Verwendung von einer oder mehreren Steuerungen für eine oder mehrere Datenspeichervorrichtungen implementiert wird, wobei das Verfahren umfasst: Programmieren, in einer ersten Phase, eines ersten Teils von Daten in Speicherzellen eines Flash-Speichers in einem Zellenmodus der ersten Stufe; Speichern von mindestens einer Teilmenge der Daten in einem Zwischenspeicher, der Single-Level-Zellen (SLC) aufweist; Wiederherstellen der Daten aus mindestens dem Zwischenspeicher, wobei die wiederhergestellten Daten einen zweiten Teil der Daten einschließen; und Programmieren, in einer zweiten Phase, der wiederhergestellten Daten in einem Zellenmodus der zweiten Stufe auf Grundlage einer Zuordnung von dem Zellenmodus der ersten Stufe zu dem Zellenmodus der zweiten Stufe, wobei die Zuordnung jeder Zustandsverteilung in dem Zellenmodus der ersten Stufe mindestens zwei nicht benachbarten Zustandsverteilungen der zweiten Stufe zuordnet, und wobei die Zuordnung eine Breite jeder Zustandsverteilung in dem Zellenmodus der ersten Stufe bereitstellt, die kleiner als eine kombinierte Breite entsprechender Zustandsverteilungen in dem Zellenmodus der zweiten Stufe ist.
  13. Verfahren gemäß Anspruch 12, wobei die Wiederherstellung der Daten das Auslesen des ersten Teils der Daten aus den programmierten Speicherzellen und das Kombinieren des ersten Teils der Daten mit mindestens der Teilmenge der Daten aus dem Zwischenspeicher aufweist.
  14. Verfahren gemäß Anspruch 12, wobei die mindestens eine Teilmenge der Daten den zweiten Teil der Daten einschließt.
  15. Verfahren gemäß Anspruch 14, wobei die mindestens eine Teilmenge der Daten den ersten Teil der Daten einschließt.
  16. Verfahren gemäß Anspruch 12, wobei das Programmieren in der ersten Phase und das Programmieren in der zweiten Phase in einer gestaffelten Folge über Wortleitungen der Speicherzellen ausgeführt wird.
  17. Verfahren gemäß Anspruch 12, wobei die Zuordnung so eingerichtet ist, einen symmetrischen Gray-Code in dem Zellenmodus der zweiten Stufe bereitzustellen, wobei eine Differenz zwischen Übergangszählern aller zwei benachbarter Seiten der Speicherseiten in dem Zellenmodus der zweiten Stufe eine vorbestimmte Übergangszählerdifferenz nicht überschreitet und eine Summe der Übergangszähler für alle Speicherseiten eine Höchstanzahl von Programmierstufen in dem Zellenmodus der zweiten Stufe nicht überschreitet.
  18. Verfahren gemäß Anspruch 12, wobei die Zuordnung so eingerichtet ist, dass die Breite jeder Zustandsverteilung in dem Zellenmodus der ersten Stufe etwa die Hälfte der gemeinsamen Breite der entsprechenden Zustandsverteilungen in dem Zellenmodus der zweiten Stufe beträgt.
  19. System, das aufweist: Mittel zur Programmierung, in einer ersten Phase, eines ersten Teils von Daten in Speicherzellen eines Flash-Speichers in einem Multi-Level-Zellenmodus (MLC); Mittel zum Speichern von mindestens einer Teilmenge der Daten in einem Zwischenspeicher, der Single-Level-Zellen (SLC) aufweist; Mittel zum Wiederherstellen der Daten von mindestens dem Zwischenspeicher, wobei die wiederhergestellten Daten einen zweiten Teil der Daten einschließen; und Mittel zur Programmierung, in einer zweiten Phase, der wiederhergestellten Daten in einem Quad-Level-Zellenmodus (QLC) auf Grundlage einer Zuordnung von dem MLC-Modus zu dem QLC-Modus, wobei die Zuordnung jeder Zustandsverteilung in dem MLC-Modus mindestens zwei nicht benachbarten Zustandsverteilungen in dem QLC-Modus zuordnet, und wobei die Zuordnung so eingerichtet ist, dass eine Breite jeder Zustandsverteilung in dem MLC-Modus kleiner als eine gemeinsame Breite der entsprechenden Zustandsverteilungen in dem QLC-Modus ist, und wobei die Zuordnung eingerichtet ist, einen symmetrischen Gray-Code in dem MLC-Modus und dem QLC-Modus bereitzustellen.
  20. System gemäß Anspruch 19, wobei die Zuordnung so eingerichtet ist, dass die Breite jeder Zustandsverteilung in dem MLC-Modus etwa 50 % bis 75 % der gemeinsamen Breite der entsprechenden Zustandsverteilungen in dem QLC-Modus beträgt.
DE102019133129.3A 2019-03-08 2019-12-05 Mehrphasenprogrammierung mit symmetrischer gray-codierung Pending DE102019133129A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/297,359 2019-03-08
US16/297,359 US11133067B2 (en) 2019-03-08 2019-03-08 Multi-phased programming with balanced gray coding

Publications (1)

Publication Number Publication Date
DE102019133129A1 true DE102019133129A1 (de) 2020-09-10

Family

ID=72147120

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019133129.3A Pending DE102019133129A1 (de) 2019-03-08 2019-12-05 Mehrphasenprogrammierung mit symmetrischer gray-codierung

Country Status (3)

Country Link
US (2) US11133067B2 (de)
CN (1) CN111667868B (de)
DE (1) DE102019133129A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113272902A (zh) * 2021-03-31 2021-08-17 长江存储科技有限责任公司 使用不同格雷码的编程和读取操作以及用于执行这种操作的存储器件

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11074013B2 (en) 2018-08-07 2021-07-27 Marvell Asia Pte, Ltd. Apparatus and methods for providing quality of service over a virtual interface for solid-state storage
US11656775B2 (en) 2018-08-07 2023-05-23 Marvell Asia Pte, Ltd. Virtualizing isolation areas of solid-state storage media
US11010314B2 (en) 2018-10-30 2021-05-18 Marvell Asia Pte. Ltd. Artificial intelligence-enabled management of storage media access
US10705966B1 (en) * 2018-12-14 2020-07-07 Western Digital Technologies, Inc. Mapping for multi-state programming of memory devices
US11481118B2 (en) * 2019-01-11 2022-10-25 Marvell Asia Pte, Ltd. Storage media programming with adaptive write buffer release
US11610641B2 (en) * 2020-07-09 2023-03-21 SK Hynix Inc. Wafer-yields and write-QoS in flash-based solid state drives
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
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
CN114791888B (zh) * 2022-06-22 2022-09-02 北京得瑞领新科技有限公司 状态映射处理方法及装置、介质、ssd设备

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7251160B2 (en) 2005-03-16 2007-07-31 Sandisk Corporation Non-volatile memory and method with power-saving read and program-verify operations
US20080285652A1 (en) 2007-05-14 2008-11-20 Horizon Semiconductors Ltd. Apparatus and methods for optimization of image and motion picture memory access
KR101245219B1 (ko) 2007-05-16 2013-03-19 삼성전자주식회사 메모리 셀 기입/독출 방법 및 페이지 버퍼
KR100923820B1 (ko) 2007-10-12 2009-10-27 주식회사 하이닉스반도체 페이지 버퍼, 이를 구비하는 메모리 소자 및 그 동작 방법
US9123422B2 (en) 2012-07-02 2015-09-01 Super Talent Technology, Corp. Endurance and retention flash controller with programmable binary-levels-per-cell bits identifying pages or blocks as having triple, multi, or single-level flash-memory cells
US8266503B2 (en) * 2009-03-13 2012-09-11 Fusion-Io Apparatus, system, and method for using multi-level cell storage in a single-level cell mode
US8027195B2 (en) 2009-06-05 2011-09-27 SanDisk Technologies, Inc. Folding data stored in binary format into multi-state format within non-volatile memory devices
KR20110017718A (ko) 2009-08-14 2011-02-22 삼성전자주식회사 플래시 메모리 장치, 이의 프로그램 방법 및 독출 방법
US9070473B2 (en) * 2009-12-02 2015-06-30 Micron Technology, Inc. Refresh architecture and algorithm for non-volatile memories
US8355280B2 (en) * 2010-03-09 2013-01-15 Samsung Electronics Co., Ltd. Data storage system having multi-bit memory device and operating method thereof
US9245653B2 (en) 2010-03-15 2016-01-26 Intelligent Intellectual Property Holdings 2 Llc Reduced level cell mode for non-volatile memory
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
US20140108705A1 (en) * 2012-10-12 2014-04-17 Sandisk Technologies Inc. Use of High Endurance Non-Volatile Memory for Read Acceleration
WO2015106162A1 (en) 2014-01-09 2015-07-16 SanDisk Technologies, Inc. Selective copyback for on die buffered non-volatile memory
US9159412B1 (en) * 2014-07-15 2015-10-13 Macronix International Co., Ltd. Staggered write and verify for phase change memory
JP6123766B2 (ja) * 2014-09-18 2017-05-10 カシオ計算機株式会社 データ読み出し装置、プログラムおよびデータ読み出し方法
US9424944B2 (en) 2014-10-31 2016-08-23 Sandisk Technologies Llc Detecting voltage threshold drift
US9715939B2 (en) 2015-08-10 2017-07-25 Sandisk Technologies Llc Low read data storage management
JP2018005959A (ja) 2016-06-30 2018-01-11 東芝メモリ株式会社 メモリシステムおよび書き込み方法
US9697892B1 (en) 2016-10-04 2017-07-04 Micron Technology, Inc. Generation and application of gray codes
US10275170B2 (en) * 2017-04-10 2019-04-30 Sandisk Technologies Llc Folding operations in memory systems with single address updates
US10419004B2 (en) * 2017-04-21 2019-09-17 Windbond Electronics Corporation NVFF monotonic counter and method of implementing same
US10146460B1 (en) 2017-06-01 2018-12-04 Apple Inc. Programming schemes for avoidance or recovery from cross-temperature read failures
US10109361B1 (en) * 2017-06-29 2018-10-23 Intel Corporation Coarse pass and fine pass multi-level NVM programming
TWI650757B (zh) 2018-03-30 2019-02-11 大陸商深圳大心電子科技有限公司 解碼方法以及儲存控制器
TWI668695B (zh) * 2018-07-24 2019-08-11 群聯電子股份有限公司 電壓調整方法、記憶體控制電路單元以及記憶體儲存裝置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113272902A (zh) * 2021-03-31 2021-08-17 长江存储科技有限责任公司 使用不同格雷码的编程和读取操作以及用于执行这种操作的存储器件
US11854613B2 (en) 2021-03-31 2023-12-26 Yangtze Memory Technologies Co., Ltd. Program and read operations using different gray codes and memory device for performing the same

Also Published As

Publication number Publication date
CN111667868A (zh) 2020-09-15
CN111667868B (zh) 2023-09-19
US20210319831A1 (en) 2021-10-14
US11798627B2 (en) 2023-10-24
US11133067B2 (en) 2021-09-28
US20200286562A1 (en) 2020-09-10

Similar Documents

Publication Publication Date Title
DE102019133129A1 (de) Mehrphasenprogrammierung mit symmetrischer gray-codierung
DE102019124438B4 (de) Multi-state-programmierung für speichervorrichtungen
DE102019116520A1 (de) Datenspeichersysteme und -verfahren für eine verbesserte datenumlagerung basierend auf lesepegelspannungen, die mit einer fehlerwiederherstellung verbunden sind
DE102011085988B4 (de) Verfahren und Vorrichtungen zum Beeinflussen eines Betriebszustands eines Mehrfachpegelzelle-Speichers
DE102017128994A1 (de) Weiche Dekodierungs-Planung
DE112019000139T5 (de) Nichtflüchtiges speichersystem mit dynamischer zuweisung von anwendungen zu einem speicher basierend auf nutzungsüberwachung
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE102019125059A1 (de) Abbildung für multi-state-programmierung von speichervorrichtungen
DE102008033518B4 (de) Datenverarbeitungsverfahren für eine Solid-State-Disk-Steuereinheit, Solid-State-Disk-Steuereinheit und Datenspeicherelement
DE112020006139T5 (de) Vor-lese-und lese-schwellenspannungsoptimierung
DE112008002553T5 (de) Einsatz eines MLC-Flash als SLC durch Schreiben von Dummy-Daten
DE102008009235A1 (de) Speichersystem
DE102019135863B4 (de) Speichercontroller, Speichervorrichtung und Speichersystem mit verbesserten Schwellenspannungs-Verteilungseigenschaften und ähnliche Betriebsverfahren
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE112020006215T5 (de) Blockfamilien-basierte Fehlervermeidung für Speichervorrichtungen
DE112021000776T5 (de) Verwaltung von schreib-operationen in einer nichtflüchtigen speichervorrichtung unter verwendung eines variablen vor-lese-spannungspegels
DE102019116097A1 (de) Vorprogramm-lesevorgang zur behebung von wortleitungsfehlern
DE112019000211T5 (de) Effizientes und selektives ersatzweises Speichern von Bits in Arbeitsspeichersystemen
DE102017212767A1 (de) Verfahren und Vorrichtung zur Steigerung der Zuverlässigkeit eines nicht-flüchtigen Speichers
DE102021005946A1 (de) Verwaltung der digital gesteuerten ladungspumpen-operation in einem speicher-untersystem
DE112020005502T5 (de) Dynamische überprovisionierungszuweisung für zweckbestimmte blöcke
DE102019134290A1 (de) Verfahren und System zum Verbessern der Leistung einer Speichervorrichtung unter Verwendung einer asynchronen, unabhängigen Ebenenlesefunktionalität
DE102017119065B4 (de) Aktualisieren eines Speichers
DE112020005395T5 (de) Kapazitätserweiterung für speicher-untersysteme
DE102020200513A1 (de) Speichereinrichtung und verfahren zum betreiben derselben

Legal Events

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

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE