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