-
TECHNISCHES FELD
-
Die vorliegende Erfindung bezieht sich allgemein auf ein Speicher-Untersystem und betrifft insbesondere die Durchführung einer Medienverwaltungsoperation basierend auf einer Änderung eines Schreibmodus eines Datenblocks in einem Cache für Speicher-Untersysteme.
-
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. Allgemein 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, das ein Speicher-Untersystem gemäß einigen Ausführungsformen der vorliegenden Erfindung enthält.
- 2 ist ein Flussdiagramm eines beispielhaften Verfahrens zum Durchführen einer Speicherbereinigungsoperation basierend auf der Änderung eines Schreibmodus eines Datenblocks in einem Cache für ein Speicher-Untersystem.
- 3A-3B zeigen Beispiele von Datenkonfigurationen eines Speicher-Untersystems während der Durchführung einer Speicherbereinigungsoperation basierend auf einer Änderung eines Schreibmodus eines Datenblocks in einem Cache gemäß einigen Ausführungsformen der vorliegenden Erfindung.
- 4 ist ein Flussdiagramm eines beispielhaften Verfahrens zum Wiederherstellen des Schreibmodus von Cache-Datenblöcken nach dem Durchführen einer Speicherbereinigungsoperation basierend auf einer Änderung des Schreibmodus für ein Speicher-Untersystem.
- 5 ist ein Blockdiagramm eines beispielhaften Computersystems, in dem Implementierungen der vorliegenden Erfindung durchgeführt werden können.
-
DETAILLIERTE BESCHREIBUNG
-
Aspekte der vorliegenden Erfindung sind auf die Durchführung einer Medienverwaltungsoperation basierend auf einer Änderung eines Schreibmodus eines Datenblocks in einem Cache für Speicher-Untersysteme gerichtet. Ein Speicher-Untersystem kann eine Speichervorrichtung, ein Speichermodul oder ein Hybrid aus einem Speichervorrichtung und einem Speichermodul sein. Beispiele für Speichervorrichtungen und Speichermodule werden unten in Verbindung mit 1 beschrieben. Allgemein kann ein Host-System ein Speicher-Untersystem verwenden, das eine oder mehrere Komponenten enthält, wie zum Beispiel Speichervorrichtungen, die Daten speichern. Das Host-System kann Daten bereitstellen, die in dem Speicher-Untersystem gespeichert werden sollen, und kann Daten anfordern, die aus dem Speicher-Untersystem abgerufen werden sollen.
-
Eine Speichervorrichtung kann eine nichtflüchtige Speichervorrichtung sein. Eine nichtflüchtige Speichervorrichtung ist ein Baustein aus einem oder mehreren Speicherelementen. Jedes Speicherelement kann eine oder mehrere Ebenen haben. Bei einigen Typen von nichtflüchtigen Speichervorrichtungen (z.B. Negativ-Und-Vorrichtungen (NAND-Vorrichtungen)) enthält jede Ebene einen Satz aus physischen Blöcken. Jeder Block umfasst einen Satz aus Seiten. Jede Seite umfasst eine Reihe aus Speicherzellen, die Datenbits speichern. Bei einigen Speichervorrichtungen, wie zum Beispiel NAND-Vorrichtungen, sind Blöcke das kleinste Gebiet, das gelöscht werden kann, und Seiten innerhalb der Blöcke können nicht einzeln gelöscht werden. Bei solchen Vorrichtungen werden die Löschvorgänge blockweise durchgeführt.
-
Eine Seite eines Blocks kann gültige Daten, ungültige Daten oder keine Daten enthalten. Ungültige Daten sind Daten, die als veraltet gekennzeichnet sind, da eine neue Version der Daten auf der Speichervorrichtung gespeichert ist. Zu den ungültigen Daten gehören Daten, die zuvor geschrieben wurden, aber nicht mehr mit einer gültigen logischen Adresse in Beziehung stehen, wie zum Beispiel eine logische Adresse, auf die ein Host-System in einer Tabelle für die Zuordnung von physischen zu logischen Daten (P2L) verweist. Gültige Daten sind die neueste Version solcher Daten, die auf der Speichervorrichtung gespeichert sind. Ein Speicher-Untersystem kann Daten auf Basis von Informationen, die es zum Beispiel von einem Betriebssystem erhält, als ungültig kennzeichnen. Eine Seite, die keine Daten enthält, umfasst eine Seite, die zuvor gelöscht wurde und auf die noch nicht geschrieben wurde.
-
Ein Speicher-Untersystem-Controller kann Operationen für Medienverwaltungsalgorithmen durchführen, wie zum Beispiel Abnutzungsausgleich, Refresh, Speicherbereinigung, Wiederherstellung, usw. Ein Block kann einige Seiten mit gültigen Daten und einige Seiten mit ungültigen Daten enthalten. Damit nicht gewartet werden muss, bis alle Seiten des Blocks ungültige Daten enthalten, um den Block zu löschen und erneut zu verwenden, kann ein Algorithmus, der im Folgenden als „Speicherbereinigung“ bezeichnet wird, aufgerufen werden, der es ermöglicht, den Block zu löschen und als freien Block für nachfolgende Schreiboperationen freizugeben. Speicherbereinigung umfasst einen Satz von Medienverwaltungsoperationen, die beispielsweise das Auswählen eines Blocks, der gültige und ungültige Daten enthält, das Auswählen von Seiten in dem Block, die gültige Daten enthalten, das Kopieren der gültigen Daten an neue Stellen (z.B. freie Seiten in einem anderen Block), das Markierung der Daten in den zuvor ausgewählten Seiten als ungültig, und das Löschen des ausgewählten Blocks beinhalten.
-
„Speicherbereinigung“ bezieht sich im Folgenden auf das Auswählen eines Blocks, das Umschreiben der gültigen Daten von dem ausgewählten Block in einen anderen Block, und das Löschen aller ungültigen und gültigen Daten, die in dem ausgewählten Block gespeichert sind. Die gültigen Daten von mehreren ausgewählten Blöcken können in eine kleinere Anzahl anderer Blöcke kopiert werden, und die ausgewählten Blöcke können dann gelöscht werden. Als ein Ergebnis kann die Anzahl der Blöcke, die gelöscht wurden, erhöht werden, so dass mehr Blöcke zum Speichern nachfolgender Daten von einem Host-System zur Verfügung stehen.
-
Ein Speicher-Untersystem kann eine Speicherbereinigungsoperation implementieren, um eine kontinuierliche Menge an freien Datenblöcken für Host-Anwendungen zum Speichern von Daten zu behalten oder zu erzeugen. Speicherbereinigung ist eine Operation, bei der gültige Daten von einem Datenblock in einen anderen Datenblock kopiert werden. Der Quellendatenblock (z.B. der Datenblock, aus dem die gültigen Daten kopiert wurden) kann dann gelöscht und als freier Block für nachfolgende Host-Schreibvorgänge freigegeben werden. Dieses zusätzliche Umschreiben gültiger Daten in die Datenblöcke während einer Speicherbereinigungsoperation führt zu einer Schreibverstärkung (Write Amplification). Die Schreibverstärkung kann die Lebensdauer und die Leistung des Speicher-Untersystems beeinträchtigen. Das Speicher-Untersystem kann eine gewisse Menge an zusätzlichen Blöcken enthalten, die über die logische Größe der Speichervorrichtung hinausgehen und als Benutzerbereich ausgewiesen sind. Dieser zusätzliche Speicherplatz wird normalerweise als Überprovisionierung (Over Provisioning) oder OP bezeichnet. Die Effizienz von Speicherbereinigungsoperationen kann oft eine Funktion der OP für das Speicher-Untersystem sein. Während der Speicherbereinigung trägt ein zusätzlicher Speicherplatz aus der OP dazu bei, die Schreibverstärkung zu reduzieren. Eine größere Menge an OP kann die Schreibverstärkung reduzieren, indem die Häufigkeit reduziert wird, mit der die Speicherbereinigung gültige Daten in dem Speicher-Untersystem umschreibt, um Datenblöcke freizugeben. Bei einer Speichervorrichtung, die eine Benutzerraumgröße von 128 Gigabyte (Gb) hat, beträgt die OP beispielsweise 12 Gb, wenn die physische Größe 140 Gb beträgt. In solchen Fällen können Speicherbereinigungsoperationen weniger effizient sein als bei Vorrichtungen mit der gleichen Benutzerraumgröße, aber mit einer größeren OP-Größe, da der kleinere OP-Raum weniger zusätzlichen Platz bietet, der während der Speicherbereinigung verwendet werden kann, um die Auswirkungen der Schreibverstärkung zu reduzieren, wenn Datenblöcke von nicht benötigten Daten befreit werden.
-
Speichervorrichtungen können ein oder mehrere Arrays aus Speicherzellen enthalten, wie zum Beispiel Single-Level-Zellen-Speicher (SLC-Speicher), Multi-Level-Zellen-Speicher (MLC-Speicher), Triple-Level-Zellen-Speicher (TLC-Speicher) oder Quad-Level-Zellen-Speicher (QLC-Speicher). Jeder Typ kann eine unterschiedliche Datendichte aufweisen, die einer Datenmenge (z.B. Datenbits) entspricht, die pro Speicherzelle einer Speichervorrichtung gespeichert werden kann. Am Beispiel eines Flash-basierten Speichers kann eine Triple-Level-Zelle (TLC) drei Datenbits speichern, während eine Single-Level-Zelle (SLC) ein Datenbit speichern kann. Folglich hat eine Speichervorrichtung mit TLC-Speicherzellen eine höhere Datendichte als eine Speichervorrichtung mit SLC-Speicherzellen. Außerdem kann jeder Typ von Speicherzellen eine unterschiedliche Lebensdauer für das Speichern von Daten haben. Die Lebensdauer der Speichervorrichtung entspricht der Anzahl der Schreiboperationen oder der Anzahl der Programmier-/Löschoperationen, die bei einer Speicherzelle der Speichervorrichtung durchgeführt werden, bevor die Daten nicht mehr zuverlässig in der Speicherzelle gespeichert werden können. Beispielsweise können SLC-Speicherzellen, die eine geringere Datendichte aufweisen, einen höheren Lebensdauer-Grenzwert haben als TLC-Speicherzellen, die eine höhere Datendichte aufweisen. In einigen Fällen können SLC-Speicherzellen einem Lebensdauer-Grenzwert haben, der 3 bis 40 Mal höher ist als der von TLC-Speicherzellen. Folglich können SLC-Speicherzellen weniger Gesamtdaten speichern, aber für längere Zeitperioden verwendet werden, während TLC-Speicherzellen mehr Gesamtdaten speichern können, aber für kürzere Zeitperioden verwendet werden können.
-
Herkömmliche Speicher-Untersysteme können Speichervorrichtungen weiter so konfigurieren, dass ein Teil des OP-Raums für andere Zwecke reserviert werden kann. So kann beispielsweise ein Teil des OP für die Speicherung von Firmware-bezogenen Informationen reserviert werden. Ebenso kann ein Teil des OP-Raums als ein statischer Cache bereitgestellt werden, um die Leistung für I/O-Operationen zu verbessern. Der Rest des OP nach der Zuweisung der reservierten Gebiete wird üblicherweise als Betriebs-OP bezeichnet. Folglich kann durch eine Vergrößerung des Cache-Bereichs das Betriebs-OP verringert werden. Die für das statische Cache-Gebiet reservierten Blöcke können mit Speicherzellen geringerer Datendichte konfiguriert werden, um höhere Lebensdauer-Grenzwerte für das Schreiben von Benutzerdaten in die Speichervorrichtung zu erreichen. So kann beispielsweise ein Block, der als QLC konfiguriert werden kann, mit Speicherzellen geringerer Datendichte, wie zum Beispiel SLC, MLC oder TLC, konfiguriert werden. Ebenso kann ein Block, der als TLC konfiguriert werden kann, mit Speicherzellen einer geringeren Datendichte, wie zum Beispiel SLC oder MLC, konfiguriert werden. Einmal konfigurierte, sind die Blöcke, die für den statischen Cache reserviert sind, in der Regel für die gesamte Lebensdauer der Vorrichtung auf diese Weise konfiguriert und werden später nicht als Speicherzellen mit höherer Datendichte neu konfiguriert.
-
Konventionelle Speicher-Untersysteme, die auf diese Weise konfiguriert sind, können langfristige Leistungsvorteile für Host-I/O-Operationen bieten, und zwar infolge der Zuweisung des Cache mit Speicherzellen, die aufgrund einer geringeren Datendichte eine höhere Lebensdauer haben. Diese Konfigurationen können jedoch bei schreibintensiven Arbeitslasten eine geringere Leistung bei zufälligen Schreibvorgängen aufweisen, da während der Speicherbereinigungsoperationen weniger OP zur Verfügung steht. Während solcher Perioden mit schreibintensiver Arbeitslast können der gesamte Benutzerraum und das Betriebs-OP der Speichervorrichtung voll werden, was dazu führen kann, dass die Speicherbereinigung zur Aufrechterhaltung des Gleichgewichts freier Blöcke ausgelöst wird. Dieser Zustand wird üblicherweise als „Steady-State“-Bedingung („Stationärzustand“-Bedingung) bezeichnet, bei der die Speicherbereinigung im Vordergrund stattfindet oder gleichzeitig mit dem Schreiben von Host-Daten erfolgt. Herkömmliche Speicher-Untersysteme bieten keinen Zugriff auf das statische Cache-Gebiet für Speicherbereinigungsoperationen. Infolgedessen wird das Niveau der Schreibverstärkung durch das reduzierte Betriebs-OP erheblich reduziert, was zu einer Verringerung der zufälligen Schreibleistung für schreibintensive Arbeitslasten unter Steady-State-Bedingungen führt.
-
Durch Aspekte der vorliegenden Erfindung werden die obigen und andere Mängel behoben, indem eine Speicherbereinigungsoperation basierend auf einer Änderung eines Schreibmodus eines Datenblocks in einem Cache für Speicher-Untersysteme durchgeführt wird. Ein Cache-Manager kann die Arbeitslast-Aktivität überwachen (z.B. die Schreibverstärkung überwachen) und während Perioden mir Steady-State-Bedingungen die Verwendung des statischen Cache-Gebiets aktivieren, um das Betriebs-OP zu erweitern, bis die Steady-State-Bedingungen nachlassen. So können beispielsweise während der Steady-State-Bedingungen, bei denen eine Speicherbereinigungsoperation ausgeführt wird, die aktuellen Arbeitslast-Bedingungen für die Speichervorrichtung im Hinblick auf die Schreibverstärkung bewertet werden. Wenn die gemessene Schreibverstärkung während der Steady-State-Arbeitslasten auf ein Niveau ansteigt, das ausreichend ist, um eine Grenzwert-Leistungsbedingung zu erfüllen, kann der Cache-Manager bestimmen, ob das statische Cache-Gebiet zur Ergänzung des Betriebs-OPs verwendet werden soll oder nicht. Darüber hinaus kann der Cache-Manager in einigen Implementierungen die Lebensdauer von Datenblöcken im State-Cache bewerten, um zu bestimmen, ob das statische Cache-Gebiet zur Ergänzung des Betriebs-OP verwendet werden soll oder nicht. In solchen Fällen kann ein Lebensdauer-Grenzwert des statischen Cache verwendet werden, die eine Funktion des Verhältnisses der Zellen-Degradation in einem Modus mit höherer Datendichte zu einem Modus mit geringerer Datendichte ist. In einigen Implementierungen kann der Cache-Manager den Schreibmodus der Datenblöcke im Cache-Gebiet vorübergehend von SLC auf einen Modus mit höherer Datendichte (z.B. MLC, TLC, QLC, usw.) ändern und das Cache-Gebiet während der Steady-State-Bedingungen für Speicherbereinigungsoperationen verfügbar machen. Wenn die Steady-State-Bedingungen nachlassen (wenn z.B. die Schreibverstärkung abnimmt) und/oder die Datenblöcke in dem statischen Cache-Gebiet eine Lebensdauer-Bedingung nicht erfüllen, kann der Cache-Manager den Schreibmodus des Cache-Gebiets wieder auf SLC ändern und die Beschränkung wieder einführen, die verhindert, dass Speicherbereinigungsoperationen das Cache-Gebiet unter normalen Arbeitslasten nutzen.
-
Die Vorteile der vorliegenden Erfindung umfassen, aber nicht hierauf beschränkt, eine erhöhte Schreibleistung sowie eine erhöhte Effizienz der vordergründigen Speicherbereinigung während Perioden mit schreibintensiver Arbeitslast. Durch das Umschalten des Schreibmodus von Datenblöcken im Cache auf einen Modus mit einer höheren Datendichte kann ein erhöhtes OP für die Speicherbereinigung während Perioden mit schreibintensiver Arbeitslast zur Verfügung gestellt werden, wodurch während dieser Perioden die Schreibverstärkung reduziert werden kann. Durch Überwachen der Schreibverstärkung unter Arbeitslast, und die intelligente Aktivierung des statischen Cache zur Verwendung mit der Speicherbereinigung können zusätzliche Auswirkungen auf die Lebensdauer der Blöcke im Cache-Gebiet minimiert werden, indem die Umschaltung des Modus auf jene Perioden beschränkt wird, in denen die Leistung am stärksten beeinträchtigt ist. Darüber hinaus kann durch die Nutzung des Cache-Gebiets zur Ergänzung des Betriebs-OP die Anzahl der bewusst für den Cache zugewiesenen Blöcke während der Lebensdauer eines Speicher-Untersystems erhöht werden. Auf diese Weise können die Vorteile einer größeren Cache-Größe während der gesamten Lebensdauer des Speicher-Untersystems genutzt werden (z.B. verbesserte Schreibleistung bei normalen Arbeitslast-Bedingungen), während gleichzeitig die Vorteile eines größeren Betriebs-OP für schreibintensive Arbeitslasten während der frühen Lebensdauer des Speicher-Untersystems erhalten bleiben.
-
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 sind ein Solid-State-Laufwerk (SSD), ein Flash-Laufwerk, ein USB-Flash-Laufwerk (Universal Serial Bus Flash-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 sind ein Dual-Inline-Speichermodul (DIMM), ein Small-Outline-DIMM (SO-DIMM) und verschiedene Arten von nichtflüchtigen Dual-Inline-Speichermodulen (NVDIMM).
-
Das Computersystem 100 kann eine Computervorrichtung 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 loT-fähige Vorrichtung (Internet der Dinge Vorrichtung), ein eingebetteter Computer (z.B. eine solcher, der in einem Fahrzeug, einer Industrieanlage oder einer vernetzten kommerziellen Vorrichtung enthalten ist) oder eine solche Computervorrichtung, 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 gekoppelt 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 an“ oder „gekoppelt mit“ allgemein auf eine Verbindung zwischen Komponenten, die eine indirekte kommunikative Verbindung oder eine direkte kommunikative Verbindung (z.B. ohne zwischengeschaltete Komponenten oder Vorrichtungen) sein kann, ob verdrahtet oder drahtlos, einschließlich Verbindungen, wie zum Beispiel elektrische, optische, magnetische und ähnliche Verbindungen.
-
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. einen 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 umfassen, aber nicht hierauf beschränkt, eine Serial Advanced Technology Attachment Schnittstelle (SATA-Schnittstelle), eine Peripheral Component Interconnect Express Schnittstell (PCIe-Schnittstelle), eine Universal Serial Bus Schnittstelle (USB-Schnittstelle), einen Fiber Channel, ein Serial Attached SCSI (SAS), ein Small Computer System Interface (SCSI), einen Double Data Rate Speicherbus (DDR-Speicherbus), eine Dual Inline Memory Module Schnittstelle (DIMM-Schnittstelle) (z.B. eine DIMM-Sockel-Schnittstelle, die Double Data Rate (DDR) unterstützt), ein Open NAND Flash Interface (ONFI), ein Double Data Rate (DDR), ein Low Power Double Data Rate (LPDDR) oder eine andere Schnittstelle. 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. Speichervorrichtungen 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 zur Weiterleitung von Steuersignalen, Adressensignalen, Datensignalen und anderen Signalen zwischen dem Speicher-Untersystem 110 und dem Host-System 120 bereitstellen. In 1 ist ein Speicher-Untersystem 110 als Beispiel dargestellt. Allgemein kann das Host-System 120 auf mehrere Speicher-Untersysteme über dieselbe Kommunikationsverbindung, mehrere separate Kommunikationsverbindungen und/oder eine Kombination von Kommunikationsverbindungen zugreifen.
-
Die Speichervorrichtungen 130, 140 können eine beliebige Kombination der verschiedenen Typen von nichtflüchtigen und/oder flüchtigen Speichervorrichtungen umfassen. Bei den flüchtigen Speichervorrichtungen (z.B. Speichervorrichtung 140) kann es sich um Direktzugriffsspeicher (RAM), wie zum Beispiel dynamische Direktzugriffsspeicher (DRAM) und synchrone dynamische Direktzugriffsspeicher (SDRAM), handeln, aber nicht hierauf beschränkt.
-
Einige Beispiele für nichtflüchtige Speichervorrichtungen (z.B. Speichervorrichtung 130) umfassen Flash-Speicher vom Negative-Und-Typ (NAND-Typ) und Write-In-Place-Speicher, wie zum Beispiel eine dreidimensionale Kreuzpunkt-Speichervorrichtung („3D-Kreuzpunkt“-Speichervorrichtung), die ein Kreuzpunkt-Array aus nichtflüchtigen Speicherzellen ist. Ein Kreuzpunkt-Array eines nichtflüchtigen Speichers kann eine Bitspeicherung auf Basis einer Änderung des Bahnwiderstands in Verbindung mit einem stapelbaren Kreuzgitter-Datenzugriffs-Array durchführen. 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 NAND-Typ 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 SLC, MLC, TLC, QLC 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 Speichertypen (z.B. NAND) können Seiten gruppiert werden, um Blöcke zu bilden.
-
Obwohl nichtflüchtige Speichervorrichtungen, wie zum Beispiel Speicher vom NAND-Typ (z.B. 2D NAND, 3D NAND) und 3D-Kreuzpunkt-Arrays aus nichtflüchtigen Speicherzellen, 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 Transistor-Direktzugriffsspeicher (FeTRAM), ferroelektrische Direktzugriffsspeicher (FeRAM), Magneto-Direktzugriffsspeicher (MRAM), Spin Transfer Torque MRAM (STT-MRAM), Conductive Bridging RAM (CBRAM), Resistive Direktzugriffsspeicher (RRAM), Oxid-basierte RRAM (OxRAM), Negative-Oder-Flash-Speicher (NOR Flash-Speicher) und elektrisch löschbare programmierbare Festwertspeicher (EEPROM).
-
Ein Speicher-Untersystem-Controller 115 (oder Controller 115 - der Einfachheit halber) kann mit den Speichervorrichtungen 130 kommunizieren, um Operationen durchzuführen, wie zum Beispiel Lesen von Daten, Schreiben von Daten oder Löschen von Daten in den Speichervorrichtungen 130 und andere derartige Operationen (z.B. als Reaktion auf Befehle, die durch den Controller 116 auf einem Befehlsbus festgelegt werden). Der Controller des Speicher-Untersystems 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 digitale Schaltungen mit dedizierter (d.h. fest kodierter) Logik zur Durchführung der hier beschriebenen Operationen umfassen. Der Controller des Speicher-Untersystems 115 kann ein Mikro-Controller, eine spezielle Logikschaltung (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 eine Verarbeitungsvorrichtung 117 (Prozessor) enthalten, die ausgestaltet ist, um Befehle auszuführen, die in einem lokalen Speicher 119 gespeichert sind. In dem dargestellten Beispiel umfasst der lokale Speicher 119 des Speicher-Untersystem-Controllers 115 einen eingebetteten Speicher, der ausgestaltet ist, um Befehle zur Durchführung verschiedener Prozesse, Operationen, logischer Abläufe und Routinen zu speichern, die den Betrieb des Speicher-Untersystems 110 steuern, einschließlich der Abwicklung von Kommunikation zwischen dem Speicher-Untersystem 110 und dem Host-System 120.
-
In einigen Ausführungsformen kann der lokale Speicher 119 Speicherregister enthalten, die Speicherzeiger, abgerufene Daten, usw. speichern. 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 ein Speicher-Untersystem 110 in einer anderen Ausführungsform der vorliegenden Erfindung keinen Speicher-Untersystem-Controller 115 enthalten und stattdessen auf einer externen Steuerung basieren (bereitgestellt z.B. durch einen externen Host oder durch einen vom Speicher-Untersystem getrennten Prozessor oder Controller).
-
Allgemein kann der Speicher-Untersystem-Controller 115 Befehle oder Operationen vom Host-System 120 empfangen und die Befehle oder Operationen in Instruktionen oder geeignete Befehle umwandeln, um den gewünschten Zugriff auf die Speichervorrichtungen 130 und/oder die Speichervorrichtung 140 zu erreichen. Der Speicher-Untersystem-Controller 115 kann für andere Operationen, wie zum Beispiel Abnutzungsausgleichsoperationen, Speicherbereinigungsoperationen, Fehlererfassungs- und Fehlerkorrektur-Code-Operationen (ECC-Operationen), Verschlüsselungsoperationen, Cache-Operationen und Adressübersetzungen zwischen einer logischen Adresse (z.B. logische Blockadresse (LBA), Namespace) und einer physischen Adresse (z.B. physische Blockadresse) verantwortlich sein, 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 und/oder die Speichervorrichtung 140 zugreifen zu können, und die mit den Speichervorrichtungen 130 und/oder der Speichervorrichtung 140 in Beziehung stehenden Antworten in Informationen für das Host-System 120 umwandeln.
-
In einigen Implementierungen kann das Speicher-Untersystem 110 ein Striping-Schema verwenden, bei dem jede Daten-Nutzlast (z.B. Benutzerdaten) mehrere Speicherelemente der Speichervorrichtungen 130 (z.B. Flash-Speichervorrichtungen vom NAND-Typ) verwendet, so dass die Nutzlast über eine Teilmenge von Speicherelementen verteilt wird, während die verbleibenden ein oder mehrere Speicherelemente zum Speichern der Fehlerkorrekturinformationen (z.B. Paritätsbits) verwendet werden. Folglich wird ein Satz von Blöcken, die über einen Satz von Speicherelementen einer Speichervorrichtung unter Verwendung eines Striping-Schemas verteilt sind, hier als ein „Superblock“ bezeichnet.
-
Das Speicher-Untersystem 110 kann auch zusätzliche Schaltungen oder Komponenten enthalten, die nicht dargestellt sind. In einigen Ausführungsformen kann das Speicher-Untersystem 110 einen Cache oder Puffer (z.B. DRAM) und Adressenschaltungen (z.B. einen Zeilendekodierer und einen Spaltendekodierer) 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 enthalten die Speichervorrichtungen 130 lokale Medien-Controller 135, die in Verbindung mit der Speicher-Untersystem-Steuerung 115 arbeiten, um Operationen an einer oder mehreren 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 an 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 Speichervorrichtungs-Bausteins kombiniert ist. Ein Beispiel für eine verwaltete Speichervorrichtung ist eine verwaltete NAND-Vorrichtung (MNAND).
-
Das Speicher-Untersystem 110 umfasst eine Cache-Manager-Komponente 113, die verwendet werden kann, um eine Medienverwaltungsoperation, z.B. eine Speicherbereinigungsoperation, basierend auf einer Änderung eines Schreibmodus eines Datenblocks in einem Cache für Datenblöcke, die in den Speichervorrichtungen 130 gespeichert sind, durchzuführen. In einigen Ausführungsformen enthält der Controller 115 zumindest einen Bereich der Cache-Manager-Komponente 113. Zum Beispiel kann der Controller 115 einen Prozessor 117 (Verarbeitungsvorrichtung) enthalten, der ausgestaltet ist, um Befehle, die in dem lokalen Speicher 119 gespeichert sind, zur Durchführung der hier beschriebenen Operationen auszuführen. In einigen Ausführungsformen ist die Cache-Manager-Komponente 113 Teil des Host-Systems 120, einer Anwendung oder eines Betriebssystems.
-
Die Cache-Manager-Komponente 113 kann die Arbeitslast-Bedingungen (z.B. die beobachtete Schreibverstärkung) des Speicher-Untersystems 110 überwachen, und, wenn die Leistung einer Speicherbereinigungsoperation eine Leistungsbedingung erfüllt (z.B. wenn die beobachtete Schreibverstärkung anzeigt, dass das Speicher-Untersystem 110 unter Steady-State-Bedingungen arbeitet), kann die Cache-Manager-Komponente 113 bestimmen, ob ein Block in dem Cache-Gebiet der Speichervorrichtungen 130 eine Lebensdauer-Bedingung erfüllt. Wenn beide Bedingungen erfüllt sind, kann die Cache-Manager-Komponente 113 den Schreibmodus für einen Datenblock in dem Cache-Gebiet von einem Modus mit geringer Datendichte (z.B. SLC) in einen Schreibmodus mit höherer Datendichte (z.B. MLC, TLC, QLC, usw., nachfolgend zusammenfassend als XLC bezeichnet) ändern und diesen Datenblock in der Speicherbereinigungsoperation verwenden. Darüber hinaus kann die Cache-Manager-Komponente 113 den Schreibmodus für nachfolgende Datenblöcke in dem Cache-Gebiet wieder auf ihre ursprüngliche Datendichte (z.B. SLC) zurückschalten, sobald die Arbeitslast-Bedingungen angeben, dass die Steady-State-Leistungsbedingung nicht mehr gegeben ist. Weitere Einzelheiten zu den Operationen der Cache-Manager-Komponente 113 werden nachfolgend beschrieben.
-
2 ist ein Flussdiagramm eines beispielhaften Verfahrens 200 zur Durchführung einer Speicherbereinigungsoperation basierend auf der Änderung eines Schreibmodus eines Datenblocks in einem Cache für ein Speicher-Untersystem. Das Verfahren 200 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. Befehle, die auf einer Verarbeitungsvorrichtung ausgeführt werden) oder eine Kombination davon umfassen kann. In einigen Ausführungsformen wird das Verfahren 200 von der Cache-Manager-Komponente 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. So 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.
-
Wie in 2 gezeigt, führt die Verarbeitungslogik bei Operation 205 eine Speicherbereinigungsoperation an einem oder mehreren Datenblöcken eines Speicher-Untersystems durch. Daten können in dem einen oder den mehreren Blöcken des Speicher-Untersystems unter Verwendung eines Schreibmodus gespeichert werden, der Daten unter Verwendung einer bestimmten Anzahl von Bits pro Speicherzelle eines Datenblocks speichert. In einigen Implementierungen können die Daten unter Verwendung eines Schreibmodus mit einer Datendichte gespeichert werden, die höher ist als die der Blöcke, die in einem Cache-Gebiet des Speicher-Untersystems gespeichert sind. In einem veranschaulichenden Beispiel können die Daten in Blöcken gespeichert werden, die mit QLC-Speicherzellen konfiguriert sind, während die in dem Cache-Gebiet gespeicherten Blöcke mit SLC-, MLC- oder TLC-Speicherzellen konfiguriert sein können (da diese jeweils eine geringere Datendichte als QLC-Speicherzellen haben). In einem anderen veranschaulichenden Beispiel können die Daten in Blöcken gespeichert werden, die mit TLC-Speicherzellen konfiguriert sind, während die in dem Cache-Gebiet gespeicherten Blöcke mit SLC- oder MLC-Speicherzellen konfiguriert sein können (da diese jeweils eine geringere Datendichte als TLC-Speicherzellen haben).
-
Bei Operation 210 bestimmt die Verarbeitungslogik, ob die Speicherbereinigungsoperation eine Leistungsbedingung erfüllt. In einigen Ausführungsformen kann die Leistungsbedingung auf einer Anzahl von Schreiboperationen basieren, die in der Speicherbereinigungsoperation verwendet werden, um eine Datenmenge in einen oder mehrere neue Datenblöcke zu schreiben (z.B. die während der Speicherbereinigung beobachtete Schreibverstärkung). Mit anderen Worten, die Leistungsbedingung kann auf der Anzahl der zusätzlichen Schreibvorgänge basieren, die während der Speicherbereinigung anfallen, um gültige Daten von einem Block in einen anderen zu kopieren. Die Verarbeitungslogik kann die Arbeitslast-Bedingungen des Speicher-Untersystems überwachen, um auf Basis der beobachteten Schreibverstärkung zu bestimmen, ob Steady-State-Bedingungen vorliegen. Wie bereits erwähnt, kann sich ein Speicher-Untersystem in Perioden mit hohem Datenschreibvolumen in einem Steady-State-Zustand befinden, wenn Speicherbereinigungsoperationen parallel zum Schreiben neuer Host-Daten notwendig werden, um Datenblöcke von nicht benötigten Daten zu befreien. Wenn beispielsweise die gemessene Schreibverstärkung, die zum Zeitpunkt der Speicherbereinigungsoperation beobachtet wird, einen Grenzwert erreicht, kann die Leistungsbedingung erfüllt sein. Wenn die Verarbeitungslogik in Operation 210 bestimmt, dass die Leistungsbedingung erfüllt wurde, fährt die Verarbeitung mit Operation 215 fort. Andernfalls wird die Verarbeitung mit Operation 230 fortgesetzt.
-
Bei Operation 215 bestimmt die Verarbeitungslogik, ob ein Datenblock eines Cache-Gebiets des Speicher-Untersystems eine Lebensdauer-Bedingung erfüllt. Wie oben erwähnt, können in einigen Implementierungen Daten in dem Datenblock des Cache-Gebiets unter Verwendung eines zweiten Schreibmodus mit einer geringeren Datendichte als der Datendichte der Datenblöcke, auf die durch die Speicherbereinigungsoperation zugegriffen wird, gespeichert werden. Mit anderen Worten, der zweite Schreibmodus kann Daten unter Verwendung einer Zahl von Bits pro Speicherzelle eines Datenblocks speichern, die geringer ist als die Zahl von Bits für die Blöcke, die unter Verwendung des ersten Schreibmodus geschrieben wurden, der bei Operation 205 angegeben wurde. Wenn der erste Schreibmodus beispielsweise QLC ist, dann kann der zweite Schreibmodus SLC, MLC oder TLC sein, da diese eine geringere Datendichte als QLC haben. Bei Operation 215 kann die Verarbeitungslogik bestimmen, ob ein Datenblock, der dem Cache-Gebiet des Speicher-Untersystems zugewiesen ist, einen Lebensdauerwert hat, der einen Grenzwert erfüllt, der mit einem der Schreibmodi mit höherer Datendichte in Beziehung steht. Zum Beispiel kann die Verarbeitungslogik die Lebensdauer des Cache-Datenblocks mit einem hohen Grenzwert für die Lebensdauer von TLC-Speicherzellen vergleichen. Wenn die beobachtete Lebensdauer des Cache-Datenblocks geringer ist als der TLC-Lebensdauer-Grenzwert, kann die Verarbeitungslogik bestimmen, dass der Cache-Datenblock die Lebensdauer-Bedingung erfüllt und im TLC-Modus verwendet werden kann. Wenn die Verarbeitungslogik bestimmt, dass der Datenblock die Lebensdauer-Bedingung erfüllt, fährt die Verarbeitung mit Operation 220 fort. Andernfalls wird die Verarbeitung mit Operation 230 fortgesetzt.
-
Bei Operation 220 ändert die Verarbeitungslogik einen Schreibmodus für den Datenblock des Cache-Gebiets vom zweiten Schreibmodus in den ersten Schreibmodus. Wenn die Verarbeitungslogik beispielsweise bei Operation 215 bestimmt, dass der Datenblock des Cache-Gebiets eine beobachtete Lebensdauer hat, die geringer ist als der maximale Lebensdauer-Grenzwert, der mit dem Schreibmodus mit höherer Datendichte in Beziehung steht, kann die Verarbeitungslogik den Schreibmodus des Datenblocks des Cache-Gebiets von seinem aktuellen Schreibmodus (z.B. SLC) in einen Schreibmodus mit höherer Datendichte (z.B. MLC, TLC, usw.) ändern. Bei Operation 225 verwendet die Verarbeitungslogik den Datenblock des Cache-Gebiets in der Speicherbereinigungsoperation. Mit anderen Worten, die Verarbeitungslogik kann nun Daten in den Datenblock des Cache-Gebiets während der Speicherbereinigungsoperation unter Verwendung der neuen Schreibmodi mit höherer Datendichte (z.B. einer der XLC-Modi) schreiben.
-
Wenn die Verarbeitungslogik bei Operation 210 bestimmt, dass die Speicherbereinigungsoperation die Leistungsbedingung nicht erfüllt (z.B. dass das Speicher-Untersystem keine stabile Arbeitslast-Bedingung aufweist), fährt die Verarbeitung mit Block 230 fort, wo die Speicherbereinigungsoperation einen Datenblock von außerhalb des Cache-Gebiets verwendet (z.B. dass die Speicherbereinigungsoperation keine Datenblöcke aus dem Cache-Gebiet verwendet). Wenn die Verarbeitungslogik bei Operation 215 bestimmt, dass keiner der Datenblöcke in dem Cache-Gebiet die Lebensdauer-Bedingung erfüllt (z.B. hat jeder der Datenblöcke im Cache einen beobachteten Lebensdauerwert, der den Grenzwert überschreitet, der mit dem Schreibmodus mit höherer Datendichte in Beziehung steht, der vom Speicher-Untersystem verwendet wird), fährt die Verarbeitung in ähnlicher Weise mit Block 230 fort, wo der Speicherbereinigungsoperation einen Datenblock von außerhalb des Cache-Gebiets verwendet.
-
Weitere Details zu den obigen Operationen werden nachstehend in Verbindung mit 3A und 3B beschrieben.
-
3A-3B zeigen Beispiele von Datenkonfigurationen eines Speicher-Untersystems während der Durchführung einer Speicherbereinigungsoperation basierend auf einer Änderung eines Schreibmodus eines Datenblocks in einem Cache gemäß einigen Ausführungsformen der vorliegenden Erfindung. In einigen Ausführungsformen kann die Speicherbereinigungsoperation von der Cache-Manager-Komponente 113 aus 1 durchgeführt werden, wie vorstehend unter Bezugnahme auf 2 und nachfolgend unter Bezugnahme auf 4 beschrieben.
-
Wie in 3A gezeigt, kann die Datenkonfiguration 300 Benutzer-Datenblöcke 301, für Firmware reservierte Datenblöcke 302, Cache-Datenblöcke 303 und Betriebs-OP-Datenblöcke 304 umfassen. In einigen Implementierungen kann das gesamte OP-Gebiet der Datenkonfiguration 300 die für Firmware reservierten Datenblöcke 302, Cache-Datenblöcke 303 und Betriebs-OP-Datenblöcke 304 (z.B. die Datenblöcke, die keinen Benutzer-Datenblöcken 301 zugeordnet sind) umfassen. Wie bereits erwähnt, können die für Firmware reservierten Datenblöcke 302 und die Cache-Datenblöcke 303 aus dem gesamten OP-Bereich der Datenkonfiguration 300 zugewiesen werden, wodurch das Betriebs-OP-Gebiet 305 reduziert wird, so dass es nur die Betriebs-OP-Datenblöcke 304 umfasst. Wie bereits erwähnt, können die Datenblöcke, die den Cache-Datenblöcken 303 (z.B. Datenblock 306) zugewiesen sind, auch so konfiguriert werden, dass sie unter Verwendung eines Schreibmodus niedriger Dichte (z.B. SLC) geschrieben werden.
-
Wie oben erwähnt, können Host-Daten, die vom Speicher-Untersystem zum Schreiben empfangen werden, zunächst in Cache-Datenblöcke 303 geschrieben und dann später in einen Datenblock in Benutzer-Datenblöcken 301 verschoben werden. Wenn weiterhin Daten in das Speicher-Untersystem geschrieben werden, können die Cache-Datenblöcke 303 beginnen, sich zu füllen, so dass anschließend empfangene Host-Daten direkt in die Benutzer-Datenblöcke 301 geschrieben werden. Da weiterhin Schreibvorgänge verarbeitet werden, verringert sich der verfügbare Speicherraum, so dass Speicherbereinigungsoperationen erforderlich werden, um Datenblöcke von nicht benötigten Daten zu löschen. Wie bereits erwähnt, kann das Speicher-Untersystem in Perioden mit hohem Schreibaufkommen Steady-State-Bedingungen erfahren, in denen die Speicherbereinigung gleichzeitig mit dem Schreiben neuer Daten erfolgt.
-
Wie vorstehend unter Bezugnahme auf 2 beschrieben, wird während einer Speicherbereinigung-Operation die Arbeitslastleistung (z.B. die beobachtete Schreibverstärkung) des Speicher-Untersystems überwacht, um zu beurteilen, ob Steady-State-Bedingungen vorliegen (z.B. ob eine Leistungsbedingung erfüllt wird). Die Speicherbereinigungsoperation kann die Leistungsbedingung erfüllen, wenn die Schreibverstärkung der Datenblöcke zum Zeitpunkt der Speicherbereinigungsoperation einen Grenzwert erreicht oder überschreitet. Die Schreibverstärkung basiert, wie vorstehend beschrieben, auf der Anzahl der Schreiboperationen, die bei der Speicherbereinigungsoperation verwendet werden, um eine bestimmte Menge an Daten in einen oder mehrere neue Datenblöcke zu schreiben. Um zum Beispiel 1 GB an Host-Daten in das Speicher-Untersystem zu schreiben, kann die Speicherbereinigung manchmal mehrere Schreib- oder Umschreiboperationen umfassen, was dazu führt, dass weit mehr als die 1 GB an Host-Daten geschrieben werden. So kann das effektive Schreiben von insgesamt 2 GB an Daten zur Verarbeitung von 1 GB an Host-Daten während der Speicherbereinigung einen Schreibverstärkungswert von 2 ergeben. Während der Steady-State-Bedingungen kann die Anzahl der Schreiboperationen ein großer Multiplikator der zu schreibenden Menge an Host-Daten sein.
-
Wenn die Speicherbereinigungsoperation die Leistungsbedingung erfüllt (z.B. wenn Steady-State-Bedingungen auf Basis der Speicherbereinigungs-Schreibverstärkung beobachtet werden), können die Cache-Datenblöcke 303 analysiert werden, um zu bestimmen, ob sie zur Ergänzung des Betriebs-OP-Gebiets 305 verwendet werden können. Der Cache-Manager kann dann einen Datenblock 306 aus den Cache-Datenblöcken 303 auswählen, um zu bestimmen, ob dieser Datenblock eine Lebensdauer-Bedingung für einen XLC-Schreibmodus erfüllt. In einigen Implementierungen entspricht die Lebensdauer-Bedingung einer Grenzwertzahl von Schreibvorgängen, die unter Verwendung des XLC-Schreibmodus bezüglich des Datenblocks 306 ausgeführt wurden. Mit anderen Worten, die Lebensdauer-Bedingung kann die maximale Anzahl von Programmier-/Löschzyklen darstellen, die für einen XLC-Schreibmodus verwendet werden können, bevor die Speicherzelle des Datenblocks unzuverlässig wird.
-
Wenn beispielsweise Benutzer-Datenblöcke 301 und Betriebs-OP-Datenblöcke 304 ausgestaltet sind, um einen TLC-Schreibmodus zu verwenden, kann der Cache-Manager den beobachteten Lebensdauerwert für Datenblock 306 mit dem Lebensdauer-Grenzwert für den TLC-Schreibmodus vergleichen. Wenn auf ähnliche Weise andere Schreibmodi mit höherer Datendichte (z.B. MLC, QLC, usw.) vom Speicher-Untersystem verwendet werden, kann der Cache-Manager den Lebensdauer-Grenzwert für den verwendeten Schreibmodus verwenden. Durch die Lebensdauerbedingung kann daher sichergestellt werden, dass ein Datenblock im Cache für einen Schreibmodus mit höherer Dichte geeignet ist, bevor auf diesen Schreibmodus umgeschaltet wird.
-
In einigen Implementierungen kann der Cache-Manager bestimmen, ob der Datenblock 306 die Lebensdauer-Bedingung erfüllt, indem zunächst bestimmt wird, ob ein durchschnittlicher Lebensdauerwert für alle Datenblöcke in den Cache-Datenblöcken 303 die Lebensdauer-Bedingung erfüllt. Wenn die durchschnittliche Lebensdauer für die gesamten Cache-Datenblöcke 303 die Lebensdauer-Bedingung erfüllt, kann der Cache-Manager anschließend einen Datenblock 306 auswählen. Wenn der durchschnittliche Lebensdauerwert die Lebensdauer-Bedingung nicht erfüllt, kann dies darauf hindeuten, dass es keine Datenblöcke in den Cache-Datenblöcken 303 gibt, die einen XLC-Schreibmodus unterstützen können. In solchen Fällen können die Cache-Datenblöcke 303 nur für Cache-Operationen verwendet werden, und jegliche Umschaltung des Schreibmodus für nachfolgende Speicherbereinigungsoperationen kann deaktiviert oder umgangen werden.
-
Wenn der Cache-Manager bestimmt, dass die Speicherbereinigungsoperation die Leistungsbedingung erfüllt (z.B. hat die Schreibverstärkung während der Steady-State-Speicherbereinigung einen Grenzwert erreicht oder überschritten) und mindestens ein Datenblock in den Cache-Datenblöcken 303 eine Lebensdauer-Bedingung erfüllt (z.B. kann der Datenblock 306 einen XLC-Schreibmodus unterstützen), dann kann der Cache-Manager den Schreibmodus 340 ändern, um den Schreibmodus des Datenblocks 306 zu ändern (z.B. die Datendichte für den Datenblock 306 erhöhen, um einen XLC-Schreibmodus zu unterstützen).
-
Der Änderungsschreibmodus 340 kann dann die Datenkonfiguration 300 ändern, um die Datenkonfiguration 350 aus 3B zu erhalten. Wie in 3B gezeigt, kann die Datenkonfiguration 350 Benutzer-Datenblöcke 351, für Firmware reservierte Datenblöcke 352, Cache-Datenblöcke 353 und Betriebs-OP-Datenblöcke 354 enthalten. Wie bei der Datenkonfiguration 300 kann das gesamte OP-Gebiet der Datenkonfiguration 350 die für Firmware reservierten Datenblöcke 352, die Cache-Datenblöcke 353 und die Betriebs-OP-Datenblöcke 354 (z.B. die Datenblöcke, die nicht den Benutzer-Datenblöcken 351 zugeordnet sind) enthalten. Durch die Durchführung des Änderungsschreibmodus 340 kann jedoch das Betriebs-OP-Gebiet vergrößert werden, so dass er einige oder alle Cache-Datenblöcke 353 umfasst (z.B. wie durch das temporären Betriebs-OP-Gebiet 355 dargestellt). Darüber hinaus können als Ergebnis der Durchführung des Änderungsschreibmodus 340 Datenblöcke, die den Cache-Datenblöcken 353 zugeordnet sind (z.B. Datenblock 356), so konfiguriert werden, dass sie mit einem Schreibmodus höherer Dichte (z.B. XLC) geschrieben werden. In einigen Implementierungen erfüllen einige der Datenblöcke in den Cache-Datenblöcken 353 möglicherweise nicht die Lebensdauer-Bedingung (z.B. können einige Blöcke Lebensdauerwerte haben, die den XLC-Grenzwert überschreiten). In solchen Fällen können diese Blöcke davon abgehalten werden, im XLC-Modus für die Speicherbereinigung verwendet zu werden.
-
Wenn die Speicherbereinigungsoperationen fortgesetzt werden, kann der Cache-Manager weiterhin die laufenden Arbeitslast-Bedingungen (z.B. die beobachtete Schreibverstärkung) des Speicher-Untersystems überwachen, um zu bestimmen, wann die Steady-State-Bedingungen beendet sind. Wenn der Cache-Manager bestimmt, dass die nachfolgende Speicherbereinigungsoperation die festgelegte Leistungsbedingung nicht erfüllt (z.B. dass die beobachtete Schreibverstärkung während der Steady-State-Speicherbereinigung unter einen Grenzwert gefallen ist), kann der Schreibmodus 360 wiederhergestellt bzw. zurückgesetzt werden, um den Schreibmodus für die Datenblöcke in den Cache-Datenblöcken 353 zurück in seinen vorherigen Zustand zu schalten (z.B. Zurücksetzen der Schreibmodus-Konfiguration in den SLC-Modus). Auf diese Weise können die Datenblöcke im Cache für die Dauer der Steady-State-Bedingungen im XLC-Modus verwendet werden, werden aber in den SLC-Modus zurückgesetzt, wenn diese Bedingungen nicht mehr gegeben sind. Das Zurücksetzen des Schreibmodus von Cache-Datenblöcken in ihre ursprüngliche Konfiguration wird nachfolgend unter Bezugnahme auf 4 beschrieben.
-
Zur Veranschaulichung wird in den 3A-3B das Umschalten des Schreibmodus des Cache-Datenblocks 306 vom SLC-Schreibmodus in einen XLC-Schreibmodus dargestellt, wobei in verschiedenen Implementierungen Aspekte der vorliegenden Erfindung zur Verwendung anderer Schreibmodi implementiert werden können. Beispielsweise kann der Cache-Datenblock 306 in einigen Implementierungen zunächst mit MLC-Speicherzellen konfiguriert werden und anschließend auf TLC- oder QLC-Speicherzellen umgeschaltet werden.
-
4 ist ein Flussdiagramm eines beispielhaften Verfahrens 400 zum Zurücksetzen des Schreibmodus von Cache-Datenblöcken nach dem Durchführen einer Speicherbereinigungsoperation auf Basis einer Änderung des Schreibmodus für ein 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 laufen oder ausgeführt werden) oder eine Kombination davon umfassen kann. In einigen Ausführungsformen wird das Verfahren 400 von der Cache-Manager-Komponente 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.
-
Wie in 4 gezeigt, bestimmt die Verarbeitungslogik bei Operation 405, dass eine Speicherbereinigungsoperation an einer Gruppe von Datenblöcken, die mit der Speichervorrichtung in Beziehung stehen, einen Datenblock eines Cache-Gebiets, der mit der Speichervorrichtung in Beziehung steht, verwendet hat, indem eine Zahl von Bits, die in dem Datenblock gespeichert sind, von einer ersten Zahl zu einer zweiten Zahl geändert wird, wobei die erste Zahl kleiner ist als die zweite Zahl. Wie vorstehend unter Bezugnahme auf 2 und 3A-3B erwähnt, kann die Speicherbereinigungsoperation in einigen Implementierungen den Datenblock des Cache-Gebiets verwenden, indem der Schreibmodus des Datenblocks von einem Modus mit niedriger Datendichte, wobei in dem Datenblock weniger Bits gespeichert sind, auf einen Modus mit höherer Datendichte umgeschaltet wird, wobei in dem Datenblock mehr Bits gespeichert sind. Beispielsweise kann der Schreibmodus eines mit SLC-Speicherzellen konfigurierten Datenblocks auf einen der XLC-Schreibmodi umgeschaltet werden. In ähnlicher Weise kann der Schreibmodus eines Datenblocks, der mit MLC-Speicherzellen konfiguriert ist, auf die Schreibmodi TLC oder QLC umgeschaltet werden.
-
Bei Operation 410 bestimmt die Verarbeitungslogik, dass die Speicherbereinigungsoperation eine Leistungsanforderung erfüllt hat. In einigen Implementierungen kann die Leistungsanforderung auf einer Anzahl von Schreiboperationen basieren, die in der Speicherbereinigungsoperation verwendet werden, um eine Menge von Daten in einen oder mehrere neue Datenblöcke zu schreiben (z.B. die während der Speicherbereinigung beobachtete Schreibverstärkung). Die Verarbeitungslogik kann die Arbeitslast-Bedingungen des Speicher-Untersystems überwachen, um auf Basis der beobachteten Schreibverstärkung zu bestimmen, wann keine Steady-State-Bedingungen mehr gegeben sind. Wenn beispielsweise die gemessene Schreibverstärkung, die zum Zeitpunkt der Speicherbereinigungsoperation beobachtet wurde, unter einen hohen Grenzwert fällt, dann kann die Leistungsanforderung erfüllt sein.
-
Bei Operation 415 speichert die Verarbeitungslogik als Reaktion auf das Bestimmen, dass die Speicherbereinigungsoperation die Leistungsanforderung erfüllt hat, nachfolgende Daten in den Datenblock als Cache-Daten, indem die Zahl der in dem Datenblock gespeicherten Bits von der zweiten Zahl (z.B. die Zahl an Bits für den Schreibmodus mit höherer Datendichte) auf die erste Zahl (die Zahl an Bits für den Schreibmodus mit geringerer Datendichte) geändert wird. Wie vorstehend beschrieben, kann die Verarbeitungslogik den Schreibmodus des Datenblocks auf den ursprünglichen Schreibmodus zurücksetzen, der vor dem Auftreten der Steady-State-Arbeitslast-Bedingungen bestand. Wenn beispielsweise die Datenblöcke in dem Cache-Gebiet ursprünglich mit SLC-Speicherzellen konfiguriert waren und anschließend auf einen XLC-Schreibmodus umgeschaltet wurden, kann die Verarbeitungslogik den Schreibmodus für Datenblöcke in dem Cache-Gebiet des Speicher-Untersystems von einem XLC-Schreibmodus zurück auf ihren ursprünglich konfigurierten SLC-Schreibmodus ändern.
-
5 zeigt eine beispielhafte Maschine eines Computersystems 500, in der ein Satz von Instruktionen ausgeführt werden kann, um die Maschine zu veranlassen, ein oder mehrere der hier erörterten Verfahren durchzuführen. In einigen Ausführungsformen kann das Computersystem 500 einem Host-System entsprechen (z.B. das Host-System 120 aus 1), das ein Speicher-Untersystem (z.B. das Speicher-Untersystem 110 aus 1) enthält, mit diesem gekoppelt ist oder dieses nutzt, oder es kann verwendet werden, um die Operationen eines Controllers auszuführen (z.B. um ein Betriebssystem auszuführen, um Operationen durchzuführen, die der Cache-Manager-Komponente 113 aus 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 ein Server oder eine Client-Maschine in einer Cloud-Computer-Infrastruktur oder Cloud-Computer-Umgebung arbeiten.
-
Die Maschine kann ein Personal Computer (PC), ein Tablet-PC, eine Set-Top-Box (STB), ein Personal Digital Assistant (PDA), ein Mobiltelefon, eine Web-Anwendung, ein Server, ein Netzwerk-Router, ein Switch oder eine Bridge, eine digitale oder nicht-digitale Schaltung oder eine beliebige Maschine sein, die in der Lage ist, einen Satz von Instruktionen (sequentiell oder anderweitig) auszuführen, die von dieser Maschine auszuführende Aktionen spezifizieren. Auch wenn eine einzelne Maschine gezeigt 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 ein oder mehrere der hier erörterten Verfahren durchzuführen.
-
Das beispielhafte Computersystem 500 enthält eine Verarbeitungsvorrichtung 502, einen Hauptspeicher 504 (z.B. Festwertspeicher (ROM), Flash-Speicher, dynamische Direktzugriffsspeicher (DRAM), wie zum Beispiel synchrone DRAM (SDRAM) oder Rambus DRAM (RDRAM), usw.), einen statischen Speicher 506 (z.B. Flash-Speicher, statische Direktzugriffsspeicher (SRAM), usw.) und ein Datenspeichersystem 518, die über einen Bus 530 miteinander kommunizieren.
-
Die Verarbeitungsvorrichtung 502 stellt eine oder mehrere Mehrzweck-Verarbeitungsvorrichtungen dar, wie zum Beispiel ein 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, der andere Sätze von Instruktionen implementiert, oder ein Prozessor sein, der eine Kombination von Sätzen von Instruktionen implementiert. Bei der Verarbeitungsvorrichtung 502 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), einen Netzwerk-Prozessor oder dergleichen. Die Verarbeitungsvorrichtung 602 ist ausgestaltet, um Befehle 526 zur Durchführung der hier besprochenen Operationen und Schritte auszuführen. Das Computersystem 500 kann außerdem eine Netzwerk-Schnittstellenvorrichtung 508 zur Kommunikation über das Netzwerk 520 umfassen.
-
Das Datenspeichersystem 518 kann ein maschinenlesbares Speichermedium 524 (auch als computerlesbares Medium bekannt) enthalten, auf dem ein oder mehrere Sätze von Instruktionen 526 oder Software gespeichert sind, die ein oder mehrere der hier beschriebenen Verfahren oder Funktionen verkörpern. Die Instruktionen 526 können sich auch vollständig oder zumindest teilweise in dem Hauptspeicher 504 und/oder in der Verarbeitungsvorrichtung 502 befinden, während sie von dem Computersystem 500 ausgeführt werden, wobei der Hauptspeicher 504 und die Verarbeitungsvorrichtung 502 ebenfalls maschinenlesbare Speichermedien darstellen. Das maschinenlesbare Speichermedium 524, das Datenspeichersystem 518 und/oder der Hauptspeicher 504 können dem Speicher-Untersystem 110 aus 1 entsprechen.
-
In einer Ausführungsform umfassen die Instruktionen 526 Instruktionen zum Implementieren einer Funktionalität, die einer Cache-Manager-Komponente (z.B. die Cache-Manager-Komponente 113 aus 1) entspricht. Obwohl das maschinenlesbare Speichermedium 524 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, ein oder mehrere der Verfahren der vorliegenden Erfindung durchzuführen. Der Begriff „maschinenlesbares Speichermedium“ soll folglich Solid-State- Speicher, optische Medien und magnetische Medien umfassen, aber nicht hierauf beschränkt.
-
Einige Teile der vorhergehenden detaillierten Beschreibung wurden in Form von Algorithmen und symbolischen Darstellungen von Operationen hinsichtlich 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 allgemein 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 physische Manipulationen von physischen 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 als Bits, Werte, Elemente, Symbole, Zeichen, Begriffe, Zahlen oder Ähnliches zu bezeichnen, hauptsächlich aus Gründen des allgemeinen Sprachgebrauchs.
-
Es sollte jedoch bedacht werden, dass alle diese und ähnliche Begriffe mit den entsprechenden physischen 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 physische (elektronische) Größen in den Registern und Speichern des Computersystems dargestellt werden, manipuliert und in andere Daten umwandelt, die in ähnlicher Weise als physische Größen in den Speichern oder Registern des Computersystems oder in anderen derartigen Informationsspeichersystemen dargestellt werden.
-
Die vorliegende Erfindung bezieht sich ferner auf ein Gerät zum Durchführen der hier beschriebenen Operationen. Diese Vorrichtung kann speziell für die beabsichtigten Zwecke ausgestaltet sein, oder sie kann einen Mehrzweckcomputer umfassen, der durch ein in dem Computer gespeichertes Computerprogramm selektiv aktiviert oder neu konfiguriert wird. Ein solches Computerprogramm kann in einem computerlesbaren Speichermedium gespeichert werden, wie zum Beispiel, aber nicht hierauf beschränkt, jeder Typ von Disketten, einschließlich Disketten, optische Disketten, CD-ROMs und magnetisch-optische Disketten, Festwertspeicher (ROM), Direktzugriffsspeicher (RAM), EPROMs, EEPROMs, magnetische oder optische Karten oder jede Art von Medien, die zum Speichern elektronischer Instruktionen geeignet sind, jeweils gekoppelt an einen Computer-Systembus.
-
Die hier vorgestellten Algorithmen und Displays sind von Natur aus nicht an einen bestimmten Computer oder ein anderes Gerät gebunden. Verschiedene Mehrzwecksysteme können mit Programmen gemäß den hierin enthaltenen Lehren verwendet werden, oder es kann sich als zweckmäßig erweisen, ein spezielleres Gerät zum Durchführen des Verfahrens 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 als Software bereitgestellt werden, die ein maschinenlesbares Medium mit darauf gespeicherten Instruktionen umfassen kann, die zum Programmieren eines Computersystems (oder anderer elektronischer Vorrichtungen) zum Durchführen 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“), Magnetplatten-Speichermedien, 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 dass der breitere Grundgedanke und der Umfang der Ausführungsformen der Erfindung, wie in den folgenden Ansprüchen dargelegt, verlassen wird. Die Beschreibung und die Zeichnungen sind dementsprechend eher in einem illustrativen als in einem einschränkenden Sinne zu verstehen.