AMD Pacifica: Virtualisierung von CPU & Speicher

SVM-Kontrolle

Die Kontrolle über die SVM-Guest-Workloads übernimmt eine neue Datenstruktur mit der Bezeichnung „Virtual Machine Control Block“ VMCB. Bei Intel heißt das entsprechende Pendant „Virtual Machine Control Structur“ VMCS.

Der VMCB von Pacifica zeichnet für die Übergänge in und aus dem Guest-Modus ebenso verantwortlich wie für den Prozessor im "Gastmodus" selbst. Über die neuen SVM-Befehle VMLOAD und VMSAVE lässt sich das VMCB bearbeiten (siehe auch SVM-Befehle im Überblick).

Der Prozessor verknüpft jedes VMCB-Register mit einer 64 Bit breiten physikalischen Adresse - und dem bereits erwähnten 4 KByte großen Block. Die Aktivierung eines VMCB - und somit einer virtuellen Maschine - erfolgt über den SVM-Befehl VMRUN mit zugehöriger Adresse im rAX-Register. Diese VMCB bleibt dann für die Kontrolle des Prozessorverhaltens in einer Gast-Software verantwortlich. Von der Host-Software können dabei je nach Bedarf an virtuellen Maschinen mehrere VMCB per VMRUN [rAX] mit unterschiedlichen Adressen angelegt werden.

Ein VMCB ist in zwei Gruppen unterteilt: die erste enthält verschiedene Kontroll-Bits und die zweite speichert den Status eines Guest-Modus. Die letztgenannte Gruppe enthält beispielsweise Informationen über die Ursachen und Art eines #VMEXIT, wenn also eine virtuelle Maschine beendet wird. Zum Auslesen und Schreiben der VMCB-Datenfelder sind wie bereits erwähnt die Befehle VMLOAD und VMSAVE zu verwenden.

In künftigen Versionen von Pacifica will AMD den Guest-Status lokal im Prozessor statt im Speicher sichern. Damit soll ein schnellerer Wechsel zwischen den VMs und dem Hypervisor möglich werden.