-
QUERVERWEIS AUF VERWANDTE ANMELDUNG
-
Diese Anmeldung beansprucht die Priorität der US-Patentanmeldung Nr.
16/600.816 , eingereicht am 14. Oktober 2019, die der Anmelderin zugeordnet ist und durch Bezugnahme in ihrer Gesamtheit hierin eingeschlossen ist.
-
HINTERGRUND DER OFFENBARUNG
-
Gebiet der Offenbarung
-
Ausführungsformen der vorliegenden Offenbarung beziehen sich im Allgemeinen auf die Verwaltung einer Datenspeicherung und insbesondere auf das Rücksetzen einer NVMe-Vorrichtung.
-
Beschreibung des Stands der Technik
-
Während des Betriebs eines Hostsystems, das eine Datenspeicherungsvorrichtung mit NVMe (non-volatile memory express) enthält, ist es gelegentlich erforderlich, dass der NVMe einer Rücksetzungsoperation unterzogen wird.
-
Es gibt zwei Hauptphasen, die eine solche Rücksetzungsoperation bilden. Die erste ist die Behandlung der Vorrichtungsrücksetzung. Während der Rücksetzungsbehandlung wird eine Anzahl von Operationen ausgeführt, einschließlich, aber nicht beschränkt auf die Beendigung gegenwärtig ausstehender Verwaltungs- oder E/A-Prozesse, das Löschen von E/A-Übermittlungs- und Beendigungswarteschlangen, der Übergang der NVMe-Steuerung in einen Ruhezustand, das Leeren aller zwischengespeicherten Daten in das NAND und eine Aktualisierung von FTL-Tabellen in Vorbereitung auf die nächste Operation.
-
Sobald die Rücksetzungsoperationen abgeschlossen sind, wird die NVMe-Vorrichtung neu initialisiert und beginnt die zweite Phase des Rücksetzens der NVMe-Vorrichtung. Die Vorrichtung wird durch den Host mit einer Anzahl von Operationen neu initialisiert, wie Aktualisierung des Registerzustands, Konfiguration der NVMe-Steuerung, Erzeugen von E/A-Beendigungs- und Übermittlungswarteschlangen, und sobald diese abgeschlossen sind, Fortsetzung der normalen E/A-Operation des NVMe.
-
Die Rücksetzungs- und Neuinitialisierungsprozesse werden jedoch typischerweise seriell durchgeführt. Da nicht bekannt ist, wie lange die Rücksetzungs- und/oder Neuinitialisierungsphasen dauern dürfen, ist es unbekannt, wie lange der gesamte Prozess dauern wird. Da diese Zeit unbekannt ist, erfüllt der NVMe-Rücksetzungsprozess, gefolgt von einer Neuinitialisierung, möglicherweise keine standardbasierten Erwartungen eines Hostsystems. Solche Standards können NVMe, PCle und/oder andere Standards für die Verwendung von Speicherhardware einschließen.
-
Was benötigt wird, sind ein System und ein Verfahren zum Rücksetzen einer NVMe-Vorrichtung auf eine Weise, die zeitlich vorhersagbarer und standardkonform ist.
-
KURZDARSTELLUNG DER OFFENBARUNG
-
Ausführungsformen der vorliegenden Offenbarung versuchen, die Zeitprobleme früherer Ansätze zu mildern, indem das Rücksetzen und die Neuinitialisierung nach dem Rücksetzen von NVMe-, PCle- oder anderen Vorrichtungen parallel durchgeführt werden. In Ausführungsformen sind die Rücksetzungs- und Neuinitialisierungsoperationen der NVMe-Vorrichtung logisch in Front-End- und Back-End-Operationen unterteilt, die parallel ausgeführt werden können. Nach Empfang des Rücksetzungsbefehls von einem Host führt die NVMe-Vorrichtung Front-End-Rücksetzungsoperationen zum Rücksetzen der Vorrichtung aus und führt parallel Back-End-Neuinitialisierungsoperationen durch. Sobald die Front-End-Rücksetzungsoperationen abgeschlossen sind, oder nach einer vorbestimmten Zeitdauer, meldet die NVMe-Vorrichtung dem Host, dass die Vorrichtungsrücksetzung abgeschlossen ist, während Back-End-Operationen fortgesetzt werden. Sobald alle Rücksetzungs- und Neuinitialisierungsoperationen abgeschlossen sind, kann die NVMe-Vorrichtung fortfahren, E/A-Anweisungen vom Host auszuführen.
-
In einer Ausführungsform wird eine Datenspeicherungsvorrichtung offenbart. In Ausführungsformen kann die Datenspeicherungsvorrichtung eine Steuerung einschließen, die Anweisungen aufweist, welche, wenn sie von einem Prozessor ausgeführt werden, die Steuerung veranlassen, ein Verfahren zum Rücksetzen der Datenspeicherungsvorrichtung durchzuführen. In Ausführungsformen weist das Verfahren das logische Trennen eines Satzes von Front-End-Rücksetzungsaufgaben von einem Satz von Back-End-Rücksetzungsaufgaben, das Empfangen eines Rücksetzungsbefehls von einem Hostsystem, das parallele Durchführen des Satzes von Front-End-Rücksetzungsaufgaben und des Satzes von Back-End-Rücksetzungsaufgaben nach Empfang des Rücksetzungsbefehls auf. Das Verfahren kann weiterhin das Übertragen eines Rücksetzungsabschlusssignals an das Hostsystem nach Abschluss des Satzes von Front-End-Rücksetzungsaufgaben und das Übertragen eines Speicherungsvorrichtungs-Bereitschaftssignals an das Hostsystem, das angibt, dass sich die Speicherungsvorrichtung in einem Zustand zum Empfangen eines Befehls von dem Hostsystem befindet, aufweisen. In Ausführungsformen kann das Verfahren weiterhin das Empfangen eines Befehls von dem Hostsystem und das Ausführen des Befehls, wenn der Satz von Back-End-Rücksetzungsaufgaben abgeschlossen ist, aufweisen.
-
In einer anderen Ausführungsform wird ein Datenspeicherungssystem offenbart. Das Datenspeicherungssystem schließt in Ausführungsformen eine Schnittstelle ein, die konfiguriert ist, um Rücksetzungsanweisungen von einem Host zu empfangen, ein Front-End-Modul, das konfiguriert ist, um Front-End-Rücksetzungsoperationen auszuführen, und ein Back-End-Modul, das konfiguriert ist, um Back-End-Rücksetzungsoperationen auszuführen. Dieses System kann weiterhin ein Rücksetzungsbehandlungsmodul aufweisen, das konfiguriert ist, um das Front-End-Modul logisch von dem Back-End-Modul zu trennen, wobei die Front-End-Rücksetzungsoperationen und Back-End-Rücksetzungsoperationen parallel ausgeführt werden, und das Rücksetzungsbehandlungsmodul ist konfiguriert, um mit dem Host nach Abschluss von Front-End-Operationen zu kommunizieren, dass Rücksetzungsoperationen abgeschlossen sind.
-
In einer anderen Ausführungsform wird ein Datenspeicherungssystem offenbart, das eine Steuerung aufweist, die einen Prozessor zum Ausführen von Computeranweisungen zum Rücksetzen des Datenspeicherungssystems einschließt. In Ausführungsformen kann die Steuerung ein Front-End-Modul, das konfiguriert ist, um Front-End-Rücksetzungsoperationen auszuführen, ein Back-End-Modul, das konfiguriert ist, um Back-End-Rücksetzungsoperationen auszuführen, und ein Mittel zum logischen Trennen der Front-End-Rücksetzungsoperationen von den Back-End-Rücksetzungsoperationen einschließen, sodass die Front-End-Rücksetzungsoperationen und Back-End-Rücksetzungsoperationen parallel ausgeführt werden.
-
Figurenliste
-
Zur Verdeutlichung der Art und Weise, wie die vorstehend angegebenen 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 veranschaulicht sind und diese daher nicht als ihren Schutzumfang einschränkend anzusehen sind, da die Offenbarung andere ebenso wirksame Ausführungsformen zulassen kann.
- 1 zeigt eine NVMe-Vorrichtung gemäß einer oder mehreren Ausführungsformen.
- 2 zeigt ein Flussdiagramm, das ein verschachteltes NVMe-Rücksetzen und Neuinitialisieren gemäß einer oder mehreren Ausführungsformen beschreibt.
- 3 zeigt ein beispielhaftes Verarbeitungssystem zum verschachtelten Rücksetzen und Neuinitialisieren einer NVMe-Vorrichtung gemäß einer oder mehreren Ausführungsformen.
- 4 zeigt ein beispielhaftes Zeitdiagramm gemäß offenbarten Ausführungsformen.
-
Zum besseren Verständnis wurden, soweit möglich, identische Bezugszeichen verwendet, um identische Elemente zu bezeichnen, die den Figuren gemein 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 versteht sich jedoch, 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. Obwohl Ausführungsformen der Offenbarung Vorteile gegenüber anderen möglichen Lösungen und/oder gegenüber dem Stand der Technik erzielen können, ist die Offenbarung nicht einschränkend, ob ein bestimmter Vorteil durch eine bestimmte Ausführungsform erreicht wird oder nicht. Die folgenden Gesichtspunkte, Merkmale, Ausführungsformen und Vorteile sind daher nur veranschaulichend und gelten nicht als Elemente oder Einschränkungen der beiliegenden Ansprüche, es sei denn, sie werden ausdrücklich in einem oder mehreren Ansprüchen angegeben. Ebenso soll eine Bezugnahme auf „die Offenbarung“ nicht als Verallgemeinerung eines hierin offenbarten erfinderischen Gegenstands ausgelegt werden und soll nicht als Element oder Einschränkung der beiliegenden Ansprüche betrachtet werden, es sei denn, dies wird ausdrücklich in einem Anspruch bzw. in Ansprüchen angegeben.
-
Ausführungsformen der vorliegenden Offenbarung versuchen, die Zeitprobleme früherer Ansätze zu mildern, indem das Rücksetzen der NVMe-Vorrichtung und die erneute Initialisierung nach dem Rücksetzen parallel durchgeführt werden. In Ausführungsformen sind die Rücksetzungs- und Neuinitialisierungsoperationen der NVMe-Vorrichtung logisch unterteilt. Rücksetzungsoperationen sind in Front-End-Operationen und Back-End-Operationen unterteilt, wobei Back-End-Rücksetzungsoperationen parallel zu Neuinitialisierungsoperationen ausgeführt werden. Nach Empfang des Rücksetzungsbefehls von einem Host führt die NVMe-Vorrichtung Front-End-Rücksetzungsoperationen zum Rücksetzen der Vorrichtung aus. Sobald die Front-End-Rücksetzungsoperationen abgeschlossen sind, oder nach einer vorbestimmten Zeitdauer, meldet die NVMe-Vorrichtung dem Host, dass die Vorrichtungsrücksetzung abgeschlossen ist, während die Neuinitialisierung der Vorrichtung und die Back-End-Operationen fortgesetzt werden. Sobald alle Rücksetzungs- und Neuinitialisierungsoperationen abgeschlossen sind, kann die NVMe-Vorrichtung fortfahren, E/A-Anweisungen vom Host auszuführen.
-
1 stellt eine beispielhafte NVMe-Vorrichtung 100 dar. Die NVMe-Vorrichtung 100 kann jede Art von Speicherungsvorrichtung mit nichtflüchtigem Speicher sein, jedoch können hierin offenbarte Ausführungsformen auf andere Arten von Datenspeicherungsvorrichtungen anwendbar sein. Geeignete Mittel für die NVMe-Vorrichtung 100 schließen Festkörperlaufwerke (SSD) ein und können andere Speicherungsvorrichtungen einschließen, die nichtflüchtigen und/oder flüchtigen Speicher verwenden.
-
Die NVMe-Vorrichtung 100 schließt eine NVMe-Vorrichtungssteuerung 105 gemäß Ausführungsformen ein. Die NVMe-Gerätesteuerung 105 schließt einen Rücksetzungsbehandler 110 ein. Der Rücksetzungsbehandler 110 schließt einen Rücksetzungsbehandlerprozessor 111 und Anweisungen ein, die in der Lage sind, Rücksetzungsoperationen für die NVMe-Vorrichtungssteuerung 105 zu verwalten. Geeignete Mittel zur Verwaltung von Rücksetzungsoperationen können in Hardware, Firmware, Software oder einem anderen Medium implementiert sein, das in der Lage ist, Anweisungen zu speichern, die vom Rücksetzungsbehandler 110 gelesen werden können. Der Rücksetzungsbehandler 110 in einigen Ausführungsformen schließt weiterhin eine Rücksetzungsbehandlerbewertung 112 zum Bewerten der Zeit zum Melden der abgeschlossenen Rücksetzung an einen Host 130 ein.
-
Der Rücksetzungsbehandler 110 kommuniziert mit einem Front-End 115 und einem Back-End 120. Der Rücksetzungsbehandler 110 dient neben dem Steuern der Operationen des Front-End 115 und Back-End 120 zum funktionalen und/oder logischen Trennen der Funktion jeder dieser Komponenten. Wie nachstehend erörtert, ist das Front-End 115 konfiguriert, um Rücksetzungsoperationen sowie Vorrichtungsneuinitialisierungsoperationen auszuführen. Der Rücksetzungsbehandler 110 in Ausführungsformen ist konfiguriert, um auch diese Funktionen des Front-End 115 logisch zu trennen. Die logische Trennung in Ausführungsformen kann auf Architekturebene der NVMe-Vorrichtung 100 durchgeführt werden.
-
Das Front-End 115 schließt einen Front-End-Prozessor 116 sowie eine Anzahl von Registern wie die NVMe-Register 117 ein und kann in einigen Ausführungsformen PCI-Konfigurationsraum 118 einschließen. Das Front-End 115 schließt Komponenten ein, die für die Interaktion mit dem Host 130 verantwortlich sind, wie PCle, PHY, MAC, NVMe, und Prozessoren, wie den Front-End-Prozessor 116. Das Front-End 115 kann konfiguriert sein, um eine Anzahl von Rücksetzungsoperationen auszuführen, einschließlich des Beendens gegenwärtig ausstehender Verwaltungs- oder E/A-Prozesse, des Löschens von E/A-Übermittlungs- und Beendigungswarteschlangen, des Übergangs der NVMe-Steuerung in einen Ruhezustand, des Entleerens aller zwischengespeicherten Daten in den NAND, des Aktualisierens der FTL-Tabellen in Vorbereitung auf die nächste Operation, des Bereinigens interner Datenbanktabellen (z. B. Kollisionstabellen), des Rücksetzens aller Status- und Konfigurationsregister, des Reinigens des Datenpfads und dergleichen. In Ausführungsformen ist das Front-End 115 konfiguriert, um die NVMe-Vorrichtung 100 neu zu initialisieren. Die Neuinitialisierung in Ausführungsformen schließt das Wiederherstellen der Verbindung zu einem Host, der mit der NVMe-Vorrichtung 100 gekoppelt ist, die PCIe-Aufzählung und -Initialisierung, die NVMe-Register-Neuinitialisierung, die Wiederherstellung von NVMe-Warteschlangen und die MSI-X-Tabelleninitialisierung ein, ist aber nicht darauf beschränkt.
-
Das Back-End 120 schließt einen Back-End-Prozessor 121 und Komponenten ein, die Module, welche für Interaktionen mit Speichern, wie DMA 122, verantwortlich sind, sowie Komponenten, die Datenintegrität gewährleisten, wie Fehlerkorrektur 123, integrieren. Das Back-End 120 in Ausführungsformen schließt Verbindungen zu einem oder mehreren NANDs und einem oder mehreren Speichern (z. B. DDR-Speicher) ein, auf die während Back-End-Rücksetzungsoperationen zugegriffen werden kann. Das Back-End 120 ist konfiguriert, um Rücksetzungsoperationen auszuführen, wie beispielsweise das Leeren aller Cache-Daten in das NAND, das Aktualisieren von Tabellen in dem NAND, das Bereinigen der internen Datenbanken, das Rücksetzen aller Status- und Konfigurationsregister und andere Hintergrundoperationen.
-
Der Host 130 verwendet die NVMe-Vorrichtung 100, die von der NVMe-Vorrichtungssteuerung 105 bei der Ausführung von E/A-Operationen gesteuert wird. Der Host 130 kann jede Art von Rechensystem sein, das in der Lage ist, die NVMe-Vorrichtung 100 zu verwenden. Geeignete Mittel für einen Host schließen eine tragbare Rechenvorrichtung, einen Desktop-/Workstation-Computer, ein verteiltes Rechensystem, ein virtualisiertes Rechensystem oder eine beliebige Art von Rechensystem ein, das in der Lage ist, die NVMe-Vorrichtung 100 zu verwenden.
-
Beim Empfangen eines Rücksetzungsbefehls bewertet die NVMe-Vorrichtungssteuerung 105 in einigen Ausführungsformen über die Rücksetzungsbehandlungsbewertung 112 des Rücksetzungsbehandlers 110, wann der Host 130 zu benachrichtigen ist, dass die Rücksetzung abgeschlossen ist und normale E/A-Operationen fortgesetzt werden können. Geeignete Mittel zur Bewertung der Zeitsteuerung der Benachrichtigung des Hosts 130 basieren auf Parametern wie der Anzahl anhängiger Befehle in der Vorrichtung, aktuelle Cache-Zwischenspeichergröße, NAND-Zustand, anhängige Hintergrundoperationen, verschmutzte Einträge in einer FTL-Tabelle, die zum NAND geleert werden sollen, und dergleichen, die im Front-End 115 während des Rücksetzens abgeschlossen werden sollten, sowie auf der geschätzten Zeit für das Rücksetzen und die Neuinitialisierung. Es sollte beachtet werden, dass die Zeit zum Benachrichtigen des Hosts als zu einer Zeit vor der Einleitung von Neuinitialisierungsoperationen und zum Abschluss seiner Rücksetzungoperationen durch das Back-End 120 bestimmt werden kann.
-
In anderen Ausführungsformen bewertet der Rücksetzungsbehandler 110 keine bestimmte Zeit, um den Host 130 zu benachrichtigen, und erzeugt stattdessen ein Signal, um den Host 130 zu benachrichtigen, dass die Rücksetzung abgeschlossen ist, wenn das Front-End 115 seine Rücksetzungsoperationen abgeschlossen hat, vor Beginn von Neuinitialisierungsoperationen und dem Abschluss von Operationen des Back-End 120.
-
Die NVMe-Vorrichtungssteuerung 105 ist in 1 so dargestellt, dass sie eine Anzahl diskreter Prozessoren aufweist, wie beispielsweise den Front-End-Prozessor 116, den Back-End-Prozessor 121 und den Steuerungsprozessor 140. Geeignete Mittel für einen oder mehrere dieser Prozessoren können jedoch ein einzelner Prozessor, mehrere Prozessoren oder ein oder mehrere Prozessoren sein, die sich entfernt von der NVMe-Vorrichtungssteuerung 105 oder der NVMe-Vorrichtung 100 befinden.
-
2 zeigt ein Flussdiagramm 200, das ein verschachteltes NVMe-Rücksetzen und -Neuinitialisieren gemäß Ausführungsformen der Offenbarung beschreibt. Bei 205 wird ein Rücksetzungsbefehl ausgegeben. In einigen Ausführungsformen kann der Host 130 oder eine andere Vorrichtung außerhalb der NVMe-Vorrichtung 100 den Rücksetzungsbefehl ausgeben, während in anderen Ausführungsformen die NVMe-Vorrichtungssteuerung 105 den Rücksetzungsbefehl ausgeben kann.
-
Bei 210 wird eine Bewertung der Zeit für die Rücksetzungsbehandlung durchgeführt, um eine Zeit zur Benachrichtigung des Hosts über den Abschluss der Rücksetzung basierend auf anhängigen Aktivitäten in dem Front-End 115, die abgeschlossen werden müssen, und einer geschätzten Zeitsteuerung, die zum Rücksetzen und zur Neuinitialisieren erforderlich ist, zu bestimmen. Das Ergebnis dieser Bewertung kann von der NVMe-Vorrichtungssteuerung 105 verwendet werden, um zu bestimmen, wann dem Host 130 zu melden ist, dass die Rücksetzung abgeschlossen ist, während parallel die NVMe-Vorrichtung 100 mit der Neuinitialisierung beginnt und weiterhin Back-End-Rücksetzoperationen verarbeitet. In einer alternativen Ausführungsform wird keine Bewertung der Zeit für die Rücksetzungsbehandlung durchgeführt, und stattdessen wird ein Rücksetzungsabschlusssignal an den Host 130 bereitgestellt, wenn das Front-End 115 seine Rücksetzungsoperationen abgeschlossen hat, bevor Neuinitialisierungsoperationen eingeleitet werden, und in Ausführungsformen vor Abschluss von Rücksetzungsoperationen des Back-End 120.
-
Bei 215 führt das Front-End-115, dessen Rücksetzungsbehandlungsoperationen logisch von seinen Neuinitialisierungsoperationen und funktional von dem Back-End 120 isoliert wurden, Front-End-Rücksetzungsbehandlungsoperationen durch.
-
Bei 220 und parallel zu Schritt 215 führt das Back-End 120, funktionell isoliert vom Front-End 115, Back-End-Rücksetzungsbehandlungsoperationen aus.
-
Bei 225 wird bestimmt, ob das Front-End-115 Front-End-Rücksetzungsbehandlungsoperationen abgeschlossen hat oder nicht. Wenn nein, wird dem „nein“-Pfad gefolgt, um es dem Front-End 115 zu ermöglichen, Front-End-Rücksetzungsbehandlungsoperationen abzuschließen. Wenn die Front-End-Rücksetzungsbehandlungsoperationen abgeschlossen sind, fährt der Prozess mit 230 fort. In Ausführungsformen geschieht dies parallel zu der Ausführung von Back-End-Rücksetzungsbehandlungsoperationen durch das Back-End 120.
-
Bei 230 erfolgt basierend auf der Rücksetzungsbewertung eine Meldung an Host 130. Sobald die Zeit zur Benachrichtigung des Hosts über die Rücksetzung erreicht ist, sendet die NVMe-Vorrichtungssteuerung 105 ein Signal an den Host, das angibt, dass die Rücksetzung abgeschlossen ist. Dies erfolgt selbst dann, wenn Back-End-Rücksetzungsoperationen nicht abgeschlossen sind, und signalisiert den Start von Neuinitialisierungsoperationen am Front-End 115; diese Vorgänge werden parallel fortgesetzt.
-
In einer alternativen Ausführungsform, in der keine Zeit zur Benachrichtigung des Hosts über die Rücksetzung bestimmt wurde, sendet die NVMe-Vorrichtungssteuerung 105 ein Signal an den Host, dass die Rücksetzung abgeschlossen ist, sobald die Rücksetzungsoperationen am Front-End 115 abgeschlossen sind. Dies geschieht unabhängig davon, ob die Rücksetzungsoperationen am Back-End abgeschlossen sind oder nicht, und leitet Neuinitialisierungsoperationen ein.
-
Bei 235 initialisiert der Host 130 die NVMe-Vorrichtung 100 neu. Dies kann parallel zu Back-End-Rücksetzungsoperationen von Schritt 220 und Neuinitialisierungsoperationen, die bei 230 eingeleitet werden, erfolgen.
-
Bei 240 gibt der Host einen Türklingelschreibvorgang an eine E/A-Übermittlungswarteschlange aus, der angibt, dass ein E/A-Befehl anhängig ist.
-
Bei 245 bestimmt die NVMe-Steuerung 105, ob Back-End-Rücksetzungsoperationen von Schritt 220 abgeschlossen sind. Wenn nicht, werden die Backend-Rücksetzungsoperationen fortgesetzt, und es werden keine Befehle abgerufen. Wenn Back-End-Rücksetzungsoperationen und Neuinitialisierung abgeschlossen sind, fährt der Prozess mit Schritt 250 fort, in dem Befehle vom Host 130 abgerufen und verarbeitet werden können. In einer alternativen Ausführungsform können Befehle vom Host 130 abgerufen werden, bevor Back-End-Rücksetzungsoperationen abgeschlossen werden. In einer solchen Ausführungsform sendet das Front-End 115 keine Benachrichtigung an das Back-End 120, bevor alle Rücksetzungsoperationen, einschließlich Neuinitialisierung, abgeschlossen sind.
-
Bei 250 ruft die NVMe-Vorrichtung 100 Befehle vom Host 130 zur Ausführung ab.
-
3 stellt ein beispielhaftes Hostsystem dar, in das offenbarte Ausführungsformen integriert werden können und in dem hierin beschriebene Verfahren in Bezug auf die 1 und 2 durchgeführt werden können.
-
Das Hostsystem 300 schließt eine Zentraleinheit (CPU) 302 ein, die mit dem Datenbus 304 verbunden ist. Die CPU 302 ist in der Lage, computerausführbare Anweisungen zu verarbeiten, wie sie zum Beispiel in dem Speicher 306 oder der Speicherung 308 gespeichert sein können, die das NVMe-Modul 350 einschließen können, um die hierin beschriebenen Verfahren durchzuführen, zum Beispiel in Bezug auf die 1 und 2. In Ausführungsformen kann das Hostsystem 300 ähnlich dem oben erwähnten Host 130 sein.
-
Geeignete Mittel für den Speicher 306 können ein einzelner physischer Speicher, mehrere Speicher sowie ein oder mehrere Speicher sein, die sich entfernt vom Hostsystem 300 befinden und auf die über ein Netzwerk zugegriffen wird. Auf ähnliche Weise können geeignete Mittel zur Speicherung 308 eine oder mehrere physische Speicherungsvorrichtungen sein, die verwendet werden können, und eine oder mehrere physische Speicherungsvorrichtungen können entfernt von dem Hostsystem 300 angeordnet sein und es kann über ein Netzwerk darauf zugegriffen werden. Eine solche physische Speicherungsvorrichtung, die die Speicherung 308 aufweist, ist in einigen Ausführungsformen das NVMe-Modul 350.
-
Geeignete Mittel für die CPU 302 in Ausführungsformen können eine einzelne CPU, mehrere CPUs, eine einzelne CPU mit mehreren Kernen, eine oder mehrere CPUs, die entfernt vom Hostsystem 300 angeordnet sind, eine oder mehrere virtualisierte CPUs oder andere Formen von Verarbeitungsarchitektur sein, die in der Lage sind, computerlesbare Anweisungen auszuführen.
-
Das Hostsystem 300 schließt weiterhin in Ausführungsformen eine oder mehrere Eingabe/Ausgabe-Vorrichtung(en) (E/A-Vorrichtungen) 310 und eine oder mehrere E/A-Vorrichtungsschnittstelle(n) 312 ein, die es dem Hostsystem 300 ermöglichen, E/A-Vorrichtungen 310 zu verbinden, wie beispielsweise Tastaturen, Anzeigen, Mausvorrichtungen, Stifte und andere Vorrichtungen, die eine Interaktion mit dem Hostsystem 300 ermöglichen. Es ist zu beachten, dass sich das Hostsystem 300 mit externen E/A-Vorrichtungen über physische und drahtlose Verbindungen verbinden kann.
-
Das Hostsystem 300 kann weiterhin eine Netzwerkschnittstelle 314 einschließen, um dem Hostsystem 300 Zugriff auf das externe Netzwerk 316 und gleichzeitig externe Rechenvorrichtungen, Komponenten und Dienste bereitzustellen.
-
Das Hostsystem 300 schließt weiterhin ein NVMe-Modul 350 ein, das in diesem Beispiel ein NVMe-Steuerungsmodul 355 und ein NAND-Modul 353, ein Rücksetzungsbehandlungsmodul 360, ein Rücksetzungsbehandlungsbewertungsmodul 363, ein Front-End-Modul 365, das funktionell und/oder logisch von einem Back-End-Modul 370 getrennt ist, zum Durchführen von Operationen, die in Verbindung mit den 1 und 2 beschrieben sind, einschließt.
-
4 zeigt ein Zeitdiagramm 400 gemäß Ausführungsformen der Offenbarung.
-
Bei 410 wird eine Rücksetzung an die NVMe-Vorrichtung 100 ausgegeben. Die Rücksetzung 410 kann von einem Host 130 oder von der NVMe-Vorrichtung 100 selbst ausgegeben werden.
-
Bei 420 wird die Vorrichtungsrücksetzungsbehandlung durch den Rücksetzungsbehandler 110 eingeleitet, wodurch Rücksetzungsoperationen des Front-End 115, des Back-End 120 und die Neuinitialisierung logisch aufgeteilt werden. Bei 430 wird die Front-End-Rücksetzungsbehandlung eingeleitet, und sobald sie abgeschlossen ist, stellt der Rücksetzungsbehandler 110 dem Host 130 einen Problem-Rücksetzung-abgeschlossen bereit.
-
Bei 450 beginnt die NVMe-Vorrichtung 100 die Neuinitialisierung parallel zur Back-End-Rücksetzungsbehandlung 460.
-
Ein E/A-Befehlsabruf 470 vom Host kann zu einer beliebigen Zeit vor Abschluss von Back-End-Rücksetzungsbehandlung 460 und/oder Vorrichtungsneuinitialisierung 450 erfolgen. Befehle, die vor dem Abschluss einer dieser beiden abgerufen werden, bewirken, dass das Front-End 115 die Befehle hält, bis die Back-End-Rücksetzungsbehandlung 460 und die Vorrichtungsneuinitialisierung 450 abgeschlossen sind.
-
Die vorhergehende Beschreibung wird bereitgestellt, um es einem Fachmann zu ermöglichen, die verschiedenen hierin beschriebenen Ausführungsformen in der Praxis umzusetzen. Die hierin erörterten Beispiele schränken den Schutzumfang, die Anwendbarkeit oder Ausführungsformen, die in den Ansprüchen dargelegt sind, nicht ein. Verschiedene Modifikationen dieser Ausführungsformen werden dem Fachmann leicht ersichtlich sein, und die hierin definierten generischen Prinzipien können auf andere Ausführungsformen angewendet werden. Zum Beispiel können Änderungen an der Funktion und Anordnung von erörterten Elementen vorgenommen werden, ohne vom Schutzumfang der Offenbarung abzuweichen. Verschiedene Beispiele können verschiedene Prozeduren oder Komponenten weglassen, ersetzen oder hinzufügen, je nach Bedarf. Zum Beispiel können die beschriebenen Verfahren in einer anderen Reihenfolge als der beschriebenen durchgeführt werden, und verschiedene Schritte können hinzugefügt, weggelassen oder kombiniert werden. Außerdem können Merkmale, die in Bezug auf einige Beispiele beschrieben sind, in einigen anderen Beispielen kombiniert werden. Zum Beispiel kann eine Vorrichtung eingesetzt oder ein Verfahren anhand einer beliebigen Zahl der hierin dargelegten Gesichtspunkte ausgeübt werden. Außerdem soll der Schutzumfang der Offenbarung eine solche Vorrichtung oder ein solches Verfahren abdecken, die bzw. das unter Verwendung einer anderen Struktur, Funktionalität oder Struktur und Funktionalität zusätzlich zu oder außer den verschiedenen Gesichtspunkten der hierin dargelegten Offenbarung praktiziert wird. Es versteht sich, dass jeder Gesichtspunkt der hierin offenbarten Offenbarung durch ein oder mehrere Elemente eines Anspruchs verkörpert sein kann.
-
Wie hier verwendet, bezieht sich ein Ausdruck, der sich auf „mindestens eines von“ einer Liste von Elementen bezieht, auf jede Kombination dieser Elemente, einschließlich einzelner Elemente. Als ein Beispiel soll „mindestens eines von: a, b oder c“ a, b, c, a-b, a-c, b-c und a-b-c sowie jede Kombination mit Vielfachen desselben Elements (z. B., a-a, a-a-a, a-a-b, a-a-c, a-b-b, a-c-c, b-b, b-b-b, b-b-c, c-c und c-c-c oder jede andere Reihenfolge von a, b und c) abdecken.
-
Wie hierin verwendet, umfasst der Begriff „bestimmen“ eine Vielzahl von Handlungen. Zum Beispiel kann „bestimmen“ das Berechnen, Rechnen, Verarbeiten, Ableiten, Untersuchen, Nachschlagen (z. B. Nachschlagen in einer Tabelle, einer Datenbank oder einer anderen Datenstruktur), Ermitteln und ähnliches einschließen. „Bestimmen“ kann auch das Empfangen (z. B. das Empfangen von Informationen), den Zugriff (z. B. den Zugriff auf Daten in einem Speicher) und ähnliches einschließen. „Bestimmen“ kann auch das Lösen, Wählen, Auswählen, Festlegen und ähnliches einschließen.
-
Die hierin offenbarten Verfahren weisen einen oder mehrere Schritte oder eine oder mehrere Aktionen zum Erreichen der Verfahren auf. Die Verfahrensschritte und/oder Aktionen können miteinander vertauscht werden, ohne den Schutzumfang der Ansprüche zu verlassen. Mit anderen Worten, kann die Reihenfolge und/oder Verwendung von spezifischen Schritten und/oder Aktionen modifiziert werden, ohne vom Umfang der Ansprüche abzuweichen, es sei denn, es wird eine spezifische Reihenfolge von Schritten oder Aktionen spezifiziert. Ferner können die verschiedenen Vorgänge der vorstehend beschriebenen Verfahren durch jedes geeignete Mittel durchgeführt werden, das in der Lage ist, die entsprechenden Funktionen durchzuführen. Das Mittel kann verschiedene Hardware- und/oder Softwarekomponente(n) und/oder Modul(e) einschließen, einschließlich, aber nicht beschränkt auf eine Schaltung, eine anwendungsspezifische integrierte Schaltung (ASIC) oder einen Prozessor. Wenn es Operationen gibt, die in Figuren veranschaulicht sind, können diese Operationen im Allgemeinen entsprechende Gegenstück-Mittel-plus-Funktionskomponenten mit ähnlicher Nummerierung aufweisen.
-
Die verschiedenen veranschaulichenden Logikblöcke, Module und Schaltungen, die in Verbindung mit der vorliegenden Offenbarung beschrieben werden, können mit einem Allzweckprozessor, einem digitalen Signalprozessor (DSP), einer anwendungsspezifischen integrierten Schaltung (ASIC), einer feldprogrammierbaren Gatteranordnung (FPGA) oder einer anderen programmierbaren Logikvorrichtung (PLD), einer diskreten Gatter- oder Transistorlogik, diskreten Hardwarekomponenten oder einer beliebigen Kombination davon, die zur Ausführung der hierin beschriebenen Funktionen ausgelegt sind, implementiert oder durchgeführt werden. Ein Allzweckprozessor kann ein Mikroprozessor sein, jedoch kann der Prozessor alternativ jeder im Handel erhältliche Prozessor, Controller, Mikrocontroller oder eine Zustandsmaschine sein. Ein Prozessor kann auch als eine Kombination von Rechenvorrichtungen implementiert sein, z. B. eine Kombination aus einem DSP und einem Mikroprozessor, einer Vielzahl von Mikroprozessoren, einem oder mehreren Mikroprozessoren in Verbindung mit einem DSP-Kern oder einer beliebigen anderen solchen Konfiguration.
-
Ein Verarbeitungssystem kann mit einer Busarchitektur implementiert sein. Der Bus kann jede Anzahl von Verbindungsbussen und -brücken einschließen, je nach der spezifischen Anwendung des Verarbeitungssystems und den Gesamtdesignbeschränkungen. Der Bus kann unter anderem verschiedene Schaltungen miteinander verbinden, einschließlich eines Prozessors, maschinenlesbarer Medien und Eingabe-/Ausgabevorrichtungen. An den Bus kann auch eine Benutzerschnittstelle (z. B. Tastatur, Anzeige, Maus, Joystick usw.) angeschlossen sein. Der Bus kann auch verschiedene andere Schaltungen verbinden, wie Zeitgeberquellen, Peripheriegeräte, Spannungsregler, Leistungsverwaltungsschaltungen und andere Schaltungselemente, die im Stand der Technik gut bekannt sind und daher nicht weiter beschrieben werden. Der Prozessor kann mit einem oder mehreren Allzweck- und/oder Spezialprozessoren implementiert sein. Beispiele schließen Mikroprozessoren, Mikrocontroller, DSP-Prozessoren und andere Schaltungen ein, die Software ausführen können. Fachleute werden erkennen, wie die beschriebene Funktionalität für das Verarbeitungssystem in Abhängigkeit von der bestimmten Anwendung und den dem Gesamtsystem auferlegten Gesamtdesignbeschränkungen am besten zu implementieren ist.
-
Wenn sie in Software implementiert sind, können die Funktionen als eine oder mehrere Anweisungen oder Code auf einem computerlesbaren Medium gespeichert oder übertragen werden. Software ist allgemein so auszulegen, dass sie Anweisungen, Daten oder eine beliebige Kombination davon bedeutet, unabhängig davon, ob sie als Software, Firmware, Middleware, Mikrocode, Hardwarebeschreibungssprache oder anderweitig bezeichnet wird. Computerlesbare Medien schließen sowohl Computerspeicherungsmedien als auch Kommunikationsmedien ein, wie jedes Medium, das die Übertragung eines Computerprogramms von einem Ort zu einem anderen erleichtert. Der Prozessor kann für die Verwaltung des Busses und die allgemeine Verarbeitung verantwortlich sein, einschließlich der Ausführung von Softwaremodulen, die auf den computerlesbaren Speicherungsmedien gespeichert sind. Ein computerlesbares Speicherungsmedium kann mit einem Prozessor gekoppelt sein, sodass der Prozessor Informationen von dem Speicherungsmedium lesen und auf dieses schreiben kann. Alternativ dazu kann das Speicherungsmedium integraler Bestandteil des Prozessors sein. Beispielsweise können die computerlesbaren Medien eine Übertragungsleitung, eine durch Daten modulierte Trägerwelle und/oder ein computerlesbares Speicherungsmedium mit darauf gespeicherten Anweisungen getrennt von dem Funkknoten einschließen, auf die der Prozessor alle durch die Busschnittstelle zugreifen kann. Alternativ oder zusätzlich können die computerlesbaren Medien oder ein beliebiger Abschnitt davon in den Prozessor integriert sein, wie dies beispielsweise bei Cache-Dateien und/oder allgemeinen Registerdateien der Fall ist. Beispiele für maschinenlesbare Speicherungsmedien können beispielsweise RAM (Random Access Memory), Flash-Speicher, ROM (Read Only Memory), PROM (Programmable Read-Only Memory), EPROM (Erasable Programmable Read-Only Memory), EEPROM (Electrical Erasable Programmable Read-Only Memory), Register, Magnetplatten, optischen Platten, Festplatten oder jedes beliebige andere geeignete Speicherungsmedium oder eine beliebigen Kombination davon einschließen. Die maschinenlesbaren Medien können in einem Computerprogrammprodukt verkörpert sein.
-
Ein Softwaremodul kann eine einzelne Anweisung oder viele Anweisungen aufweisen und kann über mehrere verschiedene Codesegmente, unter verschiedenen Programmen und über mehrere Speicherungsmedien verteilt sein. Die computerlesbaren Medien können eine Anzahl von Softwaremodulen aufweisen. Die Softwaremodule schließen Anweisungen ein, die, wenn sie von einer Einrichtung wie einem Prozessor ausgeführt werden, bewirken, dass das Verarbeitungssystem verschiedene Funktionen ausführt. Die Softwaremodule können ein Sendemodul und ein Empfangsmodul einschließen. Jedes Softwaremodul kann sich in einer einzigen Speicherungsvorrichtung befinden oder über mehrere Speicherungsvorrichtungen verteilt sein. Beispielsweise kann bei Auftreten eines Auslöseereignisses ein Softwaremodul von einer Festplatte in den RAM geladen werden. Während der Ausführung des Softwaremoduls kann der Prozessor einige der Anweisungen in den Cache laden, um die Zugriffsgeschwindigkeit zu erhöhen. Eine oder mehrere Cache-Zeilen können dann in eine allgemeine Registerdatei zur Ausführung durch den Prozessor geladen werden. Wenn auf die Funktionalität eines Softwaremoduls Bezug genommen wird, versteht es sich, dass eine solche Funktionalität durch den Prozessor implementiert wird, wenn Anweisungen von diesem Softwaremodul ausgeführt werden.
-
Die folgenden Ansprüche sollen nicht auf die hierin gezeigten Ausführungsformen beschränkt sein, sondern es soll ihnen der volle Schutzumfang in Übereinstimmung mit der Formulierung der Ansprüche gewährt werden. Innerhalb eines Anspruchs soll eine Bezugnahme auf ein Element im Singular nicht „eins und nur eins“ bedeuten, sofern nicht speziell so angegeben, sondern „eins oder mehrere“. Sofern nicht spezifisch anders angegeben, bezieht sich der Ausdruck „einige“ auf ein(en) oder mehrere. Kein Anspruchselement ist gemäß den Bestimmungen von 35 U.S.C.§ 112(f) zu verstehen, sofern das Element nicht explizit unter Verwendung des Ausdrucks „Mittel für“ oder im Falle eines Verfahrensanspruchs des Ausdrucks „Schritt für“ erwähnt wird. Alle strukturellen und funktionalen Äquivalente zu den Elementen der verschiedenen Gesichtspunkte, die in dieser Offenbarung beschrieben sind, die Fachleuten bekannt sind oder später bekannt werden, werden hiermit ausdrücklich durch Bezugnahme aufgenommen und sollen in den Ansprüchen eingeschlossen sein. Darüber hinaus soll nichts hierin Offenbartes der Öffentlichkeit gewidmet sein, ungeachtet dessen, ob eine solche Offenbarung in den Ansprüchen ausdrücklich erwähnt wird.
-
Durch Befolgen der hierin offenbarten Systeme und Verfahren kann die Zeitsteuerung eines Rücksetzens einer NVMe-Vorrichtung vorhersagbarer werden, was ermöglicht, dass Operationen in einem Host auf effiziente Weise fortgesetzt werden.
-
In einer Ausführungsform wird eine Datenspeicherungsvorrichtung offenbart. In Ausführungsformen kann die Datenspeicherungsvorrichtung eine Steuerung einschließen, die Anweisungen aufweist, welche, wenn sie von einem Prozessor ausgeführt werden, die Steuerung veranlassen, ein Verfahren zum Rücksetzen der Datenspeicherungsvorrichtung durchzuführen. In Ausführungsformen weist das Verfahren das logische Trennen eines Satzes von Front-End-Rücksetzungsaufgaben von einem Satz von Back-End-Rücksetzungsaufgaben, das Empfangen eines Rücksetzungsbefehls von einem Hostsystem, das parallele Durchführen des Satzes von Front-End-Rücksetzungsaufgaben und des Satzes von Back-End-Rücksetzungsaufgaben nach Empfang des Rücksetzungsbefehls auf. Das Verfahren kann weiterhin das Übertragen eines Rücksetzungsabschlusssignals an das Hostsystem nach Abschluss des Satzes von Front-End-Rücksetzungsaufgaben und das Übertragen eines Speicherungsvorrichtungs-Bereitschaftssignals an das Hostsystem, das angibt, dass sich die Speicherungsvorrichtung in einem Zustand zum Empfangen eines Befehls von dem Hostsystem befindet, aufweisen. In Ausführungsformen kann das Verfahren weiterhin das Empfangen eines Befehls von dem Hostsystem und das Ausführen des Befehls, wenn der Satz von Back-End-Rücksetzungsaufgaben abgeschlossen ist, aufweisen.
-
In einer anderen Ausführungsform wird ein Datenspeicherungssystem offenbart. Das Datenspeicherungssystem schließt in Ausführungsformen eine Schnittstelle ein, die konfiguriert ist, um Rücksetzungsanweisungen von einem Host zu empfangen, ein Front-End-Modul, das konfiguriert ist, um Front-End-Rücksetzungsoperationen auszuführen, und ein Back-End-Modul, das konfiguriert ist, um Back-End-Rücksetzungsoperationen auszuführen. Dieses System kann weiterhin ein Rücksetzungsbehandlungsmodul aufweisen, das konfiguriert ist, um das Front-End-Modul logisch von dem Back-End-Modul zu trennen, wobei die Front-End-Rücksetzungsoperationen und Back-End-Rücksetzungsoperationen parallel ausgeführt werden, und das Rücksetzungsbehandlungsmodul ist konfiguriert, um mit dem Host nach Abschluss von Front-End-Operationen zu kommunizieren, dass Rücksetzungsoperationen abgeschlossen sind.
-
In einer anderen Ausführungsform wird ein Datenspeicherungssystem offenbart, das eine Steuerung aufweist, die einen Prozessor zum Ausführen von Computeranweisungen zum Rücksetzen des Datenspeicherungssystems einschließt. In Ausführungsformen kann die Steuerung ein Front-End-Modul, das konfiguriert ist, um Front-End-Rücksetzungsoperationen auszuführen, ein Back-End-Modul, das konfiguriert ist, um Back-End-Rücksetzungsoperationen auszuführen, und ein Mittel zum logischen Trennen der Front-End-Rücksetzungsoperationen von den Back-End-Rücksetzungsoperationen einschließen, sodass die Front-End-Rücksetzungsoperationen und Back-End-Rücksetzungsoperationen parallel ausgeführt werden.
-
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 Schutzumfang davon abzuweichen, und der Schutzumfang wird durch die nachstehenden Ansprüche bestimmt.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-