DE112016005970T5 - Speichermanagement eines Hochleistungsspeichers - Google Patents

Speichermanagement eines Hochleistungsspeichers Download PDF

Info

Publication number
DE112016005970T5
DE112016005970T5 DE112016005970.1T DE112016005970T DE112016005970T5 DE 112016005970 T5 DE112016005970 T5 DE 112016005970T5 DE 112016005970 T DE112016005970 T DE 112016005970T DE 112016005970 T5 DE112016005970 T5 DE 112016005970T5
Authority
DE
Germany
Prior art keywords
memory
block
high performance
blocks
bytecode
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
DE112016005970.1T
Other languages
English (en)
Inventor
Ashish Jha
Tulika Jha
Mingqiu Sun
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE112016005970T5 publication Critical patent/DE112016005970T5/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/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
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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/0871Allocation or management of cache space
    • 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
    • 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/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1072Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory
    • 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/217Hybrid disk, e.g. using both magnetic and solid state storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management
    • G06F2212/702Conservative garbage collection

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)
  • Debugging And Monitoring (AREA)
  • Memory System (AREA)

Abstract

Es sind hier verschiedene Systems und Verfahren für ein Speichermanagement eines Hochleistungsspeichers beschrieben. Ein System zum Managen eines Hochleistungsspeichers, das System umfassend einen Direktzugriffsspeicher; einen Hochleistungsspeicher, wobei der Hochleistungsspeicher eine höhere Leistung als der Direktzugriffsspeicher hat; und eine Speichermanagementeinheit zum: Erhalten einer Ausführungsmetrik für mehrere Blöcke, die sich in einem Direktzugriffsspeicher befinden; Auswählen eines Blocks aus den mehreren Blöcken anhand der Aktivität des Blocks; Bewegen des Blocks zum Hochleistungsspeicher; und Aktualisieren einer virtuellen Speicherabbildung für den Block vom Direktzugriffsspeicher zum Hochleistungsspeicher.

Description

  • PRIORITÄTSANMELDUNG
  • Diese Anmeldung beansprucht den Prioritätsvorteil der U.S. Anmeldung Seriennr. 14/757,418, eingereicht am 23. Dezember 2015, die hier in ihrer Gesamtheit zum Zweck der Bezugnahme zitiert wird.
  • TECHNISCHES GEBIET
  • Hier beschriebene Ausführungsformen beziehen sich im Allgemeinen auf Speichermanagement und insbesondere auf ein Speichermanagement eines Hochleistungsspeichers.
  • HINTERGRUND
  • Eine Erhöhung in der Rechenleistung wird mit Hilfe einer Reihe von Techniken erzielt, enthaltend eine Erhöhung der Betriebsgeschwindigkeiten einer zentralen Verarbeitungseinheit (CPU), Vermehren von CPU-Kernen, Hinzufügen eines oder mehr CPU-Caches, Hinzufügen von Threads pro Kern, Erhöhen der Speicherbandbreite oder -geschwindigkeit, Erhöhen der Menge an Primärspeicher und dergleichen.
  • Figurenliste
  • In den Zeichnungen, die nicht unbedingt im Maßstab gezeichnet sind, können gleiche Bezugszeichen gleiche Komponenten in verschiedenen Ansichten beschreiben, Gleiche Zahlen mit unterschiedlichen Buchstabensuffixen können verschiedene Beispiele gleicher Komponenten darstellen. Manche Ausführungsformen sind als Beispiel und nicht als Einschränkung in den Figuren der beiliegenden Zeichnungen dargestellt, in welchen:
    • 1 eine Darstellung ist, die eine beispielhafte Hardware- und Software-Architektur eines Computersystems, in dem verschiedene Schnittstellen zwischen Hardware-Komponenten und Software-Komponenten dargestellt sind, gemäß einer Ausführungsform zeigt;
    • 2 ist ein Blockdiagramm, das einen Steuerungs- und Datenfluss gemäß einer Ausführungsform zeigt;
    • 3 ist ein Blockdiagramm, das ein System, das einen Hochleistungsspeicher managt, gemäß einer Ausführungsform zeigt;
    • 4 ist ein Flussdiagramm, das ein Managementverfahren für einen Hochleistungsspeicher gemäß einer Ausführungsform zeigt; und
    • 5 ist ein Blockdiagramm, das eine beispielhafte Maschine, auf der eine oder mehr der hier besprochenen Techniken (z. B. Methodologien) durchgeführt werden können, gemäß einer beispielhaften Ausführungsform zeigt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In der folgenden Beschreibung sind zur Erklärung zahlreiche spezielle Einzelheiten angeführt, um ein umfassendes Verständnis mancher beispielhafter Ausführungsformen zu ermöglichen. Für einen Fachmann auf dem Gebiet ist jedoch offensichtlich, dass die vorliegende Offenbarung ohne diese speziellen Einzelheiten in die Praxis umgesetzt werden kann.
  • Herkömmliche Speichermodule organisieren Speicherzellen in zwei Dimensionen als Reihen und Spalten. In den letzten Jahren wurde ein Speicher zur Erhöhung der Datenrate (z. B. Doppeldatenrate (DDR) SDRAM (synchroner dynamischer Direktzugriffsspeicher), DDR2 (Typ 2 DDR SDRAM), DDR3 (Typ 3 DDR SDRAM), etc.) oder Erhöhung der Bandbreite (z. B. DDR4) entworfen.
  • Neue Speichervorrichtungen stapeln Siliziumwafer oder Dies und verbinden sie vertikal mit Siliziumdurchkontaktierungen (TSVs). Ein Beispiel für ein 3D-Speichermodule ist ein Hybrid-Speicherwürfel (HMC), der einzelne Modulspeicher-Dies (z. B. Speichervorrichtungen) stapelt, die durch interne vertikale Leiter wie TSVs verbunden sind. TSVs sind vertikale Leiter, die einen Stapel einzelner Speicher-Dies mit einer Steuerung elektrisch verbinden. Der HMC kann einen kleineren Formfaktor vorsehen, eine höhere Bandbreite und andere Effizienzen liefern, während er weniger Energie zur Übertragung von Daten pro Bit zu verwenden. Ein anderes Beispiel für einen 3D-Speicher ist ein Speicher hoher Bandbreite (HBM), der auch mit bis zu acht DRAM-Dies in einer gestapelten Konfiguration und einem optionalen Basis-Die mit einer Speichersteuerung gestaltet ist. Der Die-Stapel in einem HBM kann mit Hilfe von TSVs verbunden sein. Der HBM sieht eine sehr breite Speicherbandbreite im Verglich zum herkömmlichen DRAM vor. Zum Beispiel sieht ein HBM mit vier gestapelten DRAM-Dies zwei 128-Bit Kanäle pro Die für insgesamt acht Kanäle und eine Breite von 1024 Bits vor. Die Verwendung von vier solcher Stapel auf einem Speichermodule sieht einen 4096-Bit Speicherbus vor; eine große Verbesserung gegenüber den DDR3- oder DDR4-Bussen. Andere Arten von Hochleistungsspeicher erscheinen auch am Horizont, enthaltend 3D Xpoint™, Universal Flash Storage (UFS), 3D NAND Flash und Technologien, die um Wide I/O und verwandte Standards errichtet werden.
  • Aufgrund ihrer hohen anfänglichen Herstellungs- und Produktionskosten können diese fortgeschrittenen Speichermodule Konsumenten in begrenzter Menge bereitgestellt werden. Eine Gestaltungsoption ist ein Vorsehen von Hochleistungsspeichermodulen gemeinsam mit DDR3- oder DD4-SDRAM-Modulen. Eine solche Gestaltung bietet dem Endbenutzer Geschwindigkeitserhöhungen ohne volle Frachtkosten für ein Ersetzen aller RAM in einem System mit Hochleistungs-RAM.
  • Hier beschriebene Systeme und Verfahren implementieren ein Speichermanagement für Hochleistungsspeicher. Mit Hilfe einer Leistungsmetrik einer Anwendung kann ein Speichermanager heiße Speicherblöcke einem Hochleistungsspeicher (HPM) zuordnen, während kalte Speicherblöcke im herkömmlichen DRAM verbleiben. Diese Speichermanagementtechnik verbessert die Leistung über einen weiten Bereich von Anwendungen von Kunden zum Unternehmen signifikant. Zusätzlich arbeiten die hier beschriebenen Implementierungen für die Ausführung von Anwendungen transparent.
  • 1 ist eine schematische Darstellung die eine beispielhafte Hardware- und Software-Architektur 100 eines Computersystems, in dem verschiedene Schnittstellen zwischen Hardware-Komponenten und Software-Komponenten dargestellt sind, gemäß einer Ausführungsform zeigt. Wie durch HW angegeben, sind Hardware-Komponenten unter der Trennlinie dargestellt, während Software-Komponenten, die mit SW bezeichnet sind, sich über der Trennlinie befinden. An der Hardware-Seite haben Verarbeitungsvorrichtungen 102 (die einen oder mehr Mikroprozessoren, Digitalsignalprozessoren usw. mit jeweils einem oder mehr Prozessorkernen enthalten können) eine Schnittstelle mit einer Speichermanagementvorrichtung 104 und eine Systemverbindung 106. Die Speichermanagementvorrichtung 104 sieht Abbildungen zwischen virtuellem Speicher, der durch ausgeführte Prozesse verwendet wird, und den physischen Speicher vor. Die Speichermanagementvorrichtung 104 kann ein integriertes Teil einer zentralen Verarbeitungseinheit sein, die auch die Verarbeitungsvorrichtungen 102 enthält.
  • Die Verbindung 106 enthält eine Rückplatine wie einen Speicher, Daten und Steuerleitungen, wie auch die Schnittstelle mit Eingabe-/Ausgabevorrichtungen, z. B. PCI, USB usw. Der Speicher 108 (z. B. dynamischer Direktzugriffsspeicher (DRAM)) und nicht flüchtige Speicher 110 wie Flash-Speicher (z. B. elektrisch löschbarer Nur-Lese-Speicher - EEPROM, NAND Flash, NOR Flash usw.) haben eine Schnittstelle mit der Speichermanagementvorrichtung 104 und Verbindung 106 über die Speichersteuerung 112. Die I/O-Vorrichtungen, enthaltend Video- und Audio-Adapter, einen nicht flüchtigen Speicher, externe periphere Verbindungen, wie USB, Bluetooth usw., Kamera/Mikrofon-Datenerfassungsvorrichtungen, Fingerabdrucklesegeräte und andere biometrische Sensoren wie auch eine Netzwerkschnittstellenvorrichtungen, wie jene, die über Wi-Fi- oder LTE-Familie-Schnittstellen kommunizieren, sind gemeinsam als I/O-Vorrichtungen und Netzwerken 114 dargestellt, die eine Schnittstelle mit Verbindung 106 über entsprechende I/O Steuerungen 116 haben.
  • In einer verwandten Ausführungsform unterstützt eine Eingabe/Ausgabe-Speichermanagementeinheit IOMMU 118 einen sicheren direkten Speicherzugriff (DMA) durch periphere Geräte. IOMMU 118 kann einen Speicherschutz durch Vermitteln eines Zugriffs auf den Speicher 108 von der I/O-Vorrichtung 114 vorsehen. Die IOMMU 118 kann auch einen DMA-Speicherschutz in virtualisierten Umgebungen vorsehen, wo sie ermöglicht, dass gewisse Hardware-Ressourcen gewissen Gast-VMs zugewiesen werden, die auf dem System laufen, und eine Isolierung zwischen anderen VMs und periphereren Geräten erzwingt, die diesen nicht zugewiesen sind.
  • Auf der Software-Seite, eine Prä-Betriebssystem- (Prä-OS) Umgebung 120, die beim anfänglichen Starten des Systems ausgeführt wird und zum Einleiten des Hochfahrens des Betriebssystems verantwortlich ist. Ein herkömmliches Beispiel für eine Prä-OS-Umgebung 120 ist ein grundlegendes Eingabe/Ausgabesystem (BIOS). In heutigen Systemen ist eine vereinheitlichte erweiterbare Firmware-Schnittstelle (UEFI) implementiert. Die Prä-OS-Umgebung 120, wie in der Folge ausführlicher beschrieben, ist zum Einleiten des Starts des Betriebssystems oder virtuellen Maschinenmanagers verantwortlich, sieht aber auch eine Ausführungsumgebung für eingebettete Anwendungen gemäß gewissen Aspekten der Erfindung vor.
  • Ein virtueller Maschinenmonitor (VMM) 122 ist eine System-Software, die die Ausführung virtueller Maschinen (VMs) 124A und 124B kreiert und steuert. Der VMM318 kann direkt auf der Hardware HW laufen, wie dargestellt, oder der VMM 122 kann unter der Steuerung eines Betriebssystems als ein gehosteter VMM laufen.
  • Jeder VM 124A, 124B enthält ein Gastbetriebssystem 126A, 126B und Anwendungsprogramme 128A, 128B.
  • Jedes Gastbetriebssystem (OS) 126A, 126B sieht ein Kernel vor, das über die Ressourcen arbeitet, die durch den VMM 122 vorgesehen sind, um die Hardware-Vorrichtungen zu steuern, den Speicherzugriff für Programme im Speicher zu managen, Aufgaben zu koordinieren und ein Multi-Tasking zu erleichtern, zu speichernde Daten zu organisieren, einen Speicherbereich und andere Ressourcen zuzuweisen, einen binären Programmcode in den Speicher zu laden, eine Ausführung des entsprechenden Anwendungsprogramms einzuleiten, das dann mit dem Benutzer und mit Hardware-Vorrichtungen interagiert und verschiedene definierte Unterbrechungen zu detektieren und auf diese zu antworten. Ebenso sieht jedes Gast-OS 126A, 126B Vorrichtungstreiber und eine Reihe allgemeiner Dienste vor wie jene, die eine Schnittstellenbildung mit peripheren Geräten und ein Netzwerken erleichtern, die eine Abstraktion für entsprechende Anwendungsprogramme 128A, 128B vorsehen, sodass die Anwendungen nicht für eine Handhabung der Einzelheiten solcher gemeinsamer Operationen verantwortlich sein müssen. Jedes Gast-OS 126A, 126B kann zusätzlich eine Grafikbenutzerschnittstelle (GUI) vorsehen, die eine Interaktion mit dem Benutzer über periphere Vorrichtungen wie einen Monitor, eine Tastatur, eine Maus, ein Mikrofon, eine Videokamera, einen Berührungsbildschirm und dergleichen erleichtert.
  • Jedes Gast-OS 126A, 126B kann ein Laufzeitsystem vorsehen, das Abschnitte eines Ausführungsmodells implementiert, enthaltend Operation wie ein Einrichten von Parametern auf dem Stapel vor einem Funktionsaufruf, das Verhalten von Platten-Eingabe/Ausgabe (I/O) und paralleles ausführungsbezogenes Verhalten.
  • Zusätzlich kann jedes Gast-OS 126A, 126B Bibliotheken vorsehen, die Sammlungen von Programmfunktionen enthalten, die eine weitere Abstraktion für Anwendungsprogramme vorsehen. Diese können zum Beispiel gemeinsam benutzte Bibliotheken, dynamisch verbundene Bibliotheken (DLLs) enthalten.
  • Anwendungsprogramme 128A, 128B sind jene Programme, die nützliche Aufgaben für Benutzer über die Aufgaben hinaus durchführen, die durch Systemprogramme auf tieferer Ebene durchgeführt werden, die die Grundoperabilität des Computersystems selbst koordinieren.
  • 2 ist ein Blockdiagramm, das einen Steuerungs- und Datenfluss gemäß einer Ausführungsform zeigt. Ein Speichermanager 200 hat eine Schnittstelle mit einem Profiler 202. Der Profiler 202 kann ein Anwendungsprofiler sein, der eine Kompilationszeit oder Laufzeit ausführt. Der Profiler 202 kann zum Identifizieren oder Messen einer Raum- oder Zeitkomplexität eines Programms, der Nutzung besondere Anweisungen oder Codeblöcke oder der Häufigkeit oder Dauer von Funktionsaufrufen verwendet werden. Der Profiler 202 kann Techniken wie eine profilgeleitete Optimierung (PGO) zum Profilieren von Hotspots (z. B. Spitzen-CPU-Gebrauch) Anwendungs-Codeblöcken verwenden. In einem Beispiel identifiziert der Profiler 202 Abschnitte eines ausführbaren Codes, die CPU-intensiv sind. Der Speichermanager 200 und Profiler 202 können sich in einer virtuellen Maschineninstanz (z. B. Java Virtual Machine), einer Betriebssystemkomponente oder an der Anwendungsschicht (getrennt von einem VM) befinden. Ein beispielhafter Profiler für Java-Anwendungen ist Hyades Data Collection Engine for Eclipse. Ein weiterer beispielhafter Profiler ist VTune™ Amplifier XE von Intel®.
  • Eine zentrale Verarbeitungseinheit (CPU) 204 ist an einen dynamischen Direktzugriffsspeicher (DRAM) 206 und einen Hochleistungsspeicher 208 gekoppelt. Der DRAM 206 kann verschiedene Arten von DRAM beinhalten, wie DDR2, DD3, oder DD4 SDRAM. Der Hochleistungsspeicher 208 ist eine Art, die eine signifikant höherer Leistung hat als der DRAM 206. Beispiele für Hochleistungsspeicher 208 enthalten, ohne aber darauf beschränkt zu sein, HMC, HBM, 3D Xpoint™, Universal Flash Storage (UFS), 3D NAND Flash und Technologien, die um Wide I/O und verwandte Standards errichtet werden.
  • Der Speichermanager 200 ist konfiguriert, die Zuordnung von Speicherblöcken zu managen. Er führt Listen aktiver und freier Speicher für jeden von dem Hochleistungsspeicher 208 und dem DRAM 206. Der Speichermanager 200 führt auch eine Liste heißer Blöcke 210 und kalter Blöcke 212, die anhand der Daten vom Profiler 202 aktualisiert werden.
  • Der Speichermanager 200 stellt jene Blöcke, die als hoch aktiv profiliert werden, in die Liste heißer Blöcke 210. Diese Blöcke werden dann einem Bereich auf dem Hochleistungsspeicher 208 zugeordnet. Als solcher ist ein heißer Block immer „aktiv“.
  • Kalte Blöcke, jene, die sich in der Liste kalter Blöcke 212 befinden, können aus dem Speicher geleert werden, wenn weder im Hochleistungsspeicher 208 noch im DRAM 206 freier Speicher vorhanden ist.
  • Der Speichermanager 200 kann aus einem Anfangszustand Speicher vom DRAM 206 zuordnen. Wenn ein heißer Block als im DRAM 206 liegend identifiziert wird, wird der heiße Block zum Hochleistungsspeicher 208 bewegt. Diese Operation kann während einer Speicherbereinigungsoperation durchgeführt werden. Beispielsweise verringert eine Durchführung der Neuzuordnung während einer Speicherbereinigungsverdichtungsphase einen Mehraufwand von Speichereinträgen, da Speicherblöcke in manchen Fällen bereits während der Verdichtung bewegt werden.
  • Aus der Perspektive einer ausführenden Anwendung ist die Operation nahtlos und transparent. Der Speichermanager 200 handhabt Speicherzugriffsanfragen von der Anwendung und bildet den Adressenbereich der Anwendung entweder auf den Hochleistungsspeicher 208 oder den DRAM 206 gemäß den Eigenschaften des Speicherblocks ab, der beschrieben oder auf den zugegriffen wird.
  • 3 ist ein Blockdiagramm, das ein System 300, das den Hochleistungsspeicher managt, gemäß einer Ausführungsform zeigt. Das System 300 kann einen Direktzugriffsspeicher 302, Hochleistungsspeicher 304, und eine Speichermanagementeinheit 306 enthalten.
  • Der Direktzugriffsspeicher 302 kann verschiedene Arten von DRAM, wie DDR2, DDR3 oder DDR4 SDRAM enthalten. Andere Arten herkömmlicher Speicher können verwendet werden, wie SO-DIMM, SIMM oder dergleichen.
  • Der Hochleistungsspeicher 304 ist ein signifikant besserer Speicher als der Direktzugriffsspeicher 302. Beispiele für den Hochleistungsspeicher 304 enthalten, ohne aber darauf beschränkt zu sein, HMC, HBM, 3D Xpoint™, Universal Flash Storage (UFS), 3D NAND Flash, und Technologien, die um Wide I/O und verwandte Standards errichtet werden. In einer Ausführungsform ist der Hochleistungsspeicher 304 ein Speichermodul eines Speichers hoher Bandbreite (HBM). In einer anderen Ausführungsform ist der Hochleistungsspeicher 304 ein Speichermodul eines Hybrid-Speicherwürfels (HMC).
  • Die Speichermanagementeinheit 306 kann konfiguriert sein, um eine Ausführungsmetrik für mehrere Blöcke zu erhalten, die sich in einem Direktzugriffsspeicher 302 befinden, einen Block aus den mehreren Blöcken anhand der Aktivität des Blocks auszuwählen, den Block zum Hochleistungsspeicher 304 zu bewegen und eine virtuelle Speicherabbildung für den Block aus dem Direktzugriffsspeicher 302 zum Hochleistungsspeicher 304 zu aktualisieren. Die Blöcke, die sich im Direktzugriffsspeicher 302 und Hochleistungsspeicher 304 befinden, können in Listen kalter bzw. heißer Blöcke geführt werden, wie oben in Bezug auf 2 beschrieben.
  • In einer Ausführungsform ist der Block ein Speicher-Frame. In einer verwandten Ausführungsform besteht die Ausführungsmetrik aus Zugriffen auf den Speicher-Frame.
  • In einer Ausführungsform ordnet die Speichermanagementeinheit 306 für eine Auswahl des Blocks aus den mehreren Blöcken anhand der Aktivität des Blocks die Blöcke in den mehreren Blöcken nach Zugriffszahl und wählt einen Block mit einer höheren Zugriffszahl als ein nicht ausgewählter Block aus. Die geordneten Blöcke können in einer einzelnen Liste oder in mehreren Listen (z. B. Liste heißer und kalter Blöcke) geführt werden.
  • In einer Ausführungsform ist der Block ein Bytecode-Block von einem Bytecode einer Anwendung. In einer weiteren Ausführungsform ist der Bytecode-Block ein Verfahren der Anwendung. In einer verwandten Ausführungsform ist der Bytecode-Block eine Datenstruktur der Anwendung. In einer verwandten Ausführungsform ist der Bytecode-Block eine Schleife der Anwendung.
  • In einer Ausführungsform wird die Ausführungsmetrik von einer virtuellen Maschine erhalten, die die Anwendung laufen lässt. In einer weiteren Ausführungsform ruft die Speichermanagementeinheit 306, um die Ausführungsmetrik zu erhalten, einen Profiler der virtuellen Maschine auf, die Ausführungsmetrik zu erzeugen. In einer weiteren Ausführungsform besteht die Ausführungsmetrik aus Leistungszählern, die Aufrufe für den Bytecode-Block zählen. In einer weiteren Ausführungsform wählt die Speichermanagementeinheit 306, um den Block aus den mehreren Blöcken zu wählen, einen Block aus, der in den Hochleistungsspeicher 304 passt und eine höchste Leistungszählermetrik hat.
  • In einer Ausführungsform werden die Operationen der Speichermanagementeinheit 306 während einer Speicherbereinigungsoperation durchgeführt. In einer weiteren Ausführungsform werden die Operationen der Speichermanagementeinheit 306 während einer Bereinigungsverdichtungsoperation durchgeführt.
  • Die Blöcke können zum und vom Hochleistungsspeicher 304 anhand verschiedener Faktoren bewegt werden, wie der Ausführungsmetrik zusätzlicher aktiver Blöcke, Ausführung oder Beendigung von Anwendungen, die Speicher vom Hochleistungsspeicher 304 oder vom Direktzugriffsspeicher 302 zuordnen oder umordnen oder anderer Umstände, die einen zuvor „hoch aktiven“ Block als einen relativ „wenig aktiven“ Block in Bezug auf andere aktive Blöcke umreihen. Als solches bewegt in einer Ausführungsform die Speichermanagementeinheit 306 einen Block geringer Aktivität vom Hochleistungsspeicher zum Direktzugriffsspeicher und aktualisiert eine virtuelle Speicherabbildung für den Block vom Hochleistungsspeicher zum Direktzugriffs speicher.
  • 4 ist ein Flussdiagramm, das ein Verfahren 400 zum Managen eines Hochleistungsspeichers gemäß einer Ausführungsform zeigt. In Operation 402 wird die Ausführungsmetrik für mehrere Blöcke, die sich in einem Direktzugriffsspeicher befinden, an einer Speichermanagementeinheit erhalten. In einer Ausführungsform besteht die Ausführungsmetrik aus Zugriffen auf den Speicher-Frame. In einer weiteren Ausführungsform umfasst ein Auswählen des Blocks aus den mehreren Blöcken anhand der Aktivität des Blocks ein Ordnen von Blöcken in den mehreren Blöcken nach Zugriffszahl und Auswählen eines Blocks mit einer höheren Zugriffszahl als ein nicht ausgewählter Block.
  • In Operation 404 wird ein Block aus den mehreren Blöcken anhand der Aktivität des Blocks ausgewählt. In einer Ausführungsform ist der Block ein Speicher-Frame.
  • In einer Ausführungsform ist der Block ein Bytecode-Block von einem Bytecode einer Anwendung. In einer weiteren Ausführungsform ist der Bytecode-Block ein Verfahren der Anwendung. In einer verwandten Ausführungsform ist der Bytecode-Block eine Datenstruktur der Anwendung. In einer verwandten Ausführungsform ist der Bytecode-Block eine Schleife der Anwendung.
  • In einer verwandten Ausführungsform wird die Ausführungsmetrik von einer virtuellen Maschine erhalten, die die Anwendung laufen lässt. In einer weiteren Ausführungsform umfasst ein Erhalten der Ausführungsmetrik ein Aufrufen eines Profilers der virtuellen Maschine, um die Ausführungsmetrik zu erzeugen. In einer weiteren Ausführungsform besteht die Ausführungsmetrik aus Leistungszählern, die Aufrufe an den Bytecode-Block zählen. In einer verwandten Ausführungsform umfasst ein Auswählen des Blocks aus den mehreren Blöcken ein Auswählen eines Blocks, der in den Hochleistungsspeicher passt und eine höchste Leistungszählermetrik hat.
  • In Operation 406 wird der Block zum Hochleistungsspeicher bewegt, den Hochleistungsspeicher mit einer höheren Leistung als der Direktzugriffsspeicher. In einer Ausführungsform ist der Hochleistungsspeicher ein Speichermodul eines Speichers hoher Bandbreite (HBM). In einer verwandten Ausführungsform ist der Hochleistungsspeicher ein Speichermodul eines Hybrid-Speicherwürfels (HMC).
  • In Operation 408 wird ein virtueller Speicherabbildung für den Block aus dem Direktzugriffsspeicher zum Hochleistungsspeicher aktualisiert.
  • In einer Ausführungsform wird das Verfahren 400 während einer Speicherbereinigungsoperation durchgeführt. In einer weiteren Ausführungsform wird das Verfahren 400 während einer Bereinigungsverdichtungsoperation durchgeführt.
  • In einer Ausführungsform enthält das Verfahren 400 ein Bewegen eines Blocks geringer Aktivität vom Hochleistungsspeicher zum Direktzugriffsspeicher und Aktualisieren einer virtuellen Speicherabbildung für den Block vom Hochleistungsspeicher zum Direktzugriffsspeicher.
  • Ausführungsformen können in einer oder einer Kombination von Hardware, Firmware und Software implementiert werden. Ausführungsformen können auch als Anweisungen, die auf einer maschinenlesbaren Speichervorrichtung gespeichert sind, implementiert werden, die durch mindestens einen Prozessor gelesen und ausgeführt werden können, um die hier beschriebenen Operationen durchzuführen. Eine maschinenlesbare Speichervorrichtung kann einen nicht transitorischen Mechanismus zum Speichern von Informationen in einer Form enthalten, die durch eine Maschine (z. B. einen Computer) lesbar ist. Zum Beispiel kann eine maschinenlesbare Speichervorrichtung eine Nur-Lese-Speicher (ROM), einen Direktzugriffsspeicher (RAM), Magnetplattenspeichermedien, optische Speichermedien, Flash-Speichervorrichtungen und andere Speichervorrichtungen und -medien enthalten.
  • Es kann ein Prozessorteilsystem zum Ausführen der Anweisung auf dem maschinenlesbaren Medium verwendet werden. Das Prozessorteilsystem kann einen oder mehr Prozessoren, jeweils mit einem oder mehr Kernen enthalten. Zusätzlich kann das Prozessorteilsystem auf einer oder mehr physischen Vorrichtungen angeordnet sein. Das Prozessorteilsystem kann einen oder mehr spezialisierte Prozessoren enthalten, wie eine Grafikverarbeitungseinheit (GPU), einen Digitalsignalprozessor (DSP), ein feldprogrammierbares Gate-Array (FPGA) oder einen Prozessor mit festgesetzter Funktion.
  • Beispiele, wie hier beschrieben, können eine Logik oder Anzahl von Komponenten, Modulen oder Mechanismen enthalten oder auf diesen arbeiten. Module können Hardware, Software oder Firmware sein, die kommunikativ an einen oder mehr Prozessoren gekoppelt sind, um die hier beschriebenen Operationen auszuführen. Module können Hardware-Module sein und als solche Module können greifbare Einheiten angesehen werden, die imstande sind, spezielle Operationen auszuführen, und in einer bestimmten Weise konfiguriert oder angeordnet sein können. In einem Beispiel können Schaltungen in einer speziellen Weise als ein Modul angeordnet sein (z. B. intern oder in Bezug auf externe Einheiten wie andere Schaltungen). In einem Beispiel können die Gesamtheit oder ein Teil eines oder mehrerer Computersysteme (z. B. ein alleinstehendes, Client- oder Server-Computersystem) oder ein oder mehr Hardware-Prozessoren durch Firmware oder Software (z. B. Anweisungen, einen Anwendungsabschnitt oder eine Anwendung) als ein Modul konfiguriert sein, das arbeitet, um spezielle Operationen durchzuführen. In einem Beispiel kann sich die Software auf einem maschinenlesbaren Medium befinden. In einem Beispiel veranlasst die Software, wenn sie durch die darunterliegende Hardware des Moduls ausgeführt wird, dass die Hardware die speziellen Operationen ausführt. Daher ist der Begriff Hardware-Modul so zu verstehen, dass er eine greifbare Einheit umfasst, was heißt, dass die Einheit physisch konstruiert ist, speziell konfiguriert (z. B. hartverdrahtet), oder temporär (z. B. transitorisch) konfiguriert (z. B. programmiert) ist, um in einer speziellen Weise zu arbeiten oder einen Teil oder die Gesamtheit der hier beschriebenen Operation auszuführen. Bei Betrachtung von Beispielen, in welchen Module temporär konfiguriert sind, muss nicht jedes der Module in jedem Augenblick instanziiert sein. Wenn die Module zum Beispiel einen Allzweck-Hardware-Prozessor umfassen, der unter Verwendung von Software konfiguriert ist, kann der Allzweck-Hardware-Prozessor als jeweils ein anderes Module zu verschiedenen Zeitpunkten konfiguriert sein. Die Software kann daher einen Hardware-Prozessor zum Beispiel konfigurieren, ein bestimmtes Modul zu einem Zeitpunkt darzustellen und ein anderes Modul zu einem anderen Zeitpunkt darzustellen. Module können auch Software- oder Firmware-Module sein, die zum Durchführen der hier beschriebenen Methodologien arbeiten.
  • 5 ist ein Blockdiagramm, das eine Maschine in der beispielhaften Form eines Computersystems 500, in dem ein Satz oder eine Abfolge von Anweisungen ausgeführt werden kann, um die Maschine zu veranlassen, eine der hier besprochenen Methodologien auszuführen, gemäß einer beispielhaften Ausführungsform zeigt. In alternativen Ausführungsformen arbeitet die Maschine als alleinstehende Vorrichtung oder kann mit anderen Maschinen verbunden (z. B. vernetzt) sein. Bei einem vernetzten Einsatz kann die Maschine in der Kapazität entweder eines Servers oder einer Client-Maschine in Server-Client-Netzwerkumgebungen arbeiten oder kann als Peer-Maschine in Peer-zu-Peer (oder verteilten) Netzwerkumgebunden fungieren. Die Maschine kann ein System an Bord eines Fahrzeugs, eine tragbare Vorrichtung, ein Personal Computer (PC), ein Tablet PC, ein Hybrid-Tablet, ein Personal Digital Assistant (PDA), ein Mobiltelefon oder jede Maschine sein, die imstande ist, Anweisungen (der Reihe nach oder auf andere Weise) auszuführen, die Maßnahmen spezifizieren, die durch diese Maschine zu ergreifen sind. Während ferner nur eine einzige Maschine gezeigt ist, soll der Begriff „Maschine“ auch so verstanden werden, dass er eine Ansammlung von Maschinen enthält, die einzeln oder gemeinsam einen Satz (oder mehrere Sätze) von Anweisungen ausführen, um eine oder mehr der hier besprochenen Methodologien durchzuführen. Ebenso soll der Begriff „Prozessor-basiertes System“ so verstanden werden, dass er jeden Satz aus einer oder mehr Maschinen enthält, die durch einen Prozessor (z. B. einen Computer) gesteuert oder betrieben werden, um gemeinsam Anweisungen auszuführen, um eine oder mehr der hier besprochenen Methodologien durchzuführen.
  • Das beispielhafte Computersystem 500 enthält mindestens einen Prozessor 502 (z. B. eine zentrale Verarbeitungseinheit (CPU), eine Grafikverarbeitungseinheit (GPU) oder beide, Prozessorkerne, Rechenknoten usw.), einen Hauptspeicher 504 und einen statischen Speicher 506, die miteinander über eine Verbindung 508 (z. B. eine Bus) kommunizieren. Das Computersystem 500 kann ferner eine Videoanzeigeeinheit 510, eine alphanumerische Eingabevorrichtung 512 (z. B. eine Tastatur) und eine Benutzerschnittstellen- (UI) Navigationsvorrichtung 514 (z. B. eine Maus) enthalten. In einer Ausführungsform sind die Videoanzeigeeinheit 510, die Eingabevorrichtung 512 und die UI-Navigationsvorrichtung 514 in eine Berührungsbildschirmanzeige integriert. Das Computersystem 500 kann zusätzlich eine Speichervorrichtung 516 (z. B. eine Laufwerkeinheit), eine Signalgenerierungsvorrichtung 518 (z. B. einen Lautsprecher), eine Netzwerkschnittstellenvorrichtung 520 und einen oder mehr Sensoren (nicht dargestellt) enthalten, wie einen globalen Positionierungssystem- (GPS) Sensor, einen Kompass, einen Beschleunigungsmesser, ein Gyrometer, Magnetometer oder einen anderen Sensor.
  • Die Speichervorrichtung 516 enthält ein maschinenlesbares Medium 522, auf dem ein oder mehr Sätze von Datenstrukturen und Anweisungen 524 (z. B. Software) gespeichert sind, die durch eine oder mehr der hier beschriebenen Methodologien oder Funktionen verkörpert sind oder benutzt werden. Die Anweisungen 524 können auch während ihrer Ausführung durch das Computersystem 500 vollständig oder mindestens teilweise im Hauptspeicher 504, statischen Speicher 506 und/oder im Prozessor 502 liegen, wobei der Hauptspeicher 504, statische Speicher 506 und der Prozessor 502 auch maschinenlesbare Medien darstellen.
  • Während das maschinenlesbare Medium 522 in einer beispielhaften Ausführungsform als einzelnes Medium dargestellt ist, kann der Begriff „maschinenlesbares Medium“ ein einzelnes Medium oder mehrere Medien enthalten (z. B. eine zentralisierte oder verteilte Datenbank und/oder zugehörige Caches und Server), die die eine oder mehr Anweisungen 524 speichern. Der Begriff „maschinenlesbares Medium“ soll auch so verstanden werden, dass er jedes greifbare Medium enthält, das imstande ist, Anweisungen zur Ausführung durch die Maschine zu speichern, zu codieren oder zu tragen, und das die Maschine veranlasst, eine oder mehr der Methodologien der vorliegenden Offenbarung durchzuführen, oder das imstande ist, Datenstrukturen zu speichern, zu codieren oder zu tragen, die durch solche Anweisungen benutzt oder mit diesen verknüpft sind. Der Begriff „maschinenlesbares Medium“ soll daher so verstanden werden, dass er, ohne aber darauf beschränkt zu sein, Solid-State-Speicher und optische und magnetische Medien enthält. Spezielle Beispiele für maschinenlesbare Medien enthalten nicht flüchtige Speicher, enthaltend zum Beispiel, ohne aber darauf beschränkt zu sein, Halbleiterspeichervorrichtungen (z. B. elektrisch programmierbarer Nur-Lese-Speicher (EPROM), elektrisch löschbarer programmierbarer Nur-Lese-Speicher (EEPROM)) und Flash-Speichervorrichtungen; Magnetplatten wie interne Festplatten und entfernbare Platten; magneto-optische Platten; und CD-ROM und DVD-ROM-Platten.
  • Die Anweisungen 524 können ferner über ein Kommunikationsnetzwerk 526 unter Verwendung eines Übertragungsmediums über die Netzwerkschnittstellenvorrichtung 520 unter Verwendung eines von zahlreichen gut bekannten Übertragungsprotokollen (z. B. HTTP) gesendet oder empfangen werden. Beispiele für Kommunikationsnetzwerke enthalten ein lokales Netzwerk (LAN), ein Weitverkehrsnetzwerk (WAN), das Internet, Mobiltelefonnetzwerke, Festnetzwerke (POTS) und drahtlose Datennetzwerke (z. B. Bluetooth, Wi-Fi, 3G, und 4G LTE/LTE-A oder WiMAX Netzwerke). Der Begriff „Übertragungsmedium“ soll so verstanden werden, dass er jedes nicht greifbare Medium enthält, das imstande ist, Anweisungen zur Ausführung durch die Maschine zu speichern, zu codieren oder zu tragen, und enthält digitale oder analoge Kommunikationssignale oder ein anderes nicht greifbares Medium, um eine Kommunikation solch einer Software zu erleichtern.
  • Zusätzliche Anmerkungen & Beispiele:
  • Beispiel 1 enthält einen Gegenstand (wie eine Vorrichtung, einen Apparat oder eine Maschine) zum Managen eines Hochleistungsspeichers, umfassend: einen Direktzugriffsspeicher; einen Hochleistungsspeicher, wobei der Hochleistungsspeicher eine höhere Leistung als der Direktzugriffsspeicher hat; und eine Speichermanagementeinheit zum: Erhalten einer Ausführungsmetrik für mehrere Blöcke, die sich in einem Direktzugriffsspeicher befinden; Auswählen eines Blocks aus den mehreren Blöcken anhand der Aktivität des Blocks; Bewegen des Blocks zum Hochleistungsspeicher; und Aktualisieren einer virtuellen Speicherabbildung für den Block vom Direktzugriffsspeicher zum Hochleistungsspeicher.
  • Beispiel 2 kann den Gegenstand von Beispiel 1 enthalten, wobei der Block ein Speicher-Frame ist.
  • Beispiel 3 kann den Gegenstand eines der Beispiele 1 bis 2 enthalten, wobei die Ausführungsmetrik aus Zugriffen auf den Speicher-Frame besteht.
  • Beispiel 4 kann den Gegenstand eines der Beispiele 1 bis 3 enthalten, wobei zur Auswahl des Blocks aus den mehreren Blöcken anhand der Aktivität des Blocks die Speichermanagementeinheit dient zum: Ordnen der Blöcke in den mehreren Blöcken nach Zugriffszahl; und Auswählen eines Blocks mit einer höheren Zugriffszahl als ein nicht ausgewählter Block.
  • Beispiel 5 kann den Gegenstand eines der Beispiele 1 bis 4 enthalten, wobei der Block ein Bytecode-Block von einem Bytecode einer Anwendung ist.
  • Beispiel 6 kann den Gegenstand eines der Beispiele 1 bis 5 enthalten, wobei der Bytecode-Block ein Verfahren der Anwendung ist.
  • Beispiel 7 kann den Gegenstand eines der Beispiele 1 bis 6 enthalten, wobei der Bytecode-Block eine Datenstruktur der Anwendung ist.
  • Beispiel 8 kann den Gegenstand eines der Beispiele 1 bis 7 enthalten, wobei der Bytecode-Block eine Schleife der Anwendung ist.
  • Beispiel 9 kann den Gegenstand eines der Beispiele 1 bis 8 enthalten, wobei die Ausführungsmetrik von einer virtuellen Maschine erhalten wird, die die Anwendung laufen lässt.
  • Beispiel 10 kann den Gegenstand eines der Beispiele 1 bis 9 enthalten, wobei zum Erhalten der Ausführungsmetrik die Speichermanagementeinheit einen Profiler der virtuellen Maschine aufruft, um die Ausführungsmetrik zu erzeugen.
  • Beispiel 11 kann den Gegenstand eines der Beispiele 1 bis 10 enthalten, wobei die Ausführungsmetrik aus Leistungszählern besteht, die Aufrufe an den Bytecode-Block zählen.
  • Beispiel 12 kann den Gegenstand eines der Beispiele 1 bis 11 enthalten, wobei zum Auswählen des Blocks aus den mehreren Blöcken die Speichermanagementeinheit einen Block auswählt, der in den Hochleistungsspeicher passt und eine höchste Leistungszählermetrik hat.
  • Beispiel 13 kann den Gegenstand eines der Beispiele 1 bis 12 enthalten, wobei der Hochleistungsspeicher ein Speichermodul eines Speichers hoher Bandbreite (HBM) ist.
  • Beispiel 14 kann den Gegenstand eines der Beispiele 1 bis 13 enthalten, wobei der Hochleistungsspeicher ein Speichermodul eines Hybrid-Speicherwürfels (HMC) ist.
  • Beispiel 15 kann den Gegenstand eines der Beispiele 1 bis 14 enthalten, wobei die Operationen der Speichermanagementeinheit während einer Speicherbereinigungsoperation durchgeführt werden.
  • Beispiel 16 kann den Gegenstand eines der Beispiele 1 bis 15 enthalten, wobei die Operationen der Speichermanagementeinheit während einer Bereinigungsverdichtungsoperation durchgeführt werden.
  • Beispiel 17 kann den Gegenstand eines der Beispiele 1 bis 16 enthalten, wobei das Speichermanagementeinheit dient zum: Bewegen eines Blocks geringer Aktivität vom Hochleistungsspeicher zum Direktzugriffsspeicher; und Aktualisieren einer virtuellen Speicherabbildung für den Block vom Hochleistungsspeicher zum Direktzugriffsspeicher.
  • Beispiel 18 enthält einen Gegenstand (wie ein Verfahren, Mittel zum Durchführen von Maßnahmen, ein maschinenlesbares Medium, das Anweisungen enthält, die, wenn sie durch eine Maschine ausgeführt werden, die Maschine veranlassen, Maßnahmen durchzuführen, oder einen Apparat zum Durchführen) zum Managen eines Hochleistungsspeichers, umfassend: Erhalten, an einer Speichermanagementeinheit, einer Ausführungsmetrik für mehrere Blöcke, die sich in einem Direktzugriffsspeicher befinden; Auswählen eines Blocks aus den mehreren Blöcken anhand der Aktivität des Blocks; Bewegen des Blocks zum Hochleistungsspeicher, wobei der Hochleistungsspeicher eine höhere Leistung als der Direktzugriffsspeicher hat; und Aktualisieren einer virtuellen Speicherabbildung für den Block vom Direktzugriffsspeicher zum Hochleistungsspeicher.
  • Beispiel 19 enthält den Gegenstand von Beispiel 18, wobei der Block ein Speicher-Frame ist.
  • Beispiel 20 kann den Gegenstand eines der Beispiele 18 bis 19 enthalten, wobei die Ausführungsmetrik aus Zugriffen auf den Speicher-Frame besteht.
  • Beispiel 21 kann den Gegenstand eines der Beispiele 18 bis 20 enthalten, wobei das Auswählen des Blocks aus den mehreren Blöcken anhand der Aktivität des Blocks umfasst: Ordnen von Blöcken in den mehreren Blöcken nach Zugriffszahl; und Auswählen eines Blocks mit einer höheren Zugriffszahl als ein nicht ausgewählter Block.
  • Beispiel 22 kann den Gegenstand eines der Beispiele 18 bis 21 enthalten, wobei der Block ein Bytecode-Block von einem Bytecode einer Anwendung ist.
  • Beispiel 23 kann den Gegenstand eines der Beispiele 18 bis 22 enthalten, wobei der Bytecode-Block ein Verfahren der Anwendung ist.
  • Beispiel 24 kann den Gegenstand eines der Beispiele 18 bis 23 enthalten, wobei der Bytecode-Block eine Datenstruktur der Anwendung ist.
  • Beispiel 25 kann den Gegenstand eines der Beispiele 18 bis 24 enthalten, wobei der Bytecode-Block eine Schleife der Anwendung ist.
  • Beispiel 26 kann den Gegenstand eines der Beispiele 18 bis 25 enthalten, wobei die Ausführungsmetrik von einer virtuellen Maschine erhalten wird, die die Anwendung laufen lässt.
  • Beispiel 27 kann den Gegenstand eines der Beispiele 18 bis 26 enthalten, wobei das Erhalten der Ausführungsmetrik ein Aufrufen eines Profilers der virtuellen Maschine umfasst, um die Ausführungsmetrik zu erzeugen.
  • Beispiel 28 kann den Gegenstand eines der Beispiele 18 bis 27 enthalten, wobei die Ausführungsmetrik aus Leistungszählern besteht, die Aufrufe an den Bytecode-Block zählen.
  • Beispiel 29 kann den Gegenstand eines der Beispiele 18 bis 28 enthalten, wobei das Auswählen des Blocks aus den mehreren Blöcken ein Auswählen eines Blocks umfasst, der in den Hochleistungsspeicher passt und eine höchste Leistungszählermetrik hat.
  • Beispiel 30 kann den Gegenstand eines der Beispiele 18 bis 29 enthalten, wobei der Hochleistungsspeicher ein Speichermodul eines Speichers hoher Bandbreite (HBM) ist.
  • Beispiel 31 kann den Gegenstand eines der Beispiele 18 bis 30 enthalten, wobei der Hochleistungsspeicher ein Speichermodul eines Hybrid-Speicherwürfels (HMC) ist.
  • Beispiel 32 kann den Gegenstand eines der Beispiele 18 bis 31 enthalten, wobei das Verfahren während einer Speicherbereinigungsoperation durchgeführt wird.
  • Beispiel 33 kann den Gegenstand eines der Beispiele 18 bis 32 enthalten, wobei das Verfahren während einer Bereinigungsverdichtungsoperation durchgeführt wird.
  • Beispiel 34 kann den Gegenstand eines der Beispiele 18 bis 33 ein Bewegen eines Blocks geringer Aktivität vom Hochleistungsspeicher zum Direktzugriffsspeicher; und ein Aktualisieren einer virtuellen Speicherabbildung für den Block vom Hochleistungsspeicher zum Direktzugriffsspeicher enthalten.
  • Beispiel 35 enthält mindestens ein maschinenlesbares Medium, das Anweisungen enthält, die, wenn sie durch eine Maschine ausgeführt werden, die Maschine veranlassen, Operationen eines der Beispiele 18-34 durchzuführen.
  • Beispiel 36 enthält einen Apparat, umfassend Mittel zum Durchführen eines der Beispiele 18-34.
  • Beispiel 37 enthält einen Gegenstand (wie eine Vorrichtung, einen Apparat oder eine Maschine) zum Managen eines Hochleistungsspeichers, umfassend: Mittel zum Erhalten, an einer Speichermanagementeinheit, einer Ausführungsmetrik für mehrere Blöcke, die sich in einem Direktzugriffsspeicher befinden; Mittel zum Auswählen eines Blocks aus den mehreren Blöcken anhand der Aktivität des Blocks; Mittel zum Bewegen des Blocks zum Hochleistungsspeicher, wobei der Hochleistungsspeicher eine höhere Leistung als der Direktzugriffsspeicher hat; und Mittel zum Aktualisieren einer virtuellen Speicherabbildung für den Block vom Direktzugriffsspeicher zum Hochleistungsspeicher.
  • Beispiel 38 enthält den Gegenstand von Beispiel 37, wobei der Block ein Speicher-Frame ist.
  • Beispiel 39 kann den Gegenstand eines der Beispiele 37 bis 38 enthalten, wobei die Ausführungsmetrik aus Zugriffen auf den Speicher-Frame besteht.
  • Beispiel 40 kann den Gegenstand eines der Beispiele 37 bis 39 enthalten, wobei die Mittel zum Auswählen des Blocks aus den mehreren Blöcken anhand der Aktivität des Blocks umfassen: Mittel zum Ordnen von Blöcken in den mehreren Blöcken nach Zugriffszahl; und Mittel zum Auswählen eines Blocks mit einer höheren Zugriffszahl als ein nicht ausgewählter Block.
  • Beispiel 41 kann den Gegenstand eines der Beispiele 37 bis 40 enthalten, wobei der Block ein Bytecode-Block von einem Bytecode einer Anwendung ist.
  • Beispiel 42 kann den Gegenstand eines der Beispiele 37 bis 41 enthalten, wobei der Bytecode-Block ein Verfahren der Anwendung ist.
  • Beispiel 43 kann den Gegenstand eines der Beispiele 37 bis 42 enthalten, wobei der Bytecode-Block eine Datenstruktur der Anwendung ist.
  • Beispiel 44 kann den Gegenstand eines der Beispiele 37 bis 43 enthalten, wobei der Bytecode-Block eine Schleife der Anwendung ist.
  • Beispiel 45 kann den Gegenstand eines der Beispiele 37 bis 44 enthalten, wobei die Ausführungsmetrik von einer virtuellen Maschine erhalten wird, die die Anwendung laufen lässt.
  • Beispiel 46 kann den Gegenstand eines der Beispiele 37 bis 45 enthalten, wobei die Mittel zum Erhalten der Ausführungsmetrik Mittel zum Aufrufen eines Profilers der virtuellen Maschine umfassen, um die Ausführungsmetrik zu erzeugen.
  • Beispiel 47 kann den Gegenstand eines der Beispiele 37 bis 46 enthalten, wobei die Ausführungsmetrik aus Leistungszählern besteht, die Aufrufe an den Bytecode-Block zählen.
  • Beispiel 48 kann den Gegenstand eines der Beispiele 37 bis 47 enthalten, wobei die Mittel zum Auswählen des Blocks aus den mehreren Blöcken Mittel zum Auswählen eines Blocks umfassen, der in den Hochleistungsspeicher passt und eine höchste Leistungszählermetrik hat.
  • Beispiel 49 kann den Gegenstand eines der Beispiele 37 bis 48 enthalten, wobei der Hochleistungsspeicher ein Speichermodul eines Speichers hoher Bandbreite (HBM) ist.
  • Beispiel 50 kann den Gegenstand eines der Beispiele 37 bis 49 enthalten, wobei der Hochleistungsspeicher ein Speichermodul eines Hybrid-Speicherwürfels (HMC) ist.
  • Beispiel 51 kann den Gegenstand eines der Beispiele 37 bis 50 enthalten, wobei die Operationen von Anspruch 37 während einer Speicherbereinigungsoperation durchgeführt werden.
  • Beispiel 52 kann den Gegenstand eines der Beispiele 37 bis 51 enthalten, wobei die Operationen von Anspruch 37 während einer Bereinigungsverdichtungsoperation durchgeführt werden.
  • In Beispiel 53 kann der Gegenstand eines der Beispiele 37 bis 52 Mittel zum Bewegen eines Blocks geringer Aktivität vom Hochleistungsspeicher zum Direktzugriffsspeicher; und Mittel zum Aktualisieren einer virtuellen Speicherabbildung für den Block vom Hochleistungsspeicher zum Direktzugriffsspeicher enthalten.
  • Beispiel 54 enthält einen Gegenstand (wie eine Vorrichtung, einen Apparat oder eine Maschine) zum Managen eines Hochleistungsspeichers, umfassend: ein Prozessorteilsystem; und einen Speicher, der Anweisungen enthält, die, wenn sie durch das Prozessorteilsystem ausgeführt werden, das Prozessorteilsystem veranlassen zum: Erhalten, an einer Speichermanagementeinheit, einer Ausführungsmetrik für mehrere Blöcke, die sich in einem Direktzugriffsspeicher befinden; Auswählen eines Blocks aus den mehreren Blöcken anhand der Aktivität des Blocks; Bewegen des Blocks zum Hochleistungsspeicher, wobei der Hochleistungsspeicher eine höhere Leistung als der Direktzugriffsspeicher hat; und Aktualisieren einer virtuellen Speicherabbildung für den Block vom Direktzugriffsspeicher zum Hochleistungsspeicher.
  • Beispiel 55 enthält den Gegenstand von Beispiel 54, wobei der Block ein Speicher-Frame ist.
  • Beispiel 56 kann den Gegenstand eines der Beispiele 54 bis 55 enthalten, wobei die Ausführungsmetrik aus Zugriffen auf den Speicher-Frame besteht.
  • Beispiel 57 kann den Gegenstand eines der Beispiele 54 bis 56 enthalten, wobei die Anweisungen zum Auswählen des Blocks aus den mehreren Blöcken anhand der Aktivität des Blocks Anweisungen umfassen zum: Ordnen der Blöcke in den mehreren Blöcken nach Zugriffszahl; und Auswählen eines Blocks mit einer höheren Zugriffszahl als ein nicht ausgewählter Block.
  • Beispiel 58 kann den Gegenstand eines der Beispiele 54 bis 57 enthalten, wobei der Block ein Bytecode-Block von einem Bytecode einer Anwendung ist.
  • Beispiel 59 kann den Gegenstand eines der Beispiele 54 bis 58 enthalten, wobei der Bytecode-Block ein Verfahren der Anwendung ist.
  • Beispiel 60 kann den Gegenstand eines der Beispiele 54 bis 59 enthalten, wobei der Bytecode-Block eine Datenstruktur der Anwendung ist.
  • Beispiel 61 kann den Gegenstand eines der Beispiele 54 bis 60 enthalten, wobei der Bytecode-Block eine Schleife der Anwendung ist.
  • Beispiel 62 kann den Gegenstand eines der Beispiele 54 bis 61 enthalten, wobei die Ausführungsmetrik von einer virtuellen Maschine erhalten wird, die die Anwendung laufen lässt.
  • Beispiel 63 kann den Gegenstand eines der Beispiele 54 bis 62 enthalten, wobei die Anweisungen zum Erhalten der Ausführungsmetrik Anweisungen zum Aufrufen eines Profilers der virtuellen Maschine umfassen, um die Ausführungsmetrik zu erzeugen.
  • Beispiel 64 kann den Gegenstand eines der Beispiele 54 bis 63 enthalten, wobei die Ausführungsmetrik aus Leistungszählern besteht, die Aufrufe an den Bytecode-Block zählen.
  • Beispiel 65 kann den Gegenstand eines der Beispiele 54 bis 64 enthalten, wobei die Anweisungen zum Auswählen des Blocks aus den mehreren Blöcken Anweisungen zum Auswählen eines Blocks umfassen, der in den Hochleistungsspeicher passt und eine höchste Leistungszählermetrik hat.
  • Beispiel 66 kann den Gegenstand eines der Beispiele 54 bis 65 enthalten, wobei der Hochleistungsspeicher ein Speichermodul eines Speichers hoher Bandbreite (HBM) ist.
  • Beispiel 67 kann den Gegenstand eines der Beispiele 54 bis 66 enthalten, wobei der Hochleistungsspeicher ein Speichermodul eines Hybrid-Speicherwürfels (HMC) ist.
  • Beispiel 68 kann den Gegenstand eines der Beispiele 54 bis 67 enthalten, wobei die Anweisungen von Anspruch 54 während einer Speicherbereinigungsoperation durchgeführt werden.
  • Beispiel 69 kann den Gegenstand eines der Beispiele 54 bis 68 enthalten, wobei die Anweisungen von Anspruch 54 während einer Bereinigungsverdichtungsoperation durchgeführt werden.
  • In Beispiel 70 kann den Gegenstand eines der Beispiele 54 bis 69 Anweisungen enthalten zum: Bewegen eines Blocks geringer Aktivität vom Hochleistungsspeicher zum Direktzugriffsspeicher; und Aktualisieren einer virtuellen Speicherabbildung für den Block vom Hochleistungsspeicher zum Direktzugriffs speicher.
  • Die obenstehende ausführliche Beschreibung enthält Verweise auf die beiliegenden Zeichnungen, die Teil der ausführlichen Beschreibung bilden. Die Zeichnungen zeigen spezielle Ausführungsformen zur Veranschaulichung, die in die Praxis umgesetzt werden können. Diese Ausführungsformen werden hier auch als „Beispiele“ bezeichnet. Solche Beispiele können Elemente zusätzlich zu den dargestellten oder beschriebenen enthalten. Es werden jedoch auch Beispiele in Betracht gezogen, die die dargestellten oder beschriebenen Elemente enthalten. Ferner werden auch Beispiele in Betracht gezogen, die eine Kombination oder Umsetzung der dargestellten oder beschriebenen Elemente (oder eines Aspekts oder mehrerer Aspekte davon) entweder in Bezug auf ein bestimmtes Beispiel (oder einen oder mehr Aspekte davon) oder in Bezug auf andere Beispiele (oder einen oder mehr Aspekte davon), die hier dargestellt oder beschrieben sind, verwenden.
  • Veröffentlichungen, Patente und Patentdokumente, auf die in diesem Dokument Bezug genommen wird, werden hier in ihrer Gesamtheit zum Zwecke der Bezugnahme zitiert. Im Fall einer widersprüchlichen Verwendung zwischen diesem Dokument und den zur Bezugnahme zitierten Dokumenten ist die Verwendung in der (den) zitierten Referenz(en) eine Ergänzung zu jener dieses Dokuments; bei unvereinbaren Widersprüchen gilt die Verwendung in diesem Dokument.
  • In diesem Dokument werden die Begriffe „einer“, „eine“ oder „ein“ wie in Patentdokumenten üblich verwendet und enthalten mehr als eines, unabhängig von anderen Instanzen oder Nutzungen von „mindestens ein“ oder „ein oder mehr.“ In diesem Dokument wird der Begriff „oder“ verwendet, um sich auf ein nicht ausschließliches oder zu beziehen, sodass „A oder B“ „A, aber nicht B“, „B, aber nicht A“ und „A und B“ enthält, falls nicht anderes angegeben ist. In den beiliegenden Ansprüchen werden die Begriffe „enthaltend“ und „in welchen“ als rein deutsche Äquivalente der entsprechenden Begriffe „umfassend“ und „wobei“ verwendet. Ebenso sind in den folgenden Ansprüchen die Begriffe „enthaltend“ und „umfassend“ offen, das heißt, ein System, eine Vorrichtung, ein Artikel oder ein Prozess, das/die/der Elemente zusätzlich zu den nach einem solchen Begriff aufgezählten enthält, werden noch immer als im Umfang dieses Anspruchs liegend erachtet. Ferner werden in den folgenden Ansprüchen die Begriffe „erster“, „zweiter“ und „dritter“ usw. nur als Etiketten verwendet und sollen keine numerische Reihenfolge für ihre Objekte nahelegen.
  • Die obenstehende Beschreibung soll veranschaulichend, nicht einschränkend sein. Zum Beispiel können die oben beschriebenen Beispiele (oder ein oder mehr Aspekte davon) in Kombination mit anderen verwendet werden. Andere Ausführungsformen können verwendet werden, wie durch einen Durchschnittsfachmann auf dem Gebiet beim Durchlesen der obenstehenden Beschreibung. Die Zusammenfassung soll dem Leser ein rasches Erfassen der Art der technischen Offenbarung ermöglichen. Sie wird mit dem Verständnis vorgelegt, dass sie nicht zur Interpretation oder Einschränkung des Umfangs oder der Bedeutung der Ansprüche verwendet wird. Ebenso können in der obenstehenden ausführlichen Beschreibung verschiedene Merkmale zusammen gruppiert sein, um die Offenbarung zu straffen. Die Ansprüche können jedoch nicht jedes offenbarte Merkmal anführen, da Ausführungsformeneinen Teilsatz der Merkmale aufweisen können. Ferner können Ausführungsformen weniger Merkmale als jene enthalten, die in einem bestimmten Beispiel offenbart sind. Somit werden die folgenden Ansprüche hiermit in die ausführliche Beschreibung aufgenommen, wobei ein Anspruch als separate Ausführungsform für sich steht. Der Umfang der hier offenbarten Ausführungsformen ist unter Bezugnahme auf die beiliegenden Ansprüche zu bestimmen, gemeinsam mit dem vollen Umfang von Äquivalenten, zu welchen solche Ansprüche berechtigt sind.

Claims (25)

  1. System zum Managen eines Hochleistungsspeichers, das System umfassend: einen Direktzugriffsspeicher; einen Hochleistungsspeicher, wobei der Hochleistungsspeicher eine höhere Leistung als der Direktzugriffsspeicher hat; und eine Speichermanagementeinheit zum: Erhalten einer Ausführungsmetrik für mehrere Blöcke, die sich in einem Direktzugriffsspeicher befinden; Auswählen eines Blocks aus den mehreren Blöcken anhand der Aktivität des Blocks; Bewegen des Blocks zum Hochleistungsspeicher; und Aktualisieren einer virtuellen Speicherabbildung für den Block vom Direktzugriffsspeicher zum Hochleistungsspeicher.
  2. System nach Anspruch 1, wobei der Block ein Speicher-Frame ist.
  3. System nach Anspruch 2, wobei die Ausführungsmetrik aus Zugriffen auf den Speicher-Frame besteht.
  4. System nach Anspruch 3, wobei zur Auswahl des Blocks aus den mehreren Blöcken anhand der Aktivität des Blocks die Speichermanagementeinheit dient zum: Ordnen der Blöcke in den mehreren Blöcken nach Zugriffszahl; und Auswählen eines Blocks mit einer höheren Zugriffszahl als ein nicht ausgewählter Block.
  5. System nach Anspruch 1, wobei der Block ein Bytecode-Block von einem Bytecode einer Anwendung ist.
  6. System nach Anspruch 5, wobei der Bytecode-Block ein Verfahren der Anwendung ist.
  7. System nach Anspruch 5, wobei der Bytecode-Block eine Datenstruktur der Anwendung ist.
  8. System nach Anspruch 5, wobei der Bytecode-Block eine Schleife der Anwendung ist.
  9. System nach Anspruch 5, wobei die Ausführungsmetrik von einer virtuellen Maschine erhalten wird, die die Anwendung laufen lässt.
  10. System nach Anspruch 9, wobei zum Erhalten der Ausführungsmetrik die Speichermanagementeinheit einen Profiler der virtuellen Maschine aufruft, um die Ausführungsmetrik zu erzeugen.
  11. Managementverfahren für einen Hochleistungsspeicher, das Verfahren umfassend: Erhalten, an einer Speichermanagementeinheit, einer Ausführungsmetrik für mehrere Blöcke, die sich in einem Direktzugriffsspeicher befinden; Auswählen eines Blocks aus den mehreren Blöcken anhand der Aktivität des Blocks; Bewegen des Blocks zum Hochleistungsspeicher, wobei der Hochleistungsspeicher eine höhere Leistung als der Direktzugriffsspeicher hat; und Aktualisieren einer virtuellen Speicherabbildung für den Block vom Direktzugriffsspeicher zum Hochleistungsspeicher.
  12. Verfahren nach Anspruch 11, wobei der Block ein Speicher-Frame ist.
  13. Verfahren nach Anspruch 12, wobei die Ausführungsmetrik aus Zugriffen auf den Speicher-Frame besteht.
  14. Verfahren nach Anspruch 13, wobei das Auswählen des Blocks aus den mehreren Blöcken anhand der Aktivität des Blocks umfasst: Ordnen von Blöcken in den mehreren Blöcken nach Zugriffszahl; und Auswählen eines Blocks mit einer höheren Zugriffszahl als ein nicht ausgewählter Block.
  15. Verfahren nach Anspruch 11, wobei der Block ein Bytecode-Block von einem Bytecode einer Anwendung ist.
  16. Verfahren nach Anspruch 15, wobei der Bytecode-Block ein Verfahren der Anwendung ist.
  17. Verfahren nach Anspruch 15, wobei der Bytecode-Block eine Datenstruktur der Anwendung ist.
  18. Verfahren nach Anspruch 15, wobei der Bytecode-Block eine Schleife der Anwendung ist.
  19. Verfahren nach Anspruch 15, wobei die Ausführungsmetrik von einer virtuellen Maschine erhalten wird, die die Anwendung laufen lässt.
  20. Verfahren nach Anspruch 19, wobei das Erhalten der Ausführungsmetrik ein Aufrufen eines Profilers der virtuellen Maschine umfasst, um die Ausführungsmetrik zu erzeugen.
  21. Verfahren nach Anspruch 20, wobei die Ausführungsmetrik aus Leistungszählern besteht, die Aufrufe an den Bytecode-Block zählen.
  22. Verfahren nach Anspruch 21, wobei das Auswählen des Blocks aus den mehreren Blöcken ein Auswählen eines Blocks umfasst, der in den Hochleistungsspeicher passt und eine höchste Leistungszählermetrik hat.
  23. Verfahren nach Anspruch 11, wobei der Hochleistungsspeicher ein Speichermodul eines Speichers hoher Bandbreite (HBM) ist.
  24. Mindestens ein maschinenlesbares Medium, enthaltend Anweisungen, die, wenn sie durch eine Maschine ausgeführt werden, die Maschine veranlassen, Operationen eines der Verfahren nach Ansprüchen 11-23 durchzuführen.
  25. Apparat, umfassend Mittel zum Durchführen eines der Verfahren nach Ansprüchen 11-23.
DE112016005970.1T 2015-12-23 2016-11-04 Speichermanagement eines Hochleistungsspeichers Pending DE112016005970T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/757,418 US20170185292A1 (en) 2015-12-23 2015-12-23 Memory Management of High-Performance Memory
US14/757,418 2015-12-23
PCT/US2016/060450 WO2017112109A1 (en) 2015-12-23 2016-11-04 Memory management of high-performance memory

Publications (1)

Publication Number Publication Date
DE112016005970T5 true DE112016005970T5 (de) 2018-10-04

Family

ID=59086530

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112016005970.1T Pending DE112016005970T5 (de) 2015-12-23 2016-11-04 Speichermanagement eines Hochleistungsspeichers

Country Status (4)

Country Link
US (1) US20170185292A1 (de)
CN (1) CN108292265B (de)
DE (1) DE112016005970T5 (de)
WO (1) WO2017112109A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10509721B2 (en) 2017-11-09 2019-12-17 Microsoft Technology Licensing, Llc Performance counters for computer memory

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1331565B1 (de) * 2002-01-29 2018-09-12 Texas Instruments France Profilieren von Anwendungsausführung in Verbindung mit einer virtuellen Machine
US8375190B2 (en) * 2007-12-11 2013-02-12 Microsoft Corporation Dynamtic storage hierarachy management
US9218206B2 (en) * 2011-06-20 2015-12-22 Microsoft Technology Licensing, Llc Memory management model and interface for new applications
EP3451176B1 (de) * 2011-09-30 2023-05-24 Intel Corporation Vorrichtung und verfahren zur implementierung einer mehrstufigen speicherhierarchie mit verschiedenen betriebsmodi
CN108549609B (zh) * 2011-09-30 2022-06-21 英特尔公司 作为传统大容量存储设备的替代的非易失性随机存取存储器(nvram)
US8738877B2 (en) * 2011-12-14 2014-05-27 Advance Micro Devices, Inc. Processor with garbage-collection based classification of memory
US9047090B2 (en) * 2012-08-07 2015-06-02 Qualcomm Incorporated Methods, systems and devices for hybrid memory management
US9110592B2 (en) * 2013-02-04 2015-08-18 Microsoft Technology Licensing, Llc Dynamic allocation of heterogenous memory in a computing system
US9734079B2 (en) * 2013-06-28 2017-08-15 Intel Corporation Hybrid exclusive multi-level memory architecture with memory management

Also Published As

Publication number Publication date
WO2017112109A1 (en) 2017-06-29
CN108292265A (zh) 2018-07-17
US20170185292A1 (en) 2017-06-29
CN108292265B (zh) 2023-12-05

Similar Documents

Publication Publication Date Title
DE112016001075B4 (de) Verteiltes speichern und abrufen von datensätzen
DE102016211642B4 (de) Patch-speichersystem
DE102018128775A1 (de) Ein erweiterbares baumbasiertes Indexierungsframework, das Erweiterung des Hadoop Distributed File System ermöglicht
DE102011076895B4 (de) Cachekohärenzprotokoll für persistente Speicher
DE112012000749B4 (de) Techniken zum Verwalten des Stromverbrauchszustands eines Prozessors
DE102017128952A1 (de) Datenspeichervorrichtung, die konfiguriert ist, um eine nicht-blockierende Steuerungs-Aktualisierungsoperation auszuführen
DE102018113447A1 (de) Speichervorrichtung zum Koppeln mit einem Host und Verfahren zum Betreiben des Hosts und der Speichervorrichtung
DE112017004808T5 (de) Dynamische zuteilung virtueller cpu-kerne
DE102010044529B4 (de) Autonomes speicher-sub-system mit hardwarebeschleuniger
DE102010001339A1 (de) Verwalten von Anforderungen von Betriebssystemen, die in virtuellen Maschinen ablaufen
DE202014010903U1 (de) System für die Angabe des Benutzerstandortes und der Blickrichtung einer digitalen Karte
DE202012013460U1 (de) Vorabrufen von Kartenkacheldaten, basierend auf einer von einem mobilen Gerät generierten Ereignisanalyse
DE102018123669A1 (de) Host-Computer-Anordnung, Remote-Server-Anordnung, Speicherungssystem und Verfahren davon
DE102013017511A1 (de) Effiziente speichervirtualisierung in mehrsträngigen verarbeitungseinheiten
DE102017213160B4 (de) Kompilierung für knotenvorrichtungs-GPU-basierte Parallelverarbeitung
DE112020003929B4 (de) Verwaltung von metadaten von virtuellen speichern
DE102018209205A1 (de) Datenspeicher mit intelligentem Speicher oder Ladeverfahren und -vorrichtung
DE202012013405U1 (de) Cloud-zu Gerät-Nachrichtenübermittlung zur Anwendungsaktivierung und Meldung
DE102019102883A1 (de) Technologien zum Bewegen von Arbeitslasten zwischen Hardwarewarteschlangenmanagern
DE112014002754T5 (de) Effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus
DE102013020485A1 (de) Technik zur Ausführung von Speicherzugriffsoperationen über eine Textur-Hardware
DE102019103114A1 (de) Speichersteuereinrichtung und Anwendungsprozessor für eine gesteuerte Auslastung und Leistung einer Eingabe/Ausgabe-Vorrichtung und Verfahren zur Betätigung der Speichersteuereinrichtung
DE102020103521A1 (de) Minimieren der Nutzung von Hardware-Zählern bei getriggerten Operationen für kollektive Kommunikation
DE102022129936A1 (de) Techniken zur Erweiterung des Systemspeichers durch Nutzung des verfügbaren Gerätespeichers
DE112018002955T5 (de) Kognitive datei- und objektverwaltung für verteilte speicherumgebungen

Legal Events

Date Code Title Description
R012 Request for examination validly filed