-
GEBIET DER ERFINDUNG
-
Die Ausführungsformen der Erfindung betreffen einen Schätzmechanismus zum Festlegen der Reihenfolge, in der die Daten von einem Festkörperlaufwerk (SSD) an einen Host zurückzuschicken sind.
-
HINTERGRUND
-
Ein Festkörperlaufwerk (SSD) ist eine Datenspeichervorrichtung, die Anordnungen integrierter Schaltungen als Speichereinheiten verwendet, um Daten dauerhaft zu speichern. Die SSD-Technik verwendet elektronische Schnittstellen, die mit herkömmlichen Festplattenlaufwerken (HDDs) mit Block-Eingabe/Ausgabe (Block-E/A) kompatibel sind. Die SSDs verwenden keine beweglichen mechanischen Komponenten, was sie von herkömmlichen HDDs unterscheidet, die die Daten unter Verwendung beweglicher Lese-Schreib-Köpfe auf rotierenden Magnetplatten speichern.
-
Gegenwärtig verwenden die meisten SSD einen NAND-basierten Flash-Speicher, der eine Form eines nichtflüchtigen Speichers ist, der die Daten beim Fehlen von Leistung hält und der elektrisch gelöscht und neu programmiert werden kann (da der Flash-Speicher aus dem EEPROM entwickelt wurde). Ferner kombinieren Hybridlaufwerke die Merkmale sowohl der SSDs als auch der HDDs in derselben Einheit, die typischerweise ein Festplattenlaufwerk und einen SSD-Cache enthält, um die Leistung für Daten, auf die häufig zugegriffen wird, zu verbessern. Der Flash-Speicher speichert die Informationen in einer Anordnung aus Speicherzellen, die aus Floating-Gate-Transistoren hergestellt sind.
-
Die SSD-Implementierungen von Unternehmen, z. B. in Servern, besitzen typischerweise andere und höhere Leistungsstandards als Desktop- und Laptop-HDD- und SSD-Laufwerke. Das heißt, die SSDs der Unternehmen müssen typischerweise eine relativ hohe E/A-Leistung bereitstellen. Deshalb ist die optimale reine Lese- und gemischte Lese-/Schreibleistung ein Ziel vieler SSD-Entwicklungsingenieure.
-
ZUSAMMENFASSUNG DER AUSFÜHRUNGSFORMEN DER ERFINDUNG
-
Die Ausführungsformen der Erfindung sind auf das Verwalten von Datenrücksendungen an einen Host in Erwiderung auf Lesebefehle für die Verwendung in einer Festkörperlaufwerks-Speichervorrichtung (SSD-Speichervorrichtung) gerichtet. Die optimale reine Lese- und gemischte Lese-/Schreibleistung wird durch die Reihenfolge beeinflusst, in der die Daten an den Host zurückgeschickt werden, wobei die Reihenfolge, in der die Daten an den Host zurückgeschickt werden, nicht notwendigerweise der Reihenfolge entspricht, in der der Host die Lesebefehle sendet.
-
Gemäß einer Ausführungsform ist eine Operationsüberwachungseinrichtung eines Festkörperlaufwerks (SSD) dazu konfiguriert, Zähler zu managen, die verwendet werden, um die Metriken zu managen, die den geschätzten Zeitraum charakterisieren, um eine Leseoperation in einem entsprechenden Flash-Chip abzuschließen, d. h. die Betriebskosten. Die Operationsüberwachungseinrichtung startet einen Zeitgeber, der ein periodisches Ereignis erzeugt, das die Zähler dekrementiert. Der in jedem Zähler gespeicherte Wert wird für die dem entsprechenden Chip zugesandten Flash-Operationen erzeugt und basiert im Allgemeinen auf der Historie und dem physikalischen Ort der Operation. Wann immer ein Lesebefehl für die Zusendung zu einem speziellen Chip geplant wird, kann z. B. die Controller-Firmware die Zeitschätzung für diese spezielle Flash-Leseoperation wiedergewinnen. Basierend auf diesen Informationen ist die optimale Reihenfolge, in der die Daten an den Host zurückzuschicken sind, bestimmbar. Diese Reihenfolge wird verwendet, um die Datenübertragungen zu dem Host zu planen und zu programmieren, wobei eine optimale Reihenfolge einen Ablauf beschreibt, bei dem eine minimale Anzahl von Lesebefehlen durch andere Lesebefehle blockiert wird, wenn die Blockiererbefehle ihre entsprechenden Daten nicht verfügbar haben, damit sie an den Host zurückgeschickt werden.
-
Gemäß einer Ausführungsform eines Verfahrens zum Verwalten der Rücksendungen an einen Host in Erwiderng auf die durch eine SSD-Vorrichtung empfangenen Lesebefehle wird ein Datenbefehl von einem Host empfangen und werden die Betriebskosten für jede Operation, die einem entsprechenden nichtflüchtigen Speicherchip zugeschickt wird, erzeugt. Die jeweiligen Betriebskosten werden basierend auf einem Zeitgeber dekrementiert, der ein periodisches Ereignis (z. B. ein Taktticken) erzeugt. Folglich nehmen die in dem Zähler dargestellten Betriebskosten mit der Zeit ab, genauso wie die Zeit zum Lesen des entsprechenden Chips mit der Zeit abnimmt. Die Gesamtkosten des Lesebefehls, der von dem Host empfangen worden ist, werden basierend auf den aktuellen Betriebskosten für jede Operation, die jedem jeweiligen nichtflüchtigen Speicherchip zugesandt wird, der dem Lesebefehl zugeordnet ist, berechnet. Basierend auf den Gesamtkosten des Lesebefehls wird die Reihenfolge, in der die angeforderten Daten zu dem Host zurückzuschicken sind, bezüglich der anderen von dem Host empfangenen Lesebefehle bestimmt.
-
Es ist nicht beabsichtigt, dass die in dem Abschnitt der Zusammenfassung der Ausführungsformen der Erfindung erörterten Ausführungsformen alle hier erörterten Ausführungsformen vorschlagen, beschreiben oder lehren. Folglich können die Ausführungsformen der Erfindung zusätzliche oder andere Merkmale als jene, die in diesem Abschnitt erörtert sind, enthalten.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Die Ausführungsformen der Erfindung sind in den Figuren der beigefügten Zeichnungen beispielhaft und nicht einschränkend veranschaulicht, wobei sich in den Figuren der beigefügten Zeichnungen gleiche Bezugszeichen auf ähnliche Elemente beziehen und worin:
-
1 ein Blockschaltplan ist, der eine Beispiel-Betriebsumgebung veranschaulicht, in der die Ausführungsformen der Erfindung implementiert sein können;
-
2 ein Blockschaltplan ist, der einen Abschnitt einer Beispiel-Betriebsumgebung veranschaulicht, die sich auf die Speicheroperations-Überwachungseinrichtung konzentriert, in der die Ausführungsformen der Erfindung implementiert sein können;
-
3 ein Blockschaltplan ist, der eine Speicheroperations-Überwachungseinrichtung gemäß einer Ausführungsform der Erfindung veranschaulicht; und
-
4 ein Ablaufplan ist, der ein Verfahren zum Managen der Rücksendungen an einen Host gemäß einer Ausführungsform der Erfindung veranschaulicht.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Es werden die Herangehensweisen zum Managen der Rücksendungen von Daten an einen Host in Ansprechen auf die Lesebefehle von dem Host für die Verwendung in einer Festkörperlaufwerks-Speichervorrichtung (SSD-Speichervorrichtung) beschrieben. In der folgenden Beschreibung sind für die Zwecke der Erklärung zahlreiche spezifische Einzelheiten dargelegt, um ein umfassendes Verständnis der hier beschriebenen Ausführungsformen der Erfindung bereitzustellen. Es wird jedoch erkannt, dass die hier beschriebenen Ausführungsformen der Erfindung ohne diese spezifischen Einzelheiten praktiziert werden können. In anderen Fällen sind wohlbekannte Strukturen und Vorrichtungen in der Form eines Blockschaltplans gezeigt, um das unnötige Verbergen der hier beschriebenen Ausführungsformen der Erfindung zu vermeiden.
-
DIE FESTKÖRPERLAUFWERKS-KONFIGURATION
-
Die Ausführungsformen der Erfindung können verwendet werden, um eine Festkörperlaufwerks-Speichervorrichtung (SSD-Speichervorrichtung) zu managen. 1 ist ein Blockschaltplan, der eine Beispiel-Betriebsumgebung veranschaulicht, in der die Ausführungsformen der Erfindung implementiert sein können. 1 veranschaulicht eine generische SSD-Architektur 100, wobei ein SSD 102 kommunikationstechnisch durch eine primäre Kommunikationsschnittstelle 106 an eine Host-Vorrichtung 104 gekoppelt ist. Die Ausführungsformen der Erfindung sind nicht auf eine Konfiguration eingeschränkt, wie sie in 1 dargestellt ist, stattdessen können die Ausführungsformen auf Betriebsumgebungen anwendbar sein, die von den SSDs verschieden sind, wobei sie in SSD-Konfigurationen implementiert sein können, die von der verschieden sind, die in 1 veranschaulicht ist. Die Ausführungsformen können z. B. implementiert sein, um in anderen Umgebungen zu arbeiten, die sich auf nichtflüchtige Speicherkomponenten für das Schreiben und Lesen der Daten stützen.
-
Die Host-Vorrichtung 104 (oder einfach der ”Host”) repräsentiert weitgehend irgendeinen Typ von Computer-Hardware oder -Software, der unter anderem Daten-E/A-Anforderungen oder -Aufrufe an eine oder mehrere Speichervorrichtungen ausführt. Der Host 104 kann z. B. ein Betriebssystem sein, das in einem Computer, einem Tablet, einem Mobiltelefon oder im Allgemeinen irgendeinem Typ von Computer-Vorrichtung, der Speicher enthält oder mit Speicher wechselwirkt, ausgeführt wird. Die primäre Schnittstelle 106, die die Host-Vorrichtung 104 an das SSD 102 koppelt, kann z. B. ein innerer Bus eines Computers oder ein Kommunikationskabel oder eine drahtlose Kommunikationsverbindung oder dergleichen sein.
-
Das in 1 veranschaulichte Beispiel-SSD 102 enthält eine Schnittstelle 110, einen Controller 112 (z. B. einen Controller, der Firmware-Logik besitzt), einen Adressierungs-Funktionsblock 114, einen Datenpuffer-Cache 116, einen Fehlerkorrekturcode (ECC) 118 und einen oder mehrere nichtflüchtige Speicherkomponenten 120a, 120b, 120n.
-
Die Schnittstelle 110 ist ein Wechselwirkungspunkt zwischen den Komponenten, nämlich dem SSD 102 und der Host-Vorrichtung 104 in diesem Kontext, wobei sie sowohl auf der Ebene der Hardware als auch auf der Ebene der Software anwendbar ist. Dies erlaubt einer Komponente, über ein Eingabe-/Ausgabesystem und ein zugeordnetes Protokoll mit anderen Komponenten zu kommunizieren. Eine Hardware-Schnittstelle wird typischerweise durch die mechanischen, elektrischen und logischen Signale an der Schnittstelle und das Protokoll, um sie zu sequentialisieren, beschrieben. Einige nicht einschränkende Beispiele häufiger und Standard-Schnittstellen enthalten die SCSI (die Schnittstelle kleiner Computersysteme), die SAS (die seriell angeschlossene SCSI) und den SATA (den seriellen ATA).
-
Ein SSD 102 enthält einen Controller 112, der die Elektronik enthält, die eine Brücke von den nichtflüchtigen Speicherkomponenten (z. B. dem NAND-Flash) zu dem Host bildet, wie z. B. von dem nichtflüchtigen Speicher 120a, 120b, 120n zu der Host-Vorrichtung 104. Der Controller ist typischerweise ein eingebetteter Prozessor, der Code auf Firmware-Ebene ausführt, und ist ein wichtiger Faktor der SSD-Leistung.
-
Der Controller 112 bildet mit dem nichtflüchtigen Speicher 120a, 120b, 120n über einen Adressierungs-Funktionsblock 114 eine Schnittstelle. Die Adressierungsfunktion 114 arbeitet z. B., um die Abbildungen zwischen den logischen Blockadressen (LBAs) von dem Host 104 auf eine entsprechende physikalische Blockadresse in dem SSD 102, nämlich auf den nichtflüchtigen Speicher 120a, 120b und 120n des SSD 102, zu managen. Weil die Seite des nichtflüchtigen Speichers und die Host-Sektoren unterschiedliche Größen besitzen, muss ein SSD eine Datenstruktur aufbauen und aufrechterhalten, die es ihm ermöglicht, zwischen den Host-Schreibdaten in einen oder den Host-Lesedaten aus einem Sektor und der Seite des physikalischen nichtflüchtigen Speichers, in der die Daten tatsächlich angeordnet sind, zu übersetzen. Diese Tabellenstruktur oder ”Abbildung” kann für eine Sitzung im flüchtigen Speicher 122 des SSD, wie z. B. einem DRAM oder irgendeiner anderen lokalen flüchtigen Speicherkomponente, die für den Controller 112 und die Adressierung 114 zugänglich ist, gebildet und aufrechterhalten werden. Alternativ kann die Tabellenstruktur beständiger über die Sitzungen in dem nichtflüchtigen Speicher des SSD, wie z. B. dem nichtflüchtigen Speicher 120a, 120b, 120n, aufrechterhalten werden.
-
Die Adressierung 114 tritt zusätzlich zu dem nichtflüchtigen Speicher 120a, 120b, 120n mit dem Datenpuffer-Cache 116 und dem Fehlercode (ECC) 118 in Wechselwirkung. Der Datenpuffer-Cache 116 eines SSD 102 enthält typischerweise DRAM als Cache, ähnlich zu dem Cache in Festplattenlaufwerken. Der Datenpuffer-Cache 116 dient sowohl als ein Puffer oder Zwischenspeicher-Bereich für die Übertragung der Daten zu den und von den nichtflüchtigen Speicherkomponenten als auch als ein Cache zum Beschleunigen künftiger Anforderungen für die im Cache gespeicherten Daten. Der Datenpuffer-Cache 116 ist typischerweise mit flüchtigem Speicher implementiert, so dass die darin gespeicherten Daten nicht permanent in dem Cache gespeichert sind, d. h. die Daten sind nicht beständig.
-
Der ECC 118 ist ein System des Hinzufügens redundanter Daten oder Paritätsdaten zu einer Nachricht, so dass sie durch einen Empfänger wiederhergestellt werden kann, selbst wenn eine Anzahl von Fehlern, entweder während des Prozesses der Übertragung oder im Speicher, eingeführt würde.
-
Schließlich enthält das SSD 102 einen oder mehrere nichtflüchtige Speicherkomponenten 120a, 120b, 120n. Für ein nicht einschränkendes Beispiel können die nichtflüchtigen Speicherkomponenten 120a, 120b, 120n als Flash-Speicher (z. B. NAND- oder NOR-Flash) oder andere Typen eines jetzt oder in der Zukunft verfügbaren Festkörperspeichers implementiert sein. Die nichtflüchtigen Speicherkomponenten 120a, 120b, 120n sind die tatsächlichen elektronischen Speicherkomponenten, in denen die Daten ständig gespeichert sind. Die nichtflüchtigen Speicherkomponenten 120a, 120b, 120n des SSD 102 können als das Analogon zu den Festplatten in den Festplattenlaufwerks-Speichervorrichtungen (HDD-Speichervorrichtungen) betrachtet werden.
-
Es werden die Ausführungsformen der Erfindung beschrieben, die die Rücksendungen von Daten an einen Host in Ansprechen auf die Lesebefehle von dem Host managen. Folglich ist eine optimale Reihenfolge, in der die den Lesebefehlen zugeordneten Daten an den Host zurückgeschickt werden sollten, bestimmbar und ist eine leistungsfähigere SSD-Speichervorrichtung erreichbar.
-
DIE SPEICHEROPERATIONS-ÜBERWACHUNGSEINRICHTUNG
-
2 ist ein Blockschaltplan, der einen Abschnitt einer Beispiel-Betriebsumgebung veranschaulicht, der sich auf eine Speicheroperations-Überwachungseinrichtung konzentriert, in der eine Ausführungsform der Erfindung implementiert sein kann. Die Beispiel-Betriebsumgebung 200 enthält eine Speicheroperations-Überwachungseinrichtung 202 (die im Folgenden als ”Operationsüberwachungseinrichtung” bezeichnet wird), die kommunikationstechnisch an eine CPU 204 gekoppelt ist. Die Operationsüberwachungseinrichtung 202 ist ferner an einen oder mehrere Kanäle 206a, 206b, 206n gekoppelt, wobei jeder Kanal an einen oder mehrere nichtflüchtige Speicherchips gekoppelt ist. Für Beispielzwecke stellt 2 den Kanal 206a, der an den Chip 208a0, den Chip 208a1 und den Chip 208a2 gekoppelt ist und mit dem Chip 208a0, dem Chip 208a1 und dem Chip 208a2 in Verbindung steht; den Kanal 206b, der an den Chip 208b0, 208b1 und 208b2 gekoppelt ist und mit dem Chip 208b0, 208b1 und 208b2 in Verbindung steht; und den Kanal 206n, der an den Chip 208n0, 208n1 und 208n2 gekoppelt ist und mit dem Chip 208n0, 208n1 und 208n2 in Verbindung steht, dar. Es wird angegeben, dass die Anzahl der Kanäle und der entsprechenden Speicherchips, die in 2 dargestellt ist, den Zwecken eines Beispiels dient und die Ausführungsformen der Erfindung nicht auf die dargestellte genaue Konfiguration eingeschränkt sind.
-
Gemäß den Ausführungsformen arbeitet die Operationsüberwachungseinrichtung 202, wie unter Bezugnahme auf 3 beschrieben ist. Im Allgemeinen kann die Operationsüberwachungseinrichtung 202 als ein Hardware-Beschleuniger betrachtet werden, der konfiguriert ist, den Controller beim Ausführen ausführbarer Aufgaben zu unterstützen. Gemäß einer Ausführungsform ist die Operationsüberwachungseinrichtung 202 in dem Controller 112 (1) implementiert, wobei aber die Praxis der Ausführungsformen der Erfindung nicht so eingeschränkt ist. Deshalb könnte die Operationsüberwachungseinrichtung 202 im Wesentlichen irgendwo innerhalb des SSD 102 (1) implementiert sein, z. B. sogar in einem oder mehreren der Speicherchips 208a0–208n1. Die Operationsüberwachungseinrichtung 202 kann in Firmware oder in Hardware implementiert sein. Wie unter Bezugnahme auf 3 ausführlicher beschrieben wird, funktioniert die Operationsüberwachungseinrichtung 202 im Allgemeinen als eine Schätzeinrichtungsfunktion.
-
Die Betriebsumgebung 200 kann eine dedizierte oder gemeinsam benutzte CPU 204 enthalten, um die Anweisungen, die Prozeduren usw. auszuführen, die der Funktionalität der Operationsüberwachungseinrichtung 202 zugeordnet sind. Die CPU 204 ist ein Prozessor des SSD 102, der eine ausführbare Logik ausführen kann, um den den Speicherchips 208a0–208n1 zugeordneten Operationen zu dienen. Ähnlich bildet jeder der Kanäle 206a, 206b, 206n sowohl mit einem anderen als auch mit seinem jeweiligen Speicherchip eine Schnittstelle. Ein Kanal kann als eine Kommunikations-”Pipeline” zwischen mehreren Entitäten oder Komponenten betrachtet werden. Deshalb funktionieren die Kanäle 206a, 206b, 206n des SSD 102 als Kommunikations- und Betriebsleitungen zwischen der Operationsüberwachungseinrichtung 202 und den jeweiligen Speicherchips jedes Kanals und zwischen der CPU 204 und den jeweiligen Speicherchips jedes Kanals.
-
Der Flash-Speicher ist ein Typ eines nichtflüchtigen Speichers. Der Flash-Speicher ist ein Typ eines elektrisch löschbaren programmierbaren Festwertspeichers (EEPROM). Ein Speicherchip ist eine Hardware-Einheit eines nichtflüchtigen Speichers. Ein Flash-Speicherchip ist ein Chip einer diskreten integrierten Schaltung, wobei ein derartiger Chip wenigstens eine integrierte Flash-Speicher-Schaltung enthält. Die Chips sind ein Medium auf unterer Ebene, in dem die Daten in dem Flash-Speicher gespeichert sind.
-
3 ist ein Blockschaltplan, der eine Speicheroperations-Überwachungseinrichtung gemäß einer Ausführungsform der Erfindung veranschaulicht. Die Speicheroperations-Überwachungseinrichtung 202 nach 3 enthält mehrere Chip-Zähler, wobei jeder von ihnen einem oder mehreren entsprechenden Speicherchips zugeordnet ist. Die Chip-Zähler 302a0, 302a1, 302a2 sind z. B. den entsprechenden Chips 208a0, 208a1, 208a2 (2) zugeordnet; die Chip-Zähler 302b0, 302b1, 302b2 sind den entsprechenden Chips 208b0, 208b1, 208b2 (2) zugeordnet; und die Chip-Zähler 302n0, 302n1, 302n2 sind den entsprechenden Chips 208n0, 208n1, 208n2 (2) zugeordnet. Wie bei der Anzahl der Speicher-Chips wird angegeben, dass die in 3 dargestellte Anzahl der Chip-Zähler den Zwecken eines Beispiels dient und dass die Ausführungsformen der Erfindung nicht auf die dargestellte genaue Konfiguration und Anzahl der Chip-Zähler eingeschränkt ist.
-
Die Chip-Zähler 302a0–302n2 sind Datenstrukturen, die verwendet werden, um den Abschlusszeitpunkt zu verfolgen, der den Leseoperationen in den entsprechenden Chips 208a0–208n2 (2) zugeordnet ist. Der zugeordnete Zeitpunkt, um eine Leseoperation in einem speziellen Chip abzuschließen, ist durch eine ”Betriebskosten”-Metrik charakterisiert, die in dem entsprechenden Chip-Zähler gespeichert ist. Die Betriebskostenwerte, die in den Chip-Speichern 302a0–302n2 gespeichert sind, werden für jede den Chips 208a0–208n2 zugesandte Flash-Operation erzeugt und basieren gemäß einer Ausführungsform auf der Chip-Historie und dem physikalischen Ort der Operation.
-
Die Speicheroperations-Überwachungseinrichtung 202 enthält einen Zeitgeber 304, der den Chip-Zählern 302a0–302n2 zugeordnet ist. Der Zeitgeber 304 erzeugt ein periodisches Ereignis, wie z. B. ein Taktticken, das alle Chip-Zähler 302a0–302n2 dekrementiert. Für ein nicht einschränkendes Beispiel kann der Zeitgeber 304 ein 1-μs-Taktticken erzeugen. Sobald der Zeitgeber 304 initialisiert ist, tickt er ungeachtet irgendeines Lesebefehls. Der Zeitgeber 304 kann z. B. als ein digitaler Zähler implementiert sein, der mit einer festen Frequenz dekrementiert, die oft konfigurierbar ist. Hochentwickeltere Zeitgeber können eine Vergleichslogik verwenden, um den Zeitgeberwert mit einem spezifischen Wert, der durch Software oder eine andere Logik festgelegt ist, zu vergleichen, die irgendeine Handlung auslöst, wenn der Zeitgeberwert dem vorgegebenen Wert entspricht. Dieser Typ des Zeitgebers kann z. B. verwendet werden, um einen Impuls zu erzeugen. Gemäß einer Ausführungsform wird ein digitaler Zähler unter Verwendung einer Vergleichslogik, um einen Impuls zu erzeugen, verwendet, um die Werte in den Chip-Zählern 302a0–302n2 zu dekrementieren. Der verwendete Typ des Zeitgebers kann jedoch von Implementierung zu Implementierung variieren.
-
Folglich schätzt und managt die Operationsüberwachungseinrichtung 202 den Abschlusszeitpunkt der Flash-Leseoperationen in allen Flash-Chips, die ein Festkörperlaufwerk umfassen, durch das Laden der Chip-Zähler 302a0–302n2 mit den Betriebskosten und das Dekrementieren dieser Betriebskostenwerte bei jedem Taktticken vom Zeitgeber 304.
-
Die Speicheroperations-Überwachungseinrichtung 202 enthält ein oder mehrere Programmierkostenregister 314a, 314b, 314c, 314n. Die Programmierkostenregister 314a–314n werden verwendet, um dem Zeitraum Rechnung zu tragen, der erforderlich ist, um eine Seitenprogrammieroperation abzuschließen, die ansonsten als eine Schreiboperation bekannt ist. Die Anzahl der Programmkostenregister, die in 3 dargestellt ist, dient den Zwecken eines Beispiels, wobei die Ausführungsformen der Erfindung nicht auf die dargestellte genaue Konfiguration und Anzahl der Programmierkostenregister eingeschränkt ist. Die Anzahl der Kostenregister kann eine Sache der Konstruktionswahl sein und kann z. B. auf der Architektur des nichtflüchtigen Speichers 120a–120n (1) und des SSD 102 (1) basieren. Gemäß einer Ausführungsform werden jedoch vier Kostenregister verwendet, um vier mögliche Werte für die Programmierkosten zu halten, wobei derartige Programmierkostenwerte der Programmierungsvariation aufgrund des Seitenorts innerhalb des nichtflüchtigen Speichers 120a–120n Rechnung tragen. Die Werte der allgemeinen Programmierkostenregister 314a–314n können von dem nichtflüchtigen Speicher 120a–120n vorgegeben sein, wobei diese Werte aber basierend auf dem relevanten Ort in dem nichtflüchtigen Speicher, an dem die angeforderten Daten gespeichert sind, basierend auf dem Typ des nichtflüchtigen Speichers und dergleichen variieren.
-
Die Operationsüberwachungseinrichtung 202 enthält ein Löschkostenregister 310 und ein Lesekostenregister 312. Das Löschkostenregister 310 wird verwendet, um einen Wert zu speichern, der den Zeitraum repräsentiert, der erforderlich ist, um eine Löschoperation abzuschließen, während das Lesekostenregister 312 verwendet wird, um einen Wert zu speichern, der den Zeitraum repräsentiert, der erforderlich ist, um eine Löschoperation abzuschließen. In 3 sind für die Zwecke der Einfachheit ein einziges Löschkostenregister 310 und ein einziges Lesekostenregister 312 gezeigt, wobei die Ausführungsformen der Erfindung für eine relativ einfache Implementierung der hier beschriebenen umfassenderen Lehren implementiert sein könnten, wie gezeigt ist. Das heißt, eine einfache Implementierung kann einfache Register verwenden, um die verschiedenen Kosteninformationen zu speichern.
-
Die Lese-, Lösch- und Programmierkosten verändern sich jedoch während der Lebensdauer eines SSD und über die unterschiedlichen Blöcke innerhalb eines Chips 208a0–208n2. Deshalb können die Implementierungen der Ausführungsformen in dem Niveau der Granularität variieren, mit dem die Kosten geschätzt werden. Deshalb kann eine relativ komplexere Implementierung der Ausführungsformen einen Speicher 308 verwenden, um viele Variationen der Lese-, Lösch- und Programmierkosten auf Chip-, Block- oder Seitenbasis zu speichern, wobei sich diese Kosten während der Lebensdauer des Laufwerks ändern. Es ist wahrscheinlich, dass ein größerer Speicher 308, der viele Variationen der Kostenmetriken speichert, eine genauere Kostenschätzung erzeugt, so dass die Kostengranularität gegen die Schätzungsgenauigkeit ein Kompromiss ist, der auf Implementierungsebene gemanagt werden kann.
-
Ein Grund, das Programmierkosten (d. h. Schreiboperationskosten), die Lesekosten und die Löschkosten betrachtet werden, ist, dass der Zeitpunkt des Abschlusses einer Leseoperation in einem nichtflüchtigen Speicher-Chip 208a0–208n2 und folglich die optimale Reihenfolge, in der die Daten an den Host 104 (1) zurückgeschickt werden, durch die Schreib-, Lösch- und Leseoperationen beeinflusst wird, die gleichzeitig mit den Leseoperationen ausgeführt werden, z. B. sowohl aufgrund von Host-Schreiboperationen und Datenmüll-Sammeloperationen (d. h. einem zufälligen Mischszenario) als auch aufgrund von Leseoperationen aufgrund anderer Host-Befehle, die auf denselben Chip abzielen (d. h. ein zufälliges Leseszenario). Deshalb entspricht die optimale Reihenfolge der Befehle, in der die Daten an den Host 104 (1) zurückgeschickt werden sollten, sowohl wenigstens teilweise aufgrund zufälliger Misch- und zufälliger Leseszenarios als auch aufgrund von Hintergrundoperationen nicht notwendigerweise der Reihenfolge, in der der Host die Befehle an das SSD 102 (1) sendet.
-
Die Steuerlogik 306 der Operationsüberwachungseinrichtung 202 ist die Logik, die ausgeführt wird, um die Chip-Zähler 302a0–302n2 zu füllen und zu managen und um die verschiedenen Register, wie z. B. sowohl die Programmierkostenregister 314a–314n, das Löschkostenregister 310 und das Lesekostenregister 312 als auch irgendwelche anderen Register, die in alternativen Ausführungsformen der Operationsüberwachungseinrichtung 202 implementiert sein können, zu konfigurieren. Die Steuerlogik 306 kann außerdem andere Aufgaben und Berechnungen bei der Unterstützung des Bestimmens einer optimalen Reihenfolge, in der die Daten an den Host 104 zurückzuschicken sind, ausführen, wie z. B. die Mittelung verschiedener Betriebskosten (z. B. der Löschkosten, der Lesekosten) über mehrere Chips 208a0–208n2 (2) oder über mehrere nichtflüchtige Speicher 120a–120n (1), wie z. B. das Einstellen der Registeroperationskosten basierend auf aktuellen oder tatsächlichen Operationsabschlusszeitpunkten und dergleichen. Es ist nicht beabsichtigt, dass der Umfang der Steuerlogik 306 eingeschränkt ist, wobei die Erweiterung einer derartigen Logik, um weitere Funktionen auszuführen, spezifisch in Betracht gezogen wird.
-
Die Operationsüberwachungseinrichtung 202 enthält eine oder mehrere Kanalbussteuerungen 316a, 316b, 316n, wobei jede einem jeweiligen Kanal 206a, 206b, 206n (2) entspricht. Gemäß einer Ausführungsform sind die Kanalbussteuerungen 316a–316n konfiguriert, den Anfang und das Ende der Operationen in den Chips 208a0–208n2 (2) zu detektieren, z. B. durch das Ausspionieren der Kanalbusse (2), über die die Kanäle 206a–206n die Operationen zu den Chips 208a0–208n2 erleichtern. Derartige detektierte Operationsaktivitäten können durch die Steuerlogik 306 verwendet werden, um die Betriebskostenwerte der Chip-Zähler 302a0–302n2 zu füllen und zu managen.
-
Der Speicher 308 der Operationsüberwachungseinrichtung 202 ist ein Speicher, der für die Verwendung durch die Operationsüberwachungseinrichtung 202 für verschiedene Zwecke verfügbar ist, von denen einige hier im Kontext der gewünschten Kostenmetrik-Granularität und der Selbsteinstellungsmerkmale ausführlicher beschrieben sind, die in der Operationsüberwachungseinrichtung 202 verkörpert sein können. Der Typ und die Form des Speichers 308 sind nicht eingeschränkt, wobei sie basierend auf den Konstruktionseinschränkungen, den Zielen und dergleichen von Implementierung zu Implementierung variieren können.
-
EIN VERFAHREN ZUM MANAGEN DER RÜCKSENDUNGEN AN EINEN HOST
-
4 ist ein Ablaufplan, der ein Verfahren zum Managen der Rücksendungen an einen Host gemäß einer Ausführungsform der Erfindung veranschaulicht. Der in 4 veranschaulichte Prozess kann in einem SSD, wie z. B. dem SSD 102 (1), implementiert sein. Spezifischer kann der in 4 veranschaulichte Prozess im Controller 112 (1) des SSD 102 gemäß einer Ausführungsform implementiert sein. Ferner ist gemäß einer Ausführungsform der Prozess nach 4 in der Speicheroperations-Überwachungseinrichtung 202 (2) implementiert. Die Prozesslogik kann als analoge oder digitale Hardware-Schaltungsanordnung innerhalb des SSD 102 oder als Firmware-Anweisungen, die durch einen Prozessor, wie z. B. die CPU 204 (2) oder eine MPU, innerhalb des SSD 102 ausgeführt werden, implementiert sein.
-
Im Block 402 nach 4 wird ein Datenlesebefehl von einem Host empfangen. Der Datenlesebefehl wird z. B. von einer Host-Vorrichtung 104 (1) über die Schnittstelle 110 (1) des SSD 102 (1) am Controller 112 (1) empfangen. In einem Warteschlangen-Befehlssystem kann ein Host viele Lese- und Schreibbefehle an eine Speichervorrichtung, wie z. B. das SSD 102, senden, d. h. mehr, als das SSD 102 gleichzeitig und sofort verarbeiten kann. Insbesondere ist die Reihenfolge, in der die Befehle durch den Host gesendet werden, nicht immer die für die beste SSD-Leistung beste Reihenfolge, in der mit den Daten dem Host zu antworten ist oder in der die Daten an den Host zurückzuschicken sind. Dies ist teilweise so, weil die Latenzzeit, um die Daten aus den Flash-Speicherchips zu lesen, z. B. basierend darauf variiert, ob der Ziel-Chip inaktiv ist oder nicht und ob der Ziel-Chip mit einer Lösch-, Seitenprogrammier- oder Leseoperation beschäftigt ist.
-
Der Controller 112 (1) besitzt ”Kenntnis” dessen, wo die Daten innerhalb des nichtflüchtigen Speichers 120a–120n (1) gespeichert sind. Folglich kann der Controller 112 die Daten in Ansprechen auf eine Anforderung in der Reihenfolge, in der die Anforderungen empfangen werden, aus dem Speicher holen, wobei aber unterschiedliche Operationen in Abhängigkeit z. B. davon, an was und wie der nichtflüchtiger Speicher momentan arbeitet, was die vorherigen Operationen des Speichers waren, wo sich die relevanten Daten in dem Speicher befinden und dergleichen, unterschiedliche Zeiträume erfordern. Signifikant bestimmen die hier beschriebenen Ausführungsformen für Leistungszwecke eine optimale Reihenfolge, in der die Daten an den Host zurückzuschicken sind. Wenn im Gegensatz eine nicht optimale Reihenfolge des Zurückschickens verwendet wird, dann ist es oft erforderlich, dass das System länger und/oder öfter wartet, bis andere Speicheroperationen abgeschlossen sind, bevor die Daten an den Host zurückgeschickt werden können.
-
Im Block 404 werden für jede einem jeweiligen nichtflüchtigen Speicherchip zugesandte Operation die Betriebskosten erzeugt. Die Steuerlogik 306 (3) der Speicheroperations-Überwachungseinrichtung 202 (2) bildet und speichert die Betriebskosten für die Ziel-Chips (z. B. einen oder mehrere der Chips 208a0–208n2 nach 2) in entsprechenden Chip-Zählern 302a0–302n2 (3) basierend auf den Werten des Löschkostenregisters 310 (3), des Lesekostenregisters 312 (3) und der Programmierkostenregister 314a–314n (3) und basierend darauf, was die Ziel-Speicherchips momentan verarbeiten oder in der Warteschlange haben. Es wird angegeben, dass die Betriebskosten in Ansprechen auf die Leseanforderung von dem Host, aber nicht notwendigerweise in Ansprechen auf die Leseanforderung von dem Host, erzeugt werden können.
-
Gemäß einer Ausführungsform werden die in den Zählern gespeicherten Betriebskostenwerte für jede den Chips zugesandte Operation des nichtflüchtigen Speichers für einen speziellen Lesebefehl automatisch erzeugt. Wie vorher beschrieben worden ist, kann die Steuerlogik 306 (3) die durch die Kanalbus-Controller 316a–316n (3) von den jeweiligen Kanalbussen erhaltenen Informationen, z. B. die Anfangs- und Endzeitpunkte der Operationen, verwenden, um die aktuellen Werte für die verschiedenen Chip-Zähler 302a0–302n2 (3) in Ansprechen auf einen Lesebefehl zu berechnen. Alternativ werden die in den Zählern gespeicherten Betriebskostenwerte für jeden nichtflüchtigen Speicherchip automatisch erzeugt und ständig gemanagt, wobei sie deshalb verfügbar sind, wenn sie in Ansprechen auf einen Lesebefehl von dem Host angefordert werden. Folglich kann die Steuerlogik 306 die durch die Kanalbus-Controller 316a–316n von den jeweiligen Kanalbussen erhaltenen Informationen verwenden, um die Initialisierung und das Löschen der verschiedenen Chip-Zähler 302a0–302n2 mit der Zeit auszulösen.
-
Im Block 406 werden mit der Zeit alle Betriebskosten basierend auf einem Zeitgeber, der ein periodisches Ereignis erzeugt, dekrementiert. Die für die Ziel-Chips (z. B. einen oder mehrere der Chips 208a0–208n2 nach 2) in den entsprechenden Chip-Zählern 302a0–302n2 (3) erzeugten Betriebskosten werden z. B. mit der Zeit basierend auf dem Taktticken des Zeitgebers 304 (3) dekrementiert. Wird für die Erörterung angenommen, dass ein oder mehrere Chips aktuell mit einer Lösch-, Lese- oder Schreiboperation beschäftigt sind, dann spiegeln die Betriebskosten in den entsprechenden Chips den Zeitraum bis zum Abschluss der jeweiligen aktuellen Operation wieder. Dann, wie die Zeit vergeht und sich die Operationen zum Abschluss bewegen, nehmen die Betriebskosten in den Chip-Zählern basierend auf dem dekrementierenden Taktticken des Zeitgebers 304 mit der Absicht ab, die Betriebskosten der aktuellen Operation übereinstimmend mit dem Abschluss der aktuellen Operation auf null zu dekrementieren.
-
Für bestimmte Typen des nichtflüchtigen Speichers, wie z. B. einen NAND-Flash, ist die maximale Datenmenge, die aus dem Speicher gelesen oder in den Speicher geschrieben werden kann, eine Seite. Eine Seite kann z. B. 8 KB der Daten umfassen. Deshalb wird ein Lese- oder Schreibbefehl oft über mehrere Chips verteilt. Beim Empfangen eines Host-Datenbefehls, der eine Leseoperation beschreibt, kann die Firmware des Controller 112 (1) den Datenbefehl in Chip-Leseoperationen aufbrechen, deren Anzahl von der Befehlslänge abhängt. Bei 8-KB-Seiten würde z. B. ein 64-KB-Lesebefehl von dem Host acht Lesevorgänge von den Chips erfordern, d. h. acht Lesevorgänge von jeweils 8 KB für einen 64-KB-Lesebefehl.
-
Im Block 408 werden die Gesamtkosten des von dem Host empfangenen Lesebefehls basierend auf den aktuellen Betriebskosten für jede einem entsprechenden nichtflüchtigen Speicherchip zugesandte Operation berechnet. Der maximale Zeitraum bis zum Abschluss aller Leseoperationen, die erforderlich sind, um jedes Datensegment von den Chips wiederzugewinnen, wird z. B. berechnet. Unter Fortsetzung des Beispiels des 64-KB-Lesebefehls werden die Betriebskosten für jeden der acht Chips, die gelesen werden müssen, um den Lesebefehl von dem Host zu erfüllen, verglichen, um den maximalen Zeitraum bis zum Abschluss dieses Satzes von Chip-Leseoperationen zu bestimmen, um die Gesamtbetriebskosten des Lesebefehls zu berechnen. Wie erörtert worden ist, berücksichtigt der Zeitraum bis zum Abschluss jeder Leseoperation, was jeder Chip momentan ausführt, wobei er berücksichtigen kann, was jeder Chip während seiner Gebrauchsdauer ausgeführt hat.
-
Während z. B. und gemäß einer Ausführungsform die Operationsüberwachungseinrichtung 202 (3) für das Bilden und Aufrechterhalten der Betriebskosten in den Chip-Zählern 302a0–302n2 (3) verantwortlich ist, wie beschrieben worden ist, ist die Firmware des Controllers 112 (1) für das Berechnen der Gesamtbetriebskosten wie im Block 408 verantwortlich. Die Verteilung der Funktionalität kann jedoch von Implementierung zu Implementierung variieren und ist nicht auf die beschriebene Verteilung eingeschränkt. In einer alternativen Ausführungsform können die Gesamtbetriebskosten z. B. durch die Operationsüberwachungseinrichtung 202 berechnet und an die Firmware des Controller 112 zurückgeschickt werden.
-
Im Block 410 wird basierend auf den im Block 408 berechneten Gesamtkosten des Lesebefehls bestimmt, in welcher Reihenfolge bezüglich der anderen von dem Host empfangenen Lesebefehle die angeforderten Daten an den Host zurückzuschicken sind. Wie erörtert worden ist, ist die Reihenfolge, in der die Befehle durch den Host gesendet werden, für die beste SSD-Leistung nicht immer die beste Reihenfolge, in der mit den Daten dem Host zu antworten ist oder in der die Daten an den Host zurückzuschicken sind. Das Verfahren nach 4 schätzt die ”beste” oder ”optimale” Reihenfolge, in der die Daten an den Host zurückzuschicken sind, ohne der Reihenfolge, in der die verschiedenen Lesebefehle von dem Host empfangen werden, die primäre Beachtung zu geben. Als solche können die Operationen, die die kleinsten Betriebskosten besitzen, d. h., die den kürzesten Zeitraum bis zum Abschluss besitzen, vor den Chip-Operationen, die größere Betriebskosten und einen längeren Zeitraum bis zum Abschluss besitzen, an den Host zurückgeschickt werden, so dass die Rücksendungen in einer Warteschlange angeordnet werden, um zu vermeiden, dass längere Operationen das Zurückschicken kürzerer Operationen blockieren.
-
Die Firmware des Controllers 112 (1) ist z. B. und gemäß einer Ausführungsform für das Bestimmen der Reihenfolge des Zurückschickens wie im Block 410 verantwortlich. Die Verteilung der Funktionalität kann jedoch von Implementierung zu Implementierung variieren und ist nicht auf die beschriebene Verteilung eingeschränkt. In einer alternativen Ausführungsform kann z. B. die Reihenfolge des Zurückschickens durch die Operationsüberwachungseinrichtung 202 berechnet und an die Firmware des Controllers 112 zurückgeschickt werden.
-
Um zusammenzufassen, wie ein Betriebskosten-Schätzprozess ablaufen kann, fragt gemäß einer Ausführungsform der Controller 112 (1) beim Empfangen eines Lesebefehls von einem Host 104 (1) die Operationsüberwachungseinrichtung 202 (2 und 3) nach den Betriebskosten jedes nichtflüchtigen Speicherchips (der Chips 208a0–208n2 nach 2), auf den durch den Lesebefehl abgezielt wird, ab. Effektiv fragt der Controller 112 die Operationsüberwachungseinrichtung 202 nach dem Zeitraum ab, um im Hinblick auf den aktuellen Betriebszustand jedes als Ziel gesetzten Chips das Lesen jedes als Ziel gesetzten Chips abzuschließen. Der Controller 112 berechnet dann die Gesamtkosten des Lesebefehls basierend auf den Betriebskosten für alle als Ziel gesetzten Chips. Aus den Gesamtkosten des Lesebefehls kann der Controller eine Reihenfolge mit hoher Leistung bestimmen, in der die Daten in Ansprechen auf den Lesebefehl bezüglich der anderen Lesebefehle von dem Host zurückzuschicken sind.
-
DIE SELBSTEINSTELLUNG DES SCHÄTZMECHANISMUS
-
Weil sich die Eigenschaften und Leistungsfähigkeiten des Flash-Speichers mit der Zeit und mit der Verwendung (z. B. dem Programmierzeitraum, dem Löschzeitraum usw.) ändern und die Betriebskostenschätzungen teilweise auf den Eigenschaften des Flash basieren, können die anfänglichen Betriebskostenwerte während der Lebensdauer des Laufwerks in Übereinstimmung mit einer Ausführungsform, in der ein Flash für den nichtflüchtigen Speicher verwendet wird, eingestellt werden. Als solche können die Werte in dem Löschkostenregister 310, dem Lesekostenregister 312 und den Programmierkostenregistern 314a–314n (3) basierend auf der Variation des Zeitraums für den Abschluss, die mit der Verwendung auftritt, d. h. basierend auf der Betriebshistorie des Flash, mit der Zeit eingestellt werden.
-
Gemäß einer Ausführungsform verfolgt die Operationsüberwachungseinrichtung 202 (2) die Anzahl, wie oft jeder Chip für die verschiedenen Operationen verwendet wird, um die Änderungen der Betriebskosten mit der Zeit aufgrund der Physik des Flash zu identifizieren. Für diesen Zweck kann die Operationsüberwachungseinrichtung 202 tatsächliche Daten von dem Flash verwenden, die von den Kanalbussteuerungen 316a–316n (3) erhalten werden können, um die Werte der Betriebskostenregister einzustellen, wie sich der Flash verschlechtert. Derartige Informationen könnten die genaue chipabhängige Verschlechterung, die jeder Flash-Speicherkomponente zugeordnet ist, bereitstellen und könnten im Speicher 308 (3) der Operationsüberwachungseinrichtung 202 gespeichert sein. Die Genauigkeit derartiger Informationen kann von Implementierung zu Implementierung variieren und könnte folglich ”pro Chip” oder sogar ”pro Block” gesammelt und gespeichert werden. Deshalb kann der Speicher 308 basierend auf dem Niveau der Genauigkeit, das für die Flash-Verschlechterungsdaten implementiert ist, dementsprechend dimensioniert sein.
-
In der vorhergehenden Beschreibung sind die Ausführungsformen der Erfindung unter Bezugnahme auf zahlreiche spezifische Einzelheiten betrieben worden, die von Implementierung zu Implementierung variieren können. Folglich ist der Satz der Ansprüche, der sich aus dieser Anmeldung ergibt, in der spezifischen Form, in der sich derartige Ansprüche ergeben, einschließlich jeder anschließenden Korrektur, der einzige und ausschließliche Indikator dessen, was die Erfindung ist und was durch die Anmelder beabsichtigt ist, das es die Erfindung ist. Alle Definitionen, die hier für die in derartigen Ansprüchen enthaltenen Begriffe ausdrücklich dargelegt sind, sollen die Bedeutung derartige Begriffe bestimmen, wie sie in den Ansprüchen verwendet werden. Folglich sollte keine Einschränkung, kein Element, keine Eigenschaft, kein Merkmal, kein Vorteil oder kein Attribut, das in einem Anspruch nicht ausdrücklich dargelegt ist, den Schutzumfang eines derartigen Anspruchs auf irgendeine Weise einschränken. Die Beschreibung und die Zeichnungen sind dementsprechend in einem veranschaulichenden anstatt in einem einschränkenden Sinn zu betrachten.