DE112020001937T5 - Vorausschauender datenvorabruf in einer datenspeicher-vorrichtung - Google Patents

Vorausschauender datenvorabruf in einer datenspeicher-vorrichtung Download PDF

Info

Publication number
DE112020001937T5
DE112020001937T5 DE112020001937.3T DE112020001937T DE112020001937T5 DE 112020001937 T5 DE112020001937 T5 DE 112020001937T5 DE 112020001937 T DE112020001937 T DE 112020001937T DE 112020001937 T5 DE112020001937 T5 DE 112020001937T5
Authority
DE
Germany
Prior art keywords
instructions
data
data storage
execution
latency
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112020001937.3T
Other languages
English (en)
Inventor
Alex Frolikov
Zachary Andrew Pete Vogel
Joe Gil Mendes
Chandra Mouli Guda
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Micron Technology Inc filed Critical Micron Technology Inc
Publication of DE112020001937T5 publication Critical patent/DE112020001937T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/312In storage controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6022Using a prefetch buffer or dedicated prefetch cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Artificial Intelligence (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Ein Datenspeichersystem mit nichtflüchtigen Medien, einem Pufferspeicher, einer Verarbeitungsvorrichtung und einer Datenvorabrufeinrichtung. Die Datenvorabrufeinrichtung empfängt Befehle, die in dem Datenspeichersystem ausgeführt werden sollen, stellt die Befehle als Eingabe in ein Vorhersagemodell bereit, erhält mindestens einen zum Vorabholen identifizierten Befehl als Ausgabe von dem Vorhersagemodell, das die Befehle als Eingabe aufweist. Bevor der Befehl in der Datenspeichervorrichtung ausgeführt wird, lädt die Datenvorabrufeinrichtung mindestens einen Teil der Daten, der bei der Ausführung des Befehls verwendet werden soll, aus dem nichtflüchtigen Speicher; und speichert den Teil der Daten in dem Pufferspeicher. Das Laden und Speichern des Teils der Daten kann gleichzeitig mit der Ausführung vieler Befehle vor der Ausführung des Befehls durchgeführt werden, um die Latenzauswirkung des Befehls auf andere Befehle, die gleichzeitig mit der Ausführung des Befehls ausgeführt werden, zu reduzieren.

Description

  • 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.

Claims (20)

  1. Datenspeichersystem, das Folgendes umfasst: nichtflüchtige Medien; einen Pufferspeicher; eine Verarbeitungsvorrichtung, die an den Pufferspeicher und die nichtflüchtigen Medien gekoppelt ist; und eine Datenvorabrufeinrichtung, die zu Folgendem konfiguriert ist: Empfangen von in dem Datenspeichersystem auszuführenden Befehlen; Bereitstellen der Befehle als Eingabe in ein Vorhersagemodell; Identifizieren mindestens eines Befehls zum Vorabrufen unter Verwendung des Vorhersagemodells und basierend auf den Befehlen; und bevor der Befehl in der Datenspeichervorrichtung ausgeführt wird, Laden mindestens eines Teils der Daten, der bei der Ausführung des Befehls verwendet werden soll, aus dem nichtflüchtigen Speicher; und Speichern des Teils der Daten in dem Pufferspeicher.
  2. Datenspeichersystem nach Anspruch 1, wobei die Datenvorabrufeinrichtung konfiguriert ist, um das Vorhersagemodell periodisch zu verwenden.
  3. Datenspeichersystem nach Anspruch 1, wobei die Datenvorabrufeinrichtung konfiguriert ist, um die Befehle einer vorbestimmten Anzahl als Eingabe in das Vorhersagemodell während jeder Verwendung des Vorhersagemodells bereitzustellen.
  4. Datenspeichersystem nach Anspruch 1, wobei das Vorhersagemodell unter Verwendung einer Technik für überwachtes maschinelles Lernen trainiert ist.
  5. Datenspeichersystem nach Anspruch 4, wobei die Datenvorabrufeinrichtung konfiguriert ist, um die Latenzauswirkung des Befehls über mehr als eine Schwellenanzahl von Befehlen zu verteilen.
  6. Datenspeichersystem nach Anspruch 4, wobei die Datenvorabrufeinrichtung konfiguriert ist, um während der Ausführung einer Vielzahl von Befehlen den Teil der Daten aus dem nichtflüchtigen Speicher zu laden und den Teil der Daten in dem Pufferspeicher zu speichern, wobei Ressourcen verwendet werden, die nicht für die Ausführung der Vielzahl von Befehlen erforderlich sind.
  7. Datenspeichersystem nach Anspruch 4, wobei vorhergesagt wird, dass der Befehl mehr als einen Schwellenbetrag an Erhöhung der Latenz bei der Ausführung eines weiteren Befehls verursacht, wenn der Teil der Daten in dem Pufferspeicher nicht verfügbar ist.
  8. Datenspeichersystem nach Anspruch 4, wobei der Befehl durch das Vorhersagemodell zumindest teilweise basierend darauf identifiziert wird, dass der Befehl zu einer vorbestimmten Kategorie gehört.
  9. Datenspeichersystem nach Anspruch 8, wobei Befehle in der vorbestimmten Kategorie eine durchschnittliche Ausführungslatenz aufweisen, die länger als ein Schwellenwert ist.
  10. Datenspeichersystem nach Anspruch 9, das ferner zu Folgendem konfiguriert ist: Generieren von Latenzdaten von zweiten Befehlen, die in dem Datenspeichersystem ausgeführt werden; Identifizieren der dritten Befehle, die mehr als einen Schwellenbetrag an Erhöhung der Latenz bei der Ausführung von mindestens einem der zweiten Befehle verursachen, aus den Latenzdaten; und Trainieren des Vorhersagemodells unter Verwendung der Technik für überwachtes maschinelles Lernen, um Unterschiede zwischen dritten Befehlen, die unter Verwendung der Latenzdaten identifiziert wurden, und Befehlen, die durch das Vorhersagemodell aus den zweiten Befehlen identifiziert wurden, zu reduzieren.
  11. Verfahren, das Folgendes umfasst: Empfangen von Befehlen von einem Host-System in einer Steuerung eines Datenspeichersystems zur Ausführung in dem Datenspeichersystem; Bereitstellen der Befehle als Eingabe in ein Vorhersagemodell; Identifizieren mindestens eines Befehls zum Vorabrufen unter Verwendung des Vorhersagemodells und basierend auf den Befehlen als Eingabe; und bevor der Befehl in der Datenspeichervorrichtung ausgeführt wird, Laden mindestens eines Teils der Daten, der bei der Ausführung des Befehls verwendet werden soll, aus einem nichtflüchtigen Speicher der Datenspeichervorrichtung; und Speichern des Teils der Daten in einem Pufferspeicher des Datenspeichersystems.
  12. Verfahren nach Anspruch 11, wobei das Vorhersagemodell unter Verwendung einer Technik für überwachtes maschinelles Lernen trainiert wird.
  13. Verfahren nach Anspruch 12, das ferner Folgendes umfasst: Generieren von Ausführungslatenzdaten von ersten Befehlen; Identifizieren von zweiten Befehlen, die mehr als einen Schwellenbetrag an Erhöhung der Ausführungslatenz mindestens eines der ersten Befehle verursachen, aus den Latenzdaten; und Trainieren des Vorhersagemodells unter Verwendung der Technik für überwachtes maschinelles Lernen, um Unterschiede zwischen den zweiten Befehlen, die unter Verwendung der Latenzdaten identifiziert wurden, und dritten Befehlen, die durch das Vorhersagemodell aus den ersten Befehlen identifiziert wurden, zu reduzieren.
  14. Verfahren nach Anspruch 13, das ferner Folgendes umfasst: Berechnen von Durchschnittswerten der Ausführungslatenz unterschiedlicher Typen von Befehlen, und Vergleichen der Ausführungslatenz der ersten Befehle mit den Durchschnittswerten, um den mindestens einen der ersten Befehle zu identifizieren, der mehr als den Schwellenbetrag an Erhöhung der Ausführungslatenz aufweist.
  15. Verfahren nach Anspruch 14, das ferner Folgendes umfasst: Identifizieren der zweiten Befehle als Reaktion auf eine Bestimmung, dass die zweiten Befehle eine vorbestimmte Eigenschaft aufweisen und dass die zweiten Befehle gleichzeitig mit dem mindestens einen der ersten Befehle ausgeführt wurden.
  16. Verfahren nach Anspruch 15, wobei die vorbestimmte Eigenschaft einen vorbestimmten Befehlstyp, eine vorbestimmte Befehlskategorie oder eine durchschnittliche Ausführungslatenz, die über einem Schwellenwert liegt, oder eine beliebige Kombination davon beinhaltet.
  17. Verfahren nach Anspruch 12, das ferner Folgendes umfasst: Verteilen der Latenzauswirkung des Befehls über mehr als eine Schwellenanzahl von Befehlen.
  18. Verfahren nach Anspruch 12, das ferner Folgendes umfasst: Laden des Teils der Daten aus dem nichtflüchtigen Speicher und Speichern des Teils der Daten in dem Pufferspeicher während der Ausführung einer Vielzahl von Befehlen unter Verwendung von Ressourcen, die nicht für die Ausführung der Vielzahl von Befehlen verwendet werden.
  19. Nichttransitorisches Computerspeichermedium, das Anweisungen speichert, die bei Ausführung durch ein Rechensystem das Rechensystem dazu veranlassen, ein Verfahren durchzuführen, wobei das Verfahren Folgendes umfasst: Empfangen von Latenzdaten erster Befehle, die in einem Datenspeichersystem ausgeführt werden; Identifizieren von zweiten Befehlen, die mehr als einen Schwellenbetrag an Erhöhung der Ausführungslatenz mindestens eines der ersten Befehle verursachen, aus den Latenzdaten; und Trainieren eines Vorhersagemodells unter Verwendung der Technik für das überwachte maschinelle Lernen, um Unterschiede zwischen den zweiten Befehlen, die unter Verwendung der Latenzdaten identifiziert wurden, und dritten Befehlen, die durch das Vorhersagemodell aus den ersten Befehlen identifiziert wurden, zu reduzieren.
  20. Nichttransitorisches Computerspeichermedium nach Anspruch 19, das weitere Anweisungen speichert, die bei Ausführung durch ein Rechensystem das Rechensystem dazu veranlassen, das Verfahren durchzuführen, wobei das Verfahren ferner Folgendes umfasst: Empfangen von anstehenden Befehlen von einem Host-System in einer Steuerung eines Datenspeichersystems zur Ausführung in dem Datenspeichersystem; Bereitstellen der anstehenden Befehle als Eingabe in das Vorhersagemodell; Identifizieren mindestens eines fünften Befehls zum Vorabrufen unter Verwendung des Vorhersagemodells und basierend auf den anstehenden Befehlen als Eingabe; und bevor der fünfte Befehl in der Datenspeichervorrichtung ausgeführt wird, Laden mindestens eines Teils der Daten, der bei der Ausführung des fünften Befehls verwendet werden soll, aus einem nichtflüchtigen Speicher der Datenspeichervorrichtung; und Speichern des Teils der Daten in einem Pufferspeicher des Datenspeichersystems.
DE112020001937.3T 2019-04-15 2020-03-10 Vorausschauender datenvorabruf in einer datenspeicher-vorrichtung Pending DE112020001937T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/384,618 2019-04-15
US16/384,618 US10852949B2 (en) 2019-04-15 2019-04-15 Predictive data pre-fetching in a data storage device
PCT/US2020/021825 WO2020214276A1 (en) 2019-04-15 2020-03-10 Predictive data pre-fetching in a data storage device

Publications (1)

Publication Number Publication Date
DE112020001937T5 true DE112020001937T5 (de) 2022-01-13

Family

ID=72749059

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020001937.3T Pending DE112020001937T5 (de) 2019-04-15 2020-03-10 Vorausschauender datenvorabruf in einer datenspeicher-vorrichtung

Country Status (4)

Country Link
US (3) US10852949B2 (de)
CN (1) CN113692579B (de)
DE (1) DE112020001937T5 (de)
WO (1) WO2020214276A1 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11099789B2 (en) 2018-02-05 2021-08-24 Micron Technology, Inc. Remote direct memory access in multi-tier memory systems
US11416395B2 (en) 2018-02-05 2022-08-16 Micron Technology, Inc. Memory virtualization for accessing heterogeneous memory components
US10782908B2 (en) 2018-02-05 2020-09-22 Micron Technology, Inc. Predictive data orchestration in multi-tier memory systems
US10880401B2 (en) 2018-02-12 2020-12-29 Micron Technology, Inc. Optimization of data access and communication in memory systems
US10877892B2 (en) 2018-07-11 2020-12-29 Micron Technology, Inc. Predictive paging to accelerate memory access
US10852949B2 (en) 2019-04-15 2020-12-01 Micron Technology, Inc. Predictive data pre-fetching in a data storage device
US20230051781A1 (en) * 2021-08-16 2023-02-16 International Business Machines Corporation Data movement intimation using input/output (i/o) queue management
CN114518849B (zh) * 2022-02-18 2023-01-10 深圳大学 一种数据存储方法、装置及电子设备

Family Cites Families (177)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04230508A (ja) 1990-10-29 1992-08-19 Internatl Business Mach Corp <Ibm> 低電力消費メモリ装置
WO1996035169A1 (en) 1995-05-05 1996-11-07 Silicon Graphics, Inc. Page migration in a non-uniform memory access (numa) system
US6148377A (en) 1996-11-22 2000-11-14 Mangosoft Corporation Shared memory computer networks
US5909540A (en) 1996-11-22 1999-06-01 Mangosoft Corporation System and method for providing highly available data storage using globally addressable memory
US6026475A (en) 1997-11-26 2000-02-15 Digital Equipment Corporation Method for dynamically remapping a virtual address to a physical address to maintain an even distribution of cache page addresses in a virtual address space
US6279138B1 (en) 1998-08-04 2001-08-21 International Business Machines Corporation System for changing the parity structure of a raid array
US6230260B1 (en) 1998-09-01 2001-05-08 International Business Machines Corporation Circuit arrangement and method of speculative instruction execution utilizing instruction history caching
US6247097B1 (en) 1999-01-22 2001-06-12 International Business Machines Corporation Aligned instruction cache handling of instruction fetches across multiple predicted branch instructions
US6473845B1 (en) 2000-09-28 2002-10-29 Hewlett-Packard Company System and method for dynamically updating memory address mappings
US6515917B2 (en) 2001-04-10 2003-02-04 International Business Machines Corporation Digital-to-analog converter (dac) for dynamic adjustment of off-chip driver pull-up and pull down impedance by providing a variable reference voltage to high frequency receiver and driver circuits for commercial memory
US6646912B2 (en) 2001-06-05 2003-11-11 Hewlett-Packard Development Company, Lp. Non-volatile memory
US7437438B2 (en) 2001-12-27 2008-10-14 Hewlett-Packard Development Company, L.P. System and method for energy efficient data prefetching
EP1552409B1 (de) 2002-08-19 2013-07-24 Broadcom Corporation One-shot-rdma
US20040186960A1 (en) 2003-03-20 2004-09-23 Sun Microsystems, Inc. Computer processor data prefetch unit
CN100465955C (zh) 2004-10-12 2009-03-04 国际商业机器公司 用于高速缓存万维网内容的方法和***
JP4956922B2 (ja) 2004-10-27 2012-06-20 ソニー株式会社 記憶装置
US20060095679A1 (en) 2004-10-28 2006-05-04 Edirisooriya Samantha J Method and apparatus for pushing data into a processor cache
US7376681B1 (en) 2004-12-23 2008-05-20 Emc Corporation Methods and apparatus for accessing information in a hierarchical file system
US7334076B2 (en) 2005-03-08 2008-02-19 Microsoft Corporation Method and system for a guest physical address virtualization in a virtual machine environment
US7571295B2 (en) 2005-08-04 2009-08-04 Intel Corporation Memory manager for heterogeneous memory control
US7631245B2 (en) 2005-09-26 2009-12-08 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
US8291295B2 (en) 2005-09-26 2012-10-16 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
US7933923B2 (en) 2005-11-04 2011-04-26 International Business Machines Corporation Tracking and reconciling database commands
JP4863749B2 (ja) 2006-03-29 2012-01-25 株式会社日立製作所 フラッシュメモリを用いた記憶装置、その消去回数平準化方法、及び消去回数平準化プログラム
US7849302B2 (en) * 2006-04-10 2010-12-07 Apple Inc. Direct boot arrangement using a NAND flash memory
US7496711B2 (en) 2006-07-13 2009-02-24 International Business Machines Corporation Multi-level memory architecture with data prioritization
US8352709B1 (en) 2006-09-19 2013-01-08 Nvidia Corporation Direct memory access techniques that include caching segmentation data
KR101469512B1 (ko) 2007-01-10 2014-12-05 모바일 세미컨덕터 코오포레이션 외부 컴퓨팅 디바이스의 성능 향상을 위한 어댑티브 메모리 시스템
US8996834B2 (en) 2007-05-21 2015-03-31 International Business Machines Corporation Memory class based heap partitioning
US8281303B2 (en) 2007-10-31 2012-10-02 Hewlett-Packard Development Company, L.P. Dynamic ejection of virtual devices on ejection request from virtual device resource object within the virtual firmware to virtual resource driver executing in virtual machine
JP5238235B2 (ja) 2007-12-07 2013-07-17 株式会社日立製作所 管理装置及び管理方法
US8375190B2 (en) 2007-12-11 2013-02-12 Microsoft Corporation Dynamtic storage hierarachy management
US8255631B2 (en) * 2008-02-01 2012-08-28 International Business Machines Corporation Priority-based prefetch requests scheduling and throttling
US8082400B1 (en) 2008-02-26 2011-12-20 Hewlett-Packard Development Company, L.P. Partitioning a memory pool among plural computing nodes
US8560761B2 (en) 2008-03-31 2013-10-15 Spansion Llc Memory resource management for a flash aware kernel
US8289760B2 (en) 2008-07-02 2012-10-16 Micron Technology, Inc. Multi-mode memory device and method having stacked memory dice, a logic die and a command processing circuit and operating in direct and indirect modes
US8316187B2 (en) 2008-07-08 2012-11-20 International Business Machines Corporation Cache memory including a predict buffer
US8131814B1 (en) 2008-07-11 2012-03-06 Hewlett-Packard Development Company, L.P. Dynamic pinning remote direct memory access
US20100017650A1 (en) 2008-07-19 2010-01-21 Nanostar Corporation, U.S.A Non-volatile memory data storage system with reliability management
JP2010086049A (ja) 2008-09-29 2010-04-15 Hitachi Ltd 管理計算機及びその運用方法
US8429665B2 (en) 2010-03-19 2013-04-23 Vmware, Inc. Cache performance prediction, partitioning and scheduling based on cache pressure of threads
JP5221332B2 (ja) 2008-12-27 2013-06-26 株式会社東芝 メモリシステム
US8412880B2 (en) 2009-01-08 2013-04-02 Micron Technology, Inc. Memory system controller to manage wear leveling across a plurality of storage nodes
US8321645B2 (en) 2009-04-29 2012-11-27 Netapp, Inc. Mechanisms for moving data in a hybrid aggregate
US8117373B2 (en) 2009-04-30 2012-02-14 Kimon Berlin VM host responding to initiation of a page swap by transferring pages from host-but-non-guest-addressable RAM to host-and-guest-addressable RAM
JP4990322B2 (ja) 2009-05-13 2012-08-01 株式会社日立製作所 データ移動管理装置及び情報処理システム
US8719547B2 (en) 2009-09-18 2014-05-06 Intel Corporation Providing hardware support for shared virtual memory between local and remote physical memory
US8595411B2 (en) 2009-12-30 2013-11-26 Sandisk Technologies Inc. Method and controller for performing a sequence of commands
US8850151B2 (en) 2010-03-24 2014-09-30 Apple Inc. Hybrid-device storage based on environmental state
US8965819B2 (en) 2010-08-16 2015-02-24 Oracle International Corporation System and method for effective caching using neural networks
US9009384B2 (en) 2010-08-17 2015-04-14 Microsoft Technology Licensing, Llc Virtual machine memory management in systems with asymmetric memory
CN101930404B (zh) 2010-08-27 2012-11-21 威盛电子股份有限公司 存储装置及其操作方法
US8533422B2 (en) 2010-09-30 2013-09-10 Intel Corporation Instruction prefetching using cache line history
US8799554B1 (en) 2010-10-27 2014-08-05 Amazon Technologies, Inc. Methods and system for swapping memory in a virtual machine environment
US8990538B2 (en) 2010-11-05 2015-03-24 Microsoft Corporation Managing memory with limited write cycles in heterogeneous memory systems
US8561065B2 (en) 2010-11-15 2013-10-15 International Business Machines Corporation Virtualization of vendor specific network interfaces of self-virtualizing input/output device virtual functions
KR20140041408A (ko) 2011-01-04 2014-04-04 콘두시브 테크놀로지스 코포레이션 저장 위치 속성 및 데이터 사용량 통계에 기초하여 데이터 저장을 위한 저장 위치 선택
WO2012116369A2 (en) 2011-02-25 2012-08-30 Fusion-Io, Inc. Apparatus, system, and method for managing contents of a cache
JP5664347B2 (ja) 2011-03-04 2015-02-04 ソニー株式会社 仮想メモリシステム、仮想メモリの制御方法、およびプログラム
US8775731B2 (en) 2011-03-25 2014-07-08 Dell Products, L.P. Write spike performance enhancement in hybrid storage systems
US8930647B1 (en) 2011-04-06 2015-01-06 P4tents1, LLC Multiple class memory systems
US20120297121A1 (en) 2011-05-17 2012-11-22 Sergey Anatolievich Gorobets Non-Volatile Memory and Method with Small Logical Groups Distributed Among Active SLC and MLC Memory Partitions
US9176864B2 (en) 2011-05-17 2015-11-03 SanDisk Technologies, Inc. Non-volatile memory and method having block management with hot/cold data sorting
US9141528B2 (en) 2011-05-17 2015-09-22 Sandisk Technologies Inc. Tracking and handling of super-hot data in non-volatile memory systems
US9047017B1 (en) 2011-12-20 2015-06-02 Emc Corporation Techniques for automated evaluation and movement of data between storage tiers
US10380022B2 (en) 2011-07-28 2019-08-13 Netlist, Inc. Hybrid memory module and system and method of operating the same
EP2761472B1 (de) 2011-09-30 2020-04-01 Intel Corporation Speicherkanal zur unterstützung von nah- und fern-speicherzugriffen
US20130145095A1 (en) 2011-12-06 2013-06-06 Lsi Corporation Melthod and system for integrating the functions of a cache system with a storage tiering system
KR20130064521A (ko) 2011-12-08 2013-06-18 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 관리 방법
KR101850318B1 (ko) 2011-12-09 2018-04-20 삼성전자주식회사 가상 메모리 관리 장치 및 방법
US9817761B2 (en) * 2012-01-06 2017-11-14 Sandisk Technologies Llc Methods, systems, and computer readable media for optimization of host sequential reads or writes based on volume of data transfer
US9405478B2 (en) 2012-02-08 2016-08-02 Hitachi, Ltd. Storage apparatus provided with a plurality of nonvolatile semiconductor storage media and storage control method
US8849731B2 (en) 2012-02-23 2014-09-30 Microsoft Corporation Content pre-fetching for computing devices
CN102662690B (zh) 2012-03-14 2014-06-11 腾讯科技(深圳)有限公司 应用程序启动方法和装置
US8838887B1 (en) 2012-03-30 2014-09-16 Emc Corporation Drive partitioning for automated storage tiering
US9043530B1 (en) 2012-04-09 2015-05-26 Netapp, Inc. Data storage within hybrid storage aggregate
US9996370B1 (en) 2012-04-18 2018-06-12 Open Invention Network Llc Page swapping in virtual machine environment
US9201779B2 (en) 2012-06-27 2015-12-01 Hitachi, Ltd. Management system and management method
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
US9128845B2 (en) 2012-07-30 2015-09-08 Hewlett-Packard Development Company, L.P. Dynamically partition a volatile memory for a cache and a memory partition
US10303618B2 (en) 2012-09-25 2019-05-28 International Business Machines Corporation Power savings via dynamic page type selection
US9817739B1 (en) 2012-10-31 2017-11-14 Veritas Technologies Llc Method to restore a virtual environment based on a state of applications/tiers
US9069658B2 (en) 2012-12-10 2015-06-30 Google Inc. Using a virtual to physical map for direct user space communication with a data storage device
US9164888B2 (en) 2012-12-10 2015-10-20 Google Inc. Using a logical to physical map for direct user space communication with a data storage device
EP2936494B1 (de) 2012-12-19 2019-07-03 Hewlett-Packard Enterprise Development LP Nvram-pfadauswahl
US9552288B2 (en) 2013-02-08 2017-01-24 Seagate Technology Llc Multi-tiered memory with different metadata levels
US9672230B1 (en) 2013-04-03 2017-06-06 Ca, Inc. Optimized placement of data
JP5577430B1 (ja) 2013-06-11 2014-08-20 株式会社ブリヂストン 空気入りタイヤ
US9984089B2 (en) 2013-06-28 2018-05-29 Vmware, Inc. Techniques for implementing hybrid flash/HDD-based virtual disk files
US20150016046A1 (en) 2013-07-10 2015-01-15 Samsung Electronics Co., Ltd. Ina cabled memory appliance
US20150026509A1 (en) 2013-07-22 2015-01-22 Kabushiki Kaisha Toshiba Storage device having a data stream converter
WO2015017147A1 (en) 2013-07-29 2015-02-05 Silicon Graphics International Corp. I/o acceleration in hybrid storage
GB2517493A (en) 2013-08-23 2015-02-25 Advanced Risc Mach Ltd Handling access attributes for data accesses
WO2015029102A1 (ja) 2013-08-26 2015-03-05 株式会社日立製作所 ストレージ装置及び階層制御方法
US9037753B2 (en) 2013-08-29 2015-05-19 International Business Machines Corporation Automatic pinning and unpinning of virtual pages for remote direct memory access
US9122503B1 (en) * 2013-09-05 2015-09-01 Symantec Corporation Systems and methods for adaptive throttling of input/output requests in a virtual environment
US9513692B2 (en) 2013-09-18 2016-12-06 Intel Corporation Heterogenous memory access
US10037222B2 (en) 2013-09-24 2018-07-31 University Of Ottawa Virtualization of hardware accelerator allowing simultaneous reading and writing
US10032246B2 (en) 2013-10-09 2018-07-24 Nvidia Corporation Approach to caching decoded texture data with variable dimensions
US9280456B2 (en) 2013-11-12 2016-03-08 Micron Technology, Inc. Mapping between program states and data patterns
US20150199276A1 (en) 2014-01-13 2015-07-16 Samsung Electronics Co., Ltd. Pre-fetch confirmation queue
KR20150089538A (ko) 2014-01-28 2015-08-05 한국전자통신연구원 인-메모리 데이터 관리 장치 및 인-메모리 데이터 관리 방법
WO2015132877A1 (ja) 2014-03-04 2015-09-11 株式会社日立製作所 計算機およびメモリ制御方法
US10445025B2 (en) 2014-03-18 2019-10-15 Micron Technology, Inc. Apparatuses and methods having memory tier structure and recursively searching between tiers for address in a translation table where information is only directly transferred between controllers
US9472248B2 (en) 2014-03-28 2016-10-18 Intel Corporation Method and apparatus for implementing a heterogeneous memory subsystem
US10628245B2 (en) 2014-04-02 2020-04-21 Pure Storage, Inc. Monitoring of storage units in a dispersed storage network
EP3138241A4 (de) 2014-05-01 2018-04-11 Coho Data, Inc. Systeme, vorrichtungen und verfahren zur erzeugung von lokalitätsindikativen datenrepräsentationen von datenströmen und komprimierungen davon
JP6637906B2 (ja) 2014-05-08 2020-01-29 マイクロン テクノロジー,インク. ハイブリッドメモリキューブシステム相互接続ディレクトリベースキャッシュコヒーレンス方法
US20150356125A1 (en) 2014-06-06 2015-12-10 Plexistor Ltd. Method for data placement based on a file level operation
US9697130B2 (en) 2014-06-25 2017-07-04 Sandisk Technologies Llc Systems and methods for storage service automation
US10282100B2 (en) 2014-08-19 2019-05-07 Samsung Electronics Co., Ltd. Data management scheme in virtualized hyperscale environments
US9390028B2 (en) 2014-10-19 2016-07-12 Strato Scale Ltd. Coordination between memory-saving mechanisms in computers that run virtual machines
CN105574067B (zh) 2014-10-31 2020-01-21 株式会社东芝 项目推荐装置以及项目推荐方法
US10223371B2 (en) 2014-11-21 2019-03-05 Vmware, Inc. Host-based deduplication using array generated data tags
US9727427B2 (en) 2014-12-31 2017-08-08 International Business Machines Corporation Synchronizing storage of data copies in a dispersed storage network
US20160212214A1 (en) 2015-01-16 2016-07-21 Avago Technologies General Ip (Singapore) Pte. Ltd. Tunneled remote direct memory access (rdma) communication
US20180024853A1 (en) 2015-02-17 2018-01-25 Coho Data, Inc. Methods, systems, devices and appliances relating to virtualized application-layer space for data processing in data storage systems
KR20160116533A (ko) 2015-03-30 2016-10-10 삼성전자주식회사 리프레쉬 동작을 관리하는 메모리 콘트롤러, 메모리 시스템 및 그 동작방법
US10645013B2 (en) 2015-04-02 2020-05-05 Nicira, Inc Data flow identifiers
US10025747B2 (en) 2015-05-07 2018-07-17 Samsung Electronics Co., Ltd. I/O channel scrambling/ECC disassociated communication protocol
US9720846B2 (en) 2015-05-28 2017-08-01 Red Hat Israel, Ltd. Memory swap for direct memory access by a device assigned to a guest operating system
US10042782B2 (en) 2015-06-02 2018-08-07 ALTR Solutions, Inc. Immutable datastore for low-latency reading and writing of large data sets
US9639280B2 (en) * 2015-06-18 2017-05-02 Advanced Micro Devices, Inc. Ordering memory commands in a computer system
US10019409B2 (en) 2015-08-03 2018-07-10 International Business Machines Corporation Extending remote direct memory access operations for storage class memory access
US11169925B2 (en) 2015-08-25 2021-11-09 Samsung Electronics Co., Ltd. Capturing temporal store streams into CPU caches by dynamically varying store streaming thresholds
US9535740B1 (en) 2015-08-26 2017-01-03 International Business Machines Corporation Implementing dynamic adjustment of resources allocated to SRIOV remote direct memory access adapter (RDMA) virtual functions based on usage patterns
US10430723B1 (en) 2015-09-29 2019-10-01 EMC IP Holding Company LLC Storage system with machine learning based skew prediction
US20170123796A1 (en) 2015-10-29 2017-05-04 Intel Corporation Instruction and logic to prefetch information from a persistent memory
US20170147427A1 (en) 2015-11-23 2017-05-25 Honeywell International, Inc. System and method for software simulation for testing a safety manager platform
US10394789B1 (en) 2015-12-07 2019-08-27 Amazon Technologies, Inc. Techniques and systems for scalable request handling in data processing systems
US10019372B2 (en) 2015-12-16 2018-07-10 Western Digital Technologies, Inc. Caching sensing device data in data storage device
US10019279B2 (en) 2015-12-17 2018-07-10 International Business Machines Corporation Transparent secure interception handling
US10148570B2 (en) 2015-12-29 2018-12-04 Amazon Technologies, Inc. Connectionless reliable transport
US10719237B2 (en) 2016-01-11 2020-07-21 Micron Technology, Inc. Apparatuses and methods for concurrently accessing multiple partitions of a non-volatile memory
US10592114B2 (en) 2016-03-03 2020-03-17 Samsung Electronics Co., Ltd. Coordinated in-module RAS features for synchronous DDR compatible memory
US10216536B2 (en) 2016-03-11 2019-02-26 Vmware, Inc. Swap file defragmentation in a hypervisor
US20170285967A1 (en) 2016-03-29 2017-10-05 Samsung Electronics Co., Ltd. Multi-ware smart ssd
US20170285992A1 (en) 2016-04-01 2017-10-05 Intel Corporation Memory subsystem with narrow bandwidth repeater channel
US10778762B2 (en) 2016-04-18 2020-09-15 Rancher Labs, Inc. Cloud computing service architecture
US10404822B2 (en) 2016-04-29 2019-09-03 Cisco Technology, Inc. Predictive rollup and caching for application performance data
US10282261B2 (en) 2016-06-20 2019-05-07 Vmware, Inc. Pooled memory heartbeat in shared memory architecture
JP2018005446A (ja) 2016-06-30 2018-01-11 富士通株式会社 情報処理装置、ストレージ制御プログラム、及びストレージ制御方法
US10176099B2 (en) 2016-07-11 2019-01-08 Intel Corporation Using data pattern to mark cache lines as invalid
US11138160B2 (en) 2016-07-13 2021-10-05 International Business Machines Corporation Application performance using multidimensional predictive algorithm for automated tiering mechanisms
US10083123B2 (en) 2016-08-10 2018-09-25 Vmware, Inc. Page-fault latency directed virtual machine performance monitoring
US20180059976A1 (en) * 2016-08-26 2018-03-01 Sandisk Technologies Llc Storage System with Integrated Components and Method for Use Therewith
US10866897B2 (en) 2016-09-26 2020-12-15 Samsung Electronics Co., Ltd. Byte-addressable flash-based memory module with prefetch mode that is adjusted based on feedback from prefetch accuracy that is calculated by comparing first decoded address and second decoded address, where the first decoded address is sent to memory controller, and the second decoded address is sent to prefetch buffer
US10120797B1 (en) 2016-09-30 2018-11-06 EMC IP Holding Company LLC Managing mapping metadata in storage systems
CN108008911A (zh) 2016-11-01 2018-05-08 阿里巴巴集团控股有限公司 读写请求处理方法及装置
CN106506275B (zh) * 2016-11-09 2019-08-20 中国科学院计算技术研究所 一种预测交换节点目的端口传输时延的方法及装置
TWI596541B (zh) 2016-11-30 2017-08-21 財團法人工業技術研究院 資料存取系統、資料存取裝置及資料存取方法
US10866912B2 (en) 2017-03-10 2020-12-15 Toshiba Memory Corporation Integrated heterogeneous solid state storage drive
US11392488B2 (en) 2017-04-07 2022-07-19 Keysight Technologies Singapore (Sales) Pte. Ltd. Optimizing storage of application data in memory
US9910618B1 (en) 2017-04-10 2018-03-06 Pure Storage, Inc. Migrating applications executing on a storage system
US20180332367A1 (en) 2017-05-09 2018-11-15 EMC IP Holding Company LLC Dynamically scaling a number of stream segments that dynamically store streaming data while preserving the order of writes
US20190004841A1 (en) 2017-06-30 2019-01-03 Microsoft Technology Licensing, Llc Memory Sharing For Virtual Machines
US20190034284A1 (en) 2017-07-25 2019-01-31 Hewlett Packard Enterprise Development Lp Sequencing host i/o requests and i/o snapshots
US10289566B1 (en) 2017-07-28 2019-05-14 EMC IP Holding Company LLC Handling data that has become inactive within stream aware data storage equipment
US10671303B2 (en) 2017-09-13 2020-06-02 International Business Machines Corporation Controlling a storage system
US10298496B1 (en) 2017-09-26 2019-05-21 Amazon Technologies, Inc. Packet processing cache
KR102414047B1 (ko) 2017-10-30 2022-06-29 에스케이하이닉스 주식회사 통합 메모리 디바이스 및 그의 동작 방법
US10394706B2 (en) * 2017-11-02 2019-08-27 Western Digital Technologies, Inc. Non-volatile storage with adaptive command prediction
US10572389B2 (en) 2017-12-12 2020-02-25 Advanced Micro Devices, Inc. Cache control aware memory controller
US20190196996A1 (en) 2017-12-21 2019-06-27 Advanced Micro Devices, Inc. Dynamically determining memory access burst length
US11099789B2 (en) 2018-02-05 2021-08-24 Micron Technology, Inc. Remote direct memory access in multi-tier memory systems
US20190243771A1 (en) 2018-02-05 2019-08-08 Micron Technology, Inc. Accelerate Data Access in Memory Systems via Data Stream Segregation
US11416395B2 (en) 2018-02-05 2022-08-16 Micron Technology, Inc. Memory virtualization for accessing heterogeneous memory components
US20190243787A1 (en) 2018-02-05 2019-08-08 Micron Technology, Inc. Memory Systems having Controllers Embedded in Packages of Integrated Circuit Memory
US10782908B2 (en) 2018-02-05 2020-09-22 Micron Technology, Inc. Predictive data orchestration in multi-tier memory systems
US10880401B2 (en) 2018-02-12 2020-12-29 Micron Technology, Inc. Optimization of data access and communication in memory systems
US10922221B2 (en) 2018-03-28 2021-02-16 Micron Technology, Inc. Memory management
US10540100B2 (en) 2018-04-10 2020-01-21 Western Digital Technologies, Inc. Mapping-based wear leveling for non-volatile memory
US20190370043A1 (en) 2018-04-30 2019-12-05 Nutanix, Inc. Cooperative memory management
US10877892B2 (en) 2018-07-11 2020-12-29 Micron Technology, Inc. Predictive paging to accelerate memory access
US10915465B2 (en) 2018-08-30 2021-02-09 Micron Technology, Inc. Memory configured to store predefined set of domain registers for instructions being executed in computer processors
US11182507B2 (en) 2018-08-30 2021-11-23 Micron Technology, Inc. Domain crossing in executing instructions in computer processors
US10852949B2 (en) 2019-04-15 2020-12-01 Micron Technology, Inc. Predictive data pre-fetching in a data storage device

Also Published As

Publication number Publication date
US20230393743A1 (en) 2023-12-07
US20200326851A1 (en) 2020-10-15
CN113692579A (zh) 2021-11-23
US10852949B2 (en) 2020-12-01
CN113692579B (zh) 2024-06-04
US20210048947A1 (en) 2021-02-18
WO2020214276A1 (en) 2020-10-22
US11740793B2 (en) 2023-08-29

Similar Documents

Publication Publication Date Title
DE112020001937T5 (de) Vorausschauender datenvorabruf in einer datenspeicher-vorrichtung
DE112018004251T5 (de) Adaptive vorrichtungsdienstqualität durch host-speicherpufferbereich
DE102015014851A1 (de) Ressourcenzuteilung und -freigabe für die Energieverwaltung in Vorrichtungen
DE102020132764A1 (de) Solid-state-drive mit externer softwareausführung zum bewirken von internen operationen des solid-state-drive
DE102008033518B4 (de) Datenverarbeitungsverfahren für eine Solid-State-Disk-Steuereinheit, Solid-State-Disk-Steuereinheit und Datenspeicherelement
DE102013016609A1 (de) Vorrichtung und Verfahren für ein Storage Class Memory mit niedrigem Energieverbrauch, niedriger Latenz und hoher Kapazität
DE112020006215T5 (de) Blockfamilien-basierte Fehlervermeidung für Speichervorrichtungen
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE112019000161T5 (de) Speicher-cache-verwaltung
DE112021000776T5 (de) Verwaltung von schreib-operationen in einer nichtflüchtigen speichervorrichtung unter verwendung eines variablen vor-lese-spannungspegels
DE102019102317A1 (de) Verfahren zur verbesserten Datenverteilung unter Speichervorrichtungen
DE102021114457A1 (de) Abwicklung von lesen in vorrichtungen mit in zonen unterteiltem namensraum
DE102021118940A1 (de) Speichersteuerung und speichereinrichtung mit derselben
DE112020005395T5 (de) Kapazitätserweiterung für speicher-untersysteme
DE102021120076A1 (de) Validierung von dram-inhalten unter verwendung einer internendatensignatur
DE102018123961A1 (de) Gruppen-leseaktualisierung
DE102021006246A1 (de) Doppelt verschachtelte Programmierung einer Speichervorrichtung in einem Speicher-Untersystem
DE102020200513A1 (de) Speichereinrichtung und verfahren zum betreiben derselben
DE102022105848A1 (de) Reduzierung der schreibverstärkung in sensordatenaufzeichnern
DE112021001848T5 (de) Mehrere pinkonfigurationen von speichervorrichtungen
DE112020006053T5 (de) Aktiver eingabe/ausgabe-expander eines speicher-untersystems
DE112021000474T5 (de) Durchführung einer Medienverwaltungsoperation basierend auf einer Änderung eines Schreibmodus eines Datenblocks in einem Cache
DE112020004442T5 (de) Cache mit geringer latenz für nichtflüchtigen speicher in einem hybriden dimm
DE112020005118T5 (de) Dienstgüte für speichervorrichtungen unter verwendung von gewichteten speicherzugriffs-operationstypen
DE102022004129A1 (de) Zurückkopier-lösch-befehl zur durchführung einer scan- und leseoperation in einer speichervorrichtung

Legal Events

Date Code Title Description
R012 Request for examination validly filed