Software-Pakete müssen in der Regel komplexe Klimmzüge machen, um einen
Rechner in virtuelle PCs zu unterteilen. Nicht nur die Performance, auch
die Betriebssicherheit sinken dadurch. AMD unterstützt mit „Pacifica“
die Virtualisierung des Prozessors auf Hardware-Ebene. Damit arbeitet
für Pacifica angepasste Virtualisierungs-Software mit deutlich weniger
Overhead. Positive Folge: mehr Geschwindigkeit und höhere Stabilität.
Mit der „Secure Virtual Machine Architecture“, so der richtige Name,
geht AMD noch einen Schritt weiter. Denn im Prozessor integrierte
Trusted-Computing-Features sorgen zusätzlich für mehr Security. Außerdem
virtualisiert Pacifica den Speicher-Controller.
Auf dem Fall Processor Forum in San Jose, Kalifornien, konnte tecCHANNEL
ausführlich mit Kevin McGrath, AMD Senior Fellow und Chief Architect der
AMD64-Architektur, über die Pacifica-Technologie diskutieren. In diesem
Artikel fassen wir die Funktion und die Features von AMDs
CPU-Virtualisierung zusammen. Außerdem weisen wir auf die Unterschiede
zu Intels konkurrierender Vanderpool-Technologie hin.
Prinzip der Virtualisierung
-
Virtualisierung auf einem PC arbeitet meist nach dem folgenden Prinzip:
Eine so genannte Virtual-Machine-Software erzeugt auf einem Host-Rechner
emulierte PCs. Diese emulierten Rechner verfügen über alle notwendigen
Elemente wie Prozessor, Festplatte, Grafikkarte und Tastatur. Innerhalb
dieses geschlossenen Systems kann ein Betriebssystem gestartet werden,
das auf die virtuelle Hardware zugreift, als sei es ein echter Computer,
ohne den Unterschied zu bemerken. In der Praxis gestaltet sich diese
Aufgabe jedoch erheblich schwieriger. Immerhin gilt es, eine Vielzahl
von benötigten Komponenten virtuell zu erzeugen. Da das Betriebssystem
auf dem Host-Rechner den exklusiven Zugriff auf die Hardware behält,
kann eine VM-Software dem Gastbetriebssystem keinen direkten Zugriff auf
die reale Hardware gewähren. Deshalb findet das Betriebssystem in der
virtuellen Maschine auch eine andere Hardware vor, als tatsächlich im PC
eingebaut ist.
So gibt es beispielsweise einen emulierten Chipsatz sowie als
Grafikkarte eine S3 Trio. Eine tatsächlich im System vorhandene GeForce
7800 steht den virtuellen Maschinen nicht zur Verfügung.
Simulierte CPU
-
Die VM-Software muss den VMs - den virtuellen Maschinen - somit auch
virtuelle Prozessoren vorgaukeln. Nur so kann der Host die volle
Kontrolle über den Prozessor behalten. Leider bedingt dies, dass den
virtuellen Maschinen simulierte CPUs mit eingeschränkter Funktionalität
zur Verfügung stehen. Die VM-Software bietet dann den VMs beispielsweise
keinen SMP-Support oder Features wie die 64-Bit-Befehlserweiterung. Auch
steht den VMs durch die "Software-CPUs" weniger Prozessor-Performance
als beim Original zur Verfügung. Hätten die VMs aber vollen Zugriff auf
die "Original-CPU", so könnten sie sich gegenseitig beeinflussen und
Abstürze verursachen.Mit der Secure Virtual Machine Architecture „Pacifica“
will AMD dieses Problem bei den eigenen Prozessoren aus der Welt
schaffen. AMD64-CPUs mit der Secure Virtual Machine Architecture
erhalten den so genannten SVM-Befehlssatz. Die neuen Befehle bieten
virtuellen Maschinen Prozessor-Level-Support. Pacifica ermöglicht der
VM-Software eine einfachere und sichere Verwaltung der
Prozessor-Ressourcen.
Intels konkurrierende Vanderpool-Lösung mit der Bezeichnung VT-x für
IA32-CPUs und VT-i für Itaniums erhalten den so genannten
VMX-Befehlssatz.
Virtueller Prozessor
Die CPU ist der Hauptbestandteil des echten und des virtuellen PCs. AMDs
AMD64- sowie Intels IA32-Architektur haben allerdings hinsichtlich der
Abbildung virtueller Maschinen gegenüber den Mainframes einige
Schwächen. Letztere sind schon architektonisch auf virtuelle Maschinen
ausgelegt.
AMDs Prozessoren mit AMD64-Architektur bieten vier verschiedene
Privilegien an, mit denen dem Betriebssystem sowie den Treibern und
Programmen unterschiedliche Rechte zugewiesen werden können.
Normalerweise laufen das Betriebssystem und die Treiber im so genannten
Ring 0 (Kernel Mode) und Applikationen im Ring 3 (User Mode). Diese "Current
Privilege Levels" werden auch mit CPL 0 beziehungsweise CPL 3
bezeichnet. Der Trick beim Erzeugen eines virtuellen Systems besteht
darin, dieses nicht mit CPL 0 ablaufen zu lassen.
Wenn das Betriebssystem des virtuellen Rechners nun einen Befehl
ausführen will, der nur im Ring 0 (CPL 0) gestattet ist, löst der
Prozessor eine Exception aus. Routinen zur Behandlung dieser Ausnahmen
können dann den privilegierten Befehl emulieren. Dabei behält das
Wirtsystem die volle Kontrolle über das System. Die wichtigste
Voraussetzung für das Funktionieren dieses Ansatzes ist, dass der
Prozessor bei jeder unberechtigt durchgeführten privilegierten Anweisung
eine Exception auslöst.
Leider sind die x86-Prozessoren nicht ganz so gründlich bei den
Exceptions. Beispielsweise werden Speicherzugriffe beim x86 über eine
GDT (Global Descriptor Table) abgewickelt. Diese GDT ist eine globale
Ressource und wird vom Betriebssystem verwaltet. Eigentlich müsste jeder
direkte Zugriff auf diese Ressource als privilegierte Handlung angesehen
werden und dementsprechend im User Mode nicht erlaubt sein. Der x86
behandelt die LGDT-Anweisung (Load Global Descriptor Table) auch als
privilegiert. Allerdings führt SGDT (Store Global Descriptor Table)
nicht zu einer Schutzverletzung. Allein diese Inkonsistenz verhindert
es, die GDT zu "virtualisieren".
AMDs Pacifica-Technologie greift hier ein und erleichtert unter anderem
auch das Exceptions-Handling. VM-Software mit Pacifica-Support lässt
sich somit einfacher programmieren - bei gleichzeitig höherer
Betriebssicherheit und mehr Performance.
quelle:www.tecchannel.de
Anzeige
Thomas Lauer . Flurstrasse 15 . 89284 Pfaffenhofen . Deutschland
Tel: +49 (0)731-97401-0 .
Fax: +49 (0)731-721243 . E-mail:
Thomas.Lauer@virtualisieren.de