-
Die vorliegende Anmeldung beansprucht Priorität gegenüber der U.S.-Patentanmeldung mit der Anmeldenr. 16/384,618, eingereicht am 15. April 2019, mit dem Titel „PREDICTIVE DATA PRE-FETCHING IN A DATA STORAGE DEVICE“, deren gesamte Offenbarung hiermit durch Bezugnahme hierin aufgenommen wird.
-
GEBIET DER TECHNIK
-
Zumindest einige der hierin offenbarten Ausführungsformen beziehen sich auf Speichersysteme im Allgemeinen und insbesondere auf vorausschauenden Datenvorabruf in Datenspeichervorrichtungen, ohne darauf beschränkt zu sein.
-
STAND DER TECHNIK
-
Ein Speicherteilsystem kann eine oder mehrere Speicherkomponenten beinhalten, die Daten speichern. Ein Speicherteilsystem kann ein Datenspeichersystem sein, wie etwa ein Solid-State-Laufwerk (Solid-State Drive - SSD) oder ein Festplattenlaufwerk (Hard Disk Drive - HDD). Ein Speicherteilsystem kann ein Speichermodul sein, wie etwa ein Dual-Inline-Speichermodul (Dual In-line Memory Module - DIMM), ein Small-Outline-DIMM (SO-DIMM) und ein nichtflüchtiges Dual-Inline-Speichermodul (Non-Volatile Dual In-line Memory Module - NVDIMM). Die Speicherkomponenten können beispielsweise nichtflüchtige Speicherkomponenten und flüchtige Speicherkomponenten sein. Beispiele von Speicherkomponenten beinhalten integrierte Speicherschaltungen. Einige integrierte Speicherschaltungen sind flüchtig und benötigen Strom, um gespeicherte Daten zu bewahren. Einige integrierte Speicherschaltungen sind nichtflüchtig und können gespeicherte Daten auch dann bewahren, wenn sie nicht mit Strom versorgt werden. Beispiele für nichtflüchtigen Speicher beinhalten Flash-Speicher, Festwertspeicher (Read-Only Memory - ROM), programmierbaren Festwertspeicher (PROM), löschbaren programmierbaren Festwertspeicher (Erasable Programmable Read-Only Memory - EPROM) und elektronisch löschbaren programmierbaren Festwertspeicher (Electronically Erasable Programmable Read-Only Memory - EEPROM) usw. Beispiele für flüchtigen Speicher beinhalten dynamischen Direktzugriffsspeicher (Dynamic Random-Access Memory - DRAM) und statischen Direktzugriffsspeicher (SRAM). Im Allgemeinen kann ein Host-System ein Speicherteilsystem nutzen, um Daten in den Speicherkomponenten zu speichern und Daten aus den Speicherkomponenten zu laden.
-
Ein Computer kann ein Host-System und ein oder mehrere Speicherteilsysteme, die an das Host-System angeschlossen sind, beinhalten. Das Host-System kann eine Zentraleinheit (Central Processing Unit - CPU) aufweisen, die mit dem einen oder den mehreren Speicherteilsystemen kommuniziert, um Daten und Anweisungen zu speichern und/oder zu laden. Anweisungen für einen Computer können Betriebssysteme, Vorrichtungstreiber und Anwendungsprogramme beinhalten. Ein Betriebssystem verwaltet Ressourcen in dem Computer und stellt gemeinsame Dienste für Anwendungsprogramme bereit, wie etwa Speicherzuweisung und Zeitaufteilung der Ressourcen. Ein Vorrichtungstreiber betreibt oder steuert einen bestimmten Vorrichtungstyp im Computer; und das Betriebssystem verwendet den Vorrichtungstreiber, um Ressourcen und/oder Dienste anzubieten, die durch den Vorrichtungstyp bereitgestellt werden. Eine Zentraleinheit (CPU) eines Computersystems kann ein Betriebssystem und Vorrichtungstreiber ausführen, um die Dienste und/oder Ressourcen für Anwendungsprogramme bereitzustellen. Die Zentraleinheit (CPU) kann ein Anwendungsprogramm ausführen, das die Dienste und/oder Ressourcen verwendet. Beispielsweise kann ein Anwendungsprogramm, das einen Anwendungstyp von Computersystemen implementiert, die Zentraleinheit (CPU) anweisen, Daten in den Speicherkomponenten eines Speicherteilsystems zu speichern und Daten aus den Speicherkomponenten zu laden.
-
Ein Host-System kann mit einem Speicherteilsystem in Übereinstimmung mit einem vordefinierten Kommunikationsprotokoll kommunizieren, wie etwa die Host-Steuerungsschnittstellenspezifikation für nichtflüchtigen Speicher (Non-Volatile Memory Host Controller Interface Specification - NVMHCI), auch bekannt als NVM Express (NVMe), die das logische Vorrichtungsschnittstellenprotokoll für den Zugriff auf nichtflüchtige Speichervorrichtungen über einen PCI Express- oder PCIe-Bus (Peripheral Component Interconnect Express) spezifiziert. Gemäß dem Kommunikationsprotokoll kann das Host-System Befehle unterschiedlicher Art an das Speicherteilsystem senden; und das Speicherteilsystem kann die Befehle ausführen und Antworten auf die Befehle bereitstellen. Einige Befehle weisen das Speicherteilsystem an, Datenelemente an Adressen zu speichern, die in den Befehlen angegeben sind, oder Datenelemente von Adressen zu laden, die in den Befehlen angegeben sind, wie etwa Lesebefehle und Schreibbefehle. Einige Befehle verwalten die Infrastruktur im Speicherteilsystem und/oder Verwaltungsaufgaben, wie etwa Befehle zum Verwalten von Namensräumen, Befehle zum Anhängen von Namensräumen, Befehle zum Erstellen von Eingabe-/Ausgabe-Übermittlungs- oder Abschlusswarteschlangen, Befehle zum Löschen von Eingabe-/Ausgabe-Übermittlungs- oder Abschlusswarteschlangen, Befehle zur Firmwareverwaltung usw.
-
Figurenliste
-
Die Ausführungsformen werden als Beispiel und nicht als Einschränkung in den Figuren der beigefügten Zeichnungen veranschaulicht, in denen gleiche Bezugszeichen ähnliche Elemente bezeichnen.
- 1 veranschaulicht ein beispielhaftes Rechensystem, das ein Speicherteilsystem gemäß einigen Ausführungsformen der vorliegenden Offenlegung beinhaltet.
- 2 veranschaulicht ein System, das konfiguriert ist, um ein Vorhersagemodell zu trainieren, um Befehle zu identifizieren, die eine erhöhte Latenz bei der Ausführung anderer Befehle verursachen können.
- 3 veranschaulicht ein System mit einem Vorhersagemodell, um Daten von Befehlen aus nichtflüchtigen Medien in einen Pufferspeicher vorabzurufen.
- 4 zeigt ein Verfahren zum Trainieren eines Vorhersagemodells, um Befehle mit starker Auswirkung zu identifizieren.
- 5 zeigt ein Verfahren zum Vorabrufen von Daten für Befehle mit starker Auswirkung basierend auf den Vorhersagen eines Vorhersagemodells.
- 6 ist ein Blockdiagramm eines beispielhaften Computersystems, in dem Ausführungsformen der vorliegenden Offenbarung betrieben werden können.
-
DETAILLIERTE BESCHREIBUNG
-
Mindestens einige Aspekte der vorliegenden Offenbarung sind auf das vorausschauende Vorabrufen von Daten für Befehle gerichtet, die die Ausführungslatenz anderer Befehle erhöhen können, die gleichzeitig in einer Datenspeichervorrichtung ausgeführt werden. Zum Beispiel ist ein Vorhersagemodell in einer Datenspeichervorrichtung konfiguriert, um solche Befehle zu identifizieren, die erhebliche Verzögerungen bei der Ausführung anderer Befehle verursachen können. Die durch die identifizierten Befehle verwendeten Daten können aus nichtflüchtigen Speichermedien der Datenspeichervorrichtung in einen Pufferspeicher der Speichervorrichtung vorabgerufen werden. Das Vorabrufen der Daten in den Pufferspeicher kann die Verzögerungen, die durch die identifizierten Befehle bei der Ausführung anderer Befehle verursacht werden, reduzieren, minimieren und/oder eliminieren. Das Vorhersagemodell kann durch Anwenden von Techniken des maschinellen Lernens auf einen Trainingssatz von Befehlen unter Verwendung der Ausführungslatenzdaten der Befehle in dem Trainingssatz erstellt werden.
-
Im Allgemeinen können Infrastrukturbefehle verwendet werden, um die Infrastruktur in einem Datenspeichersystem zu bewältigen, zu konfigurieren, zu verwalten oder den Status der Infrastruktur zu melden. Gewisse Infrastrukturbefehle können häufig unerwartete Erhöhungen der Latenz bei der Ausführung anderer Befehle verursachen, die sich nicht auf solche Befehle beziehen. Solche Infrastrukturbefehle können eine hohe Latenz aufweisen. Wenn gewisse Ressourcen in dem Datenspeichersystem für die Ausführung der Infrastrukturbefehle mit hoher Latenz verwendet werden, sind die Ressourcen für die Ausführung anderer Befehle nicht mehr verfügbar, was scheinbar zufällige Verzögerungen bei der Ausführung anderer Befehle verursacht, die die Ressourcen verwenden können.
-
In mindestens einigen hierin offenbarten Ausführungsformen ist ein Vorhersagemodell konfiguriert, um Infrastrukturbefehle vorherzusagen, die höchstwahrscheinlich die Latenz anderer Befehle erhöhen. Die Vorhersage basiert auf einigen Eigenschaften von Befehlen, die derzeit zur Verarbeitung im Datenspeichersystem in die Warteschlange eingereiht sind. Die Vorhersage ermöglicht es dem Datenspeichersystem, Daten aus nichtflüchtigen Speichermedien in den Pufferspeicher für die vorhergesagten Infrastrukturbefehle vorabzurufen. Nach dem Vorabrufen der Daten für die vorhergesagten Befehle ist die Wahrscheinlichkeit, dass die vorhergesagten Infrastrukturbefehle während ihrer Ausführung Ressourcen verwenden, um auf die nichtflüchtigen Speichermedien zuzugreifen und sie für die Ausführung anderer Befehle nicht verfügbar zu machen, reduziert. Daher kann die Auswirkung der Ausführung der Infrastrukturbefehle auf andere Befehle reduziert, minimiert und/oder eliminiert werden.
-
Beispielsweise kann eine Technik für überwachtes maschinelles Lernen auf eine Gruppe von Befehlen in einem Trainingsdatensatz angewendet werden. Der Trainingsdatensatz kann einen gemischten Satz von Infrastrukturbefehlen unterschiedlicher Typen und anderen Befehlen unterschiedlicher Typen aufweisen. Der Trainingssatz von Befehlen kann ein Beispiel einer Arbeitsbelastung für eine Datenspeichervorrichtung/ein Datenspeichersystem oder eine reale Arbeitsbelastung während einer Dienstzeit darstellen. Einige Parameter der Befehle im Trainingssatz können als Eingabeparameter in das Vorhersagemodell verwendet werden, wie etwa die Befehlstypen, die Regionen im Speichersystem, auf die die Befehle zugreifen, usw. Die gemessene Latenz bei der Ausführung der Befehle im Trainingssatz kann verwendet werden, um Infrastrukturbefehle, die eine starke Auswirkung auf die Ausführung anderer Befehle haben, und Infrastrukturbefehle, die keine starke Auswirkung auf die Ausführung anderer Befehle haben, zu identifizieren. Beispielsweise verursachen Befehle mit starker Auswirkung mehr als einen Schwellenbetrag an erhöhter Latenz bei der Ausführung anderer Befehle; und Befehle mit geringer Auswirkung verursachen nicht mehr als den Schwellenbetrag an Erhöhung der Latenz anderer Befehle. Die Technik für überwachtes maschinelles Lernen kann verwendet werden, um das Vorhersagemodell zu trainieren, indem die Parameter in dem Vorhersagemodell angepasst werden, um die Unterschiede zwischen der Klassifizierung/Vorhersage der durch das Vorhersagemodell identifizierten Infrastrukturbefehle und der Klassifizierung/Vorhersage von Infrastrukturbefehlen, die aus den Latenzdaten im Trainingsdatensatz identifiziert werden, zu minimieren.
-
Zum Beispiel kann das Vorhersagemodell trainiert werden, um eine Abfolge von Befehlen zu klassifizieren. Jeder Infrastrukturbefehl in der Abfolge kann danach klassifiziert werden, ob er Potenzial für starke Auswirkungen oder kein Potenzial für die Befehle in der Abfolge aufweist.
-
Zum Beispiel kann das Vorhersagemodell trainiert werden, um für eine Abfolge von Befehlen Latenzerhöhungen vorherzusagen, die durch einen Infrastrukturbefehl in der Abfolge bei der Ausführung anderer Befehle in der Abfolge verursacht werden. Die vorhergesagten Erhöhungen der Ausführungslatenz können mit einem Schwellenwert verglichen werden, um den Infrastrukturbefehl entweder als einen Befehl mit starker Auswirkung oder einen Befehl mit geringer Auswirkung zu klassifizieren.
-
Zum Beispiel kann das Vorhersagemodell trainiert werden, um für eine Abfolge von Befehlen vorherzusagen, dass ein Infrastrukturbefehl, der in die Datenspeichervorrichtung/das Datenspeichersystem eingeht, mehr als einen Schwellenbetrag an Erhöhung der Ausführungslatenz einiger der Befehle in der Abfolge verursachen wird. Die Vorhersage kann basierend auf dem Muster von Infrastrukturbefehlen und anderen Befehlen erfolgen.
-
Das Vorhersagemodell kann beispielsweise auf statistischer Korrelation unter Verwendung logistischer Regression und/oder eines künstlichen neuronalen Netzes basieren.
-
Beispielsweise können unterschiedliche Sätze von Trainingssätzen für Datenspeichersysteme mit unterschiedlichen Strukturen und unterschiedlichen Konfigurationen verwendet werden.
-
Ein Datenspeichersystem mit einer bestimmten Ausgestaltung kann anfänglich mit einem Vorhersagemodell konfiguriert sein, das gemäß einer typischen Arbeitsbelastung von Befehlen für die Ausgestaltung trainiert wird. Anschließend kann das Vorhersagemodell für die typische Arbeitsbelastung des Datenspeichersystems in einem Computersystem und/oder basierend auf einer aktuellen Echtzeit-Arbeitsbelastung des Datenspeichersystems weiter trainiert und/oder aktualisiert werden.
-
Optional kann das Datenspeichersystem ferner konfiguriert sein, um Unterschiede zwischen den Echtzeit-Vorhersagen, die unter Verwendung des Vorhersagemodells getroffen werden, und der anschließenden Messung einer erhöhten Latenz bei Befehlsausführungen zu überwachen, um das Vorhersagemodell periodisch weiter zu trainieren, um seine Vorhersagefähigkeit in Übereinstimmung mit der Echtzeit-Arbeitsbelastung anzupassen.
-
Während der Verwendung des Datenspeichersystems, das ein Vorhersagemodell aufweist, können die durch das Datenspeichersystem auszuführenden eingehenden Befehle als Eingabe in das Vorhersagemodell bereitgestellt werden, um eine Tabelle von Befehlen zu identifizieren, die für den Vorabruf geplant/vorgeschlagen sind.
-
Beispielsweise kann das Vorhersagemodell verwendet werden, um eine vorbestimmte Anzahl von Befehlen zu verarbeiten, die in einer oder mehreren Warteschlangen zur Ausführung anstehen (z. B. 1000 Befehle), oder einmal in jedem vorbestimmten Zeitraum (z. B. 10 ms). Während der Verwendung des Vorhersagemodells können die zur Ausführung durch das Datenspeichersystem anstehenden Befehle in das Vorhersagemodell eingespeist werden, um eine Tabelle von Befehlen mit starker Auswirkung zum Vorabrufen zu identifizieren. Das Datenspeichersystem ist so konfiguriert, dass es die Daten, die wahrscheinlich durch die Befehle mit starker Auswirkung verwendet werden, in der Tabelle vor der tatsächlichen Ausführung der Befehle mit starker Auswirkung vorabruft, sodass die Auswirkung der Ausführung der Befehle mit starker Auswirkung auf eine große Anzahl anderer Befehle verteilt wird. Ferner kann das Vorabrufen so konfiguriert sein, dass Reserveressourcen verwendet werden, die nicht für die Ausführung der anderen Befehle verwendet werden/erforderlich sind, die vor den Befehlen mit starker Auswirkung ausgeführt werden; und eine solche Anordnung kann die Gesamtauswirkung der Befehle mit starker Auswirkung auf andere Befehle reduzieren.
-
In einigen Fällen kann das Vorhersagemodell einen Infrastrukturbefehl vorhersagen, bevor das Host-System den Infrastrukturbefehl an das Datenspeichersystem sendet und/oder bevor der Infrastrukturbefehl zur Ausführung aus einer Warteschlange geladen wird. Das Datenspeichersystem kann ein Flag verwenden, um anzugeben, ob die vorabgerufenen Daten für den vorhergesagten Infrastrukturbefehl gültig sind oder nicht.
-
Allgemein kann ein Speicherteilsystem auch als „Speichervorrichtung“ bezeichnet werden. Ein Beispiel des Speicherteilsystems ist ein Speichermodul, das über einen Speicherbus mit einer Zentraleinheit (CPU) verbunden ist. Beispiele für Speichermodule beinhalten ein Dual-Inline-Speichermodul (DIMM), ein Small-Outline-DIMM (SO-DIMM), ein nichtflüchtiges Dual-Inline-Speichermodulen (NVDIMM) usw.
-
Ein weiteres Beispiel für ein Speicherteilsystem ist eine Datenspeichervorrichtung/ein Datenspeichersystem, die bzw. das über eine Peripheriezwischenverbindung (z. B. einen Eingabe-/Ausgabebus, ein Speicherbereichsnetzwerk) mit der Zentraleinheit (CPU) verbunden ist. Beispiele für Datenspeichervorrichtungen sind ein Solid-State-Laufwerk (SSD), ein Flash-Laufwerk, ein USB-Flash-Laufwerk und ein Festplattenlaufwerk (HDD).
-
In einigen Ausführungsformen ist das Speicherteilsystem ein hybrides Speicher-/Datenspeicherteilsystem, das sowohl Speicherfunktionen als auch Datenspeicherfunktionen bereitstellt. Im Allgemeinen kann ein Host-System ein Speicherteilsystem nutzen, das eine oder mehrere Speicherkomponenten beinhaltet. Das Host-System kann Daten bereitstellen, die im Speicherteilsystem gespeichert werden sollen, und kann anfordern, dass Daten aus dem Speicherteilsystem geladen werden.
-
1 veranschaulicht ein beispielhaftes Rechensystem, das ein Speicherteilsystem (110) gemäß einigen Ausführungsformen der vorliegenden Offenlegung beinhaltet.
-
Das Speicherteilsystem (110) kann nichtflüchtige Medien (109) beinhalten, die Speicherkomponenten beinhalten. Allgemein können Speicherkomponenten flüchtige Speicherkomponenten, nichtflüchtige Speicherkomponenten oder eine Kombination davon sein. In einigen Ausführungsformen ist das Speicherteilsystem (110) ein Datenspeichersystem. Ein Beispiel für ein Datenspeichersystem ist ein SSD. In anderen Ausführungsformen ist das Speicherteilsystem (110) ein Speichermodul. Beispiele für ein Speichermodul beinhalten ein DIMM, NVDIMM und NVDIMM-P. In einigen Ausführungsformen ist das Speicherteilsystem (110) ein hybrides Speicher-/Datenspeicherteilsystem.
-
Im Allgemeinen kann die Rechenumgebung ein Host-System (120) beinhalten, das das Speicherteilsystem (110) verwendet. Das Host-System (120) kann beispielsweise Daten in das Speicherteilsystem (110) schreiben und Daten aus dem Speicherteilsystem (110) lesen.
-
Das Host-System (120) kann Teil einer Rechenvorrichtung sein, wie etwa eines Desktop-Computers, Laptop-Computers, Netzwerkservers, einer mobilen Vorrichtung oder einer anderen derartigen Rechenvorrichtung, die einen Speicher und eine Verarbeitungsvorrichtung beinhaltet. Das Host-System (120) kann das Speicherteilsystem (110) beinhalten oder an dieses gekoppelt sein, sodass das Host-System (120) Daten aus dem Speicherteilsystem (110) lesen oder in dieses schreiben kann. Das Host-System (120) kann über eine physische Host-Schnittstelle an das Speicherteilsystem (110) gekoppelt sein. Im hierin verwendeten Sinne bezieht sich „gekoppelt an“ im Allgemeinen auf eine Verbindung zwischen Komponenten, die eine indirekte Kommunikationsverbindung oder eine direkte Kommunikationsverbindung (z. B. ohne dazwischenliegende Komponenten) sein kann, egal ob drahtgebunden oder drahtlos, was Verbindungen wie etwa elektrische, optische, magnetische, usw. beinhaltet. Beispiele für eine physische Host-Schnittstelle beinhalten, ohne darauf beschränkt zu sein, eine SATA-Schnittstelle (Serial Advanced Technology Attachment), eine PCIe-Schnittstelle (Peripheral Component Interconnect Express), eine USB-Schnittstelle (Universal Serial Bus), Fibre Channel und SCSI (Serial Attached SCSI) (SAS), einen DDR-Speicherbus (Double Data Rate) usw. Die physische Host-Schnittstelle kann verwendet werden, um Daten und/oder Befehle zwischen dem Host-System (120) und dem Speicherteilsystem (110) zu übertragen. Das Host-System (120) kann ferner eine NVM-Express(NVMe)-Schnittstelle nutzen, um auf die nichtflüchtigen Medien (109) zuzugreifen, wenn das Speicherteilsystem (110) durch die PCIe-Schnittstelle mit dem Host-System (120) gekoppelt ist. Die physische Host-Schnittstelle kann eine Schnittstelle zum Weiterleiten von Steuerungs-, Adress-, Daten- und anderen Signalen zwischen dem Speicherteilsystem (110) und dem Host-System (120) bereitstellen.1 veranschaulicht ein Speicherteilsystem (110) als ein Beispiel. Im Allgemeinen kann das Host-System (120) über eine selbe Kommunikationsverbindung, mehrere getrennte Kommunikationsverbindungen und/oder eine Kombination von Kommunikationsverbindungen auf mehrere Speicherteilsysteme zugreifen.
-
Das Host-System (120) beinhaltet eine Verarbeitungsvorrichtung (118) und eine Steuerung (116). Die Verarbeitungsvorrichtung (118) des Host-Systems (120) kann zum Beispiel ein Mikroprozessor, eine Zentraleinheit (CPU), ein Verarbeitungskern eines Prozessors, eine Ausführungseinheit usw. sein. In einigen Fällen kann die Steuerung (116) als eine Speichersteuerung, eine Speicherverwaltungseinheit und/oder ein Initiator bezeichnet sein. In einem Beispiel steuert die Steuerung (116) die Kommunikationen über einen Bus, der zwischen dem Host-System (120) und dem Speicherteilsystem (110) gekoppelt ist.
-
Im Allgemeinen kann die Steuerung (116) Befehle oder Anforderungen an das Speicherteilsystem (110) für den gewünschten Zugriff auf die nichtflüchtigen Medien (109) senden. Die Steuerung (116) kann ferner einen Schnittstellenschaltkreis beinhalten, um mit dem Speicherteilsystem (110) zu kommunizieren. Der Schnittstellenschaltkreis kann von dem Speicherteilsystem (110) empfangene Antworten in Informationen für das Host-System (120) umwandeln.
-
Die Steuerung (116) des Host-Systems (120) kann mit einer Steuerung (115) des Speicherteilsystems (110) kommunizieren, um Vorgänge wie etwa das Lesen von Daten, das Schreiben von Daten oder das Löschen von Daten in den nichtflüchtigen Medien (109) und andere derartige Vorgänge durchzuführen. In einigen Fällen ist die Steuerung (116) im selben Gehäuse wie die Verarbeitungsvorrichtung (118) integriert. In anderen Fällen ist die Steuerung (116) von dem Gehäuse der Verarbeitungsvorrichtung (118) getrennt. Der Steuerung (116) und/oder die Verarbeitungsvorrichtung (118) können Hardware wie etwa eine oder mehrere integrierte Schaltungen und/oder diskrete Komponenten, einen Pufferspeicher, einen Cache-Speicher oder eine Kombination davon beinhalten. Die Steuerung (116) und/oder die Verarbeitungsvorrichtung (118) können ein Mikrocontroller, eine Logikschaltung für spezielle Zwecke (z. B. ein feldprogrammierbares Gate-Array (FPGA), eine anwendungsspezifische integrierte Schaltung (application specific integrated circuit - ASIC) usw.) oder ein anderer geeigneter Prozessor sein.
-
Die nichtflüchtigen Medien (109) können eine beliebige Kombination der unterschiedlichen Typen von nichtflüchtigen Speicherkomponenten beinhalten. In einigen Fällen können auch flüchtige Speicherkomponenten verwendet werden. Ein Beispiel für nichtflüchtige Speicherkomponenten beinhaltet einen Flash-Speicher vom Negativ-Und (NAND)-Typ. Eine Speicherkomponente in den Medien (109) kann ein oder mehrere Arrays von Speicherzellen beinhalten, wie etwa Single-Level-Zellen (SLC) oder Multi-Level-Zellen (MLC) (z. B. Triple-Level-Zellen (TLC) oder Quad-Level-Zellen (QLC). In einigen Ausführungsformen kann eine bestimmte Speicherkomponente sowohl einen SLC-Abschnitt als auch einen MLC-Abschnitt der Speicherzellen beinhalten. Jede der Speicherzellen kann ein oder mehrere Datenbits (z. B. Datenblöcke) speichern, die durch das Host-System (120) verwendet werden. Auch wenn nichtflüchtige Speicherkomponenten wie ein Flash-Speicher vom NAND-Typ beschrieben werden, können die in den nichtflüchtigen Medien (109) verwendeten Speicherkomponenten auf jedem anderen Speichertyp basieren. Ferner kann ein flüchtiger Speicher verwendet werden. In einigen Ausführungsformen können die Speicherkomponenten in den Medien (109) Direktzugriffsspeicher (RAM), Festwertspeicher (ROM), dynamischen Direktzugriffsspeicher (DRAM), synchronen dynamischen Direktzugriffsspeicher (SDRAM), Phasenwechselspeicher (Phase Change Memory - PCM), Magneto-Direktzugriffsspeicher (MRAM), Spin Transfer Torque (STT)-MRAM, ferroelektrischen Direktzugriffsspeicher (FeTRAM), ferroelektrischen RAM (FeRAM), Conductive Bridging RAM (CBRAM), resistiven Direktzugriffsspeicher (RRAM), Oxidbasierten RRAM (OxRAM), Negativ-Oder (NOR) Flash-Speicher, elektrisch löschbaren programmierbarer Festwertspeicher (EEPROM), Nanodraht-basierten nichtflüchtigen Speicher, Speicher mit Memristor-Technologie oder ein Kreuzungspunkt-Array von nichtflüchtigen Speicherzellen oder beliebige Kombinationen davon beinhalten, ohne darauf beschränkt zu sein. Ein Kreuzpunkt-Array eines nichtflüchtigen Speichers kann eine Bitspeicherung basierend auf einer Änderung des Bahnwiderstands in Verbindung mit einem stapelbaren Kreuzgitter-Datenzugriffsarray durchführen. Im Gegensatz zu vielen Flashbasierten Speichern kann ein nichtflüchtiger Kreuzpunktspeicher außerdem einen Write-inplace-Vorgang durchführen, bei dem eine nichtflüchtige Speicherzelle programmiert werden kann, ohne dass die nichtflüchtige Speicherzelle zuvor gelöscht wird. Darüber hinaus können die Speicherzellen der Speicherkomponenten in den Medien (109) als Speicherseiten oder Datenblöcke gruppiert sein, die sich auf eine Einheit der Speicherkomponente beziehen können, die verwendet wird, um Daten zu speichern.
-
Die Steuerung (115) des Speicherteilsystems (110) kann mit den Speicherkomponenten in den Medien (109) kommunizieren, um Vorgänge wie das Lesen von Daten, das Schreiben von Daten oder das Löschen von Daten in den Speicherkomponenten und andere derartige Vorgänge (z. B. als Reaktion auf Befehle, die auf einem Befehlsbus durch die Steuerung (116) geplant sind) durchzuführen. Die Steuerung (115) kann Hardware wie etwa eine oder mehrere integrierte Schaltungen und/oder diskrete Komponenten, einen Pufferspeicher oder eine Kombination davon beinhalten. Die Steuerung (115) kann ein Mikrocontroller, eine Logikschaltung für spezielle Zwecke (z. B. ein feldprogrammierbares Gate-Array (FPGA), eine anwendungsspezifische integrierte Schaltung (ASIC) usw.) oder ein anderer geeigneter Prozessor sein. Die Steuerung (115) kann eine Verarbeitungsvorrichtung (117) (z. B. einen Prozessor) beinhalten, die dazu konfiguriert ist, Anweisungen auszuführen, die in einem lokalen Speicher (119) gespeichert sind. In dem veranschaulichten Beispiel beinhaltet der Pufferpeicher (119) der Steuerung (115) einen eingebetteten Speicher, der dazu konfiguriert ist, Anweisungen zum Durchführen verschiedener Prozesse, Vorgänge, Logikabläufe und Routinen zu speichern, die den Betrieb des Speicherteilsystems (110) steuern, was die Abwicklung der Kommunikationen zwischen dem Speicherteilsystem (110) und dem Host-System (120) beinhaltet. In einigen Ausführungsformen kann die Steuerung (115) Speicherregister beinhalten, in denen Speicherzeiger, abgerufene Daten usw. gespeichert sind. Die Steuerung (115) kann außerdem einen Festwertspeicher (ROM) zum Speichern von Mikrocode beinhalten. Während das beispielhafte Speicherteilsystem (110) in 1 so veranschaulicht wurde, dass es die Steuerung (115) beinhaltet, beinhaltet ein Speicherteilsystem (110) in einer anderen Ausführungsform der vorliegenden Offenbarung möglicherweise keine Steuerung (115) und kann stattdessen auf eine externe Steuerung zurückgreifen (z. B. bereitgestellt durch einen externen Host oder durch einen Prozessor oder eine Steuerung, die unabhängig von dem Speicherteilsystem sind).
-
Im Allgemeinen kann die Steuerung (115) Befehle oder Vorgänge von dem Host-System (120) empfangen und kann die Befehle oder Vorgänge in Anweisungen oder geeignete Befehle umwandeln, um den gewünschten Zugriff auf die Speicherkomponenten in den Medien (109) zu erreichen. Die Steuerung (115) kann auch für andere Vorgänge verantwortlich sein, wie etwa Verschleißausgleichsvorgänge, Speicherbereinigungsvorgänge, Fehlererkennungs- und Fehlerkorrekturcodevorgänge (error-correcting code - ECC), Verschlüsselungsvorgänge, Caching-Vorgänge und Adressübersetzungen zwischen einer logischen Blockadresse und einer physischen Blockadresse, die den Speicherkomponenten in den Medien (109) zugeordnet sind. Die Steuerung (115) kann ferner einen Host-Schnittstellenschaltkreis beinhalten, um mit dem Host-System (120) über die physische Host-Schnittstelle zu kommunizieren. Die Host-Schnittstellenschaltung kann die von dem Host-System empfangenen Befehle in Befehlsanweisungen umwandeln, um auf die Speicherkomponenten in den Medien (109) zuzugreifen, sowie die den Speicherkomponenten zugeordneten Antworten in Informationen für das Host-System (120) umwandeln.
-
Das Speicherteilsystem (110) kann außerdem zusätzliche Schaltkreise oder Komponenten beinhalten, die nicht veranschaulicht sind. In einigen Ausführungsformen kann das Speicherteilsystem (110) einen Cache oder Pufferspeicher (z. B. DRAM) und einen Adressschaltkreis (z. B. einen Zeilendecodierer und einen Spaltendecodierer) beinhalten, die eine Adresse von der Steuerung (115) empfangen und die Adresse decodieren können, um auf die Speicherkomponenten in den Medien (109) zuzugreifen.
-
Das Rechensystem beinhaltet eine Datenvorabrufeinrichtung (113) in dem Speicherteilsystem (110), die Daten aus den nichtflüchtigen Medien (109) für vorhergesagte Befehle mit starker Auswirkung in den Pufferspeicher (119) laden kann. Die vorhergesagten Befehle mit starker Auswirkung können eine Erhöhung der Ausführungslatenz anderer Befehle um mehr als einen Schwellenbetrag verursachen, wenn die Daten nicht vor der Ausführung der Befehle mit starker Auswirkung in den Pufferspeicher (119) vorabgerufen werden.
-
In einigen Ausführungsformen beinhaltet die Steuerung (115) in dem Speicherteilsystem (110) mindestens einen Teil der Datenvorabrufeinrichtung (113). In anderen Ausführungsformen oder in einer Kombination beinhaltet die Steuerung (116) und/oder die Verarbeitungsvorrichtung (118) in dem Host-System (120) mindestens einen Teil der Datenvorabrufeinrichtung (113). Zum Beispiel können die Steuerung (115), die Steuerung (116) und/oder die Verarbeitungsvorrichtung (118) einen Logikschaltkreis beinhalten, der die Datenvorabrufeinrichtung (113) implementiert. Zum Beispiel kann die Steuerung (115) oder die Verarbeitungsvorrichtung (118) (Prozessor) des Host-Systems (120) konfiguriert sein, um Anweisungen, die im Speicher gespeichert sind, zum Ausführen der Vorgänge der Datenvorabrufeinrichtung (113) auszuführen. In einigen Ausführungsformen ist die Datenvorabrufeinrichtung (113) in einem integrierten Schaltungschip implementiert, der in dem Speicherteilsystem (110) angeordnet ist. In anderen Ausführungsformen ist die Datenvorabrufeinrichtung (113) Teil eines Betriebssystems des Host-Systems (120), eines Vorrichtungstreibers oder einer Anwendung.
-
Das Speicherteilsystem (110) kann eine Warteschlange (123) für Befehle einer Kategorie und eine weitere Warteschlange (125) für Befehle einer anderen Kategorie aufweisen. Beispielsweise kann die Warteschlange (123) für typische Eingabe-/Ausgabebefehle konfiguriert sein, wie etwa Lesebefehle und Schreibbefehle. Die Warteschlange (125) kann für Infrastrukturbefehle konfiguriert sein, die keine typischen Eingabe-/Ausgabebefehle sind. Einige der Infrastrukturbefehle können Befehle mit starker Auswirkung sein, die mehr als einen Schwellenbetrag an Latenzerhöhung bei der Ausführung gewisser Befehle in der Warteschlange (123) verursachen. Das Speicherteilsystem (110) kann eine oder mehrere Abschlusswarteschlangen (121) beinhalten, um die Ergebnisse der Ausführung von Befehlen in den Befehlswarteschlangen (123 und 125) an das Host-System (120) zu berichten. In einigen Implementierungen können eine oder mehrere Warteschlangen als Reaktion auf Befehle von dem Host-System (120) erstellt werden. Somit ist das Speicherteilsystem (110) im Allgemeinen nicht auf eine bestimmte Anzahl von Warteschlangen beschränkt, die in 1 veranschaulicht ist.
-
Die Datenvorabrufeinrichtung (113) ist konfiguriert, um einige der Befehle der Kategorie in der Warteschlange (125) als Befehle mit starker Auswirkung vorherzusagen/zu klassifizieren. Bevor ein Befehl mit starker Auswirkung aus der Befehlswarteschlange (125) zur Ausführung geladen wird, ist die Datenvorabrufeinrichtung (113) so konfiguriert, dass sie Daten, die möglicherweise durch den Befehl mit starker Auswirkung verwendet werden, aus den nichtflüchtigen Medien (109) in den Pufferspeicher (119) hochlädt. Das Hochladen der Daten zur Vorbereitung der Ausführung des Befehls mit starker Auswirkung kann durchgeführt werden, um Ressourcen zu verwenden, die bei der Ausführung von Befehlen aus der Warteschlange (123) nicht verwendet werden, um die Ressourcennutzung zu verbessern und die Gesamtauswirkung des Befehls mit starker Auswirkung zu reduzieren. Alternativ oder in Kombination kann das Hochladen der Daten zur Vorbereitung der Ausführung des Befehls mit starker Auswirkung durchgeführt werden, um seine Auswirkung auf die Ausführung mehrerer Befehle aus der Warteschlange (123) zu verteilen, sodass sich seine Auswirkung nicht auf einen oder mehrere Befehle konzentriert, die gleichzeitig mit der Ausführung des Befehls mit starker Auswirkung ausgeführt werden.
-
1 veranschaulicht ein Beispiel, bei dem bekanntermaßen Befehle mit starker Auswirkung in einer spezifischen Warteschlange (z. B. 125) sind. In anderen Implementierungen können verschiedene Kategorien von Befehlen in einer selben Warteschlange gemischt sein. Beispielsweise kann ein Infrastrukturbefehl in einigen Systemen in eine selbe Warteschlange wie Nicht-Infrastrukturbefehle gestellt werden; und die Techniken der vorliegenden Offenbarung können auch verwendet werden, um die Befehle mit starker Auswirkung vorherzusagen und Daten für die Befehle mit starker Auswirkung in den Pufferspeicher vorabzurufen. Somit ist die Anwendung der Techniken der vorliegenden Offenbarung nicht auf eine spezifische Befehlswarteschlangenstruktur beschränkt.
-
2 veranschaulicht ein System, das konfiguriert ist, um ein Vorhersagemodell (131) zu trainieren, um Befehle zu identifizieren, die eine erhöhte Latenz bei der Ausführung anderer Befehle verursachen können.
-
Beispielsweise kann das Vorhersagemodell (131) der 2 in der Datenvorabrufeinrichtung (113) in einem Speicherteilsystem (110) der 1 konfiguriert sein.
-
In 2 wird ein Trainingssatz von Befehlen (137) verwendet, um die Muster von Latenzauswirkungen verschiedener Typen von Befehlen aufeinander zu erfassen. Der Trainingssatz von Befehlen (137) kann ein Beispiel für Befehle sein, die eine typische Arbeitsbelastung für ein Speicherteilsystem (110) oder die tatsächliche Arbeitsbelastung eines Speicherteilsystems (110) während eines bestimmten Nutzungszeitraums in einem Computersystem der 1 darstellen.
-
Während der Ausführung der Befehle in dem Trainingssatz im Speicherteilsystem (110) (z. B. ohne Verwendung der Datenvorabrufeinrichtung (113)) werden die Ausführungslatenzdaten (139) der Befehle im Trainingssatz gemessen. Die Ausführungslatenzdaten (139) können verwendet werden, um Befehle (135) mit starker Auswirkung zu identifizieren, die eine erhöhte Latenz verursachen.
-
Beispielsweise kann die durchschnittliche Ausführungslatenz von Befehlen eines bestimmten Typs aus den Ausführungslatenzdaten (139) berechnet werden. Für jeden entsprechenden Befehl im Trainingssatz kann die erhöhte Latenz für die Ausführung des jeweiligen Befehls aus dem Unterschied zwischen der tatsächlichen Ausführungslatenz des Befehls und der durchschnittlichen Ausführungslatenz von Befehlen, die vom selben Typ wie der Befehl sind, berechnet werden. Wenn die Latenzerhöhung über einem Schwellenwert liegt, wird davon ausgegangen, dass der Befehl eine starke Auswirkung erfahren hat. In einem Zeitfenster der Ausführung des Befehls, das eine starke Auswirkung auf die Latenz erfahren hat, können andere Befehle, die in dem Zeitfenster und/oder gleichzeitig mit der Ausführung des Befehls ausgeführt werden, untersucht werden, um einen Befehl mit starker Auswirkung zu identifizieren, der die starke Auswirkung verursacht. Beispielsweise kann ein in dem Zeitfenster ausgeführter Infrastrukturbefehl als Quelle der starken Auswirkung identifiziert werden, und somit kann der Infrastrukturbefehl als ein Befehl mit starker Auswirkung identifiziert werden. Beispielsweise kann ein Befehl einer bestimmten Kategorie, der in dem Zeitfenster ausgeführt wird, als Quelle der starken Auswirkung identifiziert werden; und somit kann der Befehl als ein Befehl mit starker Auswirkung identifiziert werden. Beispielsweise kann ein Befehl eines Typs mit einer durchschnittlichen Ausführungslatenz über einem Schwellenwert, der in dem Zeitfenster ausgeführt wird, als Quelle der starken Auswirkung identifiziert werden; und somit kann der Befehl als ein Befehl mit starker Auswirkung identifiziert werden.
-
In 2 ist das Vorhersagemodell (131) konfiguriert, um Befehle (141) mit starker Auswirkung, für die vorhergesagt wird, dass sie eine erhöhte Latenz verursachen, aus dem Trainingssatz von Befehlen zu identifizieren. Das Vorhersagemodell (131) berechnet die Vorhersagen (141) basierend auf Parametern der Befehle in dem Trainingssatz und/oder der Reihenfolge, in der die Befehle in dem Trainingssatz erscheinen. Die Parameter können die Typen der Befehle in dem Trainingssatz und/oder die Adressbereiche/- regionen beinhalten, auf die durch die Befehle zugegriffen wird. Überwachtes maschinelles Lernen (133) wird auf das Vorhersagemodell (131) angewendet, um die Unterschiede zwischen den aus den Ausführungslatenzdaten (139) identifizierten Befehlen (135) mit starker Auswirkung und den durch das Vorhersagemodell (131) vorhergesagten Befehlen (141) mit starker Auswirkung zu reduzieren oder zu minimieren.
-
Nach dem Training des Vorhersagemodells (131) unter Verwendung einer Technik des überwachten maschinellen Lernens (133) kann das Vorhersagemodells (131) in einer Datenvorabrufeinrichtung (113) eines Speicherteilsystems (110) der 1 und/oder einem System, wie in 3 veranschaulicht, verwendet werden.
-
3 veranschaulicht ein System mit einem Vorhersagemodell (131), um Daten von Befehlen aus nichtflüchtigen Medien (109) in einen Pufferspeicher (119) vorabzurufen. Zum Beispiel kann das System der 3 das Speicherteilsystem (110) der 1 sein.
-
In 3 werden Befehle in einer oder mehreren Warteschlangen (z. B. 123 und/oder 125) als Eingaben in das Vorhersagemodell (131) bereitgestellt, um Vorhersagen von Befehlen (141) mit starker Auswirkung, die eine erhöhte Latenz verursachen können, zu generieren. Eine Datenvorabrufeinrichtung (113) ist konfiguriert, um vor der tatsächlichen Ausführung der durch das Vorhersagemodell (131) vorhergesagten Befehle (141) mit starker Auswirkung Daten aus nichtflüchtigen Medien (109) in den Pufferspeicher (119) zu laden.
-
Typischerweise dauert der Zugriff auf die nichtflüchtigen Medien (109) für eine Datenmenge länger als der Zugriff auf den Pufferspeicher (119). Ferner kann das System weniger Ressourcen zum Zugreifen auf die nichtflüchtigen Medien (109) zum gleichzeitigen Ausführen mehrerer Befehle haben als zum Zugreifen auf den Pufferspeicher (119). Somit kann, wenn die durch einen Befehl mit starker Auswirkung zu verwendenden Daten in den Pufferspeicher (119) vorabgerufen werden, ihre Auswirkung auf die gleichzeitige Ausführung anderer Befehle reduziert werden.
-
4 zeigt ein Verfahren zum Trainieren eines Vorhersagemodells, um Befehle zu identifizieren, die mit hoher Wahrscheinlichkeit eine signifikante Verzögerung bei der Ausführung anderer Befehle verursachen. Zum Beispiel kann das Verfahren der 4 in einem Computersystem der 1 unter Verwendung der in Verbindung mit 2 erörterten Technik implementiert sein.
-
Bei Block 151 werden erste Befehle (z. B. 137) in einem Datenspeichersystem ausgeführt.
-
Die ersten Befehle können ein Beispiel von Befehlen sein, die in Datenspeichersystemen mit derselben oder ähnlichen Struktur wie das Datenspeichersystem typisch sind. Optional können die ersten Befehle die reale Arbeitslast des Datenspeichersystems in einem Zeitraum sein.
-
Bei Block 153 misst das Datenspeichersystem (oder ein mit dem Datenspeichersystem verbundener Host) die Ausführungslatenz der ersten Befehle. Beispielsweise kann die Ausführungslatenz eines Befehls als die Zeitdauer zwischen dem Laden des Befehls aus einer Warteschlange zur Ausführung und dem Abschluss der Ausführung des Befehls in dem Datenspeichersystem gemessen werden. Ein typischer Befehl lädt Daten von einer in dem Befehl angegebenen Adresse oder schreibt Daten an eine in dem Befehl angegebene Adresse.
-
Bei Block 155 wird eine Rechenvorrichtung verwendet, um zweite Befehle (z. B. 135) zu identifizieren, die bei einigen der ersten Befehle eine Erhöhung der Ausführungslatenz um mehr als einen Schwellenbetrag bewirken. Die Rechenvorrichtung kann ein Computer sein, der von dem Datenspeichersystem und/oder dem Host-System des Datenspeichersystems oder dem Host-System des Datenspeichersystems oder der Steuerung des Datenspeichersystems getrennt ist.
-
Zum Beispiel können die zweiten Befehle identifiziert werden, indem die durchschnittliche Latenz für unterschiedliche Befehlstypen berechnet wird, betroffene Befehle identifiziert werden, deren Ausführungslatenz die Durchschnittswerte ihrer jeweiligen Befehlstypen um mehr als einen Schwellenbetrag überschreitet, und die zweiten Befehle identifiziert werden, die gleichzeitig mit den betroffenen Befehlen ausgeführt wurden und die eine vorbestimmte Eigenschaft aufweisen. Beispielsweise kann die vorbestimmte Eigenschaft eine vordefinierte Befehlskategorie (z. B. Infrastrukturbefehle), Befehle eines Typs mit einer durchschnittlichen Latenz, die über einem Schwellenwert liegt, und/oder andere Attribute sein.
-
Bei Block 157 identifiziert die Rechenvorrichtung dritte Befehle (z. B. 141) unter Verwendung eines Vorhersagemodells (131) basierend auf den ersten Befehlen.
-
Bei Block 159 wendet die Rechenvorrichtung überwachtes maschinelles Lernen (133) auf das Vorhersagemodell (131) an, um Unterschiede zwischen den zweiten Befehlen (z. B. 135) und den dritten Befehlen (141) zu reduzieren.
-
5 zeigt ein Verfahren zum Vorabrufen von Daten für Befehle mit starker Auswirkung basierend auf den Vorhersagen eines Vorhersagemodells (z. B. 131), das unter Verwendung des Verfahrens der 4 trainiert werden kann.
-
Zum Beispiel kann das Verfahren der 5 in einem Computersystem der 1 unter Verwendung der in Verbindung mit 3 erörterten Technik implementiert sein.
-
Bei Block 171 empfängt eine Datenvorabrufeinrichtung (113) eines Datenspeichersystems (z. B. 110) eine Identifizierung von Befehlen, die zur Ausführung in dem Datenspeichersystem in eine Warteschlange eingereiht sind.
-
Bei Block 173 stellt die Datenvorabrufeinrichtung (113) die Befehle als Eingabe in das Vorhersagemodell (131) bereit.
-
Bei Block 175 identifiziert die Datenvorabrufeinrichtung (113) unter Verwendung des Vorhersagemodells (131) und basierend auf den Befehlen als Eingabe mindestens einen Befehl zum Vorabrufen.
-
Bevor der Befehl aus einer Warteschlange zur Ausführung in dem Datenspeichersystem geladen wird, lädt die Datenvorabrufeinrichtung (113) bei Block 177 mindestens einen Teil der Daten, der bei der Ausführung des Befehls verwendet werden soll, und speichert bei Block 179 den geladenen Teil der Daten in einem Pufferspeicher (119) des Datenspeichersystems.
-
Gleichzeitig lädt eine Steuerung (115) des Datenspeichersystems einige der in der Warteschlange eingereihten Befehle bei Block 181 und führt die geladenen Befehle bei Block 183 aus.
-
Vorzugsweise werden das Laden (177) und das Speichern (179) des Teils der Daten für den vorabgerufenen Befehl unter Verwendung von Ressourcen durchgeführt, die bei der gleichzeitigen Ausführung (183) der Befehle nicht benötigt/verwendet werden. Eine solche Anordnung reduziert die Gesamtauswirkung des Befehls auf andere Befehle insgesamt. Alternativ oder in Kombination wird die Auswirkung des Ladens (177) und Speicherns (179) des Teils der Daten für den vorabgerufenen Befehl auf die Ausführung (183) vieler Befehle verteilt, sodass die Auswirkung auf jeden einzelnen Befehl reduziert und gering ist.
-
Anschließend lädt die Steuerung (115) des Datenspeichersystems bei Block 185 den Befehl aus einer Warteschlange und führt bei Block 187 den Befehl unter Verwendung mindestens des Teils der Daten in dem Pufferspeicher aus.
-
Da sich mindestens der Teil der Daten in dem Pufferspeicher befindet, hat die Ausführung des Befehls weniger Auswirkung auf die Ausführungslatenz anderer Befehle, die gleichzeitig mit der Ausführung des Befehls ausgeführt werden.
-
Optional kann die Datenvorabrufeinrichtung (113) die in 2 veranschaulichte und/oder in 4 erörterte Funktionalität des überwachten maschinellen Lernens (133) beinhalten. Zum Beispiel kann die Datenvorabrufeinrichtung (113) die Ausführungslatenz (139) von Befehlen messen, Befehle (135) identifizieren, die eine erhöhte Latenz verursachen, und das überwachte maschinelle Lernen (133) verwenden, um die Anzahl der Befehle zu minimieren, für die vorhergesagt wird, dass sie keine erhöhte Latenz (141) verursachen, für die aber basierend auf den gemessenen Ausführungslatenzdaten (139) herausgefunden wird, dass sie eine erhöhte Latenz (135) verursacht haben.
-
In einigen Implementierungen beinhaltet ein Kommunikationskanal zwischen der Verarbeitungsvorrichtung (118) und einem Speicherteilsystem ein Computernetzwerk, wie etwa ein lokales Netzwerk, ein drahtloses lokales Netzwerk, ein drahtloses persönliches Netzwerk, ein Mobilfunk-Kommunikationsnetz, eine drahtlose Breitband-Hochgeschwindigkeits-Kommunikationsverbindung mit ständiger Verbindung (z. B. eine aktuelle oder zukünftige Generation einer Mobilnetzverbindung); und die Verarbeitungsvorrichtung (118) und das Speicherteilsystem können so konfiguriert sein, dass sie unter Verwendung von Datenspeicherverwaltungs- und -nutzungsbefehlen ähnlich denen im NVMe-Protokoll miteinander kommunizieren.
-
Ein Speicherteilsystem kann im Allgemeinen nichtflüchtige Speichermedien aufweisen. Beispiele für nichtflüchtige Speichermedien beinhalten Speicherzellen, die in einer integrierten Schaltung gebildet sind, und magnetisches Material, das auf starren Platten beschichtet ist. Nichtflüchtige Speichermedien können die darin gespeicherten Daten/Informationen bewahren, ohne Strom zu verbrauchen. Speicherzellen können mit verschiedenen Speicher-/Datenspeichertechnologien implementiert werden, wie etwa NAND-Logikgatter, NOR-Logikgatter, Phasenwechselspeicher (PCM), Magnetspeicher (MRAM), resistivem Direktzugriffsspeicher, Kreuzpunktspeicher und Speichervorrichtungen (z. B. 3D-XPoint-Speicher) Eine Kreuzpunkt-Speichervorrichtung verwendet transistorlose Speicherelemente, von denen jedes eine Speicherzelle und einen Selektor aufweist, die als eine Spalte zusammengestapelt sind. Speicherelementspalten sind über zwei senkrechte Lagen von Draht verbunden, wobei sich eine Lage oberhalb der Speicherelementspalten und die andere unterhalb der Speicherelementspalten befindet. Jedes Speicherelement kann einzeln an einem Kreuzpunkt eines Drahtes auf jeder der beiden Schichten ausgewählt werden. Kreuzpunkt-Speichervorrichtungen sind schnell und nichtflüchtig und können als einheitlicher Speicherpool für Verarbeitung und Speicherung verwendet werden.
-
Die Steuerung (z. B. 115) eines Speicherteilsystems (z. B. 110) kann Firmware ausführen, um Vorgänge als Reaktion auf die Kommunikationen von der Verarbeitungsvorrichtung (118) durchzuführen. Firmware ist im Allgemeinen eine Art Computerprogramm, das die Steuerung, Überwachung und Datenmanipulation von technischen Computervorrichtungen ermöglicht.
-
Einige Ausführungsformen, die den Betrieb der Steuerung (115) und/oder der Datenvorabrufeinrichtung (113) involvieren, können unter Verwendung von Computeranweisungen implementiert sein, die durch die Steuerung (115) ausgeführt werden, wie etwa die Firmware der Steuerung (115). In einigen Fällen können Hardwareschaltungen verwendet werden, um mindestens einige der Funktionen zu implementieren. Die Firmware kann zunächst in den nichtflüchtigen Speichermedien oder einer anderen nichtflüchtigen Vorrichtung gespeichert und in den flüchtigen DRAM und/oder den Cache-Speicher im Prozessor zur Ausführung durch die Steuerung (115) hochgeladen werden.
-
Ein nichttransitorisches computerlesbares Medium kann verwendet werden, um Anweisungen der Firmware eines Speicherteilsystems (z. B. 110) zu speichern. Wenn die Anweisungen durch die Steuerung (115) und/oder die Verarbeitungsvorrichtung (117) ausgeführt werden, veranlassen die Anweisungen die Steuerung (115) und/oder die Verarbeitungsvorrichtung (117), ein vorstehend erörtertes Verfahren durchzuführen.
-
6 veranschaulicht eine beispielhafte Maschine eines Computersystems (200), in dem ein Satz von Anweisungen ausgeführt werden kann, um die Maschine zu veranlassen, eines oder mehrere der hierin erörterten Verfahren durchzuführen. In einigen Ausführungsformen kann das Computersystem (200) einem Host-System entsprechen (z. B. dem Host-System (120) der 1), das ein Speicherteilsystem (z. B. das Speicherteilsystem (110) der 1) beinhaltet, mit diesem gekoppelt ist oder dieses nutzt, oder verwendet werden kann, um die Vorgänge einer Datenvorabrufeinrichtung (113) durchzuführen (z. B. um Anweisungen zum Durchführen von Vorgängen auszuführen, die der unter Bezugnahme auf 1-5 beschriebenen Datenvorabrufeinrichtung (113) entsprechen). In alternativen Ausführungsformen kann die Maschine mit anderen Maschinen in einem LAN, einem Intranet, einem Extranet und/oder dem Internet verbunden (z. B. vernetzt) sein. Die Maschine kann in der Funktion eines Servers oder einer Client-Maschine in einer Client-Servernetzwerkumgebung, als ein Peer-Computer in einem Peer-to-Peer-Netzwerk (oder verteiltem Netzwerk), oder als ein Server oder ein Client-Computer in einer Cloudcomputinginfrastruktur oder -umgebung betrieben werden.
-
Die Maschine kann ein Personalcomputer (PC), ein Tablet-PC, eine Settopbox (STB), ein persönlicher digitaler Assistant (PDA), ein Mobiltelefon, eine Webanwendung, ein Netzwerkrouter, ein Switch oder eine Bridge oder eine beliebige Maschine sein, die in der Lage ist, Anweisungen (aufeinanderfolgend oder anderweitig) auszuführen, die Maßnahmen festlegen, die von der Maschine unternommen werden sollen. Ferner ist der Begriff „Maschine“, obwohl eine einzelne Maschine veranschaulicht ist, außerdem so zu verstehen, dass er eine beliebige Zusammenstellung von Maschinen beinhaltet, die einzeln oder gemeinsam einen Satz (oder mehrere Sätze) von Anweisungen ausführen, um eine beliebige oder mehrere der in dieser Schrift erörterten Vorgehensweisen auszuführen.
-
Das beispielhafte Computersystem (200) beinhaltet eine Verarbeitungsvorrichtung (202), einen Hauptspeicher (204) (z. B. einen Festwertspeicher (ROM), einen Flash-Speicher, einen dynamischen Direktzugriffsspeicher (DRAM) wie etwa einen synchronen DRAM (SDRAM) oder einen Rambus-DRAM (RDRAM), einen statischen Direktzugriffsspeicher (SRAM) usw.) und ein Datenspeichersystem (218), die über einen Bus (230) (der mehrere Busse beinhalten kann) miteinander kommunizieren.
-
Die Verarbeitungsvorrichtung (202) stellt eine oder mehrere Allzweckverarbeitungsvorrichtungen dar, wie etwa einen Mikroprozessor, eine Zentraleinheit oder dergleichen. Insbesondere kann die Verarbeitungsvorrichtung ein Mikroprozessor für die Berechnung eines komplexen Anweisungssatzes (complex instruction set computing - CISC), ein Mikroprozessor für die Berechnung eines verringerten Anweisungssatzes (reduced instruction set computing - RISC), ein Mikroprozessor für sehr lange Anweisungswörter (very long instruction word - VLIW) oder ein Prozessor, der andere Anweisungssätze implementiert, oder Prozessoren sein, die eine Kombination von Anweisungssätzen implementieren. Die Verarbeitungsvorrichtung (202) kann außerdem eine oder mehrere Spezialverarbeitungsvorrichtungen sein, wie etwa eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA), ein Prozessor für digitale Signale (digital signal processor - DSP), ein Netzwerkprozessor oder dergleichen. Die Verarbeitungsvorrichtung (202) ist dazu konfiguriert, Anweisungen (226) zum Durchführen der hierin erörterten Vorgänge und Schritte auszuführen. Das Computersystem (200) kann ferner eine Netzwerkschnittstellenvorrichtung (208) beinhalten, um über das Netzwerk (220) zu kommunizieren.
-
Das Datenspeichersystem (218) kann ein maschinenlesbares Speichermedium (224) (auch als ein computerlesbares Medium bekannt) beinhalten, auf dem ein oder mehrere Sätze von Anweisungen (226) oder Software gespeichert sind, die eine oder mehrere der hierin beschriebenen Vorgehensweisen oder Funktionen verkörpert. Die Anweisungen (226) können sich während ihrer Ausführung durch das Computersystem (200) außerdem vollständig oder mindestens teilweise in dem Hauptspeicher (204) und/oder in der Verarbeitungseinheit (202) befinden, wobei der Hauptspeicher (204) und die Verarbeitungseinheit (202) ebenfalls maschinenlesbare Medien darstellen. Das maschinenlesbare Speichermedium (224), das Datenspeichersystem (218) und/oder der Hauptspeicher (204) können dem Speicherteilsystem (110) der 1 entsprechen.
-
In einer Ausführungsform beinhalten die Anweisungen (226) Anweisungen zum Implementieren einer Funktionalität, die einer Datenvorabrufeinrichtung (113) (z. B. der unter Bezugnahme auf die 1-5 beschriebenen Datenvorabrufeinrichtung (113)) entspricht. Während das maschinenlesbare Speichermedium (224) in einer beispielhaften Ausführungsform als ein einzelnes Medium gezeigt ist, sollte der Begriff „maschinenlesbares Speichermedium“ ein einzelnes Medium oder mehrere Medien beinhalten, die den einen oder die mehreren Anweisungssätze speichern. Der Begriff „maschinenlesbares Medium“ ist außerdem so zu verstehen, dass er ein beliebiges Medium beinhaltet, das in der Lage ist, einen Satz von Anweisungen zur Ausführung durch die Maschine zu speichern oder zu kodieren und welche die Maschine veranlassen, eine oder mehrere der Vorgehensweisen der vorliegenden Offenbarung durchzuführen. Der Begriff „maschinenlesbares Medium“ ist dementsprechend so zu verstehen, dass er, ohne darauf beschränkt zu sein, Festkörperspeicher und optische Medien und magnetische Medien beinhaltet.
-
Einige Teile der vorhergehenden detaillierten Beschreibungen wurden hinsichtlich Algorithmen und symbolischen Darstellungen von Vorgängen an Datenbits innerhalb eines Computerspeichers dargestellt. Diese algorithmischen Beschreibungen und Darstellungen sind die Wege, die von Fachleuten der Datenverarbeitung verwendet werden, um die Substanz ihrer Arbeit einem anderen Fachmann am effektivsten zu vermitteln. Ein Algorithmus ist hier und im Allgemeinen konzipiert, eine selbstkonsistente Abfolge an Vorgängen zu sein, die zu einem gewünschten Ergebnis führt. Die Vorgänge sind diejenigen, die physische Manipulationen physischer Mengen erfordern. In der Regel, aber nicht zwingend, nehmen diese Mengen die Form von elektrischen oder magnetischen Signalen an, die dazu in der Lage sind, gespeichert, kombiniert, verglichen und anderweitig manipuliert zu werden. Es hat sich manchmal als praktisch erwiesen, hauptsächlich aus Gründen der gewöhnlichen Verwendung, diese Signale als Bits, Werte, Elemente, Symbole, Charakter, Begriffe, Zahlen oder dergleichen zu bezeichnen.
-
Es sollte jedoch berücksichtigt werden, dass all diese und ähnliche Begriffe mit den angemessenen physischen Mengen zu assoziieren sind und lediglich praktische Etiketten sind, die auf diese Mengen angewandt werden. Die vorliegende Offenbarung kann die Handlung und Prozesse eines Computersystems oder einer ähnlichen elektronischen Rechenvorrichtung betreffen, die Daten, die als physische (elektronische) Mengen innerhalb der Register und Speicher des Computersystems dargestellt sind, manipuliert und in andere Daten umwandelt, die ähnlich als physische Mengen innerhalb der Speicher oder Register oder anderer solcher Informationsspeichersysteme des Computersystems dargestellt sind.
-
Die vorliegende Offenbarung bezieht sich außerdem auf eine Einrichtung zum Durchführen der Vorgänge in dieser Schrift. Diese Einrichtung kann speziell für die beabsichtigten Zwecke konstruiert sein oder sie kann einen Allzweckcomputer beinhalten, der durch ein im Computer gespeichertes Computerprogramm wahlweise aktiviert oder neu konfiguriert wird. Ein derartiges Computerprogramm kann in einem computerlesbaren Speichermedium gespeichert werden, wie etwa, ohne darauf beschränkt zu sein, jede Art von Festplatte, was Disketten, optische Festplatten, CD-ROM und magnetisch-optische Festplatten, Nur-Lese-Speicher (ROM), Direktzugriffsspeicher (RAM), EPROM, EEPROM, magnetische oder optische Karten oder eine beliebige Art von Medien beinhaltet, die zum Speichern elektronischer Anweisungen geeignet und jeweils an einen Computersystembus gekoppelt sind.
-
Die in dieser Schrift vorgestellten Algorithmen und Anzeigen beziehen sich nicht grundsätzlich auf einen bestimmten Computer oder eine bestimmte andere Einrichtung. Verschiedene Allzwecksysteme können mit Programmen gemäß den in dieser Schrift enthaltenen Lehren verwendet werden, oder es kann sich als vorteilhaft erweisen, eine spezialisiertere Einrichtung zu konstruieren, um das Verfahren durchzuführen. Die Struktur für eine Reihe dieser Systeme wird wie in der nachfolgenden Beschreibung angegeben angezeigt. Zusätzlich wird die vorliegende Offenbarung nicht unter Bezugnahme auf eine bestimmte Programmiersprache beschrieben. Es versteht sich, dass eine Reihe von Programmiersprachen verwendet werden kann, um die hierin beschriebenen Lehren der Offenbarung umzusetzen.
-
Die vorliegende Offenbarung kann als ein Computerprogrammprodukt oder eine Software bereitgestellt sein, das/die ein maschinenlesbares Medium beinhalten kann, das darauf gespeicherte Anweisungen aufweist, die verwendet werden können, um ein Computersystem (oder andere elektronische Vorrichtungen) zu programmieren, um einen Prozess gemäß der vorliegenden Offenbarung durchzuführen. Ein maschinenlesbares Medium beinhaltet einen beliebigen Mechanismus zum Speichern von Informationen in einer Form, die durch eine Maschine (z. B. einem Computer) gelesen werden kann. In einigen Ausführungsformen beinhaltet ein maschinenlesbares (z. B. computerlesbares) Medium ein durch eine Maschine (z. B. einen Computer) lesbares Speichermedium, wie etwa einen Festwertspeicher („ROM“), einen Direktzugriffsspeicher („RAM“), magnetische Festplattenspeichermedien, optische Speichermedien, Flash-Speicherkomponenten usw.
-
In dieser Beschreibung können verschiedene Funktionen und Vorgänge so beschrieben sein, dass sie durch Computeranweisungen durchgeführt oder veranlasst werden, um die Beschreibung zu vereinfachen. Der Fachmann wird jedoch erkennen, dass mit solchen Ausdrücken gemeint ist, dass die Funktionen aus der Ausführung der Computeranweisungen durch eine oder mehrere Steuerungen oder einen oder mehrere Prozessoren, wie beispielsweise einen Mikroprozessor, resultieren. Alternativ oder in Kombination können die Funktionen und Vorgänge unter Verwendung von Spezialschaltkreisen mit oder ohne Softwareanweisungen implementiert sein, wie etwa unter Verwendung einer anwendungsspezifischen integrierten Schaltung (ASIC) oder eines feldprogrammierbaren Gate-Arrays (FPGA). Ausführungsformen können unter Verwendung festverdrahteter Schaltkreise ohne Softwareanweisungen oder in Kombination mit Softwareanweisungen implementiert sein. Somit sind die Techniken weder auf eine bestimmte Kombination von Hardware-Schaltung und Software noch auf eine bestimmte Quelle für die von dem Datenverarbeitungssystem ausgeführten Anweisungen beschränkt.
-
In der vorstehenden Beschreibung wurden Ausführungsformen der Offenbarung unter Bezugnahme auf spezifische beispielhafte Ausführungsformen davon beschrieben. Es versteht sich, dass verschiedene Modifikationen daran vorgenommen werden können, ohne vom weiteren Geist und Schutzumfang der Offenbarung abzuweichen, wie sie in den folgenden Patentansprüchen dargelegt sind. Die Beschreibung und die Zeichnungen sind dementsprechend in einem veranschaulichenden und nicht in einem einschränkenden Sinne zu verstehen.