DE112016003466T5 - Vorinstallieren von Seitentabellen-Cachezeilen einer virtuellen Maschine - Google Patents

Vorinstallieren von Seitentabellen-Cachezeilen einer virtuellen Maschine Download PDF

Info

Publication number
DE112016003466T5
DE112016003466T5 DE112016003466.0T DE112016003466T DE112016003466T5 DE 112016003466 T5 DE112016003466 T5 DE 112016003466T5 DE 112016003466 T DE112016003466 T DE 112016003466T DE 112016003466 T5 DE112016003466 T5 DE 112016003466T5
Authority
DE
Germany
Prior art keywords
page table
time period
table entries
processor
memory
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
DE112016003466.0T
Other languages
English (en)
Inventor
Shakti Kapoor
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112016003466T5 publication Critical patent/DE112016003466T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • 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
    • 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • 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
    • G06F2212/1021Hit rate 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/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • 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/602Details relating to cache prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/654Look-ahead translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/684TLB miss handling
    • 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

Abstract

Hierin genannte Ausführungsformen nehmen eine Vorinstallation von Arbeitsspeicher-Adressumsetzungen vor, die zum Ausführen von Umsetzungen von virtuellen in physische Arbeitsspeicheradressen in einem Datenverarbeitungssystem verwendet werden, das zwischen virtuellen Maschinen (VMs) wechselt. Bevor ein Prozessor vom Ausführen der aktuellen VM auf die neue VM wechselt, kann ein Hypervisor vorher gespeicherte Arbeitsspeicher-Adressumsetzungen für die neue VM abrufen und sie in den Cachespeicher oder Hauptarbeitsspeicher laden. Wenn die neue VM mit der Ausführung beginnt, befinden sich die entsprechenden Arbeitsspeicher-Adressumsetzungen somit im Cachespeicher statt im Arbeitsspeicher. Wenn diese Arbeitsspeicher-Adressumsetzungen daher benötigt werden, um Umsetzungen von virtuellen in physische Adressen auszuführen, muss der Prozessor nicht auf den Abruf von Arbeitsspeicher-Adressumsetzungen von langsamen Speichereinheiten (z.B. ein Festplattenlaufwerk) warten.

Description

  • HINTERGRUND
  • Die vorliegende Erfindung betrifft ein Warmlaufen eines Datenverarbeitungssystems, wenn zwischen virtuellen Maschinen (VMs) gewechselt wird. Insbesondere betrifft die vorliegende Offenbarung ein Vorinstallieren von gespeicherten Arbeitsspeicher-Adressumsetzungen vor einem Ausführen einer neuen VM.
  • Typischerweise enthalten Prozessoren mindestens eine Arbeitsspeicher-Verwaltungseinheit (MMU) zum Ausführen von Umsetzungen von virtuellen in physische Adressen. Zum Beispiel kann der Prozessor Blöcke von virtuellem Arbeitsspeicher verschiedenen Prozessen zuweisen, die auf dem Prozessor ausgeführt werden (z.B. Betriebssysteme oder Benutzeranwendungen). Jede der virtuellen Adressen entspricht einer physischen Arbeitsspeicheradresse im Arbeitsspeicher. Die Zuordnungen zwischen den virtuellen und physischen Adressen werden in einer Seitentabelle als Seitentabelleneinträge gespeichert. Die Seitentabelle wird typischerweise im Hauptarbeitsspeicher gespeichert.
  • Wenn ein Prozess eine Anforderung an einen Verarbeitungskern sendet. um Daten aus einer bestimmten virtuellen Adresse zu lesen oder in diese zu schreiben, fragt die MMU die Seitentabelle (oder einen Adressumsetzpuffer) ab, um die entsprechende physische Adresse zu identifizieren. Der Verarbeitungskern verwendet anschließend die physische Adresse zum Ausführen des von dem Prozess angeforderten Lesens oder Schreibens.
  • KURZDARSTELLUNG DER ERFINDUNG
  • Eine Ausführungsform der vorliegenden Erfindung ist ein Verfahren, das ein Ausführen eines ersten Betriebssystems (OS), das einer ersten VM entspricht, unter Verwendung eines Prozessors für einen ersten Zeitraum enthält. Das Verfahren enthält ein Vorinstallieren, bevor der erste Zeitraum abläuft, von Seitentabelleneinträgen, entsprechend einem zweiten OS einer zweiten VM, indem die Seitentabelleneinträge von einer unteren Ebene auf eine obere Ebene einer Arbeitsspeicherhierarchie verschoben werden, wobei die obere Ebene dem Prozessor in der Arbeitsspeicherhierarchie näher ist als die untere Ebene. Nachdem der erste Zeitraum abgelaufen ist, enthält das Verfahren ein Ausführen des zweiten OS, das der zweiten VM entspricht, unter Verwendung des Prozessors für einen zweiten Zeitraum.
  • Eine weitere Ausführungsform der vorliegenden Erfindung ist ein Datenverarbeitungssystem, das einen Prozessor, der konfiguriert ist, um ein erstes OS, das einer ersten VM entspricht, für einen ersten Zeitraum auszuführen, und einen Hypervisor enthält. Der Hypervisor ist konfiguriert, um vor Ablauf des ersten Zeitraums Seitentabelleneinträgen vorzuinstallieren, entsprechend einem zweiten OS einer zweiten VM, indem die Seitentabelleneinträge von einer unteren Ebene auf eine obere Ebene einer Arbeitsspeicherhierarchie verschoben werden, wobei die obere Ebene dem Prozessor in der Arbeitsspeicherhierarchie näher als die untere Ebene ist. Der Hypervisor weist den Prozessor nach Ablauf des ersten Zeitraums auch an, mit dem Ausführen des zweiten OS, das der zweiten VM entspricht, für einen zweiten Zeitraum zu beginnen.
  • Eine weitere Ausführungsform der vorliegenden Erfindung ist ein Computerprogrammprodukt zum Wechseln zwischen VMs, wobei das Computerprogrammprodukt ausführbaren Computercode enthält, um einen Prozessor anzuweisen, ein erstes OS, das einer ersten VM entspricht, für einen ersten Zeitraum auszuführen, und vor Ablauf des ersten Zeitraums Seitentabelleneinträgen vorzuinstallieren, entsprechend einem zweiten OS einer zweiten VM, indem die Seitentabelleneinträge von einer unteren Ebene auf eine obere Ebene einer Arbeitsspeicherhierarchie verschoben werden, wobei die obere Ebene dem Prozessor in der Arbeitsspeicherhierarchie näher ist als die untere Ebene. Nach Ablauf des ersten Zeitraums ist der Computercode ausführbar, um den Prozessor anzuweisen, das zweite OS, das der zweiten VM entspricht, unter Verwendung des Prozessors für einen zweiten Zeitraum auszuführen.
  • KURZBESCHREIBUNG DER VERSCHIEDENEN ANSICHTEN DER ZEICHNUNGEN
  • 1 ist ein Blockschaubild eines Datenverarbeitungssystems, das gemäß einer hierin beschriebenen Ausführungsform Arbeitsspeicher-Adressumsetzungen beim Wechseln zwischen virtuellen Maschinen vorinstalliert.
  • 2 ist ein Ablaufplan zum Vorinstallieren von Arbeitsspeicher-Adressumsetzungen beim Wechseln zwischen virtuellen Maschinen gemäß einer hierin beschriebenen Ausführungsform.
  • 3 ist ein Blockschaubild eines Datenverarbeitungssystems, das gemäß einer hierin beschriebenen Ausführungsform Arbeitsspeicher-Adressumsetzungen speichert, wenn aus einer virtuellen Maschine gewechselt wird.
  • 4 ist ein Blockschaubild eines Datenverarbeitungssystems, das gemäß einer hierin beschriebenen Ausführungsform zwischen verschiedenen virtuellen Maschinen wechselt.
  • 5 ist ein Blockschaubild eines Datenverarbeitungssystems, das gemäß einer hierin beschriebenen Ausführungsform Arbeitsspeicher-Adressumsetzungen vor einem Wechsel von virtuellen Maschinen vorinstalliert.
  • 6 ist ein Blockschaubild eines Datenverarbeitungssystems, das gemäß einer hierin beschriebenen Ausführungsform zwischen verschiedenen virtuellen Maschinen wechselt.
  • Zum besseren Verständnis wurden identische Bezugszeichen verwendet, sofern möglich, um identische Elemente zu bezeichnen, die den Figuren gemeinsam sind. Es wird in Betracht gezogen, dass in einer Ausführungsform offenbarte Elemente in weiteren Ausführungsformen vorteilhaft genutzt werden können, ohne speziell erneut zitiert zu werden.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Hierin genannte Ausführungsformen nehmen eine Vorinstallation von Arbeitsspeicher-Adressumsetzungen vor, die zum Ausführen von Umsetzungen von virtuellen in physische Arbeitsspeicheradressen (oder umgekehrt) in einem Datenverarbeitungssystem verwendet werden, das zwischen virtuellen Maschinen (VMs) wechselt. Zum Beispiel kann ein Prozessor (oder eine CPU) in dem Datenverarbeitungssystem verschiedene VMs zu verschiedenen Zeiten ausführen. Anders formuliert, die Verarbeitungszeit des Prozessors kann mehreren VMs zugeordnet oder auf diese aufgeteilt werden. In einer Ausführungsform führt der Prozessor Anweisungen für eine erste VM während eines ersten Zeitraums aus und wechselt anschließend zum Ausführen von Anweisungen für eine zweite VM während eines zweiten Zeitraums.
  • In einigen Fällen stehen die VMs in keiner Beziehung zueinander. Insbesondere können die Arbeitsspeicher-Adressumsetzungen, die von Prozessen verwendet werden, die in der ersten VM ausgeführt werden, sich von denjenigen Arbeitsspeicher-Adressumsetzungen unterscheiden, die von den Prozessen verwendet werden, die in der zweiten VM ausgeführt werden. Zum Beispiel können die ersten und zweiten VMs verschiedene Prozesse ausführen, die verschiedenen virtuellen Arbeitsspeicheradressen zugewiesen sind. In diesem Fall sind die Seitentabelleneinträge, die zum Ausführen der Umsetzungen von virtuellen in physische Adressen für die Prozesse erforderlich sind, die in der ersten VM ausgeführt werden, von den Seitentabelleneinträgen verschieden, die zum Ausführen von Umsetzungen von virtuellen in physische Adressen für die Prozesse erforderlich sind, die in der zweiten VM ausgeführt werden. Wenn der Prozessor zwischen den VMs wechselt, werden die beim Ausführen der vorherigen VM in dem Cachespeicher zwischengespeicherten Seitentabelleneinträge durch die Seitentabelleneinträge ersetzt, entsprechend der neuen VM. Dies kann jedoch ein Zugreifen auf langsamere Speichereinheiten (z.B. eine Festplatte) erfordern, was die Ausführung der neuen VM verlangsamt.
  • Hierin genannte Ausführungsformen installieren die Arbeitsspeicher-Adressumsetzungen für die neue auszuführende VM vor. Anders ausgedrückt kann ein Hypervisor vor dem Wechseln des Prozessors von der aktuellen VM zu der neuen VM vorher gespeicherte Arbeitsspeicher-Adressumsetzungen für die neue VM abrufen und sie in den Cachespeicher oder Hauptarbeitsspeicher laden. Wenn die neue VM mit der Ausführung beginnt, befinden sich die entsprechenden Arbeitsspeicher-Adressumsetzungen somit im Cachespeicher statt im Speicher. Wenn diese Arbeitsspeicher-Adressumsetzungen zum Ausführen von Umsetzungen von virtuellen in physische Adressen benötigt werden, muss das Datenverarbeitungssystem die Arbeitsspeicher-Adressumsetzungen nicht von langsamen Speichereinheiten abrufen (z.B. von Festplattenlaufwerken), wodurch hunderttausende von Prozessorzyklen eingespart werden können.
  • In einer Ausführungsform enthält das Datenverarbeitungssystem einen Adressumsetzpuffer (TLB) zum Ausführen von Umsetzungen von virtuellen in physische Arbeitsspeicheradressen. Der TLB ist ein von einer MMU verwendeter Cachespeicher zum Speichern einer Untergruppe der Seitentabelleneinträge. Wenn sich eine Adresse nicht in dem TLB befindet (d.h. ein Fehl-TLB), führt das Datenverarbeitungssystem eine Seiten-Walk-Operation aus, um die Adresse in einem anderen Cachespeicher oder Hauptspeicher zu suchen. Da die hierin genannten Ausführungsformen die vorher gespeicherten Arbeitsspeicher-Adressumsetzungen in dem Cachespeicher vorinstallieren, kann die gewünschte Adresse im Fall eines Fehl-TLB in dem Cachespeicher gespeichert sein. Wie oben erklärt, spart dies die Zeit, die zum Abrufen der Adressinformationen aus dem Speicher erforderlich ist. Anders formuliert, beim Wechseln zwischen VMs sind die in dem TLB bereits gespeicherten Arbeitsspeicher-Adressumsetzungen wahrscheinlich nicht besonders nützlich für die neue VM, und daher werden Arbeitsspeicher-Adressumsetzungen, entsprechend der neuen VM, von den hierin genannten Ausführungsformen in einem Cachespeicher oder Haupt-Arbeitsspeicher vorinstalliert. Statt die Seitentabelleneinträge aus dem Speicher nach einem Fehl-TLB abrufen zu müssen, können diese Daten im Cachespeicher gefunden werden. Auf diese Weise erfolgt durch ein Vorinstallieren der Arbeitsspeicher-Adressumsetzungen in dem Cachespeicher ein „Warmlaufen“ des TLB für die neue VM, da Fehl-TLBs weniger Zeit zum Auflösen benötigen können.
  • 1 ist ein Blockschaubild eines Datenverarbeitungssystems 100, das gemäß einer hierin beschriebenen Ausführungsform Arbeitsspeicher-Adressumsetzungen beim Wechseln zwischen VMs vorinstalliert. Insbesondere veranschaulicht das Datenverarbeitungssystem 100A links außen den Zustand des Datenverarbeitungssystems vor dem Vorinstallieren der Arbeitsspeicher-Adressumsetzungen in einem Cachespeicher 120, wogegen das Datenverarbeitungssystem 100B rechts außen den Zustand des Datenverarbeitungssystems nach dem Vorinstallieren der Arbeitsspeicher-Adressumsetzungen in dem Cachespeicher 120 veranschaulicht.
  • Das Datenverarbeitungssystem 100 enthält einen Hypervisor 105, eine VM 107A, eine VM 107B, einen Prozessor 115, den Cachespeicher 120 und einen Speicher 125. Der Hypervisor 105 (d.h. ein virtueller Maschinenmonitor) ist eine Software und/oder Hardware, die die VMs 107 (die auch als logische Partitionen oder LPARs bezeichnet werden) in dem Datenverarbeitungssystem 100 verwaltet und ausführt. Allgemein ist der Hypervisor 105 ein Zwischenelement zwischen den VMs 107 und der Hardware in dem Datenverarbeitungssystem 100 – z.B. der Prozessor 115. Wie gezeigt ist ein OS 110A das Betriebssystem für eine VM 107A, wogegen ein OS 110B das Betriebssystem für eine VM 107B ist
  • In einer Ausführungsform kontrolliert der Hypervisor 105, welche VM 107 (und deren entsprechendes OS 110) aktuell durch den Prozessor 115 ausgeführt wird. Anders ausgedrückt kann der Hypervisor 105 die Verarbeitungszeit des Prozessors 115 so planen, dass verschiedene Verarbeitungszeitblöcke verschiedenen VMs 107 in dem Datenverarbeitungssystem 100 zugewiesen werden. In diesem Beispiel ist die VM 107A aktuell zum Verwenden des Prozessors 115 geplant. Daher führt der Prozessor 115 Anweisungen aus, die durch die Prozesse bereitgestellt werden, die im OS 110A ausgeführt werden, wie durch das gestrichelte Feld im Prozessor 115 angegeben. Obwohl 1 nur zwei VMs 107 veranschaulicht, kann das Datenverarbeitungssystem 100 eine beliebige Anzahl von VMs enthalten, die sich Verarbeitungszeit auf dem Prozessor 115 teilen.
  • Der Prozessor 115 steht für eine beliebige Anzahl von Verarbeitungselementen, die jeweils einen oder mehrere Verarbeitungskerne enthalten können. Wenn der Prozessor 115 mehrere Kerne enthält, können die VMs 107 in einer Ausführungsform so geplant werden, dass sie die einzelnen Kerne in verschiedenen Zeitblöcken verwenden. Zum Beispiel kann das OS 110A der VM 107A so geplant werden, dass es einen ersten Kern in dem Prozessor 115 verwendet, wogegen das OS 110B der VM 107B so geplant wird, dass es einen zweiten Kern in dem Prozessor 115 verwendet. Alternativ können die VMs 107 den gesamten Prozessor 115 (der mehrere Kerne enthält) während des für sie geplanten Zeitraums verwenden. Zum Beispiel können alle Kerne im Prozessor 115 Anweisungen ausführen, die vom OS 110A ausgegeben werden. Während die VM 107A für die Verwendung des Prozessors 115 geplant ist, kann das OS 110B der VM 107B inaktiv sein – d.h. der Hypervisor 105 blockiert die Prozesse, die auf dem OS 110B ausgeführt werden, bis zu der für sie geplanten Zeit zur Verwendung des Prozessors 115.
  • Der Cachespeicher 120 kann jedes Arbeitsspeicherelement sein, das sich zwischen dem Prozessor 115 und dem Speicher 125 befindet. Der Cachespeicher 120 und der Speicher 125 bilden einen Bestandteil einer Arbeitsspeicherhierarchie für das Datenverarbeitungssystem 100A. In einer Ausführungsform speichert der Cachespeicher 120 einen Unterabschnitt der im Speicher 125 gespeicherten Daten. Beim Ausführen einer Lese- oder Schreib-Anforderung kann der Prozessor 115 zunächst im Cachespeicher 120 nach den Daten suchen, bevor er im Speicher 125 nach den Daten sucht. Obwohl der Cachespeicher 120 typischerweise kleiner als der Speicher 125 ist, kann der Zugriff auf die Arbeitsspeicherelemente, die den Cachespeicher 120 bilden, schneller erfolgen. Zum Beispiel kann der Cachespeicher 120 aus einem RAM- oder Flash-Arbeitsspeicher bestehen, während der Speicher 125 ein Festplattenlaufwerk, Bandlaufwerk, externer Datenspeicherserver, Cloud-Speicher oder eine andere nichtflüchtige Speichereinheit sein könnte.
  • In einer Ausführungsform kann der Cachespeicher 120 aus Arbeitsspeicherelementen in der integrierten Schaltung (IC) bestehen, die den Prozessor 115 bilden – z.B. Cachespeicher L1, Cachespeicher L2, Cachespeicher L3 usw. In einer weiteren Ausführungsform kann der Cachespeicher 120 ein Hauptarbeitsspeicher sein (z.B. eine Direktzugriffsspeicher-(RAM)Einheit, die DRAM oder SRAM enthält), der auf einem Motherboard in dem Datenverarbeitungssystem 100 angeordnet ist. Obwohl nicht gezeigt, kann der Cachespeicher 120 eine Seitentabelle speichern, die Seitentabelleneinträge enthält, entsprechend den durch das OS 110A ausgeführten Prozessen. Der Prozessor 115 kann diese Seitentabelleneinträge zum Zuordnen von virtuellen Adressen zu physischen Adressen (und umgekehrt) verwenden.
  • In 1 enthält der Speicher 125 Arbeitsspeicher-Adressumsetzungen 130 für das OS 110B. Somit verfügt das Datenverarbeitungssystem 100, obwohl der Prozessor 115 aktuell das OS 110A ausführt, über vorher gespeicherte Arbeitsspeicher-Adressumsetzungen 130, entsprechend dem OS 110B. Wie im Folgenden ausführlicher beschrieben, kann das Datenverarbeitungssystem 100 die Arbeitsspeicher-Adressumsetzungen 130 gespeichert haben, als der Prozessor 115 das OS 110B vorher ausgeführt hat.
  • Wie in dem Datenverarbeitungssystem 100B rechts außen gezeigt, verschiebt der Hypervisor 105 die Arbeitsspeicher-Adressumsetzungen 130 für das OS 110B in den Cachespeicher 120. In einer Ausführungsform verschiebt der Hypervisor 105 die Arbeitsspeicher-Adressumsetzungen 130 in Reaktion auf das Bestimmen, dass die für die VM 107A geplante Zeit zum Verwenden des Prozessors 115 sich dem Ende nähert, und dass die VM 107B als Nächste zum Verwenden des Prozessors 115 ansteht. Anders ausgedrückt, bevor der Prozessor 115 vom Ausführen des OS 110A zum OS 110B wechselt, beginnt der Hypervisor 105 die Arbeitsspeicher-Adressumsetzungen 130 in der Arbeitsspeicherhierarchie näher zum Prozessor 115 zu verschieben. Da OS 110A und 110B verschiedene Prozesse ausführen können, die verschiedene virtuelle Adressräume verwenden, bevor die Arbeitsspeicher-Adressumsetzungen 130 vom Speicher in den Cachespeicher 120 verschoben werden, kann der Cachespeicher 120 nur Informationen der Arbeitsspeicher-Adressumsetzungen für das OS 110A speichern. Das heißt, dass während der Ausführungszeit des OS 110A auf dem Prozessor 115 alle Arbeitsspeicher-Adressumsetzungen für das OS 110B bereits aus dem Cachespeicher 120 entfernt worden sein können.
  • In einer Ausführungsform kann das Datenverarbeitungssystem 100 eine am längsten nicht verwendeten (LRU) Richtlinie verwenden, um zu bestimmen, welche Arbeitsspeicher-Adressumsetzungen im Cachespeicher 120 beibehalten und welche ungültig gemacht werden sollen – d.h. in den Speicher 125 verschoben werden sollen. Da die Arbeitsspeicher-Adressumsetzungen, entsprechend den vom OS 110B verwendeten virtuellen Adressen, nicht verwendet werden, wenn das OS 110A im Prozessor 115 ausgeführt wird, werden diese Arbeitsspeicher-Adressumsetzungen durch den Hypervisor markiert und aus dem Cachespeicher 120 entfernt. Wenn der Hypervisor 105 daher vom Ausführen des OS 110A zu einem Ausführen des OS 110B wechselt, kann der Cachespeicher 120 nur Arbeitsspeicher-Adressumsetzungen für das OS 110A enthalten. Wie in 1 gezeigt, installiert der Hypervisor 105 ausgewählte Arbeitsspeicher-Adressumsetzungen 130 für das OS 110B jedoch im Cachespeicher 120 vor. Wenn das OS 110B daher mit der Ausführung im Prozessor 115 beginnt, befinden sich zumindest einige Arbeitsspeicher-Adressumsetzungen 130, entsprechend dem OS 110B, in dem Cachespeicher 120, und somit kann schneller auf sie zugegriffen werden, als wenn der Prozessor 115 warten müsste, bis die Arbeitsspeicher-Adressumsetzungen aus dem Speicher 125 abgerufen würden. Daher kann ein Vorinstallieren der Arbeitsspeicher-Adressumsetzungen 130 den Durchsatz des Prozessors 115 beim Wechseln vom Ausführen des OS 110A zum OS 110B im Vergleich mit einem Datenverarbeitungssystem steigern, das keine Arbeitsspeicher-Adressumsetzungen in dem Cachespeicher 120 vorinstalliert.
  • 2 ist ein Ablaufplan eines Verfahrens 200 zum Vorinstallieren von Arbeitsspeicher-Adressumsetzungen beim Wechseln zwischen VMs gemäß einer hierin beschriebenen Ausführungsform. Der Einfachheit halber werden die verschiedenen Blöcke des Verfahrens 200 in Verbindung mit den 3 bis 6 erörtert, die verschiedene Beispiele veranschaulichen, die dem Verfahren 200 entsprechen. In Block 205 speichert der Hypervisor Arbeitsspeicher-Adressumsetzungen in einer Seitentabelle, entsprechend einer ersten VM, in eine Protokolldatei. In einer Ausführungsform speichert der Hypervisor die Arbeitsspeicher-Adressumsetzungen während der Zeit, die für die Verwendung des Prozessors in der Datenverarbeitungseinheit für die erste VM geplant ist. Angenommen, für die erste VM ist ein vordefinierter Block einer Zeit zum Verwenden des Prozessors vorgegeben, dann beginnt der Hypervisor mit dem Speichern von Arbeitsspeicher-Adressumsetzungen, die dem OS für die erste VM zugehörig sind, sobald der Hypervisor bestimmt, dass die erste VM zum Beispiel nur noch 10 % ihrer Zeit übrig hat.
  • 3 ist ein Blockschaubild eines Datenverarbeitungssystems 300, das gemäß einer hierin beschriebenen Ausführungsform Arbeitsspeicher-Adressumsetzungen speichert, wenn aus einer VM gewechselt wird. Wie in diesem Beispiel gezeigt, führt der Prozessor 115 aktuell das der VM 107B entsprechende OS 110B aus. Da die für die VM 107B geplante Zeit demnächst abläuft, beginnt der Hypervisor 105, einige der Einträge 310 einer Seitentabelle für das OS 110B zu speichern. Insbesondere speichert der Hypervisor 105 einen oder mehrere ausgewählte Seitentabelleneinträge 320 für das OS 110B in ein Protokoll 315. Obwohl das Protokoll 315 im Speicher 125 gezeigt wird, kann sich das Protokoll auch in einem Cachespeicher befinden, der vom Prozessor 115 in der Hierarchie weiter entfernt als der Cachespeicher 120 ist. Zum Beispiel kann der Cachespeicher 120 ein spezieller Cachespeicher sein, der zum Speichern von Seitentabellen verwendet wird, wogegen das Protokoll 315 im Hauptarbeitsspeicher gespeichert wird. In einer Ausführungsform speichert der Hypervisor 105 die ausgewählten Seitentabelleneinträge 320 für das aktuelle OS, das in einem Arbeitsspeicherort ausgeführt wird, der bei Beginn der Ausführung der nächsten VM auf dem Prozessor 115 nicht überschrieben wird.
  • Das Datenverarbeitungssystem 300 enthält auch einen TLB 305 zum Ausführen der Umsetzungen von virtuellen in physische Adressen, die vom Prozessor 115 angefordert werden. In einer Ausführungsform kann der TLB 305 als ein Typ eines Cachespeichers betrachtet werden, der nur einen Abschnitt der Einträge 310 in der Seitentabelle für das OS 110B speichert. Zum Beispiel kann der TLB 305 ein Assoziativspeicher sein (z.B. ein inhaltsadressierbarer Arbeitsspeicher (CAM)), der in der Arbeitsspeicherhierarchie über dem Cachespeicher 120 steht – d.h. der TLB 305 ist dem Prozessor 115 näher als der Cachespeicher 120. Wenn daher eine Arbeitsspeicher-Adressumsetzung ausgeführt wird, fragt der Prozessor 115 zuerst den TLB 305 ab, um zu bestimmen, ob dort die Zuordnung von virtuellen zu physischen Adressen gespeichert ist. Falls nicht, geht der Prozessor 115 die Seitentabelleneinträge 310 in dem Cachespeicher 120 durch. Es ist allerdings möglich, dass der Cachespeicher 120 (z.B. der Hauptarbeitsspeicher) nicht über genügend Arbeitsspeicherelemente verfügt, um alle Seitentabellen zu speichern, entsprechend dem gesamten virtuellen Adressraum des Datenverarbeitungssystems 300. Zum Beispiel kann der Cachespeicher 120, wie beispielsweise der TLB 305, nur einen Abschnitt der Seitentabelleneinträge für das Datenverarbeitungssystem 300 speichern. Wenn der Cachespeicher 120 dementsprechend nicht die gewünschte Zuordnung aufweist, kann der Prozessor 115 die virtuelle Adresse aus dem Speicher 125 abrufen, der Kopien aller Seitentabellen in dem Datenverarbeitungssystem 300 enthalten kann.
  • Der Hypervisor 105 kann eine Vielfalt von Techniken verwenden, um zu bestimmen, welche Einträge 310 der Seitentabelle in dem Protokoll 315 gespeichert werden sollten, bevor die für die VM 107B geplante Zeit abläuft. In einer Ausführungsform wählt der Hypervisor 105 die in dem TLB 305 gespeicherten Seitentabelleneinträge als die in dem Protokoll 315 gespeicherten Seitentabelleneinträge 320 aus. Das bedeutet, da in vielen Datenverarbeitungssystemen der TLB 305 die Seitentabelleneinträge speichert, die das Datenverarbeitungssystem erwartet oder von diesen vorhersagt, dass sie in der Zukunft höchstwahrscheinlich zum Ausführen von Arbeitsspeicher-Adressumsetzungen benötigt werden, kann der Hypervisor 105 die Seitentabelleneinträge des TLB 305 in das Protokoll 315 speichern. Wenn für die VM 107 daher wieder geplant wird, den Prozessor 115 zu verwenden, wird diese Liste von Einträgen in dem Protokoll 315 beibehalten.
  • In einer weiteren Ausführungsform identifiziert der Hypervisor 105 die Seitentabelleneinträge, die vom Prozessor 115 zuletzt verwendet (MRU) wurden, als Adressumsetzungen zum Speichern im Protokoll 315 ausgeführt wurden. Zum Beispiel kann der Hypervisor 105 nur die Seitentabelleneinträge auswählen, auf die vom Prozessor 115 zum Ausführen einer Arbeitsspeicher-Adressumsetzung in den letzten 50 Millisekunden zugegriffen wurde. Alternativ kann der Hypervisor 105 einen Zähler für jeden der Seitentabelleneinträge 310 verwalten, der angibt, wie oft jeder Eintrag zum Ausführen einer Arbeitsspeicher-Adressumsetzung verwendet wurde, während das OS 110B ausgeführt wurde. Der Hypervisor 105 kann nur die Seitentabelleneinträge mit einer Zähleranzahl auswählen, die größer als eine Mindestzähleranzahl ist. In einem weiteren Beispiel kann der Hypervisor 105 die Anzahl der ausgewählten Seitentabelleneinträge 320 auf eine feste Menge begrenzen (z.B. nur fünf Megabyte) und die Einträge mit den höchsten Zähleranzahlen auswählen, bis die feste Menge erreicht ist – d.h. die ersten fünf Megabyte von Einträgen mit den höchsten Zähleranzahlen auswählen.
  • Die oben bereitgestellten Beispiele zum Auswählen von Seitentabelleneinträgen 320 für das aktuell ausführende OS sind nicht als einschränkende Beispiele gedacht. Ein Fachmann wird erkennen, dass es viele verschiedene Techniken zum Auswählen von Seitentabelleneinträgen gibt, auf die mit höchster Wahrscheinlichkeit von dem Betriebssystem zugegriffen wird, wenn die entsprechende VM wieder für die Ausführung auf dem Prozessor 115 geplant wird. Des Weiteren kann der Hypervisor 105 in einer Ausführungsform alle Einträge 310 der Seitentabelle für das OS 110B in dem Protokoll 315 speichern, statt einen Unterabschnitt der Seitentabelleneinträge auszuwählen, die im Cachespeicher 120 gespeichert sind.
  • Obwohl in 3 die ausgewählten Seitentabelleneinträge 320, die in dem Protokoll 315 gespeichert sind, vor Ablauf der für die VM 107B geplanten Zeit identifiziert werden, kann der Hypervisor 105 in einer weiteren Ausführungsform einen oder mehrere Seitentabelleneinträge 320 nach Ablauf der Zeit auswählen. Zum Beispiel kann eine Stillstandszeit zwischen dem Stoppen der Ausführung des OS 110B und dem Beginn der Ausführung des OS 100A durch den Prozessor 115 vorhanden sein. Während dieser Zeit kann der Hypervisor 105 auswählen, welche Seitentabelleneinträge 320 im Protokoll 315 gespeichert werden sollen. Des Weiteren kann der Hypervisor 105 einige oder alle Seitentabelleneinträge 320 auswählen, die in dem Protokoll 315 gespeichert werden sollen, nachdem der Prozessor 115 mit dem Ausführen des OS 110A begonnen hat. Da es einige Zeit dauern kann, bevor der Prozessor 115 die aktuell im TLB 302 und im Cachespeicher 120 befindlichen Seitentabelleneinträge durch Seitentabelleneinträge ersetzt hat, entsprechend dem OS 110A, kann der Hypervisor 105 Zeit zum Auswerten der Einträge in dem TLB 305 und/oder Cachespeicher 120 haben, um zu bestimmen, welche Einträge in dem Protokoll 315 gespeichert werden sollen.
  • Unter erneuter Bezugnahme auf das Verfahren 200 wechselt der Prozessor im Block 210 vom Ausführen der ersten VM zum Ausführen einer zweiten VM. Wie oben erwähnt, kann jeder VM in einem Datenverarbeitungssystem ein bestimmter Zeitblock für die Ausführung zugewiesen werden. Daher führt der Prozessor für den der VM zugewiesenen Zeitblock empfangene Anweisungen für das OS aus, das der VM entspricht, während die anderen VMs inaktiv sind. Das heißt, der Prozessor führt keine Anweisungen für die nicht-geplanten VMs aus.
  • 4 ist ein Blockschaubild eines Datenverarbeitungssystems 300, das gemäß einer hierin beschriebenen Ausführungsform zwischen VMs 107 gewechselt hat. Im Gegensatz zu 3 führt der Prozessor 115 im Datenverarbeitungssystem 300 jetzt Anweisungen aus, die vom OS 110A statt vom OS 110B empfangen werden. Da der TLB 305 Seitentabelleneinträge für das OS 110B zwischenspeichert – d.h. das Betriebssystem, das vorher auf dem Prozessor 115 ausgeführt wurde – führen viele, wenn nicht sogar alle der Umsetzungsanforderungen, die von dem Prozessor 115 für das OS 110A weitergeleitet werden, zu Cachefehlern. Als Reaktion darauf führt das Datenverarbeitungssystem 300 eine Seiten-Walk-Operation in den Seitentabelleneinträgen aus, die im Cachespeicher 120 gespeichert sind – z.B. im Hauptarbeitsspeicher des Datenverarbeitungssystems 300. Der Cachespeicher 120 hat jedoch möglicherweise nur beschränkte Speicherkapazitäten – d.h. er kann nur eine festgelegte Menge von Seitentabelleneinträgen speichern. In einer Ausführungsform kann das Datenverarbeitungssystem 300 die Speichermenge des Cachespeichers 120 begrenzen, die zum Speichern von Seitentabelleneinträgen verwendet werden kann. Zum Beispiel kann der Cachespeicher ein Hauptarbeitsspeicher sein, in dem 2 % des Cachespeichers 120 für Seitentabelleneinträge reserviert sind, während die anderen 98 % für Daten reserviert sind, die von den OSs 110 angefordert werden. Daher ist das Datenverarbeitungssystem 300 möglicherweise nicht fähig, die Seitentabelleneinträge für alle der verschiedenen VMs 107 in dem Cachespeicher 120 zu speichern.
  • Zum Beispiel kann der Cachespeicher 120 in 3 primär die Seitentabelleneinträge 310 für das OS 110B speichern. Infolgedessen führen viele der Anforderungen einer Arbeitsspeicher-Adressumsetzung, die von einer MMU in dem Prozessor 115 weitergeleitet werden, zu Fehlern in dem Cachespeicher 120. Als Reaktion darauf kann das Datenverarbeitungssystem 300 die Seitentabelleneinträge, entsprechend dem OS 110A, aus dem Speicher 125 abrufen, was hunderttausende von Prozessorzyklen in Anspruch nehmen kann.
  • 4 veranschaulicht das Ergebnis des Datenverarbeitungssystems 300, das die Einträge, die vorher im Cachespeicher 120 gespeichert worden sind, durch die Seitentabelleneinträge 405 für das OS 110A ersetzt. Obwohl nicht gezeigt, können die Einträge im TLB 305 auch aktualisiert werden, um Seitentabelleneinträge für das OS 110A statt für das OS 110B aufzunehmen. Umsetzungsanforderungen, die durch den Prozessor 115 weitergeleitet werden, führen daher mit höherer Wahrscheinlichkeit zu Treffern im TLB 305 oder im Cachespeicher 120, wodurch die Notwendigkeit entfällt, den Speicher 125 abzufragen. Dies kann die Geschwindigkeit erhöhen, mit der der Prozessor 115 Anweisungen abschließt, da ein Zugreifen auf Seitentabelleneinträge, die in dem TLB 305 und im Cachespeicher 120 gespeichert sind, viel weniger Verarbeitungszyklen erfordern kann als ein Zugreifen auf Daten aus dem Speicher 125.
  • Unter erneuter Bezugnahme auf das Verfahren 200 lädt der Hypervisor im Block 215 die Arbeitsspeicher-Adressumsetzungen, entsprechend der ersten VM, in eine Arbeitsspeicherebene, die dem Prozessor näher ist, bevor das Zeitlimit der zweiten VM abgelaufen ist. Das heißt, während der Prozessor noch Anweisungen für das OS ausführt, das der zweiten VM entspricht, beginnt der Hypervisor mit dem Laden von Arbeitsspeicher-Adressumsetzungen, entsprechend dem OS der ersten VM, aus einer unteren Ebene in eine obere Ebene der Arbeitsspeicherhierarchie – z.B. vom Speicher in den Hauptarbeitsspeicher.
  • 5 ist ein Blockschaubild eines Datenverarbeitungssystems, das gemäß einer hierin beschriebenen Ausführungsform Arbeitsspeicher-Adressumsetzungen vor einem Wechseln zwischen VMs vorinstalliert. In 5 führt der Prozessor 115 immer noch Anweisungen aus, die vom OS 110A empfangen wurden. Der Hypervisor 105 hat jedoch die ausgewählten Seitentabelleneinträge 310 für das OS 110B aus dem Protokoll 315 im Speicher 125 in den Cachespeicher 120 verschoben. In einer Ausführungsform kann der Hypervisor 105 mit dem Verschieben der ausgewählten Seitentabelleneinträge 320 in den Cachespeicher 120 ab einer vordefinierten Zeit vor dem Auswechseln der VM 107A gegen die VM 107B beginnen – z.B. eine Mikrosekunde vor dem Wechsel, oder wenn für die VM 107A nur noch 5 % ihrer Zeit übrig sind. In einem Beispiel ist der Hypervisor möglicherweise nicht fähig, alle Einträge 320 in den Cachespeicher 120 zu verschieben, bevor der Prozessor 115 auf die Ausführung des OS 110B wechselt. Dennoch fängt der Hypervisor 105 zumindest mit dem Verschieben der Seitentabelleneinträge 320 für das OS 110B in den Cachespeicher 120 an, bevor der Prozessor 115 das Ausführen von Anweisungen für das OS 100A beendet, selbst wenn die Einträge 320 noch nicht vollständig in den Cachespeicher 120 verschoben worden sind, bevor das OS 110B mit dem Ausführen beginnt. Anders ausgedrückt, der Hypervisor 105 beginnt mit dem Kopierprozess für die Seitentabelleneinträge für das OS 110B in den Cachespeicher 120, bevor die Verarbeitungszeit für das VM 107A beendet ist.
  • In einer Ausführungsform kann der Hypervisor das Verschieben der ausgewählten Seitentabelleneinträge 320 in den Cachespeicher 120 beenden, während der Prozessor 115 das OS 110A noch ausführt. Da die Größe des Cachespeichers 120 begrenzt sein kann (oder die Anzahl von Einträgen in dem Cachespeicher für Seitentabelleneinträge festgelegt sein kann), kann der Hypervisor 105 selektiv bestimmen, welche der Seiteneinträge 405 für das OS 110A entfernt werden sollen, um Arbeitsspeicherplätze für die Seitentabelleneinträge 320 für das OS 110B frei zu machen. Mit anderen Worten, der Hypervisor 105 wählt aus, welche der Seitentabelleneinträge 405 für das OS 110A durch die Seitentabelleneinträge 320 für das OS 110B ersetzt werden sollen.
  • In einer Ausführungsform kann der Hypervisor 105 bestimmen, welche der Seitentabelleneinträge 405 von dem Prozessor 115 beim Ausführen des OS 110A am wenigsten wahrscheinlich für die restliche Zeit verwendet werden, die der VM 107A zugewiesen ist. Dadurch vermeidet der Hypervisor 105 hoffentlich ein Entfernen eines Seitentabelleneintrags 405 für das OS 110A, das dann aus dem Speicher 125 abgerufen werden muss, wodurch die Ausführung des OS 110A verlangsamt wird. Anders ausgedrückt, der Hypervisor 105 kann vorhersagen, welche Seitentabelleneinträge 405 in dem Prozessor 115 beim Ausführen des OS 110A am wenigsten wahrscheinlich verwendet werden, und kann nur diese Einträge 405 aus der Seitentabelle entfernen, um Platz für die Seitentabelleneinträge 320 für das OS 110B zu schaffen.
  • In einer Ausführungsform verwendet der Hypervisor 105 einen am längsten nicht verwendeten (LRU) Algorithmus, um die Seitentabelleneinträge 405 auszuwählen, die aus dem Cachespeicher 120 entfernt werden sollen. Dabei wählt der Hypervisor 105 die Seitentabelleneinträge 405, die vom Prozessor 115 am wenigsten häufig zum Ausführen von Arbeitsspeicher-Adressumsetzungen verwendet werden, und ersetzt diese Einträge durch Seitentabelleneinträge 320 für das OS 110B. In einem weiteren Beispiel kann der Hypervisor 105 durch Überwachen von historischen Daten identifizieren, auf welche Seitentabelleneinträge typischerweise zugegriffen wird (und auf welche nicht), wenn der Prozessor 115 das Ausführen des OS 110A stoppt, und kann nur die Einträge entfernen, die nicht häufig verwendet werden. Zum Beispiel kann der Prozessor 115 dieselben Verwaltungsoperationen beim Wechseln zwischen VMs 107 ausführen, die dieselben Seitentabelleneinträge verwenden. Durch Identifizieren, welche der Seitentabelleneinträge 405 während der Verwaltungsoperationen verwendet werden, kann der Hypervisor 105 diese Einträge in dem Cachespeicher 120 beibehalten, während die anderen entfernt werden. Der Fachmann wird erkennen, dass dies nur einige Beispiele für die verschiedenen Techniken für eine Vorhersage sind, welche Seitentabelleneinträge in Zukunft verwendet werden sollen, die auf die hierin beschriebenen Ausführungsformen angewendet werden können.
  • Obwohl 5 ein Verschieben der Seitentabelleneinträge 320 für das OS 110B aus dem Speicher 125 in den Cachespeicher 120 veranschaulicht, können die Seitentabelleneinträge 320 in einer anderen Ausführungsform in den TLB 305 verschoben werden, bevor der Hypervisor 105 von der VM 107A auf die VM 107B wechselt. Das heißt, der Hypervisor 105 kann einen oder mehrere der Einträge in dem TLB 305 durch einen oder mehrere Seitentabelleneinträge 320 für das OS 110B auswechseln. Obwohl ein Ersetzen aller Einträge in dem TLB 305 durch die Einträge 320 für das OS 110B nicht wünschenswert sein kann, da dies die Wahrscheinlichkeit beträchtlich erhöht, dass die Umsetzungsanforderungen, die beim Ausführen des OS 110A weitergeleitet werden, zu einem Fehl-TLB führen, kann ein Ersetzen von einigen der Einträge die Wahrscheinlichkeit verringern, dass der Speicher 125 nach einem Seitentabelleneintrag abgefragt werden muss, wenn der Prozessor 115 mit dem Ausführen des OS 110B beginnt.
  • Wenn der Prozessor 115 ferner in einer Ausführungsform vom Ausführen des OS 110A zum OS 110B wechselt, kann der Hypervisor 105 die restlichen Seitentabelleneinträge 405 für das OS 110A aus dem Cachespeicher 120 und/oder dem TLB 305 entfernen. Wenn der Hypervisor 105 zum Beispiel weiß, dass Seitentabelleneinträge für das OS 110A nie oder fast nie beim Ausführen des OS 110B verwendet werden, kann der Hypervisor 105 damit fortfahren, die restlichen Einträge in dem Cachespeicher 120 oder dem TLB 305 zu entfernen und sie durch die ausgewählten Seitentabelleneinträge 320 zu ersetzen. In einer Ausführungsform kann der Hypervisor 105 die Seitentabelleneinträge 320, die in dem Cachespeicher 120 gespeichert wurden, während das OS 110A noch auf dem Prozessor 115 ausgeführt wurde, in den TLB 305 verschieben, sobald der Prozessor 115 das Ausführen des OS 110A stoppt und mit dem Ausführen des OS 110B beginnt.
  • Wenn die Seitentabelleneinträge 320 in den Cachespeicher 120 verschoben werden, wählt das Datenverarbeitungssystem 300 Seitentabelleneinträge 505 für das OS 110A aus, die im Cachespeicher 120 und/oder dem TLB 305 gespeichert sind, und speichert diese Einträge im Protokoll 315. Wenn auf die VM 107A zurückgewechselt wird, kann der Hypervisor 105 auf diese Weise die Einträge 505 für das OS 110 aus dem Protokoll 315 in den Cachespeicher 120 oder den TLB 305 verschieben, wie oben erläutert. In einem Beispiel kann der Hypervisor 105 auswählen, welche der Einträge 505 für das OS 110A in dem Protokoll 315 gespeichert werden sollen, parallel zum Verschieben der ausgewählten Seitentabelleneinträge 320 für das OS 110B aus dem Protokoll 315 in eine obere Ebene der Arbeitsspeicherhierarchie – d.h. den Cachespeicher 120 oder den TLB 305.
  • Unter erneuter Bezugnahme auf das Verfahren 200 fragt der Prozessor am Block 220 die geladenen Arbeitsspeicher-Adressumsetzungen ab, um eine Umsetzung von virtuellen in physische Adressen für die erste VM auszuführen, nachdem auf die erste VM gewechselt wurde. Anders ausgedrückt, anstatt vor einem Verschieben von Seitentabelleneinträgen aus dem Speicher, entsprechend der ersten VM, bis zu einem Fehl-TLB und einem Cachefehler warten zu müssen, hat das Datenverarbeitungssystem bereits damit begonnen, mindestens einige der Seitentabelleneinträge für die erste VM aus dem Speicher auf eine Arbeitsspeicherebene zu verschieben, die dem Prozessor näher ist – z.B. Hauptarbeitsspeicher oder der TLB. In einer Ausführungsform sind einige der Seitentabelleneinträge für die erste VM bereits in dem Hauptarbeitsspeicher oder dem TLB gespeichert, wodurch sich die Wahrscheinlichkeit erhöht, dass das Datenverarbeitungssystem nicht auf den Speicher zugreifen muss, um Anforderungen von Arbeitsspeicher-Adressumsetzungen zu erfüllen, die weitergeleitet wurden, während Anweisungen ausgeführt wurden, die von dem OS für die erste VM weitergeleitet wurden. Das Verschieben der Seitentabelleneinträge für die erste VM aus dem Speicher auf eine höhere Ebene in der Arbeitsspeicherhierarchie wird hierin als Warmlaufen des TLB bezeichnet. Selbst wenn die Seitentabelleneinträge für die erste VM nicht tatsächlich in den TLB verschoben werden, bevor der Prozessor mit dem Ausführen des OS der ersten VM beginnt, erfolgt dadurch trotzdem ein Warmlaufen des TLB, da die hierin genannten Ausführungsformen bei Beginn der Ausführung des OS durch den Prozessor die Wahrscheinlichkeit verbessern, dass ein Fehl-TLB kein Abrufen des Speichers erfordern wird. Stattdessen können sich zumindest einige der Seitentabelleneinträge für die erste VM in einem Cachespeicher befinden – z.B. im Hauptarbeitsspeicher – auf den viel schneller zugegriffen werden kann.
  • 6 ist ein Blockschaubild eines Datenverarbeitungssystems 300, das gemäß einer hierin beschriebenen Ausführungsform zwischen verschiedenen VMs wechselt. Wie gezeigt, hat der Prozessor 115 vom Ausführen des OS 110A (wie in 5 gezeigt) auf das Ausführen des OS 110B gewechselt. In diesem Beispiel wurden die Seitentabelleneinträge für das OS 110A aus dem Cachespeicher 120 entfernt und durch Seitentabelleneinträge 605 für das OS 110B ersetzt. In einer Ausführungsform ist es nach dem Ausführen des OS 110B über eine ausreichende Zeitdauer möglich, dass alle Seitentabelleneinträge 405 für das OS 110A im Cachespeicher 120 allein durch Seitentabelleneinträge 605 für das OS 110B ersetzt worden sind. Desgleichen, obwohl nicht gezeigt, können die Einträge in dem TLB 305 relativ zu den Einträgen des TLB 305 zu dem in 5 dargestellten Zeitpunkt ersetzt worden sein.
  • Obwohl einige der Seitentabelleneinträge 605 für das OS 110B im Cachespeicher 120 vorinstalliert worden sein können, wie in 5 gezeigt, kann der restliche Abschnitt der Einträge 605 geladen werden, nachdem der Prozessor 115 mit dem Ausführen des OS 110B beginnt – d.h. wenn das Datenverarbeitungssystem 300 vom Ausführen der VM 107A zum Ausführen der VM 107B wechselt. Zum Beispiel kann das Verarbeitungselement 115 eine Umsetzungsanforderung weiterleiten, die eine virtuelle Adresse enthält, die keinem der vorinstallierten Seitentabelleneinträge entspricht. In diesem Fall ruft das Datenverarbeitungssystem 300 den entsprechenden Seitentabelleneintrag aus dem Speicher 125 ab. Während somit einige der Seitentabelleneinträge 605 im Cachespeicher 120 (und/oder dem TLB 305) vorinstalliert sein können, kann das Datenverarbeitungssystem 300 andere Seitentabelleneinträge für das OS 110B aus dem Arbeitsspeicher abrufen, nachdem der Prozessor 115 mit dem Ausführen des OS 110B begonnen hat.
  • Wenn die Verarbeitungszeit für die VM 107B beginnt zu Ende zu gehen, kann das Verfahren 200 wiederholt werden. Das heißt, der Hypervisor 105 kann vor dem Wechsel zurück zur VM 107A die aus den Seitentabelleneinträgen 605 ausgewählten Einträge in dem Protokoll 315 speichern, wie in 3 gezeigt. Des Weiteren kann der Hypervisor 105 damit beginnen, in Erwartung des Wechsels von der VM 107A zur VM 107B die ausgewählten, in dem Protokoll 315 gespeicherten Seitentabelleneinträge 505 für das OS 110A in dem Cachespeicher 120 vorzuinstallieren. Wie oben erwähnt, kann der Hypervisor 105 einige der Seitentabelleneinträge 605 für das OS 110B in dem Cachespeicher 120 entfernen, um für die ausgewählten Seitentabelleneinträge 505 Platz zu schaffen.
  • Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung wurden zum Zweck der Veranschaulichung erstellt, sie sollen aber keineswegs erschöpfend oder auf die offenbarten Ausführungsformen eingeschränkt sein. Für Fachleute sind viele Modifizierungen und Variationen offenkundig, die nicht von dem Schutzbereich und dem Erfindungsgedanken der beschrieben Ausführungsformen abweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, der praktischen Anwendung oder technischen Verbesserung gegenüber auf dem Markt gefundenen Technologien bestmöglich zu erklären oder anderen Fachleuten das Verständnis der hierin offenbarten Ausführungsformen zu ermöglichen.
  • Im Vorgenannten wird auf in dieser Offenbarung vorgestellte Ausführungsformen Bezug genommen. Der Schutzumfang der vorliegenden Offenbarung ist jedoch nicht auf spezifische beschriebene Ausführungsformen beschränkt. Stattdessen wird jede Kombination der oben beschriebenen Merkmale und Elemente, gleichgültig, ob sie zu verschiedenen Ausführungsformen in Beziehung stehen, zum Umsetzen und Ausüben der betrachteten Ausführungsformen in Erwägung gezogen. Obwohl hierin offenbarte Ausführungsformen des Weiteren Vorteile gegenüber anderen möglichen Lösungen oder gegenüber dem Stand der Technik erlangen können, stellt das Erreichen oder Nicht-Erreichen eines bestimmten Vorteils durch eine bestimmte Ausführungsform keine Einschränkung des Schutzumfangs der vorliegenden Offenbarung dar. Daher sind die hierin beschriebenen Aspekte, Merkmale, Ausführungsformen und Vorteile nur veranschaulichend und sind nicht als Elemente oder Einschränkungen der Ansprüche im Anhang zu betrachten, es sei denn in Fällen, in denen sie explizit in einem Anspruch (mehreren Ansprüchen) zitiert werden. Desgleichen soll die Bezugnahme auf „die Erfindung“ nicht als Verallgemeinerung irgendeines hierin offenbarten Erfindungsgegenstands ausgelegt werden und soll nicht als ein Element oder eine Einschränkung der Ansprüche im Anhang betrachtet werden, es sei denn in Fällen, in denen sie explizit in einem Anspruch (mehreren Ansprüchen) zitiert werden.
  • Aspekte der vorliegenden Erfindung können in der Form einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform (einschließlich Firmware, residente Software, Mikrocode usw.) oder einer Ausführungsform vorliegen, die Software- und Hardware-Aspekte kombiniert, auf die alle hierin allgemein als „Schaltung“, „Modul“ oder „System“ Bezug genommen werden kann.
  • Die vorliegende Erfindung kann ein System, ein Verfahren und/oder ein Computerprogrammprodukt sein. Das Computerprogrammprodukt kann ein computerlesbares Speichermedium (oder Speichermedien) mit einem computerlesbaren Programmcode darauf enthalten, um einen Prozessor zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Das computerlesbare Speichermedium kann eine konkrete Einheit sein, die Anweisungen zur Verwendung durch eine Anweisungsausführungseinheit beibehalten und speichern kann. Ein computerlesbares Speichermedium kann zum Beispiel eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiter-Speichereinheit oder jede geeignete Kombination aus dem Vorgenannten sein, es ist aber nicht darauf beschränkt. Eine nicht erschöpfende Liste von spezielleren Beispielen für das computerlesbare Speichermedium enthält Folgendes: eine tragbare Computerdiskette, eine Festplatte, einen Direktzugriffspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM oder Flash-Speicher), einen statischen Arbeitsspeicher (SRAM), einen tragbaren CD-ROM, ein DVD-Laufwerk (DVD), einen Speicherstick, eine Diskette, eine mechanisch verschlüsselte Einheit wie beispielsweise Lochkarten oder erhabene Strukturen in einer Rille mit darauf aufgezeichneten Anweisungen und jede geeignete Kombination des Vorgenannten. Ein computerlesbares Speichermedium, wie hierin verwendet, muss nicht als transitorische Signale per se ausgelegt sein, wie beispielsweise Funkwellen oder andere sich frei verbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder andere Übertragungsmedien verbreiten (z.B. Lichtimpulse, die ein Lichtwellenleiterkabel durchlaufen) oder elektrische Signale, die durch einen Draht übertragen werden.
  • Hierin beschriebene computerlesbare Programmanweisungen können auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten von einem computerlesbaren Speichermedium oder auf einen externen Computer oder eine externe Speichereinheit über ein Netzwerk, zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetzwerk und/oder ein drahtloses Netzwerk heruntergeladen werden. Das Netzwerk kann Kupferübertragungsleitungen, Lichtwellenleiter, drahtlose Übertragung, Router, Firewalls, Switches, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerk-Adapterkarte oder Netzwerk-Schnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt computerlesbare Programmanweisungen von dem Netzwerk und leitet die computerlesbaren Programmanweisungen zur Speicherung in einem computerlesbaren Speichermedium in der jeweiligen Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Computerlesbare Programmanweisungen zum Ausführen von Operationen der vorliegenden Erfindung können Assembler-Anweisungen, Anweisungssatzarchitektur-(Instruction Set Architecture)(ISA)Anweisungen, Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, Zustandseinstellungsdaten oder anderer Quellcode oder Objektcode sein, die in jeder Kombination von einer oder mehreren Programmiersprachen, einschließlich Smalltalk, C++ oder dergleichen, und herkömmlichen prozeduralen Programmiersprachen wie der Programmiersprache „C“ oder ähnlichen Programmiersprachen geschrieben sind. Die computerlesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In dem letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über jeden Typ von Netzwerk verbunden werden, einschließlich ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Nutzung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, einschließlich zum Beispiel programmierbare Logikschaltungen, feldprogrammierbare Gate-Arrays (FPGA) oder programmierbare Logik-Arrays (PLA) die computerlesbaren Programmanweisungen unter Verwendung von Zustandsinformationen der computerlesbaren Programmanweisungen zum Personalisieren der elektronischen Schaltung ausführen, um Aspekte der vorliegenden Erfindung auszuführen.
  • Aspekte der vorliegenden Erfindung werden hierin unter Bezugnahme auf Veranschaulichungen des Ablaufplans und/oder der Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block in den Veranschaulichungen von Ablaufplänen und/oder Blockschaubildern und Kombinationen von Blöcken in den Veranschaulichungen von Ablaufplänen und/oder Blockschaubildern durch computerlesbare Programmanweisungen umgesetzt werden können.
  • Diese computerlesbaren Programmanweisungen können für einen Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder andere Vorrichtungen, die programmierbare Daten verarbeiten, bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder andere Vorrichtungen, die programmierbare Daten verarbeiten, ausgeführt werden, Mittel zum Umsetzen der Funktionen/Handlungen erstellen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben sind. Diese computerlesbaren Programmanweisungen können auch in einem computerlesbaren Speichermedium gespeichert werden, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Weise funktionieren, sodass das computerlesbare Speichermedium mit den darin gespeicherten Anweisungen einen Fertigungsartikel aufweist, einschließlich Anweisungen, welche die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegebene Funktion/Handlung umsetzen.
  • Die computerlesbaren Programmanweisungen können auch auf einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder eine andere Einheit geladen werden, um die Ausführung einer Serie von Arbeitsschritten auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit zu veranlassen, um einen über den Computer umgesetzten Prozess zu erzeugen, sodass die Anweisungen, die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführt werden, die Funktionen /Handlungen umsetzen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben sind.
  • Der Ablaufplan und die Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb von möglichen Umsetzungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. Diesbezüglich kann jeder Block in dem Ablaufplan oder in den Blockschaubildern ein Modul, ein Segment oder einen Abschnitt von Anweisungen darstellen, der eine oder mehrere ausführbare Anweisungen zum Umsetzen der angegebenen logischen Funktion(en) aufweist. In einigen alternativen Umsetzungen können die in dem Block angegebenen Funktionen außerhalb der Reihenfolge auftreten, die in den Figuren angegeben ist. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen parallel ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, was von der beteiligten Funktionalität abhängt. Es wird ebenfalls angemerkt, dass jeder Block der Blockschaubilder und/oder Veranschaulichung des Ablaufplans und Kombinationen von Blöcken in den Blockschaubildern und/oder der Veranschaulichung des Ablaufplans durch spezielle Systeme auf Grundlage von Hardware umgesetzt werden können, die die angegebenen Funktionen oder Handlungen ausführen oder Kombinationen von spezieller Hardware und Computeranweisungen ausführen.
  • Zwar bezieht sich das Vorhergehende auf Ausführungsformen der vorliegenden Erfindung, doch sind andere und weitere Ausführungsformen der Erfindung denkbar, ohne von deren grundlegendem Schutzumfang abzuweichen, und deren Schutzumfang wird durch die folgenden Ansprüche festgelegt.

Claims (20)

  1. Verfahren, aufweisend: Ausführen eines ersten Betriebssystems (OS), das einer ersten virtuellen Maschine (VM) entspricht, unter Verwendung eines Prozessors für einen ersten Zeitraum; Vorinstallieren von Seitentabelleneinträgen, bevor der erste Zeitraum abläuft, entsprechend einem zweiten OS einer zweiten VM, indem die Seitentabelleneinträge von einer unteren Ebene auf eine obere Ebene einer Arbeitsspeicherhierarchie verschoben werden, wobei die obere Ebene dem Prozessor in der Arbeitsspeicherhierarchie näher ist als die untere Ebene; und nachdem der erste Zeitraum abgelaufen ist, Ausführen des zweiten OS, das der zweiten VM entspricht, unter Verwendung des Prozessors für einen zweiten Zeitraum.
  2. Verfahren nach Anspruch 1, wobei der erste Zeitraum einem vordefinierten Zeitraum entspricht, der der ersten VM zugewiesen ist, und der zweite Zeitraum einem vordefinierten Zeitraum entspricht, der der zweiten VM zugewiesen ist.
  3. Verfahren nach Anspruch 2, wobei, wenn das erste OS während des ersten Zeitraums ausgeführt wird, das zweite OS inaktiv ist, und wenn das zweite OS während des zweiten Zeitraums ausgeführt wird, das erste OS inaktiv ist.
  4. Verfahren nach Anspruch 1, wobei das Verschieben der Seitentabelleneinträge von der unteren Ebene auf die obere Ebene aufweist: Verschieben der Seitentabelleneinträge von einer Protokolldatei in einer Speichereinheit auf eine Direktzugriffsspeicher-(RAM)Einheit.
  5. Verfahren nach Anspruch 1, des Weiteren aufweisend: Ausführen, bevor der erste und der zweite Zeitraum abläuft, des zweiten OS unter Verwendung des Prozessors während eines dritten Zeitraums; und Auswählen, vor dem ersten Zeitraum, von einem oder mehreren Seitentabelleneinträgen, entsprechend dem zweiten OS, die in der unteren Ebene der Arbeitsspeicherhierarchie gespeichert werden sollen.
  6. Verfahren nach Anspruch 5, wobei das Auswählen des einen oder der mehreren Seitentabelleneinträge, entsprechend dem zweiten OS, aufweist: Bestimmen des einen oder der mehreren Seitentabelleneinträge, die zuletzt verwendet (MRU) wurden, um beim Ausführen des zweiten OS auf dem Prozessor während des dritten Zeitraums eine Arbeitsspeicher-Adressumsetzung auszuführen.
  7. Verfahren nach Anspruch 5, des Weiteren aufweisend: Speichern des einen oder der mehreren ausgewählten Seitentabelleneinträge auf einer nichtflüchtigen Speichereinheit, bevor mit dem Ausführen des ersten OS während des ersten Zeitraums begonnen wird.
  8. Verfahren nach Anspruch 1, wobei das Vorinstallieren der Seitentabelleneinträge, entsprechend dem zweiten OS der zweiten VM, aufweist: Auswählen, vor dem Verschieben der Seitentabelleneinträge von der unteren Ebene auf die obere Ebene, von einem oder mehreren Seitentabelleneinträgen in der oberen Ebene, entsprechend dem ersten OS, unter Verwendung eines am längsten nicht verwendeten (LRU) Algorithmus; und Entfernen, vor dem Verschieben der Seitentabelleneinträge aus der unteren Ebene auf die obere Ebene, des einen oder der mehreren ausgewählten Seitentabelleneinträge, entsprechend dem ersten OS, aus der oberen Ebene der Arbeitsspeicherhierarchie.
  9. Datenverarbeitungssystem, aufweisend: einen Prozessor, der zum Ausführen eines ersten Betriebssystems (OS) konfiguriert ist, das einer ersten virtuellen Maschine (VM) für einen ersten Zeitraum entspricht; und einen Hypervisor, der konfiguriert ist zum: Vorinstallieren, bevor der erste Zeitraum abläuft, von Seitentabelleneinträgen, entsprechend einem zweiten OS einer zweiten VM, indem die Seitentabelleneinträge von einer unteren Ebene auf eine obere Ebene einer Arbeitsspeicherhierarchie verschoben werden, wobei die obere Ebene dem Prozessor in der Arbeitsspeicherhierarchie näher als die untere Ebene ist; und Anweisen des Prozessors, nachdem der erste Zeitraum abgelaufen ist, mit dem Ausführen des zweiten OS, das der zweiten VM entspricht, für einen zweiten Zeitraum zu beginnen.
  10. Datenverarbeitungssystem nach Anspruch 9, wobei der erste Zeitraum einem vordefinierten Zeitraum entspricht, der der ersten VM zugewiesen ist, und der zweite Zeitraum einem vordefinierten Zeitraum entspricht, der der zweiten VM zugewiesen ist.
  11. Datenverarbeitungssystem nach Anspruch 10, wobei, wenn das erste OS während des ersten Zeitraums ausgeführt wird, das zweite OS inaktiv ist, und wenn das zweite OS während des zweiten Zeitraums ausgeführt wird, das erste OS inaktiv ist.
  12. Datenverarbeitungssystem nach Anspruch 9, wobei der Hypervisor konfiguriert ist, wenn die Seitentabelleneinträge von der unteren Ebene auf die obere Ebene verschoben werden, um die Seitentabelleneinträge von einer Protokolldatei in einer Speichereinheit auf eine Direktzugriffsspeicher-(RAM)Einheit zu verschieben.
  13. Datenverarbeitungssystem nach Anspruch 9, wobei der Hypervisor konfiguriert ist zum: Anweisen des Prozessors, bevor der erste und der zweite Zeitraum abläuft, das zweite OS während eines dritten Zeitraums auszuführen; und Auswählen, vor dem ersten Zeitraum, von einem oder mehreren Seitentabelleneinträgen, entsprechend dem zweiten OS, die in der unteren Ebene der Arbeitsspeicherhierarchie gespeichert werden sollen.
  14. Datenverarbeitungssystem nach Anspruch 13, wobei das Auswählen des einen oder der mehreren Seitentabelleneinträge, entsprechend dem zweiten OS, aufweist: Bestimmen des einen oder der mehreren Seitentabelleneinträge, die zuletzt verwendet (MRU) wurden, um beim Ausführen des zweiten OS auf dem Prozessor während des dritten Zeitraums eine Arbeitsspeicher-Adressumsetzung auszuführen.
  15. Datenverarbeitungssystem nach Anspruch 13, wobei der Hypervisor konfiguriert ist zum: Speichern des einen oder der mehreren ausgewählten Seitentabelleneinträge auf einer nichtflüchtigen Speichereinheit, bevor mit dem Ausführen des ersten OS während des ersten Zeitraums begonnen wird.
  16. Computerprogrammprodukt zum Wechseln zwischen virtuellen Maschinen (VM), wobei das Computerprogrammprodukt aufweist: ein computerlesbares Speichermedium mit einem darin verkörperten computerlesbaren Programmcode, wobei der computerlesbare Programmcode von einem oder mehreren Computer-Prozessoren ausführbar ist zum: Anweisen eines Prozessors, ein erstes Betriebssystem (OS), das einer ersten virtuellen Maschine (VM) entspricht, für einen ersten Zeitraum auszuführen; Vorinstallieren, bevor der erste Zeitraum abläuft, von Seitentabelleneinträgen, entsprechend einem zweiten OS einer zweiten VM, indem die Seitentabelleneinträge von einer unteren Ebene auf eine obere Ebene einer Arbeitsspeicherhierarchie verschoben werden, wobei die obere Ebene dem Prozessor in der Arbeitsspeicherhierarchie näher ist als die untere Ebene; und nachdem der erste Zeitraum abgelaufen ist, Anweisen des Prozessors, das zweite OS, das der zweiten VM entspricht, unter Verwendung des Prozessors für einen zweiten Zeitraum auszuführen.
  17. Computerprogrammprodukt nach Anspruch 16, wobei der erste Zeitraum einem vordefinierten Zeitraum entspricht, der der ersten VM zugewiesen ist, und der zweite Zeitraum einem vordefinierten Zeitraum entspricht, der der zweiten VM zugewiesen ist.
  18. Computerprogrammprodukt nach Anspruch 17, wobei, wenn das erste OS während des ersten Zeitraums ausgeführt wird, das zweite OS inaktiv ist, und wenn das zweite OS während des zweiten Zeitraums ausgeführt wird, das erste OS inaktiv ist.
  19. Computerprogrammprodukt nach Anspruch 16, wobei der computerlesbare Programmcode ferner ausführbar ist zum: Anweisen des Prozessors, bevor der erste und der zweite Zeitraum abläuft, das zweite OS während eines dritten Zeitraums auszuführen; und Auswählen, vor dem ersten Zeitraum, von einem oder mehreren Seitentabelleneinträgen, entsprechend dem zweiten OS, die in der unteren Ebene der Arbeitsspeicherhierarchie gespeichert werden sollen.
  20. Computerprogrammprodukt nach Anspruch 16, wobei das Vorinstallieren der Seitentabelleneinträge, entsprechend dem zweiten OS der zweiten VM, aufweist: Auswählen, vor dem Verschieben der Seitentabelleneinträge von der unteren Ebene auf die obere Ebene, von einem oder mehreren Seitentabelleneinträgen in der oberen Ebene, entsprechend dem ersten OS, unter Verwendung eines am längsten nicht verwendeten (LRU) Algorithmus; und Entfernen, vor dem Verschieben der Seitentabelleneinträge aus der unteren Ebene auf die obere Ebene, des einen oder der mehreren ausgewählten Seitentabelleneinträge, entsprechend dem ersten OS, aus der oberen Ebene der Arbeitsspeicherhierarchie.
DE112016003466.0T 2015-10-28 2016-09-27 Vorinstallieren von Seitentabellen-Cachezeilen einer virtuellen Maschine Pending DE112016003466T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/925,651 US9910780B2 (en) 2015-10-28 2015-10-28 Pre-loading page table cache lines of a virtual machine
US14/925,651 2015-10-28
PCT/IB2016/055772 WO2017072610A1 (en) 2015-10-28 2016-09-27 Pre-loading page table cache lines of a virtual machine

Publications (1)

Publication Number Publication Date
DE112016003466T5 true DE112016003466T5 (de) 2018-04-12

Family

ID=58631308

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112016003466.0T Pending DE112016003466T5 (de) 2015-10-28 2016-09-27 Vorinstallieren von Seitentabellen-Cachezeilen einer virtuellen Maschine

Country Status (6)

Country Link
US (2) US9910780B2 (de)
JP (1) JP6916782B2 (de)
CN (1) CN108351800B (de)
DE (1) DE112016003466T5 (de)
GB (1) GB2559289B (de)
WO (1) WO2017072610A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10534715B2 (en) 2016-04-22 2020-01-14 International Business Machines Corporation Operation of a multi-slice processor implementing a unified page walk cache
CN107450958A (zh) * 2017-08-20 2017-12-08 长沙曙通信息科技有限公司 一种桌面虚拟化智能管理镜像模板预加载实现方法
CN108052538B (zh) * 2017-11-16 2020-09-08 成都视达科信息技术有限公司 一种页面加载方法和系统
JP2019160253A (ja) * 2018-03-16 2019-09-19 株式会社リコー 情報処理システム、情報処理システムの制御方法、及び情報処理システムの制御プログラム
CN115167962A (zh) * 2019-05-28 2022-10-11 创新先进技术有限公司 在网页中展示图表的方法及装置
CN111552653B (zh) * 2020-05-14 2021-01-29 上海燧原科技有限公司 页表的读取方法、装置、设备及计算机存储介质

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0793221A (ja) * 1993-09-28 1995-04-07 Hitachi Ltd 仮想計算機システム及びその制御方法
TW405090B (en) * 1997-04-04 2000-09-11 Ibm Predictive cache loading by program address discontinuity history
JP4978008B2 (ja) * 2006-01-11 2012-07-18 株式会社日立製作所 仮想計算機上でのページテーブルアドレスの変更を高速化する方法
JP5104340B2 (ja) * 2007-04-24 2012-12-19 富士通株式会社 計算機装置およびそのキャッシュリカバリ方法
CN101315602B (zh) * 2008-05-09 2011-01-26 浙江大学 硬件化的进程内存管理核的方法
US9086913B2 (en) * 2008-12-31 2015-07-21 Intel Corporation Processor extensions for execution of secure embedded containers
US8161246B2 (en) 2009-03-30 2012-04-17 Via Technologies, Inc. Prefetching of next physically sequential cache line after cache line that includes loaded page table entry
US8397049B2 (en) * 2009-07-13 2013-03-12 Apple Inc. TLB prefetching
US8799419B1 (en) * 2010-08-16 2014-08-05 Juniper Networks, Inc. Configuration update on virtual control plane
KR20130050156A (ko) * 2011-11-07 2013-05-15 한국전자통신연구원 가상 주소 공간 전환 장치
US9697120B2 (en) * 2012-05-09 2017-07-04 Intel Corporation Execution using multiple page tables
CN102968342B (zh) * 2012-11-12 2015-03-11 华中科技大学 嵌入式平台下半虚拟化的快速切换客户操作系统的方法
WO2015012878A1 (en) * 2013-07-23 2015-01-29 Intel Corporation Operating system switching method and apparatus
EP2840504A1 (de) * 2013-08-23 2015-02-25 ST-Ericsson SA Verbessertes Prefetch in einem Speicherverwaltungssystem
US9563457B2 (en) * 2013-11-18 2017-02-07 Bitdefender IPR Management Ltd. Enabling a secure environment through operating system switching
CN104750578A (zh) * 2015-04-13 2015-07-01 成都双奥阳科技有限公司 具有三种操作系统的访问控制设备

Also Published As

Publication number Publication date
CN108351800B (zh) 2022-03-18
GB201807592D0 (en) 2018-06-27
GB2559289B (en) 2019-01-09
CN108351800A (zh) 2018-07-31
US9904569B2 (en) 2018-02-27
US9910780B2 (en) 2018-03-06
GB2559289A (en) 2018-08-01
US20170123833A1 (en) 2017-05-04
WO2017072610A1 (en) 2017-05-04
US20170123986A1 (en) 2017-05-04
JP6916782B2 (ja) 2021-08-11
JP2018536219A (ja) 2018-12-06

Similar Documents

Publication Publication Date Title
DE112016003466T5 (de) Vorinstallieren von Seitentabellen-Cachezeilen einer virtuellen Maschine
DE69721590T2 (de) Ein bereichsbasiertes seiten-table-walk-bit verwendendes verfahren sowie vorrichtung
DE102005029852B4 (de) Steueranordnung zum Freigeben einer oder mehrerer virtueller Speicherseiten nach Beendigung eines Programms in einem Multiprozessorcomputersystem
DE102012219907B4 (de) Erhöhen der Speicherkapazität in Systemen mit eingeschränkter elektrischer Leistungsaufnahme
DE112005003863B3 (de) Verwalten von Prozessorressourcen während Architekturereignissen
DE102011076894B9 (de) Persistenter Speicher für einen Hauptspeicher eines Prozessors
DE102016221811A1 (de) Zuordnung von Ressourcen mit mehrschichtigem Speicher
DE102016013577B4 (de) Systeme und Verfahren zum adaptiven Partitionieren in verteilten Cache-Speichern
DE102009031125A1 (de) Nand-Fehlerbehandlung
DE112012004540T5 (de) Selektive Speicherplatzfreigabe eines Datenspeichers unter Verwendung von Vergleichs- und Verlagerungskennzahlen
DE112011100564B4 (de) Einfügen eines Flash-Zwischenspeichers in große Speichersysteme
DE112012004209T5 (de) Dynamisch eingestellter Schwellenwert zum Belegen eines sekundären Cache-Speichers
DE102012224265A1 (de) Gemeinsame Nutzung dicht benachbarter Daten-Cachespeicher
DE112013002355T5 (de) Steigern von Datenzwischenspeicherungsleistung
DE112014002754T5 (de) Effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus
DE112018003524T5 (de) Dynamische datenverlagerung unter verwendung von speicherbänken auf cloud-grundlage
DE112012004796B4 (de) Periodische Auslagerungen von Innen- und Aussendurchmessern von Platten zum Verbessern von Lesereaktionszeiten
DE112012002452T5 (de) Anpassungsfähiges Zwischenspeichern von Datensätzen für Halbleiterplatten
DE102013210719B4 (de) Verfahren und Systeme zum Verwalten von Cache-Speichern
DE112019001821B4 (de) Verfahren und vorrichtung zur wiedergabe eines aktivierungsrahmens für unterbrechungsfreie speicherbereinigung (pause-less garbage collection)
DE112018002032T5 (de) Gemeinsames nutzen von virtuellen und realen übersetzungen in einem virtuellen cache
DE102013205571B4 (de) Verfahren, Computerprogrammprodukt und Vorrichtung zum Migrieren von Datenträgern mit schlanker Speicherzuweisung in mehrschichtigen Speicherarchitekturen
DE102012218264A1 (de) Effiziente Datenbereinigung in einer komprimierten Journaldatei
DE112020000183T5 (de) Speicherungsklassenspeicherzugriff
DE112018002028T5 (de) Umsetzungsunterstützung für einen virtuellen cache

Legal Events

Date Code Title Description
R012 Request for examination validly filed