Wie AMD und Intel CPUs virtualisieren

02.09.2005
Noch vor Jahresende will Intel Prozessoren auf den Markt bringen, die die Virtualisierungstechnik "Vanderpool" enthalten. Mitbewerber AMD zieht mit "Pacifica"-Chips Anfang 2006 nach.
Zukünftige AMD-Prozessoren nutzen den Hypervisor, der eine direkte Verbindung zwischen Prozessor und Gast-Betriebssystem herstellt. Ein Host-Betriebssystem ist damit überflüssig geworden.
Zukünftige AMD-Prozessoren nutzen den Hypervisor, der eine direkte Verbindung zwischen Prozessor und Gast-Betriebssystem herstellt. Ein Host-Betriebssystem ist damit überflüssig geworden.

Virtualisierung war bislang eine Softwareangelegenheit, sieht man einmal von den Partitionierungsoptionen der Risc-CPUs oder dem Multithreading ab. In Kürze wird das Thema aber auch von den PC-Prozessoren aufgenommen. Die Prozessorvirtualisierung wird zur Folge haben, dass mehrere Betriebssysteme auf einer Maschine zeitgleich laufen können. Damit erreicht man einen ähnlichen Effekt wie beim Multitasking, wo allerdings nur ein Betriebssystem verschiedene Programme auf dem Rechner quasi zeitgleich abarbeitet.

Hier lesen Sie …

• wie Intel mit Vanderpool die Prozessoren virtualisiert;

• was AMDs Pacifica-Technik dem Intel-Konzept hinzufügt;

• wie kompatibel beide Techniken zueinander sind.

Drei Arten der Virtualisierung

• Emulation: Erzeugt den größten Overhead, da jedes Stück Hardware simuliert werden muss.

• Paravirtualisierung (PV): Erfordert eine enge Kooperation zwischen den Programmierern der Virtualisierungsprogramme und der Betriebssysteme, denn PV funktioniert nur mit modifizierten Betriebssystemen, die für die virtuelle Umgebung angepasst werden. Deshalb eignet sich PV gut für Open-Source-Plattformen wie Linux, nicht aber für Windows.

• Binary Translation (BT): Die Virtualisierungssoftware beobachtet dabei, was die Gast-Betriebssysteme auszuführen versuchen. Falls der gewünschte Befehl mit der Virtualisierungsschicht kollidiert, ersetzt sie den Befehl durch einen Satz anderer Instruktionen. Dadurch erleidet das Gesamtsystem aber Leistungseinbußen.

Der Vorteil der Virtualisierung auf Prozessorebene liegt darin, dass ein Betriebssystem ohne Zeitverzug geladen oder bei einem Schaden aus dem Rechner entfernt werden kann. Programme lassen sich von einem Betriebssystem auf ein anderes transferieren. Wird eines von Hackern oder Viren befallen, kann es gelöscht und von einer sicheren Instanz aus neu geladen werden. Betriebssysteme werden also wie Programme geladen, entfernt und gesichert. Außerdem können unterschiedliche Betriebssysteme auf eine Maschine geladen werden, so dass etwa ein Entwickler sein Programm auf verschiedenen Plattformen testen kann.

Schließlich dient die Prozessorvirtualisierung auch dazu, Maschinen besser auszunutzen: Mehrere Anwender teilen sich einen Server, und jeder glaubt, er arbeite an seinem eigenen Rechner. Stürzt seine Maschine ab, kann ihm schnell eine neue Instanz aufgespielt oder zugeteilt werden. Die anderen Teilnehmer merken von den Problemen und Aktivitäten nichts.

Ein Nachteil der neuen Technik besteht darin, dass die Rechner mit mehr Ressourcen ausgestattet sein müssen und insbesondere mehr Hauptspeicher brauchen. Dafür sind insgesamt weniger Rechner anzuschaffen. Der zweite Nachteil droht mit dem Overhead, der auch bei der Prozessorvirtualisierung entsteht und die Leistung des Rechners mindert. Je nach eingesetzter CPU, Art und Anzahl der Betriebssysteme und der Arbeitslast auf dem Rechner kann die Einbuße zwischen zehn und über 40 Prozent liegen. Dem wollen die Chiphersteller AMD und Intel mit ihren neuen Prozessortechniken begegnen.

Exkurs: Ringstruktur

Die klassische x86-Architektur bei 32-Bit-Chips enthält zur Programmausführung die vier hierarchischen Ebenen 0, 1, 2 und 3. Normalerweise läuft das Betriebssystem auf der 0-Ebene ab und die Anwendungsprogramme auf dem Level 3. Hierarchisch bedeutet, dass eine Software von Ebene 3 keine Möglichkeit hat, Einfluss auf Ebene 0 zu nehmen. Umgekehrt funktioniert das schon. Die mittleren beiden Ringe werden meist nicht verwendet. Deshalb konnte sie Intel für die Erweiterung der x86-Architektur auf die Verarbeitung von 64-Bit-Programmen nutzen. Ebene 1 und 2 verschwanden, was niemand außer den Lieferanten von Virtualisierungsprogrammen wie VMware beklagte.

Betriebssystem ist nachgeordnet

Diese müssen die "Virtual Machine" (VM) möglichst weit unten, also auf Ebene 0 ansiedeln, um das System kontrollieren und steuern zu können. Das ist aber der Ring, den das Betriebssystem für sich beansprucht. Deshalb haben Virtualisierungsspezialisten das Betriebssystem einer 32-Bit-Umgebung über "Paravirtualisierung" (siehe Kasten "Drei Arten der Virtualsierung") so verändert, dass es anstandslos in Ebene 1 abläuft.

Mit dem Wegfall der Schichten 1 und 2 für die 64-Bit-Erweiterung ist das aber nicht mehr möglich: Jetzt müssen Betriebssystem und Anwendung gemeinsam auf der dritten Ebene platziert werden, weil auf Ring 0 die Virtualisierungssoftware sitzt.

Es lässt sich leicht ausrechnen, dass es in jedem Fall zu Problemen kommen kann, wenn das Betriebssystem nicht auf der gewohnten Ebene 0 angesiedelt ist: Einige Instruktionen überprüfen die Ebene, in der sie ablaufen, und reagieren mit einer Fehlermeldung, wenn ihre Erwartungen nicht erfüllt sind. Das lässt sich zwar durch die "Binary Translation" verhindern, die eine andere als die tatsächliche Ablaufebene vortäuscht. Um das zu bewerkstelligen, sind aber viele Instruktionen statt nur einer erforderlich. Als negativer Effekt der Täuschung ergibt sich ein langsameres System.

VMM, der neue Steuermann

Mit Vanderpool will Intel die möglichen Gefahren und Unzulänglichkeiten der Virtualisierung abbauen. Vanderpool soll es in zwei Varianten geben: eine Version für die x86-Architektur - "VT-x for x86" (VT-x) - und eine für die "Itanium"-Architektur (VT-i). Beide werden sich laut Hersteller im Kern nicht unterscheiden.

Kernstück von Vanderpool ist der "Virtual Machine Monitor" (VMM), der in einem neuen Modus - "VMX" - läuft. Alle Betriebssysteme auf dem Rechner arbeiten imVMX-Modus, während der VMM im VMX-Root-Modus abläuft. Intel hat für 64-Bit-CPUs den VMM in einer privilegierten Schicht unterhalb von Ebene 0 positioniert, der als "Minus-1"-Ring bezeichnet werden kann. Für die Betriebssysteme hat das den Vorteil, dass sie wie gewohnt Schicht 0 beziehen können und der Meinung sind, der Rechner stehe nur für sie bereit. Treten Komplikationen auf, wechselt die CPU in den VMX-Root-Modus. Der VMM kann dann Prozesse anstoßen und etwa zu einem Betriebssystem einer anderen VMX-Instanz wechseln.

Betriebssytem ex und hopp

Damit das Einspielen einer neuen Betriebssystem-Kopie schnell funktioniert, stellt Vanderpool einen Memory-Block mit 4 KB bereit, der auf das Betriebssystem verweist. Das neue Laden erfolgt so recht einfach und zügig.

Die zweite Schwierigkeit, die Vanderpool lösen muss, liegt in der Bereitstellung der Ressourcen für mehrere Betriebssysteme auf Schicht 0. Anders ausgedrückt müssen sich mehrere Betriebssysteme diese Ebene teilen, ohne dass sie sich gegenseitig beeinflussen oder gar korrumpieren. Intel hat dazu ein Kontrollsystem aus Bitmaps angelegt. Die Bitmaps bestehen aus 32-Bit-Feldern, wobei jedes Bit einen bestimmten Vorfall kennzeichnet.

Tritt ein Event ein und das entsprechende Bit ist gesetzt, dann veranlasst die CPU einen Ausstieg aus dem VMX-Modus. Der Virtual Machine Monitor übernimmt die Kontrolle und läuft dabei im Root-Modus. Die Kontrollinstanz stößt die erforderlichen Prozesse an und erteilt einem anderen oder dem gleichen Betriebssystem die Erlaubnis, weiterzuarbeiten. Das funktioniert so lange, bis ein neuerlicher Ausnahmefall wieder den Ausstieg aus dem VMX-Modus erzwingt.

Weniger Verwaltungsaufwand

Insider loben Vanderpool dafür, dass es den Overhead bei der Virtualisierung stark reduziert und mehr Stabilität verspricht als frühere VM-Modelle. Da Vanderpool zudem mit Intels "LaGrande"-Sicherheitstechnik zusammenarbeitet, soll sich beispielsweise die Verschlüsselung ohne großen Overhead kostengünstig realisieren lassen.

AMD nennt seine Technik zur Prozessorvirtualisierung Pacifica und will die ersten damit bestückten Chips der Familien "Athlon 64" und "Opteron" Anfang 2006 auf den Markt bringen. Pacifica arbeitet im Prinzip wie Intels Vanderpool, ist aber nicht binär kompatibel dazu. Pacifica fügt der Prozessorvirtualisierung zwei wesentliche Komponenten hinzu, die beide eng mit AMDs 64-Bit-Architektur (AMD64) verknüpft sind: einen neuen Memory-Modus und den "Device Exclusion Vector" (DEV).

AMD hat bei seinen 64-Bit-Prozessoren den Memory-Controller auf der CPU platziert, Intel nicht. Deshalb können die zukünftigen AMD-Chips viele Virtualisierungsaufgaben per Hardware erledigen, die die Intel-Prozessoren relativ umständlich über Software ausführen müssen. Für die Steuerung des Hauptspeicherbedarfs sorgt die "Memory Management Unit" (MMU): Sie teilt den Programmen den gewünschten Hauptspeicher zu.

Sie sorgt dafür, dass sich die Programme nicht begegnen. Welches Programm tatsächlich welche Memory-Adresse nutzt, wird in das "CR3"-Register geschrieben. AMDs neue Technik der "Nested Page Tables" (NPT) virtualisiert dieses CR3-Register: Jedes Gast-Betriebssystem erhält sein eigenes Register. Im Endeffekt führt das dazu, dass jedes Programm sich in seiner geplanten Umgebung wähnt und nichts von der Virtualisierung spürt.

Die zweite Erweiterung, die Pacifica gegenüber Vanderpool bietet, ist der Device Exclusion Vector, der eng mit dem CR3-Register zusammenhängt. DEV schließt Devices vom Hauptspeicherzugriff aus, wenn sie nicht dazu autorisiert sind. Das muss sein, weil sonst Programme auf ein und denselben Speicherplatz zugreifen und sich gegenseitig überschreiben würden.

Damit sich Programmierer mit der neuen Technik schon vorab vertraut machen können, hat AMD mit "Sim Now" einen Pacifica-Simulator ins Netz gestellt. Das kostenlos verfügbare Programm soll dazu führen, dass gleich zum Start der neuen Prozessoren möglichst viel Software dafür angeboten wird.