-
HINTERGRUND DER OFFENBARUNG
-
Gebiet der Offenbarung
-
Ausführungsformen der vorliegenden Offenbarung beziehen sich allgemein auf Speichervorrichtungen, wie zum Beispiel Solid-State-Laufwerke (SSDs).
-
Beschreibung des Stands der Technik
-
Service-Level-Agreements (SLAs) werden häufig von Einzelhändlern von SSDs oder von Personen, die Speicherlösungen mit mandantenfähigen Systemen verkaufen, gehalten. Jedes mandantenfähige System kann viele Teilnehmer und Kunden, virtuelle Maschinen oder Anwendungen abdecken, die alle einen Teil der verfügbaren Bandbreite des Systems benötigen. Da die verfügbare Bandbreite eine begrenzte Ressource ist, gewährleisten die SLAs im Allgemeinen eine Menge an verfügbarer Bandbreite für Laufwerke und Dienstgüte (QoS) für verschiedene Preisstufen. SLAs zielen auch darauf ab, den Kunden eine sichere und präzise Gewährleistung von QoS und/oder Bandbreitendurchsatz zu bieten. SLAs können für Mandanten verfügbare BW, QoS oder eine Kombination von beiden begrenzen und können Minima, Maxima und relationale Änderungen sowohl in BW als auch in QoS festlegen. Die Gewährleistungen in einem SLA können darin bestehen, eine minimale oder maximale Menge an Bandbreite oder QoS bereitzustellen. Zum Beispiel kann einem einen größeren Betrag zahlenden Kunden eine größere Menge an Bandbreite zugesichert werden, wobei das SLA des Kunden eine minimale Menge an Bandbreite und eine maximale Verschlechterung der QoS gewährleisten möchte, während der Verkehr eines anderen Mandanten stattfindet.
-
Verfahren zum Begrenzen der verfügbaren Bandbreite umfassen das Verlangsamen der Datenflussrate oder das Zählen von Bytes oder der Anzahl von Befehlen, während die Befehle in einem SSD verarbeitet werden. Diese Verfahren können jedoch große Mengen an Bandbreite in den Prozess einbeziehen und als invasiv oder schwerfällig angesehen werden. Dementsprechend können diese Verfahren verschwenderisch und ineffizient sein.
-
Somit ist ein zuverlässiges und genaues Verfahren zum Begrenzen der Bandbreite in SSDs notwendig, ohne die Datengeschwindigkeiten einzuschränken und große Mengen von SSD-Ressourcen zu konsumieren.
-
KURZDARSTELLUNG DER OFFENBARUNG
-
Die vorliegende Offenbarung bezieht sich allgemein auf die Begrenzung der Bandbreite in Speichervorrichtungen. Eine oder mehrere Dienstgüte-Ebenen der Bandbreite können ausgewählt und mit Befehlen gemäß Service-Level-Agreements verknüpft werden, die einige Befehle gegenüber anderen priorisieren können. Eine Speichervorrichtung ruft einen oder mehrere der Befehle ab und führt sie aus. Jeder der Befehle ist mit einer Dienstgüte-Ebene der Bandbreite verknüpft. Nach dem Ausführen der Befehle und dem Übertragen der Daten an eine Hostvorrichtung kann die Speichervorrichtung das Schreiben eines Beendigungseintrags, der den ausgeführten Befehlen entspricht, in eine Beendigungswarteschlange verzögern, basierend auf der den Befehlen zugeordneten Dienstgüte-Ebene der Bandbreite. Die Vorrichtung kann dann das Offenlegen des Beendigungseintrags verzögern, indem sie die Aktualisierung eines Kopfzeigers der Beendigungswarteschlange verzögert. Die Vorrichtung kann ferner das Senden eines Unterbrechungssignals an die Hostvorrichtung basierend auf der den Befehlen zugeordneten Dienstgüte-Ebene der Bandbreite verzögern.
-
In einer Ausführungsform weist ein Verfahren zum Betreiben einer Speichervorrichtung das Ausführen eines einer Dienstgüte-Ebene der Bandbreite zugeordneten Befehls durch einen Controller der Speichervorrichtung auf. Der Befehl wird mit voller Geschwindigkeit ausgeführt. Das Verfahren weist ferner das Verzögern des Schreibens eines Beendigungseintrags auf, der dem ausgeführten Befehl entspricht, für eine vorgegebene Zeitspanne. Die vorgegebene Zeitspanne richtet sich nach der zugehörigen Dienstgüte-Ebene der Bandbreite. Das Verfahren weist das Auslösen des Schreibens des dem ausgeführten Befehl zugeordneten Beendigungseintrags in eine Beendigungswarteschlange auf. Das Schreiben des Beendigungseintrags in die Beendigungswarteschlange wird nach Erreichen der vorgegebenen Zeitspanne ausgelöst.
-
In einer anderen Ausführungsform weist eine Speichervorrichtung eine oder mehrere Speichervorrichtungen und einen Controller, der mit der einen oder den mehreren Speichervorrichtungen gekoppelt ist, auf. Der Controller ist konfiguriert, um einen einer Bandbreite und einer Dienstgüte-Ebene zugeordneten Befehl mit voller Geschwindigkeit aus einer Übertragungswarteschlange abzurufen, den Befehl auszuführen, einen dem ausgeführten Befehl entsprechenden Beendigungseintrag in eine Beendigungswarteschlange zu schreiben und das Senden eines Unterbrechungssignals zu verzögern, das anzeigt, dass die Beendigungswarteschlange zum Lesen bereit ist. Die Verzögerung basiert auf der Bandbreite und der mit dem Befehl verbundenen Dienstgüte-Ebene.
-
In einer weiteren Ausführungsform weist ein Speichersystem eine Hostvorrichtung und eine mit der Hostvorrichtung gekoppelte Speichervorrichtung auf. Die Speichervorrichtung weist eine oder mehrere Speichervorrichtungen und einen Controller auf, der mit der einen oder den mehreren Speichervorrichtungen gekoppelt ist. Der Controller ist konfiguriert, um eine Vielzahl von Befehlen aus einer Übertragungswarteschlange mit voller Geschwindigkeit abzurufen, um Header von jedem der Vielzahl von Befehlen zu lesen, um eine zugehörige Dienstgüte-Ebene der Bandbreite von jedem der Vielzahl von Befehlen zu bestimmen, und um die Vielzahl von Befehlen in der Reihenfolge von hoher bis niedriger Priorität basierend auf der zugehörigen Dienstgüte-Ebene der Bandbreite jedes der Vielzahl von Befehlen auszuführen.
-
Figurenliste
-
Zur Verdeutlichung der Art und Weise, wie die vorstehend dargelegten Merkmale der vorliegenden Offenbarung im Detail verstanden werden können, kann eine ausführlichere Beschreibung der Offenbarung, die vorstehend kurz zusammengefasst ist, unter Bezugnahme auf Ausführungsformen erfolgen, von denen einige in den beigefügten Zeichnungen veranschaulicht sind. Es ist jedoch zu beachten, dass in den beigefügten Zeichnungen nur typische Ausführungsformen dieser Offenbarung dargestellt sind und diese daher nicht als Einschränkung ihres Umfangs anzusehen sind, da die Offenbarung andere ebenso wirksame Ausführungsformen zulassen kann.
- 1 ist ein schematisches Blockdiagramm, das ein Speichersystem gemäß einer Ausführungsform veranschaulicht.
- 2 veranschaulicht ein Speichersystem umfassend eine Speichervorrichtung, die mit einer Hostvorrichtung gemäß einer anderen Ausführungsform gekoppelt ist.
- 3 ist ein Blockdiagramm zur Veranschaulichung eines Verfahrens zur Begrenzung der Bandbreite zwischen einem Host und einer Speichervorrichtung gemäß einer Ausführungsform.
- 4 ist ein Flussdiagramm, das ein Verfahren zum Begrenzen der Bandbreite durch Verzögern des Schreibens eines Beendigungseintrags in eine Beendigungswarteschlange eines Hosts gemäß einer Ausführungsform veranschaulicht.
- 5 ist ein Flussdiagramm zur Veranschaulichung eines Verfahrens zum Begrenzen der Bandbreite durch Verzögern des Sendens eines Unterbrechungssignals an eine Hostvorrichtung gemäß einer anderen Ausführungsform.
- 6 ist ein Flussdiagramm zur Veranschaulichung eines Verfahrens zum Begrenzen der Bandbreite durch Entfernen eines Beendigungseintrags aus einer Beendigungswarteschlange, um die Beendigungseinträge neu zu ordnen, gemäß einer Ausführungsform.
- 7A bis 7C sind Flussdiagramme zur Veranschaulichung von Verfahren zum Begrenzen der Bandbreite durch Lesen eines Headers eines Befehls, um die zugehörige QoS-Ebene der Bandbreite vor dem Ausführen des Befehls zu bestimmen, gemäß verschiedenen Ausführungsformen.
-
Zum besseren Verständnis wurden, soweit möglich, identische Bezugszeichen verwendet, um identische Elemente zu bezeichnen, die den Figuren gemeinsam sind. Es wird in Betracht gezogen, dass die in einer Ausführungsform offenbarten Elemente ohne besondere Aufzählung vorteilhaft auf andere Ausführungsformen angewendet werden können.
-
DETAILLIERTE BESCHREIBUNG
-
Im Folgenden wird auf die Ausführungsformen der Offenbarung verwiesen. Es sollte jedoch verstanden werden, dass die Offenbarung nicht auf bestimmte beschriebene Ausführungsformen beschränkt ist. Stattdessen wird jede Kombination der folgenden Merkmale und Elemente, unabhängig davon, ob sie sich auf verschiedene Ausführungsformen beziehen oder nicht, zur Umsetzung und Praxis der Offenbarung in Betracht gezogen. Auch wenn Ausführungsformen der Offenbarung Vorteile gegenüber anderen möglichen Lösungen und/oder dem Stand der Technik erzielen können, bedeutet die Tatsache, ob durch eine bestimmte Ausführungsform ein besonderer Vorteil erzielt wird oder nicht, keine Einschränkung der Offenbarung. Die folgenden Aspekte, Merkmale, Ausführungsformen und Vorteile sind daher nur veranschaulichend und gelten nicht als Elemente oder Einschränkungen der beigefügten Ansprüche, es sei denn, sie werden ausdrücklich in einem oder mehreren Ansprüchen erwähnt. Ebenso darf die Bezugnahme auf „die Offenbarung“ nicht als Verallgemeinerung eines hierin offenbarten erfinderischen Gegenstands ausgelegt werden und gilt nicht als Element oder Einschränkung der beigefügten Ansprüche, es sei denn, sie wird ausdrücklich in einem Anspruch erwähnt.
-
Die vorliegende Offenbarung bezieht sich allgemein auf die Begrenzung der Bandbreite in Speichervorrichtungen. Eine oder mehrere Dienstgüte-Ebenen der Bandbreite können ausgewählt und mit Befehlen gemäß Service-Level-Agreements verknüpft werden, die einige Befehle gegenüber anderen priorisieren können. Eine Speichervorrichtung ruft einen oder mehrere der Befehle ab und führt sie aus. Jeder der Befehle ist mit einer Dienstgüte-Ebene der Bandbreite verknüpft. Nach dem Ausführen der Befehle und dem Übertragen der Daten an eine Hostvorrichtung kann die Speichervorrichtung das Schreiben eines Beendigungseintrags, der den ausgeführten Befehlen entspricht, in eine Beendigungswarteschlange verzögern, basierend auf der den Befehlen zugeordneten Dienstgüte-Ebene der Bandbreite. Die Vorrichtung kann dann das Offenlegen des Beendigungseintrags verzögern, indem sie die Aktualisierung eines Kopfzeigers der Beendigungswarteschlange verzögert. Die Vorrichtung kann ferner das Senden eines Unterbrechungssignals an die Hostvorrichtung basierend auf der den Befehlen zugeordneten Dienstgüte-Ebene der Bandbreite verzögern. 1 ist ein schematisches Blockdiagramm zur Veranschaulichung eines Speichersystems 100, in dem die Speichervorrichtung 106 als Speichervorrichtung für eine Hostvorrichtung 104 gemäß einer oder mehreren Techniken dieser Offenbarung fungieren kann. Zum Beispiel kann die Hostvorrichtung 104 zum Speichern und Abrufen von Daten nichtflüchtige Speichervorrichtungen verwenden, die in der Speichervorrichtung 106 enthalten sind. Die Hostvorrichtung 104 weist einen Host DRAM 138 auf. In einigen Beispielen kann das Speichersystem 100 eine Vielzahl von Speichervorrichtungen enthalten, wie beispielsweise die Speichervorrichtung 106, die als Speicheranordnung arbeiten kann. Zum Beispiel kann das Speichersystem 100 kann eine Vielzahl von Speichervorrichtungen 106 einschließen, die als eine redundante Anordnung von preiswerten/unabhängigen Festplatten (RAID) konfiguriert sind, die zusammen als Massenspeichervorrichtung für die Hostvorrichtung 104 fungieren.
-
Das Speichersystem 100 schließt eine Hostvorrichtung 104 ein, die Daten auf und/oder von einer oder mehreren Speichervorrichtungen, wie beispielsweise der Speichervorrichtung 106, speichern und/oder abrufen kann. Wie in 1 veranschaulicht, kann die Hostvorrichtung 104 über eine Schnittstelle 114 mit der Speichervorrichtung 106 kommunizieren. Die Hostvorrichtung 104 kann eine beliebige aus einer Vielzahl von Vorrichtungen umfassen, einschließlich Computerservern, NAS-Einheiten (Network Attached Storage), Desktop-Computern, Notebook-Computern (d. h. Laptops), Beistellgeräten, Telefonhandgeräten wie sogenannten „Smartphones“, sogenannten „Smart Pads“, Fernsehern, Kameras, Anzeigevorrichtungen, digitalen Medienplayern, Videospielkonsolen, Video-Streaming-Geräten und dergleichen.
-
Wie in 1 veranschaulicht, schließt die Speichervorrichtung 106 einen Controller 108, einen nichtflüchtigen Speicher 110 (NVM 110), eine Stromversorgung 111, einen flüchtigen Speicher 112, einen Bandbreitenbegrenzer 120 und eine Schnittstelle 114 ein. In einigen Beispielen kann die Speichervorrichtung 106 zusätzliche Komponenten einschließen, die aus Gründen der Übersichtlichkeit nicht in 1 dargestellt sind. Beispielsweise kann die Speichervorrichtung 106 eine Leiterplatte (PB) einschließen, an der Komponenten der Speichervorrichtung 106 mechanisch angebracht sind und die elektrisch leitende Leiterbahnen enthält, die Komponenten der Speichervorrichtung 106 oder dergleichen elektrisch miteinander verbinden. In einigen Beispielen können die physikalischen Abmessungen und Anschlusskonfigurationen der Speichervorrichtung 106 einem oder mehreren Standardformfaktoren entsprechen. Einige Beispiele für Standardformfaktoren umfassen unter anderem eine 3,5-Zoll-Datenspeichervorrichtung (z. B. eine Festplatte oder SSD), eine 2,5-Zoll-Datenspeichervorrichtung, eine 1,8-Zoll-Datenspeichervorrichtung, eine Peripheriekomponentenverbindung (PCI), PCI-Extended (PCI-X), PCI Express (PCle) (z. B. PCle x1, x4, x8, x16, PCle Mini Card, MiniPCI usw.). In einigen Beispielen kann die Speichervorrichtung 106 direkt mit einer Hauptplatine der Hostvorrichtung 104 gekoppelt (z. B. direkt verlötet) werden.
-
Die Schnittstelle 114 der Speichervorrichtung 106 kann einen Datenbus zum Datenaustausch mit der Hostvorrichtung 104 und/oder einen Steuerbus zum Austauschen von Befehlen mit der Hostvorrichtung 104 einschließen. Die Schnittstelle 114 kann in Übereinstimmung mit einem geeigneten Protokoll betrieben werden. Beispielsweise kann die Schnittstelle 114 gemäß einem oder mehreren der folgenden Protokolle arbeiten: Advanced Technology Attachment (ATA) (z. B. Serial-ATA (SATA) und Parallel-ATA (PATA)), Fibre Channel Protocol (FCP), Small Computer System Interface (SCSI), Serial Attached SCSI (SAS), PCI und PCle, Non-Volatile Memory Express (NVMe), OpenCAPI, GenZ, Cache Cerent Interface Accelerator (CCIX), Open Channel SSD (OCSSD), oder dergleichen. Die elektrische Verbindung der Schnittstelle 114 (z. B. der Datenbus, der Steuerbus oder beides) ist elektrisch mit dem Controller 108 verbunden und stellt eine elektrische Verbindung zwischen der Hostvorrichtung 104 und dem Controller 108 her, sodass Daten zwischen der Hostvorrichtung 104 und dem Controller 108 ausgetauscht werden können. In einigen Beispielen kann die Speichervorrichtung 106 durch die elektrische Verbindung der Schnittstelle 114 auch Strom von der Hostvorrichtung 104 beziehen. Wie beispielsweise in 1 veranschaulicht, kann die Stromversorgung 111 über die Schnittstelle 114 Strom von der Hostvorrichtung 104 empfangen.
-
Die Speichervorrichtung 106 schließt NVM 110 ein, die eine Vielzahl von Speichervorrichtungen einschließen kann. NVM 110 kann konfiguriert sein, um Daten zu speichern und/oder abzurufen. Zum Beispiel kann eine Speichervorrichtung von NVM 110 Daten und eine Nachricht vom Controller 108 empfangen, mit der die Speichervorrichtung zum Speichern der Daten angewiesen wird. In ähnlicher Weise kann die Speichervorrichtung von NVM 110 eine Nachricht vom Controller 108 empfangen, mit der die Speichervorrichtung zum Abrufen der Daten angewiesen wird. In einigen Beispielen kann jede der Speichervorrichtungen als eine Matrize bezeichnet werden. In einigen Beispielen kann ein einzelner physikalischer Chip eine Vielzahl von Matrizen (d. h. eine Vielzahl von Speichervorrichtungen) enthalten. In einigen Beispielen kann jede Speichervorrichtung zum Speichern relativ großer Datenmengen konfiguriert werden (z. B. 128 MB, 256 MB, 512 MB, 1 GB, 2 GB, 4 GB, 8 GB, 16 GB, 32 GB, 64 GB, 128 GB, 256 GB, 512 GB, 1 TB usw.).
-
In einigen Beispielen kann jede Speichervorrichtung von NVM 110 jede Art von nichtflüchtigen Speichervorrichtungen einschließen, wie z. B. Flash-Speichervorrichtungen, Phasenwechselspeicher-Vorrichtungen (PCM-Vorrichtung), resistive Direktzugriffsspeichervorrichtungen (ReRAM-Vorrichtung), magnetoresistive Direktzugriffsspeichervorrichtungen (M RAM-Vorrichtung), ferroelektrischer Direktzugriffsspeicher (F-RAM), holographische Speichervorrichtungen und jede andere Art von nichtflüchtigen Speichervorrichtungen.
-
NVM 110 kann eine Vielzahl von Flash-Speichervorrichtungen umfassen. Flash-Speichervorrichtungen können NAND- oder NOR-basierte Flash-Speichervorrichtungen einschließen und können Daten basierend auf einer Ladung speichern, die in einem Floating Gate eines Transistors für jede Flash-Speicherzelle enthalten ist. In NAND-basierten Flash-Speichervorrichtungen kann die Flash-Speichervorrichtung in eine Vielzahl von Blöcken unterteilt werden, die in eine Vielzahl von Seiten unterteilt werden können. Jeder Block der Vielzahl von Blöcken innerhalb einer bestimmten Speichervorrichtung kann eine Vielzahl von NAND-Zellen einschließen. Reihen von NAND-Zellen können unter Verwendung einer Wortleitung elektrisch verbunden werden, um eine Seite aus einer Vielzahl von Seiten zu definieren. Entsprechende Zellen in jeder der Vielzahl von Seiten können elektrisch mit den entsprechenden Bitleitungen verbunden sein. Ferner können NAND-basierte Flash-Speichervorrichtungen 2D- oder 3D-Vorrichtungen sein und Single-Level-Zellen (SLC), Multi-Level-Zellen (MLC), Triple-Level-Zellen (TLC) oder Quad-Level-Zellen (QLC) sein. Der Controller 108 kann Daten in und aus NAND-basierten Flash-Speichervorrichtungen auf Seitenebene schreiben und lesen und Daten aus NAND-basierten Flash-Speichervorrichtungen auf Blockebene löschen.
-
Die Speichervorrichtung 106 schließt eine Stromversorgung 111 ein, die eine oder mehrere Komponenten der Speichervorrichtung 106 mit Strom versorgen kann. Wenn die Stromversorgung 111 in einem Standardmodus betrieben wird, kann sie eine oder mehrere Komponenten mit Strom versorgen, der von einer externen Vorrichtung, wie beispielsweise der Hostvorrichtung 104, bereitgestellt wird. Beispielsweise kann die Stromversorgung 111 die eine oder mehrere Komponenten mit Strom versorgen, der von der Hostvorrichtung 104 über die Schnittstelle 114 empfangen wird. In einigen Beispielen kann die Stromversorgung 111 eine oder mehrere Energiespeicherkomponenten einschließen, die konfiguriert sind, um die eine oder die mehreren Komponenten mit Strom zu versorgen, wenn sie in einem Abschaltmodus betrieben werden, z. B. wenn die Stromzufuhr von der externen Vorrichtung unterbrochen wird. Auf diese Weise kann die Stromversorgung 111 als integrierte Backup-Stromversorgung fungieren. Einige Beispiele für die eine oder die mehreren Energiespeicherkomponenten umfassen, sind aber nicht beschränkt auf, Kondensatoren, Superkondensatoren, Batterien und dergleichen. In einigen Beispielen kann die von der einen oder den mehreren Energiespeicherkomponenten gespeicherte Energiemenge eine Funktion der Kosten und/oder der Größe (z. B. Fläche / Volumen) der einen oder mehreren Energiespeicherkomponenten sein. Das heißt, wenn die von einer oder mehreren Energiespeicherkomponenten gespeicherte Energiemenge zunimmt, steigen auch die Kosten und/oder die Größe der einen oder mehreren Energiespeicherkomponenten.
-
Die Speichervorrichtung 106 schließt ferner den flüchtigen Speicher 112 ein, der vom Controller 108 zum Speichern von Informationen verwendet werden kann. Der flüchtige Speicher 112 kann aus einer oder mehreren flüchtigen Speichervorrichtungen bestehen. In einigen Beispielen kann der Controller 108 den flüchtigen Speicher 112 als Cache verwenden. Zum Beispiel kann der Controller 108 zwischengespeicherte Informationen im flüchtigen Speicher 112 speichern, bis die zwischengespeicherten Informationen in den nichtflüchtigen Speicher 110 geschrieben werden. Wie in 1 veranschaulicht, kann der flüchtige Speicher 112 den von der Stromversorgung 111 empfangenen Strom verbrauchen. Beispiele für flüchtigen Speicher 112 umfassen, sind aber nicht beschränkt auf Direktzugriffsspeicher (RAM), dynamischen Direktzugriffsspeicher (DRAM), statischen RAM (SRAM) und synchronen dynamischen RAM (SDRAM (z. B. DDR1, DDR2, DDR3, DDR3L, LPDDR3, DDR4, LPDDR4 und dergleichen)).
-
Die Speichervorrichtung 106 schließt einen Controller 108 ein, der eine oder mehrere Operationen der Speichervorrichtung 106 verwalten kann. Zum Beispiel kann der Controller 108 das Lesen von Daten von und/oder das Schreiben von Daten in NVM 110 verwalten. In einigen Ausführungsformen kann beim Empfangen durch die Speichervorrichtung 106 eines Schreibbefehls von der Hostvorrichtung 104 der Controller 108 einen Datenspeicherbefehl auslösen, um Daten in NVM 110 zu speichern und den Fortschritt des Datenspeicherbefehls zu überwachen. Der Controller 108 kann mindestens eine Betriebscharakteristik des Speichersystems 100 bestimmen und die mindestens eine Betriebscharakteristik in NVM 110 speichern.
-
Die Speichervorrichtung 106 schließt einen mit dem Controller 108 gekoppelten Bandbreitenbegrenzer 120 ein. Der Bandbreitenbegrenzer 120 überwacht und steuert den Zugriff auf die verfügbare Bandbreite des Speichersystems 100. Der Bandbreitenbegrenzer 120 priorisiert jede Anfrage nach Bandbreite basierend auf einer entsprechenden QoS-Ebene und steuert den Zugriff auf die verfügbare Bandbreite. QoS ist eine statistische Gesamtbeschreibung der Befehlslatenzen vom Laufwerk. Entweder eine maximale Befehlslatenz, eine durchschnittliche Auswirkung auf die Befehlslatenz, eine statistische Beschreibung aller Befehle, eine Sicherheit von 99 % der Befehle, die durch ein bestimmtes Limit ausgeführt werden, oder eine vollständige Beschreibung aller Befehlslatenzen im Vergleich zur Wahrscheinlichkeit dieser Latenz (häufig in einem Plot dargestellt). In einigen Ausführungsformen kann der Bandbreitenbegrenzer 120 eine innerhalb der Speichervorrichtung 106 befindliche Hardware-Schaltung sein. In anderen Ausführungsformen befindet sich der Bandbreitenbegrenzer 120 in der Firmware der Speichervorrichtung 106. In weiteren Ausführungsformen wird der Bandbreitenbegrenzer 120 in einer innerhalb der Speichervorrichtung 106 befindlichen Software ausgeführt. Der Bandbreitenbegrenzer 120 kann Hardware, Firmware oder Software sein, die sich im Controller 108 befindet. Der Bandbreitenbegrenzer 120 kann auch entfernt von der Speichervorrichtung 106 in einem Server oder einem anderen Prozessor angeordnet sein. Andere Ausführungsformen sind möglich und werden nicht durch die hierin offenbarten Beispiele beschränkt.
-
Das Speichersystem 100 kann ein mandantenfähiges System sein. Ein Mandant kann Anwendungen, virtuelle Maschinen, Docker, Container, Betriebssysteminstanzen, Datenbanken, Client-Server, Prozessoren, virtuelle Funktionen, Namespaces, Paare aus Übertragungswarteschlangen und Beendigungswarteschlangen oder dergleichen einschließen. In einer solchen Ausführungsform können sich mehrere Benutzer oder Mandanten die Speichervorrichtung 106 teilen. Zum Beispiel kann die Speichervorrichtung 106 Teil eines Cloudbasierten Speichernetzwerks sein. In einer solchen Ausführungsform begrenzt der Bandbreitenbegrenzer 120 die Bandbreite auf einen bestimmten Mandanten oder Benutzer, indem er die Ausführung von Befehlen, die von der Hostvorrichtung 104 empfangen werden, basierend auf der jedem Befehl zugeordneten QoS-Ebene der Bandbreite priorisiert. Der Bandbreitenbegrenzer 120 kann das Schreiben eines mit einem ausgeführten Befehl verbundenen Beendigungseintrag in eine Beendigungswarteschlange verzögern. Der Bandbreitenbegrenzer 120 kann das Senden von Unterbrechungssignalen an die Hostvorrichtung 104 weiter verzögern und die Hostvorrichtung 104 darüber informieren, dass der Befehl abgeschlossen ist. Der eigentliche Befehl wird vom Controller 108 mit voller Bandbreitengeschwindigkeit ausgeführt und ist nicht durch den Bandbreitenbegrenzer 120 begrenzt. Der Datendurchsatz zwischen der Hostvorrichtung 104 und der Speichervorrichtung 106 arbeitet weiterhin bei voller Bandbreite, um die höchste Effizienz des Datendurchsatzes aufrechtzuerhalten. Der Host DRAM 138 kann zum Ausfüllen und Speichern des Beendigungseintrags verwendet werden. Da der Hostvorrichtung 104 jedoch die erfolgreiche Ausführung des Befehls durch die Speichervorrichtung 106 nicht bekannt ist, bis die Speichervorrichtung 106 den Beendigungseintrag in die Beendigungswarteschlange schreibt und das Unterbrechungssignal an die Hostvorrichtung 104 sendet, ist die Bandbreite für den Benutzer effektiv begrenzt.
-
2 veranschaulicht ein Speichersystem 200 umfassend eine Speichervorrichtung 206, die mit einer Hostvorrichtung 204 gemäß einer anderen Ausführungsform gekoppelt ist. Speichersystem 200 kann das Speichersystem 100, die Hostvorrichtung 104 und die Speichervorrichtung 106 aus 1 sein.
-
Die Speichervorrichtung 206 kann Befehle und Daten von der Hostvorrichtung 204 senden und empfangen und weist einen Befehlsprozessor 220 auf. Der Befehlsprozessor 220 kann den Zugriff auf die Speichervorrichtung, wie beispielsweise NAND-Zugriff, planen und ein Lesen auf eine Speichervorrichtung durchführen, bevor ein zuvor empfangener Befehl ein Schreiben auf dieselbe Speichervorrichtung erfordert. Der Befehlsprozessor 220 ist mit einem Bandbreitenbegrenzer 230 und einer oder mehreren Speichervorrichtungen 228 gekoppelt. Die eine oder mehrere Speichervorrichtungen 228 können nichtflüchtige NAND-Speichervorrichtungen sein. Der Bandbreitenbegrenzer 230 ist mit einem Befehlsabruf 222 gekoppelt. Der Befehlsabruf 222 ist mit einer Arbitrierung der Übertragungswarteschlange 224 gekoppelt. Die Arbitrierung der Übertragungswarteschlange 224 ist mit einem oder mehreren Kopf- und Endzeigern der Übertragungswarteschlange 226 gekoppelt.
-
Die Hostvorrichtung 204 besteht aus einer oder mehreren Host-Softwareanwendungen 232, die mit einer oder mehreren Verarbeitungseinheiten oder CPU-Anwendungen 234 gekoppelt sind. In einer Ausführungsform hat die Softwareanwendung 232 eine begrenzte Warteschlangentiefe für Solid-State-Laufwerke, um eine Latenz der QoS für jeden Benutzer des Systems 200 abzuleiten. Die Hostvorrichtung 204 weist ferner ein Betriebssystem (OS) oder eine Softwareanwendung 240 ohne zugehörige QoS aus. Die CPU 234 ist mit einer Zwischenverbindung 236 und einem Host DRAM 238 gekoppelt. Der Host DRAM 238 kann Daten der Übertragungswarteschlange speichern. Die Zwischenverbindung 236 ist mit der Vorrichtung 206 gekoppelt. Die Zwischenverbindung 236 kann sowohl mit den Kopf- und Endzeigern der Übertragungswarteschlange 226 als auch mit dem Befehlsabruf 222 in Verbindung stehen.
-
Die CPU 234 erzeugt einen oder mehrere Befehle 216 zum Senden an die Vorrichtung 206 und kann über das Befehlsabrufsignal 244 Befehle von der Vorrichtung 206 senden und empfangen. Die CPU 234 kann ferner eine Unterbrechung oder Türklingel 218 an die Vorrichtung 206 senden, um die Vorrichtung 206 über einen oder mehrere Befehle 216 zu informieren. Die CPU 234 kann basierend auf der jedem Befehl zugeordneten QoS-Ebene der Bandbreite zwischen den Befehlen unterscheiden. Die zugeordnete QoS-Ebene der Bandbreite bestimmt die Priorität der Befehle. Zum Beispiel hat in einem mandantenfähigen System mit Preisstufen ein höher zahlender Kunde eine höhere Priorität. Somit haben alle Befehle, die vom höher zahlenden Kunden über die CPU 234 erzeugt werden, eine zugehörige QoS-Ebene der Bandbreite, die direkt der höheren Prioritätsebene entspricht.
-
Die CPU 234 kann die an die Vorrichtung 206 übermittelte Daten-Warteschlangentiefe begrenzen. Warteschlangentiefe (QD) ist die maximale Anzahl von Befehlen, die an die Vorrichtung 206 angehängt werden, und Daten-QD ist die Datenmenge, die den an eine QD angehängten Befehlen zugeordnet ist. In einer Ausführungsform entspricht die Daten-QD 242 der Speichervorrichtung 206 der Bandbreite der Speichervorrichtung 206. Die Daten-QD 242 ist auf die höchste Ebene beschränkt, unter der die Vorrichtung 206 noch eine gewünschte QoS-Latenz aufrechterhalten kann. Die Hostvorrichtung 204 kann eine QoS-Ziellatenzzeit für das Speichersystem 200 auswählen und auch eine zugehörige Daten-QD 242 des Speichersystems 200 begrenzen. Für die Auswahl der QoS-Ziellatenzzeit kann die Vorrichtung 206 dem Host-Treiber 234 Informationen zur Verfügung stellen. Diese Informationen können die Fähigkeiten der QoS-Latenz der Vorrichtung 206, einen ungefähren maximalen Daten-QD-Grenzwert, der einer bestimmten QoS-Ziellatenzzeit zugeordnet ist, und/oder mehrere Paare von Grenzwerten der Daten-QD oder QoS-Zielwerten einschließen. Zudem kann die Hostvorrichtung 204 eine Daten-QD des Systems 200 unter einem aktuellen Daten-QD-Grenzwert halten.
-
3 ist ein Blockdiagramm, das ein Verfahren 300 zum Begrenzen der Bandbreite zwischen einem Host und einer Speichervorrichtung beim Ausführen eines Lesebefehls gemäß einer Ausführungsform veranschaulicht. Verfahren 300 kann mit dem Speichersystem 100 mit einer Hostvorrichtung 104 und einer Speichervorrichtung 106 umfassend einen Controller 108 verwendet werden. Das Verfahren 300 kann ferner mit dem Speichersystem 200 mit einer Hostvorrichtung 204 und einer Speichervorrichtung 206 umfassend einen Befehlsprozessor 220 verwendet werden.
-
Verfahren 300 beginnt bei der Operation 350, bei der die Hostvorrichtung einen Befehl als Eintrag in eine Übertragungswarteschlange schreibt. Die Hostvorrichtung kann bei Operation 350 einen oder mehrere Befehle in die Übertragungswarteschlange schreiben. Die Befehle können Lese- oder Schreibbefehle sein. Die Hostvorrichtung kann den Befehl mit einer zugehörigen QoS-Ebene der Bandbreite schreiben. Beispielsweise kann die Hostvorrichtung die zugehörige QoS-Ebene der Bandbreite eines Befehls in einen Header des Befehls schreiben. Die jedem Befehl zugeordnete QoS-Ebene der Bandbreite entspricht direkt einem Prioritätsrang und priorisiert einige Befehle über andere. Beispielsweise hat ein einen höheren Betrag zahlender Kunde oder Benutzer eine höhere Priorität als ein einen niedrigeren Betrag zahlender Kunde und damit eine höhere oder größere QoS-Ebene der Bandbreite. Es kann eine beliebige Anzahl von verschiedenen Prioritätsrängen oder -ebenen geben. So kann es beispielsweise fünf Stufen von QoS-Ebenen der Bandbreite, geben, wobei Ebene eins die niedrigste Priorität und Ebene fünf die höchste Priorität ist.
-
Die Hostvorrichtung kann eine oder mehrere Übertragungswarteschlangen umfassen. Befehle können je nach Priorität in eine oder mehrere Warteschlangen geschrieben werden. Beispielsweise kann der Host eine erste Übertragungswarteschlange für Befehle mit hohem Rang, eine zweite Übertragungswarteschlange für Befehle mit mittlerem Rang und eine dritte Übertragungswarteschlange für Befehle mit niedrigem Rang haben.
-
In Operation 352 schreibt die Hostvorrichtung einen oder mehrere aktualisierte Endzeiger der Übertragungswarteschlange und läutet eine Türklingel oder sendet ein Unterbrechungssignal, um die Speichervorrichtung über den neuen Befehl zu benachrichtigen oder zu signalisieren, der zur Ausführung bereit ist. Das Türklingelsignal kann die Türklingel 218 aus 2 sein. Der Host kann einen aktualisierten Endzeiger der Übertragungswarteschlange schreiben und bei mehr als einer Übertragungswarteschlange für jede der Übertragungswarteschlangen ein Türklingel- oder Unterbrechungssignal senden. In Operation 354 ruft ein Controller der Speichervorrichtung als Reaktion auf das Empfangen des Türklingel- oder Unterbrechungssignals den Befehl aus der einen oder mehreren Übertragungswarteschlange mit voller Geschwindigkeit ab. Volle Geschwindigkeit kann die normale Betriebsgeschwindigkeit oder die schnellste Bandbreitengeschwindigkeit sein.
-
Durch das Abrufen der Befehle aus der Übertragungswarteschlange mit voller Geschwindigkeit kann eine maximale Menge an Informationen von der Speichervorrichtung empfangen werden. Diese Informationen können unter anderem die Anzahl der Befehle für beste Warteschlange und Ausführung, priorisierte Befehle, verschiedene Namespaces und verschiedene Konfigurationen der Übertragungswarteschlange einschließen. Durch die Bereitstellung der maximalen Informationsmenge auf der Speichervorrichtung können hochrangige SLA-Kunden den hohen Servicegrad erhalten. Zusätzlich kann ein niederrangiger SLA-Kunde weiterhin mit minimaler Latenzzeit beantwortet werden, was unter anderem Konflikte mit Speichervorrichtungsressourcen, einschließlich Controller SRAM, Verfügbarkeit des Speicherchips und Umschaltmodus-Busverfügbarkeit reduzieren kann.
-
Nach Empfang des Befehls kann der Controller der Speichervorrichtung die dem Befehl zugeordnete QoS-Ebene der Bandbreite und damit den Prioritätsrang des Befehls bestimmen. Die QoS-Ebene der Bandbreite kann von der Speichervorrichtung mit dem Befehl aus der Übertragungswarteschlange abgerufen werden. Die QoS-Ebene der Bandbreite kann basierend auf der Position jedes Befehls in einer Übertragungswarteschlange bestimmt werden. In mindestens einer Implementierung schließt die Hostvorrichtung die QoS-Ebene der Bandbreite eines Befehls im Header des Befehls ein. Die Speichervorrichtung kann dann den Header des Befehls lesen, um die zugehörige QoS-Ebene der Bandbreite zu bestimmen.
-
In Operation 356 verarbeitet der Controller der Speichervorrichtung den Befehl und schreibt oder überträgt die mit dem Befehl verbundenen Daten mit voller Geschwindigkeit in den Speicher der Hostvorrichtung. Im Betrieb 358 schreibt der Controller der Speichervorrichtung einen dem ausgeführten Befehl entsprechenden Beendigungseintrag in eine Beendigungswarteschlange der Hostvorrichtung und bewegt oder aktualisiert den CQ-Kopfzeiger, um auf den neu geschriebenen Beendigungseintrag zu zeigen. Die Speichervorrichtung kann das Schreiben des Beendigungseintrags in die Beendigungswarteschlange und/oder das Aktualisieren des CQ-Kopfzeigers verzögern. Die Verzögerung basiert auf der dem ausgeführten Befehl zugeordneten QoS-Ebene der Bandbreite. In mindestens einer Implementierung ist die Verzögerung umso länger, je niedriger die Priorität der zugeordneten QoS-Ebene der Bandbreite ist. Befehle, die der QoS-Ebene der Bandbreite mit der höchsten Priorität zugeordnet sind, haben möglicherweise keine Verzögerung.
-
Das Verzögern des Schreibens eines Beendigungseintrags in eine Beendigungswarteschlange und/oder das Verzögern der Aktualisierung des Kopfzeigers ermöglicht die Übertragung von Befehlsdaten in das Host DRAM oder in den nichtflüchtigen Speicher, während der Beendigungseintrag in der Speichervorrichtung gehalten wird. Dies sorgt für eine optimale Verfügbarkeit des Controller SRAM, ohne dem Host die Bewegung der Befehlsdaten zu bestätigen. Das Verzögern des Schreibens eines Beendigungseintrags in eine Beendigungswarteschlange und/oder das Verzögern der Aktualisierung des Kopfzeigers führt dazu, dass der Host nicht weiß, welche Fortschritte die Speichervorrichtung mit den Befehlen und Datenübertragungen gemacht hat.
-
In einer Ausführungsform weist die Beendigungswarteschlange eine Vielzahl von Beendigungswarteschlangen auf. Jede Beendigungswarteschlange der Vielzahl von Beendigungswarteschlangen kann einer anderen QoS-Ebene der Bandbreite zugeordnet sein. Die den Befehlen zugeordnete QoS-Ebene der Bandbreite kann mit der QoS-Ebene der Bandbreite übereinstimmen oder gleich sein, die jeder Beendigungswarteschlange der Vielzahl von Beendigungswarteschlangen zugeordnet ist. Wenn es als Fortsetzung des obigen Beispiels fünf QoS-Ebenen der Bandbreite gibt, die fünf Preisstufen entsprechen, gibt es fünf entsprechende Beendigungswarteschlangen. Die Speichervorrichtung schreibt einen Beendigungseintrag in die Beendigungswarteschlange entsprechend der QoS-Ebene der Bandbreite des Befehls. Beispielsweise würde ein Befehl mit hoher Priorität in eine Beendigungswarteschlange mit hoher Priorität geschrieben werden. Die Vielzahl von Beendigungswarteschlangen kann durch eine oder mehrere der globalen Verfolgung, eine vorbestimmte Liste oder pro Beendigungswarteschlange verfolgt werden.
-
Die Operationen 350 bis 358 können einmal oder mehrmals wiederholt werden, um eine Vielzahl von Befehlen vor Operation 360 zu verarbeiten. In Operation 358 können mehrere Beendigungseinträge in die Beendigungswarteschlange geschrieben werden, ohne die Hostvorrichtung zu alarmieren. Um die Hostvorrichtung über die Beendigungseinträge in der Beendigungswarteschlange zu informieren, kann der Kopfzeiger der Beendigungswarteschlange (CQ) aktualisiert werden, um auf den neuesten abschließenden Beendigungseintrag oder den letzten geschriebenen Eintrag in der Beendigungswarteschlange zu zeigen. Das Aktualisieren des CQ-Kopfzeigers zeigt dem Host den einen oder die mehreren Beendigungseinträge in der Beendigungswarteschlange an.
-
In Operation 360 erzeugt und sendet der Controller der Speichervorrichtung ein Unterbrechungssignal oder eine Türklingel an die Hostvorrichtung. Das Unterbrechungssignal zeigt an, dass der Befehl ausgeführt wurde und die mit dem Befehl verbundenen Daten im Speicher verfügbar sind. Das Unterbrechungssignal benachrichtigt ferner, dass die Beendigungswarteschlange bereit ist, gelesen oder verarbeitet zu werden. Die Speichervorrichtung kann das Senden des Unterbrechungssignals an die Hostvorrichtung verzögern. Die Verzögerung basiert auf der dem ausgeführten Befehl zugeordneten QoS-Ebene der Bandbreite. In mindestens einer Implementierung ist die Verzögerung umso länger, je niedriger die Priorität der zugeordneten QoS-Ebene der Bandbreite ist. Befehle, die der QoS-Ebene der Bandbreite mit der höchsten Priorität zugeordnet sind, haben möglicherweise keine Verzögerung.
-
Die Speichervorrichtung kann die Aktualisierung des CQ-Kopfzeigers und das Senden des Unterbrechungssignals an die Hostvorrichtung verzögern, bis mehrere Beendigungseinträge in die Beendigungswarteschlange geschrieben werden. Wenn beispielsweise die Speichervorrichtung einen oder mehrere Beendigungseinträge in die Beendigungswarteschlange schreibt, die QoS-Ebenen der Bandbreite mit niedrigem Rang entsprechen, kann die Speichervorrichtung das Aktualisieren des CQ-Kopfzeigers und das Senden des Unterbrechungssignals verzögern, bis ein Beendigungseintrag in die Beendigungswarteschlange geschrieben wird, der einer QoS-Ebene der Bandbreite mit höherem Rang entspricht. Durch Verzögern der Aktualisierung des CQ-Kopfzeigers und Senden des Unterbrechungssignals, bis ein Beendigungseintrag in die Beendigungswarteschlange geschrieben wird, der einer höherrangigen QoS-Ebene der Bandbreite zugeordnet ist, kann das Unterbrechungssignal alle derzeit in der Beendigungswarteschlange befindlichen Beendigungseinträge entleeren, einschließlich aller Beendigungseinträge, die vor dem Eintrag, der einer höherrangigen QoS-Ebene der Bandbreite zugeordnet ist, in die Beendigungswarteschlange geschrieben wurden.
-
Die Verzögerung in den beiden Operationen 358 und 360 kann eine vorbestimmte Zeitspanne sein, die direkt auf der dem Befehl zugeordneten QoS-Ebene der Bandbreite basiert. Die Verzögerung kann durch das Ablaufen eines Countdowns oder das Erreichen eines Countdowns verursacht werden. Die Speichervorrichtung kann einen Zeitgeber umfassen, der die Verzögerung auch entsprechend der einem Befehl zugeordneten QoS-Ebene der Bandbreite einstellen kann. Die Verzögerung kann ferner auf einem oder mehreren Countdown-Zählern, einem Zähler für eine Anzahl ausgeführter Befehle, der verfügbaren Bandbreite und einer Anzahl von Befehlen in der Übertragungswarteschlange basieren. Die Verzögerung kann ferner auf einem maximalen oder minimalen Bandbreiten-Deskriptor, maximalen oder minimalen QoS-Zuverlässigkeiten und einer Mischung aus QoS und Bandbreitenmaxima und -minima basieren.
-
In Operation 362 verarbeitet die Hostvorrichtung den Beendigungseintrag. In Operation 364 schreibt die Hostvorrichtung einen aktualisierten CQ-Kopfzeiger in die Speichervorrichtung und läutet die Türklingel oder sendet ein Unterbrechungssignal an die Speichervorrichtung, um den Beendigungseintrag freizugeben.
-
In einer Ausführungsform werden die QoS-Ebenen der Bandbreite und zugeordneten Parameter durch einen Händler auf einer Einstellungsseite der Speichervorrichtung festgelegt. Wenn ein Händler die Speichervorrichtung empfängt oder neu startet, kann der Händler die Anzahl der QoS-Ebenen der Bandbreite auswählen. Der Händler kann ferner die der jeweiligen QoS-Ebene der Bandbreite zugeordnete Verzögerungsdauer auswählen, oder die Speichervorrichtung kann automatisch eine Verzögerung basierend auf der Anzahl der verwendeten QoS-Ebenen der Bandbreite einrichten. Wenn der Händler mit Kunden SLAs abschließt, kann jedem Kunden oder Benutzer basierend auf einer Preisstufe eine vorgegebene QoS-Ebene der Bandbreite zugewiesen und als Einstellung im Speicher der Speichervorrichtung gespeichert werden. Wenn ein Befehl von der Hostvorrichtung von einem bekannten Kunden oder Benutzer empfangen wird, werden die Informationen zur QoS-Ebene der Bandbreite aus dem Speicher der Speichervorrichtung abgerufen und zum Bestimmen der Priorität des Befehls verwendet. Der Händler kann andere Parameter auswählen, um den verschiedenen QoS-Ebenen der Bandbreite zu entsprechen.
-
In einer anderen Ausführungsform wird jedem Befehl beim Schreiben in die Übertragungswarteschlange eine QoS-Ebene der Bandbreite zugeordnet, und die Befehle haben keine vorgegebene QoS-Ebene der Bandbreite. In einer solchen Ausführungsform würde jedem Befehl dynamisch eine QoS-Ebene der Bandbreite während des Betriebs des Systems spontan zugewiesen werden. Der Händler kann ferner andere Parameter auswählen, die den verschiedenen QoS-Ebenen der Bandbreite entsprechen, wie etwa die Verzögerungsdauer. Die QoS-Ebene der Bandbreite für einen bestimmten Kunden oder Benutzerbefehl kann basierend auf der Tageszeit, einer Kundennummer, einer Anzahl von zuvor abgerufenen oder aktuell abgerufenen Befehlen, einer verfügbaren Bandbreite oder einem anderen Unterscheidungsparameter festgelegt werden. Andere Ausführungsformen sind möglich und nicht auf diese Beispiele beschränkt.
-
4, 5, 6, und 7A bis 7C sind Flussdiagramme, die verschiedene Ausführungsformen der Begrenzung der Bandbreite in einer Speichervorrichtung veranschaulichen. Die in den 4 bis 7C veranschaulichten Konfigurationen jeder Ausführungsform können wie vorstehend beschrieben bestimmt werden, wie etwa ein Händler, der eine Einstellungsseite festlegt oder spontan wählt.
-
4 ist ein Flussdiagramm, das ein Verfahren 400 zum Begrenzen der Bandbreite durch Verzögern des Schreibens eines Beendigungseintrags in eine Beendigungswarteschlange eines Hosts gemäß einer Ausführungsform veranschaulicht. Verfahren 400 kann in Verbindung mit Verfahren 300 verwendet werden. Zum Beispiel werden im Verfahren 400 die Operationen 350 und 352 des Verfahrens 300 nicht dargestellt. Verfahren 400 kann jedoch mit den Operationen 350 und 352 des Verfahrens 300 beginnen. Ferner kann Verfahren 400 mit dem Speichersystem 100 mit einer Hostvorrichtung 104 und einer Speichervorrichtung 106 umfassend einen Controller 108 verwendet werden. Das Verfahren 400 kann ferner mit dem Speichersystem 200 mit einer Hostvorrichtung 204 und einer Speichervorrichtung 206 umfassend einen Befehlsprozessor 220 verwendet werden.
-
In Operation 402 ruft ein Controller oder Befehlsprozessor der Speichervorrichtung einen Befehl aus einer Übertragungswarteschlange eines Hosts ab und führt den Befehl mit voller Geschwindigkeit aus. Ein oder mehrere Befehle können in Operation 402 abgerufen und mit voller Geschwindigkeit ausgeführt werden. Volle Geschwindigkeit kann die normale Betriebsgeschwindigkeit oder die schnellste Bandbreitengeschwindigkeit sein. Es gibt keine Verzögerung beim Abrufen oder Ausführen des Befehls. Die Befehle können Lese- oder Schreibbefehle sein. Das Ausführen des Befehls weist das Schreiben oder Übertragen der Befehlsdaten an den Host auf.
-
In Operation 404 verzögert der Controller oder Befehlsprozessor das Schreiben eines aktualisierten Beendigungseintrags und eines dem ausgeführten Befehl entsprechenden CQ-Kopfzeigers in eine Beendigungswarteschlange des Hosts für eine vorbestimmte Zeitspanne. Die vorbestimmte Zeitspanne basiert auf einer dem Befehl zugeordneten QoS-Ebene der Bandbreite (BW). Die Verzögerungsdauer ist direkt proportional zu dem Prioritätsrang oder der Prioritätsstufe des Befehls. Je niedriger beispielsweise der dem Befehl zugeordnete Prioritätsrang oder die QoS-Ebene der Bandbreite, desto länger kann die Verzögerung sein. Je höher der dem Befehl zugeordnete Prioritätsrang oder die QoS-Ebene der Bandbreite, desto kürzer kann die Verzögerung sein. Die Befehle mit der höchsten Priorität haben möglicherweise keine Verzögerung, wie beispielsweise in mandantenfähigen Systemen mit zahlreichen Preisstufen.
-
Das Verzögern des Schreibens eines aktualisierten Beendigungseintrags und eines CQ-Kopfzeigers in eine Beendigungswarteschlange ermöglicht die Übertragung von Befehlsdaten in das Host DRAM oder in den nichtflüchtigen Speicher, während der Beendigungseintrag in der Speichervorrichtung gehalten wird. Dies sorgt für eine optimale Verfügbarkeit des Controller SRAM, ohne dem Host die Bewegung der Befehlsdaten zu bestätigen. Das Verzögern des Schreibens eines aktualisierten Beendigungseintrags und eines CQ-Kopfzeigers in die Beendigungswarteschlange führt dazu, dass der Host nicht weiß, welchen Fortschritt die Speichervorrichtung mit den Befehlen und Datenübertragungen gemacht hat.
-
Die Verzögerung kann durch das Ablaufen eines Countdowns oder das Erreichen eines Countdowns verursacht werden. Die Speichervorrichtung kann einen Zeitgeber umfassen, der die Verzögerung auch entsprechend der einem Befehl zugeordneten QoS-Ebene der Bandbreite einstellen kann. Die Verzögerung kann ferner auf einem oder mehreren Countdown-Zählern, einem Zähler für eine Anzahl ausgeführter Befehle, der verfügbaren Bandbreite und einer Anzahl von Befehlen in der Übertragungswarteschlange basieren. Die Verzögerung kann ferner auf einem maximalen oder minimalen Bandbreiten-Deskriptor, maximalen oder minimalen QoS-Zuverlässigkeiten und einer Mischung aus QoS und Bandbreitenmaxima und -minima basieren.
-
In Operation 406 löst der Controller oder Befehlsprozessor das Schreiben des dem ausgeführten Befehl entsprechenden Beendigungseintrags in die Beendigungswarteschlange aus, und der Beendigungseintrag wird in die Beendigungswarteschlange geschrieben. Das Schreiben kann durch Ablaufen des Timers oder Countdowns oder durch Erreichen des Countdowns ausgelöst werden. In einer Ausführungsform wird das Schreiben ausgelöst, wenn ein oder mehrere Befehle mit höherer Priorität in die Beendigungswarteschlange geschrieben werden.
-
In Operation 408 aktualisiert oder bewegt der Controller den internen CQ-Kopfzeiger, um auf einen der neu geschriebenen Beendigungseinträge in der Beendigungswarteschlange zu zeigen. Der Controller kann den CQ-Kopfzeiger auf einen der zuletzt geschriebenen Beendigungseinträge bewegen. Wenn der Controller zum Beispiel drei Befehle verarbeitet und die aktualisierten Beendigungseinträge in die Beendigungswarteschlange geschrieben hat, kann der Controller einen der drei neu geschriebenen Beendigungseinträge auswählen, um den CQ-Kopfzeiger zu bewegen und den Host darüber zu informieren, dass der spezifische Befehl verarbeitet wurde. Das Aktualisieren des CQ-Kopfzeigers, um auf einen neu geschriebenen Beendigungseintrag zu zeigen, offenbart dem Host den einen oder die mehreren aktualisierten Beendigungseinträge.
-
Ähnlich wie bei Operation 406 kann der Controller basierend auf der dem Befehl zugeordneten QoS-Ebene der BW das Bewegen des CQ-Kopfzeigers um eine vorbestimmte Zeitspanne verzögern. Die Verzögerungsdauer ist direkt proportional zu dem Prioritätsrang oder der Prioritätsstufe des Befehls. Je niedriger beispielsweise der dem Befehl zugeordnete Prioritätsrang oder die QoS-Ebene der Bandbreite, desto länger kann die Verzögerung sein. Je höher der dem Befehl zugeordnete Prioritätsrang oder die QoS-Ebene der Bandbreite, desto kürzer kann die Verzögerung sein. Die Befehle mit der höchsten Priorität haben möglicherweise keine Verzögerung, wie beispielsweise in mandantenfähigen Systemen mit zahlreichen Preisstufen.
-
In Operation 410 sendet der Controller oder Befehlsprozessor ein Unterbrechungssignal an den Host, um dem Host mitzuteilen oder anzuzeigen, dass die Beendigungswarteschlange bereit ist, gelesen oder verarbeitet zu werden. Das Unterbrechungssignal zeigt dem Host an, dass der Befehl ausgeführt wurde und die mit dem Befehl verbundenen Daten im Speicher verfügbar sind. Der Host kann dann die Beendigungswarteschlange verarbeiten. So kann beispielsweise das Verfahren 400 den Operationen 362 und 364 des Verfahrens 300 vorangestellt werden. 5 ist ein Flussdiagramm, das ein Verfahren 500 zum Begrenzen der Bandbreite durch Verzögern des Sendens eines Unterbrechungssignals an eine Hostvorrichtung gemäß einer Ausführungsform veranschaulicht. Verfahren 500 kann in Verbindung mit Verfahren 300 und/oder Verfahren 400 verwendet werden. Zum Beispiel werden im Verfahren 500 die Operationen 350 und 352 des Verfahrens 300 nicht dargestellt. Verfahren 500 kann jedoch mit den Operationen 350 und 352 des Verfahrens 300 beginnen. Ferner kann Verfahren 500 mit dem Speichersystem 100 mit einer Hostvorrichtung 104 und einer Speichervorrichtung 106 umfassend einen Controller 108 verwendet werden. Das Verfahren 500 kann ferner mit dem Speichersystem 200 mit einer Hostvorrichtung 204 und einer Speichervorrichtung 206 umfassend einen Befehlsprozessor 220 verwendet werden.
-
In Operation 502 ruft ein Controller oder Befehlsprozessor der Speichervorrichtung einen oder mehrere Befehle aus einer Übertragungswarteschlange eines Hosts ab und führt den einen oder die mehreren Befehle mit voller Geschwindigkeit aus. Volle Geschwindigkeit kann die normale Betriebsgeschwindigkeit oder die schnellste Bandbreitengeschwindigkeit sein. Es gibt keine Verzögerung beim Abrufen oder Ausführen des Befehls. Die Befehle können Lese- oder Schreibbefehle sein. Das Ausführen des Befehls weist das Schreiben oder Übertragen der Befehlsdaten an den Host auf.
-
In Operation 504 schreibt der Controller oder Befehlsprozessor einen Beendigungseintrag entsprechend jedem der einen oder mehreren ausgeführten Befehle in eine Beendigungswarteschlange des Hosts und aktualisiert den CQ-Kopfzeiger, um auf einen der neu geschriebenen Beendigungseinträge zu zeigen. Die jedem ausgeführten Befehl entsprechenden Beendigungseinträge können in beliebiger Reihenfolge in die Beendigungswarteschlange geschrieben werden, unabhängig von der jedem Befehl zugeordneten QoS-Ebene der Bandbreite. Der Host wird durch das Schreiben der Beendigungseinträge in die Beendigungswarteschlange des Hosts und das Aktualisieren des CQ-Kopfzeigers nicht darüber informiert, dass die Befehle ausgeführt wurden und bereit sind, vom Host gelesen oder verarbeitet zu werden. Ferner kann Verfahren 500 in Verbindung mit den Operationen 404 bis 408 des Verfahrens 400 verwendet werden und kann das Schreiben der Beendigungseinträge in die Beendigungswarteschlange und/oder das Aktualisieren des CQ-Kopfzeigers verzögern.
-
In Operation 506 verzögert der Controller oder Befehlsprozessor das Senden eines Unterbrechungssignals an den Host für eine vorbestimmte Zeitspanne. Die vorbestimmte Zeitspanne basiert auf der jedem der Befehle zugeordneten Ebene der QoS-Bandbreite. Die Verzögerungsdauer ist direkt proportional zu dem Prioritätsrang oder der Prioritätsstufe, der bzw. die dem Befehl zugeordnet ist. Je niedriger beispielsweise die dem Befehl zugeordnete Priorität oder QoS-Ebene der Bandbreite, desto länger kann die Verzögerung sein. Je höher die dem Befehl zugeordnete Priorität oder QoS-Ebene der Bandbreite, desto kürzer kann die Verzögerung sein. Die Befehle mit der höchsten Priorität haben möglicherweise keine Verzögerung, wie beispielsweise in mandantenfähigen Systemen mit zahlreichen Preisstufen.
-
Die Verzögerung kann durch das Ablaufen eines Countdowns oder das Erreichen eines Countdowns verursacht werden. Die Speichervorrichtung kann einen Zeitgeber umfassen, der die Verzögerung auch entsprechend der einem Befehl zugeordneten QoS-Ebene der Bandbreite einstellen kann. Die Verzögerung kann ferner auf einem oder mehreren Countdown-Zählern, einem Zähler für eine Anzahl ausgeführter Befehle, der verfügbaren Bandbreite und einer Anzahl von Befehlen in der Übertragungswarteschlange basieren. Die Verzögerung kann ferner auf einem maximalen oder minimalen Bandbreiten-Deskriptor, maximalen oder minimalen QoS-Zuverlässigkeiten und einer Mischung aus QoS und Bandbreitenmaxima und -minima basieren.
-
In Operation 508 löst der Controller oder Befehlsprozessor das Senden des Unterbrechungssignals an den Host aus. Das Unterbrechungssignal benachrichtigt oder zeigt dem Host an, dass die Beendigungswarteschlange bereit ist, gelesen oder verarbeitet zu werden. Das Unterbrechungssignal zeigt dem Host an, dass der Befehl ausgeführt wurde und die mit dem Befehl verbundenen Daten im Speicher verfügbar sind. Das Senden des Unterbrechungssignals an den Host kann auf mindestens zwei Arten ausgelöst werden. Ein erster Auslöser wird in Operation 510 beschrieben und ein zweiter Auslöser wird in Operation 512 beschrieben.
-
In Operation 510 sendet der Controller oder Befehlsprozessor automatisch das Unterbrechungssignal an den Host, wenn die vorgegebene Zeitspanne erreicht ist. Der ablaufende Timer oder Countdown oder der erreichte Zählerstand kann die Speichervorrichtung veranlassen, das Unterbrechungssignal automatisch zu senden.
-
In Operation 512 sendet der Controller oder Befehlsprozessor das Unterbrechungssignal an den Host, nachdem ein Beendigungseintrag entsprechend einem neu ausgeführten Befehl in die Beendigungswarteschlange geschrieben wurde. Der neu ausgeführte Befehl ist einer QoS-Ebene der Bandbreite mit höherer Priorität zugeordnet als die zuvor ausgeführten Befehle. Wenn beispielsweise ein oder mehrere Beendigungseinträge, die einer niedrigeren Priorität zugeordneten Befehlen entsprechen, in die Beendigungswarteschlange geschrieben werden, würde das Schreiben in die Beendigungswarteschlange eines Beendigungseintrags, der einem Befehl höherer Priorität entspricht, das Senden des Unterbrechungssignals auslösen. Somit würde das Schreiben eines Beendigungseintrags, der einem Befehl höherer Priorität zugeordnet ist, das Senden des Unterbrechungssignals auslösen und alle in die Beendigungswarteschlange zuvor geschriebenen Beendigungseinträge entleeren.
-
Wenn beispielsweise auf das oben erwähnte Beispiel der Implementierung von fünf QoS-Ebenen der Bandbreite entsprechend fünf Preisstufen eingegangen wird, kann ein Händler fünf QoS-Ebenen der Bandbreite auswählen und bestimmen, dass Ebene 5 die höchste Priorität und Ebene 1 die niedrigste Priorität darstellen. Der Händler kann ferner auswählen, dass das Schreiben in die Beendigungswarteschlange eines Beendigungseintrags, der einem Befehl der Ebene 4 oder höher zugeordnet ist, alle zuvor geschriebenen Beendigungseinträge, die einem Befehl der Ebene 3 oder niedriger zugeordnet sind, löschen wird. Somit würde ein Beendigungseintrag, der einem Befehl der Ebene 3 oder niedriger zugeordnet ist, nicht das Senden des Unterbrechungssignals auslösen. Jedoch würde ein Beendigungseintrag, der einer Ebene 4 oder höher zugeordnet ist, das Senden des Unterbrechungssignals auslösen und die Beendigungswarteschlange entleeren.
-
Der Host kann dann die Beendigungswarteschlange nach dem Empfangen des Unterbrechungssignals verarbeiten. Beispielsweise kann Verfahren 400 dann den Operationen 362 und 364 des Verfahrens 300 vorangestellt werden.
-
6 ist ein Flussdiagramm zur Veranschaulichung eines Verfahrens 600 zum Begrenzen der Bandbreite durch Entfernen eines Beendigungseintrags aus einer Beendigungswarteschlange, um die Beendigungseinträge neu zu ordnen, gemäß einer Ausführungsform. Verfahren 600 kann in Verbindung mit Verfahren 300, Verfahren 400 und/oder Verfahren 500 verwendet werden. Zum Beispiel sind im Verfahren 600 die Operationen 350 und 352 des Verfahrens 300 nicht dargestellt. Verfahren 600 kann jedoch mit den Operationen 350 und 352 des Verfahrens 300 beginnen. Ferner kann Verfahren 600 mit dem Speichersystem 100 mit einer Hostvorrichtung 104 und einer Speichervorrichtung 106 umfassend einen Controller 108 verwendet werden. Das Verfahren 600 kann ferner mit dem Speichersystem 200 mit einer Hostvorrichtung 204 und einer Speichervorrichtung 206 umfassend einen Befehlsprozessor 220 verwendet werden.
-
In Operation 602 ruft ein Controller oder Befehlsprozessor der Speichervorrichtung einen ersten Befehl aus einer Übertragungswarteschlange eines Hosts ab und führt den ersten Befehl mit voller Geschwindigkeit aus. Volle Geschwindigkeit kann die normale Betriebsgeschwindigkeit oder die schnellste Bandbreitengeschwindigkeit sein. Es gibt keine Verzögerung beim Abrufen oder Ausführen des Befehls. Die Befehle können Lese- oder Schreibbefehle sein. Das Ausführen des Befehls weist das Schreiben oder Übertragen der Befehlsdaten an den Host auf.
-
In Operation 604 schreibt der Controller oder Befehlsprozessor einen dem ersten Befehl zugeordneten Beendigungseintrag in eine Beendigungswarteschlange des Hosts. Das Schreiben des dem ersten Befehl zugeordneten Beendigungseintrags in die Beendigungswarteschlange kann, wie vorstehend in Verfahren 400 beschrieben, verzögert werden.
-
In Operation 606 ruft der Controller oder Befehlsprozessor einen zweiten Befehl aus der Übertragungswarteschlange des Hosts ab und führt den zweiten Befehl mit voller Geschwindigkeit aus. In Operation 608 bestimmt der Controller oder Befehlsprozessor, dass der zweite Befehl eine höhere Priorität als der erste Befehl hat. Die Priorität des ersten und zweiten Befehls wird aus der den Befehlen zugeordneten QoS-Ebene der Bandbreite bestimmt. Die QoS-Ebene der Bandbreite der Befehle kann von der Speichervorrichtung mit den Befehlen aus der Übertragungswarteschlange abgerufen werden. Die QoS-Ebene der Bandbreite kann basierend auf der Position jedes Befehls in einer Übertragungswarteschlange bestimmt werden. In mindestens einer Implementierung schließt die Hostvorrichtung die QoS-Ebene der Bandbreite eines Befehls im Header des Befehls ein. Die Speichervorrichtung kann dann den Header des Befehls lesen, um die zugehörige QoS-Ebene der Bandbreite zu bestimmen.
-
In Operation 610 entfernt der Controller oder Befehlsprozessor den dem ersten Befehl zugeordneten Beendigungseintrag aus der Beendigungswarteschlange. Der dem ersten Befehl zugeordnete Beendigungseintrag kann aus der Beendigungswarteschlange gelöscht werden, oder der dem ersten Befehl zugeordnete Beendigungseintrag kann aus der Beendigungswarteschlange abgerufen und über eine Schnittstelle wieder auf die Speichervorrichtung übertragen werden.
-
In Operation 612 schreibt der Controller oder Befehlsprozessor einen dem zweiten Befehl zugeordneten Beendigungseintrag in die Beendigungswarteschlange des Hosts. In Operation 614 schreibt der Controller oder Befehlsprozessor den dem ersten Befehl zugeordneten Beendigungseintrag erneut in die Beendigungswarteschlange. Durch Entfernen des dem ersten Befehl zugeordneten Beendigungseintrags aus der Beendigungswarteschlange und erneutes Schreiben des dem ersten Befehl zugeordneten Beendigungseintrags nach dem Schreiben des dem zweiten Befehl zugeordneten Beendigungseintrags kann die Beendigungswarteschlange neu organisiert oder in der Reihenfolge ihrer Priorität neu angeordnet werden. Somit kann der Beendigungseintrag, der dem zweiten Befehl mit einem höheren Prioritätsrang zugeordnet ist, vor dem Beendigungseintrag, der dem ersten Befehl mit einem niedrigeren Prioritätsrang zugeordnet ist, verarbeitet werden.
-
In Operation 616 aktualisiert oder bewegt der Controller den internen Kopfzeiger der Beendigungswarteschlange, um auf einen der neu geschriebenen Beendigungseinträge in der Beendigungswarteschlange zu zeigen. Der Controller kann den CQ-Kopfzeiger auf einen der zuletzt geschriebenen Beendigungseinträge bewegen. Wenn der Controller zum Beispiel drei Befehle verarbeitet und die aktualisierten Beendigungseinträge in die Beendigungswarteschlange geschrieben hat, kann der Controller einen der drei neu geschriebenen Beendigungseinträge auswählen, um den CQ-Kopfzeiger zu bewegen und den Host darüber zu informieren, dass der spezifische Befehl und alle zuvor in der Beendigungswarteschlange erschienenen Beendigungseinträge der Befehle verarbeitet wurden.
-
In Operation 618 sendet der Controller oder Befehlsprozessor ein Unterbrechungssignal an den Host, um dem Host mitzuteilen oder anzuzeigen, dass die Beendigungswarteschlange bereit ist, gelesen oder verarbeitet zu werden. Das Unterbrechungssignal zeigt dem Host an, dass der Befehl ausgeführt wurde und die mit dem Befehl verbundenen Daten im Speicher verfügbar sind. Das Unterbrechungssignal kann unmittelbar nach dem Schreiben des dem zweiten Befehl zugeordneten Beendigungseintrags in die Beendigungswarteschlange und dem Bewegen des CQ-Kopfzeigers auf den dem zweiten Befehl zugeordneten Beendigungseintrag gesendet werden, bevor der dem ersten Befehl zugeordnete Beendigungseintrag neu geschrieben wird. Somit kann Operation 618 vor Operation 614 erfolgen. Der Host kann dann die Beendigungswarteschlange verarbeiten. Beispielsweise kann Verfahren 600 dann den Operationen 362 und 364 des Verfahrens 300 vorangestellt werden.
-
7A bis 7C sind Flussdiagramme, die Verfahren 700, 710 und 730 zum Begrenzen der Bandbreite durch Lesen eines Headers eines Befehls veranschaulichen, um die zugehörige QoS-Ebene der Bandbreite vor dem Ausführen des Befehls zu bestimmen, gemäß verschiedenen Ausführungsformen. Die Verfahren 700, 710 und 730 können in Verbindung mit Verfahren 300, Verfahren 400, Verfahren 500 und/oder Verfahren 600 verwendet werden. Zum Beispiel sind in den Verfahren 700, 710 und 730 die Operationen 350 und 352 des Verfahrens 300 nicht dargestellt. Jedes der Verfahren 700, 710 und 730 kann jedoch mit den Operationen 350 und 352 des Verfahrens 300 beginnen. Ferner können die Verfahren 700, 710 und 730 mit dem Speichersystem 100 mit einer Hostvorrichtung 104 und einer Speichervorrichtung 106 umfassend einen Controller 108 verwendet werden. Die Verfahren 700, 710 und 730 können ferner mit dem Speichersystem 200 mit einer Hostvorrichtung 204 und einer Speichervorrichtung 206 umfassend einen Befehlsprozessor 220 verwendet werden.
-
7A veranschaulicht ein Verfahren 700 der Speichervorrichtung, das einen oder mehrere Befehle in der Reihenfolge der Priorität gemäß einer Ausführungsform ausführt. In Operation 702 ruft ein Controller oder Befehlsprozessor der Speichervorrichtung einen oder mehrere Befehle aus einer Übertragungswarteschlange eines Hosts mit voller Geschwindigkeit ab. Die Befehle können Lese- oder Schreibbefehle sein.
-
In Operation 704 liest der Controller oder Befehlsprozessor einen Header von jedem der einen oder mehreren Befehle, um eine QoS-Ebene der Bandbreite zu bestimmen, die jedem der einen oder mehreren Befehle zugeordnet ist. Die zugeordnete QoS-Ebene der Bandbreite der Befehle identifiziert die Priorität jedes der einen oder mehreren Befehle. Der Header jedes Befehls kann die dem Befehl zugeordnete QoS-Ebene der Bandbreite und andere Informationen umfassen. Der Host kann beim Schreiben der Befehle in die Übertragungswarteschlange für jeden Befehl einen Header schreiben. Somit wird beim Abrufen der Befehle in Operation 702 auch der Header jedes Befehls abgerufen. Auf diese Weise kann vor der Ausführung der Befehle die jedem Befehl zugeordnete Prioritätsstufe und QoS-Ebene der Bandbreite bestimmt werden.
-
In Operation 706 führt der Controller oder Befehlsprozessor in der Reihenfolge der Priorität von hoher Priorität nach niedriger Priorität jeweils einen Befehl mit voller Geschwindigkeit aus. Unmittelbar nach der Ausführung eines Befehls schreibt der Controller oder Befehlsprozessor einen dem ausgeführten Befehl entsprechenden Beendigungseintrag in die Beendigungswarteschlange, aktualisiert den CQ-Kopfzeiger auf den dem ausgeführten Befehl entsprechenden Beendigungseintrag in der Beendigungswarteschlange und sendet ein Unterbrechungssignal an den Host. Somit werden die Befehle, beginnend mit den Befehlen mit der höchsten Priorität, ausgeführt und nacheinander als ein Beendigungseintrag in der Beendigungswarteschlange geschrieben, der CQ-Kopfzeiger wird aktualisiert und ein Unterbrechungssignal wird gesendet.
-
In Operation 708 wiederholt der Controller oder Befehlsprozessor den Vorgang 706 ein- oder mehrmals, bis jeder der einen oder mehreren Befehle in der Reihenfolge der Priorität von hoher Priorität nach niedriger Priorität verarbeitet wurde. Bei jeder Wiederholung der Operation 706 wird ein Befehl mit der gleichen oder einer niedrigeren Prioritätsstufe als der zuvor bearbeitete Befehl ausgeführt. Der Host kann dann die Beendigungswarteschlange verarbeiten. Beispielsweise kann Verfahren 700 dann den Operationen 362 und 364 des Verfahrens 300 vorangestellt werden.
-
7B veranschaulicht ein Verfahren 710 der Speichervorrichtung, das Beendigungseinträge entsprechend einem oder mehreren ausgeführten Befehlen an eine Beendigungswarteschlange des Hosts in der Reihenfolge der Priorität gemäß einer anderen Ausführungsform sendet. Verfahren 710 kann in Verbindung mit Verfahren 700 verwendet werden.
-
In Operation 712 ruft ein Controller oder Befehlsprozessor der Speichervorrichtung einen oder mehrere Befehle aus einer Übertragungswarteschlange eines Hosts mit voller Geschwindigkeit ab. Die Befehle können Lese- oder Schreibbefehle sein. In Operation 714 liest der Controller oder Befehlsprozessor einen Header von jedem der einen oder mehreren Befehle, um eine QoS-Ebene der Bandbreite zu bestimmen, die jedem der einen oder mehreren Befehle zugeordnet ist. Die zugeordnete QoS-Ebene der Bandbreite der Befehle identifiziert die Priorität jedes der einen oder mehreren Befehle.
-
In Operation 716 führt der Controller oder Befehlsprozessor jeden der einen oder mehreren Befehle mit voller Geschwindigkeit in keiner bestimmten Reihenfolge aus. Die Befehle können in beliebiger Reihenfolge ausgeführt werden, z. B. in der Reihenfolge, in der die Befehle aus der Übertragungswarteschlange geholt wurden.
-
In Operation 718 schreibt der Controller oder Befehlsprozessor einen Beendigungseintrag für jeden der einen oder mehreren ausgeführten Befehle in eine Beendigungswarteschlange in der Reihenfolge der Priorität von hoher Priorität nach niedriger Priorität. Nach der Ausführung jedes Befehls verwendet der Controller oder Befehlsprozessor die in Operation 714 für jeden Befehl bestimmte QoS-Ebene der Bandbreite, um die Reihenfolge auszuwählen, in der die jedem Befehl zugeordneten Beendigungseinträge in die Beendigungswarteschlange geschrieben werden sollen. Die ausgeführten Befehle, die der QoS-Ebene der Bandbreite mit der höchsten Priorität zugeordnet sind, werden zuerst in die Beendigungswarteschlange geschrieben, gefolgt von den ausgeführten Befehlen, die den QoS-Ebenen der Bandbreite mit der niedrigeren Priorität zugeordnet sind.
-
In Operation 720 aktualisiert der Controller oder Befehlsprozessor den CQ-Kopfzeiger ein- oder mehrmals mit einem entsprechenden Unterbrechungssignal an den Host für jede Aktualisierung des CQ-Kopfzeigers, um dem Host mitzuteilen oder anzuzeigen, dass die Beendigungswarteschlange bereit ist, gelesen oder verarbeitet zu werden. Das Aktualisieren des CQ-Kopfzeigers mit einem entsprechenden Unterbrechungssignal zeigt an, dass der Befehl ausgeführt wurde und die mit dem Befehl verbundenen Daten im Speicher verfügbar sind. Der CQ-Kopfzeiger und das Unterbrechungssignal können unmittelbar nach dem Schreiben jedes Beendigungseintrags in die Beendigungswarteschlange aktualisiert werden, oder der CQ-Kopfzeiger und das Unterbrechungssignal können aktualisiert werden, nachdem alle Beendigungseinträge der ausgeführten abgerufenen Befehle in die Beendigungswarteschlange geschrieben wurden. In einer Ausführungsform können der CQ-Kopfzeiger und das Unterbrechungssignal aktualisiert werden, nachdem ein oder mehrere Beendigungseinträge, die Befehlen hoher Priorität entsprechen, in die Beendigungswarteschlange geschrieben wurden, wie vorstehend in Operation 512 des Verfahrens 500 beschrieben. Der Host kann dann die Beendigungswarteschlange verarbeiten. Beispielsweise kann Verfahren 710 dann den Operationen 362 und 364 des Verfahrens 300 vorangestellt werden.
-
7C veranschaulicht ein Verfahren 730 der Speichervorrichtung, wobei zu jedem ausgeführten Befehl zugeordnete Beendigungseinträge an eine entsprechende prioritätsrangige Beendigungswarteschlange des Hosts gemäß einer weiteren Ausführungsform gesendet werden. Verfahren 730 kann in Verbindung mit Verfahren 700 und/oder Verfahren 710 verwendet werden.
-
In Operation 722 ruft ein Controller oder Befehlsprozessor der Speichervorrichtung einen oder mehrere Befehle aus einer Übertragungswarteschlange eines Hosts mit voller Geschwindigkeit ab. Die Befehle können Lese- oder Schreibbefehle sein. In Operation 724 liest der Controller oder Befehlsprozessor einen Header von jedem der einen oder mehreren Befehle, um eine QoS-Ebene der Bandbreite zu bestimmen, die jedem der einen oder mehreren Befehle zugeordnet ist. Die zugeordnete QoS-Ebene der Bandbreite der Befehle identifiziert die Priorität jedes der einen oder mehreren Befehle.
-
In Operation 726 führt der Controller oder Befehlsprozessor jeden der einen oder mehreren Befehle mit voller Geschwindigkeit in keiner bestimmten Reihenfolge aus. Die Befehle können in beliebiger Reihenfolge ausgeführt werden, z. B. in der Reihenfolge, in der die Befehle aus der Übertragungswarteschlange geholt wurden.
-
In Operation 728 schreibt der Controller oder Befehlsprozessor einen Beendigungseintrag für jeden der einen oder mehreren ausgeführten Befehle in eine aus einer Vielzahl von Beendigungswarteschlangen. Jede Beendigungswarteschlange der Vielzahl von Beendigungswarteschlangen kann mit den gleichen QoS-Ebenen der Bandbreite wie die eines oder mehrerer Befehle verknüpft sein. Wenn beispielsweise die Speichervorrichtung mit fünf QoS-Ebenen der Bandbreite entsprechend fünf Preisstufen eingerichtet ist, können fünf entsprechende Beendigungswarteschlangen verwendet werden. Somit werden die Befehle niedrigster Priorität (z. B. Befehle der Ebene 1) alle an eine erste Beendigungswarteschlange der Vielzahl von Beendigungswarteschlangen gesendet, und die Befehle höchster Priorität (z. B. Befehle der Ebene 5) alle an eine zweite Beendigungswarteschlange der Vielzahl von Beendigungswarteschlangen gesendet. Operation 728 kann die Operation 718 des Verfahrens 710 beinhalten, um die Beendigungseinträge in die jeweilige Beendigungswarteschlange in der Reihenfolge der Priorität von hoher Priorität nach niedriger Priorität zu schreiben. Zum Beispiel können die Befehle mit der höchsten Priorität an ihre jeweilige Beendigungswarteschlange gesendet werden, bevor die Befehle niedrigerer Priorität in ihre jeweilige Beendigungswarteschlange geschrieben werden.
-
In Operation 732 aktualisiert der Controller oder Befehlsprozessor den CQ-Kopfzeiger ein- oder mehrmals mit einem entsprechenden Unterbrechungssignal an den Host für jede Aktualisierung des CQ-Kopfzeigers in der Reihenfolge der Priorität von hoher Priorität nach niedriger Priorität. In einer Ausführungsform, bei der die Beendigungseinträge in der Reihenfolge ihrer Priorität in die jeweiligen Beendigungswarteschlangen geschrieben werden, kann ein CQ-Kopfzeiger und ein Unterbrechungssignal an den Host gesendet werden, sobald ein Beendigungseintrag voll ist, oder nachdem jeder einzelne Beendigungseintrag in eine Beendigungswarteschlange geschrieben wurde. Wenn zum Beispiel in einer Ausführungsform die den Befehlen mit höchster Priorität zugeordneten Beendigungseinträge zuerst in die entsprechende Beendigungswarteschlange mit der höchsten Priorität geschrieben werden, kann ein CQ-Kopfzeiger und ein Unterbrechungssignal gesendet werden, sobald alle den Befehlen mit höchster Priorität zugeordneten Beendigungseinträge geschrieben wurden. In einer anderen Ausführungsform kann ein Unterbrechungssignal an den Host unmittelbar nach dem Schreiben eines einer Beendigungswarteschlange zugeordneten Beendigungseintrags, in der Reihenfolge der Priorität von hoher Priorität nach niedriger Priorität, gesendet werden. Beispielsweise können, beginnend mit der Beendigungswarteschlange mit der höchsten Priorität und dem Befehl mit der höchsten Priorität, mehrere Unterbrechungssignale nacheinander gesendet werden, wobei jeder einzelne Befehl mit der höchsten Priorität in die Beendigungswarteschlange mit der höchsten Priorität geschrieben wird. In einer anderen Ausführungsform wird der CQ-Kopfzeiger nur einmal aktualisiert, nachdem alle Beendigungseinträge in die jeweiligen Beendigungswarteschlangen geschrieben wurden. Der Host kann dann die Beendigungswarteschlangen verarbeiten. Beispielsweise kann Verfahren 730 dann den Operationen 362 und 364 des Verfahrens 300 vorangestellt werden.
-
Durch Abrufen und Ausführen eines oder mehrerer Befehle mit voller Geschwindigkeit kann die Speichervorrichtung die maximale Informationsmenge empfangen, was dazu beiträgt, zuverlässigere und genauere QoS-Ebenen der Bandbreite für SLA-Kunden aller Klassen oder Stufen bereitzustellen. Darüber hinaus können Konflikte mit den Ressourcen einer Speichervorrichtung reduziert und Daten übertragen werden, ohne dem Host die Bewegung der Daten zu bestätigen. Verschiedene QoS-Ebenen der Bandbreite können verwendet werden, ohne die Datenflussrate zu verlangsamen oder überschüssige Bandbreite zu verbrauchen, was zu präziseren und genaueren Mengen an Bandbreite führt, die Kunden angeboten werden.
-
Darüber hinaus kann ein Händler die QoS-Ebenen und Parameter der Bandbreite, entweder spontan oder im Voraus, anpassen. Durch die Möglichkeit für den Händler des Bestimmens der QoS-Ebenen und zugehörigen Parameter der Bandbreite, wie z. B. Verzögerungszeiten, kann der Händler die Konfiguration und die Einstellungen genau nach seinen Wünschen anpassen, sodass die Konfigurationen am vorteilhaftesten für die individuellen Bedürfnisse des Händlers sein werden. Auf diese Weise kann Bandbreite effektiv und zuverlässig gemäß SLAs begrenzt werden, während gleichzeitig Ressourcen der Speichervorrichtung freigegeben und Konflikte reduziert werden.
-
In einer Ausführungsform weist ein Verfahren zum Betreiben einer Speichervorrichtung das Ausführen eines einer Dienstgüte-Ebene der Bandbreite zugeordneten Befehls durch einen Controller der Speichervorrichtung auf. Der Befehl wird mit voller Geschwindigkeit ausgeführt. Das Verfahren weist ferner das Verzögern des Schreibens eines Beendigungseintrags auf, der dem ausgeführten Befehl entspricht, für eine vorgegebene Zeitspanne. Die vorgegebene Zeitspanne richtet sich nach der zugehörigen Dienstgüte-Ebene der Bandbreite. Das Verfahren weist das Auslösen des Schreibens des dem ausgeführten Befehl zugeordneten Beendigungseintrags in eine Beendigungswarteschlange auf. Das Schreiben des Beendigungseintrags in die Beendigungswarteschlange wird nach Erreichen der vorgegebenen Zeitspanne ausgelöst.
-
Das Verfahren kann ferner das Empfangen einer Türklingel umfassen, die signalisiert, dass sich der Befehl vor der Ausführung des Befehls in einer Übertragungswarteschlange befindet. Das Verfahren kann ferner das Abrufen des Befehls aus der Übertragungswarteschlange vor dem Ausführen des Befehls mit voller Geschwindigkeit umfassen. Die zugeordnete Dienstgüte-Ebene der Bandbreite des Befehls kann die Priorität des Befehls bestimmen. Die vorgegebene Zeitspanne kann für Dienstgüte-Ebenen der Bandbreite mit niedriger Priorität länger sein als für Dienstgüte-Ebenen der Bandbreite mit höherer Priorität. Die vorgegebene Zeitspanne kann auf einem Countdown, einem zu erreichenden Zählerstand oder einem Timer basieren. Das Verfahren kann ferner das Verzögern der Aktualisierung eines Kopfzeigers einer Beendigungswarteschlange umfassen, um für eine vorgegebene Zeitspanne auf den Beendigungseintrag zu zeigen. Die vorgegebene Zeitspanne kann sich nach der zugehörigen Dienstgüte-Ebene der Bandbreite richten.
-
In einer anderen Ausführungsform weist eine Speichervorrichtung eine oder mehrere Speichervorrichtungen und einen Controller, der mit der einen oder den mehreren Speichervorrichtungen gekoppelt ist, auf. Der Controller ist konfiguriert, um einen einer Dienstgüte-Ebene der Bandbreite zugeordneten Befehl mit voller Geschwindigkeit aus einer Übertragungswarteschlange abzurufen, den Befehl auszuführen, einen dem ausgeführten Befehl entsprechenden Beendigungseintrag in eine Beendigungswarteschlange zu schreiben und das Senden eines Unterbrechungssignals zu verzögern, das anzeigt, dass die Beendigungswarteschlange zum Lesen bereit ist. Die Verzögerung basiert auf der dem Befehl zugeordneten Dienstgüte-Ebene der Bandbreite.
-
Die zugeordnete Dienstgüte-Ebene der Bandbreite des Befehls kann die Priorität des Befehls bestimmen. Der Controller kann eine Einstellungsseite aufweisen, wobei die Einstellungsseite eine oder mehrere Dienstgüte-Ebenen der Bandbreite bestimmt. Die eine oder mehreren Dienstgüte-Ebenen der Bandbreite können auf einer oder mehreren von einer Tageszeit, einer Kundennummer, einer Anzahl zuvor abgerufener Befehle und einer verfügbaren Bandbreite basieren. Die Verzögerung kann für Dienstgüte-Ebenen der Bandbreite mit niedriger Priorität länger sein als für Dienstgüte-Ebenen der Bandbreite mit höherer Priorität. Die Verzögerung kann ferner auf einem oder mehreren Countdown-Zählern, einem Zähler für eine Anzahl ausgeführter Befehle, der verfügbaren Bandbreite und einer Anzahl von Befehlen in der Übertragungswarteschlange basieren. Die Speichervorrichtung kann ferner einen Bandbreitenbegrenzer aufweisen, der mit dem Controller gekoppelt ist.
-
In einer weiteren Ausführungsform weist ein Speichersystem eine Hostvorrichtung und eine mit der Hostvorrichtung gekoppelte Speichervorrichtung auf. Die Speichervorrichtung weist eine oder mehrere Speichervorrichtungen und einen Controller auf, der mit der einen oder den mehreren Speichervorrichtungen gekoppelt ist. Der Controller ist konfiguriert, um eine Vielzahl von Befehlen aus einer Übertragungswarteschlange mit voller Geschwindigkeit abzurufen, um Header von jedem der Vielzahl von Befehlen zu lesen, um eine zugehörige Dienstgüte-Ebene der Bandbreite von jedem der Vielzahl von Befehlen zu bestimmen, und um die Vielzahl von Befehlen in der Reihenfolge von hoher bis niedriger Priorität basierend auf der zugehörigen Dienstgüte-Ebene der Bandbreite jedes der Vielzahl von Befehlen auszuführen.
-
Der Controller kann ferner konfiguriert sein, um die jedem der Vielzahl von Befehlen zugeordneten Beendigungseinträge an eine Vielzahl von Beendigungswarteschlangen zu senden, nachdem jeder der Vielzahl von Befehlen ausgeführt wurde. Jede Beendigungswarteschlange der Vielzahl von Beendigungswarteschlangen kann einer anderen Dienstgüte-Ebene der Bandbreite zugeordnet sein. Die jedem der Vielzahl von Befehlen zugeordnete Dienstgüte-Ebene der Bandbreite kann den verschiedenen der Vielzahl von Beendigungswarteschlangen zugeordneten Dienstgüte-Ebenen der Bandbreite entsprechen. Der Controller kann ferner konfiguriert werden, um ein oder mehrere Unterbrechungssignale an die Hostvorrichtung zu senden, um anzuzeigen, dass mindestens eine der Vielzahl von Beendigungswarteschlangen zum Lesen bereit ist. Der Controller kann das eine oder die mehreren Unterbrechungssignale in der Reihenfolge von hoher bis niedriger Priorität an die Hostvorrichtung, basierend auf der zugehörigen Dienstgüte-Ebene der Bandbreite jeder der Vielzahl von Beendigungswarteschlangen, senden.
-
Während sich das Vorstehende auf Ausführungsformen der vorliegenden Offenbarung bezieht, können andere und weitere Ausführungsformen der Offenbarung ausgearbeitet werden, ohne vom grundlegenden Umfang abzuweichen, und der Umfang wird durch die nachstehenden Ansprüche bestimmt.