-
HINTERGRUND
-
Die vorliegende Offenbarung bezieht sich im Allgemeinen auf das Planen von Befehlen für ein Datenspeichersystem.
-
In Datenspeichersystemen wie z. B. Festkörperlaufwerken (SSD) werden Befehle in Warteschlangen eingereiht und in der Reihenfolge verarbeitet, in der Befehle empfangen werden. Das Warten auf einen vorhergehenden Befehl, der verarbeitet werden soll, kann Latenz in dem nächsten Befehl in der Warteschlange verursachen. Latenz kann für spezielle Typen von Befehlen, beispielsweise für Host-Lesebefehle, kritischer sein als für andere Typen von Befehlen. Beispielsweise kann Leselatenz von Host-Lesebefehlen die Laufwerksleistung von Datenspeichersystemen negativ beeinflussen.
-
ZUSAMMENFASSUNG
-
Aspekte der Technologie des Gegenstands beziehen sich auf ein Verfahren zum Managen eines Datenspeichersystems. Das Verfahren kann das Identifizieren von Befehlen als einen ersten Befehlstyp oder einen zweiten Befehlstyp enthalten. Das Verfahren kann außerdem das Zuweisen von Befehlen, die als der erste Befehlstyp identifiziert sind, zu einer ersten Warteschlange und von Befehlen, die als der zweite Befehlstyp identifiziert sind, zu einer zweiten Warteschlange und Verarbeiten von Befehlen aus der ersten Warteschlange und Befehlen aus der zweiten Warteschlange basierend auf einem Planungsverhältnis enthalten. Das Verfahren kann ferner, nachdem die Befehle aus der ersten Warteschlange und die Befehle aus der zweiten Warteschlange basierend auf dem Planungsverhältnis über eine vorbestimmte Zeitspanne verarbeitet sind, das Bestimmen eines Schreibfaktors des Datenspeichersystems, einer Anzahl von Host-Lesebefehlen und einer Anzahl von Host-Schreibbefehlen, die von einer Host-Vorrichtung während der vorbestimmten Zeitspanne empfangen werden, enthalten, wobei der erste Befehlstyp die Host-Lesebefehle enthält und der zweite Befehlstyp den Host-Schreibbefehl enthält. Das Verfahren kann außerdem das Aktualisieren des Planungsverhältnisses basierend auf dem bestimmten Schreibfaktor, der Anzahl von Host-Lesebefehlen, der Anzahl von Host-Schreibbefehlen und einem vorbestimmten Planungsverhältnisfaktor und Verarbeiten nachfolgender Befehle aus der ersten Warteschlange und der zweiten Warteschlange basierend auf dem aktualisierten Planungsverhältnis enthalten.
-
In speziellen Aspekten bezieht sich die Technologie des Gegenstands darauf, dass ein Datenspeichersystem bereitgestellt wird. Das Datenspeichersystem kann Mittel zum Identifizieren von Befehlen als einen ersten Befehlstyp oder einen zweiten Befehlstyp enthalten. Das Datenspeichersystem kann außerdem Mittel zum Zuweisen von Befehlen, die als der erste Typ identifiziert sind, zu einer ersten Warteschlange und von Befehlen, die als der zweite Befehlstyp identifiziert sind, zu einer zweiten Warteschlange enthalten. Das Datenspeichersystem kann außerdem Mittel zum Verarbeiten von Befehlen aus der ersten Warteschlange und Befehlen aus der zweiten Warteschlange basierend auf einem Planungsverhältnis enthalten. Das Datenspeichersystem kann ferner Mittel zum Bestimmen eines Schreibfaktors des Datenspeichersystems, einer Anzahl von Host-Lesebefehlen und einer Anzahl von Host-Schreibbefehlen, die von einer Host-Vorrichtung während der vorbestimmten Zeitspanne empfangen werden, wobei der erste Befehlstyp die Host-Lesebefehle enthält und der zweite Befehlstyp den Host-Lesebefehle enthält, nachdem die Befehle aus der ersten Warteschlange und die Befehle aus der zweiten Warteschlange verarbeitet worden sind, basierend auf dem Planungsverhältnis über eine vorbestimmte Zeitspanne enthalten. Das Datenspeichersystem kann ferner Mittel zum Aktualisieren des Planungsverhältnisses basierend auf dem bestimmten Schreibfaktor, der Anzahl von Host-Lesebefehlen, der Anzahl von Host-Schreibbefehlen und einem vorbestimmten Planungsverhältnisfaktor enthalten. Das Datenspeichersystem kann außerdem Mittel zum Verarbeiten nachfolgender Befehle aus der ersten Warteschlange und der zweiten Warteschlange basierend auf dem aktualisierten Planungsverhältnis enthalten.
-
Aspekte der Technologie des Gegenstands beziehen sich auch auf ein Datenspeichersystem, das mehrere Speichervorrichtungen enthält, wobei jede Speichervorrichtung mehrere nichtflüchtige Speicherchips enthält, und eine Steuereinheit, die mit den mehreren Speichervorrichtungen gekoppelt ist. Die Steuereinheit kann konfiguriert sein, Befehle als einen ersten Befehlstyp oder einen zweiten Befehlstyp zu identifizieren. Die Steuereinheit kann außerdem konfiguriert sein, Befehle, die als der erste Typ identifiziert sind, einer ersten Warteschlange zuzuweisen, und Befehle, die als der zweite Befehlstyp identifiziert sind, einer zweiten Warteschlange zuzuweisen. Die Steuereinheit kann ferner konfiguriert sein, Befehle aus der ersten Warteschlange und Befehle aus der zweiten Warteschlange basierend auf einem Planungsverhältnis zu verarbeiten. Die Steuereinheit kann ferner konfiguriert sein, einen Schreibfaktor des Datenspeichersystems, eine Anzahl von Host-Lesebefehlen und eine Anzahl von Host-Schreibbefehlen, die von einer Host-Vorrichtung während der vorbestimmten Zeitspanne empfangen werden, wobei der erste Befehlstyp die Host-Lesebefehle enthält und der zweite Befehlstyp den Host-Lesebefehle enthält, nachdem die Befehle aus der ersten Warteschlange und die Befehle aus der zweiten Warteschlange verarbeitet worden sind, basierend auf dem Planungsverhältnis über eine vorbestimmte Zeitspanne zu bestimmen. Die Steuereinheit kann außerdem konfiguriert sein, das Planungsverhältnis basierend auf dem bestimmten Schreibfaktor, der Anzahl von Host-Lesebefehlen, der Anzahl von Host-Schreibbefehlen und einem vorbestimmten Planungsverhältnisfaktor zu aktualisieren. Die Steuereinheit kann ferner konfiguriert sein, nachfolgende Befehle aus der ersten Warteschlange und der zweiten Warteschlange basierend auf dem aktualisierten Planungsverhältnis zu verarbeiten.
-
Es ist zu verstehen, dass andere Konfigurationen der vorliegenden Offenbarung für Fachleute aus der folgenden ausführlichen Beschreibung einfach zu erkennen sind, wo verschiedene Konfigurationen der vorliegenden Offenbarung durch Darstellung gezeigt und beschrieben sind. Wie erkennbar ist, ist die vorliegende Offenbarung zu anderen und unterschiedlichen Konfigurationen fähig, und ihre verschiedenen Einzelheiten sind zur Modifikation in verschiedener anderer Hinsicht fähig, alles ohne von dem Schutzbereichs der vorliegenden Offenbarung abzuweichen. Dementsprechend sollen die Zeichnungen und die ausführliche Beschreibung als ihrem Wesen nach erläuternd und nicht als einschränkend betrachtet werden.
-
Figurenliste
-
- 1 ist ein Blockdiagramm, das Komponenten eines Datenspeichersystems gemäß Aspekten der Technologie des Gegenstands abbildet.
- 2 ist ein Blockdiagramm, das Beispiel-Befehlswarteschlangen in einer Steuereinheit einer Datenspeichervorrichtung gemäß Aspekten der Technologie des Gegenstands abbildet.
- 3A und 3B bilden ein Ablaufdiagramm eines Beispielprozesses zum Managen eines Datenspeichersystems gemäß Aspekten der Technologie des Gegenstands ab.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Die ausführliche Beschreibung, die nachstehend dargelegt ist, ist als eine Beschreibung verschiedener Konfigurationen der Technologie des Gegenstands vorgesehen und soll nicht die einzigen Konfigurationen repräsentieren, in denen die Technologie des Gegenstands praktiziert werden kann. Die beigefügten Zeichnungen sind hier aufgenommen und bilden einen Teil der ausführlichen Beschreibung. Die ausführliche Beschreibung enthält spezifische Einzelheiten zum Zweck des Unterstützens eines vollständigen Verstehens der Technologie des Gegenstands. Es wird jedoch offensichtlich sein, dass die Technologie des Gegenstands ohne diese spezifischen Einzelheiten praktiziert werden kann. In einigen Fällen sind Strukturen und Komponenten in Blockdiagrammform gezeigt, um das Verdecken der Konzepte der Technologie des Gegenstands zu vermeiden. Ähnliche Komponenten sind zum einfachen Verstehen mit gleichen Bezugszeichen gekennzeichnet.
-
Steuereinheiten managen Datenspeichervorrichtungen wie z. B. Festkörperlaufwerke (SSD) und führen Datenoperationen auf nichtflüchtigem Speicher wie z. B. NAND-Flash-Speicher der Datenspeichervorrichtungen aus. Steuereinheiten können Operationsbefehle (z. B. Host-Lesebefehle, Host-Schreibbefehle) von Host-Vorrichtungen empfangen. Spezielle Operationsbefehle (z. B. Löschbefehle, Schreibbefehle, Lesebefehle, Fehlerkorrektur usw.) können durch die Firmware der Datenspeichervorrichtung intern erzeugt werden. Die Operationsbefehle können in der Reihenfolge, in der sie empfangen und/oder erzeugt werden, in die Warteschlange zur Ausführung eingereiht werden. Datenoperationen aus den Operationsbefehlen können in der Reihenfolge der Warteschlange ausführt werden. Operationsbefehle, die früher in der Warteschlange sind, können jedoch die Latenz von Operationsbefehlen später in der Warteschlange erhöhen. Die Technologie des Gegenstands kann die Leistung von Datenspeichersystemen beispielsweise durch Einreihen von Operationsbefehlen in mehrere Warteschlangen basierend auf Typen der Operationsbefehle und Planen von Operationsbefehlen aus entsprechenden Warteschlangen basierend auf einem Planungsverhältnis verbessern. Das Planungsverhältnis kann basierend auf einer Anzahl von empfangenen und/oder erzeugten Operationsbefehlen gemäß den hier beschriebenen Prozessen dynamisch aktualisiert werden.
-
1 ist ein Blockdiagramm, das Komponenten eines Beispiel-Datenspeichersystems 100 gemäß verschiedenen Implementierungen der Technologie des Gegenstands abbildet. Das Datenspeichersystem 100 kann das Host-System 110 und die Datenspeichervorrichtung 120 enthalten. Die Datenspeichervorrichtung 120 (beispielsweise ein Festkörperlaufwerk) kann die Host-Schnittstelle 130, die Steuereinheit 140, den Speicher 150 und den nichtflüchtigen Speicher 160A-160C enthalten.
-
Das Host-System 110 repräsentiert eine Vorrichtung, die konfiguriert ist, mit dem Datenspeichersystem 120 gekoppelt zu sein, um über die Host-Schnittstelle 130 Daten zu dem Datenspeichersystem 120 zu senden und von ihm zu empfangen. Das Host-System 110 kann ein Berechnungssystem wie z. B. ein Personalcomputer, ein Server, eine Workstation, ein Laptop-Computer, ein PDA, ein Smartphone und dergleichen sein. Alternativ kann das Host-System 110 eine elektronische Vorrichtung wie z. B. eine Digitalkamera, ein digitaler Audioplayer, ein digitaler Videorecorder und dergleichen sein.
-
Die Host-Schnittstelle 130 kann sowohl elektrische als auch physikalische Verbindungen zum betriebstechnischen Koppeln des Host-Systems 110 mit der Steuereinheit 140 enthalten. Die Host-Schnittstelle 130 kann konfiguriert sein, Daten, Adressen und Steuersignale zwischen dem Host-System 110 und der Steuereinheit 140 zu kommunizieren. Die Host-Schnittstelle 130 kann irgendein proprietäres oder Standard-Schnittstellenprotokoll verwenden, das „Serial Advanced Technology Attachment“ (SATA), „Advanced Technology Attachment“ (ATA), „Small Computer System Interface“ (SCSI), „PCI-extended“ (PCI-X), „Fibre Channel“, „Serial Attached SCSI“ (SAS), „Secure Digital“ (SD), „Embedded Multi-Media Card“ (EMMC), „Universal Flash Storage“ (UFS) und „Peripheral Component Interconnect Express“ (PCle) enthält, jedoch nicht darauf beschränkt ist.
-
Gemäß Aspekten der Technologie des Gegenstands kann die Host-Schnittstelle 130 eine drahtlose Verbindung zwischen dem Host-System 110 und der Datenspeichervorrichtung 120 unter Verwendung standardisierter oder proprietärer Drahtlosschnittstellenstandards und -protokolle implementieren. In dieser Hinsicht können die Host-Schnittstelle 130 oder andere Komponenten der Datenspeichervorrichtung 120 einen Drahtlos-Sender/Empfänger enthalten, um das Host-System 110 und die Datenspeichervorrichtung 120 in drahtlose Kommunikation miteinander zu bringen.
-
Die Steuereinheit 140 ist konfiguriert, Daten, die von dem Host-System 110 empfangen werden, in dem nichtflüchtigen Speicher 160A-160C in Reaktion auf einen Schreibbefehl von dem Host-System 110 zu speichern, und in Reaktion auf einen Lesebefehl von dem Host-System 110 Daten, die in dem nichtflüchtigen Speicher 160A-160C gespeichert sind, zu lesen und die gelesenen Daten über die Host-Schnittstelle 130 zu dem Host-System 110 zu übertragen. Die Steuereinheit 140 kann mehrere interne Komponenten (in 1 nicht gezeigt) enthalten, wie z. B. mehrere Prozessorkerne, Speicher, eine Flash-Komponentenschnittstelle (beispielsweise einen Multiplexer, um Anweisungs- und Datentransport entlang einer Verbindung mit dem nichtflüchtigen Speicher 160A-160C zu managen), eine I/O-Schnittstelle, ein Fehlerkorrekturcode-Modul (ECC-Modul) und dergleichen. Das ECC-Modul kann konfiguriert sein, aus Daten, die von dem Host-System 110 empfangen werden, Codewörter zu erzeugen, die in dem nichtflüchtigen Speicher 160A-160C gespeichert werden sollen, und Codewörter zu decodieren, die aus dem nichtflüchtigen Speicher 160A-160C gelesen werden, bevor die decodierten Daten zu dem Host-System 110 gesendet werden. Verschiedene ECC-Lösungen können verwendet werden, um Daten zu codieren und zu decodieren, um die Codewörter zu erzeugen. In einigen Aspekten können ein oder mehrere Elemente der Steuereinheit 140 in einen einzigen Chip integriert sein. In anderen Aspekten können die Elemente auf mehreren diskreten Komponenten implementiert sein.
-
Die Steuereinheit 140 kann einen Mehrkernprozessor enthalten. Beispielsweise können entsprechende Kerne in dem Mehrkernprozessor einem separaten Prozess zugewiesen sein. Die Steuereinheit 140 kann beispielsweise konfiguriert sein, Code oder Anweisungen auszuführen, um den Operationsbefehlsablauf und Adressenabbildungen zu managen und Berechnungen auszuführen und Operationsbefehle zu erzeugen. Die Steuereinheit 140 kann konfiguriert sein, die Operation der Komponenten in der Datenspeichervorrichtung 120 zu überwachen und zu steuern. Die Steuereinheit 140 kann einen Allzweck-Mikroprozessor, eine Mikrosteuereinheit, einen digitalen Signalprozessor (DSP), eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gatterfeld (FPGA), eine programmierbare Logikvorrichtung (PLD), einen Zustandsautomaten, Gatter-Logik, diskrete Hardware-Komponenten oder eine Kombination der Vorstehenden enthalten.
-
Anweisungssequenzen können in dem Speicher innerhalb der Steuereinheit 140 als Firmware gespeichert sein. Anweisungssequenzen können auch in dem Speicher 150, dem nichtflüchtigen Speicher 160A-160C gespeichert und daraus gelesen werden oder von dem Host-System 110 (beispielsweise über die Host-Schnittstelle 130) empfangen werden. Der Speicher und der nichtflüchtige Speicher 160A-160C repräsentieren Beispiele für maschinen- oder computerlesbare Medien, auf denen Anweisungen/Code, die/der durch die Steuereinheit 140 ausführbar sind/ist, gespeichert sein können. Maschinen- oder computerlesbare Medien können sich allgemein auf irgendwelche greifbaren und nicht-transitorischen Medien beziehen, die verwendet werden, um Anweisungen für die Steuereinheit 140, ihren Prozessor bereitzustellen, die sowohl flüchte Medien wie z. B. dynamischen Speicher, der für den Speicher 150 oder für Puffer innerhalb der Steuereinheit verwendet wird, als auch nichtflüchtige Medien, wie z. B. elektronische Medien, optische Medien und magnetische Medien enthalten.
-
Die Steuereinheit 140 kann den Speicher 150 zum temporären Speichern von Daten und Informationen, die verwendet werden, um die Datenspeichervorrichtung 120 zu managen, verwenden. In einigen Aspekten repräsentiert der Speicher 150 flüchtigen Speicher, der verwendet wird, um Daten und Informationen, die verwendet werden, um die Datenspeichervorrichtung 120 zu managen, temporär zu speichern. Gemäß Aspekten der Technologie des Gegenstands kann der Speicher 150 ein Direktzugriffsspeicher (RAM) wie z. B. RAM mit doppelter Datenrate (DDR-RAM) sein. Andere Typen von RAM können ebenfalls verwendet werden, um den Speicher 150 zu implementieren. Der Speicher 150 kann unter Verwendung eines einzelnen RAM-Moduls oder mehrerer RAM-Module implementiert sein. Obwohl der Speicher 150 so abgebildet ist, dass er von der Steuereinheit 140 getrennt ist, kann der Speicher 150 in die Steuereinheit 140 integriert sein, ohne von dem Schutzbereich der vorliegenden Offenbarung abzuweichen. Alternativ kann der Speicher 150 ein nichtflüchtiger Speicher wie z. B. eine Magnetplatte, Flash-Speicher und dergleichen sein.
-
Der nichtflüchtige Speicher 160A-160C repräsentiert nichtflüchtige Speichervorrichtungen zum Speichern von Daten. Die Anzahl der nichtflüchtigen Speicher in der Datenspeichervorrichtung 120 kann irgendeine Anzahl wie z. B. zwei, vier, acht, sechzehn usw. sein. Zur Vereinfachung der Diskussion ist der nichtflüchtige Speicher 160A-160C in 1 abgebildet. Der nichtflüchtige Speicher 160A-160C ist nicht auf irgendeine spezielle Kapazität oder Konfiguration beschränkt. Jeder der nichtflüchtigen Speicher 160A-160C kann in Blöcke und Seiten organisiert sein. Jeder Block kann eine Anzahl von Seiten enthalten, beispielsweise 256, und jede Seite kann einen oder mehrere Sektoren oder Abschnitte von Daten enthalten.
-
Gemäß Aspekten der Technologie des Gegenstands enthält der nichtflüchtige Speicher 160A-160C beispielsweise NAND-Flash-Speicher. Der nichtflüchtige Speicher 160A-160C kann Mehrpegelzellen-Flash-Speicher (MLC-Flash-Speicher) und/oder Dreipegelzellen-Speicher (TLC-Speicher) enthalten. In einigen Aspekten kann der nichtflüchtige Speicher 160A-160C ferner dreidimensionalen (3D-) Flash-Speicher enthalten. In einigen Aspekten kann der nichtflüchtige Speicher 160A-160C eine oder mehrere Hybrid-Speichervorrichtungen enthalten, die in einer oder mehreren aus einer SLC-, MLC- oder TLC-Betriebsart funktionieren können. Die Technologie des Gegenstands ist nicht auf diese Speichertypen beschränkt und kann auf Flash-Speicherzellen angewandt werden, die unter Verwendung von mehr als drei Pegeln konfiguriert und betrieben werden (z. B. 4 Bits pro Zelle, 5 Bits pro Zelle, usw.).
-
2 ist ein Blockdiagramm, das Beispiel-Befehlswarteschlangen der Steuereinheit 140 der Datenspeichervorrichtung 120 gemäß Aspekten der Technologie des Gegenstands abbildet. Die Steuereinheit 140 enthält eine hochpriore Warteschlange 142, eine niederpriore Warteschlange 144 und eine Flash-Kanal-Steuereinheit 146. Die Steuereinheit 140 kann über die Host-Schnittstelle 130 Host-Operationsbefehle von dem Host-System 110 empfangen. Host-Operationsbefehle können Host-Lesebefehle enthalten, um Daten aus dem nichtflüchtigen Speicher 160A-160C zu lesen. In einigen Fällen können Host-Befehle auch Host-Schreibbefehle enthalten, um Daten in den nichtflüchtigen Speicher 160A-160C zu schreiben. In einigen Aspekten kann die Steuereinheit 140 interne Operationsbefehle erzeugen. Interne Operationsbefehle können interne Programmierbefehle, interne Löschbefehle, interne Lesebefehle und Fehlerkorrekturbefehle enthalten. Beispielsweise können interne Operationsbefehle basierend auf Speicherbereinigung (GC-), Hintergrundmedien-Scan (BGMS-) oder Set/Get-Merkmalen erzeugt werden.
-
Die Steuereinheit 140 kann Operationsbefehle (z. B. Host-Operationsbefehle und interne Operationsbefehle) als entweder hochpriore Befehle oder niederpriore Befehle identifizieren. Beispielsweise kann jeder Typ eines Operationsbefehls als entweder ein niederpriorer Befehl oder ein hochpriorer Befehl kategorisiert sein. Die Steuereinheit 140 kann Operationsbefehle als entweder hochpriore Befehle oder niederpriore Befehle basierend auf einer Kategorieliste oder einem anderen Typ einer Nachschlagedatenstruktur identifizieren, um die Operationsbefehle zu priorisieren, so dass diejenigen Operationsbefehle, die die Laufwerksleistung der Datenspeichervorrichtung beeinträchtigen, mit reduzierten Wartezeiten verarbeitet werden können. Beispielsweise können Host-Lesebefehle als hochpriore Befehle identifiziert werden. In einigen Fällen können interne Fehlerkorrekturbefehle, um Daten aus Datenorten aufgrund von Fehlerzahl oder Operationsfehlern zu verlagern, als hochpriore Befehle identifiziert werden. In einigen Aspekten können Operationsbefehle wie z. B. Host-Schreibbefehle, interne Programmierbefehle, interne Löschbefehle und interne Lesebefehle als niederpriore Befehle identifiziert werden.
-
Operationsbefehle, die als hochpriore Befehle identifiziert sind, werden der hochprioren Warteschlange 142 zugewiesen, und Operationsbefehle, die als niederpriore Befehle identifiziert sind, werden der niederprioren Warteschlange 144 zugewiesen. In einigen Aspekten können Operationsbefehle in den entsprechenden Warteschlangen in der Steuereinheit 140 basierend auf der Zeit, wann die Operationsbefehle durch die Steuereinheit 140 empfangen wurden, in chronologischer Reihenfolge eingereiht werden.
-
Die Steuereinheit 140 kann Operationsbefehle aus der hochprioren Warteschlange 142 und der niederprioren Warteschlange 144 basierend auf einem Planungsverhältnis planen. Ein Planungsverhältnis kann beispielsweise eine Anzahl von verarbeiteten Operationsbefehlen aus der hochprioren Warteschlange für jede vorbestimmte Anzahl von verarbeiteten Operationsbefehlen aus der niederprioren Warteschlange definieren. Beispielsweise kann die Steuereinheit 140 neun Operationsbefehle aus der hochprioren Warteschlange für jeden einzigen Operationsbefehl aus der niederprioren Warteschlange planen.
-
Ein anfängliches Planungsverhältnis kann basierend auf einer mittleren Leselatenz von Host-Lesebefehlen bestimmt werden. Beispielsweise kann ein anfängliches Planungsverhältnis durch Verarbeiten von Test-Operationsbefehlen basierend auf einem beliebigen Planungsverhältnis und Überwachen der mittleren Leselatenz von Host-Lesebefehlen während der Verarbeitung bestimmt werden. Das beliebige Planungsverhältnis kann angepasst und getestet werden, bis ein Planungsverhältnis bestimmt ist, das zu einer mittleren optimalen oder Ziel-Leselatenz der Host-Lesebefehle führt. Das Planungsverhältnis, das zu der mittleren Ziel-Leselatenz führt, kann als ein anfängliches Planungsverhältnis eingestellt werden. In einigen Aspekten kann zusätzlich zu der mittleren Leselatenz von Host-Lesebefehlen ein anfängliches Planungsverhältnis für unterschiedliche Ebenen von Überversorgung (z. B. 7 %, 10 % usw.) in der Datenspeichervorrichtung 120 bestimmt werden.
-
Die Flash-Kanal-Steuereinheit
146 kann Operationsbefehle aus der hochprioren Warteschlange und der niederprioren Warteschlange basierend auf dem anfänglichen Planungsverhältnis verarbeiten. Die Flash-Kanal-Steuereinheit
146 kann einen Operationsbefehl durch Ausgeben eines Befehls, der dem Operationsbefehl entspricht, zu dem nichtflüchtigen Speicher
160A-
160C verarbeiten. Wenn die Flash-Kanal-Steuereinheit
146 Operationsbefehle aus der hochprioren Warteschlange und der niederprioren Warteschlange basierend auf dem anfänglichen Planungsverhältnis für eine vorbestimmte Zeitspanne (z. B. 10 Sekunden) verarbeitet, kann die Steuereinheit
140 das Planungsverhältnis unter Verwendung von Gleichung (1) aktualisieren:
- A:
- Anzahl von Host-Lesebefehlen
- B:
- Anzahl von Host-Schreibbefehlen
- C:
- Schreibfaktor
- D:
- Planungsverhältnisfaktor
- E:
- Planungsverhältnis
-
Die Steuereinheit 140 kann ein Log von Operationsbefehlen in dem Speicher 150 pflegen. Beispielsweise kann das Log die Typen von Operationsbefehlen und die Anzahl jeweiliger Typen von Operationsbefehlen, die während der vorbestimmten Zeitspanne verarbeitet werden, enthalten. Die Anzahl von Host-Lesebefehlen A kann beispielsweise eine Anzahl von Host-Lesebefehlen sein, die von dem Host-System 110 während der vorbestimmten Zeitspanne empfangen werden. Die Anzahl von Host-Schreibbefehlen B ist beispielsweise eine Anzahl von Host-Schreibbefehlen, die während der vorbestimmten Zeitspanne basierend auf dem Log empfangen werden.
-
Der Schreibfaktor C repräsentiert die Anzahl von Schreiboperationen, die für jeden Host-Schreibbefehl, der von dem Host-System 110 empfangen wird, ausgeführt wird. Der Schreibfaktor kann mit einer Anzahl von Programmier/Lösch-Zyklen von Blöcken in der Datenspeichervorrichtung 120 korrelieren. Der Schreibfaktor kann ansteigen, wenn die Anzahl von Programmier/Lösch-Zyklen ansteigt. Beispielsweise können Blöcke des nichtflüchtigen Speichers 160A-160C eine endliche Anzahl von Programmier/Lösch-Zyklen tolerieren, bevor ein Block aus dem Kreislauf genommen und nicht verfügbar wird. Somit kann die Anzahl verfügbarer Blöcke in dem nichtflüchtigen Speicher 160A-160C abnehmen, wenn sich die Datenspeichervorrichtung 120 dem Ende ihrer Lebensdauer nähert. Wenn die Anzahl verfügbarer Blöcke abnimmt, kann es erforderlich sein, dass die Steuereinheit 140 mehr Datenverschiebungen und/oder Speicherbereinigung ausführt, um neue Host-Schreibbefehle aufzunehmen. Das kann zum Ansteigen des Schreibfaktors führen. In einigen Aspekten kann eine Tabelle, die vordefinierte Schreibfaktoren, die unterschiedlichen Stufen der Lebensdauer des nichtflüchtigen Speichers 160A-160C zugeordnet sind, enthält, im Speicher 150 gespeichert sein.
-
Der Planungsverhältnisfaktor D kann basierend auf dem anfänglichen Planungsverhältnis E, der Anzahl von Host-Lesebefehlen A, der Anzahl von Host-Schreibbefehlen B und dem Schreibfaktor C unter Verwendung von Gleichung (1) bestimmt werden.
-
Das anfängliche Planungsverhältnis wird basierend auf einer speziellen Mischung von Operationsbefehlstypen bestimmt. Die Mischung von Operationsbefehlstypen kann jedoch während des Betriebs der Datenspeichervorrichtung von der speziellen Mischung von Operationsbefehlstypen, die verwendet werden, um das anfängliche Planungsverhältnis zu bestimmen, variieren, und die mittlere Leselatenz, die aus dem anfänglichen Planungsverhältnis resultiert, kann von der mittleren optimalen oder Ziel-Leselatenz von Host-Lesebefehlen abweichen. Um die mittlere optimale oder Ziel-Leselatenz zu erhalten, kann die Steuereinheit 140 das Planungsverhältnis durch Bestimmen eines neuen Planungsverhältnisses E unter Verwendung des bestimmten Planungsverhältnisfaktors D aktualisieren. Beispielsweise kann die Steuereinheit 140 eine Anzahl von Host-Schreibbefehlen A und eine Anzahl von Host-Lesebefehlen B über eine vorbestimmte Zeitspanne bestimmen. Die Steuereinheit 140 kann außerdem den Schreibfaktor C unter Verwendung beispielsweise der im Speicher 150 gespeicherten Tabelle bestimmen. Der Planungsverhältnisfaktor D kann aus dem Speicher 150 gelesen werden. Unter Verwendung von Gleichung (1) bestimmt die Steuereinheit 140 ein neues Planungsverhältnis zum Aktualisieren des Planungsverhältnisses. Die Steuereinheit 140 kann das anfängliche Planungsverhältnis mit dem neuen Planungsverhältnis aktualisieren. Die Steuereinheit 140 plant und verarbeitet nachfolgende Operationsbefehle, die empfangen werden, basierend auf dem aktualisierten Planungsverhältnis.
-
3A bildet ein Ablaufdiagramm eines Beispielprozesses zum Managen des Datenspeichersystems 120 gemäß Aspekten der Technologie des Gegenstands ab. Zu erläuternden Zwecken sind die verschiedenen Blöcke des Beispielprozesses 300 hier mit Bezug auf die Komponenten und/oder Prozesse, die hier beschrieben sind, beschrieben. Der eine oder die mehreren Blöcke von Prozess 300 können beispielsweise durch einen oder mehrere Prozessoren implementiert sein, die beispielsweise die Steuereinheit 140 von 1 oder eine oder mehrere Komponenten oder Prozessoren der Steuereinheit 140 enthalten. In einigen Implementierungen können einer oder mehrere der Blöcke getrennt von anderen Blöcken und durch einen oder mehrere unterschiedliche Prozessoren oder Steuereinheiten implementiert sein. Ferner sind zu erläuternden Zwecken die Blöcke des Beispielprozesses 300 so beschrieben, dass sie in Reihe oder linear auftreten. Mehrere Blöcke des Beispielprozesses 300 können jedoch parallel auftreten. Zusätzlich müssen die Blöcke des Beispielprozesses 300 nicht in der gezeigten Reihenfolge ausgeführt werden, und/oder einer oder mehrere der Blöcke des Beispielprozesses 300 müssen nicht ausgeführt werden.
-
Bei Block 310 empfängt die Steuereinheit 140 Operationsbefehle. Beispielsweise empfängt die Steuereinheit 140 Host-Befehle (d. h. Host-Lesebefehle und Host-Schreibbefehle) von dem Host-System 110 über die Host-Schnittstelle 130. In einigen Aspekten können interne Befehle, die beispielsweise auf GC oder BGMS basierend erzeugt werden, in den Operationsbefehlen enthalten sein. Bei Block 320 identifiziert die Steuereinheit 140 die Operationsbefehle als entweder hochpriore Befehle oder niederpriore Befehle. Beispielsweise können Host-Lesebefehle als hochpriore Befehle identifiziert werden. In einigen Aspekten können Fehlerkorrekturbefehle als hochpriore Befehle identifiziert werden. Operationsbefehle wie z. B. Host-Lesebefehle, interne Schreibbefehle, interne Löschbefehle und interne Lesebefehle, die durch die Steuereinheit 140 erzeugt werden, können als niederpriore Befehle identifiziert werden.
-
Bei Block 330 weist die Steuereinheit 140 Operationsbefehle der hochprioren Warteschlange 142 und der niederprioren Warteschlange 144 zu. Beispielsweise werden Operationsbefehle, die als hochpriore Befehle identifiziert sind, der hochprioren Warteschlange 142 zugewiesen, und Operationsbefehle, die als niederpriore Befehle identifiziert sind, werden der niederprioren Warteschlange 144 zugewiesen.
-
3B bildet ein Ablaufdiagramm eines Beispielprozesses zum Managen eines Datenspeichersystems 120 gemäß Aspekten der Technologie des Gegenstands ab. Zu erläuternden Zwecken sind die verschiedenen Blöcke des Beispielprozesses 340 hier mit Bezug auf die Komponenten und/oder Prozesse, die hier beschrieben sind, beschrieben. Der eine oder die mehreren Blöcke von Prozess 340 können beispielsweise durch einen oder mehrere Prozessoren implementiert sein, die beispielsweise die Steuereinheit 140 von 1 oder eine oder mehrere Komponenten oder Prozessoren der Steuereinheit 140 enthalten. In einigen Implementierungen können einer oder mehrere der Blöcke getrennt von anderen Blöcken und durch einen oder mehrere unterschiedliche Prozessoren oder Steuereinheiten implementiert sein. Ferner sind zu erläuternden Zwecken die Blöcke des Beispielprozesses 340 so beschrieben, dass sie in Reihe oder linear auftreten. Mehrere Blöcke des Beispielprozesses 340 können jedoch parallel auftreten. Zusätzlich müssen die Blöcke des Beispielprozesses 340 nicht in der gezeigten Reihenfolge ausgeführt werden, und/oder einer oder mehrere aus den Blöcken des Beispielprozesses 340 müssen nicht ausgeführt werden.
-
Bei Block 350 verarbeitet die Steuereinheit 140 die hochprioren Befehle aus der hochprioren Warteschlange 142 und die niederprioren Befehle aus der niederprioren Warteschlange 144 basierend auf einem Planungsverhältnis. Beispielsweise falls das Planungsverhältnis 9:1 angibt, kann die Flash-Kanal-Steuereinheit 146 der Steuereinheit 140 neun hochpriore Befehle aus der hochprioren Warteschlange 142 nacheinander verarbeiten. Nachdem die Flash-Kanal-Steuereinheit 146 neun hochpriore Befehle aus der hochprioren Warteschlange 142 verarbeitet hat, kann die Flash-Kanal-Steuereinheit 146 einen niederprioren Befehl aus der niederprioren Warteschlange 144 verarbeiten.
-
Bei Block 360 wird bestimmt, ob eine vorbestimmte Zeit abgelaufen ist. Beispielsweise wenn eine vorbestimmte Zeit (z. B. 10 Sekunden) abgelaufen ist, nachdem das Verarbeiten der hochprioren Befehle aus der hochprioren Warteschlange 142 und der niederprioren Befehle aus der niederprioren Warteschlange 144 begonnen hat, bestimmt die Steuereinheit 140, dass eine vorbestimmte Zeit abgelaufen ist (Block 360 = Ja), und der Prozess 340 geht zu Block 370 weiter. Andernfalls, wenn die Steuereinheit bestimmt, dass eine vorbestimmte Zeit nicht abgelaufen ist (Block 360 = Nein), kehrt der Prozess 340 zu Block 350 zurück.
-
Bei Block 370 bestimmt eine Anzahl von Host-Lesebefehlen, eine Anzahl von Host-Schreibbefehlen und einen Schreibfaktor. Beispielsweise kann die Steuereinheit 140 eine Anzahl von Host-Lesebefehlen und eine Anzahl von Host-Schreibbefehlen bestimmen, die von der Host-Vorrichtung 110 während der vorbestimmten Zeit empfangen werden. In einigen Aspekten kann die Steuereinheit 140 einen Schreibfaktor basierend auf einer Anzahl von Programmier/Lösch-Zyklen der Datenspeichervorrichtung 120 bestimmen.
-
Bei Block 380 aktualisiert die Steuereinheit 140 das Planungsverhältnis. Die Steuereinheit 140 bestimmt ein neues Planungsverhältnis basierend auf der bestimmten Anzahl von Host-Lesebefehlen, der Anzahl von Host-Schreibbefehlen und dem Schreibfaktor. Beispielsweise bestimmt die Steuereinheit 140 unter Verwendung von Gleichung (1) ein neues Planungsverhältnis durch Dividieren der bestimmten Anzahl von Host-Lesebefehlen durch das Produkt aus der bestimmten Anzahl von Host-Schreibbefehlen und dem Schreibfaktor. Das Ergebnis der Division wird mit einem vorbestimmten Planungsverhältnisfaktor multipliziert. Das Ergebnis der Berechnung ist das neue Planungsverhältnis. Die Steuereinheit 140 aktualisiert das existierende Planungsverhältnis mit dem neuen Planungsverhältnis. Der Prozess 340 kehrt zu Block 350 zurück. Nachfolgende Operationsbefehle werden basierend auf dem aktualisierten Planungsverhältnis verarbeitet.
-
Es ist zu verstehen, dass anschauliche Blöcke, Module, Elemente, Komponenten, Verfahren und Algorithmen, die hier beschrieben sind, als elektronische Hardware, Computer-Software oder Kombinationen aus beiden implementiert sein können. Um diese Austauschbarkeit von Hardware und Software zu erläutern, sind verschiedene anschauliche Blöcke, Module, Elemente, Komponenten, Verfahren und Algorithmen vorstehend allgemein hinsichtlich ihrer Funktionalität beschrieben worden. Ob eine solche Funktionalität als Hardware oder Software implementiert ist, hängt von der speziellen Anwendung und Konstruktionseinschränkungen ab, die für das Gesamtsystem gelten. Fachleute können die beschriebene Funktionalität auf verschiedene Weisen für jede spezielle Anwendung implementieren. Verschiedene Komponenten und Blöcke können unterschiedlich angeordnet sein (z. B. in einer unterschiedlichen Reihenfolge angeordnet oder auf eine unterschiedliche Weise unterteilt sein), alles ohne vom Schutzbereichs der Technologie des Gegenstands abzuweichen.
-
Es ist zu verstehen, dass die spezifische Reihenfolge oder Hierarchie der Schritte in den offenbarten Prozessen als eine Veranschaulichung einiger beispielhafter Herangehensweisen präsentiert ist. Basierend auf Konstruktionspräferenzen und/oder anderen Erwägungen ist zu verstehen, dass die spezifische Reihenfolge oder Hierarchie von Schritten in den Prozessen anders angeordnet sein können. Beispielsweise können in einigen Implementierungen einige der Schritte gleichzeitig ausgeführt werden. Somit präsentieren die beigefügten Verfahrensansprüche Elemente der verschiedenen Schritte in einer beispielhaften Reihenfolge und sollen nicht auf die spezifische präsentierte Reihenfolge oder Hierarchie eingeschränkt sein.
-
Die vorstehende Beschreibung ist bereitgestellt, um einem Fachmann zu ermöglichen, die verschiedenen hier beschriebenen Aspekte zu praktizieren. Die vorstehende Beschreibung stellt verschiedene Beispiele der Technologie des Gegenstands bereit, und die Technologie des Gegenstands ist nicht auf diese Beispiele beschränkt. Verschiedene Modifikationen an diesen Aspekten werden für Fachleute leicht offensichtlich, und die grundlegenden Prinzipien, die hier definiert sind, können auf andere Aspekte angewandt werden. Somit sollen die Ansprüche nicht auf die hier gezeigten Aspekte beschränkt sein, sondern sollen dem vollen Schutzbereich, der mit dem Wortlaut der Ansprüche konsistent ist, erteilt werden, wobei die Bezugnahme auf ein Element im Singular nicht „eines und nur eines“ bedeuten soll, sofern nicht spezifisch so festgestellt, sondern stattdessen „eines oder mehrere“. Sofern nicht anders festgestellt bezieht sich der Begriff „einige“ auf eines oder mehrere. Pronomen in der männlichen Form (z. B. sein) enthalten die weibliche und sächliche Form (z. B. ihr und sein), und umgekehrt. Überschriften und Unterüberschriften, falls vorhanden, sind nur zur Vereinfachung verwendet und schränken die Offenbarung des Gegenstands nicht ein.
-
Die Prädikate „konfigurieren“, „arbeiten“ und „programmieren“ implizieren keine spezielle greifbare oder nicht greifbare Modifikation eines Subjekts, sondern sollen stattdessen austauschbar verwendet sein. Beispielsweise ein Prozessor, der konfiguriert ist, eine Operation oder eine Komponente zu überwachen und zu steuern, kann auch bedeuten, dass der Prozessor programmiert ist, um die Operation zu überwachen und zu steuern, oder dass der Prozessor arbeitet, um die Operation zu Überwachen und zu steuern. Ähnlich kann ein Prozessor, der konfiguriert ist, Code auszuführen, gedeutet werden als ein Prozessor, der programmiert ist, um Code auszuführen, oder arbeitet, um Code auszuführen.
-
Die Formulierungen „in Kommunikation mit“ und „gekoppelt“ bedeuten in direkter Kommunikation mit oder in indirekter Kommunikation mit über eine oder mehrere hier genannte oder nicht genannte Komponenten (z. B. ein Speicherkarten-Lesegerät).
-
Eine Formulierung wie z. B. ein „Aspekt“ impliziert nicht, dass ein solcher Aspekt für die Technologie des Gegenstands wesentlich ist oder dass ein solcher Aspekt für alle Konfigurationen der Technologie des Gegenstands gilt. Eine Offenbarung, die sich auf einen Aspekt bezieht, kann für alle Konfigurationen oder für eine oder mehrere Konfigurationen gelten. Ein Aspekt kann ein oder mehrere Beispiele bereitstellen. Eine Formulierung wie z. B. ein Aspekt kann sich auf einen oder mehrere Aspekte beziehen, und umgekehrt. Eine Formulierung wie z. B. eine „Ausführungsform“ impliziert nicht, dass eine solche Ausführungsform für die Technologie des Gegenstands wesentlich ist oder dass eine solche Ausführungsform für alle Konfigurationen der Technologie des Gegenstands gilt. Eine Offenbarung, die sich auf eine Implementierung bezieht, kann für alle Aspekte oder für einen oder mehrere Aspekte gelten. Eine Implementierung kann ein oder mehrere Beispiele bereitstellen. Eine Formulierung wie z. B. eine „Ausführungsform“ kann sich auf eine oder mehrere Implementierungen beziehen, und umgekehrt. Eine Formulierung wie z. B. eine „Konfiguration“ impliziert nicht, dass eine solche Konfiguration für die Technologie des Gegenstands wesentlich ist oder dass eine solche Konfiguration für alle Konfigurationen der Technologie des Gegenstands gilt. Eine Offenbarung, die sich auf eine Konfiguration bezieht, kann für alle Konfigurationen oder für eine oder mehrere Konfigurationen gelten. Eine Konfiguration kann ein oder mehrere Beispiele bereitstellen. Eine Formulierung wie z. B. eine „Konfiguration“ kann sich auf eine oder mehrere Konfigurationen beziehen, und umgekehrt.
-
Das Wort „beispielhaft“ ist hier so verwendet, dass es „als ein Beispiel oder eine Veranschaulichung dienend“ bedeutet. Ein Aspekt oder eine Konstruktion, die hier als „beispielhaft“ beschrieben ist, ist nicht notwendigerweise als anderen Aspekten oder Konstruktionen gegenüber bevorzugt oder vorteilhaft zu betrachten.