Übersetzungs -Lookaside -Puffer
EIN Übersetzungs -Lookaside -Puffer (Tlb) ist eine Erinnerung Zwischenspeicher Das speichert die jüngsten Übersetzungen von virtueller Speicher zu physikalischer Speicher. Es wird verwendet, um die Zeit zu verkürzen, die für den Zugriff auf einen Benutzerspeicherstandort benötigt wird.[1] Es kann als Adresstranslations-Cache bezeichnet werden. Es ist ein Teil des Chips Speichermanagementeinheit (MMU). Ein TLB kann zwischen dem liegen Zentralprozessor und die CPU -Cache, zwischen CPU-Cache und dem Hauptspeicher oder zwischen den verschiedenen Ebenen des mehrstufigen Cache. Der Großteil der Desktop-, Laptop- und Serverprozessoren enthält eine oder mehrere TLBs in der Speichermanagement-Hardware, und es ist fast immer in jedem Prozessor vorhanden, der verwendet ausgestellt oder segmentiert virtueller Speicher.
Das TLB wird manchmal als implementiert als Inhaltsadressible Speicher (NOCKEN). Der CAM -Suchschlüssel ist die virtuelle Adresse, und das Suchergebnis ist a physikalische Adresse. Wenn die angeforderte Adresse im TLB vorhanden ist, ergibt die CAM -Suche schnell zu einer Übereinstimmung und die abgerufene physische Adresse kann zum Zugriff auf Speicher verwendet werden. Dies wird als TLB -Hit bezeichnet. Wenn die angeforderte Adresse nicht im TLB liegt Seitentabelle in einem Prozess genannt a Page Walk. Der Seite Walk ist im Vergleich zur Prozessorgeschwindigkeit zeitaufwändig, da das Lesen des Inhalts mehrerer Speicherorte und zur Berechnung der physischen Adresse verwendet wird. Nachdem die physische Adresse durch den Seiten Walk ermittelt wurde, wird die virtuelle Adresse zur physischen Adresszuordnung in die TLB eingegeben. Das Powerpc 604hat zum Beispiel eine Zwei-Wege Set-assoziativ TLB für Datenlasten und Speicher.[2] Einige Prozessoren haben unterschiedliche Anweisungen und Datenadressen TLBs.
Überblick

Ein TLB hat eine feste Anzahl von Slots, die enthalten Page-Tabelle Einträge und Segmenttischeinträge; Page-Table-Einträge erstellen virtuelle Adressen zu physische Adressen und Adressen mit Intermediate-Tabellen, während Segment-Tabellen-Einträge virtuelle Adressen zu Segmentadressen, Adressen mit mittlerer Tisch und Seiten-Tabellen-Adressen zuordnen. Das virtueller Speicher ist der Speicherraum, wie aus einem Prozess aus ersichtlich ist; Dieser Raum wird oft aufgeteilt in Seiten einer festen Größe (im ausgelasteten Speicher) oder weniger häufig in Segmente von variablen Größen (im segmentierten Speicher). Die Seitentabelle, allgemein gespeichert in Haupterinnerung, verfolgt, wo die virtuellen Seiten im physischen Gedächtnis gespeichert sind. Diese Methode verwendet zwei Speicherzugriffe (eine für den Page-Table-Eintrag, eine für das Byte), um auf ein Byte zuzugreifen. Zunächst wird die Seitentabelle nach der Rahmennummer nachgeschlagen. Zweitens gibt die Bildnummer mit dem Seitenversatz die tatsächliche Adresse an. Daher würde jedes einfache virtuelle Speicherschema den Einfluss der Verdoppelung der Speicherzugriffszeit haben. Daher wird der TLB verwendet, um die Zeit zu verkürzen, die für den Zugriff auf die Speicherorte in der Seiten-Tisch-Methode benötigt wird. Der TLB ist ein Cache der Seitentabelle, die nur eine Teilmenge des Seiten-Tisch-Inhalts darstellt.
In Bezug auf die physischen Speicheradressen kann sich ein TLB zwischen der CPU und der CPU befinden CPU -Cache, zwischen dem CPU -Cache und Hauptspeicher Speicher oder zwischen Stufen eines mehrstufigen Cache. Die Platzierung bestimmt, ob der Cache physische oder virtuelle Adressierung verwendet. Wenn der Cache praktisch behandelt wird, werden Anfragen direkt von der CPU an den Cache gesendet, und auf das TLB wird nur auf a zugegriffen Cache Miss. Wenn der Cache physikalisch behandelt wird, führt die CPU bei jedem Speichervorgang eine TLB -Suche durch, und die resultierende physische Adresse wird an den Cache gesendet.
In einem Harvard Architektur oder Modifizierte Harvard -ArchitekturEs kann für Anweisungen und Daten ein separater virtueller Adressraum oder Speicherzugriffshardware vorhanden sein. Dies kann für jeden Zugriffstyp zu unterschiedlichen TLBs führen, und zu unterschiedlichen TLBs Anleitung Übersetzung Lookaside -Puffer (Itlb) und a Data Translation Lookaside Puffer (DTLB). Bei separaten Daten und Anweisungen wurden verschiedene Vorteile nachgewiesen.[4]
Der TLB kann als schneller Suchhardware -Cache verwendet werden. Die Abbildung zeigt die Arbeit eines TLB. Jeder Eintrag in der TLB besteht aus zwei Teilen: einem Tag und einem Wert. Wenn das Tag der eingehenden virtuellen Adresse mit dem Tag im TLB übereinstimmt, wird der entsprechende Wert zurückgegeben. Da die TLB -Suche normalerweise Teil der Anweisungspipeline ist, sind die Suchvorgänge schnell und verursachen im Wesentlichen keine Leistungsstrafe. Um jedoch innerhalb der Befehlspipeline suchen zu können, muss der TLB gering sein.
Eine häufige Optimierung für physikalisch behandelte Caches besteht darin, die TLB -Suche parallel zum Cache -Zugriff durchzuführen. Bei jeder virtuellen Memory-Referenz überprüft die Hardware die TLB, um festzustellen, ob die Seitennummer darin enthalten ist. Wenn ja, ist es ein TLB -Hit, und die Übersetzung wird gemacht. Die Bildnummer wird zurückgegeben und wird verwendet, um auf den Speicher zuzugreifen. Wenn sich die Seitennummer nicht in der TLB befindet, muss die Seitentabelle überprüft werden. Abhängig von der CPU kann dies automatisch mithilfe einer Hardware oder mit einem Interrupt zum Betriebssystem erfolgen. Wenn die Bildnummer erhalten wird, kann sie verwendet werden, um auf den Speicher zuzugreifen. Zusätzlich fügen wir der TLB die Seitennummer und die Bildnummer hinzu, so dass sie bei der nächsten Referenz schnell gefunden werden. Wenn der TLB bereits voll ist, muss ein geeigneter Block für den Austausch ausgewählt werden. Es gibt verschiedene Ersatzmethoden wie zuletzt benutzt (LRU), als Erster rein, als erster raus (FIFO) etc.; Siehe das Adressübersetzung Abschnitt im Cache -Artikel für weitere Informationen zur virtuellen Adressierung in Bezug auf Caches und TLBs.
Leistungsauswirkungen

Die CPU muss auf den Hauptspeicher zugreifen, um einen Befehls-Cache-Miss, Data-Cache-Miss oder TLB-Fehl zu erhalten. Der dritte Fall (der einfachste) ist dort, wo die gewünschten Informationen tatsächlich selbst ist In einem Cache, aber die Informationen für virtuelle bis physikalische Übersetzung sind nicht in einem TLB. Diese sind alle langsam, da er auf eine langsamere Ebene der Speicherhierarchie zugreifen muss, sodass ein gut funktionierender TLB wichtig ist. In der Tat kann ein TLB -Fehlschlag teurer sein als ein Anweisungs- oder Datencache -Fehlschlag, da nicht nur eine Last aus dem Hauptspeicher, sondern auch eine Seite Walk erforderlich ist, bei der mehrere Speicherzugriffe erforderlich sind.
Das vorgesehene Flussdiagramm erklärt die Arbeit eines TLB. Wenn es sich um einen TLB -Fehlschlag handelt, prüft die CPU die Seitentabelle für den Eintrag von Seitentabellen. Wenn die Gegenwart ist eingestellt, dann befindet sich die Seite im Hauptspeicher, und der Prozessor kann die Bildnummer aus dem Page-Table-Eintrag abrufen, um die physische Adresse zu bilden.[6] Der Prozessor aktualisiert auch den TLB, um den neuen Page-Tisch-Eintrag einzuschließen. Wenn das vorliegende Bit nicht festgelegt ist, befindet sich die gewünschte Seite nicht im Hauptspeicher und a Seitenfehler wird ausgestellt. Anschließend wird ein Seitungs-Fault-Interrupt aufgerufen, der die Page-Fault-Handhabungsroutine ausführt.
Wenn die Seite Workingset passt dann nicht in die TLB TLB Thrashing tritt auf, wo häufige TLB -Fehlschläge auftreten, wobei jede neu zwischengespeicherte Seite eine verdrängt, die bald wieder verwendet wird, was die Leistung genauso verschlechtert wie das Thrashing des Befehls oder des Datencache. TLB-Thrashing kann auch dann auftreten, wenn Anweisungen oder Datencache Prügel treten nicht auf, da diese in Einheiten verschiedener Größe zwischengespeichert werden. Anweisungen und Daten werden in kleinen Blöcken zwischengespeichert (Cache -Zeilen), nicht ganze Seiten, aber die Adress -Lookup erfolgt auf Seitenebene. Selbst wenn der Code und die Datenarbeitssätze in den Cache passen, wenn die Arbeitssätze auf vielen Seiten fragmentiert sind, passt der Arbeitssatz der virtuellen Beratung möglicherweise nicht in TLB, was zu TLB-Thrashing führt. Eine angemessene Größe des TLB erfordert somit nicht nur die Größe der entsprechenden Anweisungen und Daten -Caches, sondern auch, wie diese auf mehreren Seiten fragmentiert werden.
Mehrere TLBs
Ähnlich wie bei Caches können TLBs mehrere Ebenen aufweisen. CPUs können (und heutzutage normalerweise werden) mit mehreren TLBs gebaut, zum Beispiel ein kleines L1 -TLB (möglicherweise vollständig assoziativ), das extrem schnell ist, und ein größeres L2 -TLB, das etwas langsamer ist. Wenn Befehls-TLB (ITLB) und Data-TLB (DTLB) verwendet werden, kann eine CPU drei (ITLB1, DTLB1, TLB2) oder vier TLBs haben.
Zum Beispiel, Intel's Nehalem Microarchitecture verfügt über ein Vier-Wege-Set assoziativ L1 DTLB mit 64 Einträgen für 4 KIB-Seiten und 32 Einträge für 2/4-MIB-Seiten, ein L1-ITLB mit 128 Einträgen für 4 KIB-Seiten unter Verwendung von Vier-Wege-Assoziativität und 14 vollständig assoziativen Einträgen für 2// 4 MIB -Seiten (beide Teile des ITLB statisch zwischen zwei Fäden geteilt)[7] und ein einheitliches 512-Eingang-L2 TLB für 4 KIB-Seiten,[8] beide 4-Wege-assoziativ.[9]
Einige TLBs haben möglicherweise separate Abschnitte für kleine Seiten und riesige Seiten.
TLB-MISS-Handling
In modernen Architekturen befinden sich häufig zwei Programme zum Umgang mit TLB -Fehlern:
- Mit der Hardware -TLB -Verwaltung geht die CPU automatisch zu Seitentabellen (Verwendung der CR3 Registrieren Sie sich auf x86Zum Beispiel) um festzustellen, ob es einen gültigen Eintrag für Seitentabelle für die angegebene virtuelle Adresse gibt. Wenn ein Eintrag vorhanden ist, wird er in die TLB gebracht und der TLB -Zugriff wird wiedergegeben: Diesmal wird der Zugriff getroffen, und das Programm kann normal fortgesetzt werden. Wenn die CPU in den Seitentabellen keinen gültigen Eintrag für die virtuelle Adresse findet, erhöht sie a Seitenfehler Ausnahmewas die Betriebssystem muss umgehen. Bei der Handhabung von Seitenfehlern wird normalerweise die angeforderten Daten in den physischen Speicher eingerichtet, ein Eintragstabelle eingerichtet, um die fehlerhafte virtuelle Adresse der richtigen physischen Adresse zuzuordnen und das Programm wieder aufzunehmen. Mit einer Hardware-verwalteten TLB ist das Format der TLB-Einträge für Software nicht sichtbar und kann von CPU zu CPU wechseln, ohne den Verlust der Kompatibilität für die Programme zu verursachen.
- Mit Software-verwalteten TLBs erzeugt ein TLB-Miss a TLB Miss Ausnahme- und Betriebssystemcode ist für das Gehen der Seitentabellen und die Durchführung der Übersetzung in Software verantwortlich. Das Betriebssystem lädt dann die Übersetzung in die TLB und startet das Programm aus der Anweisung, die die TLB -Fehlern verursacht hat. Wie bei der Hardware -TLB -Verwaltung ist ein Seitenfehler aufgetreten, wenn das Betriebssystem keine gültige Übersetzung findet, und das Betriebssystem muss sie entsprechend verarbeiten. Anweisungssätze von CPUs mit Software-verwaltetem TLBs haben Anweisungen, mit denen Einträge in den TLB geladen werden können. Das Format des TLB -Eintrags ist als Teil der Anweisungs -Architektur (ISA) definiert.[10]
Das MIPS -Architektur Gibt eine software verwaltete TLB an;[11] das SPARC V9 Die Architektur ermöglicht eine Implementierung von SPARC V9 kann keine MMU, eine MMU mit einem Software-verwalteten TLB oder eine MMU mit einem Hardware-verwalteten TLB haben.[12] und die Ultrasparc Architecture 2005 gibt einen software verwalteten TLB an.[13]
Das Itanium Die Architektur bietet die Möglichkeit, entweder Software- oder Hardware-verwaltete TLBs zu verwenden.[14]
Das Alpha Die TLB der Architektur wird in verwaltet Palcodeeher als im Betriebssystem. Da der Palcode für einen Prozessor prozessorspezifisch und operatives Systemspezifisch sein kann, können verschiedene Versionen von Palcode verschiedene Seiten-Tisch-Formate für verschiedene Betriebssysteme implementieren, ohne dass das TLB-Format und die Anweisungen zur Steuerung des TLB erforderlich sind , durch die Architektur angegeben werden.[15]
Typisch TLB
Dies sind typische Leistungsstufen eines TLB:[16]
- Größe: 12 Bit - 4.096 Einträge
- Trefferzeit: 0,5 - 1 Taktzyklus
- Fräuleinstrafe: 10 - 100 Taktzyklen
- Fehlrate: 0,01 - 1% (20–40% für spärliche/graphische Anwendungen)
Die durchschnittliche effektive Speicherzyklusrate wird definiert als Zyklen, wo ist die Anzahl der Zyklen, die für einen Speicher gelesen werden müssen, ist der Fehlsatz und ist die Trefferzeit in Zyklen. Wenn ein TLB -Treffer 1 Taktzyklus benötigt, ein Fehlgang benötigt 30 Taktzyklen, ein Speicherlesen dauert 30 Taktzyklen und die Fehlrate ist 1%, die effektive Speicherzyklusrate beträgt durchschnittlich von durchschnittlich (31.29 Taktzyklen pro Speicherzugriff).[17]
Adressraumschalter
Auf einem Adressraumschalter, wie es auftritt, wenn Kontextumschaltung Zwischen Prozessen (aber nicht zwischen Threads) können einige TLB-Einträge ungültig werden, da die virtuelle zu physische Zuordnung unterschiedlich ist. Die einfachste Strategie, damit dies umzugehen, besteht darin, die TLB vollständig zu spülen. Dies bedeutet, dass der TLB nach einem Schalter leer ist und irgendein Speicherreferenz wird ein Miss sein, daher wird es einige Zeit dauern, bis die Dinge mit voller Geschwindigkeit zurücklaufen. Neuere CPUs verwenden effektivere Strategien, für die ein Eintrag vorhanden ist. Dies bedeutet, dass, wenn ein zweiter Prozess nur für kurze Zeit ausgeführt wird und zu einem ersten Prozess zurückspringt, der TLB möglicherweise weiterhin gültige Einträge hat und sich die Zeit speichert, um sie neu zu laden.[18]
Andere Strategien vermeiden es, das TLB auf einem Kontextschalter zu spülen: (a) a einzelner Adressraum Betriebssystem Verwendet die gleiche virtuelle zu physische Zuordnung für alle Prozesse. (b) Einige CPUs verfügen über ein Prozess -ID -Register, und die Hardware verwendet TLB -Einträge nur, wenn sie mit der aktuellen Prozess -ID übereinstimmen.
Zum Beispiel in der Alpha 21264Jeder TLB -Eintrag ist mit einem markiert Adressraumnummer (ASN) und nur TLB -Einträge mit einem ASN, der mit der aktuellen Aufgabe übereinstimmt, werden als gültig angesehen. Ein weiteres Beispiel in der Intel Pentium Pro, die Seite Global Enable (PGE) im Register CR4 und das globale (g) Flag eines Seitenverzeichnis- oder Seitentabelleneintrags kann verwendet werden, um zu verhindern, dass häufig verwendete Seiten automatisch in den TLBs eines Aufgabenschalters oder einer Last Register-CR3 ungültig sind. Seit dem Jahr 2010 Westmere -Mikroarchitektur Intel 64 Prozessoren unterstützen auch 12-Bit Prozess-Kontext-Identifikatoren (PCIDs), die es ermöglichen, TLB-Einträge für mehrere lineare Bereichen zu erhalten, wobei nur diejenigen, die dem aktuellen PCID übereinstimmen, für die Adressübersetzung verwendet werden.[19][20]
Während das selektive Flushing der TLB eine Option in software verwalteten TLBs ist, ist die einzige Option in einigen Hardware-TLBs (z. B. das TLB in der Intel 80386) Ist das vollständige Spülen des TLB auf einem Adressraumschalter. Andere Hardware -TLBs (zum Beispiel das TLB in der Intel 80486 und später x86 -Prozessoren und der TLB in ARM Prozessoren) das Spülen einzelner Einträge aus der durch virtuellen Adresse indizierten TLB indexiert.
Das Spülen des TLB kann ein wichtiger Sicherheitsmechanismus für die Speicherisolierung zwischen Prozessen sein, um sicherzustellen, dass ein Prozess auf Speicher auf Speicherseiten eines anderen Prozesses nicht zugreifen kann. Die Speicherisolierung ist besonders kritisch bei Schaltern zwischen dem privilegierten Betriebssystem -Kernelprozess und dem Benutzerprozesse - wie der von der hervorgehoben wurde Kernschmelze Sicherheitsanfälligkeit. Minderungsstrategien wie z. Kernel-Page-Table-Isolation (KPTI) Verlassen Sie sich stark auf leistungswirksame TLB-Flushes und profitieren stark von hardware-fähigen selektiven TLB-Einstiegsmanagement wie PCID.[21]
Virtualisierung und x86 TLB
Mit dem Aufkommen der Virtualisierung für die Serverkonsolidierung hat sich viel Mühe gemacht, die X86 -Architektur zu vereinfachen und eine bessere Leistung von virtuellen Maschinen auf X86 -Hardware zu gewährleisten.[22][23]
Normalerweise sind Einträge in den x86 TLBs nicht mit einem bestimmten Adressraum verbunden. Sie verweisen implizit auf den aktuellen Adressraum. Jedes Mal, wenn sich der Adressraum wie einen Kontextschalter verändert, muss der gesamte TLB gespült werden. Wenn Sie ein Tag beibehalten, das jeden TLB -Eintrag mit einem Adressraum in der Software assoziiert und dieses Tag während der TLB -Lookup und TLB -Flush verglichen wird, ist es sehr teuer, zumal der X86 -TLB so ausgelegt ist, dass er mit sehr geringer Latenz und vollständig in Hardware funktioniert. Im Jahr 2008 beide Intel (Nehalem)[24] und AMD (SVM)[25] Halten Sie Tags als Teil des TLB -Eintrags und dedizierter Hardware eingeführt, die das Tag während der Suche überprüft. Auch wenn diese nicht vollständig ausgebeutet werden[Benötigt Update?], es ist vorgesehen[von wem?] das in der Zukunft[wenn?]Diese Tags identifizieren den Adressraum, zu dem jeder TLB -Eintrag gehört. Ein Kontextschalter führt daher nicht zum Spülen des TLB - sondern nur das Tag des aktuellen Adressraums in das Tag des Adressraums der neuen Aufgabe.
Siehe auch
Verweise
- ^ Arpaci-Dusseau, Remzi H.; Arpaci-Dusseau, Andrea C. (2014), Betriebssysteme: Drei einfache Stücke [Kapitel: schnellere Übersetzungen (TLBs)] (PDF), Arpaci-Dusseau-Bücher
- ^ S. Peter Lied; Marvin Denman; Joe Chang (1994). "Der PowerPC 604 RISC -Mikroprozessor" (PDF). IEEE MICRO.
- ^ Silberschatz, Galvin, Gagne, Abraham, Peter B., Greg (2009). Betriebssystemkonzepte. Vereinigte Staaten von Amerika: John Wiley & Sons. Inc. ISBN 978-0-470-12872-5.
{{}}
: Cs1 montiert: Mehrfachnamen: Autorenliste (Link) - ^ Chen, J. Bradley; Borg, Anita; Jouppi, Norman P. (1992). "Eine simulationsbasierte Studie zur TLB -Leistung". Sigarch Computer Architecture News. 20 (2): 114–123. doi:10.1145/146628.139708.
- ^ Stallings, William (2014). Betriebssysteme: Interna und Designprinzipien. Vereinigte Staaten von Amerika: Pearson. ISBN 978-0133805918.
- ^ Solihin, Yan (2016). Grundlagen der parallelen Multicore -Architektur. Boca Raton, FL: Taylor & Francis Group. ISBN 978-0-9841630-0-7.
- ^ "Innerhalb Nehalem: Intels zukünftiger Prozessor und System". Technologien der realen Welt.
- ^ "Intel Core i7 (Nehalem): Architektur von AMD?". Toms Hardware.14. Oktober 2008. Abgerufen 24. November 2010.
- ^ "Innerhalb Nehalem: Intels zukünftiger Prozessor und System". Technologien der realen Welt. Abgerufen 24. November 2010.
- ^ J. Smith und R. Nair. Virtuelle Maschinen: Vielseitige Plattformen für Systeme und Prozesse (die Morgan Kaufmann -Serie in Computerarchitektur und Design). Morgan Kaufmann Publishers Inc., 2005.
- ^ Welsh, Matt. "MIPS R2000/R3000 Architektur". Archiviert von das Original am 14. Oktober 2008. Abgerufen 16. November 2008.
Wenn kein passender TLB -Eintrag gefunden wird, tritt eine TLB -Miss -Ausnahme auf
- ^ Sparc International, Inc. Das SPARC Architecture Manual, Version 9. PTR Prentice Hall.
- ^ Sun Microsystems. Ultrasparc Architecture 2005. Entwurf D0.9.2, 19. Juni 2008. Sun Microsystems.
- ^ Virtueller Speicher im IA-64-Kernel> Übersetzungs-Lookaside-Puffer.
- ^ Compaq Computer Corporation. Alpha Architekturhandbuch (PDF). Version 4. Compaq Computer Corporation.
- ^ David A. Patterson; John L. Hennessy (2009). Computerorganisation und Design. Hardware/Software -Schnittstelle. 4. Auflage. Burlington, MA 01803, USA: Morgan Kaufmann Publishers. p. 503. ISBN 978-0-12-374493-7.
{{}}
: CS1 Wartung: Standort (Link) - ^ "Übersetzungs -Lookaside -Puffer (TLB) in Paging". Geeksforgeeks. 26. Februar 2019. Abgerufen 10. Februar 2021.
- ^ Ulrich Drepper (9. Oktober 2014). "Speicher Teil 3: Virtueller Speicher". Lwn.net.
- ^ David Kanter (17. März 2010). "Westmere kommt an". Real World Tech. Abgerufen 6. Januar 2018.
- ^ Intel Corporation (2017). "4.10.1 Prozesskontextidentifikatoren (PCIDs)". Intel 64 und IA-32 Architektures-Softwareentwicklerhandbuch (PDF). Vol. 3A: Systemprogrammierhandbuch, Teil 1.
- ^ Gil Tene (8. Januar 2018). "PCID ist jetzt eine kritische Leistung/Sicherheitsfunktion auf X86". Abgerufen 23. März 2018.
- ^ D. Abramson, J. Jackson, S. Muthrasanallur, G. Neiger, G. Regnier, R. Sankaran, I. Schoinas, R. Uhlig, B. Vembu und J. Wiegert. Intel Virtualisierungstechnologie für gerichtete I/O. Intel Technology Journal, 10 (03): 179–192.
- ^ Moderne Mikrogeräte. AMD Secure Virtual Machine Architecture Referenzhandbuch. Advanced Micro Devices, 2008.
- ^ G. Neiger, A. Santoni, F. Leung, D. Rodgers und R. Uhlig. Intel Virtualisierungstechnologie: Hardware -Unterstützung für eine effiziente Prozessorvirtualisierung. Intel Technology Journal, 10 (3).
- ^ Moderne Mikrogeräte. AMD Sichere virtuelle Maschine Architekturreferenzhandbuch. Advanced Micro Devices, 2008.