-
TECHNISCHES FELD
-
Die vorliegende Erfindung bezieht sich allgemein auf Speicher-Untersysteme, und betrifft insbesondere das Verwalten von Schreib-Operationen in einer nichtflüchtigen Speichervorrichtung unter Verwendung eines variablen Vor-Lese-Spannungspegels.
-
HINTERGRUND
-
Ein Speicher-Untersystem kann eine oder mehrere Speichervorrichtungen enthalten, die Daten speichern. Bei den Speichervorrichtungen kann es sich beispielsweise um nichtflüchtige Speichervorrichtungen und flüchtige Speichervorrichtungen handeln. Im Allgemeinen kann ein Host-System ein Speicher-Untersystem verwenden, um Daten in den Speichervorrichtungen zu speichern und um Daten aus den Speichervorrichtungen abzurufen.
-
Figurenliste
-
Die vorliegende Erfindung wird anhand der nachstehenden detaillierten Beschreibung und der beigefügten Zeichnungen verschiedener Ausführungsformen der Erfindung vollständiger verstanden.
- 1 zeigt ein beispielhaftes Computersystem zum Unterstützen von Schreib-Operationen in einer nichtflüchtigen Speichervorrichtung unter Verwendung eines variablen Vor-Lese-Spannungspegels gemäß einigen Ausführungsformen der vorliegenden Erfindung.
- 2 ist eine Darstellung, die die Bitfehlerrate (BER) als eine Funktion von Schreiben-zu-Schreiben-Zeitintervallen (Write-to-Write-Zeitintervalle bzw. W2W-Zeitintervalle) für zwei Vor-Lese-Spannungspegel gemäß einigen Ausführungsformen der vorliegenden Erfindung zeigt.
- 3 ist ein Blockdiagramm, das den Prozess zum Verwalten von Zeitstempeln für Datenblöcke auf Basis, wann Daten zuletzt in Dateneinheiten einer Speichervorrichtung geschrieben wurden, gemäß einigen Ausführungsformen der vorliegenden Erfindung zeigt.
- 4 ist ein Flussdiagramm eines beispielhaften Verfahrens zum Verwalten von Vor-Lese-Operationen unter Verwendung variabler Vor-Lese-Spannungspegel in einem Speicher-Untersystem gemäß einigen Ausführungsformen der vorliegenden Erfindung.
- 5 ist ein Flussdiagramm eines beispielhaften Verfahrens zum Durchführen einer Vor-Lese-Operation unter Verwendung eines variablen Vor-Lese-Spannungspegels in einem Speicher-Untersystem gemäß einigen Ausführungsformen der vorliegenden Erfindung.
- 6 ist ein Blockdiagramm eines beispielhaften Computersystems, in dem Ausführungsformen der vorliegenden Erfindung ausgeführt werden können.
-
DETAILLIERTE BESCHREIBUNG
-
Aspekte der vorliegenden Erfindung sind darauf gerichtet, einen variablen Vor-Lese-Spannungspegel zu verwalten, wenn eine Vor-Lese-Operation durchgeführt wird, die einer Schreib-Operation von Daten in Speichervorrichtungen eines Speicher-Untersystems vorausgeht. Ein Speicher-Untersystem kann eine Speichervorrichtung, ein Speichermodul oder ein Hybrid aus einer Speichervorrichtung und einem Speichermodul sein. Beispiele für Speichervorrichtungen und Speichermodule werden nachfolgend in Verbindung mit 1 beschrieben. Allgemein kann ein Host-System ein Speicher-Untersystem verwenden, das eine oder mehrere Speichervorrichtungen enthält, um Daten zu speichern. Das Host-System kann Daten zur Verfügung stellen, um in dem Speicher-Untersystem gespeichert zu werden, und kann Daten anfordern, um aus dem Speicher-Untersystem abgerufen zu werden.
-
Ein Speicher-Untersystem kann mehrere Speichervorrichtungen enthalten, die Daten von einem Host-System speichern können. Eine Speichervorrichtung kann eine nichtflüchtige Speichervorrichtung sein. Eine nichtflüchtige Speichervorrichtung ist ein Paket aus einem oder mehreren Speicherbausteinen (Speicherwürfel). Bei den Speichervorrichtungen kann es sich um nichtflüchtige Speichervorrichtungen handeln, wie zum Beispiel um dreidimensionale Kreuzpunkt-Speichervorrichtungen („3D-Kreuzpunkt“-Speichervorrichtungen‟), die ein Kreuzpunkt-Array aus nichtflüchtigen Speichern sind, die eine Bitspeicherung auf Basis einer Änderung des Bahnwiderstands durchführen können, und zwar in Verbindung mit einem stapelbaren Kreuzgitter-Datenzugriffs-Array. Ein weiteres Beispiel für eine nichtflüchtige Speichervorrichtung ist ein Negativ-Und-Speichervorrichtung (NAND-Speichervorrichtung). Weitere Beispiele nichtflüchtiger Speichervorrichtungen werden nachfolgend in Verbindung mit 1 beschrieben. Die Speicherbausteine (Dice) in den Paketen können einem oder mehreren Kanälen für die Kommunikation mit einem Speicher-Untersystem-Controller zugewiesen werden. Jedes Speicherelement bzw. Speicherbaustein (Die) kann eine oder mehrere Ebenen aufweisen. Die Ebenen können zu Logikeinheiten (LUN) gruppiert sein. Bei einigen Typen von nichtflüchtigen Speichervorrichtungen (z.B. NAND-Speichervorrichtungen) umfasst jede Ebene einen Satz von physischen Blöcken, die Gruppen von Speicherzellen zum Speichern von Daten sind. Eine Zelle ist eine elektronische Schaltung, die Informationen speichert.
-
Nichtflüchtige Speichervorrichtungen (NVM-Vorrichtungen) werden aufgrund ihrer verbesserten Lese-/Schreib-Leistungsfähigkeit und ihrer minimalen Latenz häufig verwendet. Aufgrund ihrer Lese-/Schreib-Latenz-Leistungsfähigkeit sind sie auch für Speicher und Speichersysteme sehr beliebt. Ein Typ von NVM-Vorrichtung ermöglicht einen ortsfesten Datenaustauch („In-Place Data Replacement“), wie zum Beispiel Phasenänderungsspeicher (PCM), wobei vorhandene Daten durch neue Daten ersetzt werden können, ohne dass eine Lösch-Operation erforderlich ist. Eine Möglichkeit, die Leistungsfähigkeit in einer NVM-Vorrichtung zu erhöhen, besteht darin, nur die Teilmenge der neuen Daten zu schreiben, die sich von den bereits in derselben Speichereinheit gespeicherten Daten unterscheidet. Um die aktuell in der Speichereinheit gespeicherten Daten zu bestimmen, kann das Speicher-Untersystem vor der Schreib-Operation eine Vor-Lese-Operation durchführen. Das Speicher-Untersystem kann die während des Vor-Lese-Operation erhaltenen Daten mit den neuen Daten vergleichen, die während der Schreib-Operation gespeichert werden sollen. Daher ist die Genauigkeit der Vor-Lese-Operation entscheidend für die Genauigkeit der Schreib-Operation und die Zuverlässigkeit der gesamten Speichervorrichtung.
-
Ähnlich wie eine Lese-Operation werden Vor-Lese-Operationen unter Verwendung eines Vor-Lese-Spannungspegels durchgeführt, der die Fehlerrate der durch die Vor-Lese-Operation erhaltenen Daten beeinflussen kann. Bei bestimmten Speichertypen (d.h. bei Speicher-Untersystemen, die bestimmte Typen von Speichermedien verwenden) kann die Fehlerrate im Laufe der Zeit variieren. Insbesondere haben einige nichtflüchtige Speicher Schwellenspannungsverteilungen (Vt-Verteilungen), die sich in Abhängigkeit von der Zeit verändern. Wenn sich die Vt-Verteilungen bei einem bestimmten Vor-Lese-Pegel (d.h. der Spannung, die als Teil einer Vor-Lese-Operation an eine Speicherzelle angelegt wird) verschieben, können auch bestimmte Zuverlässigkeitsstatistiken beeinflusst werden. Ein Beispiel für eine Zuverlässigkeitsstatistik ist die Rohbit-Fehlerrate (RBER). Die RBER kann als das Verhältnis der Anzahl fehlerhafter Bits zur Anzahl aller Datenbits definiert werden, die in einer Dateneinheit des Speicher-Untersystems gespeichert sind, wobei die Dateneinheit das gesamte Speicher-Untersystem, ein Speicherelement einer Speichervorrichtung, eine Sammlung von Code-Wörtern, eine Sammlung von Speichervorrichtungsseiten, eine Sammlung von Speichervorrichtungsblöcken oder ein anderer sinnvoller Teil des Speicher-Untersystems sein kann. Für jede Vt-Verteilung zu einem bestimmten Zeitpunkt kann es einen optimalen Vor-Lese-Spannungspegel (oder einen Vor-Lese-Spannungsbereich) geben, durch den der erwartete RBER minimiert wird. Insbesondere können die Vt-Verteilung und die RBER eine Funktion der Zeit sein, die seit der Programmierung der Dateneinheit verstrichen ist (d.h. die Zeitperiode, die verstrichen ist, seit Daten in die Dateneinheit geschrieben wurden). Aufgrund dieser zeitlich variierenden Natur der RBER sowie anderer Rauschmechanismen im Speicher reicht ein einziger Vor-Lese-Spannungspegel möglicherweise nicht aus, um eine Fehlerrate zu erreichen, die bestimmte Systemzuverlässigkeitsziele erfüllt.
-
Üblicherweise werden Vor-Lese-Operationen unter Verwendung eines festen Vor-Lese-Spannungspegels durchgeführt. Der Vor-Lese-Spannungspegel kann zum Beispiel korrekte Daten liefern, wenn die Daten innerhalb von Millisekunden nach der Programmierung der Daten in die Dateneinheit gelesen werden. Da der Vor-Lese-Spannungspegel jedoch nicht aktualisiert wird, liefert er möglicherweise keine akzeptablen Lese-Ergebnisse, wenn die Vor-Lese-Operation Minuten oder Stunden nach der Programmierung der Daten in der Dateneinheit erfolgt. In diesem Fall besteht eine herkömmliche Lösung darin, die Daten aus der Speichervorrichtung auszulesen und sie an den Controller des Speicher-Untersystems zu übertragen. Der Controller kann dann Fehlerhandhabungsmechanismen verwenden, um Fehler in den Daten zu dekodieren und zu korrigieren, die durch die Vor-Lese-Operation entstanden sind. Der Controller kann dann die dekodierten Daten mit den neuen Daten vergleichen und die Datenbits bestimmen, die unterschiedlich sind. Obwohl mit diesem Ansatz Daten korrigiert werden können, die aufgrund der Verwendung eines ungeeigneten Spannungspegels für die Vor-Lese-Operation Fehler enthalten, kann dieser Ansatz aufgrund der zusätzlichen Verarbeitung durch den Controller des Speicher-Untersystems zu einem Mehraufwand für den Controller führen. Außerdem kann sich die Latenz der Speichervorrichtung aufgrund der zusätzlichen Schritte der Datenübertragung zu dem Controller erhöhen, was die Bandbreite des Controllers weiter beansprucht und zu einem Rückgang des Controller-Durchsatzes führt.
-
Aspekte der vorliegenden Erfindung beheben die obigen und andere Mängel, indem Schreib-Operationen für Dateneinheiten in einer nichtflüchtigen Speichervorrichtung basierend auf einem variablen Vor-Lese-Spannungspegel für Vor-Lese-Operationen unterstützt werden. In Implementierungen kann das Speicher-Untersystem, wenn das Speicher-Untersystem eine Schreib-Anforderung empfängt, um neue Daten in ein Segment einer Speichervorrichtung zu speichern, eine Vor-Lese-Operation durchführen, bevor die Schreib-Operation durchgeführt wird. Das Speicher-Untersystem kann die Vor-Lese-Operation durchführen, um die aktuell in dem Segment gespeicherten Daten zu erhalten, die aktuell gespeicherten Daten und die mit der Schreib-Anforderung empfangenen Daten zu vergleichen, und dann nur die Datenbits zu schreiben, die sich von den bereits in dem Segment gespeicherten Daten unterscheiden. Das Segment kann sich auf eine oder mehrere Dateneinheiten der Speichervorrichtung beziehen, und jede Dateneinheit kann die kleinste Menge an Speicher darstellen, bei der eine Schreib-Operation durchgeführt werden kann.
-
In einer Implementierung kann die Vor-Lese-Operation unter Verwendung eines Vor-Lese-Spannungspegels durchgeführt werden, der auf Basis des letzten Zeitpunkts bestimmt werden kann, zu dem Daten in dem Segment programmiert oder gespeichert wurden. In diesem Fall kann das Speicher-Untersystem ein Schreiben-zu-Schreiben-Zeitintervall für das Segment bestimmen, und kann einen entsprechenden Vor-Lese-Spannungspegel bestimmen, der beim Durchführen der Vor-Lese-Operation zu verwenden ist. Das Schreiben-zu-Schreiben-Zeitintervall kann sich auf ein Zeitintervall zwischen dem letzten Zeitpunkt, zu dem Daten in das Segment geschrieben wurden (z.B. durch Lesen eines mit dem Segment in Beziehung stehenden Zeitstempels), und dem Zeitpunkt, zu dem die Schreib-Anforderung für das Segment empfangen wurde, beziehen.
-
Wenn das Schreiben-zu-Schreiben-Zeitintervall (W2W-Zeitintervall) für das Segment bestimmt ist, kann das Speicher-Untersystem einen Vor-Lese-Spannungspegel bestimmen, indem bestimmt wird, ob das W2W-Zeitintervall in einen ersten Bereich von W2W-Zeitintervallen mit einem entsprechenden ersten Vor-Lese-Spannungspegel der Speichervorrichtung fällt. In einer Implementierung kann die Speichervorrichtung mehrere Bereiche von W2W-Zeitintervallen haben, wobei jeder Bereich mit einem entsprechenden Vor-Lese-Spannungspegel in Beziehung steht. Wenn das W2W-Zeitintervall des Segments in den ersten Bereich von W2W-Zeitintervallen fällt, kann die erste Vor-Lese-Spannung zum Durchführen der Vor-Lese-Operation verwendet werden.
-
Wenn der Vor-Lese-Spannungspegel auf Basis des W2W-Zeitintervalls des Segments bestimmt ist, kann das Speicher-Untersystem die Vor-Lese-Operation unter Verwendung der bestimmten Vor-Lese-Spannung durchführen, um die aktuell in dem Segment gespeicherten Daten zu erhalten. Das Speicher-Untersystem kann dann die erhaltenen Daten mit den neuen Daten vergleichen, die mit der Schreib-Anforderung empfangen wurden, um in dem Segment gespeichert zu werden. Das Speicher-Untersystem kann dann damit fortfahren, die Bits der neuen Daten in das Segment zu schreiben, die sich von den entsprechenden Bits der bestehenden Daten unterscheiden, die aktuell in dem Segment gespeichert sind.
-
Die hier beschriebenen Techniken zum Unterstützen eines variablen Vor-Lese-Spannungspegels beim Durchführen einer Vor-Lese-Operation vor dem Durchführen einer Schreib-Operation ermöglichen eine verbesserte Gesamtleistungsfähigkeit der NVM-Vorrichtungen. In Speichervorrichtungen, bei denen sich die Spannungsverteilung der Speicherzellen häufig ändert, kann der vorbeigehende Vor-Lese-Spannungspegel basierend auf der Zeit, zu der eine Dateneinheit programmiert wurde, erheblich variieren. Durch einen variablen Vor-Lese-Spannungspegel für Vor-Lese-Operationen einer Dateneinheit, der auf der Zeit basiert, die seit dem Programmieren der Dateneinheit verstrichen ist, können daher die Zuverlässigkeit und Genauigkeit der Vor-Lese-Operation erheblich gesteigert werden, ohne dass ein zeitraubendes Modul zur Handhabung von Lese-Fehlern ausgelöst werden muss, um den Vor-Lese-Spannungspegel so oft zu korrigieren. Da dieser Ansatz in der Speichervorrichtung implementiert werden kann, müssen außerdem keine Daten an den Controller des Speicher-Untersystems übertragen werden, um Fehlerkorrekturmechanismen durchzuführen. Durch das Eliminieren des Datenübertragungsschritts entfällt der zusätzliche Verarbeitungsaufwand des Controllers, und die Verminderung an Bandbreite des Controllers, die durch die Hin- und Her-Übertragung von Daten zwischen dem Controller und der Speichervorrichtung bei jeder Schreib-Operation entstehen kann, wird reduziert. Daher reduzieren die hierin beschriebenen Techniken zum Unterstützen eines variablen Vor-Lese-Spannungspegels, basierend auf der letzten Programmierzeit einer Dateneinheit, beim Durchführen einer Vor-Lese-Operation der Dateneinheit den Overhead der zusätzlichen Verarbeitung durch den Controller, während die Zuverlässigkeit der differentiellen Schreib-Operation in nichtflüchtigen Speichervorrichtungen verbessert wird, wodurch die Gesamtleistungsfähigkeit des Speicher-Untersystems verbessert wird.
-
1 zeigt ein beispielhaftes Computersystem 100, das ein Speicher-Untersystem 110 gemäß einigen Ausführungsformen der vorliegenden Erfindung enthält. Das Speicher-Untersystem 110 kann Medien enthalten, wie zum Beispiel eine oder mehrere flüchtige Speichervorrichtungen (z.B. Speichervorrichtung 140), eine oder mehrere nichtflüchtige Speichervorrichtungen (z.B. Speichervorrichtung 130) oder eine Kombination davon.
-
Ein Speicher-Untersystem 110 kann eine Speichervorrichtung, ein Speichermodul oder ein Hybrid aus einer Speichervorrichtung und einem Speichermodul sein. Beispiele für eine Speichervorrichtung umfassen ein Solid-State-Laufwerk (SSD), ein Flash-Laufwerk, ein USB-Flash-Laufwerk (Universal Serial Bus Laufwerk), ein eMMC-Laufwerk (Embedded Multi-Media Controller Laufwerk), ein UFS-Laufwerk (Universal Flash Storage Laufwerk), eine SD-Karte (Secure Digital Karte) und ein Festplattenlaufwerk (HDD). Beispiele für Speichermodule umfassen ein Dual-Inline-Speichermodul (DIMM), ein Small-Outline-DIMM (SO-DIMM) und verschiedene Typen von nichtflüchtigen Dual-Inline-Speichermodulen (NVDIMMs).
-
Das Computersystem 100 kann ein Computer-Vorrichtung sein, wie zum Beispiel ein Desktop-Computer, ein Laptop-Computer, ein Netzwerk-Server, eine mobile Vorrichtung, ein Fahrzeug (z.B. ein Flugzeug, eine Drohne, ein Zug, ein Auto oder ein anderes Transportmittel), eine „Internet der Dinge“ fähige Vorrichtung (loT-fähige Vorrichtung), ein eingebetteter Computer (z.B. ein solcher, der in einem Fahrzeug, in einer Industrieanlage oder in einer vernetzten kommerziellen Vorrichtung enthalten ist) oder eine solche Computer-Vorrichtung, die einen Speicher und eine Verarbeitungsvorrichtung enthält.
-
Das Computersystem 100 kann ein Host-System 120 umfassen, das mit einem oder mehreren Speicher-Untersystemen 110 verbunden ist. In einigen Ausführungsformen ist das Host-System 120 mit verschiedenen Typen von Speicher-Untersystemen 110 verbunden. 1 zeigt ein Beispiel für ein Host-System 120, das mit einem Speicher-Untersystem 110 gekoppelt ist. Wie hier verwendet, bezieht sich „gekoppelt mit“ allgemein auf eine Verbindung zwischen Komponenten, die eine indirekte kommunikative Verbindung oder eine direkte kommunikative Verbindung (z.B. ohne zwischengeschaltete Komponenten) sein kann, ob verdrahtet oder drahtlos, einschließlich Verbindungen, wie zum Beispiel elektrische, optische, magnetische Verbindungen, usw.
-
Das Host-System 120 kann einen Prozessor-Chipsatz und einen Software-Stapel enthalten, der von dem Prozessor-Chipsatz ausgeführt wird. Der Prozessor-Chipsatz kann einen oder mehrere Kerne, einen oder mehrere Caches, einen Speicher-Controller (z.B. NVDIMM-Controller) und einen Speicherprotokoll-Controller (z.B. PCIe-Controller, SATA-Controller) enthalten. Das Host-System 120 verwendet das Speicher-Untersystem 110, um beispielsweise Daten in das Speicher-Untersystem 110 zu schreiben und um Daten aus dem Speicher-Untersystem 110 zu lesen.
-
Das Host-System 120 kann über eine physische Host-Schnittstelle mit dem Speicher-Untersystem 110 gekoppelt sein. Beispiele für eine physische Host-Schnittstelle sind unter anderem eine SATA-Schnittstelle (Serial Advanced Technology Attachment Schnittstelle), eine PCIe-Schnittstelle (Peripheral Component Interconnect Express Schnittstelle), eine USB-Schnittstelle (Universal Serial Bus Schnittstelle), ein Fibre Channel, ein SAS (Serial Attached SCSI), ein DDR-Speicherbus (Double Data Rate Speicherbus), ein SCSI (Small Computer System Interface), eine DIMM-Schnittstelle (Dual In-Line Memory Module Schnittstelle) (z.B. eine DIMM-Sockel-Schnittstelle, die Double Data Rate (DDR) unterstützt), usw. Die physische Host-Schnittstelle kann zur Datenübertragung zwischen dem Host-System 120 und dem Speicher-Untersystem 110 verwendet werden. Das Host-System 120 kann außerdem eine NVM Express Schnittstelle (NVMe-Schnittstelle) verwenden, um auf Komponenten (z.B. Speichervorrichtung 130) zuzugreifen, wenn das Speicher-Untersystem 110 über die PCIe-Schnittstelle mit dem Host-System 120 gekoppelt ist. Die physische Host-Schnittstelle kann eine Schnittstelle zum Weiterleiten von Steuer-, Adressen-, Daten- und anderen Signalen zwischen dem Speicher-Untersystem 110 und dem Host-System 120 bereitstellen. In 1 ist ein Speicher-Untersystem 110 als ein Beispiel dargestellt. Allgemein kann das Host-System 120 über eine gemeinsame Kommunikationsverbindung, mehrere separate Kommunikationsverbindungen und/oder eine Kombination von Kommunikationsverbindungen auf mehrere Speicher-Untersysteme zugreifen.
-
Die Speichervorrichtungen 130, 140 können eine beliebige Kombination der verschiedenen Typen von nichtflüchtigen Speichervorrichtungen und/oder flüchtigen Speichervorrichtungen umfassen. Bei den flüchtigen Speichervorrichtungen (z.B. Speichervorrichtung 140) kann es sich um Direktzugriffsspeicher (RAM) handeln, wie z.B. dynamische Direktzugriffsspeicher (DRAM) und synchrone dynamische Direktzugriffsspeicher (SDRAM), ohne darauf beschränkt zu sein.
-
Einige Beispiele für nichtflüchtige Speichervorrichtungen (z.B. Speichervorrichtung 130) umfassen Flash-Speicher vom Typ Negative-Und (NAND) und Write-in-Place-Speicher, wie zum Beispiel dreidimensionale Kreuzpunkt-Speicher („3D-Kreuzpunkt“-Speicher). Bei einem 3D-Kreuzpunkt-Speicher handelt es sich um ein Kreuzpunkt-Array aus nichtflüchtiger Speicherzellen, die in Verbindung mit einer stapelbaren Kreuzgitter-Datenzugriffsanordnung eine Bitspeicherung auf Basis einer Änderung des Bahnwiderstands durchführen kann. Darüber hinaus kann ein nichtflüchtiger Kreuzpunkt-Speicher im Gegensatz zu vielen Flash-Speichern eine Write-in-Place-Operation durchführen, bei der eine nichtflüchtige Speicherzelle programmiert werden kann, ohne dass die nichtflüchtige Speicherzelle zuvor gelöscht wurde. Flash-Speicher vom Typ NAND umfassen beispielsweise zweidimensionale NAND (2D NAND) und dreidimensionale NAND (3D NAND).
-
Jede der Speichervorrichtungen 130 kann ein oder mehrere Arrays aus Speicherzellen enthalten. Ein Typ von Speicherzelle, zum Beispiel Single-Level-Zellen (SLC), kann ein Bit pro Zelle speichern. Andere Typen von Speicherzellen, wie zum Beispiel Multi-Level-Zellen (MLCs), Triple-Level-Zellen (TLCs) und Quad-Level-Zellen (QLCs), können mehrere Bits pro Zelle speichern. In einigen Ausführungsformen kann jede der Speichervorrichtungen 130 ein oder mehrere Arrays aus Speicherzellen enthalten, wie zum Beispiel SLCs, MLCs, TLCs, QLCs oder eine beliebige Kombination davon. In einigen Ausführungsformen kann eine bestimmte Speichervorrichtung einen SLC-Bereich und einen MLC-Bereich, einen TLC-Bereich oder einen QLC-Bereich von Speicherzellen enthalten. Die Speicherzellen der Speichervorrichtungen 130 können als Seiten gruppiert werden, die sich auf eine logische Einheit der zum Speichern von Daten verwendeten Speichervorrichtung beziehen können. Bei einigen Typen von Speichern (z.B. NAND) können Seiten zu Blöcken gruppiert werden. Bei einigen Typen von Speichern, wie zum Beispiel 3D-Kreuzpunkt, können Seiten über Speicherelemente (Dice) und Kanäle hinweg gruppiert werden, um Verwaltungseinheiten (MUs) zu bilden.
-
Obwohl nichtflüchtige Speicherkomponenten, wie zum Beispiel ein 3D-Kreuzpunkt-Array aus nichtflüchtigen Speicherzellen und NAND-Flash-Speicher (z.B., 2D NAND, 3D NAND) beschrieben werden, kann die Speichervorrichtung 130 auf jedem anderen Typ von nichtflüchtigen Speichern basieren, wie zum Beispiel Festwertspeicher (ROM), Phasenänderungsspeicher (PCM), selbstselektierende Speicher, andere Chalcogenid-basierte Speicher, ferroelektrische Direktzugriffsspeicher (FeRAM), ferroelektrische Transistor-Direktzugriffsspeicher (FeTRAM), STT-MRAM (Spin Transfer Torque MRAM), CBRAM (Conductive Bridging RAM), resistive Direktzugriffsspeicher (RRAM), Oxidbasierte RRAM (OxRAM), Negativ-Oder Flash-Memory (NOR Flash-Memory) und elektrisch löschbare programmierbare Festwertspeicher (EEPROM).
-
Ein Speicher-Untersystem-Controller 115 (oder der Einfachheit halber: ein Controller 115) kann mit den Speichervorrichtungen 130 kommunizieren, um Operationen, wie zum Beispiel Lesen von Daten, Schreiben von Daten oder Löschen von Daten in den Speichervorrichtungen 130, und andere solche Operationen durchzuführen. Der Speicher-Untersystem-Controller 115 kann Hardware enthalten, wie zum Beispiel eine oder mehrere integrierte Schaltungen und/oder diskrete Komponenten, einen Pufferspeicher oder eine Kombination davon. Die Hardware kann eine digitale Schaltung mit dedizierter (d.h. hartkodierter) Logik enthalten, um die hier beschriebenen Operationen durchzuführen. Der Speicher-Untersystem-Controller 115 kann ein Mikrocontroller, eine Logik-Schaltung für spezielle Zwecke (z.B. ein feldprogrammierbares Gate-Array (FPGA), eine anwendungsspezifische integrierte Schaltung (ASIC), usw.) oder ein anderer geeigneter Prozessor sein.
-
Der Speicher-Untersystem-Controller 115 kann einen Prozessor 117 (z.B. eine Verarbeitungsvorrichtung) enthalten, der ausgestaltet ist, um Instruktionen auszuführen, die in dem lokalen Speicher 119 gespeichert sind. In dem gezeigten Beispiel umfasst der lokale Speicher 119 des Speicher-Untersystem-Controllers 115 einen eingebetteten Speicher, der ausgestaltet ist, um Instruktionen zur Durchführung verschiedener Prozesse, Operationen, logischer Abläufe und Routinen zu speichern, durch die der Betrieb des Speicher-Untersystems 110 gesteuert wird, einschließlich der Handhabung von Kommunikationen zwischen dem Speicher-Untersystem 110 und dem Host-System 120.
-
In einigen Ausführungsformen kann der lokale Speicher 119 Speicherregister zum Speichern von Speicherzeigern, abgerufenen Daten, usw. enthalten. Der lokale Speicher 119 kann auch einen Festwertspeicher (ROM) zum Speichern von Mikro-Code enthalten. Obwohl das beispielhafte Speicher-Untersystem 110 in 1 so dargestellt ist, dass es den Speicher-Untersystem-Controller 115 enthält, kann in einer anderen Ausführungsform der vorliegenden Erfindung ein Speicher-Untersystem 110 keinen Speicher-Untersystem-Controller 115 enthalten und stattdessen auf eine externe Steuerung angewiesen sein (z.B. bereitgestellt durch einen externen Host oder durch einen von dem Speicher-Untersystem getrennten Prozessor oder Controller).
-
Allgemein kann der Speicher-Untersystem-Controller 115 Befehle oder Operationen von dem Host-System 120 empfangen und kann die Befehle oder Operationen in Instruktionen oder geeignete Befehle umwandeln, um die gewünschten Zugriffe auf die Speichervorrichtungen 130 zu erreichen. Der Speicher-Untersystem-Controller 115 kann für andere Operationen verantwortlich sein, wie zum Beispiel Abnutzungsausgleichsoperationen, Speicherbereinigungsoperationen, Fehlererfassungs- und Fehlerkorrektur-Code-Operationen (ECC-Operationen), Verschlüsselungsoperationen, Cache-Operationen und Adressenübersetzungen zwischen einer logischen Adresse (z.B. logische Blockadresse (LBA), Namespace) und einer physischen Adresse (z.B. physische MU-Adresse, physische Blockadresse), die mit den Speichervorrichtungen 130 in Beziehung stehen. Der Speicher-Untersystem-Controller 115 kann außerdem eine Host-Schnittstellenschaltung enthalten, um über die physische Host-Schnittstelle mit dem Host-System 120 zu kommunizieren. Die Host-Schnittstellenschaltung kann die vom Host-System empfangenen Befehle in Befehlsinstruktionen umwandeln, um auf die Speichervorrichtungen 130 zuzugreifen und um die mit den Speichervorrichtungen 130 in Beziehung stehenden Antworten in Informationen für das Host-System 120 umwandeln.
-
Das Speicher-Untersystem 110 kann auch weitere Schaltungen oder Komponenten enthalten, die nicht dargestellt sind. In einigen Ausführungsformen kann das Speicher-Untersystem 110 einen Cache oder einen Puffer (z.B. DRAM) sowie Adressenschaltungen (z.B. einen Zeilen-Dekodierer und einen Spalten-Dekodierer) enthalten, die eine Adresse vom Speicher-Untersystem-Controller 115 empfangen und die Adresse dekodieren können, um auf die Speichervorrichtungen 130 zuzugreifen.
-
In einigen Ausführungsformen umfassen die Speichervorrichtungen 130 lokale Medien-Controller 135, die in Verbindung mit dem Speicher-Untersystem-Controller 115 arbeiten, um Operationen hinsichtlich einer oder mehrerer Speicherzellen der Speichervorrichtungen 130 auszuführen. Ein externer Controller (z.B. der Speicher-Untersystem-Controller 115) kann die Speichervorrichtung 130 extern verwalten (z.B. Medienverwaltungsoperationen hinsichtlich der Speichervorrichtung 130 durchführen). In einigen Ausführungsformen ist eine Speichervorrichtung 130 eine verwaltete Speichervorrichtung, d.h. eine Roh-Speichervorrichtung, die mit einem lokalen Controller (z.B. dem lokalen Controller 135) für die Medienverwaltung innerhalb desselben Speichervorrichtungspakets kombiniert ist. Ein Beispiel für eine verwaltete Speichervorrichtung ist eine verwaltete NAND-Vorrichtung (MNAND).
-
Das Speicher-Untersystem 110 umfasst eine Vor-Lese-Operationsverwaltungskomponente 113, die verwendet werden kann, um Schreib-Operationen für Dateneinheiten in einer nichtflüchtigen Speichervorrichtung auf Basis eines variablen Vor-Lese-Spannungspegels für Vor-Lese-Operationen zu unterstützen. In Implementierungen, wenn das Host-System 120 eine Schreib-Anforderung an das Speicher-Untersystem 110 sendet, um bestimmte Daten in einem Segment der Speichervorrichtungen 130-140 zu speichern, kann das Speicher-Untersystem 110 eine Vor-Lese-Operation durchführen, bevor die angeforderte Schreib-Operation ausgeführt wird. Das Segment kann ein beliebiger physischer oder logischer Bereich der Speichervorrichtung sein, wie zum Beispiel eine Sammlung von Code-Wörtern oder eine Verwaltungseinheit. Das Segment kann sich ferner auf eine oder mehrere Dateneinheiten der Speichervorrichtung beziehen, und jede Dateneinheit kann die kleinste Menge an Speicher darstellen, hinsichtlich derer eine Schreib-Operation durchgeführt werden kann.
-
In bestimmten Implementierungen kann die Vor-Lese-Operation verwendet werden, um Daten zu erhalten, die aktuell in dem Segment gespeichert sind, so dass die aktuellen Daten mit den neuen Daten verglichen werden können, deren Speicherung angefordert wird, um Bits der neuen Daten zu bestimmen, die sich von entsprechenden Bits der aktuell gespeicherten Daten unterscheiden. In diesem Fall kann das Speicher-Untersystem 110 nur die Datenbits schreiben, die sich von den aktuell in dem Segment gespeicherten Daten unterscheiden. Nach Bestimmen der Bits der neuen Daten, die sich von den bereits in dem Segment gespeicherten Daten unterscheiden, kann das Speicher-Untersystem 110 eine Schreib-Operation durchführen, um die bestimmten Bits der neuen Daten in dem Segment zu speichern.
-
In einer Implementierung kann die Vor-Lese-Operation unter Verwendung eines bestimmten Vor-Lese-Spannungspegels durchgeführt werden, der durch die Vor-Lese-Operationsverwaltungskomponente 113 auf Basis des letzten Zeitpunkts, zu dem Daten in dem Segment programmiert oder gespeichert wurden, bestimmt werden kann. Beispielsweise kann die Vor-Lese-Operationsverwaltungskomponente 113 ein Schreiben-zu-Schreiben-Zeitintervall für das Segment bestimmen und kann einen entsprechenden Vor-Lese-Spannungspegel bestimmen, der beim Durchführen der Vor-Lese-Operation zu verwenden ist. In bestimmten Implementierungen kann sich ein Schreiben-zu-Schreiben-Zeitintervall auf ein Zeitintervall zwischen dem letzten Zeitpunkt, zu dem Daten in das Segment geschrieben wurden, und dem Zeitpunkt, zu dem die Schreib-Anforderung für das Segment empfangen wurde, beziehen. Beispielsweise kann die Vor-Lese-Operationsverwaltungskomponente 113 einen Zeitstempelwert speichern, der den letzten Zeitpunkt angibt, zu dem Daten in das Segment oder in eine Gruppe von Segmenten geschrieben wurden, um das W2W-Zeitintervall für das Segment zu bestimmen.
-
Wenn das Schreiben-zu-Schreiben-Zeitintervall (W2W-Zeitintervall) für das Segment bestimmt ist, kann die Vor-Lese-Operationsverwaltungskomponente 113 einen Vor-Lese-Spannungspegel bestimmen, indem bestimmt wird, ob das W2W-Zeitintervall in einen ersten Bereich von W2W-Zeitintervallen mit einem entsprechenden ersten Vor-Lese-Spannungspegel einer Speichervorrichtung 130-140 fällt. In einer Implementierung kann die Speichervorrichtung 130 zwei Bereiche von W2W-Zeitintervallen haben, wobei jeder Bereich eine Spannungsverteilung darstellt, die zu einer minimalen Fehlerrate führt, wenn der entsprechende Vor-Lese-Spannungspegel für eine Lese-Operation verwendet wird. In diesem Fall, wenn das W2W-Zeitintervall des Segments in den ersten Bereich der W2W-Zeitintervalle fällt, kann die erste Vor-Lese-Spannung für die Durchführung der Vor-Lese-Operation verwendet werden. Wenn andererseits das W2W-Zeitintervall des Segments in den zweiten Bereich der W2W-Zeitintervalle fällt, kann die zweite Vor-Lese-Spannung für die Durchführung der Vor-Lese-Operation verwendet werden.
-
Wenn der Vor-Lese-Spannungspegel auf Basis des W2W-Zeitintervalls des Segments bestimmt ist, kann die Vor-Lese-Operationsverwaltungskomponente 113 eine Vor-Lese-Operation unter Verwendung der bestimmten Vor-Lese-Spannung durchführen, um die aktuell in dem Segment gespeicherten Daten zu erhalten. Die Vor-Lese-Operationsverwaltungskomponente 113 kann dann die erhaltenen Daten mit den neuen Daten vergleichen, die mit der Schreib-Anforderung empfangen wurden, um in dem Segment gespeichert zu werden. In bestimmten nichtflüchtigen Speichervorrichtungen (z.B. ein 3D-Kreuzpunkt-Speicher) kann die Schreib-Operation so durchgeführt werden, dass nur Daten geschrieben werden können, die sich von den aktuell in dem Speichersegment gespeicherten Daten unterscheiden. In einem Beispiel kann die Vor-Lese-Operationsverwaltungskomponente 113 jedes Bit der aktuell in dem Segment gespeicherten Daten mit einem entsprechenden Bit der neuen Daten, die in dem Segment gespeichert werden sollen, vergleichen, und, wenn die beiden Bits unterschiedlich sind, kann das entsprechende Bit der neuen Daten als unterschiedlich markiert werden. Wenn die beiden Bits identisch sind, kann das entsprechende Bit der neuen Daten als identisch gekennzeichnet werden. Wenn alle Bits verglichen und als relevant markiert sind, können nur die Bits der neuen Daten, die als unterschiedlich markiert wurden, in das Segment geschrieben werden.
-
2 ist eine Darstellung 200, die die Bitfehlerrate (BER) als Funktion der Schreiben-zu-Schreiben-Zeitintervalle (W2W-Zeitintervalle) für zwei Vor-Lese-Spannungspegel gemäß einigen Ausführungsformen der vorliegenden Erfindung zeigt. Wie hierin beschrieben, können sich Vt-Verteilungen im Laufe der Zeit verschieben. Beispielsweise kann sich für einen bestimmten Vor-Lese-Spannungspegel, wie zum Beispiel Vor-Lese-Spannungspegel 1, die Bitfehlerrate, die auftritt, wenn Vor-Lese-Operationen unter Verwendung dieses Vor-Lese-Spannungspegels durchgeführt werden, als eine Funktion der Zeit aufgrund der inhärenten Bewegung der Vt-Verteilungen ändern. In ähnlicher Weise können sich auch die entsprechenden Bitfehlerraten von Vor-Lese-Spannungspegel 2 als Funktion der Zeit ändern. In diesen oder anderen Situationen können die Vt-Verteilung und die Bitfehlerrate eine Funktion des W2W-Zeitintervalls sein, das die Zeit darstellt, die seit dem letzten Programmieren einer bestimmten Dateneinheit verstrichen ist. Die Darstellung 200 zeigt, dass jeder der beiden Vor-Lese-Spannungspegel einem anderen Bereich von W2W-Zeiten entspricht, wie zum Beispiel der W2W-Bereich 210 und der W2W-Bereich 220, bei denen es sich um Entwurfsziele aus den Spezifikationen des Speicher-Untersystems handeln kann. In anderen Ausführungsformen kann es eine beliebige andere Anzahl von Bereichen von W2W-Zeitintervallen und zugehörigen Vor-Lese-Spannungspegeln geben.
-
In Darstellung 200 wird die gemessene BER für Vor-Lese-Operationen angezeigt, die unter Verwendung eines bestimmten Vor-Lese-Spannungspegels durchgeführt werden. Beispielsweise stellt die BER-Kurve 212 die BER dar, die für Vor-Lese-Operationen gemessen wurde, die unter Verwendung des Vor-Lese-Spannungspegels 1 bei Segmenten unterschiedlicher W2W-Zeitintervalle durchgeführt wurden, und die BER-Kurve 222 stellt die BER dar, die für Vor-Lese-Operationen gemessen wurden, die unter Verwendung des Vor-Lese-Spannungspegels 2 bei Segmenten unterschiedlicher W2W-Zeitintervalle durchgeführt wurden. Aus der Darstellung 200 ist ersichtlich, dass die Verwendung des Vor-Lese-Spannungspegels 1 zu einer niedrigeren BER für Vor-Lese-Operationen führt, die bei Segmenten der Speicherkomponente mit W2W-Zeitintervallen durchgeführt werden, die in den W2W-Bereich 210 fallen, und dass die Verwendung des Vor-Lese-Spannungspegels 2 zu einer niedrigeren BER für Vor-Lese-Operationen führt, die bei Segmenten der Speichervorrichtung mit W2W-Zeitintervallen durchgeführt werden, die in den W2W-Bereich 220 fallen. In einem anschaulichen Beispiel kann der W2W-Bereich 210 Zeitintervalle zwischen T1L (z.B. 1 Millisekunde) und T1R (z.B. 1 Minute) umfassen. In diesem Fall können Segmente, die vor 1 Millisekunde bis 1 Minute programmiert wurden, den Vor-Lese-Spannungspegel 1 für die Durchführung der Vor-Lese-Operation verwenden. Andererseits kann der W2W-Bereich 220 Zeitintervalle zwischen T2L (z.B. 1 Sekunde) und T1 R (z.B. 10 Stunden) umfassen. In diesem Fall können Segmente, die vor 1 Sekunde bis 10 Stunden programmiert wurden, den Vor-Lese-Spannungspegel 2 für die Durchführung der Vor-Lese-Operation verwenden. In diesem Beispiel kann das Speicher-Untersystem 110 ausgestaltet werden, um alle 10 Stunden eine Schreib-Anforderung für Segmente auszulösen, so dass jedes Segment ein maximales W2W-Zeitintervall von 10 Stunden haben kann. Wenn ein gegebenes W2W-Zeitintervall für ein Segment eine Zeit ist, die in beide W2W-Bereiche fällt (z.B. wenn das W2W-Zeitintervall mehr als 1 Sekunde UND weniger als 1 Minute beträgt), kann das Speicher-Untersystem 110 außerdem bestimmen, dass entweder der Vor-Lese-Spannungspegel 1 oder der Vor-Lese-Spannungspegel 2 für die Vor-Lese-Operation des Segments verwendet werden kann, da jeder Vor-Lese-Spannungspegel zu einer akzeptablen BER führen kann. Eine akzeptable BER kann sich zum Beispiel auf eine Fehlerrate beziehen, die innerhalb der ECC-Fähigkeiten (Error-Control-Coding-Fähigkeiten) der Speichervorrichtung liegt. Das Speicher-Untersystem 110 kann dann entweder den Vor-Lese-Spannungspegel 1 oder den Vor-Lese-Spannungspegel 2 verwenden, um die Vor-Lese-Operation für das Segment durchzuführen.
-
Die Darstellung 200 veranschaulicht ferner, dass für einen einzelnen Vor-Lese-Spannungspegel (z.B. Vor-Lese-Spannungspegel 2) die BER bei niedrigeren W2W-Zeitintervallen (d.h. W2W-Zeiten < T2L) und bei höheren W2W-Zeitintervallen (d.h. W2W-Zeiten > T2R) zunimmt. In einer Implementierung ist der Vor-Lese-Spannungspegel 1 die niedrigste Spannung, und der Vor-Lese-Spannungspegel 2 hat eine höhere Spannung als der Vor-Lese-Spannungspegel 1. Die Werte von Vor-Lese-Spannungspegel 1 und Vor-Lese-Spannungspegel 2 können während der Herstellung der Speichervorrichtung festgelegt werden, können aber optional während der Lebensdauer der Speichervorrichtung angepasst werden.
-
3 ist ein Blockdiagramm 300, das den Prozess des Verwaltens von Zeitstempeln für Datenblöcke auf Basis des Zeitpunkts, zu dem Daten zuletzt in Dateneinheiten einer Speichervorrichtung geschrieben wurden, gemäß einigen Ausführungsformen der vorliegenden Erfindung veranschaulicht. In einer Implementierung kann die Speichervorrichtung 130 Datenblöcke 310, 350 enthalten. Ein Datenblock kann sich auf einen Satz von Dateneinheiten innerhalb der Speichervorrichtung 130 beziehen. Ein Datenblock kann zum Beispiel eine Speicherregion mit 4000 Dateneinheiten darstellen. In diesem Beispiel kann eine Dateneinheit ein 4000-Byte-Stück des Speichers darstellen. In anderen Implementierungen kann sich eine Dateneinheit auf eine Einheit einer Speichervorrichtung beziehen, die zum Speichern von Daten verwendet wird, und eine oder mehrere Speicherseiten, eine oder mehrere Speicherzellen oder eine oder mehrere Wortleitungen umfassen kann. Jede Dateneinheit kann zu einem anderen Zeitpunkt programmiert werden.
-
Der Datenblock 310 umfasst Dateneinheiten 311, 313, und der Datenblock 350 umfasst Dateneinheiten 351, 353. Die Speichervorrichtung 130 kann ferner einen Zeitstempel 340 enthalten, der verwendet werden kann, um die Zeit der letzten Schreib-Operation zu verfolgen, die an einer Dateneinheit des Datenblocks 310 durchgeführt wurde. Die Speichervorrichtung 130 kann auch einen Zeitstempel 360 enthalten, der verwendet werden kann, um die Zeit der letzten Schreib-Operation zu verfolgen, die an einer Dateneinheit des Datenblocks 350 durchgeführt wurde.
-
Bei Operation 331 kann die Verarbeitungslogik eine Schreib-Anforderung empfangen, um die Dateneinheit 311 zu identifizieren. Die Schreib-Anforderung kann neue Daten enthalten, die in die Dateneinheit 311 geschrieben werden sollen. Die Verarbeitungslogik kann dann die Schreib-Operation durchführen und bestimmen, dass die Dateneinheit 311 mit dem Datenblock 310 in Beziehung steht, der wiederum mit dem Zeitstempel 340 in Beziehung steht. Bei Operation 332 kann die Verarbeitungslogik den Zeitstempel 340 aktualisieren, um den Zeitpunkt anzugeben, zu dem die Schreib-Operation 331 in der Speichervorrichtung 130 empfangen wurde. Folglich kann die Verarbeitungslogik, wenn eine Vor-Lese-Operation bereit ist, bezüglich einer beliebigen Dateneinheit des Datenblocks 310 durchgeführt zu werden, den Zeitstempel 340 lesen, um das W2W-Zeitintervall der Dateneinheit als die Zeit zu bestimmen, die seit der im Zeitstempel 340 aufgezeichneten Zeit verstrichen ist (z.B. W2W-Zeitintervall = aktuelle Zeit - im Zeitstempel 340 gespeicherte Zeit).
-
Bei Operation 333 kann die Verarbeitungslogik eine Schreib-Anforderung empfangen, die die Dateneinheit 313 identifiziert und neue Daten enthält, die in die Dateneinheit 313 geschrieben werden sollen. Die Verarbeitungslogik kann dann die Schreib-Operation durchführen und bestimmen, dass die Dateneinheit 313 mit dem Datenblock 310 in Beziehung steht. Ähnlich wie bei den Schritten, die in Operation 332 durchgeführt werden, kann die Verarbeitungslogik in Operation 334 den Zeitstempel 340 aktualisieren, um den Zeitpunkt anzugeben, zu dem die Schreib-Operation 333 in der Speichervorrichtung 130 empfangen wurde, wodurch angegeben wird, dass der Zeitstempel 340 die jüngste Schreib-Operation widerspiegeln kann, die an einer Dateneinheit des Datenblocks 310 durchgeführt wurde.
-
Bei Operation 335 kann die Verarbeitungslogik eine Schreib-Anforderung empfangen, die die Dateneinheit 351 des Datenblocks 350 identifiziert. Die Schreib-Anforderung kann neue Daten enthalten, die in die Dateneinheit 351 geschrieben werden sollen. Die Verarbeitungslogik kann dann die Schreib-Operation durchführen und bestimmen, dass die Dateneinheit 351 mit dem Datenblock 350 in Beziehung steht, der wiederum mit dem Zeitstempel 360 in Beziehung steht. Bei der Operation 336 kann die Verarbeitungslogik den Zeitstempel 360 aktualisieren, um die Zeit anzugeben, zu der die Schreib-Operation 335 in der Speichervorrichtung 130 empfangen wurde. Folglich kann die Verarbeitungslogik, wenn eine Vor-Lese-Operation bereit ist, an einer beliebigen Dateneinheit des Datenblocks 350 durchgeführt zu werden, den Zeitstempel 360 lesen, um das W2W-Zeitintervall der Dateneinheit als die Zeit zu bestimmen, die seit der im Zeitstempel 360 aufgezeichneten Zeit verstrichen ist (z.B. W2W-Zeitintervall = aktuelle Zeit - im Zeitstempel 360 gespeicherte Zeit).
-
Bei Operation 337 kann die Verarbeitungslogik eine Schreib-Anforderung empfangen, die die Dateneinheit 353 identifiziert und neue Daten enthält, die in die Dateneinheit 353 geschrieben werden sollen. Die Verarbeitungslogik kann dann die Schreib-Operation durchführen und bestimmen, dass die Dateneinheit 353 mit dem Datenblock 350 in Beziehung steht. Ähnlich wie bei den Schritten, die in Operation 335 durchgeführt werden, kann die Verarbeitungslogik in Operation 338 den Zeitstempel 360 aktualisieren, um die Zeit anzugeben, zu der die Schreib-Operation 337 in der Speichervorrichtung 130 empfangen wurde, und dadurch angeben, dass der Zeitstempel 360 die jüngste Schreib-Operation widerspiegeln kann, die an einer Dateneinheit des entsprechenden Datenblocks 350 durchgeführt wurde. In Implementierungen kann die Verarbeitungslogik, wenn der Datenblock 310 gelöscht wird, den Wert des Zeitstempels 340 auf einen Standardwert zurücksetzen, wodurch angegeben wird, dass derzeit keine Daten in dem Datenblock 310 programmiert sind, und folglich angegeben wird, dass das W2W-Zeitintervall für eine Einheit innerhalb des Datenblocks 310 ein minimaler Wert sein sollte. In ähnlicher Weise kann die Verarbeitungslogik den Wert des Zeitstempels 360 auf einen Standardwert zurücksetzen, wenn der Datenblock 350 gelöscht wird, wodurch angegeben wird, dass derzeit keine Daten in dem Datenblock 350 programmiert sind.
-
4 ist ein Flussdiagramm eines beispielhaften Verfahrens zum Verwalten von Vor-Lese-Operationen unter Verwendung variabler Vor-Lese-Spannungspegel in einem Speicher-Untersystem gemäß einigen Ausführungsformen der vorliegenden Erfindung. Das Verfahren 400 kann von einer Verarbeitungslogik durchgeführt werden, die Hardware (z.B. Verarbeitungsvorrichtung, Schaltungen, dedizierte Logik, programmierbare Logik, Mikro-Code, Hardware einer Vorrichtung, integrierte Schaltungen, usw.), Software (z.B. Instruktionen, die auf einer Verarbeitungsvorrichtung ausgeführt werden) oder eine Kombination davon umfassen kann. In einigen Ausführungsformen wird das Verfahren 400 von der Vor-Lese-Operationsverwaltungskomponente 113 aus 1 durchgeführt. Obwohl in einer bestimmten Abfolge oder Reihenfolge dargestellt, kann die Reihenfolge der Prozesse, sofern nicht anders angegeben, geändert werden. Daher sind die dargestellten Ausführungsformen nur als Beispiele zu verstehen, und die dargestellten Prozesse können in einer anderen Reihenfolge ausgeführt werden, und einige Prozesse können parallel ausgeführt werden. Außerdem können in verschiedenen Ausführungsformen ein oder mehrere Prozesse weggelassen werden. Es sind also nicht alle Prozesse in jeder Ausführungsform erforderlich. Andere Prozessabläufe sind möglich.
-
Bei Operation 410 empfängt die Verarbeitungslogik eine Schreib-Anforderung von einem Host-System, wobei die Schreib-Anforderung Daten identifiziert, die in einem Segment der Speichervorrichtung gespeichert werden sollen. In Implementierungen kann die Verarbeitungslogik vor der Ausführung der Schreib-Operation eine Vor-Lese-Operation ausführen, um die Teilmenge der zu speichernden Daten zu identifizieren, die sich von den aktuell in dem Segment gespeicherten Daten unterscheidet, wie hier ausführlicher erläutert wird. Um die Vor-Lese-Operation durchzuführen, kann die Verarbeitungslogik einen Vor-Lese-Spannungspegel bestimmen, der dem letzten Zeitpunkt entspricht, zu dem Daten in das Segment geschrieben wurden.
-
Bei Operation 420 bestimmt die Verarbeitungslogik ein Schreiben-zu-Schreiben-Intervall (W2W-Intervall) für das Segment. In Implementierungen kann sich das W2W-Zeitintervall auf ein Zeitintervall zwischen dem letzten Zeitpunkt, zu dem Daten in das Segment geschrieben wurden, und dem Zeitpunkt, zu dem die Schreib-Anforderung für das Segment empfangen wurde, beziehen. In einem Beispiel kann der letzte Zeitpunkt, zu dem Daten geschrieben wurden, anhand eines in der Speichervorrichtung gespeicherten Zeitstempelwerts bestimmt werden, der den letzten Zeitpunkt angibt, zu dem Daten in das Segment geschrieben wurden. In anderen Implementierungen kann sich das W2W-Zeitintervall auf ein Zeitintervall zwischen dem letzten Zeitpunkt, zu dem Daten in eine beliebige Dateneinheit einer Gruppe von Dateneinheiten (z.B. ein mit der Dateneinheit in Beziehung stehender Datenblock) geschrieben wurden, und dem Zeitpunkt des Empfangs der Schreib-Anforderung für die Dateneinheit beziehen. In Implementierungen kann eine Speichervorrichtung mehrere Datenblöcke enthalten, und jeder Datenblock kann mehrere Dateneinheiten enthalten. Für jeden Datenblock kann die Verarbeitungslogik einen entsprechenden Zeitstempelwert speichern, der den letzten Zeitpunkt angibt, zu dem Daten in eine Dateneinheit innerhalb des Datenblocks geschrieben wurden.
-
Bei Operation 430 bestimmt die Verarbeitungsvorrichtung einen Vor-Lese-Spannungspegel, indem bestimmt wird, ob das W2W-Zeitintervall des Segments in einen ersten Bereich von W2W-Zeitintervallen mit einem entsprechenden ersten Vor-Lese-Spannungspegel fällt. In einer Implementierung kann die Speichervorrichtung mehrere Bereiche von W2W-Zeitintervallen haben, wobei jeder Bereich eine Spannungsverteilung darstellt, die zu einer minimalen Fehlerrate führt, wenn der entsprechende Vor-Lese-Spannungspegel für eine Vor-Lese-Operation verwendet wird, wie vorstehend im Detail erläutert.
-
Bei Operation 440, wenn festgestellt wird, dass das W2W-Zeitintervall des Segments in den ersten Bereich von W2W-Zeitintervallen fällt, verwendet die Verarbeitungslogik die erste Vor-Lese-Spannung des ersten Bereichs von W2W-Intervallen, um die Vor-Lese-Operation durchzuführen, um Daten zu erhalten, die aktuell in dem Segment gespeichert sind, wie hier weiter oben näher erläutert ist. In bestimmten Implementierungen kann die Verarbeitungslogik ein Fehlerhandhabungsmodul mit den von der Vor-Lese-Operation erhaltenen Daten ausführen, um Fehler zu korrigieren, die in den während der Vor-Lese-Operation gelesenen Daten vorhanden sein können. Beispielsweise kann das Fehlerhandhabungsmodul die Vor-Lese-Operation erneut durchführen, wobei ein anderer Vor-Lese-Spannungspegel verwendet wird, der von dem Fehlerhandhabungsmodul bestimmt wird, um eine bessere Fehlerrate für die Vor-Lese-Operation zu erzielen. Die Verarbeitungslogik kann dann den Vor-Lese-Spannungspegel des ersten Bereichs von W2W-Intervallen aktualisieren, um den vom Fehlerhandhabungsmodul bestimmten Vor-Lese-Spannungspegel wiederzugeben.
-
Bei Operation 450 identifiziert die Verarbeitungsvorrichtung eine Teilmenge der neuen Daten, die in dem Segment gespeichert werden sollen, und schreibt nur die Teilmenge in das Segment. Die Teilmenge der Daten stellt den Bereich der neuen Daten dar, die sich von den aktuell in dem Segment gespeicherten Daten unterscheiden. In einem Beispiel kann die Verarbeitungslogik jedes Bit der aktuell in dem Segment gespeicherten Daten mit einem entsprechenden Bit der in dem Segment zu speichernden neuen Daten vergleichen und nur die Bits der neuen Daten in das Segment schreiben, die sich von den entsprechenden Bits der aktuell in dem Segment gespeicherten Daten unterscheiden, wie hier ausführlicher erläutert wird.
-
Bei Operation 460 führt die Verarbeitungslogik eine Schreib-Operation durch, um in dem Segment die Teilmenge der neuen Daten zu speichern, die sich von den aktuell in dem Segment gespeicherten Daten unterscheiden, und zwar auf Basis des vorstehend beschriebenen Vergleichs, wie hier ausführlicher erläutert wird.
-
5 ist ein Flussdiagramm eines beispielhaften Verfahrens zur Durchführung einer Vor-Lese-Operation unter Verwendung eines variablen Vor-Lese-Spannungspegels in einem Speicher-Untersystem gemäß einigen Ausführungsformen der vorliegenden Erfindung. Das Verfahren 500 kann von einer Verarbeitungslogik durchgeführt werden, die Hardware (z.B. Verarbeitungsvorrichtung, Schaltungen, dedizierte Logik, programmierbare Logik, Mikro-Code, Hardware einer Vorrichtung, integrierte Schaltungen, usw.), Software (z.B. Instruktionen, die auf einer Verarbeitungsvorrichtung ausgeführt werden) oder eine Kombination davon umfassen kann. In einigen Ausführungsformen wird das Verfahren 500 von der Vor-Lese-Operationsverwaltungskomponente 113 aus 1 durchgeführt. Obwohl in einer bestimmten Abfolge oder Reihenfolge dargestellt, kann die Reihenfolge der Prozesse, sofern nicht anders angegeben, geändert werden. Daher sind die dargestellten Ausführungsformen nur als Beispiele zu verstehen, und die dargestellten Prozesse können in einer anderen Reihenfolge ausgeführt werden, und einige Prozesse können parallel ausgeführt werden. Außerdem können in verschiedenen Ausführungsformen ein oder mehrere Prozesse weggelassen werden. Es sind also nicht alle Prozesse in jeder Ausführungsform erforderlich. Andere Prozessabläufe sind möglich.
-
Bei Operation 510 bestimmt die Verarbeitungslogik ein Schreiben-zu-Schreiben-Zeitintervall (W2W-Zeitintervall) für ein Segment der Speichervorrichtung, um beispielsweise eine Vor-Lese-Operation durchzuführen, um Daten zu erhalten, die in dem Segment gespeichert sind, bevor eine Schreib-Operation durchgeführt wird, wie hier im Detail erklärt wird. In Implementierungen kann das W2W-Zeitintervall verwendet werden, um einen Vor-Lese-Spannungspegel zu bestimmen, der für die Durchführung der Vor-Lese-Operation verwendet wird. In anderen Implementierungen kann die Verarbeitungslogik zur Durchführung der Vor-Lese-Operation auf dem Segment einen Vor-Lese-Spannungspegel bestimmen, der ein Vor-Lese-Spannungspegel-Kriterium erfüllt. Das Vor-Lese-Spannungspegel-Kriterium kann sein, ob das W2W-Zeitintervall des Segments in einen Bereich von W2W-lntervallen fällt, der mit dem Vor-Lese-Spannungspegel in Beziehung steht.
-
Bei Operation 515 bestimmt die Verarbeitungslogik, ob das W2W-Intervall in einen ersten Bereich von W2W-Intervallen fällt. In einer Implementierung kann die Speichervorrichtung mehrere Bereiche von W2W-Intervallen enthalten, wobei jeder Bereich einem entsprechenden Vor-Lese-Spannungspegel entspricht, wie hier im Detail erläutert. Bei Operation 530, wenn die Verarbeitungslogik bestimmt, dass das W2W-Intervall in den ersten Bereich von W2W-Intervallen fällt, kann die Verarbeitungslogik die erste Vor-Lese-Spannung des ersten Bereichs von W2W-Intervallen verwenden, um die Vor-Lese-Operation durchzuführen. Die Verarbeitungslogik führt dann die Vor-Lese-Operation unter Verwendung des ersten Vor-Lese-Spannungspegels durch, um die aktuell in dem Segment gespeicherten Daten zu erhalten, wie oben im Detail erläutert.
-
Wenn die Verarbeitungslogik bei Operation 535 bestimmt, dass das W2W-Intervall des Segments nicht in den ersten Bereich von W2W-Intervallen fällt, kann die Verarbeitungslogik bei Operation 540 zum nächsten Bereich der mehreren Bereiche von W2W-Intervallen der Speichervorrichtung weitergehen und bestimmen, ob das W2W-Intervall in den nächsten Bereich von W2W-Intervallen fällt. Wenn die Verarbeitungslogik bei Operation 550 bestimmt, dass das W2W-Intervall des Segments in den nächsten Bereich von W2W-Intervallen fällt, kann die Verarbeitungslogik die Vor-Lese-Operation unter Verwendung des Vor-Lese-Spannungspegels des nächsten Bereichs von W2W-Intervallen durchführen, um die aktuell in dem Segment gespeicherten Daten zu erhalten, wie vorstehend im Detail erläutert.
-
Wenn die Verarbeitungslogik feststellt, dass das W2W-Intervall des Segments nicht in den nächsten Bereich von W2W-Intervallen fällt, kann die Verarbeitungslogik zum nächsten (z.B. dritten) Bereich von W2W-Intervallen der mehreren Bereiche von W2W-Intervallen der Speichervorrichtung bei Operation 535 weitergehen. Die Verarbeitungslogik kann mit dem Durchlaufen der mehreren Bereiche von W2W-Intervallen fortfahren, bis ein Bereich von W2W-Intervallen gefunden ist, der das W2W-Intervall des Segments enthält. Die Verarbeitungslogik kann dann fortfahren, die Vor-Lese-Spannung des gefundenen Bereichs von W2W-Intervallen zu verwenden, um die Vor-Lese-Operation durchzuführen.
-
6 zeigt eine beispielhafte Maschine eines Computersystems 600, in dem ein Satz von Instruktionen ausgeführt werden kann, um die Maschine zu veranlassen, eine oder mehrere der hier besprochenen Verfahren durchzuführen. In einigen Ausführungsformen kann das Computersystem 600 einem Host-System entsprechen (z.B. dem Host-System 120 von 1), das ein Speicher-Untersystem (z.B. das Speicher-Untersystem 110 von 1) enthält, mit diesem gekoppelt ist oder dieses nutzt, oder es kann verwendet werden, um die Operationen eines Controllers auszuführen (um z.B. ein Betriebssystem auszuführen, um Operationen durchzuführen, die der Vor-Lese-Operationsverwaltungskomponente 113 von 1 entsprechen). In alternativen Ausführungsformen kann die Maschine mit anderen Maschinen in einem LAN, einem Intranet, einem Extranet und/oder dem Internet verbunden (z.B. vernetzt) sein. Die Maschine kann in der Funktion eines Servers oder einer Client-Maschine in einer Client-Server-Netzwerkumgebung, als Peer-Maschine in einer Peer-to-Peer-Netzwerkumgebung (oder verteilten Netzwerkumgebung) oder als Server oder Client-Maschine in einer Cloud-Computing-Infrastruktur oder Cloud-Computing-Umgebung arbeiten.
-
Bei der Maschine kann es sich um einen Personal Computer (PC), einen Tablet-PC, eine Set-Top-Box (STB), einen Personal Digital Assistant (PDA), ein Mobiltelefon, eine Web-Anwendung, einen Server, einen Netzwerk-Router, einen Switch oder eine Bridge oder eine beliebige Maschine handeln, die in der Lage ist, einen Satz von Instruktionen (sequentiell oder anderweitig) auszuführen, die die von dieser Maschine auszuführenden Aktionen spezifizieren. Auch wenn eine einzelne Maschine dargestellt ist, umfasst der Begriff „Maschine“ auch eine beliebige Sammlung von Maschinen, die einzeln oder gemeinsam einen Satz (oder mehrere Sätze) von Instruktionen ausführen, um eine oder mehrere der hier erörterten Verfahren durchzuführen.
-
Das beispielhafte Computersystem 600 umfasst eine Verarbeitungsvorrichtung 602, einen Hauptspeicher 604 (z.B. Festwertspeicher (ROM), Flash-Speicher, dynamische Direktzugriffsspeicher (DRAM), wie zum Beispiel synchrone DRAM (SDRAM) oder Rambus DRAM (RDRAM), usw.), einen statischen Speicher 606 (z.B. Flash-Speicher, statische Direktzugriffsspeicher (SRAM), usw.) und ein Datenspeichersystem 618, die über einen Bus 630 miteinander kommunizieren.
-
Die Verarbeitungsvorrichtung 602 stellt eine oder mehrere Mehrzweck-Verarbeitungsvorrichtungen dar, wie zum Beispiel einen Mikroprozessor, eine zentrale Verarbeitungseinheit oder ähnliches. Insbesondere kann die Verarbeitungsvorrichtung ein CISC-Mikroprozessor (Complex Instruction Set Computing Mikroprozessor), ein RISC-Mikroprozessor (Reduced Instruction Set Computing Mikroprozessor), ein VLIW-Mikroprozessor (Very Long Instruction Word Mikroprozessor) oder ein Prozessor sein, der andere Sätze von Instruktionen implementiert, oder ein Prozessor, der eine Kombination von Sätzen von Instruktionen implementiert. Bei der Verarbeitungsvorrichtung 602 kann es sich auch um eine oder mehrere spezielle Verarbeitungsvorrichtungen handeln, wie zum Beispiel eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA), ein digitaler Signalprozessor (DSP), ein Netzwerk-Prozessor oder Ähnliches. Die Verarbeitungsvorrichtung 602 ist ausgestaltet, um Befehle 626 zur Durchführung der hier besprochenen Operationen und Schritte auszuführen. Das Computersystem 600 kann ferner eine Netzwerk-Schnittstellenvorrichtung 608 zur Kommunikation über das Netzwerk 620 umfassen.
-
Das Datenspeichersystem 618 kann ein maschinenlesbares Speichermedium 624 (auch als computerlesbares Medium bekannt) enthalten, auf dem ein oder mehrere Sätze von Instruktionen 626 oder Software gespeichert sind, die eine oder mehrere der hier beschriebenen Methoden oder Funktionen verkörpern. Die Instruktionen 626 können sich auch vollständig oder zumindest teilweise im Hauptspeicher 604 und/oder in der Verarbeitungsvorrichtung 602 befinden, während sie von dem Computersystem 600 ausgeführt werden, wobei der Hauptspeicher 604 und die Verarbeitungsvorrichtung 602 ebenfalls maschinenlesbare Speichermedien darstellen. Das maschinenlesbare Speichermedium 624, das Datenspeichersystem 618 und/oder der Hauptspeicher 604 können dem Speicher-Untersystem 110 von 1 entsprechen.
-
In einer Ausführungsform enthalten die Instruktionen 626 Instruktionen zum Implementieren einer Funktionalität, die der Vor-Lese-Operationsverwaltungskomponente 113 von 1 entspricht. Obwohl das maschinenlesbare Speichermedium 624 in einem Ausführungsbeispiel als ein einzelnes Medium dargestellt ist, soll der Begriff „maschinenlesbares Speichermedium“ so verstanden werden, dass er ein einzelnes Medium oder mehrere Medien umfasst, die den einen oder mehrere Sätze von Instruktionen speichern. Der Begriff „maschinenlesbares Speichermedium“ soll auch jedes Medium umfassen, das in der Lage ist, einen Satz von Instruktionen zur Ausführung durch die Maschine zu speichern oder zu kodieren, und das die Maschine veranlasst, eine oder mehrere der Verfahren der vorliegenden Erfindung durchzuführen. Der Begriff „maschinenlesbares Speichermedium“ soll folglich Solid-State-Speicher, optische Medien und magnetische Medien umfassen, ist aber nicht darauf beschränkt.
-
Einige Teile der vorangehenden detaillierten Beschreibungen wurden in Form von Algorithmen und symbolischen Darstellungen von Operationen an Datenbits in einem Computerspeicher dargestellt. Diese algorithmischen Beschreibungen und Darstellungen werden von Fachleuten auf dem Gebiet der Datenverarbeitung verwendet, um anderen Fachleuten den Inhalt ihrer Arbeit am effektivsten zu vermitteln. Ein Algorithmus wird hier und im Allgemeinen als eine in sich konsistente Folge von Operationen verstanden, die zu einem gewünschten Ergebnis führt. Bei den Operationen handelt es sich um solche, die physikalische Manipulationen von physikalischen Größen erfordern. Normalerweise, wenn auch nicht notwendigerweise, haben diese Größen die Form von elektrischen oder magnetischen Signalen, die gespeichert, kombiniert, verglichen und anderweitig manipuliert werden können. Zuweilen hat es sich als zweckmäßig erwiesen, diese Signale vor allem aus Gründen des allgemeinen Sprachgebrauchs als Bits, Werte, Elemente, Symbole, Zeichen, Begriffe, Zahlen oder dergleichen zu bezeichnen.
-
Es sollte jedoch bedacht werden, dass alle diese und ähnliche Begriffe mit den entsprechenden physikalischen Größen in Verbindung gebracht werden müssen und lediglich praktische Bezeichnungen für diese Größen sind. Die vorliegende Erfindung kann sich auf die Aktionen und Prozesse eines Computersystems oder einer ähnlichen elektronischen Computervorrichtung beziehen, die Daten, die als physikalische (elektronische) Größen in den Registern und Speichern des Computersystems dargestellt werden, manipuliert und in andere Daten umwandelt, die in ähnlicher Weise als physikalische Größen in den Speichern oder Registern des Computersystems oder in anderen derartigen Informationsspeichersystemen dargestellt werden.
-
Die vorliegende Erfindung bezieht sich auch auf eine Vorrichtung zur Durchführung der hier beschriebenen Operationen. Diese Vorrichtung kann speziell für die beabsichtigten Zwecke konstruiert sein, oder sie kann einen Mehrzweckcomputer umfassen, der durch ein im Computer gespeichertes Computerprogramm selektiv aktiviert oder rekonfiguriert wird. Ein solches Computerprogramm kann in einem computerlesbaren Speichermedium gespeichert werden, wie zum Beispiel, aber nicht beschränkt auf, jede Art von Disketten, einschließlich Disketten, optische Disketten, CD-ROMs und magnetisch-optische Disketten, Festwertspeicher (ROMs), Direktzugriffsspeicher (RAMs), EPROMs, EEPROMs, magnetische oder optische Karten oder jede Art von Medien, die zur Speicherung elektronischer Instruktionen geeignet sind und jeweils mit einem Computer-Systembus verbunden sind.
-
Die hier vorgestellten Algorithmen und Anzeigen sind nicht von Natur aus an einen bestimmten Computer oder ein anderes Gerät gebunden. Verschiedene Mehrzwecksysteme können mit Programmen gemäß den hier enthaltenen Lehren verwendet werden, oder es kann sich als zweckmäßig erweisen, ein spezielleres Gerät zur Durchführung der Verfahren zu konstruieren. Die Struktur für eine Vielzahl dieser Systeme wird in der folgenden Beschreibung dargestellt. Darüber hinaus wird die vorliegende Erfindung nicht unter Bezugnahme auf eine bestimmte Programmiersprache beschrieben. Es ist offensichtlich, dass eine Vielzahl von Programmiersprachen verwendet werden kann, um die Lehren der Erfindung, wie hier beschrieben, zu implementieren.
-
Die vorliegende Erfindung kann als Computerprogrammprodukt oder Software bereitgestellt werden, die ein maschinenlesbares Medium mit darauf gespeicherten Instruktionen umfassen kann, die zur Programmierung eines Computersystems (oder anderer elektronischer Vorrichtungen) zur Durchführung eines Verfahrens gemäß der vorliegenden Erfindung verwendet werden können. Ein maschinenlesbares Medium umfasst jeden Mechanismus zum Speichern von Informationen in einer Form, die von einer Maschine (z.B. einem Computer) gelesen werden kann. In einigen Ausführungsformen umfasst ein maschinenlesbares (z.B. computerlesbares) Medium ein maschinenlesbares (z.B. computerlesbares) Speichermedium, wie zum Beispiel einen Festwertspeicher („ROM“), einen Direktzugriffsspeicher („RAM“), Magnetplattenspeichermedien, optische Speichermedien, Flash-Speicherkomponenten, usw.
-
In der vorstehenden Beschreibung wurden Ausführungsformen der Erfindung unter Bezugnahme auf spezifische Ausführungsbeispiele beschrieben. Es ist offensichtlich, dass verschiedene Modifikationen daran vorgenommen werden können, ohne vom Grundgedanken und vom Umfang der Ausführungsformen der Erfindung, wie sie in den folgenden Ansprüchen dargelegt sind, abzuweichen. Die Beschreibung und die Zeichnungen sind dementsprechend eher in einem illustrativen als in einem einschränkenden Sinne zu verstehen.