-
RÜCKVERWEISUNG AUF VERWANDTE ANMELDUNGEN
-
Diese Anmeldung beansprucht die Priorität und den Vorteil der vorläufigen US-Patentanmeldung Nr.
63/120,787 , eingereicht am 3. Dezember 2020, deren Inhalt hierin durch Bezugnahme in seiner Gesamtheit aufgenommen wird.
-
HINTERGRUND
-
Diese Anmeldung bezieht sich im Allgemeinen auf Speichervorrichtungen und insbesondere auf eine Steuerung und einen NAND-Speicher, die die Ausführungszeit von Datenübertragungsvorgängen verkürzen, zum Beispiel durch Vorausberechnung der anfänglichen Spaltenadressen.
-
Datenübertragungsprotokolle zwischen Steuerungen und NAND-Speicher beinhalten eine beträchtliche Anzahl von Befehls- und Adresszyklen sowie eine Wartezeit zwischen Befehls-/Adresszyklen und der Datenübertragung. Für die Befehls- und Adressierungszyklen müssen die alten Eingabe-/ Ausgabe-Geschwindigkeiten („E/A”-Geschwindigkeiten) und Protokolle verwendet werden. Datenbytes können jedoch auch unter Verwendung von Toggle-Modus-Geschwindigkeiten ausgegeben werden. Mit jeder neuen Generation von NAND-Speicher skaliert die Toggle-Modus-Geschwindigkeit um etwa 50 %. Die Befehls-/Adressgeschwindigkeit skaliert jedoch nicht mit der Toggle-Modus-Geschwindigkeit. Infolgedessen fügen die Befehls-/Adresszyklen einen erheblichen Overhead für Speichervorrichtungen hinzu, bei denen höhere Toggle-Modus-Geschwindigkeiten verwendet werden.
-
KURZDARSTELLUNG
-
Die Wartezeit zwischen den Befehls-/Adresszyklen und der Datenübertragung wird in erster Linie für die Übersetzung einer empfangenen anfänglichen logischen Spaltenadresse in eine anfängliche physische Spaltenadresse verwendet. Die Wartezeit zwischen den Befehls-/Adresszyklen und der Datenübertragung kann durch die Vorausberechnung der anfänglichen physischen Adressen der Spalten reduziert werden. Darüber hinaus kann die gesamte Befehls-/Adresszykluszeit reduziert werden, indem redundante Befehls- und Adresszyklen aus den Datenübertragungsprotokollen entfernt werden. Dementsprechend stellt die vorliegende Offenbarung Datenspeicherungsvorrichtungen, -verfahren und -einrichtungen bereit, die unter anderem anfängliche physische Spaltenadressen vorausberechnen und Datenübertragungsprotokolle mit weniger Befehls-/Adresszyklen implementieren.
-
Zum Beispiel stellt die Offenbarung eine Datenspeicherungsvorrichtung bereit. In einer Implementierung schließt die Datenspeicherungsvorrichtung einen NAND-Speicher und eine Steuerung ein. Der NAND-Speicher schließt eine Vielzahl von Chips und eine Lese-/Schreibschaltung ein. Die Vielzahl von Chips schließt jeweils eine Vielzahl von Ebenen ein. Die Lese-/Schreibschaltung ist eingerichtet, um anfängliche physische Spaltenadressen für jede der Vielzahl von Ebenen in jedem der Vielzahl von Chips zu bestimmen. Die Schreib-/Leseschaltung ist auch eingerichtet, um die anfänglichen physischen Spaltenadressen im NAND-Speicher zu speichern. Die Steuerung ist mit dem NAND-Speicher gekoppelt. Die Steuerung ist zum Senden eines Leseübertragungsbefehls an den NAND-Speicher eingerichtet, nachdem der NAND-Speicher die anfänglichen physischen Spaltenadressen gespeichert hat. Der Leseübertragungsbefehl gibt an, dass eine Ein-Byte-Adresse folgt. Die Steuerung ist auch zum Senden der Ein-Byte-Adresse an den NAND-Speicher eingerichtet. Die Ein-Byte-Adresse schließt eine Chipadresse und eine Ebenenadresse ein. Die Schreib-/Leseschaltung ist weiterhin eingerichtet, um eine erste anfängliche physische Spaltenadresse aus den anfänglichen physischen Spaltenadressen, die im NAND-Speicher gespeichert sind, abzurufen, nachdem der NAND-Speicher die Ein-Byte-Adresse von der Steuerung empfangen hat. Die erste anfängliche physische Spaltenadresse ist der Chipadresse und der Ebenenadresse zugeordnet. Die Lese-/Schreibschaltung ist auch eingerichtet, um einen ersten Datensatz abzurufen, der an der ersten anfänglichen physischen Spaltenadresse gespeichert ist. Die Schreib-/Leseschaltung ist weiterhin eingerichtet, um den ersten Datensatz an die Steuerung auszugeben.
-
Die vorliegende Offenbarung stellt auch ein Verfahren bereit, einschließlich des Bestimmens von anfänglichen physischen Spaltenadressen mit einem NAND-Speicher für jede einer Vielzahl von Ebenen in jedem einer Vielzahl von Chips in dem NAND-Speicher. Das Verfahren schließt das Speichern der anfänglichen physischen Spaltenadressen in dem NAND-Speicher ein. Das Verfahren schließt weiterhin das Senden eines Leseübertragungsbefehls von einer Steuerung an den NAND-Speicher ein, nachdem der NAND-Speicher die anfänglichen physischen Spaltenadressen gespeichert hat. Der Leseübertragungsbefehl gibt an, dass eine Ein-Byte-Adresse folgt. Das Verfahren schließt auch das Senden der Ein-Byte-Adresse von der Steuerung an den NAND-Speicher ein. Die Ein-Byte-Adresse schließt eine Chipadresse und eine Ebenenadresse ein. Das Verfahren schließt weiterhin das Abrufen einer ersten anfänglichen physischen Spaltenadresse aus den anfänglichen physischen Spaltenadressen ein, die in dem NAND-Speicher gespeichert sind, nachdem der NAND-Speicher die Ein-Byte-Adresse von der Steuerung empfangen hat. Die erste anfängliche physische Spaltenadresse ist der Chipadresse und der Ebenenadresse zugeordnet. Das Verfahren schließt auch das Abrufen eines ersten Datensatzes ein, der an der ersten anfänglichen physischen Spaltenadresse in dem NAND-Speicher gespeichert ist. Das Verfahren schließt weiterhin das Ausgeben des ersten Datensatzes aus dem NAND-Speicher an die Steuerung ein.
-
Die vorliegende Offenbarung stellt weiterhin eine Vorrichtung bereit, die Mittel zum Bestimmen anfänglicher physischer Spaltenadressen für jede einer Vielzahl von Ebenen in jedem einer Vielzahl von Chips in einem NAND-Speicher einschließt. Die Vorrichtung schließt auch Mittel zum Speichern der anfänglichen physischen Spaltenadressen in dem NAND-Speicher ein.
-
Die Vorrichtung schließt weiterhin Mittel zum Senden eines Leseübertragungsbefehls an den NAND-Speicher ein, nachdem der NAND-Speicher die anfänglichen physischen Spaltenadressen gespeichert hat. Der Leseübertragungsbefehl gibt an, dass eine Ein-Byte-Adresse folgt. Die Vorrichtung schließt auch Mittel zum Senden der Ein-Byte-Adresse an den NAND-Speicher ein. Die Ein-Byte-Adresse schließt eine Chipadresse und eine Ebenenadresse ein. Die Vorrichtung schließt weiterhin Mittel zum Abrufen einer ersten anfänglichen physischen Spaltenadresse aus den anfänglichen physischen Spaltenadressen ein, die in dem NAND-Speicher gespeichert sind, nachdem der NAND-Speicher die Ein-Byte-Adresse empfangen hat. Die erste anfängliche physische Spaltenadresse ist der Chipadresse und der Ebenenadresse zugeordnet. Die Vorrichtung schließt auch Mittel zum Abrufen eines ersten Datensatzes ein, der an der ersten anfänglichen physischen Spaltenadresse in dem NAND-Speicher gespeichert ist. Die Vorrichtung schließt weiterhin Mittel zum Ausgeben des ersten Datensatzes aus dem NAND-Speicher ein.
-
Verschiedene Gesichtspunkte der vorliegenden Offenbarung stellen Verbesserungen in Speichervorrichtungen bereit. Die vorliegende Offenbarung kann in verschiedenen Formen ausgeführt sein, einschließlich Hardware oder Schaltungen, die durch Software und/oder Firmware gesteuert werden. Die vorstehende Kurzdarstellung soll lediglich eine allgemeine Vorstellung verschiedener Gesichtspunkte der vorliegenden Offenbarung vermitteln und schränkt den Schutzumfang der vorliegenden Offenbarung in keiner Weise ein.
-
Figurenliste
-
- 1 ist ein Blockdiagramm eines Beispiels eines Systems einschließlich einer Datenspeicherungsvorrichtung gemäß einigen Implementierungen der vorliegenden Offenbarung.
- 2 ist ein Blockdiagramm eines Beispiels einer Ebene, die in einem Chip eines NAND-Speichers eingeschlossen ist, gemäß einigen Implementierungen der vorliegenden Offenbarung.
- 3 ist ein Blockdiagramm eines Beispiels für eine ältere Datenausgabe-Protokollsequenz.
- 4 ist ein Blockdiagramm eines Beispiels eines Ein-Byte-Adresszyklus für eine Datenausgabe-Protokollsequenz gemäß einigen Implementierungen der vorliegenden Offenbarung.
- 5 ist ein Blockdiagramm eines Beispiels eines Ein-Byte-Adresszyklus für eine Datenausgabe-Protokollsequen, die einen Zwei-Bit-Anfangsspaltenbezeichner einschließt, gemäß einigen Implementierungen der vorliegenden Offenbarung.
- 6 ist ein Blockdiagramm eines Beispiels einer Datenausgabe-Protokollsequenz einschließlich zweier Befehlszyklen und eines Adressenzyklus gemäß einigen Implementierungen der vorliegenden Offenbarung.
- 7 ist ein Blockdiagramm eines Beispiels einer Datenausgabe-Protokollsequenz einschließlich eines Befehlszyklus und eines Adressenzyklus gemäß einigen Implementierungen der vorliegenden Offenbarung.
- 8 ist ein Blockdiagramm eines Beispiels eines Verfahrens zur Durchführung eines Datenausgabevorgangs gemäß einigen Implementierungen der vorliegenden Offenbarung.
- 9 ist ein Flussdiagramm eines Beispiels eines Verfahrens zur Durchführung eines Dateneingabe- und Programmvorgangs gemäß einigen Implementierungen der vorliegenden Offenbarung.
- 10 ist ein Flussdiagramm eines Beispiels eines Verfahrens zur Durchführung eines Cache-Lesevorgangs gemäß einigen Implementierungen der vorliegenden Offenbarung.
-
DETAILLIERTE BESCHREIBUNG
-
In der folgenden Beschreibung werden zahlreiche Details dargelegt, wie Datenspeicherungsvorrichtungskonfigurationen, Steuerungsoperationen und dergleichen, um ein Verständnis eines oder mehrerer Gesichtspunkte der vorliegenden Offenbarung bereitzustellen. Es ist für den Fachmann ohne weiteres ersichtlich, dass diese spezifischen Details lediglich beispielhaft sind und den Schutzumfang dieser Anmeldung nicht einschränken sollen. Insbesondere können die der Steuerung und dem NAND zugeordneten Funktionen durch Hardware (zum Beispiel analoge oder digitale Schaltungen), eine Kombination von Hardware und Software (zum Beispiel Programmcode oder Firmware, der bzw. die in einem nichtflüchtigen computerlesbaren Medium gespeichert ist, das durch einen Prozessor oder eine Steuerschaltungsanordnung ausgeführt wird) oder ein beliebiges anderes geeignetes Mittel durchgeführt werden. Die folgende Beschreibung soll lediglich eine allgemeine Vorstellung von verschiedenen Gesichtspunkten der vorliegenden Offenbarung vermitteln und schränkt den Schutzumfang der Offenbarung in keiner Weise ein. Des Weiteren ist es für Fachleute offensichtlich, dass, obwohl sich die vorliegende Offenbarung auf NAND-Speicher bezieht, die hierin erörterten Konzepte auf andere Arten von Festkörperspeicher, wie NOR, PCM (Phasenwechselspeicher), ReRAM usw., anwendbar sind.
-
1 ist ein Blockdiagramm eines Beispiels eines Systems 100, das eine Datenspeicherungsvorrichtung 102 einschließt. In einigen Implementierungen ist die Datenspeicherungsvorrichtung 102 eine Flash-Speichervorrichtung. Zum Beispiel ist die Datenspeicherungsvorrichtung 102 eine Secure-Digital-SDO-Karte, eine microSDO-Karte oder eine andere ähnliche Art von Datenspeicherungsvorrichtung. Die in 1 veranschaulichte Datenspeicherungsvorrichtung 102 schließt einen NAND-Speicher 104 und eine Steuerung 106 ein. Die Datenspeicherungsvorrichtung 102 ist mit einer Host-Vorrichtung 108 gekoppelt. Die Host-Vorrichtung 108 ist eingerichtet, um der Datenspeicherungsvorrichtung 102 Daten 110 (zum Beispiel Benutzerdaten) bereitzustellen, die zum Beispiel in dem NAND-Speicher 104 gespeichert werden sollen. Die Host-Vorrichtung 108 ist auch eingerichtet, um Daten 110 anzufordern, die aus dem NAND-Speicher 104 gelesen werden sollen. Die Host-Vorrichtung 108 ist zum Beispiel ein Smartphone, ein Musik-Player, ein Video-Player, eine Spielekonsole, ein E-Book-Reader, ein Personal Digital Assistant, ein Tablet, ein Notebook oder eine andere ähnliche Vorrichtung.
-
Der in 1 veranschaulichte NAND-Speicher 104 schließt eine Vielzahl von Chips 112A-112N (zum Beispiel NAND-Chips) und eine Lese-/Schreibschaltung 114 ein. Die Lese-/Schreibschaltung 114 ist eingerichtet, um den Betrieb der Vielzahl von Chips 112A-112N des NAND-Speichers 104 zu unterstützen. Obwohl in 1 als eine einzige Komponente dargestellt, kann die Lese-/Schreibschaltung 114 in separate Komponenten des NAND-Speichers 104 unterteilt sein, wie eine Leseschaltung und eine Schreibschaltung. Die Lese-/Schreibschaltung 114 kann sich außerhalb der Vielzahl von Chips 112A-112N des NAND-Speichers 104 befinden. Alternativ kann einer oder mehrere der Vielzahl von Chips 112A-112N des NAND-Speichers 104 eine entsprechende Lese-/Schreibschaltung einschließen, die betreibbar ist, um Daten von Speicherelementen innerhalb des einzelnen Chips unabhängig von anderen Lese- und/oder Schreibvorgängen an einem der anderen Chips zu lesen und/oder zu schreiben. Zum Beispiel kann jeder der Vielzahl von Chips 112A-112N seine eigene interne Lese-/Schreibschaltung einschließen. Die Steuerung 106 ist über einen Eingabe-/Ausgabe-(„E/A“)-Bus 116 mit dem NAND-Speicher 104 kommunikativ gekoppelt.
-
Die in 1 veranschaulichte Steuerung 106 schließt eine Host-Schnittstelle 118, eine Speicherschnittstelle 120, einen Prozessor 122 (zum Beispiel einen Mikroprozessor, einen Mikrocontroller, einen Field-Programmable-Gate-Array-[„FPGA“]-Halbleiter, eine anwendungsspezifische integrierte Schaltung [„ASIC“] oder eine andere geeignete programmierbare Vorrichtung) und einen Speicher 124 (zum Beispiel einen Direktzugriffsspeicher [„RAM“], einen Nur-Lese-Speicher [„ROM“], ein nichtflüchtiges computerlesbares Medium oder eine Kombination davon) ein. Die Steuerung 106 ist in 1 in vereinfachter Form veranschaulicht. Ein Fachmann würde erkennen, dass eine Steuerung für einen NAND-Speicher zusätzliche andere Module oder Komponenten als diejenigen einschließen kann, die in 1 speziell veranschaulicht sind. Außerdem befindet sich, obwohl die Datenspeicherungsvorrichtung 102 in 1 als die Steuerung 106 einschließend veranschaulicht ist, in anderen Implementierungen die Steuerung 106 stattdessen innerhalb der Host-Vorrichtung 108 oder ist anderweitig von der Datenspeicherungsvorrichtung 102 getrennt. Infolgedessen können Vorgänge, die normalerweise von der Steuerung 106 durchgeführt würden (zum Beispiel Abnutzungsausgleich, Verwaltung defekter Blöcke, Datenverwürfelung, Speicherbereinigung, Adresszuordnung usw.) von der Host-Vorrichtung 108 oder einer anderen Vorrichtung, die mit der Datenspeicherungsvorrichtung 102 verbunden ist, durchgeführt werden.
-
Die Steuerung 106 ist eingerichtet, um über die Host-Schnittstelle 118 Daten an die Host-Vorrichtung 108 zu senden und Daten und Anweisungen von dieser zu empfangen. Die Host-Schnittstelle 118 ermöglicht der Host-Vorrichtung 108, zum Beispiel unter Verwendung eines beliebigen geeigneten Kommunikationsprotokolls, aus dem NAND-Speicher 104 zu lesen und in den NAND-Speicher 104 zu schreiben. Geeignete Kommunikationsprotokolle schließen zum Beispiel die Host-Steuerungsschnittstellen-Spezifikation Universal Flash Storage („UFS“), die Host-Steuerungsspezifikation Secure Digital („SD“) usw. ein.
-
Die Steuerung 106 ist auch eingerichtet, um über die Speicherschnittstelle 120 Daten und Befehle an den NAND-Speicher 104 zu senden und Daten von diesem zu empfangen. Als ein veranschaulichendes Beispiel ist die Steuerung 106 eingerichtet, um Daten und einen Programmierbefehl zu senden, um den NAND-Speicher 104 anzuweisen, Daten an einem bestimmten Speicherort in dem NAND-Speicher 104 zu speichern. Die Steuerung 106 ist auch eingerichtet, um einen Leseübertragungsbefehl an den NAND-Speicher 104 zum Lesen von Daten aus einem bestimmten Speicherort in dem NAND-Speicher 104 zu senden.
-
Der Prozessor 122 ist betreibbar mit den verschiedenen Modulen innerhalb der Steuerung 106 und der Datenspeicherungsvorrichtung 102 verbunden. Zum Beispiel wird Firmware als computerausführbare Anweisungen in ein ROM des Speichers 124 geladen. Diese computerausführbaren Anweisungen können aus dem Speicher 124 abgerufen und von dem Prozessor 122 ausgeführt werden, um den Betrieb der Steuerung 106 zu steuern und die hierin beschriebenen Prozesse durchzuführen. In einigen Implementierungen entsprechen eines oder mehrere Module der Steuerung 106 separaten Hardwarekomponenten innerhalb der Steuerung 106. In anderen Implementierungen entsprechen eines oder mehrere Module der Steuerung 106 Software, die innerhalb des Speichers 124 gespeichert ist und von dem Prozessor 122 ausgeführt wird. Der Speicher 124 ist eingerichtet, um von der Steuerung 106 während des Betriebs verwendete Daten zu speichern.
-
Jeder der Vielzahl von Chips 112A-112N des NAND-Speichers 104 schließt eine Vielzahl von Ebenen ein. Zum Beispiel kann der Chip 112 A zwei Ebenen einschließen. 2 ist ein Blockdiagramm eines Beispiels für eine Ebene 200. Die in 2 veranschaulichte Ebene 200 schließt eine Vielzahl von Daten-Latches 202 und ein Array 204 ein. Die Daten-Latches 202 sind eingerichtet, um eine ganze Seite an Daten zu halten. Somit können die in der Ebene 200 gespeicherten Daten seitenweise gelesen oder geschrieben werden. Das Array 204 schließt eine Vielzahl von Blöcken 206A-206N ein. Jeder der Blöcke 206 A-206 N schließt eine Vielzahl von Wortleitungen ein. Zum Beispiel schließt der Block 206A die Wortleitungen 95 bis 0 ein. Jede der Wortleitungen schließt eine Vielzahl von Speicherelementen ein. Zum Beispiel schließt in 2 die Wortleitung 95 in Block 206A ein repräsentatives Speicherelement 208 ein. In einigen Implementierungen ist das Speicherelement 208 eine Multi-Level-Zellen-Flash-Speicherzelle („MLC“-Flash-Speicherzelle), wie eine Vier-Bit-pro-Zelle-Flash-Speicherzelle („4BPC“-Flash-Speicherzelle). In anderen Implementierungen ist das Speicherelement 208 eine Single-Level-Zelle-Flash-Speicherzelle („SLC“-Flash-Speicherzelle), eine Zwei-Bit-pro-Zelle-Flash-Speicherzelle („2BPC”-Flash-Speicherzelle), eine Drei-Bit-pro-Zelle-Flash-Speicherzelle („3BPC”-Flash-Speicherzelle) oder eine Flash-Speicherzelle mit einer größeren Anzahl von Bits pro Zelle (zum Beispiel zwischen fünf und zehn Bits pro Zelle).
-
3 ist ein Blockdiagramm eines Beispiels für eine ältere Datenausgabe-Protokollsequenz. Die in 3 veranschaulichte ältere Datenausgabe-Protokollsequenz schließt eine Reihe von Befehlen und Adressen ein, die von der Steuerung 106 an den NAND-Speicher 104 für einen Datenausgabevorgang gesendet werden. Der Befehl 05 h gibt an, dass eine Fünf-Byte-Adresse folgt. Die Fünf-Byte-Adresse schließt eine Zwei-Byte-Anfangsspaltenadresse, eine Wortleitungsadresse, eine Seitenadresse, eine Ebenenadresse, eine Blockadresse und eine Chipadresse ein. Der E0h-Befehl gibt an, dass die Fünf-Byte-Adresse beendet ist und die Steuerung 106 darauf wartet, Daten zu streamen. Die Steuerung 106 wartet nach dem Senden des E0h-Befehls eine vorbestimmte Zeit, bis die Schreib-/Leseschaltung 114 des NAND-Speichers 104 Daten holt. Um Daten zu holen, übersetzt die Lese-/Schreibschaltung 114 des NAND-Speichers 104 die Zwei-Byte-Anfangsspaltenadresse (die ein logischer Wert ist) in eine anfängliche physische Spaltenadresse, setzt einen Spaltenzeiger auf die anfängliche physische Spaltenadresse und holt die Daten unter Verwendung der Daten-Latches 202 ab. Nachdem die Daten in den Daten-Latches 202 gespeichert sind, sendet die Steuerung 106 einen Lesefreigabebefehl („RE“). In Reaktion auf das Empfangen des RE-Befehls sendet die Schreib-/Leseschaltung 114 des NAND-Speichers 104 die Daten in den Daten-Latches 202 über den E/A-Bus 116 an die Steuerung 106, wobei der Spaltenzeiger um eins inkrementiert wird und wieder neue Daten unter Verwendung der Daten-Latches 202 geholt werden. Die Steuerung 106 sendet weitere RE-Befehle, um zusätzliche Daten zu empfangen, bis der Datenausgabevorgang abgeschlossen ist. Unter der Annahme einer Zykluszeit von 10 Nanosekunden beträgt die Gesamtzeit zum Senden des Befehls 05H, der Fünf-Byte-Adresse und des E0h-Befehls 70 Nanosekunden. Weiterhin beträgt die Wartezeit zwischen dem Senden des E0h-Befehls durch die Steuerung 106 und dem Empfangen von Daten (d. h. tWHR) etwa 300 Nanosekunden. Somit beträgt die Gesamtausführungszeit 370 Nanosekunden.
-
Ein wesentlicher Teil der tWHR-Zeit wird durch die Lese-/Schreibschaltung 114 des NAND-Speichers 104 verursacht, welche die empfangene anfängliche logische Spaltenadresse in eine anfängliche physische Spaltenadresse übersetzt. Bei der Ausführung von sequenziellen Lesevorgängen ist die erste Spaltenadresse immer die logische Spalte 0. Somit ist in einigen Implementierungen für jede Ebene in jedem der Vielzahl von Chips 112A-112N des NAND-Speichers 104 die Lese-/Schreibschaltung 114 des NAND-Speichers 104 eingerichtet, um eine physische Spaltenadresse vorauszuberechnen, die der logischen Spalte 0 entspricht, und die ermittelte physische Spaltenadresse als eine anfängliche physische Spaltenadresse zu speichern. Während eines Datenausgabevorgangs, in Reaktion auf das Empfangen einer Chipadresse und einer Ebenenadresse von der Steuerung 106, ruft die Lese-/Schreibschaltung 114 des NAND-Speichers 104 die vorausberechnete anfängliche physische Spaltenadresse ab, die der empfangenen Chipadresse und Ebenenadresse zugeordnet ist. Das Abrufen einer vorausberechneten anfänglichen physischen Spaltenadresse benötigt weniger Zeit als die Übersetzung einer empfangenen anfänglichen logischen Spaltenadresse in eine anfängliche physische Spaltenadresse. Durch die Vorausberechnung der anfänglichen physischen Spaltenadressen wird somit die tWHR-Zeit reduziert.
-
Um die Gesamtausführungszeit weiterhin zu reduzieren, wird die oben beschriebene Fünf-Byte-Adresse, die von der Steuerung 106 an den NAND-Speicher 104 gesendet wird, durch eine Ein-Byte-Adresse ersetzt. Zum Beispiel muss der NAND-Speicher 104 während eines Datenausgabevorgangs (d. h. eines Lesevorgangs) eine Wortleitungsadresse, eine Seitenadresse und eine Blockadresse empfangen, da die Steuerung 106 die Daten mit dem NAND-Speicher 104 über die Daten-Latches 202 und nicht über das Array 204 austauscht. Außerdem muss der NAND-Speicher 104 keine anfängliche Spaltenadresse empfangen, da, wie oben beschrieben, eine anfängliche physische Spaltenadresse für jede Ebene vorausberechnet wird. Der NAND-Speicher 104 muss also nur eine Chipadresse und eine Ebenenadresse empfangen. 4 ist ein Blockdiagramm eines Beispiels eines Ein-Byte-Adresszyklus für eine Datenausgabe-Protokollsequenz. Der in 4 veranschaulichte Ein-Byte-Adresszyklus schließt eine Chipadresse und eine Ebenenadresse ein. Die ungenutzten Bits im Ein-Byte-Adresszyklus können zum Beispiel für die Erweiterung der nächsten Generation verwendet werden.
-
Wenn Daten in dem NAND-Speicher 104 als Codewörter mit fester Länge gespeichert werden, kann nicht jede Spaltenadresse eine anfängliche Spaltenadresse sein. Zum Beispiel kann eine 16K-Seite, die 4K Codewörter speichert, nur vier anfängliche Spaltenadressen haben. Somit ist in einigen Implementierungen für jede Ebene in jedem der Vielzahl von Chips 112A-112N des NAND-Speichers 104 die Lese-/Schreibschaltung 114 des NAND-Speichers 104 eingerichtet, um physische Spaltenadressen für jede potenzielle anfängliche Spaltenadresse vorauszuberechnen und die bestimmten physischen Spaltenadressen als anfängliche physische Spaltenadressen zu speichern. Zum Beispiel bestimmt und speichert die Schreib-/Leseschaltung 114 im NAND-Speicher 104 für eine 16K-Seite, die 4K Codewörter speichert, die vier potenziellen anfänglichen Spaltenadressen. Jede vorausberechnete potenzielle anfängliche Spaltenadresse ist einem anfänglichen Spaltenbezeichner zugeordnet. Zum Beispiel kann für eine 16K-Seite, die 4K-Codewörter speichert, „00“ der anfängliche Spaltenbezeichner sein, der dem ersten Codewort zugeordnet ist, „01“ kann der anfängliche Spaltenbezeichner sein, der dem zweiten Codewort zugeordnet ist, „10“ kann ein anfänglicher Spaltenbezeichner sein, der dem dritten Codewort zugeordnet ist, und „11“ kann der anfängliche Spaltenbezeichner sein, der dem vierten Codewort zugeordnet ist. Während eines Datenausgabevorgangs, in Reaktion auf das Empfangen einer Chipadresse, einer Ebenenadresse und eines anfänglichen Spaltenbezeichners von der Steuerung 106, ruft die Lese-/Schreibschaltung 114 des NAND-Speichers 104 die vorausberechnete anfängliche physische Spaltenadresse ab, die der empfangenen Chipadresse, Ebenenadresse und dem anfänglichen Spaltenbezeichner zugeordnet ist. 5 ist ein Blockdiagramm eines Beispiels eines Ein-Byte-Adresszyklus für eine Datenausgabe-Protokollsequenz. Der in 5 veranschaulichte Ein-Byte-Adresszyklus schließt eine Chipadresse, eine Ebenenadresse und einen Zwei-Bit-Anfangsspaltenbezeichner ein.
-
Das Ersetzen der oben beschriebenen Fünf-Byte-Adresse durch eine der oben beschriebenen Ein-Byte-Adressen reduziert die Anzahl der Adresszyklen in einer Datenausgabe-Protokollsequenz von fünf auf eins. Zum Beispiel ist 6 ein Blockdiagramm einer Datenausgabe-Protokollsequenz einschließlich zwei Befehlszyklen und einem Adresszyklus. Bei einer angenommenen Zykluszeit von 10 Nanosekunden beträgt die Gesamtzeit zum Senden der beiden Befehle und der in 6 veranschaulichten Ein-Byte-Adresse 30 Nanosekunden. In einigen Implementierungen ist der NAND-Speicher 104 eingerichtet, um Daten in direkter Reaktion auf das Empfangen der Ein-Byte-Adresse von der Steuerung 106 durch den NAND-Speicher 104 abzurufen. Die Steuerung 106 benötigt zum Beispiel nicht den E0h-Befehl nach dem Senden der Ein-Byte-Adresse, wie in 7 veranschaulicht. Bei einer angenommenen Zykluszeit von 10 Nanosekunden beträgt die Gesamtzeit zum Senden des einen Befehls und der in 7 veranschaulichten Ein-Byte-Adresse 20 Nanosekunden. Die gesamten Befehls-/Adress-Zykluszeiten von 30 Nanosekunden und 20 Nanosekunden der in den 6 und 7 veranschaulichten Datenausgabe-Protokollsequenzen sind deutlich kürzer als die in 3 veranschaulichten gesamten Befehls-/Adress-Zykluszeiten der älteren Datenausgabe-Protokollsequenz von 70 Nanosekunden.
-
8 ist ein Blockdiagramm eines Beispiels eines Verfahrens 800 zur Durchführung eines Datenausgabevorgangs gemäß einigen Implementierungen der vorliegenden Offenbarung. Bei Block 802 bestimmt der NAND-Speicher 104 anfängliche physische Spaltenadressen für jede der Ebenen in jedem der Chips 112A-112N des NAND-Speichers 104. In einigen Implementierungen bestimmt der NAND-Speicher 104 eine anfängliche physische Spaltenadresse für jede Ebene. Zum Beispiel kann der NAND-Speicher 104 die anfänglichen physischen Spaltenadressen unter der Annahme bestimmen, dass die anfängliche Spaltenadresse immer die logische Spalte 0 ist. In anderen Implementierungen bestimmt der NAND-Speicher 104 mehrere anfängliche physische Spaltenadressen für jede Ebene. Zum Beispiel bestimmt der NAND-Speicher 104 unter der Annahme, dass die Daten als 4K-Codewörter in 16K-Seiten gespeichert sind, vier anfängliche physische Spaltenadressen für jede Ebene. In einigen Implementierungen bestimmt der NAND-Speicher 104 die anfänglichen physischen Spaltenadressen basierend auf den schlechten Spalteninformationen der einzelnen Chips. Zum Beispiel kann der NAND-Speicher 104 eine oder mehrere schlechte Spaltenadressen für jeden der Chips 112A-112N des NAND-Speichers 104 bestimmen und dann anfängliche physische Spaltenadressen basierend auf der einen oder den mehreren schlechten Spaltenadressen bestimmen. Bei Block 804 werden die anfänglichen physischen Spaltenadressen in dem NAND-Speicher 104 gespeichert. In einigen Implementierungen werden die Blöcke 802 und 804 während des Power-On-Resets des NAND-Speichers 104 ausgeführt. Zum Beispiel kann die anfängliche physische Spaltenadresse in einem Speicher gespeichert werden, der in der Schreib-/Leseschaltung 114 eingeschlossen ist.
-
Nachdem die anfänglichen physischen Spaltenadressen in dem NAND-Speicher 104 gespeichert sind, wird bei Block 806 ein Leseübertragungsbefehl von der Steuerung 106 an den NAND-Speicher 104 gesendet. Wie hierin verwendet, bezieht sich der Begriff „Leseübertragungsbefehl“ auf einen oder mehrere Befehle für das Leseprotokoll und das Übertragungsprotokoll. Der Leseübertragungsbefehl gibt an, dass eine Ein-Byte-Adresse folgt. Bei Block 808 wird eine Ein-Byte-Adresse von der Steuerung 106 an den NAND-Speicher 104 gesendet. Die Ein-Byte-Adresse schließt eine Chipadresse und eine Ebenenadresse ein. In einigen Implementierungen schließt die Ein-Byte-Adresse auch einen anfänglichen Spaltenbezeichner ein. Nach dem Empfangen der Ein-Byte-Adresse ruft der NAND-Speicher 104 bei Block 810 eine erste anfängliche physische Spaltenadresse aus den anfänglichen physischen Spaltenadressen ab, die in dem NAND-Speicher 104 gespeichert sind. Die erste anfängliche Spaltenadresse ist der Chipadresse zugeordnet und die Ebenenadresse ist in der Ein-Byte-Adresse eingeschlossen. Wenn die Ein-Byte-Adresse auch einen anfänglichen Spaltenbezeichner einschließt, ist die abgerufene anfängliche Spaltenadresse weiterhin dem anfänglichen Spaltenbezeichner zugeordnet. Bei Block 812 ruft der NAND-Speicher 104 einen Datensatz ab, der unter der ersten anfänglichen physischen Spaltenadresse in dem NAND-Speicher 104 gespeichert ist. Zum Beispiel kann die Schreib-/Leseschaltung 114 einen Spaltenzeiger auf die erste anfängliche physische Spaltenadresse setzen, eine Seite mit Daten abrufen und die Seite mit Daten in den Daten-Latches 202 halten. Bei Block 814 gibt der NAND-Speicher 104 den Datensatz an die Steuerung 106 aus. Zum Beispiel kann die Schreib-/Leseschaltung 114 den Datensatz auf den E/A-Bus 116 legen.
-
Zusätzlich zur Reduzierung der Ausführungszeit von Datenausgabevorgängen können die oben beschriebenen Prozesse auch die Ausführungszeit von Dateneingabevorgängen (zum Beispiel Dateneingabe- und Programmiervorgänge) reduzieren. 9 ist ein Blockdiagramm eines Beispiels eines Verfahrens 900 zur Durchführung eines Dateneingabevorgangs gemäß einigen Implementierungen der vorliegenden Offenbarung. Bei Block 902 bestimmt der NAND-Speicher 104 anfängliche physische Spaltenadressen für jede der Ebenen in jedem der Chips 112A-112N des NAND-Speichers 104. Bei Block 904 werden die anfänglichen physischen Spaltenadressen in dem NAND-Speicher 104 gespeichert. Nachdem die anfänglichen physischen Spaltenadressen in dem NAND-Speicher 104 gespeichert sind, wird bei Block 906 ein Dateneingabebefehl von der Steuerung 106 an den NAND-Speicher 104 gesendet. Der Dateneingabebefehl gibt an, dass eine Ein-Byte-Adresse folgt. Bei Block 908 wird die Ein-Byte-Adresse von der Steuerung 106 an den NAND-Speicher 104 gesendet. Die Ein-Byte-Adresse (ein Beispiel für eine „zweite Ein-Byte-Adresse“) schließt eine Chipadresse, eine Ebenenadresse und eine Seitenadresse ein. Nach dem Empfangen der Ein-Byte-Adresse ruft der NAND-Speicher 104 bei Block 910 eine zweite anfängliche physische Spaltenadresse aus den anfänglichen physischen Spaltenadressen ab, die in dem NAND-Speicher 104 gespeichert sind. Die zweite anfängliche Spaltenadresse ist der Chipadresse zugeordnet und die Ebenenadresse ist in der Ein-Byte-Adresse eingeschlossen. Bei Block 912 sendet die Steuerung 106 einen Datensatz an den NAND-Speicher 104. Bei Block 914 sendet die Steuerung 106 einen Programmierbefehl an den NAND-Speicher 104. Die Steuerung 106 kann zum Beispiel einen 10h-Befehl oder einen 15h-Befehl über den E/A-Bus 116 an den NAND-Speicher 104 senden. Bei Block 916 programmiert der NAND-Speicher 104 den Datensatz auf die zweite anfängliche physische Spaltenadresse.
-
Die oben beschriebenen Prozesse können auch die Ausführungszeit von Lesevorgängen im Cache reduzieren. 10 ist ein Flussdiagramm eines Beispiels eines Verfahrens 1000 zur Durchführung eines Cache-Lesevorgangs gemäß einigen Implementierungen der Erfindung. Bei Block 1002 bestimmt der NAND-Speicher 104 anfängliche physische Spaltenadressen für jede der Ebenen in jedem der Chips 112A-112N des NAND-Speichers 104. Bei Block 1004 werden die anfänglichen physischen Spaltenadressen in dem NAND-Speicher 104 gespeichert. Nachdem die anfänglichen physischen Spaltenadressen in dem NAND-Speicher 104 gespeichert sind, wird bei Block 1006 ein erster Cache-Lesebefehl von der Steuerung 106 an den NAND-Speicher 104 gesendet. Der erste Cache-Lesebefehl gibt an, dass eine Drei-Byte-Adresse folgt. Bei Block 1008 wird eine Drei-Byte-Adresse von der Steuerung 106 an den NAND-Speicher 104 gesendet. Die Drei-Byte-Adresse schließt unter anderem eine Chipadresse, eine Ebenenadresse und eine Seitenadresse ein. Bei Block 1010 sendet die Steuerung 106 einen zweiten Cache-Lesebefehl an den NAND-Speicher 104. Die Steuerung 106 kann zum Beispiel einen 30h-Befehl über den E/A-Bus 116 an den NAND-Speicher 104 senden. Nach dem Empfangen des zweiten Cache-Lesebefehls ruft der NAND-Speicher 104 bei Block 1012 eine dritte anfängliche physische Spaltenadresse aus den anfänglichen physischen Spaltenadressen ab, die in dem NAND-Speicher 104 gespeichert sind. Die dritte anfängliche physische Spaltenadresse ist der Chipadresse zugeordnet und die Ebenenadresse ist in der Drei-Byte-Adresse eingeschlossen. Bei Block 1014 ruft der NAND-Speicher 104 eine Seite mit Daten ab, die an der dritten anfänglichen physischen Spaltenadresse in dem NAND-Speicher 104 gespeichert sind. Zum Beispiel kann die Schreib-/Leseschaltung 114 einen Spaltenzeiger auf die dritte anfängliche physische Spaltenadresse setzen, eine Seite mit Daten abrufen und die Seite mit Daten in den Daten-Latches 202 halten. Bei Block 1016 gibt der NAND-Speicher 104 die Datenseite an die Steuerung 106 aus. Zum Beispiel kann die Schreib-/Leseschaltung 114 die Datenseite auf den E/A-Bus 116 legen.
-
In einigen Implementierungen sendet die Steuerung 106, nachdem der NAND-Speicher 104 die Datenseite bei Block 1014 abgerufen hat, einen dritten Cache-Lesebefehl. Der dritte Cache-Lesebefehl inkrementiert die Seitenadresse, während die Blockadresse und die Ebenenadresse gleich bleiben. Nach dem Empfangen des dritten Cache-Lesebefehls inkrementiert der NAND-Speicher 104 die Seitenadresse um eins, um eine neue Seitenadresse zu bestimmen, ruft eine neue Seite mit Daten ab und gibt die neue Seite mit Daten an die Steuerung 106 aus.
-
In Verbindung mit den offenbarten Implementierungen schließt eine Vorrichtung Mittel zum Bestimmen anfänglicher physischer Spaltenadressen für jede einer Vielzahl von Ebenen in jedem einer Vielzahl von Chips in einem NAND-Speicher ein. Die Mittel zum Bestimmen der anfänglichen physischen Spaltenadressen können zum Beispiel einem oder mehreren der Chips 112A-112N, der Lese-/Schreibschaltung 114 oder einer Kombination davon entsprechen. Die Vorrichtung schließt auch Mittel zum Speichern der anfänglichen physischen Spaltenadressen in dem NAND-Speicher ein. Die Mittel zum Speichern der anfänglichen physischen Spaltenadressen in dem NAND-Speicher können zum Beispiel einem oder mehreren der Chips 112A-112N, der Lese-/Schreibschaltung 114 oder einer Kombination davon entsprechen. Die Vorrichtung schließt auch Mittel zum Senden eines Leseübertragungsbefehls an den NAND-Speicher ein, nachdem der NAND-Speicher die anfänglichen physischen Spaltenadressen gespeichert hat. Die Mittel zum Senden des Leseübertragungsbefehls an den NAND-Speicher können zum Beispiel dem E/A-Bus 116, der Speicherschnittstelle 120, dem Prozessor 122 oder einer Kombination davon entsprechen. Der Leseübertragungsbefehl gibt an, dass eine Ein-Byte-Adresse folgt. Die Vorrichtung schließt auch Mittel zum Senden der Ein-Byte-Adresse an den NAND-Speicher ein. Die Mittel zum Senden der Ein-Byte-Adresse an den NAND-Speicher können zum Beispiel dem E/A-Bus 116, der Speicherschnittstelle 120, dem Prozessor 122 oder einer Kombination davon entsprechen. Die Ein-Byte-Adresse schließt eine Chipadresse und eine Ebenenadresse ein. Die Vorrichtung schließt auch Mittel zum Abrufen einer ersten anfänglichen physischen Spaltenadresse aus den anfänglichen physischen Spaltenadressen ein, die in dem NAND-Speicher gespeichert sind, nachdem der NAND-Speicher die Ein-Byte-Adresse empfangen hat. Das Mittel zum Abrufen der ersten anfänglichen physischen Spaltenadresse kann zum Beispiel einem oder mehreren der Chips 112A-112N, der Lese-/Schreibschaltung 114 oder einer Kombination davon entsprechen. Die erste anfängliche physische Spaltenadresse ist der Chipadresse und der Ebenenadresse zugeordnet. Die Vorrichtung schließt auch Mittel zum Abrufen eines ersten Datensatzes ein, der an der ersten anfänglichen physischen Spaltenadresse in dem NAND-Speicher gespeichert ist. Das Mittel zum Abrufen des ersten Datensatzes kann zum Beispiel einem oder mehreren der Chips 112A-112N, der Lese-/Schreibschaltung 114 oder einer Kombination davon entsprechen. Die Vorrichtung schließt auch Mittel zum Ausgeben des ersten Datensatzes aus dem NAND-Speicher ein. Die Mittel zum Ausgeben der ersten Daten aus dem NAND-Speicher können zum Beispiel einem oder mehreren der Chips 112A-112N, der Lese-/Schreibschaltung 114, dem E/A-Bus 116 oder einer Kombination davon entsprechen.
-
In einigen Implementierungen ist das Mittel zum Bestimmen der anfänglichen physischen Spaltenadressen weiterhin eingerichtet, um jede der anfänglichen physischen Spaltenadressen basierend auf einer logischen Spalte 0 zu bestimmen.
-
In einigen Implementierungen schließt die Vorrichtung weiterhin Mittel zum Abrufen der ersten anfänglichen physischen Spaltenadresse in direkter Reaktion auf das Empfangen der Ein-Byte-Adresse durch den NAND-Speicher ein.
-
In einigen Implementierungen ist das Mittel zum Bestimmen der anfänglichen physischen Spaltenadressen weiterhin eingerichtet, um eine Vielzahl der anfänglichen physischen Spaltenadressen für jede der Vielzahl von Ebenen in jedem der Vielzahl von Chips zu bestimmen. In einigen Implementierungen schließt die Ein-Byte-Adresse weiterhin einen anfänglichen Spaltenbezeichner ein. In einigen Implementierungen ist die erste anfängliche physische Spaltenadresse außerdem dem anfänglichen Spaltenbezeichner zugeordnet.
-
In Bezug auf die hierin beschriebenen Prozesse, Systeme, Verfahren, Heuristiken usw. versteht es sich, dass, obwohl die Schritte solcher Prozesse usw. als gemäß einer bestimmten geordneten Reihenfolge auftretend beschrieben wurden, solche Prozesse mit den beschriebenen Schritten, die in einer anderen als der hierin beschriebenen Reihenfolge durchgeführt werden, praktiziert werden könnten. Es versteht sich weiterhin, dass bestimmte Schritte gleichzeitig durchgeführt werden könnten, dass andere Schritte hinzugefügt werden könnten oder dass bestimmte hierin beschriebene Schritte weggelassen werden könnten. Mit anderen Worten werden die Beschreibungen der Prozesse hierin zum Zweck der Veranschaulichung bestimmter Implementierungen bereitgestellt und sollten in keiner Weise so ausgelegt werden, dass sie die Ansprüche einschränken.
-
Dementsprechend versteht es sich, dass die vorstehende Beschreibung veranschaulichend und nicht einschränkend sein soll. Viele andere Ausführungsformen und Anwendungen als die bereitgestellten Beispiele wären beim Lesen der vorstehenden Beschreibung offensichtlich. Der Schutzumfang sollte bestimmt werden, nicht unter Bezugnahme auf die vorstehende Beschreibung, sondern sollte stattdessen unter Bezugnahme auf die beiliegenden Ansprüche bestimmt werden, zusammen mit dem vollen Schutzumfang von Äquivalenten, für die solche Ansprüche berechtigt sind. Es wird erwartet und beabsichtigt, dass zukünftige Entwicklungen in den hierin erörterten Technologien auftreten werden und dass die offenbarten Systeme und Verfahren in solche zukünftigen Ausführungsformen aufgenommen werden. Zusammenfassend versteht es sich, dass die Anmeldung modifizierbar und variierbar ist.
-
Allen Begriffen, die in den Ansprüchen verwendet werden, sollen ihre breitesten angemessenen Auslegungen und ihre gewöhnlichen Bedeutungen gegeben werden, wie sie von jenen verstanden werden, die in den hierin beschriebenen Technologien sachkundig sind, es sei denn, eine explizite Angabe des Gegenteils wird hierin gemacht. Insbesondere sollte die Verwendung der Artikel im Singular, wie „ein/eine/eines“, „der/die/das“, „dieser/diese/dieses“ usw. derart gelesen werden, dass eines oder mehrere der angegebenen Elemente angegeben werden, es sei denn, ein Anspruch gibt eine explizite gegenteilige Einschränkung an.
-
Die Zusammenfassung wird bereitgestellt, um dem Leser eine schnelle Bestimmung der Beschaffenheit der technischen Offenbarung zu ermöglichen. Sie wird mit dem Verständnis eingereicht, dass sie nicht verwendet wird, um den Schutzumfang oder die Bedeutung der Ansprüche zu interpretieren oder einzuschränken. Außerdem ist in der vorstehenden detaillierten Beschreibung ersichtlich, dass verschiedene Merkmale in verschiedenen Ausführungsformen zum Zweck der Vereinfachung der Offenbarung zusammengefasst sind. Dieses Verfahren der Offenbarung ist nicht derart zu interpretieren, dass es eine Absicht widerspiegelt, dass die beanspruchten Ausführungsformen mehr Merkmale erfordern, als ausdrücklich in jedem Anspruch angegeben sind. Vielmehr liegt, wie die folgenden Ansprüche widerspiegeln, der Erfindungsgegenstand in weniger als allen Merkmalen einer einzelnen offenbarten Ausführungsform. Somit werden die folgenden Ansprüche hiermit in die detaillierte Beschreibung aufgenommen, wobei jeder Anspruch für sich selbst als ein separat beanspruchter Gegenstand steht.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-