AMD Pacifica: Virtualisierung von CPU & Speicher

Virtualisierter Speicher-Controller

AMDs AMD64-Prozessoren unterscheiden sich durch ihren integrierten Memory-Controller von Intels x86-CPUs. Hier hebt sich Pacifica auch wesentlich von Intels Vanderpool-Technologie ab, indem der Speicher-Controller ebenfalls virtualisiert wird.

Normalerweise arbeitet jede VM in einem eigenen Adressbereich, den der Hypervisor/VMM unter Kontrolle behält. Die Adressanfragen einer VM übersetzt der Hypervisor/VMM und lenkt sie auf entsprechend zugewiesene physikalische Adressen um. Werden die Daten aus dem Speicher gelesen, so muss sie die Virtualisierungs-Software erneut für die virtuelle Maschine umleiten. Diese bei Intels Vanderpool praktizierte Lösung ist Software-basierend und kostet Zeit.

Pacifica kann diesen Vorgang mit Hardware-Unterstützung erledigen. So gibt es in der SVM-Architektur den neuen Speicher-Modus „Nested Paging“ mit Nested Page Tables (NPT). In der „normalen“ x86-Architektur sowie in Vanderpool-CPUs gibt es ein CR3-Register, das die physikalische Adresse des Page Tables speichert. Der Page Table regelt dann in Zusammenarbeit mit der Memory Managing Unit (MMU) der CPU die Adress-Übersetzung.

Der Nested-Paging-Modus von Pacifica stellt dagegen jeder VM ein eigenes virtualisiertes CR3-Register zur Verfügung. Dieses so genannte gCR3 wird bei jedem VM-Ein- und Austritt geladen und gespeichert. Die Ergebnisse sind im TLB gepuffert. Es wird mit den Nested Paging zwar eine zusätzliche Übersetzungsschicht eingeführt, die Vorgänge erfolgen aber Hardware-basierend und somit mit höherer Effizienz. Außerdem reduziert der Einsatz von Nested Paging die Frequenz von #VMEXIT.

Die beim Einsatz von virtuellen Maschinen ständig notwendigen Adressübersetzungen wandern mit Pacifica von der Software-Emulation in die Hardware. Besonders Betriebssysteme und Applikationen mit hohem Speicherbedarf sollten von NPT profitieren.

Laut AMD werden aber nicht alle Pacifica-CPUs das Feature Nested Page Tables besitzen. Über die CPUID-Funktion 8000_000Ah lässt sich die Nested-Paging-Funktionaliät abfragen.