Virtualisierungsanforderungen für Popek und Goldberg - Popek and Goldberg virtualization requirements

Die Virtualisierungsanforderungen von Popek und Goldberg sind eine Reihe von Bedingungen, die für eine Computerarchitektur ausreichen, um die Systemvirtualisierung effizient zu unterstützen. Sie wurden 1974 von Gerald J. Popek und Robert P. Goldberg in ihrem Artikel "Formale Anforderungen an virtualisierbare Architekturen der dritten Generation" vorgestellt. Obwohl die Anforderungen unter vereinfachenden Annahmen abgeleitet werden, stellen sie dennoch eine bequeme Methode dar, um festzustellen, ob eine Computerarchitektur eine effiziente Virtualisierung unterstützt, und bieten Richtlinien für den Entwurf virtualisierter Computerarchitekturen.

VMM-Definition

System virtuelle Maschinen in der Lage sind eine ganze Reihe von Hardware - Ressourcen zu virtualisieren, einschließlich einem Prozessor (oder Prozessoren), einen Speichers und Speicherressourcen und Peripheriegeräten. Ein Virtual Machine Monitor (VMM, auch Hypervisor genannt ) ist die Software, die die Abstraktion einer virtuellen Maschine bereitstellt. Bei der Analyse der von einem VMM erstellten Umgebung sind drei Eigenschaften von Interesse:

Äquivalenz / Treue
Ein Programm, das unter dem VMM ausgeführt wird, sollte ein Verhalten aufweisen, das im Wesentlichen mit dem identisch ist, das beim direkten Ausführen auf einem entsprechenden Computer gezeigt wird.
Ressourcenkontrolle / Sicherheit
Der VMM muss die vollständige Kontrolle über die virtualisierten Ressourcen haben.
Effizienz / Leistung
Ein statistisch dominanter Teil der Maschinenanweisungen muss ohne VMM-Intervention ausgeführt werden.

In der Terminologie von Popek und Goldberg muss ein VMM alle drei Eigenschaften aufweisen. In der im Nachschlagewerk von Smith und Nair (2005) verwendeten Terminologie wird normalerweise angenommen, dass VMMs die Äquivalenz- und Ressourcensteuerungseigenschaften erfüllen, und diejenigen, die zusätzlich die Leistungseigenschaft erfüllen, werden als effiziente VMMs bezeichnet .

Popek und Goldberg beschreiben die Eigenschaften, die die Befehlssatzarchitektur (ISA) der physischen Maschine besitzen muss, um VMMs auszuführen, die die oben genannten Eigenschaften besitzen. Ihre Analyse leitet solche Merkmale unter Verwendung eines Modells von "Architekturen der dritten Generation" (z. B. IBM 360, Honeywell 6000, DEC PDP-10) ab, das dennoch allgemein genug ist, um auf moderne Maschinen erweitert zu werden. Dieses Modell enthält einen Prozessor, der entweder im System- oder im Benutzermodus arbeitet und Zugriff auf einen linearen, gleichmäßig adressierbaren Speicher hat. Es wird angenommen, dass eine Teilmenge des Befehlssatzes nur im Systemmodus verfügbar ist und dass der Speicher relativ zu einem Verschiebungsregister adressiert ist. E / A und Interrupts werden nicht modelliert.

Virtualisierungssätze

Um ihre Virtualisierungssätze abzuleiten, die ausreichende (aber nicht notwendige) Bedingungen für die Virtualisierung bieten, führen Popek und Goldberg eine Klassifizierung einiger Anweisungen einer ISA in drei verschiedene Gruppen ein:

Privilegierte Anweisungen
Diejenigen, die abfangen, wenn sich der Prozessor im Benutzermodus befindet, und nicht abfangen, wenn er sich im Systemmodus befindet ( Supervisor-Modus ).
Kontrollieren Sie sensible Anweisungen
Diejenigen, die versuchen, die Konfiguration der Ressourcen im System zu ändern.
Verhaltensempfindliche Anweisungen
Diejenigen, deren Verhalten oder Ergebnis von der Konfiguration der Ressourcen abhängt (dem Inhalt des Umzugsregisters oder dem Prozessormodus).

Das Hauptergebnis der Analyse von Popek und Goldberg kann dann wie folgt ausgedrückt werden.

Satz 1 . Für jeden herkömmlichen Computer der dritten Generation kann ein effektiver VMM erstellt werden, wenn der Satz vertraulicher Anweisungen für diesen Computer eine Teilmenge des Satzes privilegierter Anweisungen ist.

Intuitiv besagt der Satz, dass es zum Erstellen eines VMM ausreicht, dass alle Anweisungen, die die korrekte Funktion des VMM beeinträchtigen könnten (vertrauliche Anweisungen), die Kontrolle immer abfangen und an den VMM übergeben. Dies garantiert die Ressourcensteuerungseigenschaft. Nicht privilegierte Anweisungen müssen stattdessen nativ (dh effizient) ausgeführt werden. Das Halten der Äquivalenzeigenschaft folgt ebenfalls.

Dieses Theorem bietet auch eine einfache Technik zum Implementieren eines VMM, die als Trap-and-Emulate-Virtualisierung bezeichnet wird und in jüngerer Zeit als klassische Virtualisierung bezeichnet wird : Da sich alle vertraulichen Anweisungen gut verhalten, muss der VMM sie nur jedes Mal abfangen und emulieren.

Ein verwandtes Problem besteht darin, ausreichende Bedingungen für die rekursive Virtualisierung abzuleiten, dh die Bedingungen, unter denen ein VMM erstellt werden kann, der auf einer Kopie von sich selbst ausgeführt werden kann. Popek und Goldberg stellen die folgenden (ausreichenden) Bedingungen dar.

Satz 2 . Ein herkömmlicher Computer der dritten Generation ist rekursiv virtualisierbar, wenn:

  1. es ist virtualisierbar und
  2. Ein VMM ohne zeitliche Abhängigkeiten kann dafür erstellt werden.

Einige Architekturen, wie das nicht hardwareunterstützte x86 , erfüllen diese Bedingungen nicht und können daher nicht auf klassische Weise virtualisiert werden. Architekturen können jedoch weiterhin vollständig virtualisiert werden (im Fall von x86 auf CPU- und MMU-Ebene), indem verschiedene Techniken wie die binäre Übersetzung verwendet werden, die die vertraulichen Anweisungen ersetzen, die keine Traps erzeugen, die manchmal als kritische Anweisungen bezeichnet werden. Diese zusätzliche Verarbeitung macht den VMM jedoch theoretisch weniger effizient, aber Hardware-Traps verursachen auch nicht zu vernachlässigende Leistungskosten. Ein gut abgestimmtes binäres Caching-Übersetzungssystem kann eine vergleichbare Leistung erzielen, und dies bei x86-Binärübersetzungen im Vergleich zur x86-Hardwareunterstützung der ersten Generation, bei der lediglich vertrauliche Anweisungen abgefangen werden konnten. Tatsächlich ergibt dies einen Satz mit unterschiedlichen Suffizienzbedingungen.

Satz 3 . Ein Hybrid- VMM kann für jede Maschine der dritten Generation konstruiert werden, bei der der Satz benutzersensibler Anweisungen eine Teilmenge des Satzes privilegierter Anweisungen ist:

Umgang mit kritischen Anweisungen

Die in Satz 1 ausgedrückten Bedingungen für die ISA-Virtualisierung können auf Kosten der Effizienz-Eigenschaft gelockert werden. VMMs für nicht virtualisierbare ISAs (im Sinne von Popek und Goldberg) wurden routinemäßig erstellt.

Die Virtualisierung solcher Architekturen erfordert die korrekte Behandlung kritischer Anweisungen , dh sensibler, aber nicht privilegierter Anweisungen. Ein Ansatz, der als Patching bezeichnet wird , verwendet Techniken, die üblicherweise bei der dynamischen Neukompilierung verwendet werden : Kritische Anweisungen werden zur Laufzeit erkannt und durch einen Trap im VMM ersetzt. Verschiedene Mechanismen, wie das Zwischenspeichern von Emulationscode oder Hardware-Assists , wurden vorgeschlagen, um den Patch-Prozess effizienter zu gestalten. Ein anderer Ansatz ist der der Paravirtualisierung , bei dem Gastbetriebssysteme vor der Ausführung in der virtuellen Umgebung geändert ( portiert ) werden müssen.

Befehlssätze gängiger Architekturen

In diesem Abschnitt werden einige relevante Architekturen und ihre Beziehung zu den Virtualisierungsanforderungen vorgestellt.

PDP-10

Die PDP-10- Architektur enthält einige Anweisungen, die vertraulich sind (den Prozessormodus ändern oder abfragen), aber nicht privilegiert sind. Diese Anweisungen speichern oder stellen die Bedingungscodes wieder her, die USER- oder IOT-Bits enthalten:

  • JSR: Zur Unterroutine springen
  • JSP: Programmzähler springen und speichern
  • PUSHJ: runterdrücken und springen
  • JRST: springen und wiederherstellen

System / 370

Alle vertraulichen Anweisungen im System / 370 sind privilegiert: Sie erfüllen die Virtualisierungsanforderungen.

Motorola MC68000

Das Motorola MC68000 verfügt über eine einzige nicht privilegierte vertrauliche Anweisung:

  • BEWEGUNG von SR

Dieser Befehl ist vertraulich, da er den Zugriff auf das gesamte Statusregister ermöglicht, das nicht nur die Bedingungscodes, sondern auch das Benutzer- / Supervisor-Bit, die Interrupt-Ebene und die Ablaufverfolgungssteuerung enthält. In den meisten späteren Familienmitgliedern, beginnend mit dem MC68010 , wurde die Anweisung MOVE from SR privilegiert, und eine neue Anweisung MOVE from CCR wurde bereitgestellt, um nur den Zugriff auf das Bedingungscoderegister zu ermöglichen.

IA-32 (x86)

Der IA-32- Befehlssatz des Pentium- Prozessors enthält 18 sensible, nicht privilegierte Befehle. Sie können in zwei Gruppen eingeteilt werden:

  • Anweisungen für empfindliche Register: Lesen oder Ändern von empfindlichen Registern oder Speicherstellen wie einem Taktregister oder Interrupt-Registern:
    • SGDT, SIDT, SLDT
    • SMSW
    • PUSHF, POPF
  • Anweisungen des Schutzsystems: Verweisen Sie auf das Speicherschutzsystem, das Speicher- oder Adressverlagerungssystem:
    • LAR, LSL, VERR, VERW
    • POP
    • DRÜCKEN
    • CALL FAR, JMP FAR, INT n, RETF
    • STR
    • MOV (Segmentregister)

Mit der Einführung der AMD-V- und Intel VT-x- Befehlssätze im Jahr 2005 können x86-Prozessoren die Virtualisierungsanforderungen von Popek und Goldberg erfüllen.

IA-64

Der Aufwand zur Unterstützung der Virtualisierung auf der IA-64- Architektur wird in einem Artikel von Magenheimer und Christian aus dem Jahr 2000 beschrieben.

SPARC

In UltraSPARC Architecture 2005 wurde ein "hyperprivilegierter" Modus für die UltraSPARC- Architektur angegeben . ' Es definiert eine sun4v- Plattform, die ein Super-Set der sun4u- Plattform ist, aber dennoch der SPARC v9 Level-1-Spezifikation entspricht.

PowerPC

Alle vertraulichen Anweisungen im PowerPC- Befehlssatz sind privilegiert.

Leistung in der Praxis

Die Effizienzanforderung in Popek und Goldbergs Definition eines VMM betrifft nur die Ausführung nicht privilegierter Anweisungen, die nativ ausgeführt werden müssen. Das unterscheidet einen VMM von der allgemeineren Klasse von Hardware- Emulationssoftware. Leider kann die Leistung einer virtuellen Maschine selbst in einer Architektur, die die Anforderungen von Popek und Goldberg erfüllt, erheblich von der tatsächlichen Hardware abweichen. Frühe Experimente mit dem System / 370 (das die formalen Anforderungen von Satz 1 erfüllt) zeigten, dass die Leistung einer virtuellen Maschine in einigen Benchmarks nur 21% der nativen Maschine betragen kann. Die Kosten für das Abfangen und Emulieren privilegierter Anweisungen im VMM können erheblich sein. Dies führte die IBM Ingenieure dazu, eine Reihe von Hardware-Assists einzuführen , die die Leistung der virtuellen System / 370-Maschinen ungefähr verdoppelten. Assists wurden in mehreren Stufen hinzugefügt. Am Ende gab es über 100 Assists bei den späten Modellen System / 370.

Einer der Hauptfaktoren für die Entwicklung von Hardware-Assists für das System / 370 war der virtuelle Speicher selbst. Wenn der Gast ein Betriebssystem war, das selbst virtuellen Speicher implementiert hat, können selbst nicht privilegierte Anweisungen längere Ausführungszeiten erfahren - eine Strafe, die durch die Anforderung des Zugriffs auf Übersetzungstabellen entsteht, die bei der nativen Ausführung nicht verwendet werden (siehe Schattenseitentabellen ).

Verweise

Anmerkungen