QUERVERWEIS AUF VERWANDTE ANMELDUNG(EN)CROSS REFERENCE TO RELATED APPLICATION (S)
Diese Anmeldung ist eine Teilfortsetzung derU.S. Patentanmeldung Nr. 15/908,710, eingereicht am 28. Februar 2018 unter dem Aktenzeichen des Bevollmächtigten WDT-1237CIP (SDA-2644-1US), welche eine Teilfortsetzung der U.S. Patentanmeldung Nr.14/868,373, eingereicht am 28. September 2015, nun U.S. Patentanmeldung Nr.9,927,983, ist, wobei der gesamte Inhalt dieser hierin durch Bezugnahme aufgenommen ist.This registration is a partial continuation of the U.S. Patent Application No. 15 / 908,710 , filed February 28, 2018 under assignee file number WDT-1237CIP (SDA-2644-1US) which is a continuation of U.S. Patent Application No. 14 / 868,373 , filed September 28, 2015, now U.S. Patent Application No. 9,927,983 , the entire contents of which are incorporated herein by reference.
GEBIETAREA
Die Offenbarung bezieht sich in einigen Ausführungsformen auf nichtflüchtige Speichervorrichtungen (NVM-Vorrichtungen) und Speichersteuerungen und Host-Vorrichtungen zur Verwendung damit. Insbesondere, aber nicht ausschließlich, bezieht sich die Offenbarung auf eine Datenspeichervorrichtung, die Befehle von hostseitigen Übermittlungswarteschlangen abruft und diese Befehle ausführt.The disclosure relates, in some embodiments, to non-volatile storage (NVM) devices and storage controllers and host devices for use therewith. In particular, but not exclusively, the disclosure relates to a data storage device that retrieves commands from host-side delivery queues and executes those commands.
EINLEITUNGINTRODUCTION
Datenspeichervorrichtungen, die NVM-Vorrichtungen wie Flash-NAND-Speicher enthalten, ersetzen oder ergänzen in vielen Unterhaltungselektroniken oder Industrieelektroniken und Computern herkömmliche rotierende Festplattenlaufwerke zur Massenspeicherung. In der Regel kann eine Host-Vorrichtung eine Vorrichtungssteuerung einschließen oder damit kommunizieren, die wiederum den Zugriff auf eine oder mehrere der NVM-Vorrichtungen (z. B. NVM-Arrays) steuert. Zum Beispiel kann die Host-Vorrichtung einen Schreibbefehl und einen Lesebefehl an eine Vorrichtungssteuerung einer Datenspeichervorrichtung ausgeben, die eine NVM-Vorrichtung enthält, um Daten in die NVM-Vorrichtung zu schreiben und Daten daraus zu lesen.Data storage devices that include NVM devices such as Flash NAND memories replace or complement conventional rotating hard disk drives for mass storage in many consumer electronics or industrial electronics and computers. Typically, a host device may include or communicate with a device controller, which in turn controls access to one or more of the NVM devices (e.g., NVM arrays). For example, the host device may issue a write command and a read command to a device controller of a data storage device including an NVM device to write data to and read data from the NVM device.
In einem NVM-Express-System (NVMe) schreibt eine Host-Vorrichtung Datenspeichervorrichtungsbefehle wie Lesebefehle, Schreibbefehle und administrative Befehle in Übermittlungswarteschlangen, die in einem Speicher der Host-Vorrichtung implementiert sind. Die Datenspeichervorrichtung ruft die Befehle aus den Übermittlungswarteschlangen ab und führt die Befehle aus. Die Datenspeichervorrichtung platziert dann Einträge in Beendigungswarteschlangen, die ebenfalls in dem Host-Speicher implementiert sind, um die Host-Vorrichtung über die Beendigung der Befehle zu benachrichtigen. Es gibt in der Regel mehrere Übermittlungswarteschlangen, die von der Host-Vorrichtung zugewiesen werden. Dementsprechend bestimmt die Datenspeichervorrichtung während jedes Durchführungszyklus des Zugriffs auf die Warteschlange, auf welche Übermittlungswarteschlange zugegriffen werden soll, um den nächsten zu verarbeitenden Befehl zu erhalten.In an NVM Express (NVMe) system, a host device writes data storage device commands, such as read commands, write commands, and administrative commands, to delivery queues implemented in a memory of the host device. The data storage device retrieves the commands from the delivery queues and executes the commands. The data storage device then places entries in completion queues, also implemented in host memory, to notify the host device of the completion of the commands. There are typically multiple delivery queues assigned by the host device. Accordingly, during each execution cycle of the access to the queue, the data storage device determines which transmission queue to access in order to obtain the next command to be processed.
Der NVMe-Standard, dessen aktuelle Version NVM Express, Überarbeitung 1.3d vom 20. März 2019, ist, dessen Offenbarung hierin durch Bezugnahme in ihrer Gesamtheit aufgenommen ist, beschreibt zwei Techniken, mit denen eine Vorrichtungssteuerung Befehle aus Übermittlungswarteschlangen auswählen kann. Eine Technik verwendet einen Rundlaufarbiter, in dem die Vorrichtungssteuerung Befehle aus den Übermittlungswarteschlangen in der Reihenfolge des Rundlaufverfahrens auswählt. Eine andere Technik verwendet einen gewichteten Rundlaufarbiter, wobei den Übermittlungswarteschlangen statischen Prioritäten oder Gewichten zugeordnet werden, und Befehle aus Übermittlungswarteschlangen in der Reihenfolge des Rundlaufverfahrens unter Verwendung von Gewichtungen ausgewählt werden, um die Reihenfolge der Auswahl in jedem Zyklus zu bestimmen.The NVMe standard, the current version of which is NVM Express, Revision 1.3d dated March 20, 2019, the disclosure of which is incorporated herein by reference in its entirety, describes two techniques by which a device controller can select commands from transmission queues. One technique uses a round robin arbiter in which the device controller selects commands from the transmission queues in round robin order. Another technique uses a weighted round robin arbiter, where the delivery queues are assigned static priorities or weights, and instructions from delivery queues are selected in round robin order using weights to determine the order of selection in each cycle.
In beiden Fällen basiert das Abrufen des nächsten Befehls aus der Übermittlungswarteschlange auf statischer Arbitrierungslogik, die entweder keine Prioritäten wie im Falle des Rundlaufverfahrens implementiert oder nur statische, vom Host definierte Prioritäten wie im Falle des gewichteten Rundlaufverfahrens implementiert. Eine derartige statische Arbitrierungslogik kann ausreichend sein, wenn die Speichervorrichtung über ausreichende Ressourcen verfügt, um alle Host-E/A-Anforderungen zu verarbeiten. In der Praxis können die Speicherressourcen einer Datenspeichervorrichtung jedoch begrenzt sein, und die Anforderungen der Host-Vorrichtung an diese Ressourcen können die Fähigkeit der Datenspeichervorrichtung, Host-Befehle unmittelbar zu verarbeiten, übersteigen. Dementsprechend besteht ein Bedarf an effektiveren Techniken zum Verwalten der Verwendung von Datenspeichervorrichtungsbefehlen, die in Übermittlungswarteschlangen gespeichert sind.In both cases, the fetching of the next command from the transmission queue is based on static arbitration logic, which either does not implement any priorities as in the case of the round-robin method or only implements static, host-defined priorities as in the case of the weighted round-robin method. Such static arbitration logic may be sufficient if the storage device has sufficient resources to handle all of the host I / O requests. In practice, however, the memory resources of a data storage device may be limited, and the host device's requirements for those resources may exceed the data storage device's ability to process host commands immediately. Accordingly, there is a need for more effective techniques for managing the use of data storage device commands that are stored in delivery queues.
KURZDARSTELLUNGABSTRACT
Das Folgende stellt eine vereinfachte Kurzdarstellung einiger Gesichtspunkte der Offenbarung dar, um ein grundlegendes Verständnis für solche Gesichtspunkte bereitzustellen. Diese Kurzdarstellung stellt keinen umfassenden Überblick über alle in Betracht gezogenen Merkmale der Offenbarung dar und soll weder Schlüssel- oder kritische Elemente aller Gesichtspunkte der Offenbarung identifizieren noch den Umfang irgendeines oder aller Gesichtspunkte der Offenbarung beschreiben. Ihr einziger Zweck besteht darin, verschiedene Konzepte einiger Gesichtspunkte der Offenbarung in vereinfachter Form als Einleitung zu der detaillierteren Beschreibung, die später vorgestellt wird, darzustellen.The following presents a simplified summary of some aspects of the disclosure in order to provide a thorough understanding of such aspects. This summary is not intended to be a comprehensive overview of all of the contemplated features of the disclosure, and is not intended to identify key or critical elements of all aspects of the disclosure, nor to describe the scope of any or all of the aspects of the disclosure. Its sole purpose is to introduce various concepts of some aspects of Revelation into simplified form as an introduction to the more detailed description that will be presented later.
Eine Ausführungsform der Offenbarung stellt eine Datenspeichervorrichtung bereit, die ein nichtflüchtiges Speicherarray, eine Schnittstelle und einen Prozessor, der mit dem nichtflüchtigen Speicherarray und der Schnittstelle gekoppelt ist, einschließt. In einem Beispiel ist der Prozessor eingerichtet zum: Abrufen eines Befehls aus einer Übermittlungswarteschlange von einer anderen Vorrichtung über die Schnittstelle, Bestimmen, dass die Befehlsausführung gegenwärtig blockiert ist, und Steuern der Befehlsausführung auf Grundlage der Bestimmung, dass die Befehlsausführung gegenwärtig blockiert ist.One embodiment of the disclosure provides a data storage device that includes a non-volatile memory array, an interface, and a processor coupled to the non-volatile memory array and the interface. In one example, the processor is configured to: fetch an instruction from a submission queue from another device via the interface, determine that instruction execution is currently blocked, and control instruction execution based on the determination that instruction execution is currently blocked.
Eine Ausführungsform der Offenbarung stellt ein Datenspeicherverfahren bereit. In einem Beispiel schließt das Verfahren ein: Abrufen eines Befehls aus einer Übermittlungswarteschlange einer anderen Vorrichtung über die Schnittstelle, Bestimmen, dass die Befehlsausführung gegenwärtig blockiert ist, und Steuern der Befehlsausführung auf Grundlage der Bestimmung, dass die Befehlsausführung gegenwärtig blockiert ist.One embodiment of the disclosure provides a data storage method. In one example, the method includes: fetching a command from a submission queue of another device via the interface, determining that command execution is currently blocked, and controlling command execution based on the determination that command execution is currently blocked.
Eine Ausführungsform der Offenbarung stellt eine Datenspeichervorrichtung bereit. In einem Beispiel schließt die Vorrichtung ein: Mittel zum Abrufen eines Befehls aus einer Übermittlungswarteschlange, optionale Mittel zum Speichern des Befehls in einem Befehlsschlitz der Datenspeichervorrichtung; Mittel zum Bestimmen, dass die Befehlsausführung gegenwärtig blockiert ist (z. B. aufgrund einer Bedingung innerhalb der Datenspeichervorrichtung oder aufgrund einer Bedingung außerhalb der Datenspeichervorrichtung), und Mittel zum Steuern der Befehlsausführung auf Grundlage der Bestimmung, dass die Befehlsausführung gegenwärtig blockiert ist.One embodiment of the disclosure provides a data storage device. In one example, the apparatus includes: means for fetching a command from a delivery queue, optional means for storing the command in a command slot of the data storage device; Means for determining that instruction execution is currently blocked (e.g., due to a condition within the data storage device or due to a condition outside of the data storage device) and means for controlling instruction execution based on the determination that instruction execution is currently blocked.
Eine Ausführungsform der Offenbarung stellt ein nichtflüchtiges computerlesbares Medium bereit, das computerausführbare Codes zum Speichern von Daten speichert. In einem Beispiel schließt das computerlesbare Medium Codes ein zum: Abrufen eines Befehls aus einer Übermittlungswarteschlange einer anderen Vorrichtung über die Schnittstelle, Bestimmen, dass die Befehlsausführung gegenwärtig blockiert ist, und Steuern der Befehlsausführung auf Grundlage der Bestimmung, dass die Ausführung des Befehls gegenwärtig blockiert ist.One embodiment of the disclosure provides a non-transitory computer readable medium that stores computer executable code for storing data. In one example, the computer readable medium includes code for: fetching an instruction from a submission queue of another device via the interface, determining that instruction execution is currently blocked, and controlling instruction execution based on the determination that execution of the instruction is currently blocked .
Eine Ausführungsform der Offenbarung stellt eine Datenspeichervorrichtung bereit, die ein nichtflüchtiges Speicherarray, eine Schnittstelle und einen Prozessor, der mit dem nichtflüchtigen Speicherarray und der Schnittstelle gekoppelt ist, einschließt. In einem Beispiel ist der Prozessor eingerichtet zum: Empfangen einer Anzeige aus einer anderen Vorrichtung über die Schnittstelle, wobei die Anzeige anzeigt, dass mindestens eine Übermittlungswarteschlange aus einer Vielzahl von Übermittlungswarteschlangen der anderen Vorrichtung mindestens einen Befehl enthält, Schätzen auf Grundlage der Anzeige, ob eine erste Übermittlungswarteschlange der Vielzahl von Übermittlungswarteschlangen eine Vielzahl von Befehlen mit einer definierten Ausführungsreihenfolge enthält, und gemeinsamen Abrufen der Vielzahl von Befehlen aus der ersten Übermittlungswarteschlange als ein Ergebnis der Schätzung.One embodiment of the disclosure provides a data storage device that includes a non-volatile memory array, an interface, and a processor coupled to the non-volatile memory array and the interface. In one example, the processor is configured to: receive an indication from another device via the interface, the indication indicating that at least one delivery queue of a plurality of delivery queues of the other device contains at least one instruction, based on the indication, estimate whether a first delivery queue of the plurality of delivery queues contains a plurality of instructions having a defined order of execution, and collectively fetching the plurality of instructions from the first delivery queue as a result of the estimation.
Eine Ausführungsform der Offenbarung stellt ein Datenspeicherverfahren bereit. In einem Beispiel schließt das Verfahren ein: Empfangen einer Anzeige aus einer anderen Vorrichtung über die Schnittstelle, wobei die Anzeige anzeigt, dass mindestens eine Übermittlungswarteschlange aus einer Vielzahl von Übermittlungswarteschlangen der anderen Vorrichtung mindestens einen Befehl enthält; Schätzen auf Basis der Anzeige, ob eine erste Übermittlungswarteschlange der Vielzahl von Übermittlungswarteschlangen eine Vielzahl von Befehlen mit einer definierten Ausführungsreihenfolge enthält; und gemeinsames Abrufen der Vielzahl von Befehlen aus der ersten Übermittlungswarteschlange als ein Ergebnis der Schätzung.One embodiment of the disclosure provides a data storage method. In one example, the method includes: receiving an indication from another device via the interface, the indication indicating that at least one delivery queue of a plurality of delivery queues of the other device contains at least one command; Estimating based on the indication whether a first delivery queue of the plurality of delivery queues contains a plurality of instructions having a defined order of execution; and collectively fetching the plurality of commands from the first delivery queue as a result of the estimation.
Eine Ausführungsform der Offenbarung stellt eine Datenspeichervorrichtung bereit. In einem Beispiel schließt die Vorrichtung ein: Mittel zum Empfangen einer Anzeige, wobei die Anzeige anzeigt, dass mindestens eine Übermittlungswarteschlange aus einer Vielzahl von Übermittlungswarteschlangen der anderen Vorrichtung mindestens einen Befehl enthält; optionale Mittel zum Speichern des Befehls in einem Befehlsschlitz der Datenspeichervorrichtung; Mittel zum Schätzen auf Grundlage der Anzeige, ob eine erste Übermittlungswarteschlange der Vielzahl von Übermittlungswarteschlangen eine Vielzahl von Befehlen mit einer definierten Ausführungsreihenfolge enthält; und Mittel zum gemeinsamen Abrufen der Vielzahl von Befehlen aus der ersten Übermittlungswarteschlange als ein Ergebnis der Schätzung.One embodiment of the disclosure provides a data storage device. In one example, the apparatus includes: means for receiving an indication, the indication indicating that at least one delivery queue of a plurality of delivery queues of the other device contains at least one command; optional means for storing the command in a command slot of the data storage device; Means for estimating based on the indication whether a first delivery queue of the plurality of delivery queues contains a plurality of instructions having a defined order of execution; and means for retrieving the plurality of instructions together from the first transmission queue as a result of the estimation.
Eine Ausführungsform der Offenbarung stellt ein nichtflüchtiges computerlesbares Medium bereit, das computerausführbare Codes zum Speichern von Daten speichert. In einem Beispiel schließt das computerlesbare Medium Codes ein zum: Empfangen einer Anzeige aus einer anderen Vorrichtung über die Schnittstelle, wobei die Anzeige anzeigt, dass mindestens eine Übermittlungswarteschlange aus einer Vielzahl von Übermittlungswarteschlangen der anderen Vorrichtung mindestens einen Befehl enthält; Schätzen auf Grundlage der Anzeige, ob eine erste Übermittlungswarteschlange der Vielzahl von Übermittlungswarteschlangen eine Vielzahl von Befehlen mit einer definierten Ausführungsreihenfolge enthält; und gemeinsames Abrufen der Vielzahl von Befehlen aus der ersten Übermittlungswarteschlange als ein Ergebnis der Schätzung.One embodiment of the disclosure provides a non-transitory computer readable medium that stores computer executable code for storing data. In one example, the computer readable medium includes codes for: receiving an indication from another device via the interface, the indication indicating that at least one delivery queue of a plurality of delivery queues of the other device contains at least one command; Estimating based on the indication whether a first delivery queue of the plurality of delivery queues contains a plurality of instructions having a defined order of execution; and collectively fetching the plurality of commands from the first delivery queue as a result of the estimation.
Diese und andere Gesichtspunkte der Offenbarung werden bei einer Durchsicht der detaillierten Beschreibung, die folgt, umfassender verstanden werden. Andere Gesichtspunkte, Merkmale, und Implementierungen der Offenbarung erschließen sich Fachleuten bei der Durchsicht der folgenden Beschreibung von spezifischen Implementierungen der Offenbarung in Verbindung mit den begleitenden Figuren. Während Merkmale der Offenbarung in Bezug auf bestimmte Implementierungen und Figuren nachstehend diskutiert werden können, können alle Implementierungen der Offenbarung eines oder mehrere der hierin erörterten vorteilhaften Merkmale einschließen. Mit anderen Worten, während eine oder mehrere Implementierungen als bestimmte vorteilhafte Merkmale aufweisend erörtert werden können, können eines oder mehrere dieser Merkmale auch gemäß den verschiedenen Implementierungen der hierin erörterten Offenbarung verwendet werden. In ähnlicher Weise sollte, während bestimmte Implementierungen nachfolgend als Vorrichtungs-, System- oder Verfahrensimplementierungen erörtert werden können, verstanden werden, dass solche Implementierungen in verschiedenen Vorrichtungen, Systemen und Verfahren umgesetzt werden können.These and other aspects of the disclosure will be more fully understood upon review of the detailed description that follows. Other aspects, features, and implementations of the disclosure will become apparent to those skilled in the art upon review of the following description of specific implementations of the disclosure in conjunction with the accompanying figures. While features of the disclosure may be discussed below in relation to particular implementations and figures, all implementations of the disclosure may include one or more of the advantageous features discussed herein. In other words, while one or more implementations may be discussed as having certain advantageous features, one or more of those features may also be used in accordance with the various implementations of the disclosure discussed herein. Similarly, while certain implementations may be discussed below as device, system, or method implementations, it should be understood that such implementations can be implemented in various devices, systems, and methods.
FigurenlisteFigure list
Eine speziellere Beschreibung wird nachstehend unter Bezugnahme auf spezifische, in den beigefügten Zeichnungen veranschaulichte Ausführungsformen eingeschlossen. Angesichts dessen, dass diese Zeichnungen nur bestimmte Ausführungsformen der Offenbarung darstellen und deshalb nicht als ihren Umfang einschränkend betrachtet werden sollen, wird die Offenbarung mit zusätzlicher Spezifität und Detailgenauigkeit durch die Verwendung der beigefügten Zeichnungen beschrieben und erläutert, wobei:
- 1 ein beispielhaftes Speichersystem einschließlich einer Datenspeichervorrichtung, die gemäß einem oder mehreren Gesichtspunkten der Offenbarung eingerichtet ist, veranschaulicht.
- 2 ein Beispiel einer Host-Vorrichtung und einer Datenspeichervorrichtung gemäß der NVMe-Architektur veranschaulicht.
- 3 ein Beispiel für ein Abrufen eines Rundlaufbefehls gemäß dem NVMe-Standard veranschaulicht.
- 4 ein Beispiel eines gewichteten Rundlaufbefehlszeitplans gemäß dem NVMe-Standard veranschaulicht.
- 5 ein Beispiel von Operationen zum Steuern einer Befehlsausführung in dem Fall der internen Blockierung und/oder externen Blockierung gemäß einem oder mehreren Gesichtspunkten der Offenbarung veranschaulicht.
- 6 ein Beispiel der Erhöhung der Priorität für die Übermittlungswarteschlange gemäß einem oder mehreren Gesichtspunkten der Offenbarung veranschaulicht.
- 7 ein Beispiel von Operationen zum Steuern der Befehlsausführung in dem Fall der externen Blockierung gemäß einem oder mehreren Gesichtspunkten der Offenbarung veranschaulicht.
- 8 ein weiteres Beispiel von Operationen zum Steuern der Befehlsausführung in dem Fall der externen Blockierung gemäß einem oder mehreren Gesichtspunkten der Offenbarung veranschaulicht.
- 9 ein Beispiel von Operationen zum Steuern des Befehlsabrufs in dem Fall der externen Blockierung gemäß einem oder mehreren Gesichtspunkten der Offenbarung veranschaulicht.
- 10 ein Beispiel einer Host-Vorrichtung und einer NVMe-Vorrichtung gemäß einem oder mehreren Gesichtspunkten der Offenbarung veranschaulicht.
- 11 ein Beispiel einer Festkörpervorrichtung (SSD), die gemäß einem oder mehreren Gesichtspunkten der Offenbarung eingerichtet ist, veranschaulicht.
- 12 ein Beispiel einer Implementierung von Hardware für eine Vorrichtung (z. B. eine elektronische Vorrichtung) zum Speichern von Daten gemäß einem oder mehreren Gesichtspunkten der Offenbarung veranschaulicht.
- 13 ein beispielhaftes Verfahren zum Steuern der Befehlsausführung gemäß einem oder mehreren Gesichtspunkten der Offenbarung veranschaulicht.
- 14 ein Beispiel einer Implementierung von Hardware für eine Vorrichtung (z. B. eine elektronische Vorrichtung) zum Speichern von Daten gemäß einem oder mehreren Gesichtspunkten der Offenbarung veranschaulicht.
- 15 ein beispielhaftes Verfahren zum Steuern des Befehlsabrufs gemäß einem oder mehreren Gesichtspunkten der Offenbarung veranschaulicht.
A more specific description is included below with reference to specific embodiments illustrated in the accompanying drawings. In view of the fact that these drawings illustrate only certain embodiments of the disclosure and are therefore not to be considered as limiting its scope, the disclosure will be described and explained with additional specificity and level of detail through the use of the accompanying drawings, wherein:-  1 illustrates an example storage system including a data storage device configured in accordance with one or more aspects of the disclosure.
-  2 Figure 3 illustrates an example of a host device and a data storage device in accordance with the NVMe architecture.
-  3 Figure 3 illustrates an example of polling a round robin command in accordance with the NVMe standard.
-  4th Figure 3 illustrates an example of a weighted round-robin command schedule according to the NVMe standard.
-  5 illustrates an example of operations for controlling instruction execution in the case of internal blocking and / or external blocking according to one or more aspects of the disclosure.
-  6th illustrates an example of increasing the priority for the submission queue according to one or more aspects of the disclosure.
-  7th illustrates an example of operations to control instruction execution in the event of external blocking according to one or more aspects of the disclosure.
-  8th illustrates another example of operations to control instruction execution in the case of external blocking according to one or more aspects of the disclosure.
-  9 illustrates an example of operations to control instruction fetching in the event of external blocking according to one or more aspects of the disclosure.
-  10 Illustrates an example of a host device and an NVMe device according to one or more aspects of the disclosure.
-  11 illustrates an example of a solid state device (SSD) configured in accordance with one or more aspects of the disclosure.
-  12 Illustrates an example of an implementation of hardware for a device (e.g., an electronic device) to store data in accordance with one or more aspects of the disclosure.
-  13 Illustrates an example method for controlling instruction execution according to one or more aspects of the disclosure.
-  14th Illustrates an example of an implementation of hardware for a device (e.g., an electronic device) to store data in accordance with one or more aspects of the disclosure.
-  15th Illustrates an example method for controlling instruction fetching according to one or more aspects of the disclosure.
DETAILLIERTE BESCHREIBUNGDETAILED DESCRIPTION
In der folgenden detaillierten Beschreibung wird auf die beigefügten Zeichnungen Bezug genommen, die einen Teil davon bilden. Zusätzlich zu den vorstehend beschriebenen veranschaulichenden Gesichtspunkten, Ausführungsformen und Merkmalen werden weitere Gesichtspunkte, Ausführungsformen und Merkmale unter Bezugnahme auf die Zeichnungen und die folgende ausführliche Beschreibung deutlich. Die Beschreibung von Elementen in jeder Figur kann sich auf Elemente von fortlaufenden Figuren beziehen. Gleiche Bezugszeichen können sich auf gleiche Elemente in den Figuren beziehen, einschließlich alternativer Ausführungsformen gleicher Elemente.In the following detailed description, reference is made to the accompanying drawings which form a part hereof. In addition to From the illustrative aspects, embodiments, and features described above, further aspects, embodiments, and features will become apparent upon reference to the drawings and the following detailed description. The description of elements in each figure may refer to elements of consecutive figures. Like reference numbers may refer to like elements in the figures, including alternative embodiments of like elements.
Die Offenbarung bezieht sich in einigen Gesichtspunkten auf verschiedene Vorrichtungen, Systeme, Verfahren und Medien zum Verwalten von Befehlsabruf und - ausführung durch eine Datenspeichervorrichtung. Zum Beispiel kann eine Datenspeichervorrichtung bestimmen, ob die Befehlsausführung blockiert ist. Wenn die Ausführung blockiert ist, steuert die Datenspeichervorrichtung die Ausführung des Befehls, um zu verhindern, dass der blockierte Befehl die Ausführung anderer Befehle unangemessen verhindert. Wenn zum Beispiel der Befehl für länger als einen Zeitschwellenwert blockiert wird, kann die Datenspeichervorrichtung eine Befehlsspeicherstelle (z. B. einen Befehlsschlitz), die gegenwärtig dem Befehl zugewiesen ist, freigeben und eine Aktion zur Ausführung des Befehls zu einem späteren Zeitpunkt ausführen. Auf diese Weise kann die freigewordene Befehlsspeicherstelle dazu verwendet werden, einen anderen Befehl (z. B. einen anderen Befehlstyp) auszuführen. Als weiteres Beispiel kann eine Datenspeichervorrichtung schätzen (z. B. vorhersagen), ob eine bestimmte Übermittlungswarteschlange Befehle enthält, die eine bestimmte Ausführungsreihenfolge erfordern. Nach Bestimmen (z. B. Schätzen), dass die Übermittlungswarteschlange wahrscheinlich derartige Befehle enthält, ruft die Datenspeichervorrichtung die Befehle zusammen ab (z. B. zur gleichen Zeit oder nacheinander), so dass die Datenspeichervorrichtung die Befehle gemäß der vorgeschriebenen Ausführungsreihenfolge ausführen kann.The disclosure relates, in some aspects, to various devices, systems, methods, and media for managing instruction retrieval and execution by a data storage device. For example, a data storage device can determine whether instruction execution is blocked. When execution is blocked, the data storage device controls the execution of the instruction to prevent the blocked instruction from inappropriately preventing other instructions from being executed. For example, if the instruction is blocked for longer than a time threshold, the data storage device may free an instruction storage location (e.g., an instruction slot) currently assigned to the instruction and take action to execute the instruction at a later time. In this way, the command memory location that has become free can be used to execute another command (e.g. a different type of command). As another example, a data storage device may estimate (e.g., predict) whether a particular delivery queue contains instructions that require a particular order of execution. After determining (e.g., estimating) that the Submission queue is likely to contain such commands, the data storage device fetches the commands together (e.g., at the same time or in sequence) so that the data storage device can execute the commands in the prescribed order of execution.
Für Zwecke der Veranschaulichung werden verschiedene Gesichtspunkte der Offenbarung in dem Kontext eines Speichersystems beschrieben, das eine NAND-Speichertechnologie einschließt. Eine NAND-Vorrichtung kann hierin als ein NAND-Flash-Speicher, eine NAND-Speichervorrichtung, ein NAND-Flash oder einfach als NAND bezeichnet werden. Im Allgemeinen ist eine NAND-Vorrichtung ein nichtflüchtiger Speicher mit hoher Speicherdichte, schneller Zugriffszeit, niedrigen Leistungsanforderungen im Betrieb und vorteilhafter Stoßfestigkeit im Vergleich zu herkömmlicheren Speicherplattformen. Raw-NAND-Vorrichtungen können mit einer seriellen Schnittstelle wie etwa Open NAND Flash Interface (ONFi), Common Flash Memory Interface (CFI) und dergleichen ausgerüstet (z. B. eingerichtet) sein. NAND-Vorrichtungen können als separate Speicherchips eingerichtet sein oder mit einer Steuerung verpackt sein, um eine sichere digitale Speicherkarte (SD), Multi Media Card (MMC) oder eine Festkörperplatte zu bilden. Eine NAND-Vorrichtung kann mit einem einzelnen Flash-Chip oder einer Vielzahl von Chips eingerichtet sein. Zusätzlich zu den Speicherzellen kann eine NAND-Vorrichtung andere Komponenten einschließen, wie etwa Steuerungs-/Adresslogikkomponenten, E/A-Komponenten und Datenregisterkomponenten. Es versteht sich, dass die hierin beschriebene Lehre auch auf andere Formen von Speicher (z. B. NVM neben NAND-Vorrichtungen) anwendbar ist.For purposes of illustration, various aspects of the disclosure are described in the context of a memory system that includes NAND memory technology. A NAND device may be referred to herein as a NAND flash memory, a NAND memory device, a NAND flash, or simply NAND. In general, a NAND device is a non-volatile memory with high storage density, fast access time, low operating power requirements, and advantageous shock resistance compared to more conventional storage platforms. Raw NAND devices can be equipped (e.g., configured) with a serial interface such as Open NAND Flash Interface (ONFi), Common Flash Memory Interface (CFI), and the like. NAND devices can be configured as separate memory chips or packaged with a controller to form a secure digital memory card (SD), multi media card (MMC), or a solid state disk. A NAND device can be implemented with a single flash chip or a plurality of chips. In addition to memory cells, a NAND device can include other components such as control / address logic components, I / O components, and data register components. It should be understood that the teaching described herein is applicable to other forms of memory (e.g., NVM besides NAND devices).
BEISPIEL SPEICHERSYSTEMEXAMPLE STORAGE SYSTEM
1 veranschaulicht eine Ausführungsform eines Datenspeichersystems100, das eine Host-Vorrichtung102 und eine Datenspeichervorrichtung104 einschließt, die kommunikativ mit der Host-Vorrichtung102 gekoppelt ist. In einigen Ausführungsformen kann die Datenspeichervorrichtung104 eine Festkörpervorrichtung (SSD) sein. In einigen Ausführungsformen kann die SSD ein Festkörperlaufwerk sein.1 illustrates one embodiment of adata storage system 100 that is ahost device 102 and adata storage device 104 includes being communicative with thehost device 102 is coupled. In some embodiments, thedata storage device 104 be a solid state device (SSD). In some embodiments, the SSD can be a solid state drive.
Die Host-Vorrichtung102 (z. B. ein Host-Computer) stellt der Datenspeichervorrichtung104 Befehle zum Übertragen von Daten zwischen der Host-Vorrichtung102 und der Datenspeichervorrichtung104 bereit. Zum Beispiel kann die Host-Vorrichtung102 einen Schreibbefehl an die Datenspeichervorrichtung104 zum Schreiben von Daten in die Datenspeichervorrichtung104 oder einen Lesebefehl an die Datenspeichervorrichtung104 zum Lesen von Daten aus der Datenspeichervorrichtung104 bereitstellen. Die Host-Vorrichtung102 kann jedes System oder jede Vorrichtung sein, das/die Daten speichern oder abrufen muss, und eine kompatible Schnittstelle zum Kommunizieren mit der Datenspeichervorrichtung104 aufweist. Zum Beispiel kann die Host-Vorrichtung102 eine Computervorrichtung, ein Personal Computer, ein tragbarer Computer, eine Arbeitsstation, ein Server, ein persönlicher digitaler Assistent, eine Digitalkamera, ein Digitaltelefon oder dergleichen sein.The host device 102 (e.g. a host computer) provides thedata storage device 104 Commands to transfer data between thehost device 102 and thedata storage device 104 ready. For example, the host device 102 a write command to thedata storage device 104 for writing data in thedata storage device 104 or a read command to thedata storage device 104 for reading data from thedata storage device 104 provide. Thehost device 102 can be any system or device that needs to store or retrieve data, and a compatible interface for communicating with thedata storage device 104 having. For example, the host device 102 a computing device, personal computer, portable computer, workstation, server, personal digital assistant, digital camera, digital telephone, or the like.
Die Datenspeichervorrichtung104 schließt eine Host-Schnittstelle106, eine Steuerung108, einen optionalen Speicher110 und eine nichtflüchtige Datenspeichervorrichtung112 (NVM) ein. Die Host-Schnittstelle106 ist mit der Steuerung108 verbunden und erleichtert die Kommunikation zwischen dem Host102 und der Steuerung108. Zusätzlich ist die Steuerung108 mit dem Speicher110 und dem NVM112 gekoppelt. Die Host-Schnittstelle106 kann eine beliebige Art von Kommunikationsschnittstelle, wie z. B. eine IDE-Schnittstelle (Integrated Drive Electronics), eine USB-Schnittstelle (Universal Serial Bus), eine SP-Schnittstelle (Serial Peripheral), eine ATA-Schnittstelle (Advanced Technology Attachment), eine SCSI -Schnittstelle (Small Computer System Interface), eine IEEE 1394-Schnittstelle (Firewire) oder ähnliches sein. In einigen Ausführungsformen schließt die Host-Vorrichtung102 die Datenspeichervorrichtung104 ein (z. B. sind die Host-Vorrichtung102 und die Datenspeichervorrichtung104 als eine einzelne Komponente implementiert). In anderen Ausführungsformen ist die Datenspeichervorrichtung104 in Bezug auf die Host-Vorrichtung102 remote oder ist in einem Remote-Computersystem enthalten, das in Kommunikation mit der Host-Vorrichtung102 gekoppelt ist. Zum Beispiel kann die Host-Vorrichtung102 über einen drahtlosen Kommunikationslink mit der Datenspeichervorrichtung104 kommunizieren.Thedata storage device 104 closes ahost interface 106 , acontroller 108 , anoptional memory 110 and a non-volatile data storage device 112 (NVM). Thehost interface 106 is with thecontroller 108 connected and facilitates communication between thehost 102 and thecontrol 108 . In addition, thecontrol 108 with thememory 110 and theNVM 112 coupled. Thehost interface 106 can be any type of communication interface, such as B. an IDE interface (Integrated Drive Electronics), a USB interface (Universal Serial Bus), an SP interface (Serial Peripheral), an ATA interface (Advanced Technology Attachment), a SCSI interface (Small Computer System Interface), an IEEE 1394 interface (Firewire) or similar. In some embodiments, the host device closes 102 the data storage device 104 a (e.g. are thehost device 102 and thedata storage device 104 implemented as a single component). In other embodiments, the data storage device is 104 in relation to thehost device 102 remote or contained in a remote computer system that is in communication with thehost device 102 is coupled. For example, thehost device 102 over a wireless communication link to thedata storage device 104 communicate.
Die Steuerung108 steuert den Betrieb der Datenspeichervorrichtung104. In verschiedenen Ausführungsformen empfängt die Steuerung108 Befehle114 von der Host-Vorrichtung102 über die Host-Schnittstelle106 und führt die Befehle zur Übertragung von Daten116 zwischen der Host-Vorrichtung102 und dem NVM112 aus. Zusätzlich kann die Steuerung108 interne Operationen wie Speicherbereinigungs-, Datenintegritäts- und Wear-Leveling-Operationen durchführen. Die Steuerung108 kann eine beliebige Art von Verarbeitungsvorrichtung wie einen Mikroprozessor, einen Mikrocontroller, eine eingebettete Steuerung, eine Logikschaltung, eine Software, eine Firmware oder dergleichen zum Steuern des Betriebs der Datenspeichervorrichtung104 einschließen.Thecontrol 108 controls the operation of thedata storage device 104 . In various embodiments, the controller receives 108Commands 114 from thehost device 102 via thehost interface 106 and executes the commands for the transmission ofdata 116 between thehost device 102 and theNVM 112 out. In addition, the controller can 108 Perform internal operations such as garbage collection, data integrity, and wear leveling operations. Thecontrol 108 may be any type of processing device such as a microprocessor, a microcontroller, an embedded controller, a logic circuit, software, firmware, or the like for controlling the operation of thedata storage device 104 lock in.
In einigen Ausführungsformen können einige oder alle Funktionen, die hierin als durch die Steuerung108 ausgeführt beschrieben werden, stattdessen durch ein anderes Element der Datenspeichervorrichtung104 ausgeführt werden. Beispielsweise kann die Datenspeichervorrichtung104 einen Mikroprozessor, einen Mikrocontroller, eine eingebettete Steuerung, eine Logikschaltung, Software, Firmware oder irgendeine Art von Verarbeitungsvorrichtung zum Durchführen einer oder mehrerer der Funktionen, die hierin als durch die Steuerung108 ausgeführt beschrieben werden, einschließen. In einigen Ausführungsformen werden eine oder mehrere der Funktionen, die hierin als durch die Steuerung108 ausgeführt beschrieben werden, stattdessen durch die Hostvorrichtung102 ausgeführt. In einigen Ausführungsformen können einige oder alle Funktionen, die hierin als durch die Steuerung108 ausgeführt beschrieben werden, stattdessen durch ein anderes Element wie etwa eine Steuerung in einem Hybrid-Laufwerk, das sowohl nichtflüchtige Speicherelemente als auch magnetische Speicherelemente einschließt, ausgeführt werden.In some embodiments, some or all of the functions described herein may be controlled by thecontroller 108 executed, instead by another element of thedata storage device 104 are executed. For example, the data storage device 104 a microprocessor, microcontroller, embedded controller, logic circuit, software, firmware, or any type of processing device for performing one or more of the functions referred to herein as by thecontroller 108 are described include. In some embodiments, one or more of the functions identified herein as being controlled by 108 instead, by thehost device 102 executed. In some embodiments, some or all of the functions described herein may be controlled by thecontroller 108 may instead be performed by another element such as a controller in a hybrid drive including both non-volatile storage elements and magnetic storage elements.
Der Speicher110 kann ein beliebiger Speicher, eine Rechenvorrichtung oder ein System sein, das Daten speichern kann. Zum Beispiel kann der Speicher110 ein Direktzugriffsspeicher (RAM), ein dynamischer Direktzugriffsspeicher (DRAM), ein statischer Direktzugriffsspeicher (SRAM), ein synchroner dynamischer Direktzugriffsspeicher (SDRAM), ein Flash-Speicher, ein löschbarer programmierbarer Festwertspeicher (EPROM) oder ein elektrisch löschbarer programmierbarer Festwertspeicher (EEPROM) oder dergleichen sein. In verschiedenen Ausführungsformen verwendet die Steuerung108 den Speicher110 oder einen Abschnitt davon, um Daten während der Datenübertragung zwischen der Host-Vorrichtung102 und dem NVM112 zu speichern. Beispielsweise kann der Speicher110 oder ein Abschnitt des Speichers110 ein Cache-Speicher sein.Thememory 110 can be any memory, computing device, or system that can store data. For example, the memory 110 a random access memory (RAM), a dynamic random access memory (DRAM), a static random access memory (SRAM), a synchronous dynamic random access memory (SDRAM), a flash memory, an erasable programmable read only memory (EPROM) or an electrically erasable programmable read only memory (EEPROM) or be like that. In various embodiments, the controller is used 108 thememory 110 or a portion thereof to store data during data transfer between thehost device 102 and theNVM 112 save. For example, thememory 110 or a section ofmemory 110 be a cache memory.
Die Host-Vorrichtung102 schließt Übermittlungswarteschlangen114 zum Speichern von Befehlen, die von der Datenspeichervorrichtung104 abgerufen und ausgeführt werden sollen, ein. Die Host-Vorrichtung102 schließt auch Beendigungswarteschlangen116 zum Speichern von Informationen ein, die von der Datenspeichervorrichtung104 bezüglich einer erfolgreichen oder nicht erfolgreichen Ausführung der Befehle empfangen wurden, ein. Nach dem Einreihen eines oder mehrerer Befehle in eine der Übermittlungswarteschlangen114 initiiert die Host-Vorrichtung102 eine sogenannte Doorbell-Transaktion118, um die Datenspeichervorrichtung102 zu informieren, dass ein oder mehrere Befehle in dieser Übermittlungswarteschlange eingereiht sind. Zum Beispiel kann die Doorbell-Transaktion118 auf eine Speicherstelle (z. B. einem NVMe-Register) in der Datenspeichervorrichtung104 schreiben, die Bits einstellt, welche anzeigen, dass eine bestimmte Übermittlungswarteschlange mindestens einen Befehl und die Anzahl von Befehlen enthält, die in dieser Übermittlungswarteschlange eingereiht sind.Thehost device 102 closesdelivery queues 114 for storing commands issued by thedata storage device 104 to be retrieved and executed. Thehost device 102 also closescompletion queues 116 to store information received from thedata storage device 104 regarding successful or unsuccessful execution of the commands received. After putting one or more commands on one of theSubmission queues 114 initiates the host device 102 a so-calleddoorbell transaction 118 to thedata storage device 102 inform that one or more commands are queued for this Submission Queue. For example, thedoorbell transaction 118 to a storage location (e.g., an NVMe register) in thedata storage device 104 write, which sets bits that indicate that a particular Delivery Queue contains at least one command and the number of commands queued in that Delivery Queue.
Die Steuerung108 schließt ein Befehlsabruf-, -arbitrierungs- und -ausführungsmodul120 (z. B. Hardware und/oder Software) ein. Die Steuerung108 schließt auch Befehlsschlitze126 (z. B. Puffer, Register, etc.) ein, die zum vorübergehenden Speichern von Befehlen (und gegebenenfalls zugeordneten Informationen) durch die Steuerung108 ausgeführt werden.Thecontrol 108 includes an instruction retrieval, arbitration and execution module 120 (e.g. hardware and / or software). Thecontrol 108 also closes command slots 126 (e.g. buffers, registers, etc.) that are used by the controller to temporarily store commands (and possibly associated information) 108 are executed.
Das Befehlsabruf-, -arbitrierungs- und -ausführungsmodul120 steuert, wie Befehle aus den Übermittlungswarteschlangen114 abgerufen werden, und steuert, wie die Befehle durch die Steuerung108 ausgeführt werden. Als Antwort auf eine Doorbell-Transaktion118 kann das Befehlsabruf-, -arbitrierungs- und -ausführungsmodul120 zum Beispiel eine Anfrage122 zum Lesen der Übermittlungswarteschlange, die durch die Doorbell-Transaktion118 identifiziert wurde, ausgeben. Als Antwort auf die Anforderung sendet die Host-Vorrichtung102 den entsprechenden Befehl124 (und zugeordnete Informationen, falls anwendbar) an die Datenspeichervorrichtung104.The command retrieval, arbitration andexecution module 120 controls how commands from thesubmission queues 114 and how the commands are retrieved by thecontroller 108 are executed. In response to adoorbell transaction 118 can do the command retrieval, arbitration andexecution module 120 for example arequest 122 to read the submission queue created by thedoorbell transaction 118 has been identified. In response to the request, the host device sends 102 the corresponding command 124 (and associated Information, if applicable) to thedata storage device 104 .
Das Befehlsabruf-, -arbitrierungs- und -ausführungsmodul120 kann dann den Befehl124 in einen der Befehlsschlitze126 der Steuerung108 platzieren, und die Steuerung108 führt den Befehl aus dem Befehlsschlitz aus. Zum Beispiel können ein auszuführender Befehl und zugeordnete Informationen (z. B. Host-Zeiger für den Befehl) geparst werden (z. B. durch Logik der Steuerung108) und in einen bestimmten Befehlsschlitz geladen werden. Wenn Ausführungsressourcen der Steuerung108 freigegeben werden (z. B. die Ausführung eines anderen Befehls abgeschlossen ist), führt die Steuerung108 einen der Befehle aus einem der Befehlsschlitze126 aus.The command retrieval, arbitration andexecution module 120 can then use thecommand 124 into one of thecommand slots 126 thecontrol 108 place, and thecontroller 108 executes the command from the command slot. For example, a command to be executed and associated information (e.g. host pointer for the command) can be parsed (e.g. by logic of the controller 108 ) and loaded into a specific command slot. When execution resources of thecontroller 108 are released (e.g. the execution of another command is completed), the controller executes 108 one of the commands from one of thecommand slots 126 out.
In dem Fall, dass das Befehlsabruf-, -arbitrierungs- und -ausführungsmodul120 bestimmt, dass die Ausführung des Befehls124 an der Steuerung108 blockiert ist, kann das Befehlsabruf-, -arbitrierungs- und -ausführungsmodul120 die Ausführung des Befehls124 steuern, um sicherzustellen, dass der Befehl124 nicht zu lange einen Befehlsschlitz belegt. Zum Beispiel können nur manche Befehlsarten (z. B. Schreibbefehle) zu einem gegebenen Zeitpunkt blockiert werden. Somit kann das Befehlsabruf-, -arbitrierungs- und - ausführungsmodul120 einen Befehlsschlitz, der einen blockierten Befehl hält, freigeben, wenn der Befehl nicht in der nahen Zukunft ausgeführt werden wird. Auf diese Weise können andere Befehlsarten (z. B. Lesebefehle), die zu diesem Zeitpunkt ausgeführt werden können, in den freigegebenen Befehlsschlitz geladen werden, wodurch die Ressourcen der Datenspeichervorrichtung104 effizienter genutzt werden.In the event that the command retrieval, arbitration andexecution module 120 determines the execution of thecommand 124 on thecontrol 108 is blocked, the command retrieval, arbitration andexecution module 120 the execution of thecommand 124 control to make sure thecommand 124 not occupied a command slot for too long. For example, only some types of commands (e.g. write commands) can be blocked at any given time. Thus the command retrieval, arbitration andexecution module 120 release an instruction slot holding a blocked instruction if the instruction will not be executed in the near future. In this way, other types of commands (e.g., read commands) that can be executed at this point in time can be loaded into the released command slot, thereby reducing the resources of thedata storage device 104 be used more efficiently.
Das Befehlsabruf-, -arbitrierungs- und -ausführungsmodul120 kann auch mehrere Befehle proaktiv aus einer Übermittlungswarteschlange abrufen. Zum Beispiel müssen einige Befehle möglicherweise in einer definierten Reihenfolge ausgeführt werden (z. B. können Befehle nacheinander ausgeführt werden, so dass kein anderer Befehl zwischen der Ausführung dieser Befehle ausgeführt wird). Ein für NVMe definierter FUSED-Befehl ist ein Beispiel dieser Art von gesteuertem Ausführungsbefehl. Die Host-Vorrichtung102 gibt der Datenspeichervorrichtung104 nicht an, welche Befehlsart in den Übermittlungswarteschlangen114 gespeichert ist. Somit sagt gemäß der Lehre hierin das Befehlsabruf-, -arbitrierungs- und - ausführungsmodul120 vorher, ob eine bestimmte Übermittlungswarteschlange eine Vielzahl von Befehlen mit gesteuerter Ausführung (z. B. einen FUSED-Befehl) enthält. Wenn es wahrscheinlich ist, dass die Übermittlungswarteschlange eine derartige Vielzahl von Befehlen enthält, ruft das Befehlsabruf-, -arbitrierungs- und -ausführungsmodul120 die Befehle aus der Übermittlungswarteschlange gemeinsam ab und platziert die Befehle in Befehlsschlitzen, um der Steuerung108 zu ermöglichen, die Befehle nacheinander auszuführen. Zum Beispiel kann das Befehlsabruf-, -arbitrierungs- und -ausführungsmodul120 anfordern, dass die Host-Vorrichtung104 alle Befehle zusammen sendet, oder das Befehlsabruf-, -arbitrierungs- und - ausführungsmodul120 kann die Befehle sukzessive aus den Übermittlungswarteschlangen abrufen (z. B. ohne andere dazwischen liegende Abrufe).The command retrieval, arbitration andexecution module 120 can also proactively retrieve multiple commands from a submission queue. For example, some commands may need to be executed in a defined order (e.g. commands can be executed sequentially so that no other command is executed between executing those commands). A FUSED instruction defined for NVMe is an example of this type of controlled execute instruction. Thehost device 102 gives thedata storage device 104 does not indicate what type of command is in thesubmission queues 114 is stored. Thus, as taught herein, says the instruction fetch, arbitration andexecution module 120 beforehand whether a given submission queue contains a large number of instructions with controlled execution (e.g. a FUSED instruction). When the submission queue is likely to contain such a multitude of commands, the command retrieval, arbitration and execution module calls 120 collects the commands from the submission queue and places the commands in command slots for thecontroller 108 to allow the commands to be executed one after the other. For example, the command retrieval, arbitration andexecution module 120 request that thehost device 104 sends all commands together, or the command retrieval, arbitration andexecution module 120 can get the commands successively from the submission queues (e.g. without other intervening polls).
BEISPIEL NVME-ARCHITEKTUREXAMPLE NVME ARCHITECTURE
2 veranschaulicht ein Beispiel einer NVMe-Architektur 200, in der der hierin beschriebene Gegenstand implementiert werden kann. Gemäß dem NVMe-Standard kommuniziert eine Host-Vorrichtung202 Speichervorrichtungsbefehle wie Lesebefehle, Schreibbefehle oder Verwaltungsbefehle an eine Datenspeichervorrichtung204 (z. B. mit nichtflüchtigem Speicher) unter Verwendung der Übermittlungswarteschlangen.2 Figure 8 illustrates an example of anNVMe architecture 200 in which the subject matter described herein can be implemented. A host device communicates according to the NVMe standard 202 Storage device commands such as read commands, write commands, or management commands to a data storage device 204 (e.g. with non-volatile memory) using the delivery queues.
Die Hostvorrichtung202 kann eine beliebige geeignete Rechenplattform sein, die in der Lage ist, auf einen Speicher auf einer Speichervorrichtung zuzugreifen. Beispielsweise kann die Host-Vorrichtung202 ein Desktop-Personalcomputer, ein Laptop-Computer, ein Tablet-Computer, ein Mobiltelefon oder ein Front-End zu einem Speicherarray sein. Die Host-Vorrichtung202 schließt einen Host-Prozessor206 und einen Speicher208 (z. B. DRAM) ein. Die Host-Vorrichtung202 kann Daten in der Datenspeichervorrichtung204 speichern.Thehost device 202 may be any suitable computing platform capable of accessing memory on a storage device. For example, thehost device 202 be a desktop personal computer, laptop computer, tablet computer, cell phone, or a front end to a storage array. Thehost device 202 closes ahost processor 206 and a memory 208 (e.g. DRAM). Thehost device 202 can data in thedata storage device 204 to save.
Die Datenspeichervorrichtung204 kann jede geeignete Vorrichtung sein, die einen nichtflüchtigen Speicher für die Host-Vorrichtung202 bereitstellt. Die Datenspeichervorrichtung204 kann eine entfernbare Speichervorrichtung sein, wie etwa ein Festkörperlaufwerk (das z. B. entfernbar mit der Host-Vorrichtung202 verbindbar ist). In einem alternativen Beispiel kann die Datenspeichervorrichtung204 innerhalb der Host-Vorrichtung202 nicht entfernbar oder integriert sein.Thedata storage device 204 can be any suitable device that provides non-volatile memory for thehost device 202 provides. Thedata storage device 204 may be a removable storage device, such as a solid-state drive (e.g. that is removable with thehost device 202 is connectable). In an alternative example, thedata storage device 204 within thehost device 202 cannot be removed or integrated.
In dem Beispiel von2 schließt die Datenspeichervorrichtung204 eine Vorrichtungssteuerung210 und einen nichtflüchtigen Speicher212 ein. Die Vorrichtungssteuerung210 steuert den Zugriff auf den nichtflüchtigen Speicher212. In einer Ausführungsform kann die Vorrichtungssteuerung210 eine nichtflüchtige Speichersteuerung sein, die das NVMe-Protokoll implementiert oder unterstützt, und der nichtflüchtige Speicher212 kann ein 2D- oder 3D-NAND-Flash-Speicher sein.In the example of 2 closes the data storage device 204 adevice controller 210 and anon-volatile memory 212 one. Thedevice control 210 controls access to thenon-volatile memory 212 . In one embodiment, the device controller 210 a non-volatile memory controller that implements or supports the NVMe protocol and thenon-volatile memory 212 can be a 2D or 3D NAND flash memory.
Um Daten aus der Datenspeichervorrichtung204 zu lesen oder Daten in diese zu schreiben, erzeugt der Host-Prozessor206 Befehle und speichert die Befehle in den Übermittlungswarteschlangen214-1,214-2 und214-3. Drei Übermittlungswarteschlangen sind zu Veranschaulichungszwecken dargestellt. Es wird darauf hingewiesen, dass es mehr oder weniger als drei Übermittlungswarteschlangen zu einem beliebigen gegebenen Zeitpunkt je nach der Verwendung von NVMe durch das Host-System geben kann. Die Vorrichtungssteuerung210 ruft die Befehle aus den Übermittlungswarteschlangen214-1,214-2 und214-3 ab und führt dann die Befehle aus. Nach Abschluss der Befehle schreibt die Vorrichtungssteuerung210 Beendigungseinträge in die Beendigungswarteschlangen216-1,216-2 und216-3.To data from thedata storage device 204 reading or writing data to it is generated by thehost processor 206 Commands and stores the commands in the submission queues 214-1 , 214-2 and 214-3 . Three delivery queues are shown for illustrative purposes. It should be noted that there may be more or fewer than three delivery queues at any given time, depending on the host system's use of NVMe. Thedevice control 210 gets the commands from the submission queues 214-1 , 214-2 and 214-3 and then executes the commands. After completing the commands, the device controller writes 210 Completion entries in the completion queues 216-1 , 216-2 and 216-3 .
Der NVMe-Standard definiert drei Arbitrierungstechniken zum Ausradieren von Befehlen aus den Übermittlungswarteschlangen. Die erste Technik verwendet eine Rundlaufarbitrierung und ist verpflichtend. Die zweite Technik verwendet ein gewichtetes Rundlaufverfahren mit dringender Prioritätsklassen-Befehlsarbitrierung und ist optional. Die letzte Technik ist herstellerspezifisch.The NVMe standard defines three arbitration techniques for erasing commands from the delivery queues. The first technique uses round-robin arbitration and is mandatory. The second technique uses a weighted round robin with urgent priority class command arbitration and is optional. The last technology is manufacturer-specific.
Bei der Rundlaufarbitrierungstechnik stellt die Datenspeichervorrichtung eine Rundlaufbefehlsarbitrierung unter allen Übermittlungswarteschlangen einschließlich einer Verwaltungsübermittlungswarteschlange bereit. In diesem Fall werden alle Übermittlungswarteschlangen mit gleicher Priorität behandelt. Die Datenspeichervorrichtung kann mehrere Kandidatenbefehle zur Verarbeitung aus jeder Übermittlungswarteschlange pro Zyklus basierend auf einer Arbitrierungsbursteinstellung auswählen.In the round-robin arbitration technique, the data storage device provides round-robin command arbitration among all delivery queues including a management delivery queue. In this case, all delivery queues are treated with the same priority. The data storage device can select multiple candidate instructions for processing from each transmission queue per cycle based on an arbitration burst setting.
3 veranschaulicht ein Kommunikationssystem300, das eine Hostvorrichtung302 und eine Datenspeichervorrichtung304 einschließt, wobei ein Rundlaufverfahren zum Auswählen oder Abrufen von Befehlen aus Übermittlungswarteschlangen (SQs)306-1 - 306-N verwendet wird. Ein Rundlaufarbiter308 wählt statisch einen Befehl aus einer der Übermittlungswarteschlangen306-1 - 306-N auf Basis eines Rundlaufauswahlalgorithmus ungeachtet des Zustandes der Vorrichtung, des Zustandes der entsprechenden Beendigungswarteschlangen oder beliebiger anderer Informationen aus. Die Rundlaufauswahl umfasst eine Auswahl aus jeder Warteschlange306-1 - 306-N in der Reihenfolge1 bis N und wiederholt kontinuierlich die Auswahl in der gleichen Reihenfolge. Der Rundlaufarbiter308 weist die Befehlsabruflogik310 an, jeden Befehl auszuwählen. Die Befehlsabruflogik310 stellt den Befehl der Befehlsverarbeitungslogik (in3 nicht gezeigt) bereit, die den Befehl verarbeitet. Wenngleich Rundlaufauswahl eine gleichmäßige Bedienung von Übermittlungswarteschlangen sicherstellen kann, werden die Speichervorrichtungsressourcen möglicherweise nicht optimal genutzt, insbesondere wenn Befehle aus den Übermittlungswarteschlangen abgerufen werden, jedoch aufgrund von Beschränkungen der Speichervorrichtungsressourcen nicht verarbeitet werden können. Wenn beispielsweise die Datenspeichervorrichtung304 nicht in der Lage ist, einen Schreibbefehl zu verarbeiten, der aus einer Übermittlungswarteschlange abgerufen wurde, kann die Datenspeichervorrichtung304 warten, bis Ressourcen verfügbar sind, um den Schreibbefehl zu verarbeiten. Wenn die Datenspeichervorrichtung304 Verarbeitungsressourcen zum Verarbeiten eines Lesebefehls verfügbar hatte, aber während der Wartezeit nicht verwendet wurden, dann werden solche Ressourcen nicht effizient genutzt.3 illustrates acommunication system 300 , which is ahost device 302 and adata storage device 304 includes, wherein a round robin method of selecting or retrieving commands from Submission Queues (SQs) 306-1-306-N is used. Arotary arbiter 308 statically selects an instruction from one of the submission queues 306-1-306-N based on a round robin selection algorithm regardless of the state of the device, the state of the corresponding termination queues, or any other information. The round trip selection includes a selection from each queue 306-1-306-N in thisorder 1 through N and continuously repeats the selection in the same order. Therotary arbiter 308 instructs the command fetchlogic 310 to select each command. The command fetchlogic 310 represents the command of the command processing logic (in 3 not shown) ready to process the command. While round robin selection can ensure smooth delivery of delivery queues, storage device resources may not be used optimally, especially if commands are fetched from the delivery queues but cannot be processed due to storage device resource limitations. For example, if thedata storage device 304 is unable to process a write command retrieved from a submission queue, thedata storage device 304 wait until resources are available to process the write command. When thedata storage device 304 If processing resources had been available to process a read command but were not used while waiting, then such resources will not be used efficiently.
In dem gewichteten Rundlauf mit einer dringenden Prioritätsklassen-Befehlsarbitrierungstechnik gibt es drei strikte Prioritätsklassen und drei gewichtete Rundlaufprioritätsstufen. Wenn die Übermittlungswarteschlange A eine höhere strikte Priorität als die Übermittlungswarteschlange B hat, dann beginnen alle Kandidatenbefehle in der Übermittlungswarteschlange A die Verarbeitung, bevor Kandidatenbefehle von der Übermittlungswarteschlange B die Verarbeitung beginnen.In the weighted round trip with an urgent priority class command arbitration technique, there are three strict priority classes and three weighted round trip priority levels. If submission queue A has a higher strict priority than submission queue B, then all candidate commands in submission queue A begin processing before candidate commands from submission queue B begin processing.
Die höchste strikte Prioritätsklasse ist die Verwaltungsklasse, die beliebige Befehl einschließt, die der Verwaltungsübermittlungswarteschlange übermittelt werden. Diese Klasse hat die höchste strikte Priorität über Befehlen, die irgendeiner anderen Übermittlungswarteschlange übermittelt werden.The highest strict priority class is the management class, which includes any commands that are submitted to the management delivery queue. This class has the highest strict priority over commands submitted to any other delivery queue.
Die nächsthöchste strikte Prioritätsklasse ist die dringende Klasse. Jede E/A-Übermittlungswarteschlange, die der dringenden Prioritätsklasse zugewiesen wird, wird als nächste nach den der Verwaltungsübermittlungswarteschlange übermittelten Befehlen und vor jeglichen Befehlen bedient, die der gewichteten Rundlaufprioritätsstufe übermittelt werden. Im Allgemeinen wird die Host-Vorrichtungssoftware bei der Zuordnung irgendeiner Übermittlungswarteschlange an die dringende Prioritätsklasse Sorgfalt walten lassen, da das Potential vorhanden ist, die E/A-Übermittlungswarteschlangen in der gewichteten Rundlaufprioritätsstufe warten zu lassen, da es ja kein Fairness-Protokoll zwischen den dringenden und nicht dringenden E/A-Übermittlungswarteschlangen gibt.The next highest strict priority class is the urgent class. Any I / O submission queue assigned to the urgent priority class is serviced next after commands submitted to the administrative submission queue and before any commands submitted to the weighted round robin priority. In general, the host device software will take care in assigning any submission queue to the urgent priority class, since there is the potential to keep the I / O submission queues waiting at the weighted round robin priority as there is no fairness protocol between urgent ones and non-urgent I / O submission queues.
Die niedrigste strikte Prioritätsklasse ist die gewichtete Rundlaufklasse. Diese Klasse besteht aus den drei gewichteten Rundlaufprioritätsstufen (hoch, mittel und niedrig), welche die verbleibende Bandbreite unter Verwendung gewichteter Rundlaufarbitrierung teilen. Die Host-Vorrichtungssoftware steuert die Gewichtungen für die hohen, mittleren und niedrigen Dienstklassen über eingestellte Merkmale. Rundlauf wird zur Arbitrierung innerhalb mehrerer Übermittlungswarteschlangen, die derselben gewichteten Rundlaufstufe zugeordnet sind, verwendet. Die Anzahl der in Frage kommenden Befehle, welche die Verarbeitung aus jeder Übermittlungswarteschlange pro Zyklus starten können, beruht entweder auf der Arbitrierungsbursteinstellung oder der verbleibenden gewichteten Rundlaufzyklen, je nach dem, was kleiner ist.The lowest strict priority class is the weighted concentricity class. This class consists of the three weighted round-trip priority levels (high, medium, and low) which share the remaining bandwidth using weighted round-trip arbitration. The host device software controls the weights for the high, medium and low service classes via set features. Roundness is used for arbitration within several transmission queues that are assigned to the same weighted roundness level. The number of commands in question that can start processing from each transmission queue per cycle is based on either the Arbitration burst setting or the remaining weighted round-trip cycles, whichever is smaller.
4 veranschaulicht ein Kommunikationssystem400, das eine Host-Vorrichtung402 und eine Datenspeichervorrichtung404 einschließt, wobei eine gewichtete Rundlauftechnik zum Auswählen oder Abrufen von Befehlen aus den Übermittlungswarteschlangen (SQs)406-1 - 406-N verwendet wird. Die Übermittlungswarteschlangen406-1 - 406-N werden nach Prioritäten gruppiert. Rundlaufarbiter (RRs)408-1 - 408-N implementieren jeweils eine Rundlaufauswahl für ihre jeweiligen Warteschlangen und geben die ausgewählte Warteschlange an die nächste Stufe in der Hierarchie weiter. Ein gewichteter Rundlaufarbiter (WWR)410 wählt Befehle aus den Kandidaten, die durch die Rundlaufarbiter408-2 - 408-N auf der vorherigen Ebene unter Verwendung der zugewiesenen Gewichtungen ausgewählt wurden, um die Kandidaten in jedem Zyklus der Rundlaufauswahl zu ordnen. Der gewichtete Rundlaufarbiter410 gibt seine ausgewählte Warteschlange als Auswahlkandidat an die nächste Stufe in der Hierarchie weiter, welche in diesem Beispiel die höchste Stufe ist. Ein Prioritätsarbiter412 in der höchsten Stufe in der Hierarchie wählt aus der Ausgabe des gewichteten Rundlaufarbiters410 unter Verwendung der vom Host zugewiesenen Prioritäten eine Verwaltungswarteschlange406-1 und die Ausgabe des Rundlaufarbiters406-1 aus. Während die in4 veranschaulichte Technik eine Priorisierung von Befehlen ermöglicht, werden die Prioritäten durch die Host-Vorrichtung402 statisch eingestellt. Dementsprechend kann die Datenspeichervorrichtung404 Befehle abrufen, die nicht unmittelbar verarbeitet werden können, während andere Befehle, die unmittelbar verarbeitet werden könnten, in den Übermittlungswarteschlangen406-1 - 406-N eingereiht bleiben.4th illustrates acommunication system 400 that is ahost device 402 and adata storage device 404 includes, wherein a weighted round robin technique for selecting or retrieving commands from the Submission Queues (SQs) 406-1-406-N is used. The delivery queues 406-1-406-N are grouped according to priorities. Rotary arbiter (RRs) 408-1-408-N each implement a round robin selection for their respective queues and pass the selected queue on to the next level in the hierarchy. A weighted concentricity arbiter (WWR) 410 selects commands from the candidates passed through the round robin arbiter 408-2-408-N at the previous level using the assigned weights to rank the candidates in each cycle of round robin selection. Theweighted concentricity arbiter 410 forwards its selected queue as a candidate for selection to the next level in the hierarchy, which in this example is the highest level. Apriority arbiter 412 at the highest level in the hierarchy chooses from the output of the weighted round robin arbiter 410 a management queue using the priorities assigned by the host 406-1 and the output of the concentric arbiter 406-1 out. While the in 4th If the technique illustrated enables commands to be prioritized, the priorities are set by thehost device 402 statically set. Accordingly, thedata storage device 404 Get commands that cannot be processed immediately while other commands that could be processed immediately are in the Submission queues 406-1-406-N stay in line.
Der NVMe-Standard unterstützt auch so genannte FUSED-Operationen, welche die Verwendung eines komplexeren Befehls durch „Fusionieren“ von zwei einfacheren Befehlen ermöglichen. Üblicherweise werden diese Befehle insgesamt als ein FUSED-Befehl bezeichnet.The NVMe standard also supports so-called FUSED operations, which enable the use of a more complex command by "fusing" two simpler commands. Usually these commands are collectively referred to as a FUSED command.
In einer FUSED-Operation werden die Befehle der Reihe nach als eine atomare Einheit ausgeführt. Zum Beispiel kann die NVMe-Steuerung sicherstellen, dass keine anderen Operationen zwischen diesen zwei Befehlen ausgeführt werden.In a FUSED operation, the instructions are executed sequentially as an atomic unit. For example, the NVMe controller can ensure that no other operations are performed between these two commands.
Die Befehle werden nebeneinander in dieselbe Übermittlungswarteschlange eingefügt. Die Aktualisierung des Doorbell-Zeigers des Übermittlungswarteschlangenendes zeigt beide Befehle als Teil einer Doorbell-Aktualisierung an.The commands are placed side by side in the same Submission queue. The update of the doorbell pointer of the submission queue indicates both commands as part of a doorbell update.
Vergleichen und Schreiben ist ein Beispiel eine FUSED-Operation. Diese Operation vergleicht den Inhalt des Logikblocks (der Logikblöcke), der in dem Vergleichsbefehl mit den Daten, die an dem angegebenen Logikblockadressbereich (LBA) gespeichert sind, spezifiziert ist. Wenn der Vergleich erfolgreich ist, dann wird der LBA-Bereich mit den Daten, die in dem Schreibbefehl bereitgestellt werden, aktualisiert. Wenn die Vergleichsoperation nicht erfolgreich ist, dann wird die Schreiboperation mit einem Status Befehl abgebrochen aufgrund eines fehlgeschlagenen FUSED-Befehls abgebrochen und der Inhalt in dem LBA-Bereich wird nicht modifiziert.Compare and write is an example of a FUSED operation. This operation compares the content of the logic block (s) specified in the compare instruction with the data stored in the indicated logic block address area (LBA). If the comparison is successful, then the LBA area is updated with the data provided in the write command. If the comparison operation is unsuccessful, then the write operation is aborted with a status command aborted due to a failed FUSED command and the content in the LBA area is not modified.
VERBESSERTE NVME-BEFEHLSAUSWAHLIMPROVED NVME COMMAND SELECTION
In einer NVMe-Systemumgebung platziert die Host-Software NVMe-Befehle in Übermittlungswarteschlangen, die wie vorstehend erläutert im Host-Speicher angeordnet sind. Eine NVMe-Steuerung in einer Datenspeichervorrichtung ruft die NVMe-Befehle aus den Übermittlungswarteschlangen auf Basis einer Warteschlangenpriorität ab.In an NVMe system environment, the host software places NVMe commands in delivery queues located in host memory as discussed above. An NVMe controller in a data storage device retrieves the NVMe commands from the delivery queues based on a queue priority.
Im Allgemeinen ist es vorzuziehen, die Befehle früh genug abzurufen, so dass die Gesamtleistung erhöht werden kann (z. B. durch Vermeiden von Befehlszeitüberschreitung an der Host-Vorrichtung). Jedoch kann das Halten eines Befehls, der intern in der NVMe-Steuerung darauf wartet, die Ausführungsphase zu starten, wertvolle Ressourcen der NVMe-Steuerung wie interne Befehlsschlitze, interne Puffer und zugeordnete Logik verschwenden. Darüber hinaus kann das Halten nicht ausgeführten Befehle über einen langen Zeitraum zu einer Leistungsverschlechterung führen, da andere Befehle, die ausgeführt werden können, diese Ressourcen unmittelbar hätten verwenden können. Wenn zum Beispiel eine NVMe-Steuerung einen Befehl abruft, wird ein zuvor freier Befehlsschlitz mit dem Befehl belegt, während der Befehl für die Ausführung ausstehend ist. Wenn die NVMe-Steuerung die Ausführungsphase für den Befehl an diesem Punkt nicht starten kann, wird dieser Befehlsschlitz verschwendet und nicht vollständig verwendet, da während dieses Zeitraums andere Befehle diesen Schlitz hätten verwenden können. Somit wird Leistung durch die verzögerte Ausführung nicht nur dieses spezifischen Befehls beeinträchtigt, sondern es kann ebenso die Leistung der anderen E/A-Befehle nachteilig beeinflusst werden.In general, it is preferable to fetch the commands early enough so that overall performance can be increased (e.g., by avoiding command timeouts on the host device). However, holding an instruction waiting internally in the NVMe controller to start the execution phase can waste valuable NVMe controller resources such as internal instruction slots, internal buffers, and associated logic. Additionally, holding unexecuted commands for a long time can degrade performance because other commands that could have been executed could have used those resources immediately. For example, when an NVMe controller polls an instruction, a previously vacant instruction slot is occupied with the instruction while the instruction is pending execution. If the NVMe controller cannot start the execution phase for the command at this point, this command slot will be wasted and not used entirely because other commands could have used this slot during that time. Thus, not only is performance affected by the delayed execution of that specific instruction, but it can also adversely affect the performance of the other I / O instructions.
Darüber hinaus kann unter Verwendung konventioneller Techniken eine NVMe-Steuerung einer möglichen Befehlsausführungsblockade ausgesetzt werden, insbesondere bei FUSED-Befehlsoperationen. Die NVMe-Steuerungsarchitektur ist für normale Operationen optimiert, nicht für FUSED-Befehlsoperationen. Nach dem Abrufen des ersten Teils (z. B. eines ersten Befehls) eines FUSED-Befehls wird der entsprechende Befehl intern gehalten (belegt einen Befehlsschlitz), bis der zweite Teil (z. B. zweiter Befehl) des FUSED-Befehls abgerufen wird. Nur wenn die NVMe-Steuerung beide Teile der FUSED-Befehle aufweist, startet die NVMe-Steuerung die Ausführungsphase für diesen FUSED-Befehl. Somit wird der erste Teil eines FUSED-Befehls intern in der NVMe-Steuerung gehalten, während das Warten auf den Start der Ausführungsphase wertvolle Ressourcen der NVMe-Steuerung verschwenden kann. Wenn die maximale Anzahl ausstehender Befehle in der NVMe-Steuerung kleiner als die maximale Anzahl unterstützter Übermittlungswarteschlangen ist, kann eine Blockade auftreten, wenn alle Übermittlungswarteschlangen FUSED-Befehle aufweisen.In addition, using conventional techniques, an NVMe controller can be exposed to a possible instruction execution stall, particularly in FUSED instruction operations. The NVMe control architecture is optimized for normal operations, not FUSED command operations. After the first part (e.g. a first command) of a FUSED command has been called up, the corresponding command is held internally (occupied a command slot) until the second part (e.g. second command) of the FUSED command is fetched. Only if the NVMe controller has both parts of the FUSED commands does the NVMe controller start the execution phase for this FUSED command. Thus, the first part of a FUSED command is held internally in the NVMe controller, while waiting for the start of the execution phase can waste valuable resources of the NVMe controller. If the maximum number of outstanding commands in the NVMe controller is less than the maximum number of submission queues supported, a deadlock may occur if all submission queues have FUSED commands.
Die Offenbarung bezieht sich in einigen Gesichtspunkten auf das Verwalten der vorstehend genannten Kompromisse durch Bereitstellen einer besseren Befehlsverwendung und einer besseren Nutzung der internen Ressourcen. Zum Beispiel prüft die NVMe-Steuerung nach dem Abrufen eines Befehls, aber vor dem Zuweisen eines Befehlsschlitzes für diesen Befehl, ob der Befehl durch mindestens ein Ereignis (z. B. ein internes Ereignis und/oder ein externes Ereignis) blockiert ist. Wenn die Befehlsausführung durch ein internes Ereignis blockiert ist, bestimmt die NVMe-Steuerung, wann die Blockierung entfernt werden wird. Wenn die Blockierung für einen relativ langen Zeitraum nicht entfernt werden wird, kann die NVMe-Steuerung diesen Befehl intern in dem DRAM oder dem Host-Vorrichtungsspeicher (z. B. einem Host-Pufferspeicher (HMB)) speichern, um den Befehlsschlitz freizugeben, bis die Blockierung entfernt wird.The disclosure relates in some respects to managing the above tradeoffs by providing better command usage and better usage of internal resources. For example, after fetching a command, but before assigning a command slot for that command, the NVMe controller checks whether the command is blocked by at least one event (e.g., an internal event and / or an external event). If an internal event blocks execution of the command, NVMe control determines when the block will be removed. If the blockage is not cleared for a relatively long period of time, the NVMe controller can store this command internally in the DRAM or host device memory (e.g., a host cache memory (HMB)) to free the command slot until the blockage is removed.
Bei einigen Implementierungen vergleicht die NVMe-Steuerung die verbleibende Blockierdauer (z. B. die Zeitspanne, während der die Befehlsausführung verzögert wird) mit einem Schwellenwert, um zu bestimmen, ob eine Blockierungsbedingung angezeigt ist. Dieser Schwellenwert kann zum Beispiel auf Grundlage eines oder mehreren von Folgendem definiert werden: der maximalen Befehlsanzahl, die zur Ausführung gespeichert werden kann (z. B. in der NVMe-Steuerung oder einer anderen geeigneten Vorrichtung), der Befehlsanzahl, die zur Ausführung gegenwärtig blockiert ist, der benötigten Zeitspanne bis zur Befehlsausführung oder anderer mit der Ausführung zusammenhängender Informationen. Dieser Schwellenwert kann zum Beispiel auf der Grundlage empirischer Tests und/oder Simulationen definiert werden, um eine Schwellenzeitspanne zu ermitteln, welche die beste Leistung bereitstellt. In einigen Implementierungen können unterschiedliche Schwellenwerte verwendet werden (z. B. unterschiedliche Schwellenwerte für unterschiedliche Befehle). In einigen Implementierungen kann ein Schwellenwert in der Größenordnung von 10 - 20 Mikrosekunden verwendet werden. In anderen Implementierungen können andere Schwellenwerte verwendet werden.In some implementations, the NVMe controller compares the remaining deadlock duration (e.g., the amount of time that instruction execution is delayed) against a threshold to determine whether a deadlock condition is indicated. This threshold can be defined based on, for example, one or more of the following: the maximum number of instructions that can be stored for execution (e.g., in the NVMe controller or other suitable device), the number of instructions that are currently blocked from execution the time required for the command to be executed or other information related to the execution. This threshold value can be defined, for example, based on empirical tests and / or simulations to determine a threshold time period that provides the best performance. In some implementations, different thresholds can be used (e.g., different thresholds for different commands). In some implementations, a threshold on the order of 10-20 microseconds can be used. Other thresholds may be used in other implementations.
Eine LBA-Kollision ist ein Beispiel für eine interne Blockierungsbedingung. Wenn beispielsweise die Host-Vorrichtung einen Lesevorgang für Daten ausgibt, die aktuell im DRAM zwischengespeichert sind, muss die Steuerung den DRAM leeren und die Daten zurück an die NAND-Vorrichtung schreiben (z. B. könnte die Steuerung nicht in der Lage sein, Daten direkt vom DRAM zur Host-Vorrichtung zurückzugeben). Somit wird die Steuerung nicht in der Lage sein, die Ausführungsphase für den Lesevorgang unmittelbar zu starten, was zu einer temporären Blockierungsbedingung führt.An LBA collision is an example of an internal blocking condition. For example, if the host device issues a read for data currently cached in the DRAM, the controller must flush the DRAM and write the data back to the NAND device (e.g., the controller may not be able to read data return directly from DRAM to host device). Thus, the controller will not be able to start the execution phase for the read process immediately, which leads to a temporary blocking condition.
Ein weiteres Beispiel einer internen Blockierungsbedingung bezieht sich auf Befehle, die einem spezifischen Namensraum zugeordnet sind (z. B. einer Gruppe von LBAs). Die Befehle in einem Namensraum können sich die gleichen Attribute teilen (z. B. Sicherheitszone, LBA-Größe, Dienstqualität (QoS), etc.). Wenn ein Namensraum gegenwärtig gesättigt ist, kann die Steuerung vorübergehend die Ausführung aller Befehle für diesen Namensraum stoppen (z. B. um einen konsistenten Dienst (z. B. QoS) für alle Befehle des Namensraums aufrechtzuerhalten). Somit kann die Ausführung dieser Befehle vorübergehend blockiert sein.Another example of an internal blocking condition relates to commands associated with a specific namespace (e.g., a group of LBAs). The commands in a namespace can share the same attributes (e.g. security zone, LBA size, quality of service (QoS), etc.). If a namespace is currently saturated, the controller can temporarily stop the execution of all commands for that namespace (e.g. to maintain a consistent service (e.g. QoS) for all commands of the namespace). The execution of these commands can therefore be temporarily blocked.
Die Ausführung eines definierten Befehls für die Ausführungsreihenfolge ist ein Beispiel für eine externe Blockierungsbedingung. Wenn zum Beispiel die Steuerung nur den ersten Teil eines FUSED-Befehls in einen Befehlsschlitz geladen hat, muss die Steuerung warten, bis sie den zweiten Teil des FUSED-Befehls empfangen hat, bevor sie den ersten Teil des FUSED-Befehls ausführen kann. Somit ist Ausführung des ersten Teils des FUSED-Befehls in diesem Fall aufgrund der erforderlichen, von außen durch die Host-Vorrichtung aufgezwungenen Ausführungsreihenfolge blockiert.The execution of a defined execution order command is an example of an external blocking condition. For example, if the controller has only loaded the first part of a FUSED command into a command slot, the controller must wait until it has received the second part of the FUSED command before it can execute the first part of the FUSED command. Thus, execution of the first part of the FUSED instruction is blocked in this case due to the necessary execution order imposed from the outside by the host device.
Wie vorstehend erwähnt, ist die NVMe-Steuerungsarchitektur für Nicht-FUSED-Operationen optimiert. Die Offenbarung bezieht sich in einigen Gesichtspunkten auf das Optimieren von NVMe-FUSED-Operationen. Diese Optimierungen können eine Optimierung der internen Ressourcen einschließen, die für die Ausführung von FUSED-Befehlen wie etwa SRAM, NVMe-Befehlsschlitze, interne Flops, etc. verwendet werden. Diese Optimierungen können das Vermeiden von Blockaden während der Ausführung von FUSED-Befehlen einschließen. Diese Optimierungen können intelligente NVMe-Arbitrierung einschließen, die FUSED-Operationen berücksichtigt. Diese Optimierungen können das Einreihen beider Teile eines FUSED-Befehls in die NVME-Controller-Firmware als Einzeleintrag einschließen, so dass die Firmware die Ausführung starten kann, sobald der Eintrag ohne zusätzliche Datenflüsse empfangen wird. Diese Optimierungen können die Regelüberprüfung von NVMe-FUSED-Befehlen durch die NVMe-Steuerung einschließen.As mentioned above, the NVMe control architecture is optimized for non-FUSED operations. The disclosure relates in several respects to optimizing NVMe FUSED operations. These optimizations can include optimizing the internal resources used to execute FUSED instructions such as SRAM, NVMe instruction slots, internal flops, and so on. These optimizations can include avoiding deadlocks during execution of FUSED instructions. These optimizations can include intelligent NVMe arbitration that takes FUSED operations into account. These optimizations can include queuing both parts of a FUSED command in the NVME controller firmware as a single entry so that the firmware can start executing as soon as the entry is received with no additional data flows. These optimizations can make the Include rules checking of NVMe FUSED commands by the NVMe controller.
Als ein Beispiel der vorstehenden Optimierungen kann, wenn die Befehlsausführung durch ein externes Ereignis blockiert wird (wie beispielsweise, dass nur der ersten Befehls eines FUSED-Befehls abgerufen wurde), die NVME-Steuerung entweder den Blockierungszeitraum verkürzen (z. B. durch Erhöhen der Priorität der Übermittlungswarteschlange) oder den Befehlsschlitz freigeben und den FUSED-Befehl zu einem späteren Zeitpunkt ausführen. In einer ersten Ausführungsform wird nach dem Abrufen des ersten Teils eines FUSED-Befehls die Priorität der zugehörigen Übermittlungswarteschlange erhöht, so dass der zweite Teil des FUSED-Befehls so schnell wie möglich abgerufen wird. In einer zweiten Ausführungsform wird der erste Teil des FUSED-Befehls verworfen, während eine Anzeige gesetzt wird, dass diese Übermittlungswarteschlange einen FUSED-Befehl enthält. In dem nächsten Zyklus der Befehlsabrufarbitrierung ruft die NVMe-Steuerung beide Teile des FUSED-Befehls ab (z. B. in einer Abrufoperation), da die NVMe-Steuerung weiß, dass diese Übermittlungswarteschlange einen FUSED-Befehl hält. In einer dritten Ausführungsform sagt die NVMe-Steuerung vorher, wann eine Übermittlungswarteschlange einen FUSED-Befehl hält, und ruft die Befehle des FUSED-Befehls als eine einzelne Einheit ab. Diese Vorhersage basiert mindestens teilweise auf der Art und Weise wie die Host-Vorrichtung die Doorbell-Transaktionen durchführt. Jede dieser Ausführungsformen kann parallel arbeiten.As an example of the above optimizations, if instruction execution is blocked by an external event (such as only the first instruction of a FUSED instruction being fetched), the NVME controller can either shorten the blocking period (e.g. by increasing the Submit Queue Priority) or release the command slot and execute the FUSED command at a later time. In a first embodiment, after the first part of a FUSED command has been called up, the priority of the associated transmission queue is increased so that the second part of the FUSED command is called up as quickly as possible. In a second embodiment, the first part of the FUSED command is discarded while an indication is set that this transmission queue contains a FUSED command. In the next command fetch arbitration cycle, the NVMe controller fetches both parts of the FUSED instruction (e.g. in a fetch operation) because the NVMe controller knows that this transmission queue is holding a FUSED instruction. In a third embodiment, the NVMe controller predicts when a transmission queue is holding a FUSED command and fetches the commands of the FUSED command as a single unit. This prediction is based at least in part on the manner in which the host device is performing the doorbell transactions. Each of these embodiments can operate in parallel.
Die Offenbarung bezieht sich somit in einigen Gesichtspunkten auf die Verringerung der Zeitspanne, in der ein Befehl, der nicht sofort ausgeführt werden kann, intern gehalten wird (z. B. in einer NVMe-Steuerung). Diese Gesichtspunkte und andere Gesichtspunkte der Offenbarung werden nun in Verbindung mit den Operationen zum Steuern der Befehlsausführung, die in5 -9 dargelegt sind, detaillierter beschrieben. Alle offenbarten Ausführungsformen können parallel arbeiten, während sie dynamisch untereinander umschalten.The disclosure thus relates in some respects to reducing the amount of time an instruction that cannot be executed immediately is held internally (e.g., in an NVMe controller). These and other aspects of the disclosure will now be considered in connection with the instruction execution control operations described in FIG 5 - 9 are described in more detail. All of the disclosed embodiments can operate in parallel while dynamically switching between one another.
BEISPIEL BEFEHLSAUSFÜHRUNGSSTEUEROPERATIONENEXAMPLE COMMAND EXECUTION CONTROL OPERATIONS
5 veranschaulicht eine Ausführungsform der Operationen500, die in Verbindung mit der Steuerung der Befehlsausführung gemäß der Lehre hierin durchgeführt werden können. Die Operationen500 können innerhalb einer Datenspeichervorrichtung, einer Host-Vorrichtung, einem NVM oder einer anderen geeigneten Vorrichtung oder Vorrichtungen erfolgen. Zum Beispiel können ein oder mehrere dieser Operationen durch die Steuerung108 (z. B. das Befehlsabruf-, -arbitrierungs- und -ausführungsmodul120) von1 durchgeführt werden.5 illustrates one embodiment of theoperations 500 which may be performed in connection with controlling instruction execution as taught herein. Theoperations 500 may be within a data storage device, host device, NVM, or other suitable device or devices. For example, one or more of these operations can be performed by the controller 108 (e.g. the command retrieval, arbitration and execution module 120 ) from 1 be performed.
In Block502 ruft eine Datenspeichervorrichtung (oder eine andere geeignete Vorrichtung) einen Befehl ab. Zum Beispiel kann die Datenspeichervorrichtung einen Befehl aus einer Übertragungswarteschlange einer Host-Vorrichtung als Antwort auf eine Doorbell-Transaktion abrufen.In block 502 a data storage device (or other suitable device) retrieves a command. For example, the data storage device may retrieve a command from a transmission queue of a host device in response to a doorbell transaction.
In Block504 bestimmte die Datenspeichervorrichtung vor dem Zuweisen eines Befehlsschlitzes, ob der Befehl durch eine oder mehrere Bedingungen blockiert wird. Diese Bedingung könnte sich auf eine Bedingung innerhalb der Datenspeichervorrichtung (ein internes Ereignis) oder eine Bedingung außerhalb der Datenspeichervorrichtung (ein externes Ereignis) beziehen. Beispielsweise können interne Bedingungen das Fehlen einer oder mehrerer interner Ressourcen, eines NAND, das mit interner Verwaltung beschäftigt ist, oder von LBA-Überlappungen einschließen. Externe Bedingungen können das Szenario einschließen, in dem die Datenspeichervorrichtung nur einen Teil eines FUSED-Befehls abgerufen hat.In block 504 prior to assigning an instruction slot, the data storage device determines whether the instruction is being blocked by one or more conditions. This condition could relate to a condition within the data storage device (an internal event) or a condition outside the data storage device (an external event). For example, internal conditions can include lack of one or more internal resources, a NAND engaged in internal management, or LBA overlap. External conditions can include the scenario where the data storage device has only fetched a portion of a FUSED instruction.
Wenn der Befehl nicht blockiert ist (z. B. kann die Ausführungsphase für den Befehl sofort beginnen), startet die Datenspeichervorrichtung in Block506 die Ausführung des Befehls.If the command is not blocked (e.g. the execution phase for the command can begin immediately), the data storage device starts inblock 506 the execution of the command.
Wenn der Befehl blockiert ist, bestimmt die Datenspeichervorrichtung in Block508, ob das Blockieren auf eine interne Bedingung oder eine externe Bedingung zurückzuführen ist.If the command is blocked, the data storage device determines inblock 508 whether the blocking is due to an internal condition or an external condition.
Wenn das Blockieren auf eine interne Bedingung zurückzuführen ist, bewertet die Datenspeichervorrichtung in Block510 den Blockierungszeitraum, um zu bestimmen, wann die Blockade entfernt wird.If the blocking is due to an internal condition, the data storage device evaluates inblock 510 the blocking period to determine when the blockage will be removed.
In Block512, wenn der Blockierungszeitraum relativ kurz ist (z. B. kleiner als eine Schwellenwertzeitspanne), geht der Operationsfluss auf Block514 über.Inblock 512 if the blocking period is relatively short (e.g., less than a threshold period), the flow of operations goes to block 514 above.
In Block514 wartet die Datenspeichervorrichtung, bis die Befehlsausführung nicht mehr blockiert ist und startet dann die Ausführung des Befehls.Inblock 514 the data storage device waits until the command execution is no longer blocked and then starts executing the command.
Wenn in Block512 bestimmt wird, dass der Blockierungszeitraum zu lange ist (z. B. größer als eine Schwellenwertzeitspanne), hält in Block516 die Datenspeichervorrichtung diesen Befehl intern in dem Speicher (z. B. DRAM oder HMB) und gibt gegebenenfalls den Befehlsschlitz frei. Sobald die Blockade entfernt ist, kopiert die Datenspeichervorrichtung die Befehlsinformationen aus dem Speicher in einen Befehlsschlitz und führt den Befehl aus.If inblock 512 it is determined that the blocking period is too long (e.g. greater than a threshold period), holds inblock 516 the data storage device carries out this command internally in the memory (e.g. DRAM or HMB) and, if necessary, enables the command slot. Once the blockage is removed, the data storage device copies the command information from memory into a command slot and executes the command.
Wenn in Block508 bestimmt wird, dass die Blockade auf eine externe Bedingung zurückzuführen ist, kann die Datenspeichervorrichtung in Block518 den Blockierungszeitraum unter Verwendung irgendeiner von drei Techniken verkürzen. In einer ersten Technik ändert die Datenspeichervorrichtung das Prioritätsschema des Befehlsabrufs (z. B. durch Erhöhen der Priorität der Übermittlungswarteschlange, die den FUSED-Befehl enthält). In der zweiten Technik verwirft die Datenspeichervorrichtung den ersten Teil des FUSED-Befehls und ruft ihn dann zu einem späteren Zeitpunkt zusammen mit dem anderen Teil des FUSED-Befehls ab. In dem dritten Verfahren hält die Datenspeichervorrichtung den ersten Teil des FUSED-Befehls intern in dem Speicher (z. B. DRAM oder HMB) und gibt gegebenenfalls den Befehlsschlitz frei. Sobald die Blockade entfernt ist (z. B. sobald die Datenspeichervorrichtung den zweiten Teil des FUSED-Befehls abruft), kopiert die Datenspeichervorrichtung die Befehlsinformationen aus dem Speicher in einen Befehlsschlitz und führt den Befehl aus.If inblock 508 if it is determined that the blockage is due to an external condition, the data storage device may block 518 shorten the blocking period using any of three techniques. In a first technique, the data storage device changes the priority scheme of command fetching (e.g., by increasing the priority of the submission queue containing the FUSED command). In the second technique, the data storage device discards the first part of the FUSED command and then retrieves it at a later time along with the other part of the FUSED command. In the third method, the data storage device holds the first part of the FUSED command internally in the memory (e.g. DRAM or HMB) and releases the command slot if necessary. Once the blockage is removed (e.g., once the data storage device retrieves the second part of the FUSED command), the data storage device copies the command information from memory into a command slot and executes the command.
Der NVMe-Standard spezifiziert, dass die Datenspeichervorrichtung sicherstellen sollte, dass die Host-Vorrichtung FUSED-Befehlsregeln nicht verletzt, während FUSED-Befehle ausgeführt werden. Eine Überprüfungstechnik besteht darin, sicherzustellen, dass beide Teile eines FUSED-Befehls in benachbarten Schlitzen in der Übermittlungswarteschlange eingereiht wurden. Diese Überprüfung ist relativ einfach unter Verwendung der hierin beschriebenen Techniken, da ein FUSED-Befehl als ein einzelner Eintrag in die Firmware der Datenspeichervorrichtung eingereiht werden könnte.The NVMe standard specifies that the data storage device should ensure that the host device does not violate FUSED command rules while FUSED commands are being executed. One verification technique is to ensure that both parts of a FUSED command have been queued in adjacent slots. This verification is relatively straightforward using the techniques described herein, since a FUSED command could be queued as a single entry in the firmware of the data storage device.
In einigen Gesichtspunkten kann ein Prozess gemäß den Lehren hierin jede Kombination der vorstehend genannten Vorgänge einschließen.In some aspects, a process according to the teachings herein can include any combination of the foregoing.
BEISPIEL PRIORITÄTSBASIERTER BEFEHLSAUSFÜHRUNGSSTEUERUNGEXAMPLE OF PRIORITY-BASED COMMAND EXECUTION CONTROL
6 veranschaulicht ein Beispiel von Prioritätsstufen, die in der vorstehend beschriebenen ersten Technik zum Abmildern des externen Blockierens verwendet werden. In dem Beispiel von6 implementiert eine NVMe-Steuerung (nicht gezeigt) zwei Stufen der NVMe-Übertragung einer Warteschlangenarbitrierungslogik für FUSED-Operationen. Eine erste NVMe-Arbitrierungsstufe602 ist für die normalen Befehle (Nicht-FUSED-Befehle), wie in den NVMe-Standards definiert. Eine zweite NVMe-Arbitrierungsstufe604 hat eine höhere Priorität und ist für FUSED-Operationen. In einigen Implementierungen kann die NVMe-Arbitrierungslogik dupliziert werden, wobei ein Satz NVMe-Arbitrierungslogik für normale Befehle verwendet wird, während der andere Satz NVMe-Arbitrierungslogik für den zweiten Teil des FUSED-Befehls verwendet wird.6th Figure 11 illustrates an example of priority levels used in the first technique described above to mitigate external blocking. In the example of 6th an NVMe controller (not shown) implements two levels of NVMe transfer of queue arbitration logic for FUSED operations. A first level ofNVMe arbitration 602 is for the normal commands (non-FUSED commands) as defined in the NVMe standards. A second level of NVMe arbitration 604 has a higher priority and is for FUSED operations. In some implementations, the NVMe arbitration logic can be duplicated, with one set of NVMe arbitration logic used for normal commands while the other set of NVMe arbitration logic is used for the second part of the FUSED instruction.
Wenn die NVMe-Steuerung erkennt, dass nur ein Teil eines FUSED-Befehls intern gehalten wird, erhöht die NVMe-Steuerung die Priorität der relevanten Übermittlungswarteschlange (von der ersten NVMe-Arbitrierungsstufe602 auf die zweite NVMe-Arbitrierungsstufe604), so dass der zweite Teil des FUSED-Befehls so schnell wie möglich abgerufen werden wird.If the NVMe controller detects that only part of a FUSED command is held internally, the NVMe controller increases the priority of the relevant submission queue (from the firstNVMe arbitration level 602 to the second NVMe arbitration level 604 ) so that the second part of the FUSED command will be obtained as soon as possible.
Bei dem nächsten Arbitrierungszyklus wird die Übermittlungswarteschlange, die durch irgendeine Arbitrierung für FUSED-Operationen auf der zweiten NVMe-Arbitrierungsstufe604 ausgewählt wurde, zum Beispiel eine höhere Priorität haben als die Übermittlungswarteschlange, die durch irgendeine Arbitrierung für Nicht-FUSED-Operationen auf der ersten NVMe-Arbitrierungsstufe602 ausgewählt wurde. Folglich wählt die feste Arbitrierungslogik606 die Übermittlungswarteschlange mit höherer Priorität für die FUSED-Operationen als die Übermittlungswarteschlange aus, auf die für diesen Arbitrierungszyklus zugegriffen werden soll.On the next arbitration cycle, the transmission queue that was arbitrated for FUSED operations at the second NVMe arbitration level becomes 604 selected, for example, have a higher priority than the Submit Queue that is arbitrated for non-FUSED operations at the firstNVMe arbitration level 602 selected. Thus the fixed arbitration logic chooses 606 Select the Submit Queue with higher priority for FUSED operations than the Submit Queue to be accessed for this arbitration cycle.
BEISPIEL PRIORITÄTSBASIERTE BEFEHLSAUSFÜHRUNGSSTEUEROPERATIONENEXAMPLE PRIORITY-BASED COMMAND EXECUTION CONTROL OPERATIONS
7 veranschaulicht eine Ausführungsform von Operationen700, die in Verbindung mit der ersten Technik zum Abmildern der vorstehend beschriebenen externen Blockierung durchgeführt werden können. Die Operationen700 können in einer Datenspeichervorrichtung, einer Host-Vorrichtung, einer NVM-Vorrichtung oder einer anderen geeigneten Vorrichtung oder Vorrichtungen erfolgen. Zum Beispiel können ein oder mehrere dieser Operationen durch die Steuerung108 (z. B. das Befehlsabruf-, -arbitrierungs- und -ausführungsmodul120) von1 durchgeführt werden.7th illustrates one embodiment ofoperations 700 that can be performed in conjunction with the first technique for alleviating the external blockage described above. Theoperations 700 may be in a data storage device, host device, NVM device, or other suitable device or devices. For example, one or more of these operations can be performed by the controller 108 (e.g. the command retrieval, arbitration and execution module 120 ) from 1 be performed.
In Block702 ruft eine Datenspeichervorrichtung (oder eine andere geeignete Vorrichtung) einen Befehl ab. Zum Beispiel kann die Datenspeichervorrichtung einen Befehl aus einer Übertragungswarteschlange einer Host-Vorrichtung als Antwort auf eine Doorbell-Transaktion abrufen.In block 702 a data storage device (or other suitable device) retrieves a command. For example, the data storage device may retrieve a command from a transmission queue of a host device in response to a doorbell transaction.
In Block704 bestimmt die Datenspeichervorrichtung, ob der Befehl ein FUSED-Befehl ist.Inblock 704 the data storage device determines whether the command is a FUSED command.
Wenn der Befehl kein FUSED-Befehl ist (z. B. kann die Ausführungsphase für den Befehl sofort beginnen), führt die Datenspeichervorrichtung den Befehl in Block706 auf normale Weise aus.If the command is not a FUSED command (e.g., the execution phase for the command may begin immediately), the data storage device executes the command inblock 706 in the normal way.
Wenn in Block704 bestimmt wird, dass der Befehl ein FUSED-Befehl ist, bestimmt die Datenspeichervorrichtung in Block708, ob der Befehl der erste Teil des FUSED-Befehls ist.If inblock 704 it is determined that the command is a FUSED command, the data storage device determines inblock 708 whether the command is the first part of the FUSED command.
Wenn der Befehl NICHT der erste Teil des FUSED-Befehls ist (z. B. ist der Befehl der zweite Teil des FUSED-Befehls), ändert die Datenspeichervorrichtung in Block710 die Priorität der entsprechenden Übermittlungswarteschlange basierend auf normal. Zum Beispiel wäre die Priorität dieser Übermittlungswarteschlange während eines vorherigen Arbitrierungszyklus erhöht worden, als der erste Teil des FUSED-Befehls abgerufen wurde. Somit verringern die Operationen von Block710 die Priorität der Übermittlung der Warteschlange zurück auf normal. Diese Operationen können unmittelbar nach dem Senden der relevanten Abrufanforderung an die Host-Vorrichtung und vor dem Erhalten des Befehls durchgeführt werden.If the command is NOT the first part of the FUSED command (e.g. the command is the second part of the FUSED command), the data storage device changes to block 710 the priority of the corresponding submission queue based on normal. For example, the priority of this transmission queue would have been increased during a previous arbitration cycle when the first part of the FUSED instruction was fetched. Thus, the operations ofblock decrease 710 the priority of the transmission of the queue back to normal. These operations can be performed immediately after the relevant polling request is sent to the host device and before the command is received.
Wenn bei Block708 bestimmt wird, dass der Befehl der erste Teil des FUSED-Befehls ist, bestimmt die Datenspeichervorrichtung in Block712, ob bereits eine weitere Abrufanforderung an die relevante Übermittlungswarteschlange ausgegeben wurde.If atblock 708 it is determined that the command is the first part of the FUSED command, the data storage device determines inblock 712 whether another poll request has already been issued to the relevant submission queue.
In Block714 wird, wenn keine weiteren Abrufanforderungen an diese Übermittlungswarteschlange gesendet wurden, die Priorität dieser Übermittlungswarteschlange erhöht, so dass der zweite Teil dieses FUSED-Befehls so schnell wie möglich abgerufen wird.Inblock 714 If no more polling requests have been sent to this Submission Queue, the priority of that Submission Queue will be increased so that the second part of this FUSED command is fetched as soon as possible.
In Block716, wenn eine weitere Abrufanforderung bereits an die entsprechenden Übermittlungswarteschlange ausgegeben wurde, setzt die Datenspeichervorrichtung mit normalen Operationen fort. Das heißt, der Befehl wird auf normale Weise ausgeführt.Inblock 716 if another polling request has already been issued to the appropriate delivery queue, the data storage device continues normal operations. That is, the command is executed in the normal way.
In einigen Gesichtspunkten kann ein Prozess gemäß den Lehren hierin jede Kombination der vorstehend genannten Vorgänge einschließen.In some aspects, a process according to the teachings herein can include any combination of the foregoing.
BEISPIEL WIEDERHOLUNGSBASIERTE BEFEHLSAUSFÜHRUNGSSTEUEROPERATIONENEXAMPLE OF REPEAT-BASED COMMAND EXECUTION CONTROL OPERATIONS
8 veranschaulicht eine Ausführungsform von Operationen800, die in Verbindung mit der zweiten Technik zum Abmildern der vorstehend beschriebenen externen Blockierung durchgeführt werden können. Die Operationen800 können in einer Datenspeichervorrichtung, einer Host-Vorrichtung, einer NVM-Vorrichtung oder einer anderen geeigneten Vorrichtung oder Vorrichtungen erfolgen. Zum Beispiel können ein oder mehrere dieser Operationen durch die Steuerung108 (z. B. das Befehlsabruf-, -arbitrierungs- und -ausführungsmodul120) von1 durchgeführt werden.8th illustrates one embodiment ofoperations 800 that can be performed in conjunction with the second technique for alleviating the external blockage described above. Theoperations 800 may be in a data storage device, host device, NVM device, or other suitable device or devices. For example, one or more of these operations can be performed by the controller 108 (e.g. the command retrieval, arbitration and execution module 120 ) from 1 be performed.
In Block802 ruft eine Datenspeichervorrichtung (oder eine andere geeignete Vorrichtung) einen Befehl ab. Zum Beispiel kann die Datenspeichervorrichtung einen Befehl aus einer Übertragungswarteschlange einer Host-Vorrichtung als Antwort auf eine Doorbell-Transaktion abrufen.In block 802 a data storage device (or other suitable device) retrieves a command. For example, the data storage device may retrieve a command from a transmission queue of a host device in response to a doorbell transaction.
In Block804 bestimmt die Datenspeichervorrichtung, ob der Befehl ein FUSED-Befehl ist.Inblock 804 the data storage device determines whether the command is a FUSED command.
Wenn der Befehl kein FUSED-Befehl ist (z. B. kann die Ausführungsphase für den Befehl sofort beginnen), führt die Datenspeichervorrichtung den Befehl in Block806 auf normale Weise aus.If the command is not a FUSED command (e.g., the execution phase for the command may begin immediately), the data storage device executes the command inblock 806 in the normal way.
Wenn in Block804 bestimmt wird, dass der Befehl ein FUSED-Befehl ist, bestimmt die Datenspeichervorrichtung in Block808, ob der Befehl der erste Teil des FUSED-Befehls ist, der allein abgerufen wurde (z. B. in einem einzelnen Abrufbefehl).If inblock 804 it is determined that the command is a FUSED command, the data storage device determines inblock 808 Whether the command is the first part of the FUSED command that was fetched on its own (e.g. in a single fetch command).
Wenn der Befehl NICHT der erste Teil des FUSED-Befehls ist, der allein abgerufen wurde, verarbeitet die Datenspeichervorrichtung in Block810 den Befehl auf normale Weise. Wenn zum Beispiel die zugeordnete Abrufanforderung die zwei Befehle in einem einzelnen PCIe-Paket verlangte, wird der zweite FUSED-Befehl in den nächsten paar Hardware-Zyklen ankommen. In diesem Fall kann die Datenspeichervorrichtung den Befehl einfach ausführen, wie es normalerweise der Fall wäre. In einem anderen Beispiel kann der Befehl der zweite Teil des FUSED-Befehls sein. In diesem Fall kann die Datenspeichervorrichtung nacheinander den zuvor abgerufenen ersten Teil des FUSED-Befehls und den zweiten Teil des FUSED-Befehls ausführen.If the command is NOT the first part of the FUSED command fetched by itself, the data storage device processes inblocks 810 the command in the normal way. For example, if the associated fetch request required the two commands in a single PCIe packet, the second FUSED command will arrive in the next few hardware cycles. In this case, the data storage device can simply execute the command as it normally would. In another example, the command can be the second part of the FUSED command. In this case, the data storage device can successively execute the previously fetched first part of the FUSED command and the second part of the FUSED command.
Wenn in Block808 bestimmt wird, dass der Befehl der erste Teil des FUSED-Befehls ist, der allein abgerufen wurde, bestimmt die Datenspeichervorrichtung in Block812, ob bereits eine weitere Abrufanforderung an die jeweilige relevante Übermittlungswarteschlange ausgegeben wurde.If inblock 808 if it is determined that the instruction is the first part of the FUSED instruction that was fetched alone, the data storage device determines inblock 812 whether another retrieval request has already been issued to the respective relevant transmission queue.
In Block814, wenn keine weiteren Abrufanforderungen an diese Übermittlungswarteschlange ausgegeben wurden, wird der Befehl verworfen, während diese Übermittlungswarteschlange als einen FUSED-Befehl enthaltend markiert wird. In dem nächsten Zyklus der NVMe-Arbitrierungslogik weiß die Datenspeichervorrichtung, dass der nächste Befehl in dieser Übermittlungswarteschlange ein FUSED-Befehl ist und ruft mindestens zwei Befehle von dieser Übermittlungswarteschlange nacheinander ab. Dies kann zum Beispiel unter Verwendung einer einzelnen Anfrage an den Host-Vorrichtungsspeicher oder unter Verwendung von zwei Leseanforderungen nacheinander getan werden.Inblock 814 if no further poll requests have been issued to that Submission Queue, the command is discarded while this Submit Queue is marked as containing a FUSED command. In the next cycle of the NVMe arbitration logic, the data storage device knows that the next instruction in that delivery queue is a FUSED instruction and fetches at least two instructions from that delivery queue in sequence. This can be done, for example, using a single request to the host device memory or using two read requests in sequence.
In Block816, wenn eine weitere Abrufanforderung bereits an die entsprechende Übermittlungswarteschlange ausgegeben wurde, markiert die Datenspeichervorrichtung diese Übermittlungswarteschlange als normal. Dies setzt jede Markierung der Übermittlungswarteschlange als FUSED-Befehl enthaltend zurück, der während eines vorhergehenden Arbitrierungszyklus in Block814 aufgetreten sein kann.Inblock 816 if another polling request has already been issued to the corresponding delivery queue, the data storage device marks that delivery queue as normal. This sets each marker of the Return queue containing a FUSED command that was entered during a previous arbitration cycle inblock 814 may have occurred.
In einigen Gesichtspunkten kann ein Prozess gemäß den Lehren hierin jede Kombination der vorstehend genannten Vorgänge einschließen.In some aspects, a process according to the teachings herein can include any combination of the foregoing.
BEISPIEL VORHERSAGEBASIERTE BEFEHLSABRUFOPERATIONENEXAMPLE OF PREDICTION-BASED COMMAND REQUIREMENTS
9 veranschaulicht eine Ausführungsform von Operationen900, die in Verbindung mit der Vorhersage erfolgen können, ob eine Übermittlungswarteschlange einen FUSED-Befehl enthält, wie vorstehend beschrieben. Die Operationen900 können in einer Datenspeichervorrichtung, einer Host-Vorrichtung, einer NVM-Vorrichtung oder einer anderen geeigneten Vorrichtung oder Vorrichtungen erfolgen. Zum Beispiel können ein oder mehrere dieser Operationen durch die Steuerung108 (z. B. das Befehlsabruf-, -arbitrierungs- und - ausführungsmodul120) von1 durchgeführt werden.9 illustrates one embodiment ofoperations 900 that may be used in conjunction with predicting whether a Submit Queue contains a FUSED command, as described above. Theoperations 900 may be in a data storage device, host device, NVM device, or other suitable device or devices. For example, one or more of these operations can be performed by the controller 108 (e.g. the command retrieval, arbitration and execution module 120 ) from 1 be performed.
In Block902 bestimmt eine Datenspeichervorrichtung (oder eine andere geeignete Vorrichtung), dass eine Host-Vorrichtung einen Doorbell-Schreibvorgang für die Übermittlungswarteschlange ausgibt.In block 902 a data storage device (or other suitable device) determines that a host device issue a doorbell write to the submission queue.
In Block904 bestimmt die Datenspeichervorrichtung, ob die Host-Vorrichtung zwei oder mehr Befehle in der Übermittlungswarteschlange eingereiht hat.Inblock 904 the data storage device determines whether the host device has two or more commands queued for delivery.
Wenn die Host-Vorrichtung nicht zwei oder mehr Befehle in eine Warteschlange eingereiht hat, verarbeitet die Datenspeichervorrichtung in Block906 den Befehl in der Übermittlungswarteschlange auf normale Weise.If the host device has not queued two or more commands, the data storage device processes inblocks 906 the command in the Submission queue in the normal way.
Wenn in Block904 bestimmt wird, dass die Host-Vorrichtung zwei oder mehr Befehle in die Warteschlange gesetzt hat, ruft in Block908 die Datenspeichervorrichtung alle Befehle in der Übermittlungswarteschlange nacheinander ab, ohne in der Zwischenzeit aus anderen Übermittlungswarteschlangen abzurufen.If inblock 904 if it is determined that the host device has queued two or more commands, calls inblock 908 the data storage device sequentially polls all commands in the delivery queue without polling from other delivery queues in the meantime.
Somit sagt die Datenspeichervorrichtung auf der Grundlage der Art und Weise, wie die Host-Vorrichtung in das Doorbell-Register schreibt, vorher, wann es einen FUSED-Befehl gibt. Gemäß dem NVMe-Standard muss die Doorbell für FUSED-Befehle unter Verwendung einer einzigen Transaktion geschrieben werden. Die Datenspeichervorrichtung erfasst, dass eine Doorbell-Transaktion anzeigt, dass eine Übermittlungswarteschlange mehrere Befehle hält. In diesem Fall versucht die Datenspeichervorrichtung, alle Befehle abzurufen (z. B. nacheinander), die durch einen einzigen Doorbell-Zugriff aktualisiert wurden. Auf diese Weise kann die Datenspeichervorrichtung in der Lage sein, alle Teile eines FUSED-Befehls nacheinander abzurufen, während dazwischen keine anderen Befehle abgerufen werden.Thus, based on the manner in which the host device is writing to the doorbell register, the data storage device predicts when there will be a FUSED command. According to the NVMe standard, the doorbell for FUSED commands must be written using a single transaction. The data storage device detects that a doorbell transaction indicates that a submission queue is holding multiple commands. In this case, the data storage device attempts to fetch all commands (e.g., one at a time) that were updated by a single doorbell access. In this way, the data storage device may be able to fetch all parts of a FUSED instruction sequentially while no other instructions are fetched in between.
In einigen Ausführungsformen kann die Datenspeichervorrichtung die Doorbell-Transaktionen überwachen, um alle Übermittlungswarteschlangen zu identifizieren, in die die Host-Vorrichtung FUSED-Befehle zu schreiben neigt. In diesem Fall kann die Datenspeichervorrichtung Logik einschließen, welche die Doorbell-Schreibtransaktionen der Übermittlungswarteschlange der Host-Vorrichtung im Laufe der Zeit abfängt. Basierend auf diesen Informationen werden die Übermittlungswarteschlangen ermittelt, die wahrscheinlich einen FUSED-Befehl enthalten. Beispielsweise kann die Logik eine Schätzung (z. B. auf Grundlage gesammelter Doorbell-Statistiken) erzeugen, ob eine Übermittlungswarteschlange einen FUSED-Befehl enthält, basierend darauf wie häufig die Hostvorrichtung FUSED-Befehle in dieser Übermittlungswarteschlange eingereiht hat.In some embodiments, the data storage device may monitor the doorbell transactions to identify any submission queues that the host device tends to write FUSED commands to. In this case, the data storage device may include logic that intercepts the host device's transmission queue doorbell write transactions over time. Based on this information, the submission queues that are likely to contain a FUSED command are determined. For example, the logic can generate an estimate (e.g., based on collected doorbell statistics) as to whether a delivery queue contains a FUSED command based on the number of times the host device has put FUSED commands on that delivery queue.
Somit kann eine Entscheidung, ob mehrere Befehle aus einer Übermittlungswarteschlange abgerufen werden müssen (z. B. in Block906), darauf basieren: 1) ob die Host-Vorrichtung zwei oder mehr Befehle in dieser Übermittlungswarteschlange einreiht (z. B. wie in Block904 bestimmt); und/oder 2) eine Schätzung (z. B. basierend auf gesammelten Statistiken) bezüglich dessen, ob die Übermittlungswarteschlange wahrscheinlich einen FUSED-Befehl enthält.This enables a decision as to whether several commands have to be fetched from a transmission queue (e.g. in block 906 ) are based on: 1) whether the host device puts two or more commands on this submission queue (e.g., as inblock 904 certainly); and / or 2) an estimate (e.g., based on collected statistics) of whether the submission queue is likely to contain a FUSED command.
In einigen Gesichtspunkten kann ein Prozess gemäß den Lehren hierin jede Kombination der vorstehend genannten Vorgänge einschließen.In some aspects, a process according to the teachings herein can include any combination of the foregoing.
BEISPIEL ABRUF- UND AUSFÜHRUNGSKOMPONENTENEXAMPLE OF RECALL AND EXECUTION COMPONENTS
10 veranschaulicht ein Beispiel eines Speichersystems1000, das Befehlsabruf und -ausführung, wie hierin gelehrt, beinhaltet. In dem Beispiel von10 ist das Speichersystem1000 ein NVMe-System. Jedoch ist die Lehre hierin auf andere Arten von Systemen anwendbar. Das Speichersystem1000 schließt eine Host-Vorrichtung1002 und eine NVMe-Vorrichtung1004 (z. B. ein Beispiel einer Datenspeichervorrichtung) ein. Die Host-Vorrichtung1002 schließt einen Host-Speicher1006, der Host-Warteschlangen1008 (wie die zuvor erwähnten SQs und CQs), Datenpuffer1010 und andere Speicherkomponenten1012 einschließt, ein. Die NVMe-Vorrichtung1004 schließt Speicherarrays1014, eine NVMe-Vorrichtungssteuerung1016 und einen DRAM1018 ein. Die NVMe-Vorrichtungssteuerung1016 schließt einen oder mehrere Prozessoren1020 ein, die für die Ausführung der Front-End- und Back-End-Aufgaben verantwortlich sind. Die NVMe-Vorrichtungssteuerung1016 schließt einen Befehlsabrufer (z. B. und SQ-Selektor)1022 ein, der zum Abrufen von Befehlen aus den Übermittlungswarteschlangen (SQs) an der Host-Vorrichtung1002 eingerichtet ist, die Befehle parst und intern in die Warteschlange setzt. Die NVMe-Vorrichtungssteuerung1016 schließt einen Befehlsausführer1024 zum Arbitrieren der Befehle und Handhabung der Befehlsausführung (z. B. wie hierin erläutert) ein. Die NVMe-Vorrichtungssteuerung1016 schließt einen Doorbell-Speicher1026 zum Überwachen von Doorbell-Transaktionen, Speichern des Verlaufs von Doorbell-Transaktionsinformationen (z. B. einen Verlauf von Schreibvorgängen in der Übermittlungswarteschlange der Host-Vorrichtung) und Statistiken davon und das Erzeugen einer Vorhersage (z. B. einer Schätzung) ein, ob eine bestimmte Übermittlungswarteschlange einen FUSED-Befehl oder einen anderen ähnlichen Befehl enthält (z. B. wie hierin erörtert).10 Figure 11 illustrates an example of astorage system 1000 , which includes instruction fetching and execution as taught herein. In the example of 10 is thestorage system 1000 an NVMe system. However, the teaching herein is applicable to other types of systems. Thestorage system 1000 closes ahost device 1002 and an NVMe device 1004 (e.g., an example of a data storage device). Thehost device 1002 closes ahost store 1006 , the host queues 1008 (like the SQs and CQs mentioned earlier),data buffers 1010 andother storage components 1012 includes, a. TheNVMe device 1004 closesstorage arrays 1014 , anNVMe device controller 1016 and aDRAM 1018 one. TheNVMe device controller 1016 closes one ormore processors 1020 who are responsible for running the front-end and back-end tasks. TheNVMe device controller 1016 closes a command caller (e.g. and SQ selector) 1022 one that is used to fetch commands from the Submission Queues (SQs) on thehost device 1002 is set up, parses commands and queues them internally. TheNVMe device controller 1016 includes anexecutor 1024 to arbitrate the commands and handle command execution (e.g., as discussed herein). TheNVMe device controller 1016 closes adoorbell store 1026 for monitoring doorbell transactions, storing a history of doorbell transaction information (e.g., a history of writes in the host device submission queue) and statistics thereof, and generating a prediction (e.g., an estimate) as to whether a particular Submit Queue contains a FUSED or other similar command (e.g., as discussed herein).
Die NVMe-Vorrichtungssteuerung1016 schließt auch verschiedene Unterstützungskomponenten ein. Diese Komponenten schließen ein Steuerpfadmodul1028, einen Planer1030, eine PCIe MAC PHY Schnittstelle1032, DMAs1034, ein Fehlerkorrekturmodul1036, ein Flash-Schnittstellenmodul1038 und eine DRAM-Steuerung1040 ein. Im Betrieb kann das Steuerpfadmodul1028 für die Verwaltung der Host-Beendigungswarteschlangen verantwortlich sein. Neben anderen Funktionen leitet das Steuerpfadmodul1028 Beendigungseinträge, die von dem Planer1030 empfangen werden, zu einer Beendigungswarteschlange (CQ) innerhalb der Host-Vorrichtung1002 über die PCIe MAC PHY Schnittstelle1032. Seiten von Daten, die der Host-Vorrichtung zugestellt werden müssen (wie das Ergebnis von Lesebefehlen), können unter Verwendung von einem oder mehreren der DMAs1034 zugestellt werden. Das Flash-Schnittstellenmodul1038 ist dafür verantwortlich, die Speicherarrays1014 zu steuern und auf sie zuzugreifen. Das Fehlerkorrekturmodul1036 ist für die Fehlerkorrektur an Daten verantwortlich, die von der NVMe-Vorrichtungssteuerung1016 abgewickelt werden. Eingang und Ausgang von der NVMe-Vorrichtung1004 sind jeweils durch die Pfeile1042 und1044 veranschaulicht.TheNVMe device controller 1016 also includes various support components. These components include acontrol path module 1028 , aplanner 1030 , a PCIeMAC PHY interface 1032 , DMAs 1034 , anerror correction module 1036 , aflash interface module 1038 and aDRAM controller 1040 one. In operation, thecontrol path module 1028 be responsible for managing the host completion queues. Among other functions, the control path module conducts 1028 Completion entries made by thescheduler 1030 to a completion queue (CQ) within thehost device 1002 via the PCIeMAC PHY interface 1032 . Pages of data that must be delivered to the host device (such as the result of read commands) can be saved using one or more of the DMAs 1034 be delivered. Theflash interface module 1038 is responsible for thestorage arrays 1014 to control and access them. Theerror correction module 1036 is responsible for correcting errors on data received from theNVMe device controller 1016 be handled. Input and output from theNVMe device 1004 are each indicated by thearrows 1042 and 1044 illustrated.
Gemäß einigen Gesichtspunkten implementieren der Befehlsabrufer1022 und der Befehlsausführer1024 die hierin beschriebene Befehlsabruf- und Befehlsausführungssteuerungsfunktionalität. Der Befehlsabrufer1022 ist für das Abrufen von NVMe-Befehlen aus der Host-Vorrichtung1002 verantwortlich, während die unterstützten Übermittlungswarteschlangen abgewickelt und arbitriert werden. Der Befehlsausführer1024 erhält NVMe-Befehle von dem Befehlsabrufer, parst sie und startet ihre Ausführungsphase. Gemäß der Lehre hierin erfasst der Befehlsausführer1024, dass ein erster Teil eines FUSED-Befehls angekommen ist, und auf Grundlage dieser Erfassung wird das Arbitrierungsschema dynamisch geändert, indem die Priorität der jeweiligen relevanten Übermittlungswarteschlange erhöht wird (z. B. sendet der Befehlsausführer1024 eine Anzeige der erhöhten Priorität der Übermittlungswarteschlange an den Befehlsabrufer1022). In einigen Ausführungsformen kann der Befehlsausführer1024 den ersten Teil eines FUSED-Befehls verwerfen und den Befehlsabrufer1022 auslösen, um den ersten Teil des FUSED-Befehls zusammen mit dem zweiten Teil eines FUSED-Befehls während eines nachfolgenden Arbitrierungszyklus erneut abzurufen. In einigen Ausführungsformen sagt der Befehlsabrufer1022 vorher, wann ein FUSED-Befehl in einer Übermittlungswarteschlange lokalisiert wird, und ruft die zwei Teile des FUSED-Befehls zusammen vorher ab (z. B. als eine einzige Einheit).In some aspects, the instruction fetchers implement 1022 and theexecutor 1024 the command retrieval and command execution control functionality described herein. Thecommand fetcher 1022 is for fetching NVMe commands from thehost device 1002 accountable while the supported delivery queues are handled and arbitrated. Theexecutor 1024 receives NVMe commands from the command fetcher, parses them and starts their execution phase. According to the teaching herein, the executor captures 1024 indicates that a first part of a FUSED command has arrived and, based on this detection, the arbitration scheme is dynamically changed by increasing the priority of the respective relevant transmission queue (e.g. the command executor sends 1024 an indication of the increased priority of the submission queue to the command fetcher 1022 ). In some embodiments, theinstruction executor 1024 discard the first part of a FUSED command and thecommand fetcher 1022 trigger to re-request the first part of the FUSED command together with the second part of a FUSED command during a subsequent arbitration cycle. In some embodiments the instruction fetcher says 1022 beforehand when a FUSED command will be located in a transmission queue, and pre-polls the two parts of the FUSED command together (e.g., as a single unit).
Befehle können zeitweise in dem DRAM1018 oder dem Speicher der Host-Vorrichtung1002 (z. B. HMB) gehalten werden, bis die Blockierung freigegeben wird. Während dieser Zeit ist ein Befehlsschlitz (z. B. ein Register in der NVMe-Steuerung1016) frei und für die Ausführung anderer Befehle verfügbar.Commands can be temporarily stored in theDRAM 1018 or the memory of the host device 1002 (e.g. HMB) can be held until the blockage is released. During this time there is an instruction slot (e.g. a register in the NVMe controller 1016 ) free and available for executing other commands.
BEISPIEL SSD-SPEICHERVORRICHTUNGEXAMPLE SSD STORAGE DEVICE
11 veranschaulicht eine Ausführungsform einer SSD1102, die verfügbaren physischen Speicherplatz, wie hierin gelehrt, melden kann. Die SSD1102 schließt eine Steuerung1104 ein, die Daten auf eine Speichervorrichtung1106 schreibt und von dieser liest (z. B. ein NVM), und führt andere zugeordnete Datenspeicheroperationen durch.11 illustrates one embodiment of anSSD 1102 who can report available physical storage space as taught herein. TheSSD 1102 closes acontroller 1104 one, the data on astorage device 1106 writes to and reads from (e.g., an NVM), and performs other associated data storage operations.
Die Steuerung1104 und die Speichervorrichtung1106 kommunizieren miteinander über entsprechende Schnittstellen. Die Steuerung1104 schließt eine Speichervorrichtungseingabe/-ausgabeschnittstelle (E/A-Schnittstelle) 1108 zum Senden von Befehlen zu der Speichervorrichtung (z. B. über einen Befehlsbus), Senden von Daten zu und Empfangen von Daten von der Speichervorrichtung1106 (z. B. über einen Datenbus) und zum gegebenenfalls Senden und Empfangen anderer Signalisierungen (z. B. eine Lese-/Belegt-Anzeige (RBx), die durch die Speichervorrichtung1106 erzeugt wurde) ein. In ähnlicher Weise schließt die Speichervorrichtung1106 eine Steuerungsschnittstelle1110 zum Empfangen von Befehlen von der Steuerung1104 (z. B. über einen Befehlsbus), Senden von Daten zu und Empfangen von Daten von der Steuerung1104 (z. B. über einen Datenbus) und zum gegebenenfalls Senden und Empfangen anderer Signalisierungen (z. B. RBx) ein.Thecontrol 1104 and thestorage device 1106 communicate with each other via appropriate interfaces. Thecontrol 1104 includes a storage device input / output (I / O)interface 1108 for sending commands to the storage device (e.g., over a command bus), sending data to and receiving data from the storage device 1106 (e.g. via a data bus) and, if necessary, to send and receive other signaling (e.g. a read / occupied indicator (RBx) that is sent by thestorage device 1106 generated). Similarly, the storage device closes 1106 acontrol interface 1110 to receive commands from the controller 1104 (e.g. via a command bus), sending data to and receiving data from the controller 1104 (e.g. via a data bus) and for sending and receiving other signaling (e.g. RBx) if necessary.
Die Speichervorrichtung1106 schließt ein NVM-Kernarray1112 zum Speichern von Daten, ein externes Schnittstellendaten-Latch1114 zum Ausgeben gespeicherter Daten und Empfangen von Daten, die von der Steuerungsschnittstelle1110 gespeichert werden sollen, und einen Satz interner Daten-Latches1116 zum Speichern von Betriebsdaten, die von der Speichervorrichtung1106 verwendet werden, ein. Die Speichervorrichtung1106 schließt auch eine Leseschaltung1118 zum Lesen von Daten aus dem mehrschichtigen NVM-Kernarray1112, eine Programmschaltung1120 zum Schreiben von Daten in das mehrschichtige NVM-Kernarray1112 und eine Löschschaltung1122 zum Löschen von Daten in dem mehrschichtigen NVM-Kernarray1112 ein.Thestorage device 1106 includes acore NVM array 1112 for storing data, an external interface data latch 1114 to the Output of stored data and reception of data from thecontrol interface 1110 and a set of internal data latches 1116 for storing operational data received from thestorage device 1106 used, a. Thestorage device 1106 also includes aread circuit 1118 for reading data from the multi-tierNVM core array 1112 , aprogram circuit 1120 to write data to the multi-tierNVM core array 1112 and acancellation circuit 1122 to erase data in the multi-tierNVM core array 1112 one.
Gemäß der Lehre hierin schließt die Steuerung1104 ein Befehlsabruf-, -arbitrierungs- und -ausführungsmodul 1126 ein, das eingerichtet sein kann, um eine oder mehrere der hierin beschriebenen Operationen auszuführen. Zum Beispiel kann das Befehlsabruf-, -arbitrierungs- und -ausführungsmodul 1126 dem Befehlsabruf-, -arbitrierungs- und -ausführungsmodul120 von1 entsprechen und einen oder mehrere der auf den Bericht bezogenen Operationen, die hierin in Verbindung mit1 -9,13 und15 beschrieben sind, durchführen.As taught herein, the controller includes 1104 an instruction retrieval, arbitration, andexecution module 1126 that may be configured to perform one or more of the operations described herein. For example, the instruction retrieval, arbitration andexecution module 1126 may be the instruction retrieval, arbitration andexecution module 120 from 1 and one or more of the report-related operations herein in connection with 1 - 9 , 13 and 15th are described.
ERSTE BEISPIELVORRICHTUNGFIRST EXAMPLE DEVICE
12 veranschaulicht eine Ausführungsform einer Vorrichtung1200, die gemäß einem oder mehreren Gesichtspunkten der Offenbarung zum Kommunizieren eingerichtet ist. Die Vorrichtung1200 könnte eine Datenspeichervorrichtungen, eine SSD, eine Speichersteuerung, ein Festkörperlaufwerk, eine Host-Vorrichtung, eine NVM-Vorrichtung, einen NAND-Die oder eine andere Art von Vorrichtung, welche die Datenspeicherung unterstützt, verkörpern oder darin implementiert werden. In verschiedenen Implementierungen könnte die Vorrichtung1200 eine Computervorrichtung, einen Personalcomputer, eine tragbare Vorrichtung oder Arbeitsstation, einen Server, einen persönlichen digitalen Assistenten, eine Digitalkamera, ein Digitaltelefon, eine Unterhaltungsvorrichtung, eine medizinische Vorrichtung oder jede andere elektronische Vorrichtung, die Daten speichert, verkörpern oder in diese implementiert werden.12 illustrates one embodiment of anapparatus 1200 configured to communicate according to one or more aspects of the disclosure. Thedevice 1200 could embody or be implemented in a data storage device, an SSD, a storage controller, a solid state drive, a host device, an NVM device, a NAND die, or any other type of device that supports data storage. In various implementations, the device could 1200 a computing device, personal computer, portable device or workstation, server, personal digital assistant, digital camera, digital phone, entertainment device, medical device, or any other electronic device that stores, embodies, or is implemented on data.
Die Vorrichtung1200 schließt eine Kommunikationsschnittstelle1202, ein Speichermedium1204, eine Speichervorrichtung (z. B. eine NVM-Vorrichtung) 1208 und eine Verarbeitungsschaltung1210 (z. B. mindestens einen Prozessor und/oder eine andere geeignete Schaltung) ein. Diese Komponenten können über einen Signalisierungsbus oder eine andere geeignete Komponente miteinander gekoppelt und/oder in elektrische Kommunikation gebracht werden, was allgemein durch die Verbindungsleitungen in12 dargestellt wird. Der Signalisierungsbus kann jede Zahl von Verbindungsbussen und -brücken einschließen, je nach der spezifischen Anwendung der Verarbeitungsschaltung1210 und den Designbeschränkungen insgesamt. Der Signalisierungsbus verbindet verschiedene Schaltungen miteinander, so dass die Kommunikationsschnittstelle1202, das Speichermedium1204 und die Speichervorrichtung1208 jeweils an die Verarbeitungsschaltung1210 gekoppelt sind und/oder mit dieser elektrisch kommunizieren. Der Signalisierungsbus kann auch verschiedene andere (nicht dargestellte) Schaltungen verbinden, wie Zeitquellen, Peripheriegeräte, Spannungsregler und Leistungsverwaltungsschaltungen, die in der Fachwelt gut bekannt sind und daher nicht ferner beschrieben werden.Thedevice 1200 closes acommunication interface 1202 , a storage medium 1204 , a storage device (e.g., an NVM device) 1208 and a processing circuit 1210 (e.g. at least one processor and / or other suitable circuit). These components can be coupled to one another and / or brought into electrical communication via a signaling bus or another suitable component, which is generally achieved by the connecting lines in FIG 12 is pictured. The signaling bus can include any number of interconnecting buses and bridges, depending on the specific application of theprocessing circuitry 1210 and the overall design limitations. The signaling bus connects different circuits with each other, so that thecommunication interface 1202 , the storage medium 1204 and thestorage device 1208 each to theprocessing circuit 1210 are coupled and / or electrically communicate with it. The signaling bus can also connect to various other circuitry (not shown) such as time sources, peripherals, voltage regulators and power management circuits that are well known in the art and are therefore not further described.
Die Kommunikationsschnittstelle1202 stellt Mittel zum Kommunizieren mit anderen Vorrichtungen über ein Übertragungsmedium bereit. In einigen Implementierungen schließt die Kommunikationsschnittstelle1202 eine Schaltung und/oder Programmierung (z. B. ein Programm) ein, die angepasst sind, um die bidirektionale Kommunikation von Informationen in Bezug auf eine oder mehrere Vorrichtungen in einem System zu erleichtern. In einigen Implementierungen kann die Kommunikationsschnittstelle1202 für drahtgebundene Kommunikation eingerichtet werden. Die Kommunikationsschnittstelle1202 könnte zum Beispiel eine Busschnittstelle, eine Sende-/Empfangsschnittstelle oder eine andere Art von Signalschnittstelle einschließlich Treibern, Puffern oder anderen Schaltungen zum Ausgeben und/oder Empfangen von Signalen sein (z. B. Ausgabe von Signalen und/oder Empfang von Signalen in eine integrierte Schaltung). Die Kommunikationsschnittstelle1202 dient als ein Beispiel für ein Mittel zum Empfangen und/oder ein Mittel zum Senden. In einigen Implementierungen kann die Kommunikationsschnittstelle1202 für WLAN-Kommunikation eingerichtet sein. In einigen Implementierungen schließt die Kommunikationsschnittstelle eine Host-Schnittstelle1214 ein. In einigen Implementierungen kann die Kommunikationsschnittstelle mindestens eine weitere Schnittstelle1216 einschließen. Zum Beispiel kann die Kommunikationsschnittstelle1202 mindestens einen Hochfrequenzempfänger (HF) und/oder HF-Sender (z. B. insgesamt einen HF-Sendeempfänger) einschließenThecommunication interface 1202 provides means for communicating with other devices over a transmission medium. In some implementations, the communication interface closes 1202 circuit and / or programming (e.g., a program) adapted to facilitate bi-directional communication of information relating to one or more devices in a system. In some implementations, the communication interface can 1202 for wired communication. Thecommunication interface 1202 could for example be a bus interface, a transmit / receive interface or another type of signal interface including drivers, buffers or other circuits for outputting and / or receiving signals (e.g. output of signals and / or reception of signals in an integrated Circuit). Thecommunication interface 1202 serves as an example of a means for receiving and / or a means for sending. In some implementations, the communication interface can 1202 set up for WLAN communication. In some implementations, the communication interface includes ahost interface 1214 one. In some implementations, the communication interface can have at least oneother interface 1216 lock in. For example, thecommunication interface 1202 Include at least one radio frequency (RF) receiver and / or RF transmitter (e.g., one overall RF transceiver)
Die Speichervorrichtung1208 kann einen oder mehrere Speichervorrichtungen darstellen. Wie angegeben, kann die Speichervorrichtung1208 Abbildungsinformationen1218 zusammen mit anderen Informationen, die von der Vorrichtung1200 verwendet werden, beibehalten. In einigen Implementierungen sind die Speichervorrichtung1208 und das Speichermedium1204 als gemeinsame Speicherkomponente implementiert. Die Speichervorrichtung1208 kann auch zum Speichern von Daten, die von der Verarbeitungsschaltung1210 oder einer anderen Komponente der Vorrichtung1200 manipuliert werden, verwendet werden.Thestorage device 1208 can represent one or more storage devices. As indicated, thestorage device 1208 Figure information 1218 along with other information received from thedevice 1200 used. In some implementations, the storage devices are 1208 and the storage medium 1204 implemented as a common storage component. Thestorage device 1208 can also be used to store data provided by theprocessing circuit 1210 or another Component of thedevice 1200 manipulated, used.
Das Speichermedium1204 kann eine oder mehrere computerlesbare, maschinenlesbare und/oder prozessorlesbare Vorrichtungen zum Speichern von Programmierungen darstellen, wie z. B. ausführbaren Code oder Anweisungen des Prozessors (z. B. Software, Firmware), elektronische Daten, Datenbanken oder andere digitale Informationen. Das Speichermedium1204 kann auch zum Speichern von Daten, die von der Verarbeitungsschaltung1210 bei der Programmausführung manipuliert werden, verwendet werden. Das Speichermedium1204 kann jedes verfügbare Medium sein, auf das ein Allzweckprozessor oder ein spezialisierter Prozessor zugreifen kann, einschließlich tragbarer oder fester Speichervorrichtungen, optischer Speichervorrichtungen und verschiedener anderer Medien, die zum Speichern, Enthalten oder Tragen von Programmierungen geeignet sind.The storage medium 1204 can represent one or more computer-readable, machine-readable and / or processor-readable devices for storing programming, such as e.g. B. executable code or instructions of the processor (e.g. software, firmware), electronic data, databases or other digital information. The storage medium 1204 can also be used to store data provided by theprocessing circuit 1210 manipulated during program execution. The storage medium 1204 can be any available medium accessible to a general purpose or specialized processor, including portable or fixed storage devices, optical storage devices, and various other media suitable for storing, containing, or carrying programming.
Beispielhaft und nicht einschränkend kann das Speichermedium1204 eine magnetische Speichervorrichtung (z. B. Festplatte, Diskette, Magnetstreifen), eine optische Platte (z. B. eine CD (Compact Disc) oder eine DVD (Digital Versatile Disc)), eine Chipkarte, eine Flash-Speichervorrichtung (z. B. eine Karte, ein Stick oder ein Schlüssellaufwerk), ein Speicher mit direktem Zugriff (RAM), ein Nur-Lese-Speicher (ROM), ein programmierbarer ROM (PROM), ein löschbarer PROM (EPROM), ein elektrisch löschbarer PROM (EEPROM), ein Register, eine entfernbare Platte und jedes andere geeignete Medium zum Speichern von Software und/oder Anweisungen, auf die ein Computer zugreifen und die von einem Computer gelesen werden können, einschließen. Das Speichermedium1204 kann in einem hergestellten Artikel (z. B. einem Computerprogrammprodukt) verkörpert sein. Beispielhaft kann ein Computerprogrammprodukt ein computerlesbares Medium in Verpackungsmaterialien einschließen. In Anbetracht des vorstehend Erörtertem, kann das Speichermedium1204 in einigen Implementierungen ein nichtflüchtiges (z. B. greifbares) Speichermedium sein. Zum Beispiel kann das Speichermedium1204 ein nichtflüchtiges, computerlesbares Medium sein, das computerausführbare Codes speichert, einschließlich der Codes zum Durchführen von Vorgängen wie hierin beschrieben.The storage medium can be exemplary and not restrictive 1204 a magnetic storage device (e.g. hard disk, floppy disk, magnetic stripe), an optical disk (e.g. a CD (compact disc) or a DVD (digital versatile disc)), a smart card, a flash memory device (e.g. . a card, stick or key drive), a direct access memory (RAM), a read-only memory (ROM), a programmable ROM (PROM), an erasable PROM (EPROM), an electrically erasable PROM (EEPROM ), a register, a removable disk, and any other suitable medium for storing software and / or instructions accessible and read by a computer. The storage medium 1204 may be embodied in a manufactured article (e.g., a computer program product). For example, a computer program product can include a computer readable medium in packaging materials. In view of the above, the storage medium 1204 in some implementations, be a non-volatile (e.g., tangible) storage medium. For example, the storage medium 1204 a non-transitory, computer-readable medium that stores computer-executable code, including the codes for performing operations as described herein.
Das Speichermedium1204 kann mit der Verarbeitungsschaltung1210 gekoppelt werden, so dass die Verarbeitungsschaltung1210 Informationen von dem Speichermedium1204 lesen und Informationen auf dieses schreiben kann. Das bedeutet, dass das Speichermedium1204 an die Verarbeitungsschaltung1210 gekoppelt werden kann, so dass das Speichermedium1204 mindestens für die Verarbeitungsschaltung1210 zugreifbar ist, einschließlich der Beispiele, in denen mindestens ein Speichermedium in die Verarbeitungsschaltung1210 integriert ist und/oder der Beispiele, in denen mindestens ein Speichermedium von der Verarbeitungsschaltung1210 getrennt ist (z. B. in Vorrichtung1200 vorhanden, außerhalb der Vorrichtung1200, über mehrere Einheiten verteilt, etc.).The storage medium 1204 can with theprocessing circuit 1210 be coupled so that theprocessing circuit 1210 Information from the storage medium 1204 can read and write information on it. That means the storage medium 1204 to theprocessing circuit 1210 can be coupled so that the storage medium 1204 at least for theprocessing circuit 1210 is accessible, including examples in which at least one storage medium is in theprocessing circuit 1210 is integrated and / or the examples in which at least one storage medium is used by theprocessing circuit 1210 is separated (e.g. indevice 1200 present, outside thedevice 1200 , distributed over several units, etc.).
Das auf dem Speichermedium1204 gespeicherte Programm bewirkt, wenn es von der Verarbeitungsschaltung1210 ausgeführt wird, dass die Verarbeitungsschaltung1210 eine oder mehrere der verschiedenen hierin beschriebenen Funktionen und/oder Prozessabläufe ausführt. Zum Beispiel kann das Speichermedium1204 Operationen einschließen, die für das Regulieren von Operationen an einem oder mehreren Hardware-Blöcken der Verarbeitungsschaltung1210 sowie für die Nutzung der Kommunikationsschnittstelle1202 für die drahtlose Kommunikation unter Nutzung ihrer jeweiligen Kommunikationsprotokolle eingerichtet sind.That on the storage medium 1204 stored program causes when it is processed by theprocessing circuit 1210 that the processing circuit is executed 1210 performs one or more of the various functions and / or processes described herein. For example, the storage medium 1204 Include operations that regulate operations on one or more hardware blocks of theprocessing circuit 1210 as well as for the use of thecommunication interface 1202 are set up for wireless communication using their respective communication protocols.
Die Verarbeitungsschaltung1210 ist allgemein für die Verarbeitung einschließlich des Ausführens einer solchen auf dem Speichermedium1204 gespeicherten Programmierung geeignet. Wie hierin verwendet, sollen die Begriffe „Code“ oder „Programmierung“ so weit ausgelegt werden, dass sie ohne Einschränkung Anweisungen, Befehlssätze, Daten, Code, Codesegmente, Programmcode, Programme, Programmierungen, Unterprogramme, Softwaremodule, Anwendungen, Softwareanwendungen, Softwarepakete, Routinen, Unterroutinen, Objekte, ausführbare Dateien, Ausführungsstränge, Prozeduren, Funktionen usw. einschließen, unabhängig davon, ob sie als Software, Firmware, Middleware, Mikrocode, Hardware-Beschreibungssprache oder anderweitig bezeichnet werden.Theprocessing circuit 1210 is general to processing including executing one on the storage medium 1204 saved programming. As used herein, the terms “code” or “programming” should be interpreted to include, without limitation, instructions, instruction sets, data, code, code segments, program code, programs, programming, subroutines, software modules, applications, software applications, software packages, routines , Subroutines, objects, executable files, threads of execution, procedures, functions, etc., regardless of whether they are referred to as software, firmware, middleware, microcode, hardware description language or otherwise.
Die Verarbeitungsschaltung1210 ist angeordnet, um Daten zu erhalten, zu verarbeiten und/oder zu senden, den Datenzugriff und die Datenspeicherung zu steuern, Befehle auszugeben und andere gewünschte Vorgänge zu steuern. Die Verarbeitungsschaltung1210 kann Schaltungen einschließen, die eingerichtet sind, um die gewünschte, von geeigneten Medien bereitgestellte Programmierung in mindestens einem Beispiel zu implementieren. Die Verarbeitungsschaltung1210 kann zum Beispiel als ein oder mehrere Prozessoren, eine oder mehrere Steuerungen und/oder eine andere Struktur implementiert werden, die für die Ausführung von ausführbaren Programmierungen eingerichtet ist. Beispiele für die Verarbeitungsschaltung1210 können einen Allzweckprozessor, einen digitalen Signalprozessor (DSP), eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA) oder eine andere programmierbare Logikkomponente, diskrete Gate- oder Transistorlogik, diskrete Hardware-Komponenten oder jede beliebige Kombination davon zum Ausführen der hierin beschriebenen Funktionen einschließen. Ein Allzweckprozessor kann einen Mikroprozessor sowie jeden beliebigen herkömmlichen Prozessor, eine Steuerung, einen Mikrocontroller oder eine Zustandsmaschine einschließen. Die Verarbeitungsschaltung1210 kann auch als eine Kombination von Rechenkomponenten implementiert sein, wie eine Kombination aus einer Steuerung und einem Mikroprozessor, eine Zahl von Mikroprozessoren, einem oder mehreren Mikroprozessoren in Verbindung mit einem ASIC und einem Mikroprozessor oder eine beliebige andere Zahl von unterschiedlichen Konfigurationen. Diese Beispiele der Verarbeitungsschaltung1210 dienen zur Veranschaulichung und es werden auch andere geeignete Konfigurationen innerhalb des Schutzumfangs der Offenbarung in Betracht gezogen.Theprocessing circuit 1210 is arranged to receive, process and / or send data, control data access and data storage, issue commands and control other desired operations. Theprocessing circuit 1210 may include circuitry configured to implement the desired programming provided by suitable media in at least one example. Theprocessing circuit 1210 For example, it may be implemented as one or more processors, one or more controllers, and / or other structure adapted to perform executable programming. Examples of theprocessing circuit 1210 may include a general purpose processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic component, discrete gate or transistor logic, discrete hardware components or include any combination thereof for performing the functions described herein. A general purpose processor can include a microprocessor as well as any conventional processor, controller, microcontroller, or state machine. Theprocessing circuit 1210 can also be implemented as a combination of computational components, such as a combination of a controller and a microprocessor, a number of microprocessors, one or more microprocessors in conjunction with an ASIC and a microprocessor, or any other number of different configurations. These examples of theprocessing circuit 1210 These are illustrative and other suitable configurations are contemplated within the scope of the disclosure.
Gemäß einem oder mehreren Gesichtspunkten der Offenbarung kann die Verarbeitungsschaltung1210 so angepasst werden, dass sie irgendwelche oder alle Merkmale, Prozesse, Funktionen, Vorgänge und/oder Routinen für einige oder alle der hierin beschriebenen Geräte durchführt. Zum Beispiel kann die Verarbeitungsschaltung1210 so eingerichtet werden, dass sie jeden der in Bezug auf die1 -9 und13 beschriebenen Schritte, Funktionen und/oder Prozesse durchführt. Wie hierin verwendet, kann sich der Begriff „angepasst“ in Bezug auf die Verarbeitungsschaltung1210 darauf beziehen, dass die Verarbeitungsschaltung1210 so eingerichtet, verwendet, implementiert und/oder programmiert ist, dass sie einen bestimmten Prozess, Funktion, Vorgang und/oder Routine gemäß verschiedenen hierin beschriebenen Merkmalen ausführt.According to one or more aspects of the disclosure, the processing circuitry may 1210 can be adapted to perform any or all of the features, processes, functions, operations, and / or routines for any or all of the devices described herein. For example, theprocessing circuit 1210 be set up to accommodate each of the pertaining to the 1 - 9 and 13 performs the steps, functions and / or processes described. As used herein, the term "adapted" may change in relation toprocessing circuitry 1210 refer to that theprocessing circuit 1210 is configured, used, implemented and / or programmed to perform a particular process, function, operation and / or routine in accordance with various features described herein.
Die Verarbeitungsschaltung1210 kann ein spezialisierter Prozessor sein, wie eine anwendungsspezifische integrierte Schaltung (ASIC), die als ein Mittel für (z. B. als Struktur für) die Ausführung beliebiger der in Bezug auf die1 -9 und13 beschriebenen Operationen dient. Die Verarbeitungsschaltung1210 dient als ein Beispiel für Mittel zum Senden und/oder Mittel zum Empfangen. In verschiedenen Implementierungen kann die Verarbeitungsschaltung1210 mindestens teilweise die vorstehend beschriebene Funktionalität für die Steuerung108 von1 bereitstellen und/oder aufnehmen.Theprocessing circuit 1210 may be a specialized processor, such as an application specific integrated circuit (ASIC), that acts as a means for (e.g., structure for) the execution of any of the related to 1 - 9 and 13 operations described. Theprocessing circuit 1210 serves as an example of means for sending and / or means for receiving. In various implementations, theprocessing circuit 1210 at least partially the functionality described above for thecontrol 108 from 1 provide and / or record.
Gemäß mindestens einem Beispiel der Vorrichtung1200 kann die Verarbeitungsschaltung1210 eine oder mehrere einer Abrufschaltung/eines Abrufmoduls1220, einer Bestimmungsschaltung/eines Bestimmungsmodul1222, einer Steuerungsschaltung/eines Steuerungsmodul1224, einer Ausführungsschaltung/eines Ausführungsmodul1226 oder einer Speicherschaltung/eines Speichermodul1228 einschließen.According to at least one example of thedevice 1200 can theprocessing circuit 1210 one or more of a retrieval circuit /retrieval module 1220 , a determination circuit /module 1222 , a control circuit / acontrol module 1224 , an execution circuit / anexecution module 1226 or a memory circuit / amemory module 1228 lock in.
Wie vorstehend erwähnt, bewirkt ein auf dem Speichermedium1204 gespeichertes Programm, wenn es von der Verarbeitungsschaltung1210 ausgeführt wird, dass die Verarbeitungsschaltung1210 eine oder mehrere der verschiedenen hierin beschriebenen Funktionen und/oder Prozessabläufe ausführt. Beispielsweise kann das Programm die Verarbeitungsschaltung1210 veranlassen, die verschiedenen Funktionen, Schritte und/oder Prozesse, die hierin in Bezug auf1 -9 und13 beschrieben werden, in verschiedenen Implementierungen auszuführen. Wie in12 gezeigt, kann das Speichermedium1204 einen oder mehrere eines Abrufcodes1240, eines Bestimmungscodes1242, eines Steuerungscodes1244, eines Ausführungscodes1246 oder eines Speichercodes1248 einschließen.As mentioned above, an occurs on the storage medium 1204 stored program when it is processed by theprocessing circuit 1210 that the processing circuit is executed 1210 performs one or more of the various functions and / or processes described herein. For example, the program can control theprocessing circuit 1210 cause the various functions, steps, and / or processes herein with respect to 1 - 9 and 13 to be performed in different implementations. As in 12 shown, the storage medium 1204 one or more of apolling code 1240 , anidentification code 1242 , acontrol code 1244 , anexecution code 1246 or amemory code 1248 lock in.
ERSTER BEISPIELHAFTER PROZESSFIRST EXEMPLARY PROCESS
13 veranschaulicht einen Prozess1300 zur Kommunikation gemäß einigen Gesichtspunkten der Offenbarung. Der Prozess1300 kann innerhalb einer Verarbeitungsschaltung (z. B. der Verarbeitungsschaltung1210 in12) erfolgen, die sich in einer Datensteuerungsvorrichtung, einer Steuerung, einer SSD, einer Host-Vorrichtung, einer NVM-Vorrichtung, einem NAND-Die oder einer anderen geeigneten Vorrichtung befinden kann. Natürlich kann der Prozess1300 unter verschiedenen Gesichtspunkten innerhalb des Schutzumfangs der Offenbarung durch jede geeignete Vorrichtung, die speicherbezogene Vorgänge unterstützen kann, umgesetzt werden.13 illustrates aprocess 1300 for communication according to some aspects of the disclosure. Theprocess 1300 can be within a processing circuit (e.g. theprocessing circuit 1210 in 12 ), which may be located in a data control device, controller, SSD, host device, NVM device, NAND die, or other suitable device. Of course, the process can 1300 may be implemented from various points of view within the scope of the disclosure by any suitable device that can support memory-related operations.
In Block1302 ruft eine Vorrichtung (z. B. eine Steuerung einer Datenspeichervorrichtung) einen Befehl aus einer Übermittlungswarteschlange einer anderen Vorrichtung ab.In block 1302 a device (e.g., a controller of a data storage device) retrieves a command from a submission queue of another device.
In einem optionalen Block1304 kann die Vorrichtung den Befehl in einen Befehlsschlitz speichern, nachdem der Befehl aus der Übermittlungswarteschlange abgerufen wurde.In anoptional block 1304 the device may store the command in a command slot after the command is fetched from the submission queue.
In Block1306 bestimmt die Vorrichtung, dass die Befehlsausführung gegenwärtig blockiert ist. In einigen Gesichtspunkten kann die Bestimmung, dass die Befehlsausführung gerade blockiert ist, eine Bestimmung, dass die Ausführung aufgrund einer Bedingung innerhalb der Datenspeichervorrichtung blockiert ist, einschließen. Um zu bestimmen, dass die Befehlsausführung gegenwärtig blockiert ist, kann in einigen Gesichtspunkten die Vorrichtung eine Menge von Befehlen bestimmen, die gegenwärtig in Befehlsschlitzen der Datenspeichervorrichtung blockiert sind, und bestimmen, dass die Menge größer oder gleich einem Schwellenwert ist. In einigen Gesichtspunkten kann die Bestimmung, dass die Befehlsausführung gegenwärtig blockiert ist, eine Bestimmung, dass die Ausführung aufgrund einer Bedingung außerhalb der Datenspeichervorrichtung blockiert ist, einschließen. Um zu bestimmen, dass die Befehlsausführung gegenwärtig blockiert ist, kann die Vorrichtung in einigen Gesichtspunkten bestimmen, dass der Befehl Teil einer Vielzahl von Befehlen mit einer definierten Ausführungsreihenfolge ist, und bestimmen, dass der Befehl mindestens einem Befehl der Vielzahl von Befehlen vorausgeht. In einigen Gesichtspunkten kann die Vielzahl von Befehlen einen FUSED-Befehl einschließen (z. B. einer sein).Inblock 1306 the device determines that instruction execution is currently blocked. In some aspects, determining that instruction execution is currently blocked may include determining that execution is blocked due to a condition within the data storage device. To determine that instruction execution is currently blocked, in some aspects the device may determine an amount of instructions that are currently blocked in instruction slots of the data storage device and determine that the amount is greater than or equal to a threshold. In some aspects, a determination that instruction execution is currently blocked may be a determination that execution is due to a Condition blocked outside the data storage device. In some aspects, to determine that instruction execution is currently blocked, the apparatus may determine that the instruction is part of a plurality of instructions having a defined order of execution and determine that the instruction precedes at least one of the plurality of instructions. In some aspects, the plurality of instructions may include (e.g., be one) of a FUSED instruction.
In Block1308 steuert die Vorrichtung die Befehlsausführung auf Grundlage der Bestimmung, dass die Befehlsausführung gegenwärtig blockiert ist.Inblock 1308 the device controls instruction execution based on the determination that instruction execution is currently blocked.
In einem optionalen Block1310 kann die Vorrichtung nacheinander eine Vielzahl von Befehlen (z. B. die Befehle eines FUSED-Befehls) ausführen.In anoptional block 1310 the device can successively execute a plurality of commands (e.g. the commands of a FUSED command).
Gemäß einigen Gesichtspunkten kann der Prozess1300 das Speichern des Befehls in einem Befehlsschlitz einschließen, nachdem der Befehl aus der Übermittlungswarteschlange abgerufen wurde. Um die Befehlsausführung zu steuern, kann die Vorrichtung in einigen Gesichtspunkten: eine Zeitspanne schätzen, die der Befehl blockiert bleibt, bestimmen, dass die Zeitspanne kleiner oder gleich dem Schwellenwert ist, und als ein Ergebnis der Bestimmung, dass die Zeitspanne kleiner oder gleich dem Schwellenwert ist, damit warten, den Befehl aus dem Befehlsschlitz auszuführen, bis der Befehl nicht mehr blockiert ist. Um die Befehlsausführung zu steuern, kann die Vorrichtung in einigen Gesichtspunkten: eine Zeitspanne schätzen, die der Befehl blockiert bleibt, bestimmen, dass die Zeitspanne größer oder gleich dem Schwellenwert ist, als ein Ergebnis der Bestimmung, dass die Zeitspanne größer oder gleich dem Schwellenwert ist, den Befehl in einem Speicher speichern, nach der Speicherung den Befehlsschlitz freigeben, im Anschluss an die Freigabe des Befehlsschlitzes bestimmen, dass der Befehl nicht mehr blockiert ist, und den Befehl in Reaktion auf die Bestimmung, dass der Befehl nicht mehr blockiert ist, aus dem Speicher in den freigegebenen Befehlsschlitz oder einen anderen Befehlsschlitz kopieren.In some aspects, the process can 1300 include storing the command in a command slot after the command is fetched from the submission queue. To control command execution, the apparatus may in several ways: estimate an amount of time the command remains stalled, determine that the amount of time is less than or equal to the threshold, and as a result of determining that the amount of time is less than or equal to the threshold is to wait to execute the command from the command slot until the command is no longer blocked. In order to control command execution, the apparatus may in some respects: estimate an amount of time the command remains blocked, determine that the amount of time is greater than or equal to the threshold as a result of determining that the amount of time is greater than or equal to the threshold , store the command in a memory, release the command slot after the command slot is saved, determine that the command is no longer blocked following the release of the command slot, and execute the command in response to the determination that the command is no longer blocked copy the memory into the released command slot or another command slot.
In einigen Gesichtspunkten kann der Prozess1300 das Bestimmen, dass der Befehl Teil einer Vielzahl von Befehlen mit einer definierten Ausführungsreihenfolge ist, und das Bestimmen, dass der Befehl mindestens einem Befehl der Vielzahl von Befehlen vorausgeht, einschließen. In einigen Gesichtspunkten schließt der Prozess1300 ferner das Erhöhen einer Priorität der Übermittlungswarteschlange als ein Ergebnis der Bestimmung, dass der Befehl mindestens einem Befehl der Vielzahl von Befehlen vorausgeht, ein. In einigen Gesichtspunkten kann der Prozess1300 ferner einschließen den Befehl in einem Befehlsschlitz zu speichern, nachdem der Befehl aus der Übermittlungswarteschlange abgerufen wurde; den Befehlsschlitzes als Ergebnis der Bestimmung, dass der Befehl mindestens einem Befehl der Vielzahl von Befehlen vorausgeht, freizugeben und den Befehl und den mindestens einen Befehl aus der Übermittlungswarteschlange gemeinsam abzurufen, nachdem der Befehlsschlitz freigegeben ist. In einigen Gesichtspunkten kann der Prozess1300 ferner einschließen den Befehl in einem Befehlsschlitz zu speichern, nachdem der Befehl aus der Übermittlungswarteschlange abgerufen wurde, den Befehl als ein Ergebnis der Bestimmung, dass der Befehl mindestens einem Befehl der Vielzahl von Befehlen vorausgeht, in einem Speicher zu speichern, den Befehlsschlitz nach dem Speichern des Befehls freizugeben, im Anschluss an die Freigabe des Befehlsschlitzes zu bestimmen, dass der Befehl nicht mehr blockiert ist, und als ein Ergebnis der Bestimmung, dass der Befehl nicht mehr blockiert ist, den Befehl zur Ausführung in den freigegebenen Befehlsschlitz oder einen anderen Befehlsschlitz zu kopieren.In some ways the process can 1300 determining that the instruction is part of a plurality of instructions having a defined order of execution and determining that the instruction precedes at least one of the plurality of instructions. In some respects the process closes 1300 further increasing a priority of the delivery queue as a result of determining that the command precedes at least one of the plurality of commands. In some ways the process can 1300 further including storing the command in a command slot after the command is fetched from the submission queue; release the command slot as a result of determining that the command precedes at least one of the plurality of commands, and collectively fetch the command and the at least one command from the delivery queue after the command slot is released. In some ways the process can 1300 further including storing the command in a command slot after the command is retrieved from the delivery queue, storing the command in memory as a result of determining that the command precedes at least one of the plurality of commands, after storing the command slot of the command, subsequent to the clearance of the command slot, determining that the command is no longer blocked and, as a result of determining that the command is no longer blocked, to the command for execution in the released command slot or another command slot copy.
In einigen Gesichtspunkten kann ein Prozess gemäß den Lehren hierin jede Kombination der vorstehend genannten Vorgänge einschließen.In some aspects, a process according to the teachings herein can include any combination of the foregoing.
ZWEITE BEISPIELVORRICHTUNGSECOND EXAMPLE DEVICE
14 veranschaulicht eine Ausführungsform einer Vorrichtung1400, die gemäß einem oder mehreren Gesichtspunkten der Offenbarung zum Kommunizieren eingerichtet ist. Die Vorrichtung1400 könnte eine Datenspeichervorrichtung, eine SSD, eine Speichersteuerung; ein Festkörperlaufwerk, eine Host-Vorrichtung, eine NVM-Vorrichtung, ein NAND-Die oder eine andere Art von Vorrichtung, welche die Datenspeicherung unterstützt, verkörpern oder darin implementiert werden. In verschiedenen Implementierungen könnte die Vorrichtung1400 eine Computervorrichtung, einen Personalcomputer, eine tragbare Vorrichtung oder Arbeitsstation, einen Server, einen persönlichen digitalen Assistenten, eine Digitalkamera, ein Digitaltelefon, eine Unterhaltungsvorrichtung, eine medizinische Vorrichtung oder jede andere elektronische Vorrichtung, die Daten speichert, verkörpern oder in diese implementiert werden.14th illustrates one embodiment of anapparatus 1400 configured to communicate according to one or more aspects of the disclosure. Thedevice 1400 could be a data storage device, an SSD, a storage controller; embody or be implemented in a solid-state drive, host device, NVM device, NAND die, or other type of device that supports data storage. In various implementations, the device could 1400 a computing device, personal computer, portable device or workstation, server, personal digital assistant, digital camera, digital phone, entertainment device, medical device, or any other electronic device that stores, embodies, or is implemented on data.
Die Vorrichtung1400 schließt eine Kommunikationsschnittstelle1402, ein Speichermedium1404, eine Benutzerschnittstelle1406, eine Speichervorrichtung1408 (die z. B. Berichtinformationen1418 speichert) und eine Verarbeitungsschaltung1410 (z. B. mindestens einen Prozessor und/oder eine andere geeignete Schaltung) ein. In verschiedenen Implementierungen kann die Benutzerschnittstelle1406 eines oder mehrere von Folgendem einschließen: ein Tastenfeld, eine Anzeige, einen Lautsprecher, ein Mikrofon, eine Touchscreen-Anzeige oder eine andere Schaltung zum Empfangen einer Eingabe von einem Benutzer oder zum Senden einer Ausgabe an einen Benutzer. In einigen Implementierungen schließt die Kommunikationsschnittstelle1402 eine SSD-Speichervorrichtungsschnittstelle1414 ein. In einigen Implementierungen kann die Kommunikationsschnittstelle1402 eine Benutzerschnittstelle1416 einschließen. In einigen Implementierungen kann die Kommunikationsschnittstelle1402 mindestens eine weitere Schnittstelle einschließen. Zum Beispiel kann die Kommunikationsschnittstelle1402 mindestens einen Hochfrequenzempfänger (HF) und/oder HF-Sender (z. B. insgesamt einen HF-Sendeempfänger) einschließen. Im Allgemeinen können die Komponenten von14 ähnlich den entsprechenden Komponenten der Vorrichtung1200 von12 sein.Thedevice 1400 closes acommunication interface 1402 , a storage medium 1404 , a user interface 1406 , a storage device 1408 (e.g. the report information 1418 stores) and a processing circuit 1410 (e.g. at least one processor and / or other suitable circuit). In various implementations, the user interface 1406 include one or more of the following: a keypad, display, speaker, microphone, touchscreen display, or other circuit for receiving input from a user or sending output to a user. In some implementations closes thecommunication interface 1402 an SSDstorage device interface 1414 one. In some implementations, the communication interface can 1402 auser interface 1416 lock in. In some implementations, the communication interface can 1402 Include at least one other interface. For example, thecommunication interface 1402 Include at least one radio frequency (RF) receiver and / or RF transmitter (e.g., a total of one RF transceiver). In general, the components of 14th similar to the corresponding components of thedevice 1200 from 12 his.
Gemäß einem oder mehreren Gesichtspunkten der Offenbarung kann die Verarbeitungsschaltung1410 so angepasst werden, dass sie irgendwelche oder alle Merkmale, Prozesse, Funktionen, Vorgänge und/oder Routinen für einige oder alle der hierin beschriebenen Vorrichtungen durchführt. Zum Beispiel kann die Verarbeitungsschaltung1410 so eingerichtet werden, dass sie jeden der in Bezug auf die1 -9 und15 beschriebenen Schritte, Funktionen und/oder Prozesse durchführt. Wie hierin verwendet, kann der Begriff „angepasst“ in Bezug auf die Verarbeitungsschaltung1410 darauf Bezug nehmen, dass die Verarbeitungsschaltung1410 so eingerichtet, verwendet, implementiert und/oder programmiert ist, dass sie einen bestimmten Prozess, Funktion, Vorgang und/oder Routine gemäß verschiedenen hierin beschriebenen Merkmalen ausführt.According to one or more aspects of the disclosure, the processing circuitry may 1410 can be adapted to perform any or all of the features, processes, functions, acts, and / or routines for any or all of the devices described herein. For example, theprocessing circuit 1410 be set up to accommodate each of the pertaining to the 1 - 9 and 15th performs the steps, functions and / or processes described. As used herein, the term “adapted” may refer toprocessing circuitry 1410 refer to that theprocessing circuit 1410 is configured, used, implemented and / or programmed to perform a particular process, function, operation and / or routine in accordance with various features described herein.
Die Verarbeitungsschaltung1410 kann ein spezialisierter Prozessor sein, wie eine anwendungsspezifische integrierte Schaltung (ASIC), die als ein Mittel für (z. B. als Struktur für) die Ausführung beliebiger der in Bezug auf die1 -9 und15 beschriebenen Operationen dient. Die Verarbeitungsschaltung1410 dient als ein Beispiel für ein Mittel zum Senden und/oder ein Mittel zum Empfangen. In verschiedenen Implementierungen kann die Verarbeitungsschaltung1410 mindestens teilweise die vorstehend beschriebene Funktionalität für die Steuerung108 von1 bereitstellen und/oder aufnehmen.Theprocessing circuit 1410 may be a specialized processor, such as an application specific integrated circuit (ASIC), that acts as a means for (e.g., structure for) the execution of any of the related to the 1 - 9 and 15th operations described. Theprocessing circuit 1410 serves as an example of a means for sending and / or a means for receiving. In various implementations, theprocessing circuit 1410 at least partially the functionality described above for thecontrol 108 from 1 provide and / or record.
Gemäß mindestens einem Beispiel der Vorrichtung1400 kann die Verarbeitungsschaltung1410 eine oder mehrere einer Empfangsschaltung/eines Empfangsmoduls1420, einer Bestimmungsschaltung/eines Bestimmungsmodul1422, einer Abrufschaltung/eines Abrufmoduls1424, einer Ausführungsschaltung/eines Ausführungsmoduls1426 oder einer Ausgabeschaltung/eines Ausgabemoduls1428 einschließen.According to at least one example of thedevice 1400 can theprocessing circuit 1410 one or more of a receiving circuit / areceiving module 1420 , a determination circuit /module 1422 , a call circuit / acall module 1424 , an execution circuit / anexecution module 1426 or an output circuit /output module 1428 lock in.
Wie vorstehend erwähnt, bewirkt ein auf dem Speichermedium1404 gespeichertes Programm, wenn es von der Verarbeitungsschaltung1410 ausgeführt wird, dass die Verarbeitungsschaltung1410 eine oder mehrere der verschiedenen hierin beschriebenen Funktionen und/oder Prozessabläufe ausführt. Beispielsweise kann die Programmierung die Verarbeitungsschaltung1410 veranlassen, die verschiedenen Funktionen, Schritte und/oder Prozesse, die hierin in Bezug auf1 -9 und15 beschrieben werden, in verschiedenen Implementierungen durchzuführen. Wie in14 gezeigt, kann das Speichermedium1404 einen oder mehrere eines Empfangscodes1440, eines Bestimmungscodes1442, eines Abrufcodes1444, eines Ausführungscodes1446 oder eines Ausgabecodes1448 einschließen.As mentioned above, an occurs on the storage medium 1404 stored program when it is processed by theprocessing circuit 1410 that the processing circuit is executed 1410 performs one or more of the various functions and / or processes described herein. For example, the programming can control theprocessing circuit 1410 cause the various functions, steps, and / or processes herein with respect to 1 - 9 and 15th are described to be carried out in different implementations. As in 14th shown, the storage medium 1404 one or more of areception code 1440 , anidentification code 1442 , apolling code 1444 , an execution code 1446 or anoutput code 1448 lock in.
ZWEITER BEISPIELHAFTER PROZESSSECOND EXEMPLARY PROCESS
15 veranschaulicht einen Prozess1500 zur Kommunikation gemäß einigen Gesichtspunkten der Offenbarung. Der Prozess1500 kann innerhalb einer Verarbeitungsschaltung (z. B. der Verarbeitungsschaltung1410 von14) erfolgen, die sich in einer Datenspeichervorrichtung, einer SSD, einer Speichersteuerung, einem Festkörperlaufwerk, einer Host-Vorrichtung, einer NVM-Vorrichtung, einem NAND-Die oder einer anderen geeigneten Vorrichtung befinden kann. Natürlich kann der Prozess1500 unter verschiedenen Gesichtspunkten innerhalb des Schutzumfangs der Offenbarung durch jede geeignete Vorrichtung, die speicherbezogene Vorgänge unterstützen kann, umgesetzt werden.15th illustrates aprocess 1500 for communication according to some aspects of the disclosure. Theprocess 1500 can be within a processing circuit (e.g. theprocessing circuit 1410 from 14th ), which may be in a data storage device, an SSD, a storage controller, a solid state drive, a host device, an NVM device, a NAND die, or any other suitable device. Of course, the process can 1500 may be implemented from various points of view within the scope of the disclosure by any suitable device that can support memory-related operations.
In Block1502 empfängt eine Vorrichtung (z. B. eine Steuerung einer Datenspeichervorrichtung) eine Anzeige, die anzeigt, dass mindestens eine Übermittlungswarteschlange einer anderen Vorrichtung mindestens einen Befehl enthält.In block 1502 a device (e.g., a controller of a data storage device) receives an indication indicating that at least one other device's submission queue contains at least one command.
In Block1504 schätzt die Vorrichtung auf der Grundlage der in Block1502 empfangenen Anzeige, ob eine erste Übermittlungswarteschlange der Vielzahl von Übermittlungswarteschlangen eine Vielzahl von Befehlen mit einer definierten Ausführungsreihenfolge enthält. In einigen Gesichtspunkten kann die Vielzahl von Befehlen einen FUSED-Befehl einschließen (z. B. einer sein). In einigen Gesichtspunkten kann die Anzeige ein Ergebnis einer Doorbell-Transaktion von der anderen Vorrichtung sein. In einigen Gesichtspunkten kann die Schätzung, ob die erste Übermittlungswarteschlange eine Vielzahl von Befehlen mit einer definierten Ausführungsreihenfolge enthält, einschließen: eine Bestimmung, dass die Anzeige anzeigt, dass die erste Übermittlungswarteschlange mehr als einen Befehl enthält.Inblock 1504 estimates the device based on the inblock 1502 received indication whether a first delivery queue of the plurality of delivery queues contains a plurality of commands with a defined execution order. In some aspects, the plurality of instructions may include (e.g., be one) of a FUSED instruction. In some aspects, the indication may be a result of a doorbell transaction from the other device. In some aspects, estimating whether the first delivery queue contains a plurality of instructions with a defined order of execution may include: a determination that the indication indicates that the first delivery queue contains more than one instruction.
In Block1506 ruft die Vorrichtung die Vielzahl von Befehlen als ein Ergebnis der Bestimmung gemeinsam aus der ersten Übermittlungswarteschlange ab. In einigen Gesichtspunkten kann die Vorrichtung eine einzelne Leseanforderung an die andere Vorrichtung für die Vielzahl von Befehlen ausgeben, um die Vielzahl von Befehlen gemeinsam aus der ersten Übermittlungswarteschlange abzurufen. In einigen Gesichtspunkten kann die Vorrichtung aufeinanderfolgende Leseanforderungen an die andere Vorrichtung ausgeben, um die Vielzahl von Befehlen gemeinsam aus der ersten Übermittlungswarteschlange abzurufen.Inblock 1506 as a result of the determination, the apparatus collectively fetches the plurality of commands from the first delivery queue. In some aspects, the device can send a single read request to the issue another device for the plurality of commands to collectively fetch the plurality of commands from the first submission queue. In some aspects, the device can issue sequential read requests to the other device to collectively fetch the plurality of commands from the first submission queue.
In einem optionalen Block1508 kann die Vorrichtung nacheinander eine Vielzahl von Befehlen (z. B. die Befehle eines FUSED-Befehls) ausführen.In anoptional block 1508 the device can successively execute a plurality of commands (e.g. the commands of a FUSED command).
In einigen Gesichtspunkten schließt der Prozess1500 die Bestimmung ein, dass die andere Vorrichtung wiederholt Befehle mit einer definierten Ausführungsreihenfolge in die erste Übermittlungswarteschlange geschrieben hat, wobei die Schätzung, ob die erste Übermittlungswarteschlange eine Vielzahl von Befehlen mit einer definierten Ausführungsreihenfolge enthält, ferner auf der Bestimmung basiert, dass die andere Vorrichtung wiederholt Befehle mit einer definierten Ausführungsreihenfolge in die erste Übermittlungswarteschlange geschrieben hat.In some respects the process closes 1500 determining that the other device has repeatedly written instructions with a defined order of execution to the first delivery queue, wherein the estimate of whether the first delivery queue contains a plurality of instructions with a defined order of execution is further based on the determination that the other device is repeating Wrote commands with a defined execution order to the first Submission queue.
In einigen Gesichtspunkten schließt der Prozess1500 die Bestimmung einer Rate ein, mit der die andere Vorrichtung Befehle mit einer definierten Ausführungsreihenfolge in die erste Übermittlungswarteschlange geschrieben hat, sowie die Bestimmung, dass die Rate größer oder gleich einem Schwellenwert ist, wobei die Schätzung, ob die erste Übermittlungswarteschlange eine Vielzahl von Befehlen mit einer definierten Ausführungsreihenfolge enthält, ferner auf der Bestimmung basiert, dass die Rate größer oder gleich einem Schwellenwert ist.In some respects the process closes 1500 determining a rate at which the other device has written instructions with a defined execution order into the first delivery queue, and determining that the rate is greater than or equal to a threshold value, wherein the estimation of whether the first delivery queue has a plurality of instructions a defined order of execution, further based on determining that the rate is greater than or equal to a threshold.
In einigen Gesichtspunkten kann ein Prozess gemäß den Lehren hierin jede Kombination der vorstehend genannten Vorgänge einschließen.In some aspects, a process according to the teachings herein can include any combination of the foregoing.
ZUSÄTZLICHE GESICHTSPUNKTEADDITIONAL FACE POINTS
Es folgt ein Beispiel eines anderen Prozesses zur Kommunikation gemäß einigen Gesichtspunkten der Offenbarung. Dieser Prozess kann innerhalb einer Verarbeitungsschaltung (z. B. der Verarbeitungsschaltung1210 von12) erfolgen, die sich in einer Datenspeichervorrichtung, einer Steuerung, einer SSD, einer NVM-Vorrichtung, einem NAND-Die oder einer anderen geeigneten Vorrichtung befinden kann. Natürlich kann dieser Prozess unter verschiedenen Gesichtspunkten innerhalb des Schutzumfangs der Offenbarung durch jede geeignete Vorrichtung, die speicherbezogene Vorgänge unterstützen kann, umgesetzt werden.Following is an example of another process for communication in accordance with some aspects of the disclosure. This process can take place within a processing circuit (e.g. theprocessing circuit 1210 from 12 ), which can be located in a data storage device, controller, SSD, NVM device, NAND die, or other suitable device. Of course, this process can be implemented in various ways within the scope of the disclosure by any suitable device that can support memory-related operations.
In einem ersten Block ruft eine Vorrichtung (z. B. eine Steuerung einer Datenspeichervorrichtung) einen Befehl aus einer Übermittlungswarteschlange einer Host-Vorrichtung ab.In a first block, a device (e.g., a controller of a data storage device) retrieves a command from a submission queue of a host device.
In einem zweiten Block speichert die Vorrichtung den Befehl in einen Befehlsschlitz.In a second block, the device stores the command in a command slot.
In einem dritten Block bestimmt die Vorrichtung, dass die Ausführung des Befehls gegenwärtig blockiert ist. In einigen Gesichtspunkten kann die Bestimmung, dass die Befehlsausführung gegenwärtig blockiert ist, die Bestimmung einschließen, ob die Ausführung aufgrund einer Bedingung innerhalb der Datenspeichervorrichtung oder einer Bedingung außerhalb der Datenspeichervorrichtung blockiert ist. In einigen Gesichtspunkten kann die Bestimmung, dass die Befehlsausführung gegenwärtig blockiert ist, die Schätzung einer Zeitspanne, die der Befehl blockiert bleibt, und die Bestimmung einschließen, dass die Zeitspanne größer oder gleich einem Schwellenwert ist. In einigen Gesichtspunkten kann die Bestimmung, dass die Befehlsausführung gegenwärtig blockiert ist, die Bestimmung einer Menge von Befehlen, die gegenwärtig in den Befehlsschlitzen der Datenspeichervorrichtung blockiert sind, und die Bestimmung, dass die Menge größer oder gleich einem Schwellenwert ist, einschließen. In einigen Gesichtspunkten kann die Bestimmung, dass die Befehlsausführung gegenwärtig blockiert ist, auf mindestens einer Zeitspanne, die der Ausführung der Befehlsmenge zugewiesen ist, basieren. In einigen Gesichtspunkten kann die Bestimmung, dass die Befehlsausführung gegenwärtig blockiert ist, die Bestimmung, dass der Befehl Teil einer Vielzahl von Befehlen mit einer definierten Ausführungsreihenfolge ist, und die Bestimmung, dass mindestens ein Befehl der Vielzahl von Befehlen nicht aus der Übermittlungswarteschlange abgerufen worden ist, einschließen. In einigen Gesichtspunkten kann die Vielzahl von Befehlen einen FUSED-Befehl einschließen (z. B. einer sein).In a third block, the device determines that the execution of the instruction is currently blocked. In some aspects, determining that instruction execution is currently blocked may include determining whether execution is blocked due to a condition within the data storage device or a condition outside of the data storage device. In some aspects, determining that instruction execution is currently stalled may include estimating an amount of time that the instruction will remain stalled and determining that the amount of time is greater than or equal to a threshold. In some aspects, determining that instruction execution is currently blocked may include determining an amount of instructions that are currently blocked in instruction slots of the data storage device and determining that the amount is greater than or equal to a threshold. In some aspects, the determination that instruction execution is currently stalled may be based on at least an amount of time allocated to execution of the instruction set. In some aspects, determining that instruction execution is currently stalled, determining that the instruction is part of a plurality of instructions having a defined order of execution, and determining that at least one of the plurality of instructions has not been retrieved from the submission queue , lock in. In some aspects, the plurality of instructions may include (e.g., be one) of a FUSED instruction.
In einem vierten Block steuert die Vorrichtung die Befehlsausführung auf Grundlage der Bestimmung, dass die Befehlsausführung gegenwärtig blockiert ist. In einigen Gesichtspunkten kann das Steuern der Befehlsausführung einschließen: Bestimmen, dass eine Zeitspanne, während der der Befehl blockiert bleibt, kleiner oder gleich einem Schwellenwert ist, und als ein Ergebnis der Bestimmung, dass die Zeitspanne kleiner oder gleich dem Schwellenwert ist, den Befehl in dem Befehlsschlitz zur Ausführung, nachdem der Befehl nicht mehr blockiert wird, zu belassen. In einigen Gesichtspunkten kann das Steuern der Befehlsausführung einschließen: Bestimmen, dass eine Zeitspanne, während der der Befehl blockiert bleibt, größer oder gleich einem Schwellenwert ist, Speichern des Befehls in einem Speicher, Neuzuweisen des Befehlsschlitzes für einen anderen Befehl Bestimmen, dass der Befehl nicht mehr blockiert ist, und Kopieren des Befehls aus dem Speicher in einen anderen Befehlsschlitz zur Ausführung. In einigen Gesichtspunkten kann das Steuern der Befehlsausführung einschließen: Bestimmen, dass der Befehl Teil einer Vielzahl von Befehlen mit einer definierten Ausführungsreihenfolge ist, Bestimmen, dass mindestens ein Befehl der Vielzahl von Befehlen nicht aus der Übermittlungswarteschlange abgerufen wurde, Erhöhen einer Priorität der Übermittlungswarteschlange als ein Ergebnis der Bestimmung, dass mindestens ein Befehl der Vielzahl von Befehlen nicht aus der Übermittlungswarteschlange abgerufen wurde, Abrufen des mindestens einen Befehls aus der Übermittlungswarteschlange, und sukzessives Ausführen des Befehls und des mindestens einen Befehls. In einigen Gesichtspunkten kann das Steuern der Befehlsausführung einschließen: Bestimmen, dass der Befehl Teil einer Vielzahl von Befehlen mit einer definierten Ausführungsreihenfolge ist, Bestimmen, dass mindestens ein Befehl der Vielzahl von Befehlen nicht aus der Übermittlungswarteschlange abgerufen wurde, Neuzuweisen des Befehlsschlitzes an einen anderen Befehl als ein Ergebnis der Bestimmung, dass mindestens ein Befehl der Vielzahl von Befehlen nicht aus der Übermittlungswarteschlange abgerufen wurde, gemeinsames Abrufen des mindestens einen Befehls aus der Übermittlungswarteschlange, und sukzessives Ausführen des Befehls und des mindestens einen Befehls. In einigen Gesichtspunkten kann das Steuern der Befehlsausführung einschließen: Bestimmen, dass der Befehl Teil einer Vielzahl von Befehlen mit einer definierten Ausführungsreihenfolge ist, Bestimmen, dass mindestens ein Befehl der Vielzahl von Befehlen nicht aus der Übermittlungswarteschlange abgerufen wurde, Speichern des Befehls in einem Speicher als ein Ergebnis der Bestimmung, dass mindestens ein Befehl der Vielzahl von Befehlen nicht aus der Übermittlungswarteschlange abgerufen wurde, Neuzuweisen des Befehlsschlitzes an einen anderen Befehl nach Speicherung des Befehls, im Anschluss daran Bestimmen, dass der Befehl nicht mehr blockiert ist, Kopieren des Befehls aus dem Speicher in einen anderen Befehlsschlitz zur Ausführung, Abrufen des mindestens einen Befehls aus der Übermittlungswarteschlange, und sukzessives Ausführen des Befehls und des mindestens einen Befehls.In a fourth block, the device controls instruction execution based on the determination that instruction execution is currently blocked. In In some aspects, controlling command execution may include: determining that a time period during which the command remains blocked is less than or equal to a threshold, and, as a result of determining that the time period is less than or equal to the threshold, the command in the Leave the command slot for execution after the command is no longer blocked. In some aspects, controlling instruction execution may include determining that a period of time the instruction remains stalled is greater than or equal to a threshold, storing the instruction in memory, reassigning the instruction slot for another instruction, determining that the instruction is not more is blocked, and copying the instruction from memory to another instruction slot for execution. In some aspects, controlling instruction execution can include: determining that the instruction is part of a plurality of instructions having a defined order of execution, determining that at least one instruction of the plurality of instructions has not been fetched from the submission queue, increasing a priority of the submission queue as a The result of determining that at least one command of the plurality of commands has not been fetched from the delivery queue, retrieving the at least one command from the delivery queue, and successively executing the command and the at least one command. In some aspects, controlling instruction execution may include: determining that the instruction is part of a plurality of instructions having a defined order of execution, determining that at least one of the plurality of instructions has not been fetched from the submission queue, reassigning the instruction slot to another instruction as a result of determining that at least one of the plurality of instructions has not been fetched from the delivery queue, collectively fetching the at least one instruction from the delivery queue, and successively executing the instruction and the at least one instruction. In some aspects, controlling instruction execution may include determining that the instruction is part of a plurality of instructions having a defined order of execution, determining that at least one of the plurality of instructions was not fetched from the submission queue, storing the instruction in memory as a result of determining that at least one of the plurality of commands has not been fetched from the submission queue, reassigning the command slot to another command after storing the command, then determining that the command is no longer blocked, copying the command from the Storage in a different instruction slot for execution, retrieval of the at least one instruction from the transmission queue, and successive execution of the instruction and the at least one instruction.
In einigen Gesichtspunkten kann ein Prozess gemäß den Lehren hierin jede Kombination der vorstehend genannten Vorgänge einschließen.In some aspects, a process according to the teachings herein can include any combination of the foregoing.
Es folgt ein weiteres Beispiel eines Prozesses zur Kommunikation gemäß einigen Gesichtspunkten der Offenbarung. Dieser Prozess kann innerhalb einer Verarbeitungsschaltung (z. B. der Verarbeitungsschaltung1410 von14) erfolgen, die sich in einer Datenspeichervorrichtung, einer SSD, einer Speichersteuerung, einem Festkörperlaufwerk, einer Host-Vorrichtung, einer NVM-Vorrichtung, einem NAND-Die oder einer anderen geeigneten Vorrichtung befinden kann. Natürlich kann dieser Prozess unter verschiedenen Gesichtspunkten innerhalb des Schutzumfangs der Offenbarung durch jede geeignete Vorrichtung, die speicherbezogene Vorgänge unterstützen kann, umgesetzt werden.Another example of a process for communication in accordance with some aspects of the disclosure follows. This process can take place within a processing circuit (e.g. theprocessing circuit 1410 from 14th ), which may be in a data storage device, an SSD, a storage controller, a solid state drive, a host device, an NVM device, a NAND die, or any other suitable device. Of course, this process can be implemented in various ways within the scope of the disclosure by any suitable device that can support memory-related operations.
In einem ersten Block empfängt eine Vorrichtung (z. B. eine Steuerung einer Datenspeichervorrichtung) eine Anzeige, dass mindestens eine Übermittlungswarteschlange aus einer Vielzahl von Übermittlungswarteschlangen einer Host-Vorrichtung mindestens einen Befehl enthält. In einigen Gesichtspunkten kann die Anzeige ein Ergebnis davon sein, dass die Host-Vorrichtung eine Doorbell-Transaktion aufruft, die einen Schreibvorgang auf eine Speicherstelle in einer Datenspeichervorrichtung beinhaltet.In a first block, a device (e.g., a controller of a data storage device) receives an indication that at least one delivery queue of a plurality of host device delivery queues contains at least one command. In some aspects, the indication may be a result of the host device invoking a doorbell transaction that includes a write to a location in a data storage device.
In einem zweiten Block schätzt die Vorrichtung auf der Grundlage der Anzeige, ob eine erste Übermittlungswarteschlange der Vielzahl von Übermittlungswarteschlangen eine Vielzahl von Befehlen mit einer definierten Ausführungsreihenfolge enthält. In einigen Gesichtspunkten kann die Vielzahl von Befehlen einen FUSED-Befehl einschließen (z. B. einer sein). In einigen Gesichtspunkten kann die Schätzung, ob die erste Übermittlungswarteschlange eine Vielzahl von Befehlen mit einer definierten Ausführungsreihenfolge enthält, die Bestimmung einschließen, ob die Anzeige anzeigt, dass mehr als ein Befehl in der ersten Übermittlungswarteschlange eingereiht wurde. In einigen Gesichtspunkten kann die Vielzahl von Befehlen einen FUSED-Befehl einschließen (z. B. einer sein). In einigen Gesichtspunkten kann die Schätzung, ob die erste Übermittlungswarteschlange eine Vielzahl von Befehlen mit einer definierten Ausführungsreihenfolge enthält, die Bestimmung einschließen, ob die Host-Vorrichtung wiederholt Befehle mit einer definierten Ausführungsreihenfolge in die erste Übermittlungswarteschlange geschrieben hat. In einigen Gesichtspunkten kann die Schätzung, ob die erste Übermittlungswarteschlange eine Vielzahl von Befehlen mit einer definierten Ausführungsreihenfolge enthält, die Bestimmung einschließen, ob eine Rate, mit der die Hostvorrichtung Befehle mit einer definierten Ausführungsreihenfolge in die erste Übermittlungswarteschlange geschrieben hat, größer oder gleich einem Schwellenwert ist.In a second block, the device estimates on the basis of the indication whether a first delivery queue of the plurality of delivery queues contains a plurality of instructions with a defined order of execution. In some aspects, the plurality of instructions may include (e.g., be one) of a FUSED instruction. In some aspects, estimating whether the first submission queue contains a plurality of instructions having a defined order of execution may include determining whether the indication indicates that more than one instruction has been queued in the first submission queue. In some aspects, the plurality of instructions may include (e.g., be one) of a FUSED instruction. In some aspects, estimating whether the first submission queue contains a plurality of commands with a defined order of execution may include determining whether the host device has repeatedly written commands with a defined order of execution to the first submission queue. In some aspects, estimating whether the first delivery queue contains a plurality of commands having a defined order of execution may include determining whether a rate at which the host device has written commands having a defined order of execution to the first delivery queue is greater than or equal to a threshold is.
In einem dritten Block ruft die Vorrichtung als ein Ergebnis der Schätzung die Vielzahl von Befehlen gemeinsam aus der ersten Übermittlungswarteschlange ab. In einigen Gesichtspunkten kann das gemeinsame Abrufen der Vielzahl von Befehlen aus der ersten Übermittlungswarteschlange die Ausgabe einer einzigen Leseanforderung an die Host-Vorrichtung für die Vielzahl von Befehlen oder die sukzessive Ausgabe von Leseanforderungen an die Host-Vorrichtung für einzelne der Vielzahl von Befehlen einschließen.In a third block, as a result of the estimation, the device collects the plurality of commands from the first transmission queue. In some aspects, fetching the plurality of commands together from the first submission queue may include issuing a single read request to the host device for the plurality of commands, or successively issuing read requests to the host device for individual ones of the plurality of commands.
In einem vierten Block führt die Vorrichtung jeden Befehl der Vielzahl von Befehlen nacheinander aus.In a fourth block, the device executes each command of the plurality of commands in sequence.
In einigen Gesichtspunkten kann ein Prozess gemäß den Lehren hierin jede Kombination der vorstehend genannten Vorgänge einschließen.In some aspects, a process according to the teachings herein can include any combination of the foregoing.
Es folgt noch ein weiteres Beispiel eines Verfahrens zur Kommunikation gemäß einigen Gesichtspunkten der Offenbarung. Dieser Prozess kann innerhalb einer Verarbeitungsschaltung (z. B. der Verarbeitungsschaltung1410 von14) erfolgen, die sich in einer Datenspeichervorrichtung, einer SSD, einer Speichersteuerung, einem Festkörperlaufwerk, einer Host-Vorrichtung, einer NVM-Vorrichtung, einem NAND-Die oder einer anderen geeigneten Vorrichtung befinden kann. Natürlich kann dieser Prozess unter verschiedenen Gesichtspunkten innerhalb des Schutzumfangs der Offenbarung durch jede geeignete Vorrichtung, die speicherbezogene Vorgänge unterstützen kann, umgesetzt werden.Yet another example of a method of communication in accordance with some aspects of the disclosure follows. This process can take place within a processing circuit (e.g. theprocessing circuit 1410 from 14th ), which may be in a data storage device, an SSD, a storage controller, a solid state drive, a host device, an NVM device, a NAND die, or any other suitable device. Of course, this process can be implemented in various ways within the scope of the disclosure by any suitable device that can support memory-related operations.
In einem ersten Block sammelt eine Vorrichtung (z. B. eine Steuerung einer Datenspeichervorrichtung) Informationen, die Befehlsarten anzeigt, die in eine Vielzahl von Übermittlungswarteschlangen einer Host-Vorrichtung geschrieben werden. Zum Beispiel kann die Vorrichtung für jede Übermittlungswarteschlange eine Rate bestimmen, mit der eine Host-Vorrichtung Befehle mit einer definierten Ausführungsreihenfolge in die Übermittlungswarteschlange schreibt.In a first block, a device (e.g., a controller of a data storage device) gathers information indicating types of commands that are written to a plurality of host device delivery queues. For example, for each delivery queue, the device may determine a rate at which a host device writes commands to the delivery queue with a defined order of execution.
In einem zweiten Block bestimmt die Vorrichtung mindestens eine Statistik bezüglich dessen, ob eine bestimmte Befehlsart in eine erste Übermittlungswarteschlange der Vielzahl von Übermittlungswarteschlangen geschrieben wird. Zum Beispiel kann die Vorrichtung eine Rate bestimmen, mit der die Host-Vorrichtung Befehle mit einer definierten Ausführungsreihenfolge in die erste Übermittlungswarteschlange schreibt.In a second block, the device determines at least one statistic with regard to whether a particular type of instruction is written to a first transmission queue of the plurality of transmission queues. For example, the device can determine a rate at which the host device writes commands to the first delivery queue with a defined order of execution.
In einem dritten Block schätzt die Vorrichtung auf Basis mindestens einer Statistik, ob die erste Übermittlungswarteschlange eine Vielzahl von Befehlen mit einer definierten Ausführungsreihenfolge enthält.In a third block, the device estimates on the basis of at least one statistic whether the first transmission queue contains a plurality of commands with a defined order of execution.
In einem optionalen vierten Block kann die Vorrichtung ferner auf Grundlage dessen, ob die erste Übermittlungswarteschlange eine Vielzahl von Befehlen enthält, schätzen, ob die erste Übermittlungswarteschlange eine Vielzahl von Befehlen mit einer definierten Ausführungsreihenfolge enthält.In an optional fourth block, the apparatus can further estimate, based on whether the first delivery queue contains a plurality of commands, whether the first delivery queue contains a plurality of instructions with a defined order of execution.
In einigen Gesichtspunkten kann ein Prozess gemäß den Lehren hierin jede Kombination der vorstehend genannten Vorgänge einschließen.In some aspects, a process according to the teachings herein can include any combination of the foregoing.
ANDERE GESICHTSPUNKTEOTHER FACE POINTS
Die hierin aufgeführten Beispiele werden bereitgestellt, um bestimmte Konzepte der Offenbarung zu veranschaulichen. Die vorstehend veranschaulichten Geräte, Vorrichtungen oder Komponenten können so eingerichtet werden, dass sie eines oder mehrere der hierin beschriebenen Verfahren, Merkmale oder Schritte ausführen können. Fachleute werden verstehen, dass diese lediglich der Veranschaulichung dienen und dass andere Beispiele innerhalb des Schutzumfangs der Offenbarung und der beiliegenden Ansprüche fallen können. Auf der Grundlage der hierin enthaltenen Lehren sollten Fachleute es zu schätzen wissen, dass ein hierin offenbarter Gesichtspunkt unabhängig von anderen Gesichtspunkten umgesetzt werden kann und dass zwei oder mehrere dieser Gesichtspunkte auf verschiedene Weise kombiniert werden können. Zum Beispiel kann eine Vorrichtung eingesetzt oder ein Verfahren anhand einer beliebigen Zahl der hierin dargelegten Gesichtspunkte ausgeübt werden. Zusätzlich kann eine solche Vorrichtung eingesetzt oder ein solches Verfahren anhand einer anderen Struktur, Funktionalität oder Struktur und Funktionalität zusätzlich zu oder anders als einer oder mehrere der hierin dargelegten Gesichtspunkte ausgeübt werden.The examples listed herein are provided to illustrate certain concepts of the disclosure. The devices, devices, or components illustrated above can be configured to perform one or more of the methods, features, or steps described herein. Those skilled in the art will understand that these are illustrative only and that other examples may fall within the scope of the disclosure and the appended claims. Based on the teachings contained herein, those skilled in the art should appreciate that an aspect disclosed herein can be practiced independently of other aspects, and that two or more of these aspects can be combined in various ways. For example, an apparatus may be employed or a method may be practiced using any number of the aspects set forth herein. Additionally, such an apparatus may be employed or such a method may be practiced using a different structure, functionality, or structure and functionality in addition to or differently than one or more of the aspects set forth herein.
Gesichtspunkte der vorliegenden Offenbarung wurden vorstehend unter Bezugnahme auf schematische Flussdiagramme und/oder schematische Blockdiagramme von Verfahren, Vorrichtungen, Systemen und Computerprogrammprodukten gemäß Ausführungsformen der Offenbarung beschrieben. Es versteht sich, dass jeder Block der schematischen Flussdiagramme und/oder schematischen Blockdiagramme und Kombinationen von Blöcken in den schematischen Flussdiagrammen und/oder schematischen Blockdiagrammen durch Computerprogrammanweisungen implementiert werden können. Diese Computerprogrammanweisungen können einem Prozessor eines Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die Anweisungen, die über den Prozessor oder eine andere programmierbare Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zum Implementieren der Funktionen und/oder Schritte erzeugen, die in den schematischen Flussdiagrammen und/oder schematischen Blockdiagrammen Block oder Blöcken spezifiziert sind.Aspects of the present disclosure have been described above with reference to schematic flow diagrams and / or schematic block diagrams of methods, devices, systems and computer program products in accordance with embodiments of the disclosure. It will be understood that each block of the schematic flow diagrams and / or schematic block diagrams and combinations of blocks in the schematic flow diagrams and / or schematic block diagrams can be implemented by computer program instructions. These computer program instructions can be provided to a processor of a computer or other programmable data processing device to create a machine, so that the instructions executed via the processor or other programmable data processing device create means for implementing the functions and / or steps that the block or blocks are specified in the schematic flowcharts and / or schematic block diagrams.
Der hierin beschriebene Gegenstand kann in Hardware, Software, Firmware oder einer Kombination davon implementiert werden. Als solche können sich die hierin verwendeten Begriffe „Funktion“, „Modul“ und dergleichen auf Hardware beziehen, die auch Software- und/oder Firmwarekomponenten zur Implementierung der beschriebenen Funktion einschließen kann. In einer beispielhaften Implementierung kann der hierin beschriebene Gegenstand anhand eines computerlesbaren Mediums implementiert werden, auf dem computerausführbare Anweisungen gespeichert sind, die bei der Ausführung durch einen Computer (z. B. einen Prozessor) den Computer so steuern, dass er die hierin beschriebene Funktionalität ausführt. Beispiele für computerlesbare Medien, die sich für die Implementierung des hierin beschriebenen Gegenstandes eignen, sind nichtflüchtige computerlesbare Medien, wie Plattenspeichervorrichtungen, Chip-Speichervorrichtungen, programmierbare Logikvorrichtungen und anwendungsspezifische integrierte Schaltungen. Zusätzlich kann sich ein computerlesbares Medium, das den hierin beschriebenen Gegenstand implementiert, auf einer einzigen Vorrichtung oder Rechnerplattform befinden oder über mehrere Vorrichtungen oder Rechnerplattformen verteilt sein.The subject matter described herein can be implemented in hardware, software, firmware, or a combination thereof. As such, the terms “function”, “module” and the like used herein can refer to hardware, which can also include software and / or firmware components for implementing the function described. In an exemplary Implementation The subject matter described herein can be implemented using a computer-readable medium having stored thereon computer-executable instructions that, when executed by a computer (e.g. a processor), control the computer to carry out the functionality described herein. Examples of computer readable media suitable for implementing the subject matter described herein are non-transitory computer readable media such as disk storage devices, chip storage devices, programmable logic devices, and application specific integrated circuits. Additionally, a computer readable medium that implements the subject matter described herein may reside on a single device or computing platform, or be distributed across multiple devices or computing platforms.
Es sollte auch beachtet werden, dass in einigen alternativen Implementierungen die in dem Block angegebenen Funktionen außerhalb der in den Figuren angegebenen Reihenfolge auftreten können. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, abhängig von der involvierten Funktionalität. Andere Schritte und Verfahren, die in Funktion, Logik oder Wirkung äquivalent zu einem oder mehreren Blöcken oder Teilen davon der dargestellten Figuren sind, können konzipiert werden. Obwohl verschiedene Pfeilarten und Linienarten in dem Flussdiagramm und/oder den Blockdiagrammen verwendet werden können, sind sie so zu verstehen, dass sie den Umfang der entsprechenden Ausführungsformen nicht einschränken. Zum Beispiel kann ein Pfeil eine Warte- oder Überwachungsperiode einer nicht spezifizierten Dauer zwischen aufgezählten Schritten der dargestellten Ausführungsform angeben.It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in sequence may actually be executed substantially simultaneously, or the blocks may sometimes be executed in the reverse order, depending on the functionality involved. Other steps and methods which are equivalent in function, logic or effect to one or more blocks or parts thereof of the illustrated figures can be devised. Although various types of arrows and lines can be used in the flowchart and / or the block diagrams, it is to be understood that they are not intended to limit the scope of the respective embodiments. For example, an arrow may indicate a waiting or monitoring period of unspecified duration between enumerated steps of the illustrated embodiment.
Die verschiedenen Merkmale und Prozesse, die vorstehend beschrieben sind, können unabhängig voneinander verwendet oder auf verschiedene Weisen kombiniert werden. Alle möglichen Kombinationen und Unterkombinationen sollen in den Schutzumfang dieser Offenbarung fallen. Außerdem können bestimmte Verfahren, Ereignisse, Zustände oder Prozessblöcke in einigen Implementierungen weggelassen werden. Die hierin beschriebenen Verfahren und Prozesse sind auch nicht auf eine bestimmte Sequenz beschränkt, und die Blöcke oder Zustände, die sich darauf beziehen, können in anderen Sequenzen durchgeführt werden, die geeignet sind. Beispielsweise können beschriebene Aufgaben oder Ereignisse in einer anderen Reihenfolge als der speziell offenbarten ausgeführt werden, oder mehrere können in einem einzelnen Block oder Zustand kombiniert werden. Die beispielhaften Aufgaben oder Ereignisse können seriell, parallel oder auf irgendeine andere geeignete Weise ausgeführt werden. Aufgaben oder Ereignisse können zu den offenbarten beispielhaften Ausführungsformen hinzugefügt oder von diesen entfernt werden. Die hierin beschriebenen beispielhaften Systeme und Komponenten können anders als beschrieben eingerichtet sein. Beispielsweise können im Vergleich zu den offenbarten beispielhaften Ausführungsformen Elemente hinzugefügt, entfernt oder umgeordnet werden.The various features and processes described above can be used independently or combined in various ways. All possible combinations and sub-combinations are intended to fall within the scope of this disclosure. In addition, certain procedures, events, states, or process blocks can be omitted in some implementations. The methods and processes described herein are also not limited to any particular sequence, and the blocks or states relating thereto may be performed in other sequences as appropriate. For example, tasks or events described may be performed out of the order specifically disclosed, or more may be combined into a single block or state. The exemplary tasks or events can be performed serially, in parallel, or in any other suitable manner. Tasks or events can be added to or removed from the disclosed example embodiments. The example systems and components described herein may be configured differently than described. For example, elements can be added, removed, or rearranged compared to the disclosed example embodiments.
Fachleute werden es zu schätzen wissen, dass Informationen und Signale mit einer Vielzahl verschiedener Technologien und Techniken dargestellt werden können. Beispielsweise können Daten, Anweisungen, Befehle, Informationen, Signale, Bits, Symbole und Chips, auf die in der vorstehenden Beschreibung Bezug genommen werden kann, durch Spannungen, Ströme, elektromagnetische Wellen, Magnetfelder oder -teilchen, optische Felder oder Teilchen oder eine beliebige Kombination davon dargestellt werden.Those skilled in the art will appreciate that information and signals can be represented using a variety of different technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips that may be referred to in the above description can be generated by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination of which are represented.
Das Wort „beispielhaft“ wird in diesem Dokument in der Bedeutung „als Beispiel, Fall oder zur Veranschaulichung dienend“ verwendet. Jeder Gesichtspunkt der hierin als „beispielhaft“ beschrieben wird, ist nicht zwangsläufig als bevorzugt oder vorteilhaft gegenüber anderen Gesichtspunkten zu verstehen. Gleichermaßen erfordert der Begriff „Gesichtspunkt“ nicht, dass alle Gesichtspunkte das erörterte Merkmal, den erörterten Vorteil oder den erörterten Betriebsmodus aufweisen.The word “exemplary” is used in this document to mean “as an example, case, or illustration”. Any aspect described herein as “exemplary” is not necessarily to be understood as preferred or advantageous over other aspects. Likewise, the term "aspect" does not require that all aspects have the discussed feature, benefit, or mode of operation.
Obwohl die vorstehenden Beschreibungen viele spezifische Ausführungsformen der Erfindung enthalten, sollten diese nicht als Einschränkungen des Umfangs der Erfindung ausgelegt werden, sondern als Beispiele spezifischer Ausführungsformen davon. Dementsprechend sollte der Schutzumfang der Erfindung nicht durch die dargestellten Ausführungsformen, sondern durch die beiliegenden Ansprüche und deren Äquivalente bestimmt werden. Außerdem bedeutet die Bezugnahme in dieser Beschreibung auf „eine Ausführungsform“ oder eine ähnlichen Ausdrucksweise, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Charakteristik, die in Verbindung mit der Ausführungsform beschrieben ist, in mindestens einer Ausführungsform der vorliegenden Offenlegung eingeschlossen ist. Daher kann sich das Auftreten der Phrase „in einer Ausführungsform“ und ähnlicher Formulierungen in dieser Beschreibung, müssen sich aber nicht notwendigerweise alle, auf dieselbe Ausführungsform beziehen, sondern bedeutet „eine oder mehrere, aber nicht alle Ausführungsformen“, sofern nicht ausdrücklich etwas anderes angegeben ist.While the foregoing descriptions contain many specific embodiments of the invention, these should not be construed as limitations on the scope of the invention, but rather as examples of specific embodiments thereof. Accordingly, the scope of the invention should be determined not by the illustrated embodiments, but by the appended claims and their equivalents. Additionally, references in this specification to “an embodiment” or similar language mean that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present disclosure. Therefore, the appearances of the phrase “in one embodiment” and similar phrases in this specification may, but need not necessarily all, refer to the same embodiment, but rather means “one or more, but not all, embodiments” unless expressly stated otherwise is.
Die hierin verwendeten Begriffe dienen nur der Beschreibung von bestimmten Gesichtspunkten und sollen nicht als Einschränkung der Gesichtspunkte verstanden werden. Wie hierin verwendet, sollen die Singularformen „ein“, „eine“, „eines“ und „der“, „die“, „das“ auch die Pluralformen (d. h. eine oder mehrere) einschließen, sofern der Kontext nicht eindeutig etwas anderes angibt. Eine aufzählende Auflistung von Elementen impliziert nicht, dass sich irgendeines oder alle der Elemente gegenseitig ausschließen und/oder gegenseitig einschließen, sofern nicht ausdrücklich etwas anderes angegeben ist. Außerdem gilt, dass die Begriffe „aufweisen“, „aufweisend“, „einschließen“, „einschließlich“, „mit“ und Variationen davon, wenn sie hierin verwendet werden, „einschließlich, aber nicht begrenzt auf“ bedeuten, sofern nicht ausdrücklich etwas anderes angegeben ist. Das heißt, dass diese Begriffe das Vorhandensein von angegebenen Merkmalen, Einheiten, Schritten, Vorgängen, Elementen und/oder Komponenten bezeichnen können, nicht aber das Vorhandensein oder die Hinzufügung von einer oder mehreren anderen Merkmalen, Einheiten, Schritten, Vorgängen, Elementen, Komponenten oder Gruppen von diesen ausschließen. Außerdem gilt, dass das Wort „oder“ dasselbe bedeutet wie der boolesche Operator „ODER“, d. h. es umfasst die Möglichkeiten von „entweder“ und „beide“ und ist nicht auf „ausschließlich oder“ („XOR“) beschränkt, sofern nicht ausdrücklich etwas anderes angegeben ist. Es gilt auch, dass das Symbol „/“ zwischen zwei benachbarten Wörtern das gleiche bedeutet wie „oder“, sofern nicht ausdrücklich etwas anderes angegeben ist. Außerdem sind Ausdrucksweisen wie „verbunden mit“, „gekoppelt mit“ oder „in Kommunikation mit“ nicht auf direkte Verbindungen beschränkt, sofern nicht ausdrücklich etwas anderes angegeben ist.The terms used herein are only used to describe certain aspects and are not intended to be limiting Points of view are understood. As used herein, the singular forms “a,” “an,” “an,” and “the,” “the,” “that” are intended to include the plural forms (ie, one or more), unless the context clearly indicates otherwise. An bullet listing of items does not imply that any or all of the items are mutually exclusive and / or inclusive, unless expressly stated otherwise. In addition, the terms “having,” “having,” “including,” “including,” “having,” and variations thereof, when used herein mean “including, but not limited to,” unless expressly stated otherwise is specified. This means that these terms can denote the presence of specified features, units, steps, processes, elements and / or components, but not the presence or addition of one or more other features, units, steps, processes, elements, components or Exclude groups from these. In addition, the word “or” means the same thing as the Boolean operator “OR”, ie it encompasses the possibilities of “either” and “both” and is not limited to “exclusively or” (“XOR”) unless expressly stated something else is stated. It is also valid that the symbol “/” between two neighboring words means the same as “or”, unless expressly stated otherwise. In addition, expressions such as “connected to,” “coupled with,” or “in communication with” are not limited to direct connections unless expressly stated otherwise.
Jede Bezugnahme hierin auf ein Element anhand einer Bezeichnung wie „erstes“, „zweites“ und so weiter beschränkt im Allgemeinen nicht die Menge oder Reihenfolge dieser Elemente. Vielmehr können diese Bezeichnungen hierin als ein bequemes Verfahren zur Unterscheidung zwischen zwei oder mehr Elementen oder Fällen eines Elements verwendet werden. Daher bedeutet eine Bezugnahme auf das erste und das zweite Element nicht, dass dort nur zwei Elemente verwendet werden dürfen oder dass das erste Element dem zweiten Element in irgendeiner Weise vorausgehen muss. Sofern nicht anders angegeben, kann ein Satz von Elementen auch ein oder mehrere Elemente einschließen. Außerdem bedeutet die Terminologie der Form „mindestens eines von a, b oder c“ oder „a, b, c oder eine Kombination davon“, die in der Beschreibung oder den Ansprüchen verwendet wird, „a oder b oder c oder eine Kombination dieser Elemente“. Zum Beispiel kann diese Terminologie a oder b oder c oder a und b oder a und c oder a und b und c oder 2a oder 2b oder 2c oder 2a und b und so weiter einschließen.Any reference herein to an element by terms such as “first,” “second,” and so on, does not generally limit the amount or order of those elements. Rather, these terms may be used herein as a convenient method of distinguishing between two or more elements or instances of an element. Therefore, reference to the first and the second element does not mean that only two elements may be used there or that the first element must precede the second element in any way. Unless otherwise specified, a set of elements can also include one or more elements. Additionally, the terminology of the form “at least one of a, b or c” or “a, b, c or a combination thereof” used in the specification or claims means “a or b or c or a combination of these elements ". For example, this terminology can include a or b or c or a and b or a and c or a and b and c or 2a or 2b or 2c or 2a and b and so on.
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.As used herein, the term “determine” encompasses a variety of acts. For example, “determining” can include computing, calculating, processing, deriving, examining, looking up (e.g., looking up a table, database, or other data structure), determining, and the like. “Determining” can also include receiving (e.g. receiving information), accessing (e.g. accessing data in a memory) and the like. “Determine” can also include solving, choosing, selecting, specifying, and the like.
ZITATE ENTHALTEN IN DER BESCHREIBUNGQUOTES INCLUDED IN THE DESCRIPTION
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.This list of the documents listed by the applicant was generated automatically and is included solely for the better information of the reader. The list is not part of the German patent or utility model application. The DPMA assumes no liability for any errors or omissions.
Zitierte PatentliteraturPatent literature cited
- US 15908710 [0001]US 15908710 [0001]
- US 14/868373 [0001]US 14/868373 [0001]
- US 9927983 [0001]US 9927983 [0001]