Second Level Address Translation

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Second Level Address Translation (SLAT), auch als Nested Paging bezeichnet, ist eine hardwareunterstützte Virtualisierungstechnologie, die eine effizientere Umsetzung von Shadow Page Tables[1] im Vergleich zu einer softwarebasierten Virtualisierungslösung erlaubt. Mit der Nehalem Prozessorfamilie führte Intel eine Implementierung von SLAT ein, die von Intel selbst als Extended Page Tables (EPT) bezeichnet wird.[2][3][4] Sie wird in bestimmten Prozessoren der Core i7, Core i5, and Core i3 Klasse unterstützt. AMD implementiert SLAT durch eine von AMD als Rapid Virtualization Indexing (RVI) bezeichnete Technologie und unterstützt diese seit der Einführung der dritten Opteron Prozessorgeneration (Codename Barcelona) in ihren Prozessoren.

Überblick[Bearbeiten]

Funktionsweise des einstufigen Page Table Lookups bei Prozessoren
Funktionsweise des mehrstufigen Page Table Lookups bei Prozessoren

Moderne Prozessoren unterscheiden bezüglich Speicherverwaltung die Konzepte des physikalischen und des virtuellen Speichers. Anwendungsprozesse greifen ausschließlich auf den virtuellen Speicher zu. Diese Zugriffe werden vom Prozessor bzw. der Memory Management Unit (MMU) als Komponente des Prozessors vom virtuellen in den physikalischen Adressraum umgesetzt. Die Zuordnung wird vom Prozessor in sogenannten Page Tables oder Translation Lookaside Buffers (TLB) gespeichert. Der Begriff virtueller Speicher hat nichts mit dem Speicher virtueller Maschinen zu tun, sondern ist ein Konzept das unabhängig von der Virtualisierung bereits in modernen x86-Prozessoren eingesetzt wird und von allen Anwendungsprozessen genutzt wird.

Da solche Page Tables aufgrund der großen Speicher moderner Systeme sehr groß werden können, wurde das Konzept zu einem mehrstufigen Page Table Lookup ausgebaut, bei dem mehrere Stufen von Page Tables zum Einsatz kommen. Damit können nicht benötigte Page Tables leichter in externen Speicher ausgelagert werden und generell lässt sich leichter mit großen Adressräumen umgehen.

Kommt nun zu diesem Konzept noch der Hypervisor und mehrere virtuelle Maschinen hinzu, wird eine weitere Addressumsetzung benötigt. Diese weitere Adressumsetzung erfolgt zwischen den Speicheraufrufen der Virtuellen Maschine und den dem Hypervisor zugeordneten Speicherbereichen. Ist keine Hardwareunterstützung dafür vorhanden muss der Hypervisor diese Umsetzung erledigen, um den Speicher dann über die MMU und den oben genannten mehrstufigen Mechanismus anzusprechen. Diese doppelte Umsetzung führte zu erheblichen Performanceverlusten beim Betrieb von virtuellen Maschinen im Vergleich zum Betrieb direkt auf der Hardware.

Die Prozessorhersteller erkannten dieses Performancepotential und erweiterten den ohnehin schon mehrstufigen Page Table Mappingprozess einfach um weitere Stufen, die das Mapping für die Virtualisierung erledigen. Diese Technologie wird aufgrund der weiteren Stufen des Mappings für die Virtualisierung "Second Level Address Translation" (kurz SLAT) genannt. Im Vergleich zur softwarebasierten Lösung wie oben beschrieben erhoffte man sich dadurch erhebliche Performancezugewinne für die Virtualisierung.

Wenn SLAT und mehrstufiges Page Table Mapping gemeinsam verwendet werden verdoppelte sich die Zahl der zu durchlaufenden Mappingstufen bei gleicher Adressgröße der physikalischen Gastadresse und der virtuellen Gastadresse und gleicher größe der Page Tables. Diese Tatsache macht Caching-Mechanismen für die Zwischenlevels von Host- und Gast-Page Tables sehr wichtig, da nicht immer alle Tabellen im Speicher gehalten werden können und durch geschicktes Caching die Zugriffszeiten trotzdem gering gehalten werden können. Es ist deswegen auch sinnvoll große Page Table Größen für die Host Page Tables zu wählen, um die Zahl der notwendige Page Table Levels zu verringern.

Implementierungen[Bearbeiten]

Extended Page Tables[Bearbeiten]

Extended Page Tables (EPT) ist eine x86-Virtualisierungstechnologie der zweiten Generation für die Memory Management Unit (MMU). Sie wird in unter anderem in bestimmten Prozessoren der Core i7, Core i5, and Core i3 Klasse unterstützt.[5]

Mit der Westmere Reihe von Prozessoren ergänzte Intel ein Feature, welches es erlaubt logische Prozessoren direkt im "Real Mode" zu starten. Das Feature wird von Intel "Unrestricted Guest" genannt und setzt das EPT-Feature voraus.[6][7] Laut einem VMWare Aufsatz: "EPT provides performance gains of up to 48 % for MMU-intensive benchmarks and up to 600 % for MMU-intensive microbenchmarks", d. h. es können durch EPT laut VMWare Performancesteigerungen zwischen 48 % und 600 % erzielt werden, obwohl diese Messungen sehr stark davon abhängen welche Anwendungsfälle den Tests zugrunde lagen. VMWare fand hierzu heraus, das Virtualisierung unter Verwendung von EPT in bestimmten Grenzfällen sogar langsamer sein kann, als unter Verwendung einer softwarebasierten Methode des Hypervisors.[8]

Rapid Virtualization Indexing[Bearbeiten]

AMD Opteron CPUs ab der 0x10 Barcelona Line and Phenom II CPUs und nachfolgende Prozessorgenerationen unterstützen eine fortgeschritten Virtualisierungstechnologie, die von AMD "Rapid Virtualization Indexing" genannt wird (während der Entwicklung wurde sie als "Nested Page Tables" bezeichnet) und die SLAT implementiert.[9][10]

In einem VMware-Forschungsaufsatz wurde dargestellt, das RVI bis zu 42 % Performance-Gewinn verglichen mit der softwarebasierten Implementierung erreichen kann.[11]. Tests die durch Red Hat durchgeführt wurden zeigten eine Verdoppelung der Performance für OLTP Benchmark Tests.[12]

Support durch Hypervisoren[Bearbeiten]

Die folgenden Hypervisoren unterstützen SLAT:

Es sollte beachtet werden, dass einige Hypervisoren zwingend EPT oder RVI-unterstützende Prozessoren benötigen, da sie selbst kein softwarebasiertes Page Table Mapping mehr unterstützen. Die Liste ist diesbezüglich nicht auf dem letzten Stand.

Siehe auch[Bearbeiten]

Weblinks[Bearbeiten]

Einzelnachweise[Bearbeiten]

  1. Matt Gillespie: Best Practices for Paravirtualization Enhancements from Intel Virtualization Technology: EPT and VT-d. In: Intel Software Network. Intel. 12. November 2007. Abgerufen am 6. Juli 2008.
  2. Gil Neiger: Intel Virtualization Technology: Hardware Support for Efficient Processor Virtualization. In: Intel (Hrsg.): Intel Technology Journal. 10, Nr. 3, S. 167–178. doi:10.1535/itj.1003.01. Abgerufen am 6. Juli 2008.
  3. First the Tick, Now the Tock: Next Generation Intel Microarchitecture (Nehalem). (PDF) . Abgerufen am 6. Juli 2008.
  4. Technology Brief: Intel Microarchitecture Nehalem Virtualization Technology (PDF) Intel. 25. März 2009. Abgerufen am 3. November 2009.
  5. Intel® Virtualization Technology List. Ark.intel.com. Abgerufen am 17. Februar 2014.
  6. http://2013.asiabsdcon.org/papers/abc2013-P5A-paper.pdf: "Intel added unrestricted guest mode on Westmere micro-architecture and later Intel CPUs, it uses EPT to translate guest physical address access to host physical address. With this mode, VMEnter without enable paging is allowed."
  7. http://download.intel.com/products/processor/manual/326019.pdf: "If the “unrestricted guest” VM-execution control is 1, the “enable EPT” VM-execution control must also be 1"
  8. Performance Evaluation of Intel EPT Hardware Assist
  9. Rapid Virtualization Indexing with Windows Server 2008 R2 Hyper-V | The Virtualization Blog. Blogs.amd.com. 23. März 2009. Abgerufen am 16. Mai 2010.
  10. AMD-V Nested Paging. July 2008. Abgerufen am 11. Dezember 2013.
  11. a b Performance Evaluation of AMD RVI Hardware Assist (PDF) Abgerufen am 16. Mai 2010.
  12. Red Hat Magazine | Red Hat Enterprise Linux 5.1 utilizes nested paging on AMD Barcelona Processor to improve performance of virtualized guests. Magazine.redhat.com. 20. November 2007. Abgerufen am 16. Mai 2010.
  13. AMD-V Rapid Virtualization Indexing and Windows Server 2008 R2 Hyper-V Second Level Address Translation. Doing IT Virtual. Abgerufen am 16. Mai 2010.
  14. Ed Bott: Does your PC have what it takes to run Windows 8's Hyper-V?. ZDNet. 8. Dezember 2011. Abgerufen am 17. Februar 2014.
  15. AMD Processors with Rapid Virtualization Indexing Required to Run Hyper-V in Windows 8
  16. Kernel Newbies: Linux 2 6 26. Abgerufen am 2. September 2014.
  17. Sheng Yang: Extending KVM with new Intel Virtualization technology (PDF) In: linux-kvm.org. KVM Forum. 12. Juni 2008. Abgerufen am 17. März 2013.
  18. Changelog for VirtualBox 2.0. Abgerufen am 2. September 2014.
  19. Benchmarks: Xen 3.2.0 on AMD Quad-Core Opteron with RVI. 15. Juni 2008. Abgerufen am 13. Mai 2011.
  20. Implementation of a BIOS emulation support for BHyVe: A BSD Hypervisor