Um den 80386 performanter zu gestalten, entwickelte Intel einen Translation Lookaside Buffer (TLB). Er arbeitet nach einem einfachem Prinzip. Beim ersten Zugriff auf eine Speicheradresse muss der Prozessor ein Page Walk durchführen. Allerdings merkt er sich das Ergebnis und speichert es im TLB ab. Ein erneuter Speicherzugriff innerhalb derselben Page führt dazu, dass der Prozessor nur einmal im TLB nachschauen muss und sofort die physikalische Adresse kennt.
Das erfordert die Mithilfe des Betriebssystems. Es modifiziert die Page Tables, wenn einem Anwendungsprogramm Speicher zugeteilt wird, beziehungsweise wenn ein Anwendungsprogramm freiwillig Speicher zurückgibt. In diesem Fall wird der TLB ungültig. Das Betriebssystem muss ihn daher invalidieren. Alle Speicherzugriffe eines Anwendungsprogramm laufen nach der Invalidierung einmalig wieder über einen langsamen Page Walk. Dabei füllt sich der TLB erneut.
Setzt man Virtualisierung ein, kommt es zwangsläufig zu einem weiteren Schritt bei der Ermittlung der tatsächlichen Speicheradresse. Der Kernel des Gastbetriebssystems definiert Page Tables, die der Hypervisor jedoch abfängt. Erst im Hypervisor werden die echten Adressen bestimmt.
RVI von AMD und EPT von Intel erlauben daher, dass sowohl das Gastbetriebssystem als auch der Hypervisor Hardware-Page-Tables verwenden können. So muss der Hypervisor nicht eingreifen, wenn das Gastbetriebssystem Page Tables ausliest oder modifiziert. EPT hat allerdings einen Vorteil gegenüber RVI. Über die zusätzliche Page-Table-Hierarchie hinaus lässt sich für jeden virtuellen Prozessor eine virtuelle Prozessor-ID (VPID) festlegen. Ferner gibt es zwei neue Invalidierungsbefehle für den Hypervisor.
Mit invvpid können TLB-Einträge nur für einen virtuellen Prozessor invalidiert werden. Alle anderen TLB-Einträge bleiben gültig. Analog dazu invalidiert invept nur die Extended Page Tables. AMD geht anders vor. Das NPT-Konzept in RVI erlaubt lediglich Nested TLBs. Damit können Page Walks zwar verkürzt werden, jedoch lässt sich nicht verhindern, dass Page Walks in einer Gastmaschine überflüssig werden, wenn sich in einer anderen Gastmaschine Page Tables ändern.
Der Microbenchmark memsweep zeigt, dass die komplette Verlagerung der Adressübersetzung in die Prozessorhardware bei AMD zur Falle werden kann, da nur der gesamte TLB invalidiert werden kann. Die gemessene Verlangsamung um die Hälfte ist ein ernst zu nehmender Faktor. Verzichtet man auf die Verwendung von RVI, dann läuft memsweep mit nahezu nativer Geschwindigkeit ab. In diesem Fall verwaltet der Hypervisor sogenannte Shadow Page Tables per Software, was ihm eine feinere Kontrolle darüber ermöglicht, ob und wann TLB-Einträge invalidiert werden müssen.
Die Softwarelösung ist im Endeffekt schneller als die Hardwarelösung. Dieses Phänomen ist nicht neu. Die Digital Equipment Corporation (DEC) hatte einst für ihre VAX-Prozessoren den Befehl index eingeführt, der ein Byte in einer Zeichenkette findet, jedoch stellte sich schnell heraus, dass das Suchen mittels einer Schleife schneller war als die Verwendung des neuen Befehls.
- Virtualisierung mit Server-CPUs: Leistungsbremse inklusive
- Intels EPT schlägt AMDs RVI
- Segmentierung und Paging bremsen Speicherzugriff
- Der TLB als Abkürzung
- Hardware- oder Softwarevirtualisierung
- Risikotechnologie Binary Translation: bei Intel nicht mit 64 Bit
- Hardwarevirtualisierung der ersten Generation wenig ausgereift
- Core-2-CPUs nur eingeschränkt virtualisierungstauglich
- Auswahl der richtigen Technologie: meist nicht einfach
- Fazit
- Benchmarkergebnisse in der Übersicht
Neueste Kommentare
1 Kommentar zu Virtualisierung mit Server-CPUs: Leistungsbremse inklusive
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.
Story comment
A very interesting story