DE112019006898T5 - Dynamisches umschalten zwischen ept- und schattenseitentabellen zur laufzeitprozessorverifikation - Google Patents

Dynamisches umschalten zwischen ept- und schattenseitentabellen zur laufzeitprozessorverifikation Download PDF

Info

Publication number
DE112019006898T5
DE112019006898T5 DE112019006898.9T DE112019006898T DE112019006898T5 DE 112019006898 T5 DE112019006898 T5 DE 112019006898T5 DE 112019006898 T DE112019006898 T DE 112019006898T DE 112019006898 T5 DE112019006898 T5 DE 112019006898T5
Authority
DE
Germany
Prior art keywords
processor
spt
processing device
memory
ept
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
DE112019006898.9T
Other languages
English (en)
Inventor
Chuanxiao Dong
Yaozu Dong
Zhi Wang
Zhiyuan Lv
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 DE112019006898T5 publication Critical patent/DE112019006898T5/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
    • 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]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • 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
    • 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/45587Isolation or security of virtual machine instances
    • 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/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • 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/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • 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/651Multi-level translation tables
    • 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/657Virtual address space management
    • 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/682Multiprocessor TLB consistency
    • 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/683Invalidation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Offenbarte Implementierungen beschreiben ein System und ein Verfahren zum Ausführen einer virtuellen Maschine auf einer Verarbeitungsvorrichtung, Empfangen einer Anforderung zum Zugreifen auf eine Speicherseite, die durch eine virtuelle Gastspeicheradresse (GVA) in einem Adressraum der virtuellen Maschine identifiziert wird, Übersetzen der GVA in eine physische Gastspeicheradresse (GPA) unter Verwendung einer Gastseitentabelle (GPT), die einen GPT-EINTRAG umfasst, der die GVA auf die GPA abbildet, über setzen der GPA in eine physikalische Host adresse (HPA) der Speicher Seite, Speichern, in einem Übersetzungspuffer (TLB), eines TLB-EINTRAGS, der die GVA auf die HPA abbildet, Modifizieren des GPT-EINTRAGS, um die Speicher Seite als Zugriff zu bezeichnen, Detektieren eines Versuchs durch eine Anwendung, den GPT-EINTRAG zu modifizieren; Erzeugen, als Reaktion auf den Versuch, den GPT-EINTRAG zu modifizieren, eines Seiten Fehlers; und Löschen, als Reaktion auf den Seiten fehler, des TLB-EINTRAGS.

Description

  • Technisches Gebiet
  • Die Offenbarung betrifft Computersysteme; insbesondere Ermöglichen eines dynamischen Umschaltens zwischen erweiterten Seitentabellen und Schattenseitentabellen zur Laufzeitprozessorverifikation.
  • Hintergrund
  • Moderne Verarbeitungseinrichtungen müssen ständig steigenden Erwartungen von Benutzern hinsichtlich der Sicherheit ihrer Daten genügen. Versuche unbefugter Personen, Zugang zu sensiblen Daten zu erlangen, die in Speicher und Prozessoren gespeichert sind, können durch eine Vielzahl von Techniken ermöglicht werden, einschließlich software-und hardwarebasierter Busabtastung, Speicherabtastung, Hardwareabtastung, Hardwaretrojane und dergleichen, um Daten von Verarbeitungsvorrichtungen abzurufen. Diese Daten könnten zum Beispiel privat Sphären sensitive Daten, IP-sensitive Daten, Verschlüsselungsschlüssel, die zur sicheren Speicherung oder Kommunikation verwendet werden, und so weiter beinhalten. Die Exposition von Daten wird ferner verstärkt mit dem aktuellen Trend des Bewegens von Daten und Unternehmensarbeitslasten in die Cloud unter Verwendung virtualisierungsbasierter Hostingdienste, die von Cloud-Dienstanbietern bereitgestellt werden. In solchen Umgebungen kann das Zulassen eines unautorisierten Zugriffs auf Hardware und die darin gespeicherten Daten die Sicherheit einer großen Anzahl von Benutzern gefährden.
  • Figurenliste
  • Die vorliegende Offenbarung ist beispielhaft und nicht einschränkend veranschaulicht und kann ausführlicher unter Bezugnahme auf die folgende ausführliche Beschreibung verstanden werden, wenn sie in Verbindung mit den Figuren betrachtet wird. es zeigen:
    • 1 veranschaulicht schematisch einen Unterschied in den Ausführungszuständen des Hauptprozessors (links) und des Wiedergabe-Coprozessors (rechts), der sich aus Unterschieden im Inhalt ihrer Übersetzungspuffer ergibt.
    • 2 A stellt ein Komponentendiagramm hoher Ebene eines beispielhaften Verarbeitungssystems dar, das zum Implementieren dynamischer Laufzeitübergänge zwischen erweiterten Seitentabellen und Schattenseitentabellen in der Lage ist, gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung.
    • 2 B stellt ein Komponentendiagramm hoher Ebene eines beispielhaften Verarbeitungssystems mit einem Hauptprozessor und einem Wiedergabe-Coprozessor dar, der in der Lage ist, dynamische Laufzeitübergänge zwischen erweiterten Seitentabellen und Schattenseitentabellen zu implementieren, gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung.
    • 3 stellt ein Flussdiagramm eines beispielhaften Verfahrens zum Entleeren eines TLB-EINTRAGS, der einer Übersetzung einer virtuellen Gastspeicheradresse entspricht, bei einer Modifikation eines Gastseitentabelleneintrags, der virtuellen Gastspeicheradresse entspricht, dar.
    • 4 stellt ein Flussdiagramm eines beispielhaften Verfahrens zum Übergang von dem erweiterten Seitentabellen-aktivierten Speicherzugriffsmodus zu dem Schattenseitentabellen-aktivierten Speicherzugriffsmodus gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung dar.
    • 5 stellt ein Flussdiagramm eines beispielhaften Verfahrens zum Vorbefüllen der Schattenseitentabellen dar, um einen Übergang von dem erweiterten Seitentabellen-aktivierten Speicherzugriffsmodus zu dem Schattenseitentabellen-aktivierten Speicherzugriffsmodus zu optimieren, gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung.
    • 6 stellt ein Flussdiagramm eines beispielhaften Verfahrens zum Übergang von dem Schattenseitentabellen-aktivierten Speicherzugriffsmodus zu dem erweiterten Seitentabellen-aktivierten Speicherzugriffsmodus gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung dar.
    • 7 A ist ein Blockdiagramm, das eine Mikroarchitektur für einen Prozessor veranschaulicht, in dem eine Implementierung der Offenbarung verwendet werden kann.
    • 7 B ist ein Blockdiagramm, das eine In-Order-Pipeline und eine Registerumbenennungsstufen-Außer-Order-Ausgabe/Ausführungs-Pipeline veranschaulicht, die gemäß mindestens einer Implementierung der Offenbarung implementiert sind.
    • 8 veranschaulicht ein Blockdiagramm der Mikroarchitektur für eine Verarbeitungsvorrichtung, die Logikschaltungen beinhaltet, um dynamisches Umschalten zwischen erweiterten Seitentabellen und Schattenseitentabellen zur Laufzeitprozessorverifizierung bereitzustellen.
    • 9 ist ein Blockdiagramm eines Computersystems gemäß einer Implementierung.
    • 10 ist ein Blockdiagramm eines Computersystems gemäß einer anderen Implementierung.
    • 11 ist ein Blockdiagramm eines System-on-a-Chips gemäß einer Implementierung.
    • 12 veranschaulicht eine andere Implementierung eines Blockdiagramms für ein Rechensystem.
    • 13 veranschaulicht eine andere Implementierung eines Blockdiagramms für ein Rechensystem.
  • Ausführliche Beschreibung
  • Aspekte der vorliegenden Offenbarung richten sich darauf, eine periodische Verifikation eines Hauptprozessors und seines Ausführungszustands durch einen Wiedergabe-Coprozessor (RCP) zu ermöglichen. Ein Prozessorprüfmodul (PCM) kann periodisches Abtasten des architektonisch sichtbaren Zustands des Hauptprozessors (z. B., seiner Register) und des Speichers, der durch den Hauptprozessor zum Ausführen von Anweisungen verwendet wird, durchführen, wie etwa ein Gast Betrieb System (GOS) und/oder einen Software Stack für eine virtuelle Maschine (VM), und diese Befehle auf dem RCP wiedergeben, um den resultierenden Ausführung Zustand des Haupt Prozessors mit dem des RCP zu vergleichen. Um den Wiedergabeprozess zu beschleunigen und zu optimieren, kann der Hauptprozessor zwischen dem Hauptspeicherzugriffsmodus, der Gastseitentabellen und erweiterte Seitentabellen verwendet, zu dem Wiedergabespeicherzugriffsmodus, der Schattenseitentabellen verwendet, hin-und herschalten, wie unten ausführlicher erläutert wird.
  • Virtuelle Rechenumgebungen stellen Rechenressourcen und Datenspeicherungsressourcen für verschiedene Vorrichtungen bereit. „Fernberechnung und Datenspeicherung machen es besonders wichtig, Daten vor Zugriff durch Unbefugte und bösartige Software zu schützen.“ In manchen Fällen kann ein unautorisierter Zugriff durch einen Hardware-Trojan, wie etwa eine physische Modifikation der Prozessorschaltungsanordnung, oder eine Hardware-Scanvorrichtung, die Daten und Anweisungen überträgt, die durch den Prozessor ausgeführt werden (z. B. durch Funkemission oder über ein Netzwerk), erhalten werden. Die Anwesenheit eines Hardware-Trojans kann durch physische Inspektion, Prüfsummentest, Analyse der elektromagnetischen Aktivität des Schaltkreises und so weiter detektiert werden. Ein solches Testen kann schwierig durchzuführen sein, wenn eine große Anzahl von Verarbeitungsvorrichtungen involviert ist.
  • Verschiedene Implementierungen, die in der vorliegenden Offenbarung beschrieben sind, betreffen die Notwendigkeit, einen Prozessor eines Computersystems, z. B., einen Virtualisierungsserver, vor Hardware-Trojanen zu sichern. Die offenbarten Implementierungen können auch zum Feststellen verwendet werden, dass sich der Prozessor eines Computersystems wie dokumentiert verhält und dass keine unbeabsichtigten Fehler während des Prozessordesigns, der Herstellung oder der Laufzeitausführung eingetreten sind. Bei manchen Implementierungen kann ein Coprozessor zum Verifizieren des Ausführungszustands des Hauptprozessors verwendet werden. Ein Hauptprozessor, der von einem Hardware-Trojan betroffen ist, kann möglicherweise nicht in der Lage sein, Anweisungen auf die gleiche Weise auszuführen, wie ein Prozessor, der frei von Trojan-Störungen ist. Ein Hardware-Trojan kann zum Beispiel gezielt versuchen, den Ausführungszustand des Hauptprozessors zu modifizieren: In einigen Situationen kann ein Trojan verhindern, dass der Hauptprozessor einige Anweisungen ausführt, wohingegen in anderen Situationen ein Trojan versuchen kann, den Hauptprozessor zu lenken, zusätzliche Anweisungen auszuführen. In beiden Arten von Situationen kann der Hauptprozessornachdem einige Zeit verstrichen ist-mit unterschiedlichem Inhalt von Registern, Cache und Übersetzungspuffer (TLB) im Vergleich zu einem gesunden (Trojan-freien und/oder fehlerfreien) Prozessor enden. Gleichermaßen kann ein Trojan-betroffener Hauptprozessor bewirken, dass ein anderer Speicherzustand auftritt als ein gesunder Prozessor bewirkt hätte. Darüber hinaus kann selbst ein Trojan, dessen Zweck es ist, einfach auf dem Hauptprozessor zu „sprechen“, ohne seine Operationen aktiv zu modifizieren, dies möglicherweise nicht in allen Fällen in der Lage sein. Zum Beispiel kann eine kleine, aber dennoch immer vorhandene physische (z. B., elektrische) Kopplung mit dem Hauptprozessor-notwendig, um seine Operationen zu beobachten-gelegentlich die Befehlsausführung (z. B., eine Gate-Operation) unterbrechen und zu einem anderen Ausführungszustand des Hauptprozessors und/oder dem Speicherzustand führen.
  • Ein zum Hauptprozessor identischer RCP kann in einigen Implementierungen zum befehlweisen Vergleich des Ausführungszustands des Hauptprozessors verwendet werden. Dies kann jedoch zu verbotenen hohen Verifikationskosten führen, falls der Hauptprozessor eine Vorrichtung nach dem Stand der Technik ist. Aber selbst wenn die Kosten kein Problem sind, kann der identische Co-Prozessor an derselben Trojan-Störung leiden, wenn beide Prozessoren durch denselben Herstellungsprozess auf derselben Produktionslinie produziert werden. „Das Vermeiden solcher Probleme kann erreicht werden, wenn ein billigerer RCP zum Verifizieren nur einer bestimmten Teilmenge von Befehlssequenzen verwendet wird, die durch den Hauptprozessor ausgeführt werden.“ Ein RCP kann ein „vertrauenswürdiger“ Prozessor sein, dessen Produktion sorgfältig überwacht werden kann, um seine Sicherheit sicherzustellen. Der RCP kann ein Nicht-X86-Architekturprozessor sein. Bei manchen Implementierungen kann eine ausführliche Architektur des RCP veröffentlicht werden, um nachzuweisen, dass es sich um einen „vertrauenswürdigen“ Prozessor handelt. Beispielsweise kann ein RCP nur Anweisungen wiedergeben, die mit einem virtuellen Prozessor assoziiert sind, der durch den physischen Hauptprozessor aktiviert wird, für eine bestimmte virtuelle Maschine, die durch den Virtualisierungsserver unterstützt wird, der durch den Hauptprozessor ausgeführt wird. Eine RCP-selbst wenn sie langsamer als der Hauptprozessor ist-kann den Speicher und den Ausführungszustand des virtuellen Prozessors für eine begrenzte Zeit, aber wiederholt abtasten. Zur Veranschaulichung kann eine Abtastung alle 1 Sekunde für 0,1 Sekunden erfolgen. Nämlich kann zu Beginn eines 0,1 sec-Verifizierungszeitintervalls ein Prozessorzustand (z. B., sein Ausführungskontext) eines virtuellen Prozessors für die nachfolgende Ausführung des kopierten Prozessorzustands auf dem RCP kopiert werden. Der Prozessorzustand kann den architektonisch sichtbaren Zustand des Prozessors (z. B., seine Register), den Speicher und den Eingabe-Ausgabe (E/A) -Zustand der virtuellen Maschine, die mit dem virtuellen Prozessor assoziiert ist, beinhalten. Am Ende des 0,1-sec-Verifizierungszeitintervalls kann der neue Prozessorzustand des virtuellen Prozessors kopiert und zur letztendlichen Verifizierung gegen den Prozessorzustand des RCP gespeichert werden, wenn der RCP die Wiedergabeausführung abschließt. Anschließend kann die Wiedergabeausführung durch den RCP beginnen. Bei manchen Implementierungen, bei denen der RCP eine andere Architektur als der Hauptprozessor aufweist (z. B. kann der Hauptprozessor ein X86-Prozessor sein, wohingegen der RCP ein Nicht-X86-Prozessor sein kann), kann er eine zusätzliche Firmware sein, die auf einem Anweisungsemulator läuft, um sicherzustellen, dass der RCP Anweisungen ausführen kann, die von dem Hauptprozessor erfasst werden. Die Firmware kann überwachen, ob das Verifikationszeitintervall abgelaufen ist. Sobald sie abgeschlossen ist, kann die Firmware den anfänglichen Prozessorzustand, den Speicherzustand und den Eingabe-Ausgabe- (E/A) -Zustand annehmen, die zu Beginn des Zeitverifizierungsintervalls erfasst wurden, und einen virtuellen Prozessor (z. B., einen virtuellen X86-Prozessor) erzeugen, der eine virtuelle MMU, einen virtuellen TLB und einen virtuellen Cache zur Verwendung bei der Wiedergabeverarbeitung beinhalten kann. Während der Wiedergabeverarbeitung können die während der Verifizierungszeit erfassten Anweisungen einzeln auf diesem virtuellen RCP-PROZESSOR ausgeführt werden. In manchen Fällen kann der RCP signifikant länger als 0,1 sec dauern, um den Prozessorzustand des Hauptprozessors (oder eines seiner virtuellen Prozessoren) wiederzugeben, z. B. kann er nahe einer vollen Sekunde dauern. Bei manchen Implementierungen kann die Ausführung durch den RCP beginnen, gleichzeitig mit der Ausführung des virtuellen Prozessors vor dem Ende des Verifizierungszeitintervalls zu laufen. Sobald der RCP die Wiedergabeausführung abgeschlossen hat, kann der Prozessorzustand des RCP an einem Ende der Wiedergabeausführung mit dem Prozessorzustand und dem modifizierten Speicher des Hauptprozessors am Ende des Verifizierungszeitintervalls verglichen werden. Falls ein Hardware-Trojan die Ausführung durch den Hauptprozessor gestört hat, kann ein solcher Vergleich die Anwesenheit eines Trojans detektieren. Selbst wenn der Trojan während des 0,1 sec-Verifizierungszeitintervalls stille gewesen ist, kann die Wiedergabeverifizierung zu Beginn eines neuen 1 sec-Zeitraums wiederholt werden. Folglich kann der RCP nach einer Anzahl solcher Wiedergabeverifizierungen letztendlich das wahrscheinliche Vorhandensein des Trojans detektieren und den Hauptprozessor zur näheren Untersuchung, z. B., durch eines der oben referenzierten herkömmlichen Verfahren markieren.
  • „Ein wesentliches Hindernis für eine solche periodische Verifikation ist, dass nicht der gesamte Zustand des Hauptprozessors zum Kopieren zur Verfügung steht.‟ Bei einigen Implementierungen kann der Inhalt des HAUPTPROZESSOR-TLB architektonisch unsichtbar nach Richtlinien und/oder Designs des Herstellers sein. Da TLB Speicheradressübersetzungen optimiert, kann eine Unfähigkeit, den TLB zu kopieren, zu einem unterschiedlichen Speicherzustand des RCP-ABSPIELENS und der Hauptprozessorausführung führen, wie durch 1 veranschaulicht.
  • 1 veranschaulicht schematisch einen Unterschied in den Ausführungszuständen des Hauptprozessors (links) und des Wiedergabe-Coprozessors (rechts), der sich aus Unterschieden im Inhalt ihrer Übersetzungspuffer ergibt. Um Implementierungen virtuellen Speichers zu ermöglichen, kann der Speicher Gastseitentabellen (GPT) 130 und erweiterte Seitentabellen (EPT) 132 speichern, um virtuelle Speicheradressen in physische Speicheradressen zu übersetzen. Zum Beispiel kann eine Anwendung (z. B., GOS oder ein darin ausgeführtes Softwareprogramm) eine virtuelle Gastadresse (GVA) referenzieren, wenn eine Speicherzugriffstransaktion ausgeführt wird. Als Reaktion darauf kann die Adressübersetzungsschaltung 110 des Hauptprozessors einen Page Walk (dargestellt durch eine gestrichelte Linie in dem linken Panel) in der Gastseitentabelle 130(1) ausführen, um eine physische Gastadresse (GPA) zu identifizieren, die mit dem referenzierten GVA assoziiert ist. Um die physische Host-Speicheradresse (HPA) für die bestimmte GPA zu identifizieren, kann die Adressübersetzungsschaltung 110 einen anderen Page Walk in dem EPT 132(1) durchführen.
  • Bei manchen Implementierungen kann die physische Gast-Adresse (GPA: Gast Physical Address) in eine Reihe von Offsets unterteilt sein, die jeweils innerhalb einer Tabellenstruktur einer Hierarchie der GPT-EINTRÄGE suchen sollen. In diesem Beispiel beinhaltet das GPT 130(1) eine hierarchische vierstufige Tabelle von Einträgen, einschließlich eines Seitenabbildungsebene-4-Eintrags (PML4E), eines Seitenverzeichniszeigertabelleneintrags (PDPE), eines Seitenverzeichniseintrags (PDE) und eines Seitentabelleneintrags (PTE). (Bei anderen Implementierungen kann eine andere Anzahl von Hierarchieebenen innerhalb des GPT existieren und daher sind die offenbarten Implementierungen nicht durch eine bestimmte Implementierung des GPT zu beschränken.) Ein Ergebnis jeder Suche auf einer Ebene der GPT-HIERARCHIE kann zu dem Versatz für die nächste Tabelle addiert werden, um ein nächstes Ergebnis der Tabelle der nächsten Ebene in der GPT-HIERARCHIE zu lokalisieren. Eine ähnliche hierarchische Struktur (in 1 nicht explizit gezeigt) kann in dem EPT 132(1) implementiert sein. Das Ergebnis des Page Walk in GPT 130 und EPT 132 kann ein Seitenversatz sein, um (zum Beispiel) eine 4 Kb-Seite in dem physischen Speicher zu lokalisieren, der das HPA ist. Wenn ein Prozessor einen Page Walk durchführt, um eine solche GVA → HPA Übersetzung zu erhalten, kann er ein „Zugriff“ -Bit A=1 in dem GPT-EINTRAG für das GVA setzen, das die physische Speicheradresse bezeichnet, die durch das GVA als Zugriff identifiziert wird. Das GOS kann den Status der A-bits seiner verschiedenen Adressen überwachen, um zu verfolgen, wie häufig auf verschiedene Speicherseiten durch die Software zugegriffen wird, die in der virtuellen Maschine arbeitet. Das GOS kann das A-bit periodisch spülen (z. B., ihm den Wert A=0 zuweisen) und beobachten, wie schnell das A-bit wieder gesetzt wird.
  • Der TLB 120 des Hauptprozessors kann eine Anzahl neuerer GVA → HPA Speicherübersetzungen speichern, um nachfolgende Speichertransaktionen zu beschleunigen, falls dieselbe GVA wieder durch GOS der Software referenziert wird, die auf der virtuellen Maschine ausgeführt wird. Wie zum Beispiel durch die durchgezogene Linie auf dem linken Panel gezeigt, wird die Adressübersetzungsschaltung 110, falls eine neue Anforderung nach einer Speicherseite gemacht wird, die mit dem GVA assoziiert ist, zuerst nach einer kürzlichen GVA→HPA-ÜBERSETZUNG in dem TLB 120 suchen. Falls die Übersetzung nicht in dem TLB 120 gespeichert ist (ein „TLB-FEHLTREFFER“), wird der Prozessor das GPT 130(1) und das ETP 132(1) durchlaufen, um das HPA zu erhalten. Falls die Übersetzung jedoch innerhalb des TLB 120 gefunden wird (ein „TLB-TREFFER“), wird der Prozessor die GSA→HPA-ÜBERSETZUNG direkt aus dem TLB 120 wiederherstellen und das erneute Gehen der Seitentabellen unterlassen.
  • Infolgedessen können die folgenden Situationen auftreten, wobei
    • (1) „eine erste Anfrage nach einem GVA erfolgt,”
    • (2) der Prozessor die GPT und die EPT durchläuft, um die GVA → HPA Übersetzung zu erhalten;
    • (3) der Prozessor setzt das A-bit im GPT: A=1;
    • (4) der Prozessor die GVA → HPA Übersetzung in dem TLB speichert;
    • (5) das GOS setzt das A-bit in GPT zurück (löscht): A=0;
    • (6) „eine zweite Anforderung an das GVA erfolgt,”
    • (7) der Prozessor das entsprechende HPA aus dem TLB wiederherstellt, ohne die Seiten Tabellen zu durchlaufen, so dass das A-bit frei bleibt: A=0.
  • Solche Situationen können potentiell zu Inkonsistenzen zwischen den Ausführungszuständen des Hauptprozessors und des RCP und auch bei perfekt gesundem Hauptprozessor zu falsch-positiven Hinweisen auf trojsche Störungen führen. Dies kann zum Beispiel geschehen, wenn der Beginn des Verifikationszeitintervalls nach dem Schritt (5) fällt, so dass das A-bit aus GPT 130(1) gelöscht wird, während eine gültige Übersetzung in dem TLB 120 gespeichert wird. Erzeugt das PCM eine GPT-KOPIE 130(2) des GPT 130(1)-sowie eine EPT-KOPIE 132(2)-und stellt die GPT-KOPIE 130(2) dem RCP zur Verfügung, so ist das A-bit im entsprechenden GPT-EINTRAG klar, A=0. Da die Verhaltensemulation des TLB 120 möglicherweise nicht öffentlich durch den Hersteller des Prozessors offenbart wird, ist der Inhalt des TLB 120 möglicherweise nicht architektonisch sichtbar. Folglich kann der Inhalt des TLB 120 zu Beginn des Verifizierungszeitraums möglicherweise nicht kopiert werden und der RCP-TLB 122 kann das exakte Verhalten des TLB 120 möglicherweise nicht streng emulieren. In solchen Fällen muss der RCP-PROZESSOR möglicherweise mit der Verifikation mit einem leeren RCP-TLB 122 oder zumindest mit dem RCP-TLB 122, dessen Inhalt sich von dem des TLB 120 unterscheidet, beginnen. Wenn der Hauptprozessor und der RCP-PROZESSOR dementsprechend eine Anweisung ausführen sollen, auf die Speicherseite zuzugreifen, die mit demselben GVA assoziiert ist, kann die Adressübersetzungsschaltung 110 des Hauptprozessors die GSA→HPA-ÜBERSETZUNG aus ihrem TLB 120 wiederherstellen. Andererseits findet die Adressübersetzungsschaltung 112 des RCP diese Übersetzung im RCP-TLB 122 möglicherweise nicht und muss folglich einen Page Walk durchführen, wie durch eine durchgezogene Linie im rechten Panel von 1 gezeigt ist. Infolgedessen wird der Speicherzustand der beiden Ausführungskontexte-des Hauptprozessors und der RCP-unterschiedlich sein, da das A-bit in der RCP-KOPIE des GPT 130(2) gesetzt wird, aber in dem vom Hauptprozessor verwendeten GPT 130(1) klar bleibt. Falls die Software das A-bit vor dem Ende des Verifikationszeitintervalls nicht wieder löscht, kann diese Differenz des A-Bits zu einer falsch-positiven Feststellung führen, dass der Hauptprozessor eine Störung von außen erfahren kann.
  • „Eine einfache Lösung dieses Problems könnte darin bestehen, sicherzustellen, dass das GOS den TLB 120 immer dann löscht, wenn das GOS das A-bit für einen seiner GPT-EINTRÄGE löscht.‟ In Virtualisierungsumgebungen kann sich das GOS jedoch üblicherweise außerhalb der vertrauenswürdigen Computerbasis des Virtualisierungsservers befinden und die Autorisierung auf Kernebene fehlen, Anweisungen zum Löschen oder Invalidieren des TLB 120 auszugeben. Da das GOS zu einem beliebigen einer Anzahl von Betriebssystemen gehören kann, die auf dem kommerziellen Markt verfügbar sind, wäre es des Weiteren sehr schwierig oder nahezu unmöglich, alle solchen Betriebssysteme zu modifizieren, um eine ordnungsgemäße TLB-INVALIDIERUNG sicherzustellen. Darüber hinaus ist das Sicherstellen von Sicherheit gegen Hardware-Trojane zu dem Preis des Gewährens von Zugriff auf den Prozessor durch nicht vertrauenswürdige kommerzielle Software möglicherweise aus Sicherheitssicht keine praktikable Lösung.
  • Ein anderer Ansatz kann darin bestehen, Schattenseitentabellen (SPT) zu nutzen. Eine Schattenseitentabelle kann direkte Übersetzungen GVA→HPA im Gegensatz zu den in 1 veranschaulichten Übersetzungen speichern, wobei GVA→GPA-ÜBERSETZUNGEN in der GPT 130 gespeichert werden und GPA→HPA-ÜBERSETZUNGEN in der EPT 132 gespeichert werden. Ein Hypervisor/Virtuelle-Maschine-Monitor (VMM) kann die SPT mit direkten GSA→HPA-ÜBERSETZUNGEN besiedeln. Das SPT kann zum Schreibschutz des GPT verwendet werden. Bei manchen Implementierungen kann eine GPT-SPEICHERSEITE das GPT oder einen Teil des GPT speichern. Die GPT-SPEICHERSEITE kann eine physische Seite sein. Die GPT-SPEICHERSEITE kann als schreibgeschützt bezeichnet werden. Zum Beispiel kann ein geschütztes Bit in der GSA→HPA-SPEICHERÜBERSETZUNG gesetzt werden, die GPT-Speicherseite identifiziert. Wenn das GOS oder eine Anwendung, die innerhalb der VM läuft, versucht, einen GPT-EINTRAG, der in der GPT-SPEICHERSEITE gespeichert ist, zu modifizieren, kann die VM Anweisungen ausführen, um auf die GPT-SPEICHERSEITE zuzugreifen und diese zu modifizieren. Da die VM bei manchen Implementierungen möglicherweise nur durch ihre GSA-ADRESSE auf die GPT-SPEICHERSEITE verweisen kann, muss der Prozessor (oder seine MMU) möglicherweise die SPT durchlaufen, um die HPA der GPT-SPEICHERSEITE zu bestimmen. Die MMU kann detektieren, dass die GPT-SPEICHERSEITE schreibgeschützt ist (z. B. durch Detektieren, dass ein Schreibschutzbit gesetzt ist), und einen Seitenfehler erzeugen. Der Seitenfehler kann einen VM-Austritt auslösen. Ein VM-Ausgang kann ein Hardwareereignis (z. B., eine Ausnahme, Unterbrechung oder Störung) sein, das durch eine ungültige oder verbotene Operation ausgelöst wird und die Übertragung der Ausführungssteuerung von einer aktiven VM zu dem VMM bewirkt. Beim VM-Austritt übernimmt der VMM den Hauptprozessor (oder einen virtuellen Prozessor, der VM zugewiesen ist) und kann die SPT unter Verwendung der Änderungen, die durch das GOS vorgenommen wurden (oder versucht, vorgenommen zu werden), auf die GPT neu abbilden, so dass GVAs in der GPT mit GVAs in der SPT konsistent sind. Der vertrauenswürdige VMM kann auch den TLB 120 leeren, so dass der A=0-Zustand des GPT-EINTRAGS immer mit dem Fehlen der entsprechenden Übersetzung in dem TLB 120 korreliert ist. Jedoch kann ein solcher SPT-aktivierter Speicherzugriffsmodus signifikante Nachteile im Vergleich zu dem EPT-aktivierten Speicherzugriffsmodus von 1 aufweisen. „Da die VMM für jede VM GVAs direkt auf HPAs abbilden müsste und so viele SPTs führen müsste, wie Prozesse in jeder VM vorhanden sind-im Gegensatz zum Beibehalten einer EPT, die viele Prozesse in einer VM unterstützt-ist der SPT-Modus wesentlich umständlicher und weniger effizient als der EPT-Modus.“ „Die Effizienz des SPT-Modus wird durch die Notwendigkeit, SPT zu aktualisieren, um die vorgenommenen Änderungen an den GPT-ÄNDERUNGEN widerzuspiegeln, noch weiter reduziert.“
  • Wie unten beschrieben, kann bei manchen Implementierungen ein dynamisches Umschalten zwischen dem EPT-Modus und dem SPT-Modus von Speicherzugriffen einen rechten Kompromiss zwischen einer schnellen Ausführungscharakteristik des EPT-Modus und der A-bit/TLB-SYNCHRONISATION, die in dem SPT-Modus aktiviert wird, bereitstellen. Aspekte der vorliegenden Offenbarung beschreiben, wie in einer Implementierung der PCM oder der VMM den Hauptprozessor (oder den virtuellen Prozessor, der durch den Hauptprozessor aktiviert wird) vor dem Beginn des Verifizierungszeitintervalls und dem Abtasten des Ausführungszustands des Hauptprozessors von dem EPT-Modus in den SPT-Modus überführen kann. Nach Abschluss des Verifizierungszeitintervalls kann der PCM oder der VMM den Hauptprozessor (oder den virtuellen Prozessor) für eine schnellere nachfolgende Ausführung zurück in den EPT-Modus überführen. Dementsprechend kann der Hauptprozessor bei manchen Implementierungen nur während eines kleinen Teils seiner Laufzeit, z. B., für 0,1 sec alle 1 sec merklich verlangsamt werden.
  • 2 A stellt ein Komponentendiagramm hoher Ebene eines beispielhaften Verarbeitungssystems 200 dar, das zum Implementieren dynamischer Laufzeitübergänge zwischen erweiterten Seitentabellen und Schattenseitentabellen in der Lage ist, gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung. Ein Virtualisierungsserver 210 kann mehrere Client-Vorrichtungen 202 unterstützen (zwei Vorrichtungen 202(1) und 202(2) sind zur Veranschaulichung gezeigt). Das Verarbeitungssystem 200 kann ferner eine Netzwerkschnittstelle 204 zum Verbinden der Client-Vorrichtungen 202 mit dem Virtualisierungsserver 210 beinhalten. Die Netzwerkschnittstelle kann eine lokale Netzwerkschnittstelle, eine drahtlose lokale Netzwerkschnittstelle, eine Internetschnittstelle und dergleichen sein. Der Virtualisierungsserver 210 kann unter anderem einen Prozessor 220, eine Speichervorrichtung 230 und eine E/A-Steuerung 240 beinhalten. Der Virtualisierungsserver 210 kann den Hypervisor/VMM 250 ausführen, um eine oder mehrere virtuelle Maschinen (VMs) 251 zu unterstützen. Die VM(n) 251 kann(können) das(die) GOS(s) 252 aufweisen, die ein oder mehrere Softwareprogramme 254 (z. B., Softwareanwendungen) unterstützen, auf die ein Benutzer der Client-Vorrichtung 202 zugreifen kann (können). Bei diversen Implementierungen kann der Prozessor 220 einen oder mehrere Prozessorkerne 222, ein oder mehrere Register 224 (z. B. Hardwareregister), TLB 120, Cache 226, eine Speicherverwaltungseinheit (MMU) 228 aufweisen. Jeder Prozessorkern 222 des Prozessors 220 kann einen oder mehrere Hardware-Threads unterstützen, die logischen Prozessoren entsprechen. Manche der logischen Prozessoren können virtuelle Prozessoren unterstützen, die verschiedenen VMs 251 zugewiesen sind. Die Speichervorrichtung 230 kann dynamischen Direktzugriffsspeicher (DRAM), synchronen DRAM (SDRAM), einen statischen Speicher, wie etwa statischen Direktzugriffsspeicher (SRAM), einen Flash-Speicher, eine Datenspeicherungsvorrichtung oder andere Arten von Speichervorrichtungen beinhalten. Der Kürze halber wird die Speichervorrichtung 230 nunmehr als Speicher 230 bezeichnet.
  • Jedes GOS kann eine Client-Vorrichtung 202 unterstützen, die ein Remote-Desktop-Computer, ein Tablet, ein Smartphone, ein anderer Server, ein Thin/Lear-Client und dergleichen sein kann. Das VMM 250 kann Hardwarefähigkeiten des Virtualisierungsservers 210 nutzen. Das(die) GOS(s) 252 kann(können) mit dem VMM 250 kommunizieren, um auf den Speicher 230 und den Prozessor 220 zuzugreifen. Der Speicher 230 kann die Virtuelle-Maschine-Steuerstruktur (VMCS) 238 enthalten, um den Ausführungszustand mehrerer VMs 251 auf dem Prozessor 220 zu ermöglichen. Bei manchen Implementierungen kann es mehrere VMCS 238 geben, zum Beispiel eines für jede VM 251(1) und VM 251(2). Mit einer Änderung des Ausführungskontextes des Prozessors 220 zwischen verschiedenen virtuellen Maschinen kann das VMCS für die aktuelle VM den Ausführungszustand des virtuellen Prozessors der VM speichern und später wiederherstellen. Der Speicher 230 kann ferner das GPT 130, den EPT 132 und den SPT 236 speichern. Für jede VM 251 können ein separates GPT und ein separates SPT gespeichert sein. Bei manchen Implementierungen kann das GPT 130 durch das entsprechende GOS 152 verwaltet werden, wohingegen der EPT 132 und der SPT 236 durch den VMM 250 verwaltet werden können. Der Virtualisierungsserver 210 kann dynamisches Umschalten zwischen dem EPT-Modus und dem SPT-Modus des Speicherzugriffs implementieren. Zu einem ersten Zeitpunkt kann der VMM 250 zum Beispiel Anweisungen zum Rekonfigurieren der MMU 228 zum Ausführen von Speicheranforderungen von dem VMs 251 durch Durchführen von Page Walks in dem SPT 236 ausgeben. Zu einem zweiten Zeitpunkt kann das VMM 250 Anweisungen für die MMU ausgeben, zurück in den EPT-Modus zu migrieren und Speichertransaktionen über Page Walks in GPT und SPT zu verwalten.
  • 2 B stellt ein Komponentendiagramm hoher Ebene eines beispielhaften Verarbeitungssystems 201 mit einem Hauptprozessor 220 und einem Wiedergabe-Coprozessor RCP 260 dar, die in der Lage sind, dynamische Laufzeitübergänge zwischen erweiterten Seitentabellen und Schattenseitentabellen zu implementieren, gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung. Das Verarbeitungssystem 201 kann einen Virtualisierungsserver 212 beinhalten, der Client-Vorrichtungen (nicht explizit gezeigt) unterstützt. Der Virtualisierungsserver 212 kann manche oder alle der Komponenten des in 2 A veranschaulichten Virtualisierungsservers 210 aufweisen. Zusätzlich dazu kann der Virtualisierungsserver 212 den RCP 260, das Prozessorprüfmodul 270 und die HARDWARE-RCP-KOEXISTENZSCHNITTSTELLE 280 beinhalten. Der RCP 260 kann einen oder mehrere Prozessorkerne (RCP-KERN) 262, ein oder mehrere RCP-REGISTER 264 (z. B. Hardwareregister), den RCP-TLB 122, einen RCP-CACHE 266 und eine RCP A-Speicherverwaltungseinheit (RCP MMU) 268 beinhalten. Der RCP 260 kann bei manchen Implementierungen eine dedizierte Vorrichtung (RCP-SPEICHER) 275 verwenden. Bei anderen Implementierungen kann der RCP 260 den Speicher 230 verwenden, der mit dem (Haupt-) Prozessor 220 gemeinsam genutzt wird. Die HARDWARE-RCP-KOEXISTENZSCHNITTSTELLE 280 kann periodisches Abtasten des Prozessors, des Speichers und des E/A-Zustands des Hauptprozessors ermöglichen und kann zusätzliche Speicher-und e/A-Verfolgungshardware (nicht gezeigt) beinhalten.
  • Das PCM 270 kann eine periodische Verifikation des Prozessors 220 durch den RCP 260 implementieren. Bei manchen Implementierungen kann das PCM 270 die Verifizierungsanweisungen ausgeben, um den Prozessor 220 von dem EPT-Modus in den SPT-Modus zu überführen, den Prozessorzustand (z. B., seinen Ausführungskontext) des Prozessors 220 (oder einen der virtuellen Prozessoren, die durch den Prozessor 220 unterstützt werden) zu kopieren, den TLB 120 zu entleeren, die SPT 236 zu erzeugen, um vom SPT-Modus zurück zum EPT-Modus überzugehen, die SPT-TABELLEN ungültig zu machen, den Prozessorzustand des Prozessors 220 am Ende des Verifizierungszeitintervalls mit dem resultierenden Prozessorzustand des RCP 260 nach dem Abspielen zu vergleichen und/oder beliebige andere Anweisungen auszugeben, um eine periodische Verifizierung des Prozessors 220 zu ermöglichen, in Abhängigkeit von einer bestimmten Implementierung. Bei manchen Implementierungen können die Verifizierungsanweisungen, die durch das PCM 270 ausgegeben werden, durch den Prozessor 220 ausgeführt werden, während bei anderen Implementierungen die Verifizierungsanweisungen durch den RCP 260 ausgeführt werden können. Bei anderen Implementierungen können manche der Verifizierungsbefehle (z. B., Erzeugung des SPT 236) durch den Prozessor 220 ausgeführt werden, wohingegen manche anderen Befehle (z. B., Vergleich der Ausführungszustände der zwei Prozessoren) durch den RCP 260 ausgeführt werden können.
  • Das PCM 270 kann bei manchen Implementierungen als ein Softwaremodul innerhalb des VMM 250 (wie etwa des LINUX-KVM) implementiert werden. Bei anderen Implementierungen kann das PCM 270 außerhalb des VMM 250 softwareimplementiert sein. Bei manchen Implementierungen kann ein Teil der Funktionalität des PCM hardwareimplementiert sein. Der Virtualisierungsserver 212 kann ferner eine HARDWARE-RCP-KOEXISTENZSCHNITTSTELLE 280 enthalten, um das Abtasten der Register 224, den Zustand des Speichers 230 und/oder den Zustand der E/A-Steuerung 240 zu erleichtern.
  • Die 3-6 stellen Flussdiagramme beispielhafter Verfahren 300 - 600 dar, die in verschiedenen Implementierungen für die periodische Prozessorverifikation verwendet werden können. Verschiedene Implementierungen und Modifikationen der Verfahren 300-600 können zur periodischen Verifizierung der Integrität des Prozessors 220 verwendet werden. Die Verfahren 300-600 können durch ein Computersystem durchgeführt werden, das Hardware (z. B. Schaltungsanordnung, dedizierte Logik und/oder programmierbare Logik), Software (z. B. Anweisungen, die auf einem Computersystem ausführbar sind, um Hardwaresimulation durchzuführen) oder eine Kombination davon umfassen kann. Die Verfahren 300 - 600 und/oder jede ihrer Funktionen, Routinen, Subroutinen oder Operationen können durch einen oder mehrere physische Prozessoren des Computersystems, das das Verfahren ausführt, durchgeführt werden. Zwei oder mehr Funktionen, Routinen, Unterroutinen oder Operationen jedes der Verfahren 300-600 können parallel oder in einer Reihenfolge durchgeführt werden, die sich von der oben beschriebenen Reihenfolge unterscheiden kann. Bei bestimmten Implementierungen können die Verfahren 300 - 600 durch einen einzigen Verarbeitungsthread durchgeführt werden. Alternativ dazu können die Verfahren 300 - 600 durch zwei oder mehr Verarbeitungs-Threads durchgeführt werden, wobei jeder Thread eine oder mehrere individuelle Funktionen, Routinen, Unterroutinen oder Operationen des Verfahrens ausführt. In einem veranschaulichenden Beispiel können die Verarbeitungs-Threads, die die Verfahren 300 - 600 implementieren, synchronisiert sein (z. B. unter Verwendung von Semaphoren, kritischen Abschnitten und/oder anderen Thread-Synchronisationsmechanismen). Alternativ dazu können die Verarbeitungs-Threads, die die Verfahren 300 - 600 implementieren, asynchron zueinander ausgeführt werden. In einem Beispiel, wie durch 3 veranschaulicht, können die Verfahren 300 - 600 durch die hier unten beschriebenen und durch 7-13 dargestellten Verarbeitungssystem durchgeführt werden.
  • 3 stellt ein Flussdiagramm eines beispielhaften Verfahrens 300 zum Entleeren eines TLB-EINTRAGS, der einer Übersetzung einer virtuellen Gastspeicheradresse entspricht, bei einer Modifikation eines Gastseitentabelleneintrags, der der virtuellen Gastspeicheradresse entspricht, dar. Das Verfahren 300 kann durch ein Verarbeitungssystem durchgeführt werden, das eine VM ausführt. Das Verarbeitungssystem (z. B., ein System 200 oder ein System 201) kann zum Beispiel im Speicher 230 das GPT 130 speichern, das einen GPT-EINTRAG umfasst, um ein GVA auf ein GPA abzubilden. Das Verarbeitungssystem kann einen VMM 250 ausführen, der das GOS 252 starten kann. Das GPT 130 kann durch das GOS 252 aufrechterhalten werden, um Speichertransaktionen für Benutzersoftware 254, die auf dem GOS 252 läuft, zu ermöglichen. Das GOS 252 kann das Windows-Betriebssystem, das Red-Hat-Linux-Betriebssystem, das CentOS oder ein beliebiges anderes Betriebssystem sein. Das GOS 252 oder die Software 254 kann manchmal das GPT 130, e.g modifizieren, indem das A-bit in einem GPT-EINTRAG gelöscht wird, um die Speichernutzung durch die Software 254 zu verfolgen. Bei manchen Implementierungen kann das Verarbeitungssystem das GPT 130 als schreibgeschützt bezeichnen. Bei manchen Implementierungen kann die Bezeichnung durch den VMM 250 oder durch den PCM 270 zum Zweck der Prozessorverifikation durchgeführt werden.
  • Bei Block 310 kann die Verarbeitungsvorrichtung, wie etwa der Prozessor 220, eine Anforderung empfangen, auf eine Speicherseite zuzugreifen, die durch das GVA identifiziert wird. Als Reaktion auf eine solche Anforderung kann die Verarbeitungsvorrichtung bei Block 320 das GVA unter Verwendung des GPT in das HPA übersetzen, um eine Übersetzung von dem GVA in das GPA zu erhalten. Bei manchen Implementierungen kann dies durch Durchführen eines Page Walks erfolgen. Bei manchen Implementierungen kann der Page Walk einen ersten Walk in dem GPT 130, um die GPA→GPA-ÜBFRSETZUNG zu erhalten, und einen zweiten Walk in dem EPT 132, um die GPA→HPA-ÜBERSETZUNG zu erhalten, beinhalten. Beim Bestimmen des HPA kann der Prozessor 220 (oder der virtuelle Prozessor, der durch den Prozessor 220 unterstützt wird) die entsprechende Speicherseite aus dem Speicher 230 laden.
  • Bei Block 330 kann die Verarbeitungsvorrichtung bei manchen Implementierungen den GPA→HPA-ÜBERSETZUNGSEINTRAG in dem TLB 120 speichern. Bei Block 340 kann die Verarbeitungsvorrichtung den GPT-EINTRAG, der dem GVA entspricht, als auf ihn zugegriffen wird, bezeichnen. Bei manchen Implementierungen kann die Verarbeitungsvorrichtung, um das A-bit als auf dieses zugegriffen zu bezeichnen, das A-bit (A=1) in dem GPT-EINTRAG setzen. Bei verschiedenen Implementierungen können die Blöcke 320, 330 und 340 in verschiedenen Reihenfolgen ausgeführt werden. Bei Block 350 kann das Verfahren 300 damit fortfahren, dass die Verarbeitungsvorrichtung eine Modifikation des GPT-EINTRAGS detektiert, der dem GVA entspricht. Bei manchen Implementierungen kann die Modifikation des GPT-EINTRAGS durch das GOS 252 (oder die Software 254, die auf dem GOS 252 läuft) durchgeführt werden. Bei manchen Implementierungen kann die Modifikation des GPT-EINTRAGS Löschen des A-Bits (A=0) beinhalten.
  • Bei Block 360 kann ein Seitenfehler als Reaktion auf die Modifikation des GPT-EINTRAGS erzeugt werden. Wenn zum Beispiel das GOS 252 das GPT 130 ändert (z. B. durch Ändern eines GPT-EINTRAGS, der dem GVA entspricht), kann das VMM 250 detektieren, dass ein Bit, das angibt, dass das GPT 130 schreibgeschützt ist, gesetzt ist. Bei Block 370 kann die Verarbeitungsvorrichtung als Reaktion auf den Seitenfehler den Übersetzungseintrag GVA→HPA entleeren. Bei manchen Implementierungen kann das Detektieren der Modifikation des GPT-EINTRAGS, das Erzeugen eines Seitenfehlers und das Entleeren des Übersetzungseintrags durch Verwenden des SPT 236 erleichtert werden, wie oben erklärt ist. Das SPT 236 kann durch das VMM 250 (und/oder das PCM 270) erzeugt (oder gefüllt) werden, so dass es mehrere direkte GSA→HPA-TRANSLATIONEN enthält. Bei manchen Implementierungen kann das SPT 236 aus den Daten gefüllt werden, die in dem GPT 130 und dem EPT 132 enthalten sind.
  • Bei manchen Implementierungen kann, wenn der Seitenfehler erzeugt wird, ein VM-Austritt auftreten und der VMM 250 kann den Prozessor 220 (oder den virtuellen Prozessor) übernehmen. Das VMM 250 kann dann das SPT 236 (und das GPT 130) mit den Änderungen, die durch das GOS 252 vorgenommen wurden (oder versucht, vorgenommen zu werden), bei Block 370 auf das GPT 130 neu abbilden, so dass GVAs in dem GPT mit GVAs in dem SPT konsistent sind. Zum Beispiel kann der VMM 250 das Bit, auf das zugegriffen wird, sowohl in dem GPT-EINTRAG als auch in dem entsprechenden SPT-EINTRAG löschen. Die MMU 228 kann auch die Speicherübersetzung von dem TLB 120 bündeln. Bei manchen Implementierungen können nur die Transaktion(en), die dem (den) modifizierten GPT-EINTRAG(en) entspricht(entsprechen), geleert werden. Bei anderen Implementierungen kann der gesamte Inhalt des TLB 120 gespült werden.
  • Infolgedessen kann nach dem Entleeren des TLB 120 gemäß einer der beschriebenen Ausführungsformen der A=0-Zustand des GPT-EINTRAGS mit dem Fehlen der entsprechenden Übersetzung in dem TLB 120 korreliert werden. Folglich weist der TLB 120 möglicherweise keine Übersetzungseinträge auf, die verhindern würden, dass der Prozessor 220 die Seitentabellen durchläuft, und die zu Inkonsistenzen mit dem Ausführungszustand des RCP 260 während einer Wiedergabeverarbeitung führen könnten.
  • 4 stellt ein Flussdiagramm eines beispielhaften Verfahrens 400 zum Übergang von dem erweiterten Seitentabellen-aktivierten Speicherzugriffsmodus zu dem Schattenseitentabellen-aktivierten Speicherzugriffsmodus gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung dar. Wenn der VMM 250 (und/oder DER PCM 270) im Moment der Zeit auswählt, den Prozessor 220 (oder den virtuellen Prozessor, der durch den Prozessor 220 unterstützt wird) von dem EPT-Modus in den SPT-Modus zu überführen, kann der VMM 250 bei Block 405 Prozesse vorübergehend stoppen, die durch den virtuellen Prozessor ausgeführt werden, der der VM (z. B., der VM 251(1)) zugewiesen ist. Bei Block 410 kann der TLB 225 gespült werden (z. B. durch die MMU 228). Bei manchen Implementierungen kann nur der Inhalt des TLB 225, der mit dem virtuellen Prozessor assoziiert ist, geleert werden. Bei manchen Implementierungen wird TLB-SPÜLEN möglicherweise während des Übergangs vom EPT-Modus zum SPT-Modus nicht durchgeführt. Stattdessen kann TLB-ENTLEEREN während der Prozessorausführung im SPT-Modus als Reaktion auf die Modifikation des GPT durchgeführt werden, wie oben erläutert. Bei Block 415 kann ein Inhalt einiger der Register 224 des Prozessors 220 gespeichert werden. Bei manchen Implementierungen können die Register, deren Inhalt gespeichert werden soll, manche oder alle der CR0/CR3/CR4-Register beinhalten. Bei manchen Implementierungen können die Register, deren Inhalt gespeichert werden soll, die Register für den virtuellen Prozessor sein. Der Inhalt der Register kann auf dem Speicher 230 oder auf dem RCP-SPEICHER 275 gespeichert sein.
  • Das Verfahren 400 kann bei Block 420 fortgesetzt werden, bei dem der VMM 250 (und/oder der PCM 270) zwischengespeicherte EPT-bezogene Hardwareregister des virtuellen Prozessors löschen kann. Bei Block 425 kann der VMM 250 das VMCS 238 für den virtuellen Prozessor konfigurieren, um den EPT 132 zu deaktivieren. Zum Beispiel kann das VMM 250 bewirken, dass das VMCS 238 die Referenzen auf die Speicheradressen in dem CR3-Register für den virtuellen Prozessor löscht, die den Ort des EPT 132 in dem Speicher 230 speichern. Bei Block 430 kann der VMM 250 (und/oder der PCM 270) das VMCS 238 für den virtuellen Prozessor konfigurieren, um den SPT 236 zu aktivieren. Zum Beispiel kann das VMCS 238 in dem CR3-Register für den virtuellen Prozessor den Ort des SPT 236 in dem Speicher 230 speichern. Bei Block 435 kann das Verfahren 400 die SPT-BITMASKEN konfigurieren. Bei Block 440 kann eine Ausnahmebitmap aktualisiert werden. Die Ausnahmebitmap kann Bits enthalten, deren Zustand (z. B., 1 oder 0) angeben soll, wie Ausnahmen (wie etwa Fehler, Traps und Abbrüche) behandelt werden sollten. Insbesondere können die Ausnahme-Bitmaps angeben, ob ein bestimmter Seitenfehler einen VM-Austritt verursachen soll oder nicht.
  • Das Verfahren 400 kann bei Block 445 den Inhalt der CR0/CR4-Register des Prozessors 220 (oder der entsprechenden virtuellen Register des virtuellen Prozessors) wiederherstellen. Bei manchen Implementierungen wird der Inhalt der Register aus dem Speicher 230 (oder dem RCP-SPEICHER 275) geladen, der zuvor bei Block 415 gespeichert wurde. Bei Block 450 kann der VMM 250 (und/oder der PCM 270) den Kontext der MMU 228 zurücksetzen. Bei Block 455 kann der VMM 250 den SPT 236 erzeugen. Bei manchen Implementierungen kann das SPT 236 mit dem gesamten Inhalt des GPT 130 und den diesen entsprechenden Einträgen des EPT 132 gefüllt sein. Bei anderen Implementierungen können nur ein Teil des GPT 130 und die entsprechenden Einträge des EPT 132 in dem SPT 236 gespeichert werden. Bei manchen Implementierungen kann das SPT 236 durch das unten offenbarte Verfahren 500 erzeugt werden. Das erzeugte SPT 236 kann bei Block 460 geladen werden. Zum Beispiel kann der Ort des SPT 236 auf dem Speicher 230 (oder dem RCP-SPEICHER 275) in das CR3-Register (oder das virtuelle CR3-Register) geschrieben werden. Das Verfahren 400 kann mit der Wiederaufnahme der Ausführung der angehaltenen Prozesse auf dem virtuellen Prozessor bei Block 465 im SPT-Modus abschließen. Verschiedene Blöcke in dem Verfahren 400 können in einer Reihenfolge durchgeführt werden, die sich von der in 4 angegebenen Reihenfolge unterscheidet. Verschiedene Blöcke des Verfahrens 400 können gleichzeitig miteinander durchgeführt werden.
  • 5 stellt ein Flussdiagramm eines beispielhaften Verfahrens 500 zum Vorbefüllen der Schattenseitentabellen dar, um einen Übergang von dem erweiterten Seitentabellen-aktivierten Speicherzugriffsmodus zu dem Schattenseitentabellen-aktivierten Speicherzugriffsmodus zu optimieren, gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung. Bei manchen Implementierungen kann das Verfahren 500 als Teil des Blocks 455 durchgeführt werden. Das Verfahren 500 kann eine Balance zwischen dem Erzeugen des SPT 236, das zu voluminös ist (was ineffizient sein kann und viel Zeit in Anspruch nimmt) und dem Unterfüllen des SPT suchen (was zu vielen Seitenfehlern während der nachfolgenden Ausführung des virtuellen Prozessors führen kann und gleichermaßen ineffizient sein kann). Durch Vorbefüllen des SPT 236 mit den GVAs, die am wahrscheinlichsten in der nachfolgenden Ausführung verwendet werden, kann das Verfahren 500 die Menge an Zeit verringern, die während von Seitenfehlern ausgelösten VM-Austritten verloren geht, während auch die Menge an Zeit, die verwendet wird, die DAS SPT 236 erzeugt, auf einem Minimum gehalten wird.
  • Bei Block 510 kann der VMM 250 (und/oder der PCM 270) Basis-GVAs für den aktuellen Kontext des virtuellen Prozessors auswählen. Zum Beispiel kann der VMM 250 über die MMU 228 die GVAs, auf die wahrscheinlich bald zugegriffen wird, aus dem Anweisungszeiger (z. B. RIP/RSP/RDI/RSI/RBP/GS_BASE/GDTR_BASE/ IDTR_BASE/LDTR_BASE/TR_BASE des virtuellen Prozessors) abrufen. „Die ausgewählten Basen-GVAs und deren Translationen GVA→HPA können als“ Samen ‟‟ für die SPT 236 gelagert werden. „Bei Block 520 kann das Verfahren 500 GVAs auswählen, die an das bei Block 510 ausgewählte BASIS-GVA angrenzen. „Benachbart“ kann eine GVA-ADRESSE bedeuten, die an ein BASIS-GVA angrenzt, oder ein GVA, das dem BASIS-GVA am nächsten gültige GVA ist. Es ist wahrscheinlich, dass bald auf solche benachbarten GVAs zugegriffen wird. Dies liegt daran, dass die Ausführung des virtuellen Prozessors wahrscheinlich zu den nachfolgenden GVAs reicht, wenn die Ausführung sequenziell ist, oder kurze Sprünge macht, wenn die Ausführung verzweigt. „Es kann auch wahrscheinlich sein, dass die vorherigen Adressen zu demselben Ausführungskontext gehören.“ Bei manchen Implementierungen wird eine gleiche Anzahl von nachfolgenden und vorherigen GVAs vorab abgerufen. Bei einer anderen Implementierung können diese Anzahlen signifikant verschieden sein, z. B. die Anzahl von nachfolgenden GVAs, die vorabzurufen sind, kann größer als die Anzahl von vorhergehenden GVAs, die vorabzurufen sind, sein. Bei manchen Implementierungen kann eine gewisse Menge an Speicherseiten, die den angrenzenden GVAs, z. B., 16 MB, entsprechen, ausgewählt und ihre Übersetzungen in dem SPT 236 gespeichert werden. „Die gleiche Vorgehensweise kann auf jede BASIS-GVA angewendet werden, wenn es mehrere Basis-GVAs im Befehlszeiger gibt.”
  • Bei Block 530 kann das Verfahren 500 mit dem Bestimmen derjenigen GVAs fortfahren, auf die häufig durch das GOS 252 und/oder die darauf laufende Software 254 zugegriffen wird. Manche der Software 254 kann dasselbe GPT 130 teilen und manche der GPT-EINTRÄGE kann daher häufiger als andere Einträge zugegriffen werden. Zum Beispiel kann häufiger auf den Kernmoduscode des GOS 252 zugegriffen werden. Das Vorbestücken des SPT 236 mit solchen „Hot Access“ -GVAs kann die Anzahl von Seitenfehlern während der nachfolgenden Prozessorausführung im SPT-Modus signifikant reduzieren. Um GVAs auszuwählen, auf die am häufigsten zugegriffen wird, kann der VMM 250 (und/oder der PCM 270) mit dem Analysieren historischer Daten von GSA-ZUGRIFFEN beginnen. Bei manchen Implementierungen kann eine Sammlung solcher Daten kontinuierlich erfolgen. Bei anderen Implementierungen kann das Sammeln solcher Daten zu einer gewissen Zeit vor dem erwarteten Übergang von dem EPT-Modus zu dem SPT-Modus beginnen. Bei manchen Implementierungen können die historischen Daten für ein bestimmtes Abtastfenster gesammelt werden, das eine bestimmte Anzahl von früheren Ausführungsperioden, z. B., 100 letzte Ausführungsperioden oder eine beliebige andere Anzahl beinhaltet. Während dieses Abtastfensters kann eine Anzahl von Instanzen bestimmt werden, wenn ein GVA einen Seitenfehler verursachte. Anschließend können die GVAs mit der höchsten Anzahl an Seitenfehlern bestimmt werden. Bei manchen Implementierungen kann eine feste Anzahl N der GVAs, auf die am häufigsten zugegriffen wird, ausgewählt werden. Bei manchen Implementierungen können alle GVAs, die eine gewisse Anzahl von Seitenfehlern verursacht haben, bestimmt werden, so dass die Anzahl N zwischen zwei aufeinanderfolgenden EPT-zu-SPT-Modusübergängen verschieden sein kann.
  • Bei Entscheidungsblock 535 kann die Anzahl N mit einer vorbestimmten Anzahl Mjener Hot-Access GVAs verglichen werden, die letztendlich für eine Vorbevölkerung des SPT 236 auszuwählen sind. Falls die Anzahl N M überschreitet, kann das Verfahren 500 bei Block 540 damit fortfahren, die N GVAs zusätzlich zu gewichten, um die Heißheit H jedes GVA zu bestimmen, und die M GVAs mit den höchsten Heißheitswerten H auszuwählen. zum Beispiel kann bestimmt werden, dass eine Seite, die durch ein GVA identifiziert wird, P i r
    Figure DE112019006898T5_0001
    während der i-ten Abtastung ausgelöst hat (z. B., Ausführungsperiode). Der i-ten Probe kann Ein Gewicht zugeordnet werden. Wi Beispielsweise kann dem zeitlich nächstliegenden Sample das maximale Gewicht zugeordnet werden, wohingegen den weiter vergangenen Samples ein kleineres Gewicht zugeordnet werden kann. Bei einer möglichen Implementierung kann die Heißheit Hr des GVA r durch Gewichten der Anzahl an Seitenfehlern über das gesamte Abtastfenster bestimmt werden gemäß H r = i W i P i r
    Figure DE112019006898T5_0002
    wobei die Summierung über die Abtastungen (z. B., Ausführungs-Epochen) innerhalb des Abtastfensters übernommen wird. Die oberen M Hot-Access GVAs, nämlich M GVAs mit der höchsten HotnessHr, können dann zur Hinzufügung zu dem SPT 236 ausgewählt werden. Bei jenen Implementierungen, bei denen die Anzahl N M nicht überschreitet, kann das Verfahren 500 den Block 540 überspringen und alle N GVA zur Hinzufügung zu dem SPT 236 auswählen.
  • Bei Block 550 kann der VMM 250 (und/oder der PCM 270) den SPT 236 mit den Übersetzungen befüllen, die GVAs entsprechen, die unter anderem die während des Blocks 510 ausgewählten Basis-GVAs, die GVAs, die an die während des Blocks 520 ausgewählten Basis-GVAs angrenzen, und die Hot-Access GVAs, die während der Blöcke 530 - 540 ausgewählt werden, beinhalten können. Das heuristische Prefetchen gemäß Verfahren 500 kann sicherstellen, dass die Anzahl von Seitenfehlern während der RCP-VERIFIZIERUNGSSTUFE, die das SPT 236 nutzt, minimiert wird und dass die Ausführung des Prozessors 220 (oder des virtuellen Prozessors) nicht zu stark verlangsamt wird.
  • Die folgende Tabelle veranschaulicht die Effektivität des Vorabrufs gemäß manchen Implementierungen der Verfahren 400-500. Gezeigt sind ungefähre Anzahlen von Befehlen, die während der 0,1 sec nachfolgenden Ausführung im SPT-Modus durch das SPT 236 mit und ohne Vorabruf erfasst werden. Die erfassten Anweisungen werden als Verzweigungen gezählt, wobei ein Brat eine Sequenz von Anweisungen ohne einen Sprung im GSA-RAUM ist.
    Arbeitslast im GOS Ohne Vorabruf Mit Prefetch
    Leerlauf ~ 10 Zweige ~ 100 Zweige
    Kompilierung von Linux Kern Code ~ 20 Zweige ~ 700 Zweige
  • Die gezeigten Daten geben an, dass die Anzahl erfasster Anweisungen signifikant erhöht ist, wenn die Vorabrufheuristiken der Verfahren 400 - 500 genutzt werden, verglichen mit dem, wenn sie nicht sind; dies stellt einen Beweis für ein Konzept für die offenbarten Verbesserungen dar.
  • 6 stellt ein Flussdiagramm eines beispielhaften Verfahrens 600 des Übergangs von dem Schattenseitentabellen-aktivierten Speicherzugriffsmodus zu dem erweiterten Seitentabellen-aktivierten Speicherzugriffsmodus gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung dar. Wenn der VMM 250 (und/oder DER PCM 270) im Moment der Zeit auswählt, den Prozessor 220 (oder den virtuellen Prozessor, der durch den Prozessor 220 unterstützt wird) von dem SPT-Modus in den EPT-Modus zu überführen, kann der VMM 250 bei Block 605 Prozesse vorübergehend stoppen, die durch den virtuellen Prozessor ausgeführt werden, der der VM (z. B., der VM 251(1)) zugewiesen ist. Bei Block 610 kann der TLB 225 gespült werden (z. B. durch die MMU 228). Bei manchen Implementierungen kann nur der Inhalt des TLB 225, der mit dem virtuellen Prozessor assoziiert ist, geleert werden. Bei Block 615 kann ein Inhalt einiger der Register 224 des Prozessors 220 gespeichert werden. Bei manchen Implementierungen können die Register, deren Inhalt gespeichert werden soll, manche oder alle der CR0/CR3/CR4-Register beinhalten. Bei manchen Implementierungen können die Register, deren Inhalt gespeichert werden soll, die Register für den virtuellen Prozessor sein. Der Inhalt der Register kann auf dem Speicher 230 oder auf dem RCP-SPEICHER 275 gespeichert sein.
  • Das Verfahren 600 kann bei Block 620 fortgesetzt werden, bei dem der VMM 250 (und/oder der PCM 270) zwischengespeicherte SPT-bezogene Hardwareregister des virtuellen Prozessors löschen kann. Bei Block 625 kann der VMM 250 die SPT-INHALTE ungültig machen. Bei manchen Implementierungen kann dies erfolgen, indem die Orte des SPT 236 aus dem CR3-Register des Prozessors 220 gelöscht werden. Bei Block 630 können die Speicherseiten, die für den SPT-MODUS zugewiesen sind, freigegeben werden. Bei Block 635 kann das Verfahren 600 mit dem Konfigurieren des VMCS 238 fortfahren, damit der virtuelle Prozessor das SPT 236 deaktiviert. Zum Beispiel kann das VMM 250 bewirken, dass das VMCS 238 die Referenzen auf die Speicheradressen in dem CR3-Register für den virtuellen Prozessor löscht, die den Ort des SPT 236 in dem Speicher 230 speichern. Bei Block 640 kann der VMM 250 (und/oder der PCM 270) das VMCS 238 für den virtuellen Prozessor konfigurieren, um den EPT 132 zu aktivieren. Zum Beispiel kann das VMCS 238 in dem CR3-Register für den virtuellen Prozessor den Ort des EPT 132 in dem Speicher 230 speichern. Bei Block 645 kann das Verfahren 400 die SPT-BITMASKEN konfigurieren. Bei Block 650 kann eine Ausnahmebitmap aktualisiert werden. Die Ausnahmebitmap kann Bits enthalten, deren Zustand (z. B., 1 oder 0) angeben soll, wie Ausnahmen (wie etwa Fehler, Traps und Abbrüche) behandelt werden sollten. Insbesondere können die Ausnahme-Bitmaps angeben, ob ein bestimmter Seitenfehler einen VM-Austritt verursachen soll oder nicht.
  • Das Verfahren 600 kann bei Block 655 den Inhalt der CR0/CR4-Register des Prozessors 220 (oder der entsprechenden virtuellen Register des virtuellen Prozessors) wiederherstellen. Bei manchen Implementierungen wird der Inhalt der Register aus dem Speicher 230 (oder dem RCP-SPEICHER 275) geladen, der zuvor bei Block 615 gespeichert wurde. Bei Block 660 kann der VMM 250 (und/oder der PCM 270) den Kontext der MMU 228 zurücksetzen. Bei Block 665 kann der VMM 250 den EPT 132 laden. Bei manchen Implementierungen kann der geladene EPT der neueste EPT sein, der während der vorherigen Ausführung im EPT-Modus verwendet wird. Der Ort des EPT 132 auf dem Speicher 230 (oder dem RCP-SPEICHER 275) kann in das CR3-Register (oder das virtuelle CR3-Register) geschrieben werden. Das Verfahren 600 kann mit der Wiederaufnahme der Ausführung der angehaltenen Prozesse auf dem virtuellen Prozessor bei Block 670 im EPT-Modus abschließen. Verschiedene Blöcke in dem Verfahren 600 können in einer Reihenfolge durchgeführt werden, die sich von der in 4 angegebenen Reihenfolge unterscheidet. Verschiedene Blöcke des Verfahrens 600 können gleichzeitig miteinander durchgeführt werden.
  • 7 A ist ein Blockdiagramm, das eine In-Order-Pipeline und eine Registerneunamierungsstufen-, Out-of-Order-Ausgabe/Ausführungs-Pipeline eines Prozessors veranschaulicht, der die Leistungsfähigkeit einer Verarbeitungsvorrichtung überwacht, um dynamisches Umschalten zwischen erweiterten Seitentabellen und Schattenseitentabellen zur Laufzeitprozessorverifizierung gemäß mindestens einer Implementierung der Offenbarung bereitzustellen. 7 B ist ein Blockdiagramm, das einen In-Order-Architekturkern und eine Registerumbenennungslogik veranschaulicht, wobei die Out-of-Order-Ausgabe/Ausführungslogik in einem Prozessor gemäß mindestens einer Implementierung der Offenbarung enthalten sein soll. Die Kästchen mit durchgezogener Linie in 7 A veranschaulichen die reihenfolgetreue Pipeline, während die Kästchen mit gestrichelten Linien die Registerumbenennung, reihenfolgetreue Ausgabe/Ausführungs-Pipeline veranschaulichen. Gleichermaßen veranschaulichen die Kästchen mit durchgezogener Linie in 7 B die reihenfolgetreue Architekturlogik, während die Kästchen mit gestrichelten Linien die Registerumbenennungslogik und die reihenfolgetreue Ausgabe/Ausführungslogik veranschaulichen.
  • 7 A ist ein Blockdiagramm, das eine In-Order-Pipeline und eine Registerneunamierungsstufen-, Out-of-Order-Ausgabe/Ausführungs-Pipeline eines Prozessors veranschaulicht, der die Leistungsfähigkeit einer Verarbeitungsvorrichtung überwacht, um dynamisches Umschalten zwischen erweiterten Seitentabellen und Schattenseitentabellen zur Laufzeitprozessorverifizierung gemäß mindestens einer Implementierung der Offenbarung bereitzustellen. 7 B ist ein Blockdiagramm, das einen In-Order-Architekturkern und eine Registerumbenennungslogik veranschaulicht, wobei die Out-of-Order-Ausgabe/Ausführungslogik in einem Prozessor gemäß mindestens einer Implementierung der Offenbarung enthalten sein soll. Die Kästchen mit durchgezogener Linie in 7 A veranschaulichen die reihenfolgetreue Pipeline, während die Kästchen mit gestrichelten Linien die Registerumbenennung, reihenfolgetreue Ausgabe/Ausführungs-Pipeline veranschaulichen. Gleichermaßen veranschaulichen die Kästchen mit durchgezogener Linie in 7 B die reihenfolgetreue Architekturlogik, während die Kästchen mit gestrichelten Linien die Registerumbenennungslogik und die reihenfolgetreue Ausgabe/Ausführungslogik veranschaulichen.
  • In 7 A weist eine Prozessor-Pipeline 700 eine Abrufstufe 702, eine Längendecodierstufe 704, eine Decodierstufe 706, eine Zuordnungsstufe 708, eine Umbenennungsstufe 710, eine Planungsstufe 712 (auch als eine Dispatch-oder Ausgabestufe bekannt), eine Registerlese-/Speicherlesestufe 714, eine Ausführungsstufe 716, eine Rückschreib-/Speicherschreibstufe 718, eine Ausnahmebehandlungsstufe 722 und eine Festschreibungsstufe 724 auf. Bei manchen Implementierungen sind die Stufen in einer anderen Reihenfolge bereitgestellt und verschiedene Stufen können in der Reihenfolge und außerhalb der Reihenfolge betrachtet werden.
  • In 7 B bezeichnen Pfeile eine Kopplung zwischen zwei oder mehr Einheiten und die Richtung des Pfeils gibt eine Richtung des Datenflusses zwischen diesen Einheiten an. 7 B zeigt einen Prozessorkern (Kern) 790 einschließlich einer Frontendeinheit 730, die mit einer Ausführungs-Engine-Einheit 750 gekoppelt ist, und beide sind mit einer Speichereinheit 770 gekoppelt.
  • Der Kern 790 kann ein RISC-KERN (RISC: Reduced Instruction Set Computing), ein CISC-Kern (CISC: Complex Instruction Set Computing), ein VLIW-Kern (VLIW: Very Long Instruction Word) oder ein hybrider oder alternativer Kerntyp sein. Als noch eine andere Option kann der Kern 790 ein Spezialkern sein, wie etwa zum Beispiel ein Netzwerk-oder Kommunikationskern, eine Kompressions-Engine, ein Grafikkern oder dergleichen.
  • Die Frontendeinheit 730 beinhaltet eine Verzweigungsvorhersageeinheit 732, die mit einer Befehls-Cacheeinheit 734 gekoppelt ist, die mit einem Befehlsübersetzungspuffer (TLB) 736 gekoppelt ist, der mit einer Befehlsabrufeinheit 738 gekoppelt ist, die mit einer Decodiereinheit 740 gekoppelt ist. Die Decodiereinheit oder der Decodierer kann Befehle decodieren und als eine Ausgabe eine oder mehrere Mikrooperationen, Mikrocodeeingangspunkte, Mikrobefehle, andere Befehle oder andere Steuersignale erzeugen, die von den ursprünglichen Befehlen decodiert werden oder die anderweitig reflektieren oder von diesen abgeleitet werden. Der Decodierer kann unter Verwendung verschiedener unterschiedlicher Mechanismen implementiert werden. Beispiele für geeignete Mechanismen beinhalten unter anderem Nachschlagetabellen, Hardware-Implementierungen, programmierbare Logikarrays (PLAs), Mikrocode-Festwertspeicher (ROMs) usw. Die Anweisungs-Cache-Einheit 734 ist ferner mit einer Ebene 2 (L2) -Cache-Einheit 776 in der Speichereinheit 770 gekoppelt. Die Decodiereinheit 740 ist mit einer Umbenennung/Zuordnungseinheit 752 in der Ausführungs-Engine-Einheit 750 gekoppelt.
  • Die Ausführungs-Engine-Einheit 750 beinhaltet die Umbenennungs-/Zuordnungseinheit 752, die mit einer Rückzugseinheit 754 und einem Satz von einer oder mehreren Schedulereinheit(en) 756 gekoppelt ist. Die Schedulereinheit(en) 756 repräsentiert(repräsentieren) eine beliebige Anzahl verschiedener Scheduler, einschließlich Reservierungsstationen, zentralem Anweisungsfenster usw. Die Schedulereinheit(en) 756 ist(sind) mit der (den) physischen Registerdatei(en) einheit(en) 758 gekoppelt. Jede der physischen Registerdatei(en) einheiten 758 repräsentiert eine oder mehrere physische Registerdateien, von denen verschiedene einen oder mehrere verschiedene Datentypen speichern, wie etwa skalare Ganzzahl, skalare Gleitkomma, gepackte Ganzzahl, gepackte Gleitkomma, Vektor-Ganzzahl, Vektor-Gleitkomma usw., Status (z. B., ein Befehlszeiger, der die Adresse des nächsten auszuführenden Befehls ist) usw. Die physische (n) Registerdatei(en) -Einheit(en) 758 wird(werden) durch die Rückzugseinheit 754 überlappt, um verschiedene Weisen zu veranschaulichen, auf die Registerumbenennung und Außerreihenfolgeausführung implementiert werden können (z. B. unter Verwendung eines Rückordnungspuffers(en) und einer Rückzugsregisterdatei(en), unter Verwendung einer zukünftigen Datei(en), eines Historiepuffers(en) und einer Rückzugsregisterdatei(en); unter Verwendung einer Registerabbildung und eines Pools von Registern usw.).
  • Allgemein sind die architektonischen Register von der Außenseite des Prozessors oder vom Standpunkt des Programmierers aus sichtbar. Die Register sind nicht auf irgendeinen bekannten speziellen Schaltungstyp beschränkt. Es sind verschiedene Arten von Registern geeignet, sofern sie fähig sind, Daten wie hierin beschrieben zu speichern und bereitzustellen. Beispiele für geeignete Register beinhalten unter anderem dedizierte physische Register, dynamisch zugewiesene physische Register unter Verwendung von Registerumbenennung, Kombinationen von dedizierten und dynamisch zugewiesenen physischen Registern usw. Die Rückzugseinheit 754 und die physische(n) Registerdatei(en) einheit(en) 758 sind mit dem (den) Ausführungscluster(n) 760 gekoppelt. Der eine oder die mehreren Ausführungscluster 760 weisen einen Satz von einer oder mehreren Ausführungseinheiten 762 und einen Satz von einer oder mehreren Speicherzugriffseinheiten 764 auf. Die Ausführungseinheiten 762 können verschiedene Operationen (z. B. Verschiebungen, Addition, Subtraktion, Multiplikation) und an verschiedenen Datentypen (z. B. skalares Gleitkomma, gepackte Ganzzahl, gepacktes Gleitkomma, Vektor-Ganzzahl, Vektor-Gleitkomma) durchführen.
  • Obwohl manche Implementierungen eine Anzahl von Ausführungseinheiten beinhalten können, die spezifischen Funktionen oder Sätzen von Funktionen dediziert sind, können andere Implementierungen eine Ausführungseinheit oder mehrere Ausführungseinheiten beinhalten, die alle alle Funktionen durchführen. Die Schedulereinheit(en) 756, die physische (n) Registerdatei(en) einheit(en) 758 und der/die Ausführungscluster 760 sind als möglicherweise mehrfach gezeigt, weil bestimmte Implementierungen separate Pipelines für bestimmte Arten von Daten/Operationen erzeugen (z. B. eine skalare Ganzzahl-Pipeline, eine skalare Gleitkomma-/gepackte Ganzzahl-/gepackte Gleitkomma-/Vektor-Ganzzahl-/Vektor-Gleitkomma-Pipeline, und/oder eine Speicherzugriffspipeline, die jeweils ihre eigene Schedulereinheit, physische Registerdatei(en) -Einheit und/oder Ausführungs-Cluster aufweisen - und im Falle einer separaten Speicherzugriffspipeline werden bestimmte Implementierungen implementiert, bei denen der Ausführungs-Cluster dieser Pipeline die Speicherzugriffseinheit(en) 764 aufweist). Es versteht sich auch, dass, wenn getrennte Pipelines verwendet werden, eine oder mehrere dieser Pipelines Außer-Reihenfolge-Ausgabe/-Ausführung und der Rest In-Reihenfolge sein können.
  • Der Satz von Speicherzugriffseinheiten 764 ist mit der Speichereinheit 770 gekoppelt, die eine DATEN-TLB-EINHEIT 772 beinhaltet, die mit einer Daten-Cache-Einheit 774 gekoppelt ist, die mit einer Ebene 2 (L2) -Cache-Einheit 776 gekoppelt ist. Bei einer beispielhaften Implementierung können die Speicherzugriffseinheiten 764 eine Ladeeinheit, eine Speicheradresseinheit und eine Speicherdateneinheit einschließen, die alle mit der Daten-TLB-Einheit 772 in der Speichereinheit 770 gekoppelt sind. Die L2-Cache-Einheit 776 ist mit einer oder mehreren anderen Cache-Ebenen und schließlich mit einem Hauptspeicher gekoppelt.
  • Beispielsweise kann die beispielhafte Registerumbenennungs-Außer-Reihenfolge-Ausgabe-/Ausführungskernarchitektur die Pipeline 700 von 7 A wie folgt implementieren: 1) der Befehlsabruf 38 führt die Abruf-und Längendecodierstufen 702 bzw. 704 durch; 2) die Decodiereinheit 740 führt die Decodierstufe 706 durch; 3) die Umbenennungs-/Zuordnungseinheit 752 führt die Zuordnungsstufe 708 und die Umbenennungsstufe 710 durch; 4) Die Schedulereinheit(en) 756 führen die Schedulerstufe 712 durch; 5) die physische (n) Registerdateieinheit(en) 758 und die Speichereinheit 770 führen die Registerlese-/Speicherlesestufe 714 durch; der Ausführungscluster 760 führt die Ausführungsstufe 716 durch; 6) die Speichereinheit 770 und die physische(n) Registerdatei(en) einheit(en) 758 führen die Rückschreib-/Speicherschreibstufe 718 durch; 7) verschiedene Einheiten können an der Ausnahmebehandlungsstufe 722 beteiligt sein; 722) die Zurückzieheinheit 754 und die physische(n) Registerdatei(en) einheit(en) 758 führen die Festschreibstufe 724 durch.
  • Der Kern 790 kann einen oder mehrere Befehlssätze unterstützen (z. B., den x86-Befehlssatz (mit einigen Erweiterungen, die mit neueren Versionen hinzugefügt wurden); den MIPS-BEFEHLSSATZ von MIPS Technologies von Sunnyvale, CA; den ARM-BEFEHLSSATZ (mit zusätzlichen Erweiterungen wie NEON) von ARM Holdings von Sunnyvale, CA).
  • Es versteht sich, dass der Kern Multithreading (Ausführen von zwei oder mehr parallelen Sätzen von Operationen oder Threads) unterstützen kann und dies auf vielfältige Weisen vornehmen kann, einschließlich Zeitscheiben-Multithreading, Simultan-Multithreading (wobei ein einzelner physischer Kern einen logischen Kern für jeden der Threads bereitstellt, die der physische Kern simultan im Multithreading behandelt), oder eine Kombination davon (z. B. Zeitscheiben-Abruf und -Decodierung und simultanes Multithreading danach, wie etwa bei der Hyperthreading-Technologie von Intel®).
  • Obwohl Registerumbenennung im Kontext einer Außerreihenfolgeausführung beschrieben ist, versteht es sich, dass Registerumbenennung in der Reihenfolge verwendet werden kann. Obwohl die veranschaulichte Implementierung des Prozessors auch separate Befehls-und Daten-Cache-Einheiten 734/774 und eine gemeinsam genutzte L2-Cache-Einheit 776 beinhaltet, können alternative Implementierungen einen einzelnen internen Cache für sowohl Befehle als auch Daten aufweisen, wie etwa zum Beispiel einen internen Level-1 (L1) -Cache oder mehrere interne Cache-Ebenen. Bei manchen Implementierungen kann das System eine Kombination eines internen Cache und eines externen Cache, der sich extern bezüglich des Kerns und/oder des Prozessors befindet, beinhalten. Alternativ kann sich der gesamte Cache extern bezüglich des Kerns und/oder des Prozessors befinden.
  • 8 veranschaulicht ein Blockdiagramm der Mikroarchitektur für eine Verarbeitungsvorrichtung 800, die Logikschaltungen beinhaltet, um dynamisches Umschalten zwischen erweiterten Seitentabellen und Schattenseitentabellen zur Laufzeitprozessorverifizierung bereitzustellen. Bei manchen Implementierungen kann ein Befehl implementiert werden, um an Datenelementen mit Byte-, Wort-, Doppelwort-, Quadwort-usw. Größen sowie Datenypen, wie etwa Ganzzahl-und Gleitkommadatypen mit einfacher und doppelter Genauigkeit, zu arbeiten. Bei einer Implementierung ist das reihenfolgetreue Frontend 801 der Teil der Verarbeitungsvorrichtung 800, der auszuführende Anweisungen abruft und sie zur späteren Verwendung in der Verarbeitungsvorrichtungspipeline vorbereitet. Die Implementierungen zum Ermöglichen eines dynamischen Umschaltens zwischen erweiterten Seitentabellen und Schattenseitentabellen zur Laufzeitprozessorverifikation können in der Verarbeitungsvorrichtung 800 implementiert werden.
  • Das Frontend 801 kann mehrere Einheiten beinhalten. Bei einer Implementierung ruft der Befehlsvorabrufer 826 Befehle aus dem Speicher ab und speist sie in einen Befehlsdecodierer 828 ein, der diese im Gegenzug decodiert oder interpretiert. Bei einer Implementierung decodiert der Decodierer beispielsweise einen empfangenen Befehl in eine oder mehrere Operationen, genannt „Mikrobefehle“ oder „Mikrooperationen“ (auch Mikro-Op oder Uops genannt), die die Maschine ausführen kann. Bei anderen Implementierungen parst der Decodierer den Befehl in einen Opcode und entsprechende Daten und Steuerfelder, die durch die Mikroarchitektur verwendet werden, um Operationen gemäß einer Implementierung durchzuführen. Bei einer Implementierung nimmt der Trace-Cache 830 decodierte Uops und setzt sie in programmgeordnete Sequenzen oder Traces in der Uop-Warteschlange 834 zur Ausführung zusammen. Wenn der Trace-Cache 830 auf einen komplexen Befehl trifft, stellt der MIKROCODE-ROM 832 die Uops bereit, die benötigt werden, um die Operation abzuschließen.
  • Manche Befehle werden in eine einzige Mikro-Op umgewandelt, wohingegen andere mehrere Mikro-Ops benötigen, um die vollständige Operation abzuschließen. Bei einer Implementierung, falls mehr als vier Mikro-Ops zum Abschließen eines Befehls benötigt werden, greift der Decodierer 818 auf den Mikrocode-ROM 832 zu, um den Befehl durchzuführen. Für eine Implementierung kann ein Befehl in eine kleine Anzahl von Mikroopops zur Verarbeitung an dem Befehlsdecodierer 828 decodiert werden. Bei einer anderen Implementierung kann ein Befehl innerhalb des MIKROCODE-ROM 832 gespeichert werden, falls eine Anzahl von Mikrooperationen benötigt wird, um die Operation zu erreichen. Der Trace-Cache 830 bezieht sich auf ein programmierbares Einstiegspunkt-Logikarray (Eintrittspunkt-PLA) zum Bestimmen eines korrekten Mikrobefehlszeigers zum Lesen der Mikrocodesequenzen, um einen oder mehrere Befehle gemäß einer Implementierung vom Mikrocode-ROM 832 abzuschließen. Nachdem Mikrocode-ROM 832 die Sequenzierung von Mikro-Ops für einen Befehl beendet hat, setzt das Frontend 801 der Maschine das Abrufen von Mikro-Ops aus dem Trace-Cache 830 fort.
  • Die Außer-Reihenfolge-Ausführungs-Engine 803 befindet sich an der Stelle, an der die Befehle zur Ausführung vorbereitet werden. Die Außer-Reihenfolge-Ausführungslogik weist eine Anzahl von Puffern auf, um den Befehlsfluss zu glätten und umzuordnen, sodass die Leistung bei deren Abfolge in der Pipeline und bei der Ausführungsplanung optimiert wird. Die Zuteilerlogik teilt die Maschinenpuffer und Ressourcen zu, die jede Uop zur Ausführung braucht. Die Zuordnungs-/Registerumbenennungslogik 840 benennt Logikregister auf Einträge in einer Registerdatei um. Der Zuordner 840 weist auch einen Eintrag für jede Uop in einer der zwei Uop-Warteschlangen, eine für Speicheroperationen 842 und eine für Nichtspeicheroperationen 844, vor den Befehlsplanern: Speicherplaner 846, Schnellplaner 802, langsamer/allgemeiner Gleitkommaplaner 804 und einfacher Gleitkommaplaner 806 zu. Die Uop-Scheduler 802, 804, 806 bestimmen, wann eine Uop zur Ausführung bereit ist, basierend auf der Bereitschaft ihrer abhängigen Eingangsregisteroperandenquellen und der Verfügbarkeit der Ausführungsressourcen, die die Uops zum Abschließen ihrer Operation benötigen. Der schnelle Scheduler 802 einer Implementierung kann auf jeder Hälfte des Haupttaktzyklus planen, während die anderen Scheduler möglicherweise nur einmal pro Hauptverarbeitungsvorrichtungstaktzyklus planen. Die Scheduler vermitteln für die Verteilungsports, um Uops zur Ausführung zu planen.
  • Registerdateien 808, 810 sitzen zwischen den Schedulern 802, 804, 806 und den Ausführungseinheiten 812, 814, 816, 818, 820, 822, 824 in dem Ausführungsblock 811 ein. Es gibt eine separate Registerdatei 808, 810 für Ganzzahl-bzw. Gleitkommaoperationen. Jede Registerdatei 808, 810 einer Implementierung beinhaltet auch ein Bypass-Netzwerk, das gerade abgeschlossene Ergebnisse, die noch nicht in die Registerdatei geschrieben wurden, umgehen oder an neue abhängige Uops weiterleiten kann. Die Ganzzahlregisterdatei 808 und die Gleitkomma-Registerdatei 810 sind auch in der Lage, Daten miteinander zu kommunizieren. Für eine Implementierung ist die Ganzzahlregisterdatei 808 in zwei separate Registerdateien aufgeteilt, eine Registerdatei für die 32 Bits niedriger Ordnung von Daten und eine zweite Registerdatei für die 32 Bits hoher Ordnung von Daten. Die Gleitkomma-Registerdatei 810 einer Implementierung weist 128 Bit breite Einträge auf, da Gleitkomma-Befehle typischerweise Operanden von 64 bis 128 Bit Breite aufweisen.
  • Der Ausführungsblock 811 enthält die Ausführungseinheiten 812, 814, 816, 818, 820, 822, 824, in denen die Befehle tatsächlich ausgeführt werden. Dieser Abschnitt beinhaltet die Registerdateien 808, 810, die die Ganzzahl-und Gleitkommadatenoperandenwerte speichern, die die Mikrobefehle ausführen müssen. Die Verarbeitungsvorrichtung 800 einer Implementierung besteht aus einer Anzahl von Ausführungseinheiten: Adresserzeugungseinheit (AGU) 812, AGU 814, schnelle ALU 816, schnelle ALU 818, langsame ALU 820, GLEITKOMMA-ALU 822, Gleitkomma-Bewegungseinheit 824. Für eine Implementierung führen die Gleitkomma-Ausführungsblöcke 812, 814 Gleitkomma-, MMX-, SIMD- und SSE- oder andere Operationen aus. Die Gleitkomma-ALU 812 einer Implementierung beinhaltet einen 64-Bit-mal-64-Bit-Gleitkomma-Teiler zum Ausführen von Teilen-, Quadratwurzel- und Rest-Mikro-Ops. Für Implementierungen der Offenbarung können Befehle, die einen Gleitkommawert einbeziehen, mit der Gleitkomma-Hardware bearbeitet werden.
  • Bei einer Implementierung gehen die ALU-Operationen zu den Hochgeschwindigkeits-ALU-Ausführungseinheiten 816, 818. Die schnellen ALUs 816, 818 einer Implementierung können schnelle Operationen mit einer effektiven Latenz von einem halben Taktzyklus ausführen. Für eine Implementierung gehen die meisten komplexen Ganzzahl-Operationen zu der langsamen ALU 820, da die langsame ALU 820 Ganzzahl-Ausführungshardware für Operationen des Typs mit langer Latenz beinhaltet, wie etwa Multiplizierer, Verschiebungen, Flag-Logik und Verzweigungsverarbeitung. Speicherlade-/-Speicheroperationen werden durch die AGUs 812, 814 ausgeführt. Für eine Implementierung sind die Ganzzahl-ALUs 816, 818, 820 im Kontext des Durchführens von Ganzzahl-Operationen an 64-Bit-Datenoperanden beschrieben. Bei alternativen Implementierungen können die ALUs 816, 818, 820 implementiert sein, um eine Vielfalt von Datenbits einschließlich 16, 32, 128, 256 usw. zu unterstützen. Gleichermaßen können die Gleitkommaeinheiten 822, 824 implementiert sein, um einen Bereich von Operanden mit Bits verschiedener Breiten zu unterstützen. Für eine Implementierung können die Gleitkommaeinheiten 822, 824 an 128 Bit breiten gepackten Datenoperanden in Verbindung mit SIMD und Multimedianweisungen arbeiten.
  • Bei einer Implementierung verteilen die Uops-Scheduler 802, 804, 806 abhängige Operationen, bevor die Parent-Ladung ihre Ausführung beendet hat. Da Uops spekulativ in der Verarbeitungsvorrichtung 800 geplant und ausgeführt werden, beinhaltet die Verarbeitungsvorrichtung 800 auch Logik zum Handhaben von Speicherfehlern. Falls eine Datenlast im Daten-Cache fehlschlägt, kann es abhängige Operationen im Flug in der Pipeline geben, die den Scheduler mit temporär inkorrekten Daten verlassen haben. Ein Wiederholungsmechanismus verfolgt und führt Befehle, die inkorrekte Daten verwenden, erneut aus. Nur die abhängigen Operationen müssen wiederholt werden und den abhängigen wird die Beendigung erlaubt. „Die Scheduler und Wiedergabemechanismen einer Implementierung einer Verarbeitungseinrichtung sind ferner dazu ausgebildet, Befehlsfolgen für Textzeichenvergleichsoperationen zu erfassen.“ Die Verarbeitungsvorrichtung 800 beinhaltet auch Logik zum Ermöglichen eines dynamischen Umschaltens zwischen erweiterten Seitentabellen und Schattenseitentabellen zur Laufzeitprozessorverifikation gemäß einer Implementierung.
  • Der Begriff „Register“ kann sich auf die bordeigenen Verarbeitungsvorrichtungsspeicherungsstellen beziehen, die als Teil von Anweisungen zum Identifizieren von Operanden verwendet werden. Mit anderen Worten können Register jene sein, die von außerhalb der Verarbeitungsvorrichtung (aus Perspektive eines Programmierers) verwendbar sind. Die Register einer Implementierung sollten jedoch nicht in der Bedeutung auf einen speziellen Schaltungstyp beschränkt werden. Stattdessen ist ein Register einer Implementierung in der Lage, Daten zu speichern und bereitzustellen und die hierin beschriebenen Funktionen durchzuführen. Die hier beschriebenen Register können durch Schaltungen innerhalb einer Verarbeitungsvorrichtung unter Verwendung einer beliebigen Anzahl verschiedener Techniken implementiert werden, wie etwa dedizierte physische Register, dynamisch zugewiesene physische Register unter Verwendung von Registerumbenennung, Kombinationen von dedizierten und dynamisch zugewiesenen physischen Registern usw. Bei einer Implementierung speichern Ganzzahlregister zweiunddreißig Bit-Ganzzahldaten. Eine Registerdatei einer Implementierung enthält auch acht MULTIMEDIA-SIMD-REGISTER für gepackte Daten.
  • Für die Erörterungen hierin werden die Register als Datenregister verstanden, die dazu ausgelegt sind, gepackte Daten zu halten, wie etwa 64 Bit breite MMXTM-REGISTER (in manchen Fällen auch als „mm“ -Register bezeichnet) in Mikroverarbeitungsvorrichtungen, die mit MMX-TECHNOLOGIE von Intel Corporation of Santa Clara, Kalifornien, aktiviert sind. Diese MMX-REGISTER, die sowohl in Ganzzahl-als auch in Gleitkomma-Formen verfügbar sind, können mit gepackten Datenelementen arbeiten, die SIMD-und SSE-ANWEISUNGEN begleiten. Gleichermaßen können auch 128 Bit breite XMM-REGISTER in Bezug auf SSE2, SSE3, SSE4 oder darüber hinaus (allgemein als „SSEx“ bezeichnet) Technologie verwendet werden, um solche gepackten Datenoperanden zu halten. Bei einer Implementierung müssen die Register beim Speichern von paketisierten Daten und Ganzzahl-Daten nicht zwischen den beiden Datentypen unterscheiden. Bei einer Implementierung sind Ganzzahl und Gleitkomma entweder in derselben Registerdatei oder unterschiedlichen Registerdateien enthalten. Bei einer Implementierung können ferner Gleitkomma- und Ganzzahl-Daten in unterschiedlichen Registern oder denselben Registern gespeichert werden.
  • Implementierungen, um dynamisches Umschalten zwischen erweiterten Seitentabellen und Schattenseitentabellen zur Laufzeitprozessorverifikation zu ermöglichen, können in vielen verschiedenen Systemtypen implementiert werden. Nun unter Bezugnahme auf 9 ist ein Blockdiagramm eines Multiprozessorvorrichtungssystems 900 gemäß einer Implementierung gezeigt. Wie in 9 gezeigt, ist das Multiprozessorvorrichtungssystem 900 ein Punkt-zu-Punkt-Zwischenverbindungssystem und beinhaltet eine erste Verarbeitungsvorrichtung 970 und eine zweite Verarbeitungsvorrichtung 980, die über eine Punkt-zu-Punkt-Zwischenverbindung 950 gekoppelt sind. Wie in 9 gezeigt, kann jede der Verarbeitungsvorrichtungen 970 und 980 Mehrkernverarbeitungsvorrichtungen sein, einschließlich erster und zweiter Verarbeitungsvorrichtungskerne (nicht gezeigt), obwohl potenziell viel mehr Kerne in den Verarbeitungsvorrichtungen vorhanden sein können. Die Verarbeitungsvorrichtungen können jeweils hybride Schreibmoduslogiken gemäß einer Implementierung der vorliegenden Erfindung beinhalten. Die Implementierungen zum Ermöglichen eines dynamischen Umschaltens zwischen erweiterten Seitentabellen und Schattenseitentabellen zur Laufzeitprozessorverifikation können in der Verarbeitungsvorrichtung 970, der Verarbeitungsvorrichtung 980 oder beiden implementiert sein.
  • Obwohl mit zwei Verarbeitungsvorrichtungen 970, 980 gezeigt, versteht es sich, dass der Schutzumfang der Offenbarung nicht so beschränkt ist. Bei anderen Implementierungen können eine oder mehrere zusätzliche Verarbeitungsvorrichtungen in einer gegebenen Verarbeitungsvorrichtung vorhanden sein.
  • Die Prozessoren 970 und 980 sind einschließlich integrierter Speichersteuerungseinheiten (IMCs: Integrated Memory Controller Units) 972 bzw. 982 gezeigt. Die Verarbeitungsvorrichtung 970 beinhaltet auch als Teil ihrer Buscontrollereinheiten Punkt-zu-Punkt (P-P) -Schnittstellen 976 und 978; gleichermaßen beinhaltet die zweite Verarbeitungsvorrichtung 980 P-P-Schnittstellen 986 und 988. Die Verarbeitungsvorrichtungen 970, 980 können Informationen über eine Punkt-zu-Punkt (P-P) - Schnittstelle 950 unter Verwendung von P-P-Schnittstellenschaltungen 978, 988 austauschen. Wie in 9 gezeigt, koppeln IMCs 972 und 982 die Verarbeitungsvorrichtungen mit jeweiligen Speichern, nämlich einem Speicher 932 und einem Speicher 934, die Teile des Hauptspeichers sein können, die lokal mit den jeweiligen Verarbeitungsvorrichtungen verbunden sind.
  • Die Prozessoren 970, 980 können jeweils Informationen mit einem Chipsatz 990 über individuelle P-P-Schnittstellen 952, 954 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen 976, 994, 986, 998 austauschen. Der Chipsatz 990 kann auch Informationen mit einer Hochleistungs-Grafikschaltung 938 über eine Hochleistungs-Grafikschnittstelle 992 austauschen.
  • Ein (nicht gezeigter) gemeinsam genutzter Cache kann entweder in einer Verarbeitungsvorrichtung oder außerhalb beider Verarbeitungsvorrichtungen enthalten sein, jedoch über eine P-P-Verbindung mit den Verarbeitungsvorrichtungen verbunden sein, so dass lokale Cacheinformationen einer oder beider Verarbeitungsvorrichtungen in dem gemeinsam genutzten Cache gespeichert werden können, falls eine Verarbeitungsvorrichtung in einen Niedrigleistungsmodus versetzt wird.
  • Der Chipsatz 990 kann über eine Schnittstelle 996 mit einem ersten Bus 916 gekoppelt sein. Bei einer Implementierung kann der erste Bus 916 ein Peripheral Component Interconnect (PCI) -Bus oder ein Bus wie etwa ein PCI-EXPRESS-BUS oder ein anderer E/A-Interconnect-Bus der dritten Generation sein, obwohl der Schutzumfang der Offenbarung nicht so beschränkt ist.
  • Wie in 9 gezeigt, können verschiedene E/A-Vorrichtungen 914 mit dem ersten Bus 916 gekoppelt sein, zusammen mit einer Busbrücke 918, die den ersten Bus 916 mit einem zweiten Bus 920 koppelt. Bei einer Implementierung kann der zweite Bus 920 ein LPC-Bus (LPC: Low Pin Count) sein. Verschiedene Vorrichtungen können bei einer Implementierung mit dem zweiten Bus 920 gekoppelt sein, einschließlich zum Beispiel einer Tastatur und/oder Maus 922, Kommunikationsvorrichtungen 927 und einer Speichereinheit 928, wie etwa einem Plattenlaufwerk oder einer anderen Massenspeichervorrichtung, die Anweisungen/Code und Daten 930 beinhalten kann. Ferner kann ein Audio-E/A 924 mit dem zweiten Bus 920 gekoppelt sein. Es sei angemerkt, dass andere Architekturen möglich sind. Zum Beispiel kann ein System anstelle der Punkt-zu-Punkt-Architektur von 9 einen Multi-Drop-Bus oder eine andere derartige Architektur implementieren.
  • Nun unter Bezugnahme auf 10 ist ein Blockdiagramm eines dritten Systems 1000 gemäß einer Implementierung der Offenbarung gezeigt. Gleiche Elemente in 9 und 10 tragen gleiche Bezugszeichen und gewisse Aspekte von 9 wurden in 10 weggelassen, um ein Verdecken anderer Aspekte von 10 zu vermeiden.
  • In 10 sind Prozessoren 970, 980 dargestellt. In einer Ausführungsform können die Prozessoren 970, 980 Hybridkerne implementieren. Die Prozessoren 970, 980 können integrierten Speicher und E/A-Steuerlogik („CL“) 1072 bzw. 1082 beinhalten und über eine Punkt-zu-Punkt-Verbindung 950 zwischen Punkt-zu-Punkt (P-P) -Schnittstellen 978 bzw. 988 miteinander kommunizieren. Die Prozessoren 970, 980 kommunizieren jeweils über Punkt-zu-Punkt-Verbindungen 952 und 954 durch die jeweiligen P-P-Schnittstellen 976 bis 994 und 986 bis 998 mit dem Chipsatz 990, wie gezeigt. Für wenigstens eine Implementierung kann die CL 1072, 1082 IMCs 972, 982, wie hier beschrieben, beinhalten. Zusätzlich dazu können die CL 1072, 1082 auch E/A-Steuerlogik beinhalten. 10 veranschaulicht, dass die Speicher 932, 934 mit der CL 1072, 1082 gekoppelt sind und dass E/A-Vorrichtungen 1014 auch mit der CL 1072, 1082 gekoppelt sind. Legacy-E/A-Vorrichtungen 1015 sind über die Schnittstelle 996 mit dem Chipsatz 990 gekoppelt. Die Implementierungen zum Ermöglichen eines dynamischen Umschaltens zwischen erweiterten Seitentabellen und Schattenseitentabellen zur Laufzeitprozessorverifikation können in der Verarbeitungsvorrichtung 970, der Verarbeitungsvorrichtung 980 oder beiden implementiert sein.
  • 11 ist ein beispielhaftes System-on-a-Chip (SoC) 1100, das einen oder mehrere der Kerne 1112 A... 1112 N des Anwendungsprozessors 1110 dargestellt. Andere System Entwürfe und -konfigurationen, die im Stand der Technik für Laptops, Desktops, handgehaltene PCs, persönliche digitale Assistenten, Engineering Workstations, Server, Netzwerk Vorrichtungen, Netzwerk Hubs, Switches, eingebettete Verarbeitungsvorrichtungen, digitale Signalverarbeitungsvorrichtungen (DSPs), Grafikvorrichtungen, Videospielvorrichtungen, Set-Top-Boxen, Mikrocontroller, Mobiltelefone, tragbare Medienabspielgeräte, handgehaltene Vorrichtungen und verschiedene andere elektronische Vorrichtungen bekannt sind, sind ebenfalls geeignet. Allgemein sind eine große Vielfalt von Systemen oder elektronischen Vorrichtungen, die in der Lage sind, eine Verarbeitungsvorrichtung und/oder eine andere Ausführungslogik, wie hier offenbart, aufzunehmen, allgemein geeignet.
  • Nun unter Bezugnahme auf 11 ist ein Blockdiagramm eines SoC 1100 gemäß einer Implementierung der Offenbarung gezeigt. Außerdem sind gestrichelte Kästen Merkmale auf weiterentwickeltem SoCs. In 11 ist eine Verbindungseinheit(en) 1102 gekoppelt mit: dem Anwendungsprozessor 1110, der einen Satz von einem oder mehreren Kernen 1112A-N beinhaltet, die eine oder mehrere Cacheeinheiten 1104 A...1104 N und gemeinsam genutzte(n) Cacheeinheit(en) 1106 enthalten; eine Systemagenteneinheit 1113; eine(n) Bussteuerungseinheit(en) 1116; eine(n) integrierte(n) Speichersteuereinheit(en) 1114; einen Satz von einer oder mehreren Medienverarbeitungsvorrichtungen 1120, die integrierte Grafiklogik 1108, eine Bildverarbeitungsvorrichtung 1124 zum Bereitstellen von Standbild- und/oder Videokamerafunktionalität, eine Audioverarbeitungsvorrichtung 1126 zum Bereitstellen einer Hardwareaudiobeschleunigung und eine Videoverarbeitungsvorrichtung 1128 zum Bereitstellen einer Videocodierungs-/Decodierungsbeschleunigung; eine statische Direktzugriffsspeicher (SRAM) -Einheit 1130; eine Direktspeicherzugriff (DMA) -Einheit 1132; und eine Anzeigeeinheit 1140 zum Koppeln mit einer oder mehreren externen Anzeigen. Die Implementierungen zum Ermöglichen eines dynamischen Umschaltens zwischen erweiterten Seitentabellen und Schattenseitentabellen zur Laufzeitprozessorverifikation können in dem SoC 1100 implementiert werden.
  • Unter Bezugnahme auf 12 ist eine Implementierung einer SoC-Gestaltung gemäß Implementierungen der Offenbarung dargestellt. Als ein veranschaulichendes Beispiel ist das SoC 1200 in einem Benutzergerät (UE) enthalten. Bei einer Implementierung bezieht sich UE auf eine beliebige Vorrichtung, die durch einen Endbenutzer zum Kommunizieren zu verwenden ist, wie etwa ein Handheld-Telefon, Smartphone, Tablet, ultradünnes Notebook, Notebook mit Breitbandadapter oder eine beliebige andere ähnliche Kommunikationsvorrichtung. Ein UE kann sich mit einer Basisstation oder einem Knoten verbinden, die/der in der Natur einer Mobilstation (MS) in einem GSM-NETZ entsprechen kann. Die Implementierungen zum Ermöglichen eines dynamischen Umschaltens zwischen erweiterten Seitentabellen und Schattenseitentabellen zur Laufzeitprozessorverifikation können in dem SoC 1200 implementiert werden.
  • Hier beinhaltet das SoC 1220 zwei Kerne - 1206 und 1207. Ähnlich der obigen Erörterung können die Kerne 1206 und 1207 einer Befehlssatzarchitektur entsprechen, wie etwa einer Verarbeitungsvorrichtung mit der Intel® -Architektur CoreTM, einer Advanced Micro Devices, Inc. (AMD) -Verarbeitungsvorrichtung, einer MIPS-basierten Verarbeitungsvorrichtung, einem ARM-basierten Verarbeitungsvorrichtungsdesign oder einem Kunden davon sowie deren Lizenznehmer oder Übersetzer. Die Kerne 1206 und 1207 sind mit der Cachesteuerung 1208 gekoppelt, die mit der Busschnittstelleneinheit 1209 und dem L2-Cache 1210 assoziiert ist, um mit anderen Teilen des Systems 1200 zu kommunizieren. Die Zwischenverbindung 1211 beinhaltet eine On-Chip-Zwischenverbindung, wie etwa eine IOSF, AMBA oder andere oben besprochene Zwischenverbindungen, die einen oder mehrere Aspekte der beschriebenen Offenbarung implementieren können.
  • Das Interconnect 1211 stellt Kommunikationskanäle zu den anderen Komponenten bereit, wie etwa einem SIM (Subscriber-Identity-Module - Teilnehmeridentitätsmodul) 1230 zum Verknüpfen mit einer SIM-Karte, einen Boot-ROM 1235 zum Halten von Boot-Code zur Ausführung durch die Kerne 1206 und 1207 zum Initialisieren und Booten des SoC 1200, eine SDRAM-Steuerung 1240 zum Verknüpfen mit externem Speicher (z. B. DRAM 1260), eine Flash-Steuerung 1245 zum Verknüpfen mit nichtflüchtigem Speicher (z. B. Flash 1265), eine Peripheriesteuerung 1250 (z. B. Serial Peripheral Interface) zum Verknüpfen mit Peripheriegeräten, Video-Codecs 1220 und eine Videoschnittstelle 1225 zum Anzeigen und Empfangen von Eingaben (z. B. berührungsaktivierte Eingaben), eine GPU 1215 zum Ausführen grafikbezogener Berechnungen, usw. Jegliche dieser Schnittstellen können Aspekte der hierin beschriebenen Erfindung einbeziehen.
  • Außerdem veranschaulicht das System Peripheriegeräte zur Kommunikation, wie etwa ein Bluetooth-Modul 1270, ein 3G-Modem 1275, ein GPS 1280 und ein WiFi 1285. Es ist zu beachten, wie oben erwähnt, dass ein UE ein Funkgerät zur Kommunikation beinhaltet. Infolgedessen sind diese peripheren Kommunikationsmodule möglicherweise nicht alle enthalten. In einem UE sollte jedoch eine Form eines Funkgeräts zur externen Kommunikation enthalten sein.
  • 13 veranschaulicht eine schematische Repräsentation einer Maschine in der Beispielform eines Rechensystems 1300, innerhalb dessen ein Satz von Anweisungen zum Bewirken, dass die Maschine eine oder mehrere der hierin besprochenen Verfahren durchführt, ausgeführt werden kann. Bei alternativen Implementierungen kann die Maschine mit anderen Maschinen in einem LAN, einem Intranet, einem Extranet oder dem Internet verbunden (z. B. vernetzt) sein. Die Maschine kann in der Kapazität eines Servers oder einer Client-Vorrichtung in einer Client-Server-Netzwerkumgebung oder als eine Peer-Maschine in einer Peer-zu-Peer- (oder verteilten) Netzwerkumgebung arbeiten. Die Maschine kann ein Personal Computer (PC), ein Tablet-PC, eine Set-Top-Box (STB), ein Personal Digital Assistant (PDA), ein Mobiltelefon, ein Web-Gerät, ein Server, ein Netzwerkrouter, ein Switch oder eine Brücke, oder eine beliebige Maschine sein, die zum Ausführen eines Satzes von Anweisungen (sequenziell oder anderweitig) in der Lage ist, welche Handlungen spezifizieren, die durch diese Maschine durchgeführt werden sollen. Obwohl nur eine einzelne Maschine veranschaulicht wird, ist der Begriff „Maschine“ ferner auch so aufzufassen, dass er eine beliebige Ansammlung von Maschinen beinhaltet, die einzeln oder gemeinsam einen Satz (oder mehrere Sätze) von Befehlen ausführen, um irgendeine oder mehrere der hierin besprochenen Methoden durchzuführen. Die Implementierungen der Konvertierungsseiten und -abschnitte können in dem Rechensystem 1300 implementiert werden.
  • Das Rechensystem 1300 beinhaltet eine Verarbeitungsvorrichtung 1302, einen Hauptspeicher 1304 (z. B., Nurlesespeicher (ROM), Flash-Speicher, dynamischen Direktzugriffsspeicher (DRAM) (wie etwa synchronen DRAM (SDRAM) oder DRAM (RDRAM) usw.), einen statischen Speicher 1306 (z. B., Flash-Speicher, statischen Direktzugriffsspeicher (SRAM) usw.) und eine Datenspeicherungsvorrichtung 1318, die über einen Bus 1330 miteinander kommunizieren.
  • Die Verarbeitungsvorrichtung 1302 repräsentiert eine oder mehrere Universalverarbeitungsvorrichtungen, wie etwa eine Mikroverarbeitungsvorrichtung, eine Zentralverarbeitungseinheit oder dergleichen. Insbesondere kann die Verarbeitungsvorrichtung eine komplexe Befehlssatzberechnungs- (CISC) - Mikroverarbeitungsvorrichtung, eine reduzierte Befehlssatzberechnungs- (RISC) - Mikroverarbeitungsvorrichtung, eine VLIW (very long befehl wort) - Mikroverarbeitungsvorrichtung oder eine Verarbeitungsvorrichtung, die andere Befehlssätze implementiert, oder Verarbeitungsvorrichtungen, die eine Kombination von Befehlssätzen implementieren, sein. Die Verarbeitungsvorrichtung 1302 kann auch eine oder mehrere Spezialverarbeitungsvorrichtungen sein, wie etwa eine anwendungsspezifische integrierte Schaltung (ASIC: Application Specific Integrated Circuit), ein feldprogrammierbares Gate-Array (FPGA: Field Programmable Gate Array), eine digitale Signalverarbeitungsvorrichtung (DSP: Digital Signal Processing Device), eine Netzwerkverarbeitungsvorrichtung oder dergleichen. Bei einer Implementierung kann die Verarbeitungsvorrichtung 1302 einen oder mehrere Verarbeitungsvorrichtungskerne beinhalten. Die Verarbeitungsvorrichtung 1302 ist dazu ausgelegt, Anweisungen 1326 zum Durchführen der hier besprochenen Operationen auszuführen. Bei einer Implementierung kann die Verarbeitungsvorrichtung 1302 Teil des Rechensystems 100 von 1 sein. Alternativ dazu kann das Rechensystem 1300 andere Komponenten, wie hier beschrieben, beinhalten. Es versteht sich, dass der Kern Multithreading (Ausführen von zwei oder mehr parallelen Sätzen von Operationen oder Threads) unterstützen kann und dies auf vielfältige Weisen vornehmen kann, einschließlich Zeitscheiben-Multithreading, Simultan-Multithreading (wobei ein einzelner physischer Kern einen logischen Kern für jeden der Threads bereitstellt, die der physische Kern simultan im Multithreading behandelt), oder eine Kombination davon (z. B. Zeitscheiben-Abruf und -Decodierung und simultanes Multithreading danach, wie etwa bei der Hyperthreading-Technologie von Intel®).
  • Das Rechensystem 1300 kann ferner eine Netzwerkschnittstellenvorrichtung 1308 enthalten, die kommunikativ mit einem Netzwerk 1320 gekoppelt ist. Das Rechensystem 1300 kann auch eine Videoanzeigeeinheit 1310 (z. B., eine Flüssigkristallanzeige (LCD) oder eine Kathodenstrahlröhre (CRT)), eine alphanumerische Eingabevorrichtung 1312 (z. B., eine Tastatur), eine Cursorsteuervorrichtung 1314 (z. B., eine Maus), eine Signalerzeugungsvorrichtung 1316 (z. B., einen Lautsprecher) oder andere Peripherievorrichtungen beinhalten. Ferner kann das Rechensystem 1300 eine Grafikverarbeitungseinheit 1322, eine Videoverarbeitungseinheit 1328 und eine Audioverarbeitungseinheit 1332 beinhalten. Bei anderen Implementierungen kann das Rechensystem 1300 einen Chipsatz (nicht veranschaulicht) beinhalten, der sich auf eine Gruppe integrierter Schaltungen oder Chips bezieht, die dazu ausgebildet sind, mit der Verarbeitungsvorrichtung 1302 zu arbeiten, und Kommunikationen zwischen der Verarbeitungsvorrichtung 1302 und externen Vorrichtungen steuern. Beispielsweise kann der Chipsatz ein Satz von Chips auf einer Hauptplatine sein, die die Verarbeitungsvorrichtung 1302 mit sehr schnellen Vorrichtungen verknüpft, wie etwa dem Hauptspeicher 1304 und Grafiksteuerungen, sowie die Verarbeitungsvorrichtung 1302 mit langsameren Peripheriebussen von Peripheriegeräten verknüpft, wie etwa USB-, PCI- oder ISA-Bussen.
  • Die Datenspeicherungsvorrichtung 1318 kann ein computerlesbares Speicherungsmedium 1324 beinhalten, auf dem Anweisungen 1326 gespeichert sind, die eine oder mehrere der hier beschriebenen Verfahren von Funktionen verkörpern. Die Anweisungen 1326 können sich auch vollständig oder zumindest teilweise innerhalb des Hauptspeichers 1304 als Anweisungen 1326 und/oder innerhalb der Verarbeitungsvorrichtung 1302 als Verarbeitungslogik während ihrer Ausführung durch das Rechensystem 1300 befinden; wobei der Hauptspeicher 1304 und die Verarbeitungsvorrichtung 1302 auch computerlesbare Speichermedien darstellen.
  • Das computerlesbare Speichermedium 1324 kann auch verwendet werden, um Anweisungen 1326 unter Verwendung der Verarbeitungsvorrichtung 1302, wie etwa unter Bezugnahme auf 1 beschrieben, und/oder einer Softwarebibliothek, die Verfahren enthält, die die obigen Anwendungen aufrufen, zu speichern. Obwohl bei einer beispielhaften Implementierung gezeigt ist, dass das computerlesbare Speicherungsmedium 1324 ein einzelnes Medium ist, sollte der Begriff „computerlesbares Speicherungsmedium“ ein einzelnes Medium oder mehrere Medien (z. B. eine zentralisierte oder verteilte Datenbank und/oder zugehörige Caches und Server) beinhalten, in denen ein oder mehrere Sätze von Befehlen gespeichert sind. Der Begriff „computerlesbares Speichermedium“ soll auch so verstanden werden, dass er ein beliebiges Medium beinhaltet, das in der Lage ist, einen Satz von Anweisungen zur Ausführung durch die Maschine zu speichern, zu codieren oder zu tragen, und die bewirken, dass die Maschine eine oder mehrere der Methodologien der Implementierungen durchführt. Der Begriff „computerlesbares Speicherungsmedium“ ist dementsprechend so aufzufassen, dass er unter anderem Festkörperspeicher und optische und magnetische Medien beinhaltet.
  • Die folgenden Beispiele betreffen weitere Umsetzungen.
  • Beispiel 1 ist ein System, das einen Prozessor zum Ausführen einer virtuellen Maschine umfasst, wobei der Prozessor ausgelegt ist zum 1) Empfangen einer Anforderung zum Zugreifen auf eine Speicherseite, die durch eine virtuelle Gastspeicheradresse (GVA) in einem Adressraum der virtuellen Maschine identifiziert wird, 2) Übersetzen der GVA in eine physische Gastspeicheradresse (GPA) unter Verwendung einer Gastseitentabelle (GPT), die einen GPT-EINTRAG umfasst, der die GVA auf die GPA abbildet, 5) Über setzen der GPA in eine physikalische Host adresse (HPA) der Speicher Seite, 4) Speichern eines TLB-EINTRAGS, der die GVA auf die HPA abbildet, in einem Übersetzung Puffer (TLB), 6) Modifizieren des GPT-EINTRAGS, um die Speicher Seite als Zugriff zu bezeichnen, 7) Detektieren eines Versuchs durch eine Anwendung, den GPT-EINTRAG zu modifizieren, 8) Erzeugen eines Seitenfehlers als Reaktion auf den Versuch, den GPT-EINTRAG zu modifizieren, und 9) Leeren des TLB-EINTRAGS als Reaktion auf den Seitenfehler.
  • Im Beispiel 2, das System des Beispiels 1, wobei zum Erzeugen des Seitenfehlers der Prozessor 1) in einem Schattenseitentabelle-Speicherzugriffsmodus (SPT-Modus) arbeiten soll, wobei der SPT-Modus das Führen einer Schattenseitentabelle (SPT) umfasst, die einen SPT-EINTRAG umfasst, der das GVA auf die HPA abbildet, 2) im SPT bezeichnen soll, einer GPT-SPEICHERSEITE als Schreib geschützt, wobei die GPT-SPEICHERSEITE den GPT-EINTRAG speichern soll, 3) Empfangen einer Anweisung von der Anwendung zum Modifizieren des GPT-EINTRAGS, 4) Bestimmen, unter Verwendung des SPT, dass die GPT-SPEICHERSEITE Schreib geschützt ist, und 5) Erzeugen des Seiten Fehlers als Reaktion auf das Bestimmen, dass die GPT-SPEICHERSEITE Schreib geschützt ist.
  • In Beispiel 3, das System nach Beispiel 2, wobei der Prozessor, um im SPT-Modus zu arbeiten, aus einem erweiterten Seitentable-Speicherzugriffsmodus (EPT-Modus) in den SPT-Modus übergehen soll, wobei im EPT-Modus das Übersetzen des GVA in den HPA ferner das Übersetzen des GPA in den HPA unter Verwendung einer erweiterten Seitentabelle (EPT) umfasst, die einen EPT-EINTRAG umfasst, der den GPA auf den HPA abbildet.
  • In Beispiel 4, das System von Beispiel 2, wobei das Erzeugen des SPT Folgendes umfasst: 1) Auswählen mehrerer Basis-GVAs für einen Prozessorzustand eines virtuellen Prozessors, 2) Auswählen mehrerer GVAs, die an die Basis-GVAs angrenzen, 3) Auswählen einer vorbestimmten Anzahl von Hot-Access GVAs und 4) Befüllen des SPT mit den mehreren Basis-GVAs für den Prozessorzustand des virtuellen Prozessors, den mehreren GVAs, die an die Basis-GVAs angrenzen, und den ausgewählten Hot-Access GVAs.
  • In Beispiel 5, das System des Beispiels 1, wobei der Prozessor von einem erweiterten Seitentabellen-Speicherzugriffsmodus (EPT-Modus) zu einem Schattenseitentabellen-Speicherzugriffsmodus (SPT-Modus) übergehen soll, wobei das über setzen des GVA in den HPA im EPT-Modus das über setzen des GPA in den HPA unter Verwendung einer erweiterten Seiten Tabelle (EPT) umfasst, die einen EPT-EINTRAG umfasst, der den GPA in den HPA abbildet, und wobei das über setzen des GVA in den HPA im SPT-Modus das Führen einer Schatten Seiten Tabelle (SPT) umfasst, die einen SPT-EINTRAG umfasst, der den GVA in den HPA abbildet; und wobei der Prozessor ferner einen Wiedergabe Koprozessor (RCP) umfasst, um 1) zu Beginn eines Verifizierung Zeitintervalls einen Prozessor Zustand eines virtuellen Prozessors, der durch den Prozessor aktiviert wird, zu kopieren, wobei der virtuelle Prozessor zugewiesen ist, um ein Software Programm auszuführen, 2) Den kopierten Prozessorzustand des virtuellen Prozessors auf dem RCP wiederzugeben und 3) einen resultierenden Prozessorzustand des RCP mit einem Prozessorzustand des virtuellen Prozessors an einem Ende des Verifizierungszeitintervalls zu vergleichen.
  • Bei Beispiel 6, das System des Beispiels 5, wobei der Prozessorzustand des virtuellen Prozessors zu Beginn des Verifizierungszeitintervalls 1) Inhalt einer Vielzahl von Hardwareregistern des Prozessors und 2) Inhalt einer Vielzahl von Speicherseiten, die mit dem Softwareprogramm assoziiert sind, umfasst.
  • Im Beispiel 7, das System des Beispiels 5, wobei die Verarbeitungsvorrichtung zum Übergang vom EPT-Modus in den SPT-Modus 1) Prozesse stoppen soll, die durch den virtuellen Prozessor ausgeführt werden, 2) zwischengespeicherte EPT-bezogene Hardwareregister löschen soll, 3) Konfigurieren einer Virtuelle-Maschine-Steuerstruktur (VMCS) zum Deaktivieren des EPT, 4) Konfigurieren des VMCS zum Aktivieren des SPT, 5) Erzeugen des SPT und 6) Wiederaufnehmen der Ausführung der angehaltenen Prozesse auf dem virtuellen Prozessor.
  • In Beispiel 8, das System von Beispiel 5, wobei die Verarbeitungsvorrichtung nach dem Ende des Verifizierungszeitintervalls 1) Prozesse stoppen soll, die durch den virtuellen Prozessor ausgeführt werden, 2) zwischengespeicherte SPT-bezogene Hardwareregister löschen soll, 3) Konfigurieren einer Virtuelle-Maschine-Steuerstruktur (VMCS) zum Deaktivieren des SPT, 4) Konfigurieren des VMCS zum Aktivieren des EPT, 5) Laden eines jüngsten EPT und 6) Wiederaufnehmen der Ausführung der angehaltenen Prozesse auf dem virtuellen Prozessor.
  • Bei Beispiel 9, ein System, das Folgendes umfasst: 1) einen Prozessor zum Initialisieren eines Virtuelle-Maschine-Monitors (VMM), wobei der VMM ein Gastbetriebssystem (GOS) initialisieren soll, wobei das GOS eine virtuelle Maschine unterstützen soll, 2) eine Speichereinrichtung zum Speichern a) einer Gastseitentabelle (GPT), die einen GPT-EINTRAG zum Abbilden einer virtuellen Gastspeicheradresse (GVA) auf eine physische Gastspeicheradresse (GPA) umfasst, b) eine erweiterte Seitentabelle (EPT), die einen EPT-EINTRAG zum Abbilden des GPA auf eine physische Host-Speicheradresse (HPA) umfasst, und c) eine Schattenseitentabelle (SPT), die einen SPT-EINTRAG zum Abbilden des GVA auf die HPA umfasst, 3) einen Wiedergabe-Coprozessor (RCP) und 4) ein Prozessorprüfmodul (PCM) zum Ermöglichen einer Laufzeitverifikation des Prozessors auf dem RCP.
  • Bei Beispiel 10, das System des Beispiels 9, wobei der Prozessor sowohl zu einem EPT-fähigen Speicherzugriffsmodus (EPT-Modus) als auch zu einem SPT-fähigen Speicherzugriffsmodus (SPT-Modus) in der Lage ist, wobei der Prozessor in dem EPT-Modus 1) eine Anfrage zum Zugreifen auf eine Speicherseite, die durch das GVA identifiziert wird, empfangen soll, 2) Durch führen eines ersten Laufs in dem GPT, um das GPA von dem GVA zu erhalten, und 3) durch führen eines zweiten Laufs in dem EPT, um die HPA der Speicherseite von dem GPA zu erhalten, und wobei der Prozessor im SPT-Modus 1) eine Anforderung zum Zugreifen auf die Speicherseite, die durch das GVA identifiziert wird, empfangen soll, 2) Durchführen eines dritten Page Walk in dem SPT, um eine Speicherübersetzung von dem GVA zu einer physischen Host-Adresse (HPA) der Speicherseite zu erhalten, 3) Speichern, in einem Übersetzungspuffer (TLB) des Prozessors, eines Übersetzungseintrags, der Speicherübersetzung entspricht, 4) Modifizieren des GVA, um die Speicher Seite als zugegriffen zu bezeichnen, 5) Detektieren eines Versuchs durch eine Anwendung, den GPT-EINTRAG zu modifizieren; Erzeugen eines Seiten Fehlers als Reaktion auf den Versuch, den GPT-EINTRAG zu modifizieren, und 6) Löschen des Übersetzung Eintrags aus dem TLB als Reaktion auf den Seiten fehler.
  • Bei Beispiel 11 ist das System des Beispiels 10, wobei das Modifizieren des GVA, um die Speicherseite als zugegriffen zu bezeichnen, ein A-bit in einem SPT-EINTRAG einzustellen ist, der Speicherübersetzung von dem GVA zu dem HPA entspricht.
  • Bei Beispiel 12, das System des Beispiels 10, wobei der Prozessor periodisch 1) von dem EPT-Modus in den SPT-Modus übergeht und 2) von dem SPT-Modus in den EPT-Modus zurück übergeht.
  • Verschiedene Implementierungen können unterschiedliche Kombinationen der oben beschriebenen Strukturmerkmale aufweisen. Beispielsweise können alle oben beschriebenen optionalen Merkmale der Prozessoren und Verfahren auch bezüglich einem hierin beschriebenen System implementiert werden und Einzelheiten in den Beispielen können an beliebiger Stelle in einer oder mehreren Implementierungen verwendet werden.
  • Beispiel 13 ist ein Verfahren, das 1) Ausführen, durch eine Verarbeitungsvorrichtung, einer virtuellen Maschine, 2) Empfangen, durch die Verarbeitungsvorrichtung, einer Anforderung zum Zugreifen auf eine Speicherseite, die durch eine virtuelle Gastspeicheradresse (GVA) in einem Adressraum der virtuellen Maschine identifiziert wird, 3) Über setzen der GVA in eine physikalische Gast Speicher adresse (GPA) unter Verwendung einer Gast Seiten Tabelle (GPT), die einen GPT-EINTRAG umfasst, der die GVA auf die GPA abbildet, 3) über setzen der GPA in eine physikalische Host adresse (HPA) der Speicher Seite, 4) Speichern, durch die Verarbeitung Vorrichtung, in einem Übersetzungsnachschlagepuffer (TLB), eines TLB-EINTRAGS, der die GVA auf die HPA abbildet, 4) Modifizieren, durch die Verarbeitung Vorrichtung, des GPT-EINTRAGS, um die Speicher Seite als auf die zugegriffen wird zu bezeichnen, 5) Detektieren, durch die Verarbeitung Vorrichtung, eines Versuchs durch eine Anwendung, den GPT-EINTRAG zu modifizieren, 6) Erzeugen eines Seiten Fehlers durch die Verarbeitung Vorrichtung als Reaktion auf den Versuch, den GPT-EINTRAG zu modifizieren, und 7) Löschen des TLB-EINTRAGS durch die Verarbeitung Vorrichtung als Reaktion auf den Seiten fehler.
  • Bei Beispiel 14, das Verfahren des Beispiels 13, wobei das Erzeugen des Seitenfehlers Folgendes umfasst: 1) Betreiben der Verarbeitungsvorrichtung in einem Schattenseitentabelle-Speicherzugriffsmodus (SPT-Modus), wobei der SPT-Modus das Führen einer Schattenseitentabelle (SPT) umfasst, die einen SPT-EINTRAG umfasst, der das GVA auf den HPA abbildet, 2) Designieren, in dem SPT, einer GPT-SPEICHERSEITE als Schreib geschützt, wobei die GPT-SPEICHERSEITE den GPT-EINTRAG speichern soll, 3) Empfangen einer Anweisung von der Anwendung zum Modifizieren des GPT-EINTRAGS, 4) Bestimmen unter Verwendung des SPT, dass die GPT-SPEICHERSEITE Schreib geschützt ist, und 5) Erzeugen des Seiten Fehlers als Reaktion auf das Bestimmen, dass die GPT-SPEICHERSEITE Schreib geschützt ist.
  • Bei Beispiel 15, das Verfahren des Beispiels 14, wobei, um die Verarbeitungsvorrichtung in dem SPT-Modus zu betreiben, die Verarbeitungsvorrichtung von einem erweiterten Seitentabellenspeicherzugriffsmodus (EPT-Modus) in den SPT-Modus übergehen soll, wobei im EPT-Modus das über setzen des GVA in den HPA ferner das über setzen des GPA in den HPA unter Verwendung einer erweiterten Seiten Tabelle (EPT) umfasst, die einen EPT-EINTRAG umfasst, der den GPA in den HPA abbildet.
  • Bei Beispiel 16, das Verfahren des Beispiels 14, wobei das Erzeugen des SPT Folgendes umfasst: 1) Auswählen, durch die Verarbeitungsvorrichtung, mehrerer Basis-GVAs für einen Prozessorzustand eines virtuellen Prozessors, 2) Auswählen, durch die Verarbeitungsvorrichtung, mehrerer GVAs, die an die Basis-GVAs angrenzen, 3) Auswählen, durch die Verarbeitungsvorrichtung, einer vorbestimmten Anzahl von Hot-Access GVAs und 4) Füllen, durch die Verarbeitungsvorrichtung, des SPT mit den mehreren Basis-GVAs für den Prozessorzustand des virtuellen Prozessors, den mehreren GVAs, die an die Basis-GVAs angrenzen, und den ausgewählten Hot-Access GVAs.
  • Bei Beispiel 17, das Verfahren des Beispiels 13, das ferner das Überführen der Verarbeitungsvorrichtung von einem erweiterten Seitentabellenspeicherzugriffsmodus (EPT-Modus) zu einem Schattenseitentabellenspeicherzugriffsmodus (SPT-Modus) umfasst, wobei im EPT-Modus das über setzen des GVA in die HPA das über setzen des GPA in die HPA unter Verwendung einer erweiterten Seiten Tabelle (EPT) umfasst, die einen EPT-EINTRAG umfasst, der das GPA in die HPA abbildet, und wobei im SPT-Modus das über setzen des GVA in die HPA das Verwenden einer Schatten Seiten Tabelle (SPT) umfasst, die einen SPT-EINTRAG umfasst, der das GVA in die HPA abbildet, und wobei das Verfahren ferner Folgendes umfasst: 1) Kopieren, durch die Verarbeitung Vorrichtung, zu Beginn eines Verifizierung Zeitintervalls, eines Prozessor Zustands eines virtuellen Prozessors der Verarbeitung Vorrichtung, wobei der virtuelle Prozessor dazu bestimmt ist, ein Software Programm auszuführen, 2) wieder geben, durch die Verarbeitung Vorrichtung, des kopierten Prozessor Zustands des virtuellen Prozessors auf einem Wiedergabe Koprozessor (RCP), und 3) Vergleichen, durch die Verarbeitung Vorrichtung, eines resultierenden Prozessor Zustands des RCP mit einem Prozessor Zustand des virtuellen Prozessors an einem Ende des Verifizierung Zeitintervalls.
  • Bei Beispiel 18, das Verfahren des Beispiels 17, wobei der Prozessorzustand des virtuellen Prozessors zu Beginn des Verifizierungszeitintervalls 1) Inhalt einer Vielzahl von Hardwareregistern des Prozessors und 2) Inhalt einer Vielzahl von Speicherseiten, die mit dem Softwareprogramm assoziiert sind, umfasst.
  • In Beispiel 19, das Verfahren des Beispiels 17, wobei das Wechseln von dem EPT-Modus in den SPT-Modus Folgendes umfasst: 1) Stoppen, durch die Verarbeitungsvorrichtung, von Prozessen, die durch den virtuellen Prozessor ausgeführt werden, 2) Löschen, durch die Verarbeitungsvorrichtung, von zwischengespeicherten EPT-bezogenen Hardwareregistern, 3) Konfigurieren, durch die Verarbeitung Vorrichtung, einer virtuellen Maschinen Steuer Struktur (VMCS), um den EPT zu deaktivieren, 4) Konfigurieren, durch die Verarbeitung Vorrichtung, des VMCS, um den SPT zu aktivieren, 5) Erzeugen, durch die Verarbeitung Vorrichtung, des SPT, und 6) wieder Aufnehmen, durch die Verarbeitung Vorrichtung, der Ausführung der gestoppten Prozesse auf dem virtuellen Prozessor.
  • Bei Beispiel 20, das Verfahren des Beispiels 17, ferner umfassend, nach dem Ende des Verifizierungszeitintervalls, 1) Stoppen, durch die Verarbeitungsvorrichtung, von Prozessen, die durch den virtuellen Prozessor ausgeführt werden, 2) Löschen, durch die Verarbeitungsvorrichtung, von zwischengespeicherten SPT-bezogenen Hardwareregistern, 3) Konfigurieren, durch die Verarbeitungsvorrichtung, eine virtuelle Maschinen Steuer Struktur (VMCS) zum Deaktivieren des SPT, 4) Konfigurieren, durch die Verarbeitung Vorrichtung, des VMCS zum Aktivieren des EPT, 5) Laden, durch die Verarbeitung Vorrichtung, eines neuesten EPT und 6) wieder Aufnehmen, durch die Verarbeitung Vorrichtung, der Ausführung der angehaltenen Prozesse auf dem virtuellen Prozessor.
  • Verschiedene Implementierungen können unterschiedliche Kombinationen der oben beschriebenen Strukturmerkmale aufweisen. Beispielsweise können alle oben beschriebenen optionalen Merkmale der Prozessoren und Verfahren auch bezüglich einem hierin beschriebenen System implementiert werden und Einzelheiten in den Beispielen können an beliebiger Stelle in einer oder mehreren Implementierungen verwendet werden.
  • Beispiel 21 ist ein nichtflüchtiges computerlesbares Medium, das Anweisungen speichert, die, wenn sie von einem Prozessor mit einem Kern ausgeführt werden, der mit einem Systemspeicher gekoppelt ist, bewirken, dass der Prozessor mehrere Logikoperationen ausführt, die Folgendes umfassen: 1) Ausführen, durch eine Verarbeitungsvorrichtung, einer virtuellen Maschine, 2) Empfangen, durch die Verarbeitung Vorrichtung, einer Anforderung zum Zugreifen auf eine Speicher Seite, die durch eine virtuelle Gast Speicher adresse (GVA) in einem Adress Raum der virtuellen Maschine identifiziert wird, 3) über setzen der GVA in eine physische Gast Speicher adresse (GPA) unter Verwendung einer Gast Seiten Tabelle (GPT), die einen GPT-EINTRAG umfasst, der die GVA auf die GPA abbildet, 3) Über setzen der GPA in eine physikalische Host adresse (HPA) der Speicher Seite, 4) Speichern, durch die Verarbeitung Vorrichtung, eines TLB-EINTRAGS, der die GVA auf die HPA abbildet, in einem Übersetzungspuffer (TLB), 5) Modifizieren, durch die Verarbeitung Vorrichtung, des GPT-EINTRAGS, um die Speicher Seite als zugegriffen zu bezeichnen, 6) Detektieren, durch die Verarbeitung Vorrichtung, eines Versuchs durch eine Anwendung, den GPT-EINTRAG zu modifizieren, 7) Erzeugen, durch die Verarbeitung Vorrichtung, als Reaktion auf den Versuch, den GPT-EINTRAG zu modifizieren, eines Seiten Fehlers, und 8) Löschen, durch die Verarbeitung Vorrichtung, als Reaktion auf den Seiten fehler, des TLB-EINTRAGS.
  • Bei Beispiel 22, das nichtflüchtige computerlesbare Medium des Beispiels 21, wobei das Erzeugen des Seitenfehlers Folgendes umfasst: 1) Betreiben der Verarbeitungsvorrichtung in einem Schattenseitentabelle-Speicherzugriffsmodus (SPT-Modus), wobei der SPT-Modus das Führen einer Schattenseitentabelle (SPT) umfasst, die einen SPT-EINTRAG umfasst, der das GVA auf den HPA abbildet, 2) Designieren, in dem SPT, einer GPT-SPEICHERSEITE als Schreib geschützt, wobei die GPT-SPEICHERSEITE den GPT-EINTRAG speichern soll, 3) Empfangen einer Anweisung von der Anwendung zum Modifizieren des GPT-EINTRAGS, 4) Bestimmen unter Verwendung des SPT, dass die GPT-SPEICHERSEITE Schreib geschützt ist, und 5) Erzeugen des Seiten Fehlers als Reaktion auf das Bestimmen, dass die GPT-SPEICHERSEITE Schreib geschützt ist.
  • Bei Beispiel 23, das nichtflüchtige computerlesbare Medium des Beispiels 22, wobei, um die Verarbeitungsvorrichtung in dem SPT-Modus zu betreiben, die Anweisungen bewirken sollen, dass die Verarbeitungsvorrichtung von einem erweiterten Seitentabellenspeicherzugriffsmodus (EPT-Modus) in den SPT-Modus übergeht, wobei im EPT-Modus das über setzen des GVA in den HPA ferner das über setzen des GPA in den HPA unter Verwendung einer erweiterten Seiten Tabelle (EPT) umfasst, die einen EPT-EINTRAG umfasst, der den GPA in den HPA abbildet.
  • Bei Beispiel 24 das nichtflüchtige computerlesbare Medium des Beispiels 22, wobei zum Erzeugen des SPT die Operationen ferner Folgendes umfassen: 1) Auswählen, durch die Verarbeitungsvorrichtung, einer Vielzahl von Basis-GVAs für einen Prozessorzustand eines virtuellen Prozessors, 2) Auswählen, durch die Verarbeitungsvorrichtung, einer Vielzahl von GVAs, die an die Basis-GVAs angrenzen, 3) Auswählen, durch die Verarbeitungsvorrichtung, einer vorbestimmten Anzahl von Hot-Access GVAs und 4) Füllen, durch die Verarbeitungsvorrichtung, des SPT mit den mehreren Basis-GVAs für den Prozessorzustand des virtuellen Prozessors, den mehreren GVAs, die an die Basis-GVAs angrenzen, und den ausgewählten Hot-Access GVAs.
  • Bei Beispiel 25, das nichtflüchtige computerlesbare Medium des Beispiels 21, wobei die Operationen ferner das Überführen der Verarbeitungsvorrichtung von einem erweiterten Seitentabellenspeicherzugriffsmodus (EPT-Modus) zu einem Schattenseitentabellenspeicherzugriffsmodus (SPT-Modus) umfassen, wobei im EPT-Modus das über setzen des GVA in den HPA das über setzen des GPA in den HPA unter Verwendung einer erweiterten Seiten Tabelle (EPT) umfasst, die einen EPT-EINTRAG umfasst, der den GPA in den HPA abbildet, und wobei im SPT-Modus das über setzen des GVA in die HPA das Verwenden einer Schatten Seiten Tabelle (SPT) umfasst, die einen SPT-EINTRAG umfasst, der das GVA auf die HPA abbildet, und wobei das nichtflüchtige computerlesbare Medium ferner Folgendes umfasst: 1) Kopieren, durch die Verarbeitung Einrichtung, zu Beginn eines Verifikation Zeit Intervalls, eines Prozessor Zustands eines virtuellen Prozessors der Verarbeitung Einrichtung, wobei der virtuelle Prozessor dazu eingerichtet ist, ein Software Programm auszuführen, 2) wieder geben, durch die Verarbeitung Einrichtung, des kopierten Prozessor Zustands des virtuellen Prozessors auf einem Wiedergabe Koprozessor (RCP), und 3) Vergleichen, durch die Verarbeitung Vorrichtung, eines resultierenden Prozessor Zustands des RCP mit einem Prozessor Zustand des virtuellen Prozessors an einem Ende des Verifizierung Zeitintervalls.
  • Bei Beispiel 26 umfasst das nichtflüchtige computerlesbare Medium des Beispiels 25, wobei der Prozessorzustand des virtuellen Prozessors zu Beginn des Verifizierungszeitintervalls 1) Inhalt einer Vielzahl von Hardwareregistern des Prozessors und 2) Inhalt einer Vielzahl von Speicherseiten, die mit dem Softwareprogramm assoziiert sind.
  • In Beispiel 27, das nichtflüchtige computerlesbare Medium des Beispiels 25, wobei das Wechseln von dem EPT-Modus in den SPT-Modus Folgendes umfasst: 1) Stoppen, durch die Verarbeitungsvorrichtung, von Prozessen, die durch den virtuellen Prozessor ausgeführt werden, 2) Löschen, durch die Verarbeitungsvorrichtung, von zwischengespeicherten EPT-bezogenen Hardwareregistern, 3) Konfigurieren, durch die Verarbeitung Vorrichtung, einer virtuellen Maschinen Steuer Struktur (VMCS), um den EPT zu deaktivieren, 4) Konfigurieren, durch die Verarbeitung Vorrichtung, des VMCS, um den SPT zu aktivieren, 5) Erzeugen, durch die Verarbeitung Vorrichtung, des SPT, und 6) wieder Aufnehmen, durch die Verarbeitung Vorrichtung, der Ausführung der gestoppten Prozesse auf dem virtuellen Prozessor.
  • Bei Beispiel 28 das nichtflüchtige computerlesbare Medium des Beispiels 25, wobei die Operationen ferner nach dem Ende des Verifizierungszeitintervalls Folgendes umfassen: 1) Stoppen, durch die Verarbeitungsvorrichtung, von Prozessen, die durch den virtuellen Prozessor ausgeführt werden, 2) Löschen, durch die Verarbeitungsvorrichtung, von zwischengespeicherten SPT-bezogenen Hardwareregistern, 3) Konfigurieren, durch die Verarbeitungsvorrichtung, einer Virtuelle-Maschine-Steuerstruktur (VMCS), um den SPT zu deaktivieren, 4) Konfigurieren, durch die Verarbeitungsvorrichtung, des VMCS, um den EPT zu aktivieren, 5) Laden, durch die Verarbeitungsvorrichtung, eines neuesten EPT und 6) Wiederaufnehmen, durch die Verarbeitungsvorrichtung, der Ausführung der angehaltenen Prozesse auf dem virtuellen Prozessor.
  • Verschiedene Implementierungen können unterschiedliche Kombinationen der oben beschriebenen Strukturmerkmale aufweisen. Beispielsweise können alle oben beschriebenen optionalen Merkmale der Prozessoren und Verfahren auch bezüglich einem hierin beschriebenen System implementiert werden und Einzelheiten in den Beispielen können an beliebiger Stelle in einer oder mehreren Implementierungen verwendet werden.
  • Beispiel 29 ist ein System, das 1) Mittel zum Ausführen, durch eine Verarbeitungsvorrichtung, einer virtuellen Maschine, 2) Mittel zum Empfangen, durch die Verarbeitungsvorrichtung, einer Anforderung zum Zugreifen auf eine Speicherseite, die durch eine virtuelle Gastspeicheradresse (GVA) in einem Adressraum der virtuellen Maschine identifiziert wird, umfasst, 3) Mittel zum über setzen des GVA in eine physikalische Gast Speicher adresse (GPA) unter Verwendung einer Gast Seiten Tabelle (GPT), die einen GPT-EINTRAG umfasst, der das GVA auf das GPA abbildet, 3) Mittel zum über setzen des GPA in eine physikalische Host adresse (HPA) der Speicher Seite, 4) Mittel zum Speichern, durch die Verarbeitung Vorrichtung, eines TLB-EINTRAGS, der die GVA auf die HPA abbildet, in einem Übersetzungsnachschlagepuffer (TLB), 4) Mittel zum Modifizieren, durch die Verarbeitung Vorrichtung, des GPT-EINTRAGS, um die Speicher Seite als auf die zugegriffen wird zu bezeichnen, 5) Mittel zum Detektieren, durch die Verarbeitung Vorrichtung, einen Versuch durch eine Anwendung, den GPT-EINTRAG zu modifizieren, 6) Mittel zum Erzeugen, durch die Verarbeitung Vorrichtung, als Reaktion auf den Versuch, den GPT-EINTRAG zu modifizieren, eines Seiten Fehlers, und 7) Mittel zum Löschen, durch die Verarbeitung Vorrichtung, als Reaktion auf den Seiten fehler, des TLB-EINTRAGS.
  • Bei Beispiel 30, das System des Beispiels 29, wobei das Mittel zum Erzeugen des Seitenfehlers 1) Mittel zum Betreiben der Verarbeitungsvorrichtung in einem Schattenseitentabelle-Speicherzugriffsmodus (SPT-Modus) umfasst, wobei der SPT-Modus das Führen einer Schattenseitentabelle (SPT) umfasst, die einen SPT-EINTRAG umfasst, der das GVA auf die HPA abbildet, 2) Mittel zum Designieren, in dem SPT, einer GPT-SPEICHERSEITE als Schreib geschützt, wobei die GPT-SPEICHERSEITE den GPT-EINTRAG speichern soll, 3) Mittel zum Empfangen einer Anweisung von der Anwendung zum Modifizieren des GPT-EINTRAGS, 4) Mittel zum Bestimmen unter Verwendung des SPT, dass die GPT-SPEICHERSEITE Schreib geschützt ist, und 5) Mittel zum Erzeugen des Seiten Fehlers als Reaktion auf das Bestimmen, dass die GPT-SPEICHERSEITE Schreib geschützt ist.
  • Bei Beispiel 31, das System des Beispiels 30, wobei, um die Verarbeitungsvorrichtung im SPT-Modus zu betreiben, die Verarbeitungsvorrichtung Mittel aufweisen soll, um von einem erweiterten Seitentabellenspeicherzugriffsmodus (EPT-Modus) in den SPT-Modus überzugehen, wobei im EPT-Modus das über setzen des GVA in den HPA ferner Mittel zum über setzen des GPA in den HPA unter Verwendung einer erweiterten Seiten Tabelle (EPT) umfasst, die einen EPT-EINTRAG umfasst, der den GPA in den HPA abbildet.
  • Bei Beispiel 32, das System des Beispiels 30, wobei die Mittel zum Erzeugen des SPT umfassen 1) Mittel zum Auswählen, durch die Verarbeitungsvorrichtung, einer Vielzahl von Basis-GVAs für einen Prozessorzustand eines virtuellen Prozessors, 2) Mittel zum Auswählen, durch die Verarbeitungsvorrichtung, einer Vielzahl von GVAs, die an die Basis-GVAs angrenzen, 3) Mittel zum Auswählen, durch die Verarbeitungsvorrichtung, einer vorbestimmten Anzahl von Hot-Access GVAs und 4) Mittel zum Befüllen, durch die Verarbeitungsvorrichtung, des SPT mit den mehreren Basis-GVAs für den Prozessorzustand des virtuellen Prozessors, den mehreren GVAs, die an die Basis-GVAs angrenzen, und den ausgewählten Hot-Access GVAs.
  • Bei Beispiel 33, das System des Beispiels 29, das ferner Mittel zum Überführen der Verarbeitungsvorrichtung von einem erweiterten Seitentabellenspeicherzugriffsmodus (EPT-Modus) zu einem Schattenseitentabellenspeicherzugriffsmodus (SPT-Modus) umfasst, wobei im EPT-Modus das über setzen des GVA in den HPA Mittel zum über setzen des GPA in den HPA unter Verwendung einer erweiterten Seiten Tabelle (EPT) umfasst, die einen EPT-EINTRAG umfasst, der den GPA in den HPA abbildet, und wobei im SPT-Modus das über setzen des GVA in den HPA Mittel zum Verwenden einer Schatten Seiten Tabelle (SPT) umfasst, die einen SPT-EINTRAG umfasst, der den GVA in den HPA abbildet, und wobei das System ferner Folgendes umfasst: 1) Mittel zum Kopieren, durch die Verarbeitung Vorrichtung, zu Beginn eines Verifizierung Zeitintervalls, eines Prozessor Zustands eines virtuellen Prozessors der Verarbeitung Vorrichtung, wobei der virtuelle Prozessor zum Ausführen eines Software Programms zugewiesen ist, 2) Mittel zum Wiedergeben, durch die Verarbeitungsvorrichtung, des kopierten Prozessorzustands des virtuellen Prozessors auf einem Wiedergabe-Coprozessor (RCP), und 3) Mittel zum Vergleichen, durch die Verarbeitungsvorrichtung, eines resultierenden Prozessorzustands des RCP mit einem Prozessorzustand des virtuellen Prozessors an einem Ende des Verifizierungszeitintervalls.
  • Bei Beispiel 34, das System des Beispiels 33, wobei der Prozessorzustand des virtuellen Prozessors zu Beginn des Verifizierungszeitintervalls 1) Inhalt einer Vielzahl von Hardwareregistern des Prozessors und 2) Inhalt einer Vielzahl von Speicherseiten, die mit dem Softwareprogramm assoziiert sind, umfasst.
  • In Beispiel 35, das System des Beispiels 33, wobei die Mittel zum Übergang von dem EPT-Modus in den SPT-Modus 1) Mittel zum Stoppen, durch die Verarbeitungsvorrichtung, von Prozessen, die durch den virtuellen Prozessor ausgeführt werden, 2) Mittel zum Löschen, durch die Verarbeitungsvorrichtung, von zwischengespeicherten EPT-bezogenen Hardwareregistern, 3) Mittel zum Konfigurieren, durch die Verarbeitung Vorrichtung, einer virtuellen Maschinen Steuer Struktur (VMCS), um den EPT zu deaktivieren, 4) Mittel zum Konfigurieren, durch die Verarbeitung Vorrichtung, des VMCS, um den SPT zu aktivieren, 5) Mittel zum Erzeugen, durch die Verarbeitung Vorrichtung, des SPT, und 6) Mittel zum wieder Aufnehmen, durch die Verarbeitung Vorrichtung, der Ausführung der gestoppten Prozesse auf dem virtuellen Prozessor.
  • Bei Beispiel 36, das System des Beispiels 33, ferner umfassend Verwenden, nach dem Ende des Verifizierungszeitintervalls, 1) Mittel zum Stoppen, durch die Verarbeitungsvorrichtung, von Prozessen, die durch den virtuellen Prozessor ausgeführt werden, 2) Mittel zum Löschen, durch die Verarbeitungsvorrichtung, von zwischengespeicherten SPT-bezogenen Hardwareregistern, 3) Mittel zum Konfigurieren, durch die Verarbeitung Vorrichtung, einer virtuellen Maschinen Steuer Struktur (VMCS) zum Deaktivieren des SPT, 4) Mittel oder Konfigurieren, durch die Verarbeitung Vorrichtung, des VMCS zum Aktivieren des EPT, 5) Mittel zum Laden, durch die Verarbeitung Vorrichtung, eines neuesten EPT und 6) Mittel zum wieder Aufnehmen, durch die Verarbeitung Vorrichtung, der Ausführung der angehaltenen Prozesse auf dem virtuellen Prozessor.
  • Obwohl die Offenbarung mit Bezug auf eine begrenzte Anzahl von Implementierungen beschrieben wurde, wird der Fachmann zahlreiche Modifikationen und Varianten davon zu würdigen wissen. Es ist beabsichtigt, dass die beigefügten Ansprüche alle derartigen Modifikationen und Varianten abdecken, weil sie in den wahren Geist und den Schutzumfang dieser Offenbarung fallen.
  • In der Beschreibung hierin werden zahlreiche spezifische Details dargelegt, wie etwa Beispiele für spezifische Typen von Verarbeitungsvorrichtungen und Systemkonfigurationen, spezifische Hardwarestrukturen, spezifische Architektur-und Mikroarchitekturdetails, spezifische Registerkonfigurationen, spezifische Befehlstypen, spezifische Systemkomponenten, spezifische Messungen/Höhen, spezifische Verarbeitungsvorrichtung-Pipelinestufen und -operationen usw., um ein gründliches Verständnis der Offenbarung bereitzustellen. Es wird allerdings für den Fachmann ersichtlich sein, dass diese spezifischen Einzelheiten nicht eingesetzt werden müssen, um die Offenbarung auszuüben. In anderen Fällen sind wohlbekannte Komponenten oder Verfahren, wie etwa spezifische und alternative Verarbeitungsvorrichtungsarchitekturen, spezifische Logikschaltungen/Code für beschriebene Algorithmen, spezifischer Firmwarecode, spezifische Verbindungsoperation, spezifische Logikkonfigurationen, spezifische Herstellungstechniken und Materialien, spezifische Compiler-Implementierungen, spezifischer Ausdruck von Algorithmen im Code, spezifische Abschalt-und Gattertechniken/Logik und andere spezifische Betriebsdetails des Computersystems wurden nicht ausführlich beschrieben, um unnötiges Verdecken der Offenbarung zu vermeiden.
  • Die Implementierungen sind unter Bezugnahme auf das Ermöglichen eines dynamischen Umschaltens zwischen erweiterten Seitentabellen und Schattenseitentabellen zur Laufzeitprozessorverifikation beschrieben, wie etwa in Rechenplattformen oder Mikroprozessorvorrichtungen. Die Implementierungen können auch bei anderen Arten von integrierten Schaltungen und programmierbaren Logikvorrichtungen anwendbar sein. Zum Beispiel sind die offenbarten Implementierungen nicht auf Desktop-Computersysteme oder portable Computer, wie etwa die Intel®-Ultrabooks™-Computer, beschränkt. Und können auch in anderen Vorrichtungen verwendet werden, wie etwa Handheld-Vorrichtungen, Tablets oder dünnen Notebooks, System-on-Chip(SoC)-Vorrichtungen und anderen eingebetteten Anwendungen. Manche Beispiele für Handheld-Vorrichtungen beinhalten Zellulartelefone, Internetprotokollvorrichtungen, Digitalkameras, Personal-Digital-Assistants (PDAs) und Handheld-PCs. Eingebettete Anwendungen beinhalten typischerweise einen Mikrocontroller, eine digitale Signalverarbeitungsvorrichtung (DSP), ein System-on-Chip, Netzwerkcomputer (NetPC), Set-Top-Boxen, Netzwerk-Hubs, Weitverkehrsnetzwerk (WAN) -Switches oder ein beliebiges anderes System, das die unten gelehrten Funktionen und Operationen durchführen kann. „Es wird beschrieben, dass das System eine beliebige Art von Computer oder eingebettetem System sein kann.“ Die offenbarten Implementierungen können insbesondere für Low-End-Vorrichtungen verwendet werden, wie etwa Wearable-Vorrichtungen (z. B. Uhren), elektronische Implantate, Sensor- und Steuerinfrastrukturvorrichtungen, Überwachungssteuerung-und-Datenerfassung(SCADA)-Systeme oder dergleichen. Darüber hinaus sind die hierin beschriebenen Einrichtungen, Verfahren und Systeme nicht auf physische Rechenvorrichtungen beschränkt, sondern können sich auch auf Softwareoptimierungen für Energieeinsparung und -effizienz beziehen. Wie in der folgenden Beschreibung leicht ersichtlich ist, sind die hierin beschriebenen Implementierungen von Verfahren, Einrichtungen und Systemen (egal ob mit Bezug auf Hardware, Firmware, Software oder eine Kombination davon) für eine mit Performanzerwägungen ausgewogene Zukunft einer „grünen Technologie“ wichtig.
  • Obwohl die Implementierungen hierin unter Bezugnahme auf eine Verarbeitungsvorrichtung beschrieben sind, sind andere Implementierungen auf andere Arten von integrierten Schaltungen und Logikvorrichtungen anwendbar. Ähnliche Techniken und Lehren von Implementierungen der Offenbarung können auf andere Arten von Schaltungen oder Halbleitervorrichtungen angewandt werden, die von einem höheren Pipeline-Durchsatz und einer verbesserten Leistungsfähigkeit profitieren können. Die Lehren von Implementierungen der Offenbarung sind auf eine beliebige Verarbeitungsvorrichtung oder Maschine anwendbar, die Datenmanipulationen durchführt. Die Offenbarung ist jedoch nicht auf Verarbeitungsvorrichtungen oder -maschinen beschränkt, die 512-Bit-, 256-Bit-, 128-Bit-, 64-Bit-, 32-Bit-oder 16-Bit-Datenoperationen durchführen, und kann auf beliebige Verarbeitungsvorrichtungen und -maschinen angewandt werden, in denen eine Manipulation oder Verwaltung von Daten durchgeführt wird. Zusätzlich dazu stellt die Beschreibung hierin Beispiele bereit, und die begleitenden Zeichnungen zeigen verschiedene Beispiele für Veranschaulichungszwecke. Diese Beispiele sollten jedoch nicht in einem beschränkenden Sinn ausgelegt werden, da sie lediglich dafür beabsichtigt sind, Beispiele für Implementierungen der Offenbarung bereitzustellen, anstatt eine erschöpfende Liste aller möglichen Implementierungen von Implementierungen der Offenbarung bereitzustellen.
  • Obwohl die folgenden Beispiele Befehlsbehandlung und -verteilung im Kontext von Ausführungseinheiten und Logikschaltungen beschreiben, können andere Implementierungen der Offenbarung durch Daten oder Befehle erreicht werden, die auf einem maschinenlesbaren, greifbaren Medium gespeichert sind, die, wenn sie durch eine Maschine durchgeführt wird, bewirken, dass die Maschine Funktionen durchführt, die mit mindestens einer Implementierung der Offenbarung konsistent sind. Bei einer Implementierung werden mit Implementierungen der Offenbarung assoziierte Funktionen in maschinenausführbaren Befehlen umgesetzt. Die Anweisungen können verwendet werden, um zu bewirken, dass eine Universal-oder Spezialverarbeitungsvorrichtung, die mit den Anweisungen programmiert ist, die Schritte der Offenbarung durchführt. Implementierungen der Offenbarung können als ein Computerprogrammprodukt oder Software bereitgestellt werden, das bzw. die ein maschinen- oder computerlesbares Medium enthalten kann, auf dem Befehle gespeichert sind, die zum Programmieren eines Computers (oder anderer elektronischer Vorrichtungen) zum Durchführen einer oder mehrerer Operationen gemäß Implementierungen der Offenbarung verwendet werden können. Alternativ könnten Operationen von Implementierungen der Offenbarung durch spezifische Hardwarekomponenten, welche Logik mit fester Funktion zum Durchführen der Operationen enthalten, oder durch eine beliebige Kombination von programmierten Computerkomponenten und Hardwarekomponenten mit fester Funktion durchgeführt werden.
  • Befehle, die zum Programmieren von Logik verwendet werden, um Implementierungen der Offenbarung durchzuführen, können innerhalb eines Speichers im System, wie etwa DRAM, Cache, Flash-Speicher oder anderer Speicherung gespeichert werden. Des Weiteren können die Anweisungen über ein Netzwerk oder über andere computerlesbare Medien verteilt werden. Dementsprechend kann ein maschinenlesbares Medium einen beliebigen Mechanismus zum Speichern oder Übertragen von Informationen in einer durch eine Maschine (z. B. einen Computer) lesbaren Form einschließen, unter anderem Floppy-Disketten, optische Platten, CD-ROMs (Compact Disc Read-Only Memory) und magnetooptische Platten, Nurlesespeicher (ROMs), Direktzugriffsspeicher (RAM), löschbaren programmierbaren Nurlesespeicher (EPROM), elektrisch löschbaren programmierbaren Nurlesespeicher (EEPROM), magnetische oder optische Karten, Flash-Speicher oder eine greifbare maschinenlesbare Speicherung, die bei der Übertragung von Informationen über das Internet über elektrische, optische, akustische oder andere Formen von propagierten Signalen (z. B. Trägerwellen, Infrarotsignale, Digitalsignale usw.) verwendet werden. Entsprechend beinhaltet das computerlesbare Medium einen beliebigen Typ von greifbarem maschinenlesbarem Medium, das zum Speichern oder Übertragen elektronischer Befehle oder von Informationen in einer durch eine Maschine (z. B. einen Computer) lesbaren Form geeignet ist.
  • Eine Gestaltung kann verschiedene Stufen durchlaufen, von Erstellung über die Simulation bis hin zur Herstellung. Daten, die eine Gestaltung darstellen, können die Gestaltung auf verschiedene Weisen repräsentieren. Zunächst kann die Hardware, was bei Simulationen sinnvoll ist, unter Verwendung einer Hardware-Beschreibungssprache oder einer anderen funktionalen Beschreibungssprache repräsentiert werden. Zusätzlich dazu kann bei manchen Stufen des Gestaltungsprozesses ein Schaltkreisebenenmodell mit Logik- und/oder Transistorgattern erstellt werden. Darüber hinaus erreichen die meisten Gestaltungen bei einer gewissen Stufe eine Datenebene, welche die physische Platzierung verschiedener Vorrichtungen im Hardwaremodell repräsentiert. Im Fall der Verwendung herkömmlicher Halbleiterherstellungstechniken können die Daten, die das Hardwaremodell repräsentieren, die Daten sein, die das Vorhandensein oder das Nichtvorhandensein verschiedener Merkmale auf unterschiedlichen Maskenschichten für Masken, die zur Herstellung des integrierten Schaltkreises verwendet werden, spezifizieren. Bei einer beliebigen Repräsentation der Gestaltung können die Daten in beliebiger Form eines maschinenlesbaren Mediums gespeichert werden. Ein Speicher oder eine magnetische oder optische Speicherung, wie eine Platte, kann das maschinenlesbare Medium zum Speichern von Informationen sein, die über optische oder elektrische Wellen übertragen werden, die moduliert oder anderweitig erzeugt werden, um solche Informationen zu übertragen. Wenn eine elektrische Trägerwelle, die den Code oder die Gestaltung angibt oder mit sich führt, in dem Ausmaß, dass Kopieren, Puffern oder Neuübermittlung des elektrischen Signals ausgeführt wird, übermittelt wird, wird eine neue Kopie erstellt. Daher kann ein Kommunikationsanbieter oder Netzwerkbetreiber einen Artikel, wie etwa in einer Trägerwelle codierte Informationen, der Techniken der vorliegenden Implementierungen verkörpert, auf einem greifbaren maschinenlesbaren Medium zumindest vorübergehend speichern.
  • Ein Modul, so wie es hierin verwendet wird, bezieht sich auf jegliche Kombination von Hardware, Software und/oder Firmware. Ein Modul beinhaltet beispielsweise mit einem nichtflüchtigen Medium assoziierte Hardware, wie etwa einen Mikrocontroller, zum Speichern von Code, der dazu angepasst ist, durch den Mikrocontroller ausgeführt zu werden. Daher bezieht sich eine Bezugnahme auf ein Modul in einer Implementierung auf die Hardware, die insbesondere konfiguriert ist zum Erkennen und/oder Ausführen des Codes, der auf einem nichtflüchtigen Medium gehalten werden soll. Ferner bezieht sich in einer anderen Implementierungen die Verwendung eines Moduls auf das den Code beinhaltende nichtflüchtige Medium, das spezifisch dazu angepasst ist, durch den Mikrocontroller ausgeführt zu werden, um vorbestimmte Operationen auszuführen. Und wie abgeleitet werden kann, kann sich bei noch einer anderen Implementierung der Ausdruck Modul (in diesem Beispiel) auf die Kombination des Mikrocontrollers und des nichtflüchtigen Mediums beziehen. Modulgrenzen, die als separat dargestellt sind, variieren üblicherweise oft und überlappen einander gegebenenfalls. Beispielsweise können sich ein erstes und ein zweites Modul Hardware, Software, Firmware oder eine Kombination daraus teilen, während manche unabhängige Hardware, Software oder Firmware gegebenenfalls beibehalten wird. Bei einer Implementierung schließt die Verwendung des Begriffs ,Logik' Hardware, wie etwa Transistoren, Register oder andere Hardware, wie etwa programmierbare Logikvorrichtungen, ein.
  • Die Verwendung der Phrase „dazu ausgelegt“ in einer Implementierung bezieht sich auf Anordnen, Zusammenstellen, Herstellen, zum Verkauf anbieten, Importieren und/oder Designen einer Einrichtung, von Hardware, Logik oder einem Element, um eine ausgewiesene oder bestimmte Aufgabe auszuführen. Bei diesem Beispiel ist eine Einrichtung oder ein Element davon, die/das nicht in Betrieb ist, dennoch „dazu konfiguriert“, eine designierte Aufgabe durchzuführen, wenn sie/es zum Durchführen der designierten Aufgabe gestaltet, gekoppelt und/oder verbunden ist. Als rein veranschaulichendes Beispiel kann ein Logikgatter während des Betriebs eine 0 oder eine 1 bereitstellen. Ein Logikgatter, das „dazu konfiguriert“ ist, einem Takt ein Aktivierungssignal bereitzustellen, schließt jedoch nicht jedes mögliche Logikgatter ein, das eine 1 oder eine 0 bereitstellen kann. Stattdessen ist das Logikgatter eines, das auf irgendeine Weise gekoppelt ist, dass während des Betriebs die Ausgabe von 1 oder 0 den Takt aktivieren soll. Es sei erneut angemerkt, dass die Verwendung des Begriffs „dazu konfiguriert“ keine Operation erfordert, sondern sich stattdessen auf den latenten Zustand einer Einrichtung, einer Hardware und/oder eines Elements richtet, wobei in dem latenten Zustand die Einrichtung, die Hardware und/oder das Element dazu gestaltet sind, eine spezielle Aufgabe auszuführen, wenn sich die Einrichtung, die Hardware und/oder das Element im Betrieb befinden.
  • Des Weiteren bezieht sich die Verwendung der Ausdrücke „zu“, „zu“ in der Lage und/oder „betreibbar zu“ bei einer Implementierung auf irgendeine Einrichtung, Logik, Hardware und/oder Element, die auf eine solche Weise gestaltet sind, um die Verwendung der Einrichtung, Logik, Hardware und/oder des Elements auf eine spezifizierte Weise zu ermöglichen. Es wird wie oben angemerkt, dass sich die Verwendung von bis, in der Lage zu oder betreibbar zu bei einer Implementierung auf den latenten Zustand einer Einrichtung, Logik, Hardware und/oder eines Elements bezieht, wobei die Einrichtung, Logik, Hardware und/oder das Element nicht arbeitet, aber auf eine solche Weise gestaltet ist, dass die Verwendung einer Einrichtung auf eine spezifizierte Weise ermöglicht wird.
  • Ein Wert, wie hier verwendet, beinhaltet eine beliebige bekannte Repräsentation einer Zahl, eines Zustands, eines logischen Zustands oder eines binären logischen Zustands. Häufig wird die Verwendung von Logikpegeln, Logikwerten oder logischen Werten auch als 1en und 0en bezeichnet, was einfach binäre Logikzustände repräsentiert. Beispielsweise bezieht sich 1 auf einen hohen Logikpegel, und 0 bezieht sich auf einen niedrigen Logikpegel. Bei einer Implementierung kann eine Speicherzelle, wie etwa eine Transistor- oder Flash-Zelle, dazu in der Lage sein, einen einzelnen logischen Wert oder mehrere logische Werte zu halten. Es wurden jedoch auch andere Repräsentationen von Werten in Computersystemen verwendet. Zum Beispiel kann die Dezimalzahl zehn auch als ein Binärwert von 1010 und ein hexadezimaler Buchstabe A dargestellt werden. Deshalb beinhaltet ein Wert jegliche Darstellung von Information, die in einem Computersystem gehalten werden kann.
  • Zudem können Zustände durch Werte oder Teile von Werten repräsentiert werden. Beispielsweise kann ein erster Wert, wie etwa eine logische Eins, einen Standard- oder Anfangszustand repräsentieren, während ein zweiter Wert, wie etwa eine logische Null, einen Nichtstandardzustand repräsentieren kann. Darüber hinaus beziehen sich die Begriffe ,Reset' und ,Set' in einer Implementierung jeweils auf einen standardmäßigen bzw. einen aktualisierten Wert oder Zustand. Beispielsweise beinhaltet ein Standardwert möglicherweise einen hohen logischen Wert, d. h. Zurücksetzen, während ein aktualisierter Wert gegebenenfalls einen niedrigen logischen Wert, d. h. Setzen, beinhaltet. Es wird angemerkt, dass eine beliebige Kombination aus Werten genutzt werden kann, um eine beliebige Anzahl an Zuständen zu repräsentieren.
  • Die oben dargelegten Implementierungen von Verfahren, Hardware, Software, Firmware oder Code können über auf einem maschinenzugreifbaren, maschinenlesbaren, computerzugreifbaren oder computerlesbaren Medium gespeicherte Befehlen oder Code implementiert sein, welche durch ein Verarbeitungselement ausführbar sind. Ein nichtflüchtiges maschinenzugängliches/-lesbares Medium beinhaltet einen beliebigen Mechanismus, der Informationen in einer durch eine Maschine, wie etwa einen Computer oder ein elektronisches System, lesbaren Form bereitstellt (d. h. speichert und/oder überträgt). Beispielsweise beinhaltet einen nichtflüchtigen, maschinenzugreifbaren Medium Direktzugriffsspeicher (RAM), wie etwa statischen RAM (SRAM) oder dynamischen RAM (DRAM); ROM; ein magnetisches oder optisches Speichermedium; Flash-Speichervorrichtungen; elektrische Speicherungsvorrichtungen; optische Speicherungsvorrichtungen; akustische Speicherungsvorrichtungen; andere Formen von Speicherungsvorrichtungen zum Halten von Informationen, die von flüchtigen (propagierten) Signalen (zum Beispiel Trägerwellen, Infrarotsignalen, Digitalsignalen), usw., empfangen werden, die von den nichtflüchtigen Medien unterschieden werden müssen, die Informationen davon empfangen können. Befehle, die zum Programmieren von Logik verwendet werden, um Implementierungen der Offenbarung durchzuführen, können innerhalb eines Speichers im System, wie etwa DRAM, Cache, Flash-Speicher oder anderer Speicherung gespeichert werden. Des Weiteren können die Anweisungen über ein Netzwerk oder über andere computerlesbare Medien verteilt werden. Dementsprechend kann ein maschinenlesbares Medium einen beliebigen Mechanismus zum Speichern oder Übertragen von Informationen in einer durch eine Maschine (z. B. einen Computer) lesbaren Form einschließen, unter anderem Floppy-Disketten, optische Platten, CD-ROMs (Compact Disc Read-Only Memory) und magnetooptische Platten, Nurlesespeicher (ROMs), Direktzugriffsspeicher (RAM), löschbaren programmierbaren Nurlesespeicher (EPROM), elektrisch löschbaren programmierbaren Nurlesespeicher (EEPROM), magnetische oder optische Karten, Flash-Speicher oder eine greifbare maschinenlesbare Speicherung, die bei der Übertragung von Informationen über das Internet über elektrische, optische, akustische oder andere Formen von propagierten Signalen (z. B. Trägerwellen, Infrarotsignale, Digitalsignale usw.) verwendet werden. Entsprechend beinhaltet das computerlesbare Medium einen beliebigen Typ von greifbarem maschinenlesbarem Medium, das zum Speichern oder Übertragen elektronischer Befehle oder von Informationen in einer durch eine Maschine (z. B. einen Computer) lesbaren Form geeignet ist.
  • In dieser gesamten Spezifikation bedeutet ein Bezug auf „eine Implementierung“, dass ein bestimmtes Merkmal, eine Struktur oder Charakteristik, in Verbindung mit der Implementierung beschrieben, in mindestens einer Implementierung der Offenbarung enthalten ist. Somit beziehen sich die Erscheinungen der Phrase „bei einer Implementierung“ an verschiedenen Stellen über die gesamte Spezifikation hinweg nicht alle notwendigerweise auf die gleiche Implementierung. Darüber hinaus können die bestimmten Merkmale, Strukturen oder Charakteristiken bei einer oder mehreren Implementierungen auf eine beliebige geeignete Weise kombiniert werden.
  • In der vorstehenden Spezifikation wurde eine ausführliche Beschreibung unter Bezugnahme auf spezifische beispielhafte Implementierungen gegeben. Es ist jedoch offensichtlich, dass verschiedene Modifikationen und Änderungen daran vorgenommen werden können, ohne vom weiteren Geist und Schutzumfang der Offenbarung, wie in den beigefügten Ansprüchen dargelegt, abzuweichen. Die Patentschrift und Zeichnungen sind dementsprechend in einem veranschaulichenden Sinne statt in einem beschränkenden Sinne zu verstehen. Des Weiteren bezieht sich die vorstehende Verwendung von Implementierung, Implementierung und/oder anderer beispielhafter Sprache nicht notwendigerweise auf die gleiche Implementierung oder das gleiche Beispiel, sondern kann sich auf unterschiedliche und unterschiedliche Implementierungen sowie potenziell auf die gleiche Implementierung beziehen.
  • Manche Teile der ausführlichen Beschreibungen sind hinsichtlich Algorithmen und symbolischen Repräsentation von Operationen an Datenbits innerhalb eines Computerspeichers dargelegt. Diese algorithmischen Beschreibungen und Repräsentationen sind die Mittel, die von Fachleuten der Datenverarbeitungstechnik verwendet werden, um die Substanz ihrer Arbeit am effektivsten anderen Fachleuten zu vermitteln. Ein Algorithmus wird hier und allgemein als eine selbstkonsistente Sequenz von Operationen konzipiert, die zu einem gewünschten Ergebnis führen. Die Operationen sind diejenigen, die physische Manipulationen von physikalischen Größen erfordern. Üblicherweise, jedoch nicht notwendigerweise, nehmen diese Größen die Form von elektrischen oder magnetischen Signalen an, die gespeichert, transferiert, kombiniert, verglichen und anderweitig manipuliert werden können. Es hat sich bisweilen, hauptsächlich aus Gründen der üblichen Verwendung, als zweckmäßig erwiesen, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Begriffe, Zahlen oder dergleichen zu bezeichnen. Die hier beschriebenen Blöcke können Hardware, Software, Firmware oder eine Kombination davon sein.
  • Es sollte jedoch beachtet werden, dass alle dieser und ähnlicher Begriffe den geeigneten physikalischen Größen zugeordnet werden sollen und lediglich auf diese Größen angewandte zweckmäßige Bezeichnungen sind. Sofern sich aus der obigen Besprechung nicht ausdrücklich etwas anderes ergibt, wird davon ausgegangen, dass sich Besprechungen in der gesamten Beschreibung unter Verwendung von Begriffen wie etwa „Definieren“, „Empfangen“, „Bestimmen“, „Ausgeben“, „Verknüpfen“, „Assoziieren“, „Erhalten“, „Authentifizieren“, „Verbieten“, „Ausführen“, „Anfordern“, „Kommunizieren“ oder dergleichen auf Handlungen und Prozesse eines Rechensystems oder einer ähnlichen elektronischen Rechenvorrichtung beziehen, das bzw. die Daten, die als physikalische (z. B. elektronische) Größen in den Registern und Speichern des Rechensystems repräsentiert sind, manipuliert und in andere Daten umwandelt, die gleichermaßen als physikalische Größen in den Speichern oder Registern des Rechensystems oder anderen derartigen Informationsspeicherungs-, Übertragungs- oder Anzeigevorrichtungen repräsentiert sind.
  • Die Wörter „Beispiel“ oder „beispielhaft“ werden hierin mit der Bedeutung „als Beispiel, Fall oder Veranschaulichung dienend“ verwendet. Jeder Aspekt oder jedes Design, der/das hierin als „Beispiel“ oder „beispielhaft“ beschrieben ist, ist nicht notwendigerweise als gegenüber anderen Aspekten oder Designs bevorzugt oder vorteilhaft auszulegen. Die Verwendung des Wortes „Beispiel“ oder „beispielhaft“ soll stattdessen Konzepte auf eine konkrete Weise präsentieren. Wie in dieser Anmeldung verwendet, soll der Ausdruck „oder“ ein inklusives „oder“ anstelle eines exklusives „oder“ bedeuten. Das heißt, sofern nicht anders spezifiziert oder aus dem Kontext klar ist, soll „X beinhaltet A oder B“ eine beliebige der natürlichen einschließenden Permutationen bedeuten. Das heißt, falls X A beinhaltet; X B beinhaltet; oder X sowohl A als auch B beinhaltet, dann ist „X beinhaltet A oder B“ unter einem beliebigen der vorhergehenden Fälle erfüllt. Außerdem sollten die Artikel „ein“ und „eine“, wie in dieser Anmeldung und den angehängten Ansprüchen verwendet, allgemein mit der Bedeutung „ein oder mehrere“ ausgelegt werden, sofern nichts anderes spezifiziert ist oder aus dem Kontext klar ist, dass sie sich an eine Singularform richten. Darüber hinaus soll die Verwendung des Begriffs „eine Implementierung“ überall nicht dieselbe Implementierung bedeuten, insofern nicht derartig beschrieben. Außerdem sind die Begriffe „erster“, „zweiter“, „dritter“, „vierter“ usw., wie hierin verwendet, als Bezeichnungen gedacht, um zwischen unterschiedlichen Elementen zu unterscheiden, und weisen möglicherweise nicht notwendigerweise eine ordinale Bedeutung gemäß ihrer numerischen Benennung auf.

Claims (20)

  1. System, das Folgendes umfasst: Prozessor zum Ausführen einer virtuellen Maschine, wobei der Prozessor ausgelegt ist zum: empfangen einer Anforderung zum Zugreifen auf eine Speicherseite, die durch eine virtuelle Gastspeicheradresse (GVA) in einem Adressraum der virtuellen Maschine identifiziert wird; über setzen des GVA in eine physikalische Gast Speicher adresse (GPA) unter Verwendung einer Gast Seiten Tabelle (GPT), die einen GPT-EINTRAG umfasst, der das GVA auf das GPA abbildet; Übersetzen des GPA in eine physikalische Host-Adresse (HPA) der Speicherseite; Speichern, in einem Übersetzungspuffer (TLB: Translation Look Aside Buffer), eines TLB-EINTRAGS, der das GVA auf das HPA abbildet; Modifizieren des GPT-EINTRAGS, um die Speicherseite als auf sie zugegriffen wird zu bezeichnen; „Detektieren eines Versuchs durch eine Anwendung, den GPT-EINTRAG zu modifizieren;“ erzeugen, als Reaktion auf den Versuch, den GPT-EINTRAG zu modifizieren, eines Seitenfehlers; und Flushen, als Reaktion auf den Seitenfehler, des TLB-EINTRAGS.
  2. System nach Anspruch 1, wobei der Prozessor zum Erzeugen des Seitenfehlers ausgelegt ist zum: in einem Schatten Seiten Tabellen Speicher Zugriff Modus (SPT-Modus) zu arbeiten, wobei der SPT-Modus das Führen einer Schatten Seiten Tabelle (SPT) umfasst, die einen SPT-EINTRAG umfasst, der das GVA auf die HPA abbildet; Designieren, in dem SPT, einer GPT-SPEICHERSEITE als schreibgeschützt, wobei die GPT-SPEICHERSEITE den GPT-EINTRAG speichern soll; empfangen einer Anweisung von der Anwendung zum Modifizieren des GPT-EINTRAGS; Bestimmen, unter Verwendung des SPT, dass die GPT-SPEICHERSEITE schreibgeschützt ist; und erzeugen des Seitenfehlers als Reaktion auf das Bestimmen, dass die GPT-SPEICHERSEITE schreibgeschützt ist.
  3. System nach Anspruch 2, wobei, um im SPT-Modus zu arbeiten, der Prozessor aus einem erweiterten Seiten Tabellen Speicher Zugriff Modus (EPT-Modus) in den SPT-Modus übergehen soll, wobei im EPT-Modus das über setzen des GVA in den HPA ferner das über setzen des GPA in den HPA unter Verwendung einer erweiterten Seiten Tabelle (EPT) umfasst, die einen EPT-EINTRAG umfasst, der den GPA auf den HPA abbildet.
  4. System nach Anspruch 2, wobei das Erzeugen des SPT Folgendes umfasst: Auswählen einer Vielzahl von Basis-GVAs für einen Prozessorzustand eines virtuellen Prozessors; Auswählen einer Vielzahl von GVAs, die an die Basis-GVAs angrenzen; Auswählen einer vorbestimmten Anzahl von Hot-Access GVAs; und Befüllen des SPT mit der Vielzahl von Basis GVAs für den Prozessor Zustand des virtuellen Prozessors, der Vielzahl von GVAs, die an die Basis GVAs angrenzen, und der ausgewählten Hot-Access GVAs.
  5. System nach Anspruch 1, wobei der Prozessor von einem erweiterten Seiten Tabellen Speicher Zugriff Modus (EPT-Modus) in einen Schatten Seiten Tabellen Speicher Zugriff Modus (SPT-Modus) übergehen soll, wobei im EPT-Modus das über setzen des GVA in den HPA das über setzen des GPA in den HPA unter Verwendung einer erweiterten Seiten Tabelle (EPT) umfasst, die einen EPT-EINTRAG umfasst, der den GPA auf den HPA abbildet, und wobei in dem SPT-Modus das über setzen des GVA in die HPA das Führen einer Schatten Seiten Tabelle (SPT) umfasst, die einen SPT-EINTRAG umfasst, der das GVA in die HPA abbildet; und wobei der Prozessor ferner einen Wiedergabe Koprozessor (RCP) umfasst, um: Kopieren, zu Beginn eines Verifikation Zeit Intervalls, eines Prozessor Zustands eines virtuellen Prozessors, der durch den Prozessor aktiviert wird, wobei der virtuelle Prozessor zugewiesen ist, um ein Software Programm auszuführen; den kopierten Prozessorzustand des virtuellen Prozessors auf dem RCP wiederzugeben; und Vergleichen eines resultierenden Prozessorzustands des RCP mit einem Prozessorzustand des virtuellen Prozessors an einem Ende des Verifizierungszeitintervalls.
  6. System nach Anspruch 5, wobei der Prozessorzustand des virtuellen Prozessors zu Beginn des Verifizierungszeitintervalls Folgendes umfasst: Inhalt einer Vielzahl von Hardwareregistern des Prozessors; und Inhalt mehrerer dem Softwareprogramm zugeordneter Speicherseiten.
  7. System nach Anspruch 5, wobei die Verarbeitungsvorrichtung zum Übergang vom EPT-Modus in den SPT-Modus ausgelegt ist zum: Stoppen von Prozessen, die durch den virtuellen Prozessor ausgeführt werden; im Cache gespeicherte EPT-bezogene Hardware-Register; Konfigurieren einer Virtuelle-Maschine-Steuerstruktur (VMCS) zum Deaktivieren des EPT; Konfigurieren des VMCS zum Aktivieren des SPT; erzeugen des SPT; und die Ausführung der angehaltenen Prozesse auf dem virtuellen Prozessor wiederaufzunehmen.
  8. System nach Anspruch 5, wobei die Verarbeitungsvorrichtung nach dem Ende des Verifizierungszeitintervalls ausgelegt ist zum: Stoppen von Prozessen, die durch den virtuellen Prozessor ausgeführt werden; gelöschte SPT-bezogene Hardware-Register; Konfigurieren einer Virtuelle-Maschine-Steuerstruktur (VMCS) zum Deaktivieren des SPT; Konfigurieren des VMCS zum Aktivieren des EPT; Laden eines neuesten EPT; und die Ausführung der angehaltenen Prozesse auf dem virtuellen Prozessor wiederaufzunehmen.
  9. System, das Folgendes umfasst: einen Prozessor zum Initialisieren eines Virtuelle-Maschine-Monitors (VMM), wobei der VMM ein Gastbetriebssystem (GOS) initialisieren soll, wobei das GOS eine virtuelle Maschine unterstützen soll; Speichervorrichtung zum Speichern von Folgendem: eine Gast Seiten Tabelle (GPT), die einen GPT-EINTRAG zum Abbilden einer virtuellen Gast Speicher adresse (GVA) auf eine physische Gast Speicher adresse (GPA) umfasst; „eine erweiterte Seitentabelle (EPT), die einen EPT-EINTRAG zum Abbilden des GPA auf eine physische Host-Speicheradresse (HPA) umfasst; und“ „eine Schattenseitentabelle (SPT), die einen SPT-EINTRAG umfasst, um das GVA auf die HPA abzubilden;“ einen Wiedergabe-Coprozessor (RCP), und ein Prozessorprüfmodul (PCM) zum Ermöglichen einer Laufzeitverifikation des Prozessors auf dem RCP.
  10. System nach Anspruch 9, wobei der Prozessor sowohl zu einem EPT-fähigen Speicher Zugriff Modus (EPT-Modus) als auch zu einem SPT-fähigen Speicher Zugriff Modus (SPT-Modus) in der Lage ist, wobei der Prozessor im EPT-Modus ausgelegt ist zum: empfangen einer Anforderung zum Zugreifen auf eine Speicherseite, die durch das GVA identifiziert wird; „Durchführen eines ersten Laufs in der GPT, um das GPA von dem GVA zu erhalten; und“ Durchführen eines zweiten Laufs in dem EPT, um die HPA der Speicherseite von dem GPA zu erhalten; und wobei der Prozessor im SPT-Modus ausgelegt ist zum: empfangen einer Anforderung zum Zugreifen auf die durch das GVA identifizierte Speicherseite; Durchführen eines dritten Page Walk in dem SPT, um eine Speicherübersetzung von dem GVA zu einer physischen Host-Adresse (HPA) der Speicherseite zu erhalten; Speichern eines Übersetzungseintrags, der Speicherübersetzung entspricht, in einem Übersetzungspuffer (TLB) des Prozessors; Modifizieren des GVA, um die Speicherseite als zugegriffen zu bezeichnen; Detektieren eines Versuchs durch eine Anwendung, den GPT-EINTRAG zu modifizieren; Erzeugen eines Seitenfehlers als Reaktion auf den Versuch, den GPT-EINTRAG zu modifizieren; und Flushen, als Reaktion auf den Seitenfehler, des Übersetzungseintrags aus dem TLB.
  11. System nach Anspruch 10, wobei Modifizieren des GVA, um die Speicherseite als zugegriffen zu bezeichnen, darin besteht, ein A-bit in einem SPT-EINTRAG einzustellen, der Speicherübersetzung von dem GVA zu dem HPA entspricht.
  12. System nach Anspruch 10, wobei der Prozessor periodisch ausgelegt ist zum: Übergang vom EPT-Modus in den SPT-Modus; und Übergang vom SPT-Modus in den EPT-Modus zurück.
  13. Verfahren, das Folgendes umfasst: Ausführen, durch eine Verarbeitungsvorrichtung, einer virtuellen Maschine; empfangen, durch die Verarbeitungsvorrichtung, einer Anforderung zum Zugreifen auf eine Speicherseite, die durch eine virtuelle Gastspeicheradresse (GVA) in einem Adressraum der virtuellen Maschine identifiziert wird; über setzen des GVA in eine physikalische Gast Speicher adresse (GPA) unter Verwendung einer Gast Seiten Tabelle (GPT), die einen GPT-EINTRAG umfasst, der das GVA auf das GPA abbildet; Übersetzen des GPA in eine physikalische Host-Adresse (HPA) der Speicherseite; Speichern, durch die Verarbeitungsvorrichtung, eines TLB-EINTRAGS, der das GVA auf das HPA abbildet, in einem Übersetzungspuffer (TLB: Translation Look Aside Buffer); Modifizieren, durch die Verarbeitungsvorrichtung, des GPT-EINTRAGS, um die Speicherseite als zugegriffen zu bezeichnen; Detektieren, durch die Verarbeitungsvorrichtung, eines Versuchs durch eine Anwendung, den GPT-EINTRAG zu modifizieren; erzeugen, durch die Verarbeitungsvorrichtung, als Reaktion auf den Versuch, den GPT-EINTRAG zu modifizieren, eines Seitenfehlers; und Entleeren, durch die Verarbeitungsvorrichtung, als Reaktion auf den Seitenfehler, des TLB-EINTRAGS.
  14. Verfahren nach Anspruch 13, wobei das Erzeugen des Seitenfehlers Folgendes umfasst: Betreiben der Verarbeitung Vorrichtung in einem Schatten Seiten Tabellen Speicher Zugriff Modus (SPT-Modus), wobei der SPT-Modus das Führen einer Schatten Seiten Tabelle (SPT) umfasst, die einen SPT-EINTRAG umfasst, der das GVA auf die HPA abbildet; bezeichnen, in dem SPT, einer GPT-SPEICHERSEITE als schreibgeschützt, wobei die GPT-SPEICHERSEITE den GPT-EINTRAG speichern soll; empfangen einer Anweisung von der Anwendung zum Modifizieren des GPT-EINTRAGS; Bestimmen, unter Verwendung des SPT, dass die GPT-SPEICHERSEITE schreibgeschützt ist; und erzeugen des Seitenfehlers als Reaktion auf das Bestimmen, dass die GPT-SPEICHERSEITE schreibgeschützt ist.
  15. Verfahren nach Anspruch 14, wobei zum Betreiben der Verarbeitungsvorrichtung im SPT-Modus die Verarbeitungsvorrichtung aus einem erweiterten Seitentabelle-Speicherzugriffsmodus (EPT-Modus) in den SPT-Modus übergehen soll, wobei im EPT-Modus das Übersetzen des GVA in den HPA ferner das Übersetzen des GPA in den HPA unter Verwendung einer erweiterten Seitentabelle (EPT) umfasst, die einen EPT-EINTRAG umfasst, der den GPA auf den HPA abbildet.
  16. Verfahren nach Anspruch 14, wobei das Erzeugen der SPT Folgendes umfasst: Auswählen, durch die Verarbeitungsvorrichtung, mehrerer Basis-GVAs für einen Prozessorzustand eines virtuellen Prozessors; Auswählen, durch die Verarbeitungsvorrichtung, mehrerer GVAs, die an die Basis-GVAs angrenzen; Auswählen, durch die Verarbeitungsvorrichtung, einer vorbestimmten Anzahl von Hot-Access GVAs; und Befüllen, durch die Verarbeitungsvorrichtung, des SPT mit den mehreren Basis-GVAs für den Prozessorzustand des virtuellen Prozessors, den mehreren GVAs, die an die Basis-GVAs angrenzen, und den ausgewählten Hot-Access GVAs.
  17. Verfahren nach Anspruch 13, ferner umfassend Überführen der Verarbeitungsvorrichtung von einem erweiterten Seitentabelle-Speicherzugriffsmodus (EPT-Modus) in einen Schattenseitentabelle-Speicherzugriffsmodus (SPT-Modus), wobei im EPT-Modus das Übersetzen des GVA in den HPA ein Übersetzen des GPA in den HPA unter Verwendung einer erweiterten Seitentabelle (EPT) umfasst, die einen EPT-EINTRAG umfasst, der den GPA auf den HPA abbildet, und wobei im SPT-Modus das über setzen des GVA auf die HPA das Verwenden einer Schatten Seiten Tabelle (SPT) umfasst, die einen SPT-EINTRAG umfasst, der das GVA auf die HPA abbildet; und wobei das Verfahren ferner umfasst: Kopieren, durch die Verarbeitungsvorrichtung, zu Beginn eines Verifizierungszeitintervalls, eines Prozessorzustands eines virtuellen Prozessors der Verarbeitungsvorrichtung, wobei der virtuelle Prozessor zum Ausführen eines Softwareprogramms zugewiesen ist; Wiedergeben, durch die Verarbeitungsvorrichtung, des kopierten Prozessorzustands des virtuellen Prozessors auf einem Wiedergabe-Coprozessor (RCP); und Vergleichen, durch die Verarbeitungsvorrichtung, eines resultierenden Prozessorzustands des RCP mit einem Prozessorzustand des virtuellen Prozessors an einem Ende des Verifizierungszeitintervalls.
  18. Verfahren nach Anspruch 17, wobei der Prozessorzustand des virtuellen Prozessors zu Beginn des Verifizierungszeitintervalls Folgendes umfasst: Inhalt einer Vielzahl von Hardwareregistern des Prozessors; und Inhalt mehrerer dem Softwareprogramm zugeordneter Speicherseiten.
  19. Verfahren nach Anspruch 17, wobei das Übergehen von dem EPT-Modus in den SPT-Modus Folgendes umfasst: Stoppen, durch die Verarbeitungsvorrichtung, von Prozessen, die durch den virtuellen Prozessor ausgeführt werden; Löschen, durch die Verarbeitungsvorrichtung, von zwischengespeicherten EPT-bezogenen Hardwareregistern; Konfigurieren, durch die Verarbeitungsvorrichtung, einer Virtuelle-Maschine-Steuerstruktur (VMCS) zum Deaktivieren des EPT; Konfigurieren, durch die Verarbeitungsvorrichtung, des VMCS, um das SPT zu aktivieren; erzeugen, durch die Verarbeitungsvorrichtung, des SPT; und Fortsetzen der Ausführung der angehaltenen Prozesse auf dem virtuellen Prozessor durch die Verarbeitungsvorrichtung.
  20. Verfahren nach Anspruch 17, das ferner nach dem Ende des Verifizierungszeitintervalls Folgendes umfasst: Stoppen, durch die Verarbeitungsvorrichtung, von Prozessen, die durch den virtuellen Prozessor ausgeführt werden; Löschen, durch die Verarbeitungsvorrichtung, zwischengespeicherter SPTbezogener Hardwareregister; Konfigurieren, durch die Verarbeitungsvorrichtung, einer Virtuelle-Maschine-Steuerstruktur (VMCS) zum Deaktivieren des SPT; Konfigurieren, durch die Verarbeitungsvorrichtung, des VMCS, um den EPT zu aktivieren; Laden, durch die Verarbeitungsvorrichtung, eines neuesten EPT; und Wiederaufnehmen, durch die Verarbeitungsvorrichtung, der Ausführung der angehaltenen Prozesse auf dem virtuellen Prozessor.
DE112019006898.9T 2019-02-22 2019-02-22 Dynamisches umschalten zwischen ept- und schattenseitentabellen zur laufzeitprozessorverifikation Pending DE112019006898T5 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/075811 WO2020168536A1 (en) 2019-02-22 2019-02-22 Dynamical swithcing between ept and shadow page tables for runtime processor verification

Publications (1)

Publication Number Publication Date
DE112019006898T5 true DE112019006898T5 (de) 2021-11-25

Family

ID=69884298

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019006898.9T Pending DE112019006898T5 (de) 2019-02-22 2019-02-22 Dynamisches umschalten zwischen ept- und schattenseitentabellen zur laufzeitprozessorverifikation

Country Status (5)

Country Link
US (2) US11048542B2 (de)
CN (1) CN113490924A (de)
DE (1) DE112019006898T5 (de)
GB (1) GB2594876B (de)
WO (1) WO2020168536A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112019006898T5 (de) * 2019-02-22 2021-11-25 Intel Corporation Dynamisches umschalten zwischen ept- und schattenseitentabellen zur laufzeitprozessorverifikation
US11340909B2 (en) * 2019-07-23 2022-05-24 Vmware, Inc. Constructing a UEFI bootloader handoff address space for a physical machine hosting virtual machines
US11593275B2 (en) * 2021-06-01 2023-02-28 International Business Machines Corporation Operating system deactivation of storage block write protection absent quiescing of processors
US20220382478A1 (en) * 2021-06-01 2022-12-01 Samsung Electronics Co., Ltd. Systems, methods, and apparatus for page migration in memory systems
CN114020330B (zh) * 2021-11-04 2023-11-03 苏州睿芯集成电路科技有限公司 Risc-v处理器验证中模式切换的方法、电子设备以及存储介质
CN115114003B (zh) * 2022-07-04 2024-05-28 上海交通大学 Gpu动态多任务可控并发执行方法及***

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5261661B2 (ja) * 2005-05-24 2013-08-14 ストラタス・テクノロジーズ・バミューダ・リミテッド 対称型マルチプロセッサ・フォルトトレラントコンピュータシステム
US8443156B2 (en) * 2009-03-27 2013-05-14 Vmware, Inc. Virtualization system using hardware assistance for shadow page table coherence
US9389895B2 (en) * 2009-12-17 2016-07-12 Microsoft Technology Licensing, Llc Virtual storage target offload techniques
EP2691857B1 (de) * 2011-03-31 2016-11-30 Intel Corporation Speicherspiegelung und redundanzerzeugung für hohe verfügbarkeit
CN104239238B (zh) * 2013-06-21 2018-01-19 格芯公司 用于管理转换旁视缓冲的方法和装置
US11281481B2 (en) * 2014-07-25 2022-03-22 Intel Corporation Using a plurality of conversion tables to implement an instruction set agnostic runtime architecture
US20170357592A1 (en) * 2016-06-09 2017-12-14 Vmware, Inc. Enhanced-security page sharing in a virtualized computer system
US10114759B2 (en) * 2016-12-06 2018-10-30 Vmware, Inc. Trapless shadow page tables
US10445247B2 (en) * 2017-06-20 2019-10-15 Red Hat, Inc. Switching between single-level and two-level page table translations
US10394596B2 (en) * 2017-12-07 2019-08-27 Red Hat, Inc. Tracking of memory pages by a hypervisor
US10853259B2 (en) * 2017-12-29 2020-12-01 Red Hat, Inc. Exitless extended page table switching for nested hypervisors
US10997083B2 (en) * 2018-09-04 2021-05-04 Arm Limited Parallel page table entry access when performing address translations
DE112019006898T5 (de) * 2019-02-22 2021-11-25 Intel Corporation Dynamisches umschalten zwischen ept- und schattenseitentabellen zur laufzeitprozessorverifikation

Also Published As

Publication number Publication date
US11886906B2 (en) 2024-01-30
US11048542B2 (en) 2021-06-29
GB202110580D0 (en) 2021-09-08
CN113490924A (zh) 2021-10-08
US20200097313A1 (en) 2020-03-26
US20210294636A1 (en) 2021-09-23
WO2020168536A1 (en) 2020-08-27
GB2594876A (en) 2021-11-10
GB2594876B (en) 2022-11-16

Similar Documents

Publication Publication Date Title
DE112019006898T5 (de) Dynamisches umschalten zwischen ept- und schattenseitentabellen zur laufzeitprozessorverifikation
DE112017003483T5 (de) Eingeschränkte adressumsetzung zum schutz vor vorrichtungs-tlb-anfälligkeiten
DE102018126731A1 (de) Freigabeanweisung, um Seitenblock während des Auslagerns umzukehren
DE202019005671U1 (de) Koexistenz von Vertrauensdomänenarchitektur mitMehrschlüssel-Gesamtspeicherverschlüsselungstechnologieauf Servern
DE102018000886A1 (de) Virtuelle Maschinenkommunikation auf Hardware-Basis
DE102015006863A1 (de) Befehle und Logik zum Unterbrechen und Wiederaufnehmen von Paging in Secure Enclaves
DE112016007566T5 (de) Systeme, Verfahren und Vorrichtungen zur heterogenen Berechnung
DE202019005672U1 (de) System zum Verhindern eines unautorisierten Zugriffs auf verschlüsselten Speicher
DE102018125257A1 (de) Defragmentierter und effizienter mikrooperationscache
DE102014003689A1 (de) Verfolgung des kontrollflusses von befehlen
DE112016004960T5 (de) Befehl und logik, um informationen im voraus aus einem beständigen speicher zu holen
DE112017006568T5 (de) Auslegung einer Basistaktfrequenz eines Prozessors auf der Basis von Nutzungsparametern
DE112013003731T5 (de) Neue befehls- und hocheffiziente Mikroarchitektur zum ermöglichen einer sofortigen Kontextumschaltung für Benutzerebenen-Threading
DE102014003690A1 (de) Prozessoren, Verfahren und Systeme zur Befehlsemulation
DE112013007701T5 (de) Ein-Chip-System (SOC), das Hybridprozessorkerne enthält
DE102018125747A1 (de) Unterstützung für eine höhere anzahl von gleichzeitigenschlüsseln in einer kryptografie-engine mit mehrerenschlüsseln
DE112013005131T5 (de) Verfahren, Vorrichtung, System zur automatischen Abstimmung von Coderegionen
DE112012007119T5 (de) Threadmigration-Unterstützung für Kerne unterschiedlicher Architektur
DE202016009016U1 (de) Befehle und Logik für wiederkehrende benachbarte Sammlungen
DE202017007430U1 (de) Erkennen von Bussperrbedingungen und Vermeiden von Bussperren
DE102014003705A1 (de) Prozessoren, Verfahren und Systeme zur Befehlsemulation
DE102014003540A1 (de) Erzeugen einer isolierten ausführungsumgebung in einem co-designten prozessor
DE102018001229A1 (de) Beschleunigerschaltung mit variabler Wortlänge für ein neuronales Netzwerk
DE202019005686U1 (de) Skalierbare Gesamtspeicherverschlüsselungs-Engine mit mehrfachen Schlüsseln
DE102018002525A1 (de) Hybridatomaritätsunterstützung für einen binärübersetzungsbasierten mikroprozessor