Einige CPUs, wie z. B. AMD SVM-V und die Intel Xeon 5500-Serie, ermöglichen durch die Verwendung von zwei Seitentabellenebenen eine Hardwareunterstützung für die Arbeitsspeichervirtualisierung.
In der ersten Ebene der Seitentabellen sind die V2P-Übertragungen (Virtual-To-Physical) gespeichert, während in der zweiten Ebene die Speichertabellen die P2M-Übertragungen (Physical-To-Machine) gespeichert werden. Der TLB (Translation Look-aside Buffer) ist ein Cache für Übersetzungen, der von der MMU-Hardware des Prozessors verwaltet wird. Eine fehlgeschlagene TLB-Suche bedeutet, dass bestimmte Informationen nicht in diesem Cache vorhanden sind. In diesem Fall muss die Hardware (möglicherweise viele Male) auf den Arbeitsspeicher zugreifen, um die erforderliche Übersetzung zu finden. Wenn eine bestimmte virtuelle Gastadresse nicht im TLB vorhanden ist, werden von der Hardware beide Seitentabellen berücksichtigt, um die virtuelle Gastadresse in die Maschinenadresse zu übersetzen. Die erste Ebene von Seitentabellen wird vom Gastbetriebssystem verwaltet. Der VMM verwaltet nur die zweite Ebene von Seitentabellen.
Überlegungen zur Leistung
Wenn Sie die Hardwareunterstützung verwenden, wird dadurch der Overhead für die softwarebasierte Arbeitsspeichervirtualisierung eliminiert. Insbesondere beseitigt die Hardwareunterstützung den Overhead, der für die Synchronisierung der Schattenseitentabellen mit Gastseitentabellen benötigt wird. Die TLB-Fehlerlatenz bei Verwendung der Hardwareunterstützung ist jedoch deutlich höher. Der Hypervisor verwendet bei den hardwaregestützten Modi standardmäßig große Seiten, um die Kosten für TLB-Fehler zu senken. Ob eine Arbeitslast die Hardwareunterstützung zum Vorteil nutzen kann oder nicht, hängt demnach vom Overhead ab, der durch die Arbeitsspeichervirtualisierung bei Verwendung einer softwarebasierten Arbeitsspeichervirtualisierung verursacht wird. Wenn eine Arbeitslast eine geringe Menge an Seitentabellenaktivität umfasst (wie Prozesserstellung, Arbeitsspeicherzuordnung oder Kontext-Switches), verursacht die softwarebasierte Virtualisierung keinen erheblichen Overhead. Umgekehrt ist es wahrscheinlich, dass Arbeitslasten mit einem großen Anteil an Seitentabellenaktivität von der Hardwareunterstützung profitieren.
Die Leistung der Hardware-MMU wurde seit ihrer Einführung verbessert, indem in der Hardware eine umfangreiche Zwischenspeicherung implementiert wurde. Mithilfe von softwarebasierten Arbeitsspeichervirtualisierungstechniken erfolgen Kontext-Switches bei einem typischen Gast 100 bis 1000 Mal pro Sekunde. Jeder Kontext-Switch fängt den VMM in der Software-MMU auf. Bei der Hardware-MMU wird dieses Problem vermieden.
Der Hypervisor verwendet bei den hardwaregestützten Modi standardmäßig große Seiten, um die Kosten für TLB-Fehler zu senken. Die optimale Leistung ergibt sich bei Verwendung großer Seiten sowohl bei der Übersetzung von virtuellen in physische Gastadressen als auch bei der Übersetzung von physischen Adressen in Maschinenadressen.
Die Option LPage.LPageAlwaysTryForNPT kann die Richtlinien für die Verwendung großer Seiten bei der Übersetzung von physischen Gastadressen in Maschinenadressen ändern. Weitere Informationen finden Sie unter Erweiterte Arbeitsspeicherattribute.