X86-64

AMD Opteron, die erste CPU, die die X86-64-Erweiterungen im April 2003 einführt
Der fünfbändige Satz der X86-64 Architekturprogrammierhandbuch, wie von AMD im Jahr 2002 veröffentlicht und verteilt

x86-64 (auch bekannt als x64, x86_64, AMD64, und Intel 64)[Anmerkung 1] ist ein 64-Bit Version des x86 BefehlssatzErstmal Paging Modus.

Mit dem 64-Bit-Modus und dem neuen Paging-Modus unterstützt er weitaus größere Mengen von virtueller Speicher und physikalischer Speicher als möglich bei seinen 32-Bit-Vorgängern, sodass Programme größere Datenmengen im Speicher speichern können. X86-64 erweitert sich ebenfalls allgemeine Register bis 64-Bit und erweitert die Anzahl von 8 (von denen einige nur begrenzte oder feste Funktionen hatten, z. B. für das Stapelmanagement) auf 16 (voll allgemein) und liefert zahlreiche andere Verbesserungen. Schwimmende Punktarithmetik wird durch obligatorische Weise unterstützt SSE2-ähnliche Anweisungen und x87/MMX Stilregister werden im Allgemeinen nicht verwendet (aber auch im 64-Bit-Modus verfügbar); Stattdessen ein Satz von 16 VektorregisterJeweils 128 Bit werden verwendet. (Jedes Register kann ein oder zwei speichern Doppelte Genauigkeit Zahlen oder ein bis vier mit einfacher Genauigkeit Zahlen oder verschiedene Ganzzahlformate.) Im 64-Bit-Modus werden Anweisungen geändert, um 64-Bit zu unterstützen Operanden und 64-Bit Adressierungsmodus.

Der in der Architektur definierte Kompatibilitätsmodus ermöglicht 16 und 32-Bit Benutzeranwendungen Um nicht modifiziert zu werden, existieren Sie mit 64-Bit-Anwendungen, wenn das 64-Bit-Betriebssystem sie unterstützt.[11][Anmerkung 2] Da die vollständigen X86 16-Bit- und 32-Bit Ausführbare kann mit wenig oder ohne Leistungsstrafe laufen,[13] Neuere oder geänderte Anwendungen können neue Funktionen des Prozessordesigns nutzen, um Leistungsverbesserungen zu erzielen. Auch ein Prozessor, der X86-64 unterstützt Realer Modus für voll Rückwärtskompatibilität mit dem 8086, als X86 -Prozessoren unterstützen Sicherheitsmodus seit dem getan haben 80286.

Die ursprüngliche Spezifikation, erstellt von durch AMD und im Jahr 2000 veröffentlicht, wurde von AMD implementiert, Intel, und ÜBER. Das AMD K8 Mikroarchitektur, in dem Opteron und Athlon 64 Prozessoren waren die ersten, die es implementierten. Dies war die erste bedeutende Ergänzung zur x86 Architektur, die von einem anderen Unternehmen als Intel entworfen wurden. Intel war gezwungen, dem Beispiel zu folgen, und führte eine modifizierte Einführung vor NetBurst Familie, die mit der Spezifikation von AMD softwarekompatibel war. Über Technologien eingeführte x86-64 in ihre Via isaiah Architecture mit dem Über Nano.

Die X86-64-Architektur unterscheidet sich von der Intel Itanium Architektur (früher IA-64). Die Architekturen sind auf dem nativen Befehlssatz nicht kompatibel, und Betriebssysteme und Anwendungen, die für den einen zusammengestellt werden, können auf dem anderen nicht ausgeführt werden.

AMD64

AMD64 Logo

Geschichte

AMD64 (auch unterschiedlich erwähnt von AMD In ihrer Literatur und Dokumentation als „AMD 64-Bit-Technologie“ und „AMD X86-64-Architektur“) wurde als Alternative zum radikal anderen erstellt IA-64 Architektur entworfen von Intel und Hewlett Packard, was war rückwärts-inkompatibel mit IA-32die 32-Bit-Version der x86 die Architektur. Ursprünglich 1999 angekündigt[14] mit einer vollständigen Spezifikation im August 2000,[15] Die AMD64 -Architektur wurde von Anfang an von AMD als evolutionäre Methode zum Hinzufügen positioniert 64-Bit-Computing Funktionen zur bestehenden X86-Architektur und unterstützen Sie das Legacy 32-Bit X86 Codeim Gegensatz zu Intels Ansatz, eine völlig neue 64-Bit-Architektur mit IA-64 zu schaffen.

Der erste AMD64-basierte Prozessor, der Opteron, wurde im April 2003 veröffentlicht.

Implementierungen

Zu den Prozessoren von AMD, die die AMD64 -Architektur implementieren Opteron, Athlon 64, Athlon 64 x2, Athlon 64 fx, Athlon II (gefolgt von "x2", "x3" oder "x4", um die Anzahl der Kerne und XLT -Modelle anzuzeigen). Turion 64, Turion 64 x2, Sempron ("Palermo" E6 Stepping und alle "Manila" -Modelle),), Phänomen (gefolgt von "x3" oder "x4", um die Anzahl der Kerne anzuzeigen), Phenom II (gefolgt von "x2", "x3", "x4" oder "x6", um die Anzahl der Kerne anzuzeigen), Fx, Fusion/APU und Ryzen/EPYC.

Architektonische Besonderheiten

Das primäre definierende Merkmal von AMD64 ist die Verfügbarkeit von 64-Bit-Allzweck Prozessorregister (zum Beispiel, Rax), 64-Bit ganze Zahl arithmetische und logische Operationen und 64-Bit Virtuelle Adressen. Die Designer nutzten die Gelegenheit, auch andere Verbesserungen vorzunehmen.

Bemerkenswerte Änderungen in den 64-Bit-Erweiterungen umfassen:

64-Bit-Ganzzahlfunktion
Alle allgemeine Register (GPRS) werden von 32 erweitertBits Zu 64 Bits und alle arithmetischen und logischen Operationen können Speicher-zu-Register- und Register-zu-Memory-Vorgänge usw. direkt auf 64-Bit-Ganzzahlen arbeiten. Drückt und knallt auf der Stapel Standard zu 8-Byte-Schritten, und Zeiger sind 8 Bytes breit.
Zusätzliche Register
Zusätzlich zur Erhöhung der Größe der allgemeinen Register wird die Anzahl der genannten allgemeinen Register von acht erhöht (d. H. eax, ECX, EDX, ebx, Esp, ebp, Esi, EDI) in x86 bis 16 (d.h. Rax, RCX, RDX, RBX, RSP, RBP, RSI, RDI, R8, R9, R10, R11, R12, R13, R14, R15). Es ist daher möglich, mehr lokale Variablen in Registern als auf dem Stapel zu halten und Register häufig zugänglich zu machen. Argumente für kleine und schnelle Unterprogramme können auch in Registern in größerem Maße verabschiedet werden.
AMD64 hat immer noch weniger Register als viele RISC Anweisungssätze (z.B. Pa-risc, Macht ISA, und MIPS habe 32 GPRs; Alpha, 64-Bit-Arm, und Sparc haben 31) oder VLIW-ähnliche Maschinen wie die IA-64 (was 128 Register hat). Eine AMD64 -Implementierung kann jedoch weitaus mehr interne Register haben als die Anzahl der Architekturregister, die vom Anweisungssatz ausgesetzt sind (siehe Umbenennen registrieren). (Zum Beispiel haben AMD-Zen-Kerne 168 64-Bit-Ganzzahl- und 160 128-Bit-Vektor-Floating-Punkt-physikalische interne Register.)
Zusätzliche XMM (SSE) Register
In ähnlicher Weise die Anzahl der 128-Bit-XMM-Register (verwendet für Streaming Simd Anweisungen) wird ebenfalls von 8 auf 16 erhöht.
Der herkömmliche X87-FPU-Registerstapel ist im 64-Bit-Modus nicht in der Registerdateigrößenerweiterung enthalten, verglichen mit den von SSE2 verwendeten XMM-Registern, die erweitert wurden. Das x87 Register Stack ist keine einfache Registerdatei, obwohl er den direkten Zugriff auf einzelne Register durch kostengünstige Austauschvorgänge ermöglicht.
Größerer virtueller Adressraum
Die AMD64-Architektur definiert ein virtuelles 64-Bit-Adressformat, von dem die 48 Bit mit niedriger Ordnung in aktuellen Implementierungen verwendet werden.[11]: 120 Dies ermöglicht bis zu 256Tib (248 Bytes) des virtuellen Adressraums. Die Architekturdefinition ermöglicht es, dass diese Grenze in zukünftigen Implementierungen auf die vollständigen 64 Bit angehoben wird.[11]: 2: 3: 13: 117: 120 Erweitern Sie den virtuellen Adressraum auf 16EIB (264 Bytes).[16] Dies ist nur 4 verglichenGib (232 Bytes) für den x86.[17]
Dies bedeutet, dass sehr große Dateien durch betätigt werden können Kartierung Die gesamte Datei in den Adressraum des Prozesses (der oft viel schneller ist als mit Datei -Lese-/Schreibaufrufen), anstatt Regionen der Datei in und aus dem Adressraum zu kartieren.
Größerer physischer Adressraum
Die ursprüngliche Implementierung der AMD64-Architektur implementierte 40-Bit physische Adressen und so könnte sich bis zu 1 TIB (2) ansprechen40 Bytes) von Ram.[11]: 24 Aktuelle Implementierungen der AMD64 -Architektur (beginnend ab AMD 10H Mikroarchitektur) Erweitern Sie dies auf 48-Bit-physische Adressen[18] und können daher bis zu 256 TIB (248 Bytes) von Ram. Die Architektur erlaubt es, dies in Zukunft auf 52 Bit zu verlängern[11]: 24[19] (begrenzt durch das Seitentabelleneintragsformat);[11]: 131 Dies würde eine Ansprache von bis zu 4 Pib RAM ermöglichen. Zum Vergleich sind 32-Bit-X86-Prozessoren auf 64 Gib RAM in begrenzt Erweiterung der physischen Adresse (PAE) Modus,[20] oder 4 Gib RAM ohne PAE -Modus.[11]: 4
Größerer physischer Adressraum im Legacy -Modus
Beim Betrieb in Legacy -Modus Die AMD64 -Architektur unterstützt Erweiterung der physischen Adresse (PAE) -Modus, ebenso wie die meisten aktuellen X86 -Prozessoren, aber AMD64 erweitert PAE von 36 Bits bis zu einer architektonischen Grenze von 52 Bits physischer Adresse. Jede Implementierung ermöglicht daher dieselbe physische Adressgrenze wie unter langer Modus.[11]: 24
Anweisungszeiger Relativer Datenzugriff
Anweisungen können nun auf Daten in Bezug auf den Befehlszeiger (RIP -Register) verweisen. Das macht Positionsunabhängiger Code, wie oft verwendet wird gemeinsame Bibliotheken und Code zur Laufzeit geladen, effizienter.
SSE -Anweisungen
Die ursprüngliche AMD64 -Architektur übernahm Intel's Sse und SSE2 als Kernanweisungen. Diese Anweisungssätze bieten eine Vektor -Ergänzung zum Skalar x87 FPU für die Datentypen für Einzelprezision und doppelte Präzision. SSE2 bietet auch ganzzahlige Vektoroperationen für Datentypen von 8 -Bit bis 64 -Bit -Präzision. Dies macht die Vektorfunktionen der Architektur mit denen der fortschrittlichsten X86 -Prozessoren ihrer Zeit gleich. Diese Anweisungen können auch im 32-Bit-Modus verwendet werden. Die Proliferation von 64-Bit-Prozessoren hat diese Vektorfähigkeiten in häuslichen Computern allgegenwärtig gemacht, was die Verbesserung der Standards von 32-Bit-Anwendungen ermöglicht. Die 32-Bit-Ausgabe von Windows 8 erfordert beispielsweise das Vorhandensein von SSE2-Anweisungen.[21] SSE3 Anweisungen und später Streaming -SIMD -Erweiterungen Anweisungssätze sind keine Standardmerkmale der Architektur.
No-Execute Bit
Das no-execute-Bit oder Nx bit (Bit 63 des Page Table -Eintrags) Ermöglicht dem Betriebssystem, anzugeben, welche Seiten des virtuellen Adressraums ausführbarer Code enthalten können und welche nicht. Ein Versuch, Code aus einer Seite mit dem Tag "No Execute" auszuführen, führt zu einer Verstöße gegen den Speicherzugriff, ähnlich wie ein Versuch, auf eine schreibgeschützte Seite zu schreiben. Dies sollte es für böswilligen Code schwieriger machen, die Kontrolle über das System durch zu übernehmen. "Pufferüberlauf"oder" deaktivierte Puffer "-Angriffe. Eine ähnliche Funktion ist seit der X86 -Prozessoren erhältlich 80286 als Attribut von Segmentdeskriptoren; Dies funktioniert jedoch jeweils nur in einem gesamten Segment.
Segmentierte Adressierung wurde seit langem als veraltete Betriebsmodus angesehen, und alle aktuellen PC-Betriebssysteme umgehen sie, wobei alle Segmente auf eine Basisadresse von Null und (in ihrer 32-Bit-Implementierung) eine Größe von 4 Gib festgelegt werden. AMD war der erste X86-Familienanbieter, der im linearen Adressierungsmodus ohne Execute implementiert wurde. Die Funktion ist auch im Legacy -Modus für AMD64 -Prozessoren und aktuelle Intel X86 -Prozessoren erhältlich, wenn PAE verwendet wird.
Entfernen älterer Merkmale
Einige "Systemprogrammierungen" der X86-Architektur wurden entweder in modernen Betriebssystemen unbenutzt oder nicht genutzt und sind entweder in AMD64 im langen Modus (64-Bit- und Kompatibilität) nicht verfügbar oder existieren nur in begrenzter Form. Dazu gehören segmentierte Adressierung (obwohl die FS- und GS-Segmente in Überrestform für die Verwendung als zusätzliche Basiszeiger auf Betriebssystemstrukturen aufbewahrt werden),[11]: 70 das Aufgabenstatusschalter Mechanismus und Virtueller 8086 -Modus. Diese Funktionen bleiben im "Legacy-Modus" vollständig implementiert, sodass diese Prozessoren 32-Bit- und 16-Bit-Betriebssysteme ohne Änderungen ausführen können. Einige Anweisungen, die sich als selten nützlich erwiesen haben, werden im 64-Bit-Modus nicht unterstützt, einschließlich des Speicherns/Wiederherstellens von Segmentregistern auf dem Stapel, Speichern/Wiederherstellen aller Register (Pusha/Popa), Dezimalarithmetik, gebunden und in Anweisungen und " weit "Sprünge und Anrufe mit sofortigen Operanden.

Virtuelle Adressraumdetails

Kanonische Form Adressen

Kanonische Adressraumimplementierungen (Diagramme nicht skalieren)
Aktuelle 48-Bit-Implementierung
57-Bit-Implementierung
64-Bit-Implementierung

Obwohl die virtuellen Adressen im 64-Bit-Modus 64 Bit breit sind64 Bytes (16EIB) verwendet werden. Dies wäre ungefähr vier Milliarden Mal die Größe des virtuellen Adressraums auf 32-Bit-Maschinen. Die meisten Betriebssysteme und Anwendungen benötigen auf absehbare Zeit keinen so großen Adressraum. Daher würde die Implementierung solcher breiten virtuellen Adressen einfach die Komplexität und die Kosten der Adressübersetzung ohne wirklichen Nutzen erhöhen. AMD entschied daher, dass in den ersten Implementierungen der Architektur nur die am wenigsten signifikanten 48 Bit einer virtuellen Adresse in der Adressübersetzung verwendet werden (in der Adressübersetzung (Seitentabelle Sieh nach oben).[11]: 120

Darüber hinaus erfordert die AMD -Spezifikation, dass die wichtigsten 16 Bits jeder virtuellen Adresse, die Bits 48 bis 63, Kopien von Bit 47 sein müssen (in einer Weise ähnlich wie Zeichenerweiterung). Wenn diese Anforderung nicht erfüllt ist, wird der Prozessor eine Ausnahme ansprechen.[11]: 131 Adressen, die diese Regel einhalten, werden als "kanonische Form" bezeichnet.[11]: 130 Kanonische Form Adressen werden von 0 bis 00007FFFFFFFFFFF und von FFFFF8000'00000000 über Fffffffff'ffffffff für insgesamt 256 betriebenTib nutzbarer virtueller Adressraum. Dies ist immer noch 65.536-mal größer als der virtuelle 4-Gib-Adressraum von 32-Bit-Maschinen.

Diese Funktion erleichtert die spätere Skalierbarkeit der echten 64-Bit-Adressierung. Viele Betriebssysteme (einschließlich, aber nicht beschränkt auf die Windows NT Familie) Nehmen Sie die höheradressene Hälfte des Adressraums (benannt Kernelraum) für sich selbst und hinterlassen Sie die niedrigere Hälfte (Benutzerraum) für Anwendungscode, Benutzermodus -Stapel, Haufen und andere Datenregionen.[22] Das Design "Canonical Address" stellt sicher, dass jede AMD64 -konforme Implementierung zwei Speicherhälften hat: Die untere Hälfte beginnt bei 00000000000000 und "wächst nach oben", wenn mehr virtuelle Adressbits verfügbar sind, während die höhere Hälfte "angedockt" ist ". oben im Adressraum und wächst nach unten. Durch die Durchsetzung der "kanonischen Form" von Adressen durch Überprüfung der nicht verwendeten Adressbits verhindert die Verwendung durch das Betriebssystem in Markierte Zeiger Als solche Flaggen, Privilegienmarkierungen usw. könnten als solche Verwendung problematisch werden, wenn die Architektur erweitert wird, um mehr virtuelle Adress -Bits zu implementieren.

Die ersten Versionen von Windows für X64 verwendeten nicht einmal die vollständige 256 TIB. Sie waren auf nur 8 TIB User Space und 8 Tib Kernel -Raum beschränkt.[22] Windows unterstützte den gesamten 48-Bit-Adressraum erst, bis Windows 8.1, das im Oktober 2013 veröffentlicht wurde.[22]

Seitentabellenstruktur

Der 64-Bit-Adressierungsmodus ("langer Modus") ist ein Superset von Erweiterungen der physischen Adresse (PAE); aus diesem Grund, Seite Größen können 4 seinKib (212 Bytes) oder 2MiB (221 Bytes).[11]: 120 Der lange Modus unterstützt auch Seitengrößen von 1Gib (230 Bytes).[11]: 120 Eher als der dreistufige Seitentabelle System, das von Systemen im PAE -Modus verwendet wird, Systeme laufen in langer Modus Verwenden Sie vier Ebenen der Seitentabelle: PAEs Page-Verzeichniszeigertabelle wird von vier Einträgen auf 512 und zusätzlich erweitert Page-Map Level 4 (PML4) Tabelle wird hinzugefügt, mit 512 Einträgen in 48-Bit-Implementierungen.[11]: 131 Eine vollständige Mapping-Hierarchie von 4 KIB-Seiten für den gesamten 48-Bit-Raum würde etwas mehr als 512 dauernGib des Gedächtnisses (ca. 0,195% des 256 TIB -virtuellen Raums).

Intel hat ein Schema mit a implementiert 5-Level-Seitentabelle, was es Intel 64-Prozessoren ermöglicht, einen virtuellen 57-Bit-Adressraum zu unterstützen.[23] Weitere Erweiterungen können einen vollständigen 64-Bit-virtuellen Adressraum und den physischen Speicher ermöglichen, indem die Einstiegsgröße der Seitentabelle auf 128-Bit erweitert wird und Seitenwanderungen in der 5-Stufen-Hierarchie reduzieren, indem sie eine größere 64-KIB-Seitenzuweisungsgröße verwenden, die noch 4 KIB unterstützt Seitenvorgänge für die Rückwärtskompatibilität.[24]

Betriebssystemgrenzen

Das Betriebssystem kann auch den virtuellen Adressraum einschränken. Einzelheiten, gegebenenfalls zutreffend, sind in der "angegeben"Betriebssystemkompatibilität und Eigenschaften" Sektion.

Physische Adressraumdetails

Aktuelle AMD64 -Prozessoren unterstützen einen physischen Adressraum von bis zu 248 Bytes von RAM oder 256Tib.[18] Ab 2020 jedochEs waren kein X86-64 bekannt Motherboards Das unterstützt 256 Tib von RAM.[25][26][27][28][Fehlgeschlagene Überprüfung] Das Betriebssystem kann zusätzliche Grenzen für die Menge an RAM festlegen, die nutzbar oder unterstützt werden kann. Details zu diesem Punkt finden Sie in ""Betriebssystemkompatibilität und Eigenschaften"Abschnitt dieses Artikels.

Betriebsmodi

Die Architektur verfügt über zwei Hauptbetriebsmodi: Long -Modus und Legacy -Modus.

Betriebs Betriebssystem erforderlich Art des Codes ausgeführt Größe (in Bits) Anzahl von allgemeine Register
Modus Untermodus Adressen Operanden (Standard in Kursivschrift))
Langer Modus 64-Bit-Modus 64-Bit OS, 64-Bit Uefi Firmware oder die beiden vorherigen interagieren über die UEFI-Schnittstelle einer 64-Bit-Firmware 64-Bit 64 8, 16, 32, 64 16
Kompatibilitätsmodus Bootloader oder 64-Bit-Betriebssystem 32-Bit 32 8, 16, 32 8
16-Bit-geschützter Modus 16 8,, 16, 32 8
Legacy -Modus Sicherheitsmodus Bootloader, 32-Bit-Betriebssystem, 32-Bit-UEFI-Firmware oder die beiden letzteren, die über die UEFI-Schnittstelle der Firmware interagieren 32-Bit 32 8, 16, 32 8
16-Bit-Schutzmodus OS 16-Bit-geschützter Modus 16 8,, 16, 32[M 1] 8
Virtueller 8086 -Modus 16-Bit-Schutzmodus oder 32-Bit-Betriebssystem Teilmenge von Realer Modus 16 8,, 16, 32[M 1] 8
Unwirklicher Modus Bootloader oder reales Modus -Betriebssystem Realer Modus 16, 20, 32 8,, 16, 32[M 1] 8
Realer Modus Bootloader, Real Mode OS oder eine OS -Schnittstelle mit einer Firmware BIOS Schnittstelle[29] Realer Modus 16, 20, 21 8,, 16, 32[M 1] 8
  1. ^ a b c d Beachten Sie, dass der 16-Bit-Code, der für den 80286 und unten geschrieben wurde, nicht 32-Bit-Operand-Anweisungen verwendet. Der Code für das 80386 und höher kann das Operand-Size-Override-Präfix (0x66) verwenden. Normalerweise wird dieses Präfix vom geschützten und langen Modus-Code verwendet, um 16-Bit-Operanden zu verwenden, da dieser Code in einem Codesegment mit einer Standardoperandengröße von 32 Bit ausgeführt wird. Im realen Modus beträgt die Standardoperandengröße 16 Bit, so dass das Präfix 0x66 unterschiedlich interpretiert wird und die Operandengröße auf 32 Bit ändert.
Zustandsdiagramm der X86-64-Betriebsmodi

Langer Modus

Der lange Modus ist der beabsichtigte primäre Betriebsmodus der Architektur. Es handelt sich um eine Kombination aus dem nativen 64-Bit-Modus des Prozessors und einem kombinierten 32-Bit- und 16-Bit-Kompatibilitätsmodus. Es wird von 64-Bit-Betriebssystemen verwendet. Unter einem 64-Bit-Betriebssystem werden 64-Bit Zeit) im Kompatibilitätsmodus laufen. Real-Mode-Programme und -Programme, die jederzeit den virtuellen 8086-Modus verwenden, kann nicht im langen Modus ausgeführt werden, es sei denn, diese Modi werden in der Software emuliert.[11]: 11 Solche Programme können jedoch von einem Betriebssystem gestartet werden, der im langen Modus auf den unterstützenden Prozessoren ausgeführt wird VT-X oder AMD-V Durch Erstellen eines virtuellen Prozessors im gewünschten Modus.

Seit der Basis Befehlssatz ist dasselbe, es gibt fast keine Leistungsstrafe für die Ausführung des geschützten Modus x86 -Code. Dies ist anders als Intels IA-64, wo Unterschiede im zugrunde liegenden Befehlssatz bedeuten, dass der 32-Bit-Code entweder in der Emulation von x86 (den Prozess langsamer) oder mit einem dedizierten x86-Coprozessor durchgeführt werden muss. Auf der X86-64-Plattform könnten jedoch viele X86-Anwendungen von einem 64-Bit profitieren neu kompilieren, aufgrund der zusätzlichen Register in 64-Bit-Code und garantierter SSE2-basierter FPU-Unterstützung, die a Compiler kann zur Optimierung verwendet werden. Anwendungen, die regelmäßig Ganzzahlen verarbeiten als 32 Bit, wie z. B. kryptografische Algorithmen, benötigen jedoch eine Umschreibung des Code-Umgangs mit den riesigen ganzen Zahlen, um die 64-Bit-Register zu nutzen.

Legacy -Modus

Der Legacy -Modus ist der Modus, in dem sich der Prozessor befindet, wenn er sich nicht im langen Modus befindet.[11]: 14 In diesem Modus wirkt der Prozessor wie ein älterer X86-Prozessor, und es können nur 16-Bit- und 32-Bit-Code ausgeführt werden. Der Legacy -Modus ermöglicht maximal 32 Bit -virtuelle Adressierung, wodurch der virtuelle Adressraum auf 4 Gib einschränkt.[11]: 14: 24: 118 64-Bit-Programme können nicht aus dem Legacy-Modus ausgeführt werden.

Sicherheitsmodus

Sicherheitsmodus wird in einen Untermodus des Legacy -Modus verarbeitet.[11]: 14 Es ist der Untermodus, in dem 32-Bit-Betriebssysteme und der 16-Bit-Betriebsmodus-Betriebssystem beim Ausführen einer X86-64-CPU arbeiten.[11]: 14

Realer Modus

Realer Modus ist der anfängliche Betriebsmodus, wenn der Prozessor initialisiert wird, und ist ein Untermodus des Legacy -Modus. Es ist rückwärts kompatibel mit dem Original kompatibel Intel 8086 und Intel 8088 Prozessoren. Der reale Modus wird heute hauptsächlich von Betriebssystem -Bootloadern verwendet, die von der Architektur erforderlich sind, um zu konfigurieren Virtuelle Speicherdetails Vor dem Übergang zu höheren Modi. Dieser Modus wird auch von jedem Betriebssystem verwendet, das mit der Systemfirmware mit einer traditionellen Kommunikation kommunizieren muss BIOS-Stil -Schnittstelle.[29]

Intel 64

Intel 64 ist Intel Implementierung von x86-64, die in verschiedenen von Intel hergestellten Prozessoren verwendet und implementiert wird.

Geschichte

Historisch gesehen hat AMD Prozessoren mit Anweisungssätzen entwickelt und hergestellt, die nach Intels ursprünglichen Entwürfen gemustert wurden, aber mit x86-64 wurden die Rollen umgekehrt: Intel befand sich in der Position der Übernahme des IST EIN Diese AMD wurde als Erweiterung der X86 -Prozessorlinie von Intel erstellt.

Intels Projekt war ursprünglich Codenamen Yamhill[30] (nach dem Yamhill River in Oregons Willamette Valley). Nach mehreren Jahren der Ablehnung seiner Existenz kündigte Intel im Februar 2004 an Idf Dass das Projekt tatsächlich im Gange war. Intels Vorsitzender damals, Craig Barrettgab zu, dass dies einer ihrer schlimmsten Geheimnisse war.[31][32]

Der Name von Intel für diesen Befehlssatz hat sich mehrmals geändert. Der bei der IDF verwendete Name war Ct[33] (vermutlich[Originalforschung?] zum Clackamas -Technologie, ein weiterer Codename aus einem Oregon River); Innerhalb weniger Wochen bezeichneten sie es als IA-32E (zum IA-32 Erweiterungen) und im März 2004 den "offiziellen" Namen vorgestellt EM64T (Erweiterte Speicher 64 Technologie). Ende 2006 begann Intel stattdessen den Namen zu verwenden Intel 64 Für seine Implementierung paralleling AMDs Verwendung des Namens AMD64.[34]

Der erste Prozessor, der Intel 64 implementiert Xeon Code genannt Nocona Im Juni 2004. Im Gegensatz dazu haben die anfänglichen Prescott -Chips (Februar 2004) diese Funktion nicht ermöglicht. Intel begann anschließend mit dem Verkauf von Intel 64-fähiges Pentium 4s mit der E0-Revision des Prescott-Kerns, die auf dem OEM-Markt als Pentium 4, Modell F, verkauft wird Nx bit) zu Intel 64 und wurde in den damaligen aktuellen Xeon Code-genannt aufgenommen Irwindale. Intels offizieller Start von Intel 64 (zu diesem Zeitpunkt unter dem Namen EM64T) in Mainstream-Desktop-Prozessoren war der N0-Schritt-Prescott-2m.

Der erste Intel Mobiler Prozessor Die Implementierung von Intel 64 ist die Merom Version des Kern 2 Prozessor, der am 27. Juli 2006 veröffentlicht wurde. Keines der früheren Notebook -CPUs von Intel (Kernduo, Pentium m, Celeron m, Mobile Pentium 4) Intel 64 implementieren.

Implementierungen

Die Intel -Prozessoren, die die Intel64 -Architektur implementieren Pentium 4 F-Serie/5x1-Serie, 506 und 516, Celeron d Modelle 3x1, 3x6, 355, 347, 352, 360 und 365 und alle später Celerons, alle Modelle von Xeon seit "Nocona", alle Modelle von Pentium Dual-Core Prozessoren seit "Merom-2m", das Atom 230, 330, D410, D425, D510, D525, N450, N455, N470, N475, N550, N570, N2600 und N2800, alle Versionen der Versionen des Pentium d, Pentium Extreme Edition, Kern 2, Kern i9, Kern i7, Kern i5, und Kern i3 Prozessoren und die Xeon Phi 7200 Serienprozessoren.

Die X86-64-Implementierung von Viaces

Über Technologien stellte ihre erste Umsetzung der X86-64-Architektur im Jahr 2008 nach fünf Jahren Entwicklung durch ihre CPU-Division ein. Centaur -Technologie.[35] Codenamen "Isaiah", die 64-Bit-Architektur wurde am 24. Januar 2008 vorgestellt.[36] und am 29. Mai unter dem gestartet Über Nano Markenname.[37]

Der Prozessor unterstützt eine Reihe von über-spezifischen X86-Erweiterungen, die zur Steigerung der Effizienz bei Geräten mit geringer Leistung gestärkt werden. Es wird erwartet, dass die Jesaja -Architektur in ganzzahliger Leistung doppelt so schnell und viermal so schnell ist Schwimmpunkt Leistung als die vorherige Generation Über Esther in einem Äquivalent Taktfrequenz. Der Stromverbrauch wird auch voraussichtlich mit der vorherigen Generation über CPUs gleichgesetzt, mit Wärmekonstruktionskraft im Bereich von 5 W bis 25 W.[38] Als völlig neues Design wurde die Architektur Isaiah mit Unterstützung für Funktionen wie den X86-64-Befehlssatz und gebaut x86 Virtualisierung die für seine Vorgänger nicht verfügbar waren, die Via c7 Linie, während sie ihre Verschlüsselungserweiterungen beibehalten.

Mikroarchitekturstufen

Im Jahr 2020 wurden durch eine Zusammenarbeit zwischen AMD, Intel, Red Hat und Suse drei Microarchitekturstufen auf der X86-64-Grundlinie definiert: X86-64-V2, X86-64-V3 und X86-64-V4.[39][40] Diese Ebenen definieren spezifische Merkmale, die von Programmierern angezeigt werden können, um Optimierungen für Kompilierzeiten bereitzustellen. Die von jeder Ebene aufgedeckten Merkmale sind wie folgt:[41]

CPU -Mikroarchitekturstufen
Eben CPU -Funktionen Beispielanweisung
x86-64
(Grundlinie: Alle x86-64 CPUs)
CMOV CMOV
CX8 cmpxchg8b
FPU fld
FXSR fxsave
MMX emms
OSFXSR fxsave
Sce symall
Sse CVTSS2SI
SSE2 CVTPI2PD
x86-64-v2
(ca. 2009: Nehalem und Jaguar)

Ebenfalls:

Cmpxchg16b cmpxchg16b
Lahf-Sahf Lahf
Popcnt Popcnt
SSE3 AddSubpd
SSE4_1 Blendpd
SSE4_2 pcmpestri
SSSE3 Phaddd
x86-64-v3
(circa 2015: Haswell und Bagger)

Ebenfalls:

Avx vzeroall
AVX2 vpermd
BMI1 und n
BMI2 Bzhi
F16C VCVTPH2PS
Fma VFMADD132PD
Lzcnt lzcnt
Movbe Movbe
Osxsave xgetBV
x86-64-v4
(AVX-512Subset im Allgemeinen)
AVX512F KMOVW
AVX512BW vdbpsAdbw
AVX512CD vplzcntd
AVX512DQ vpmullq
AVX512VL n / A

Alle Ebenen enthalten Funktionen in den vorherigen Ebenen. Anweisungssatzerweiterungen, die sich nicht mit der allgemeinen Berechnung befassen, einschließlich der Berechnung Aes-ni und Rdrand, werden von den Niveausanforderungen ausgeschlossen.

Unterschiede zwischen AMD64 und Intel 64

Obwohl nahezu identisch, gibt es einige Unterschiede zwischen den beiden Befehlssätzen in der Semantik einiger selten verwendeter Maschinenanweisungen (oder Situationen), die hauptsächlich für verwendet werden Systemprogrammierung.[42] Compiler produzieren im Allgemeinen Ausführbare (d.h. Maschinensprache), Die Unterschiede vermeiden, zumindest für gewöhnlich Anwendungsprogramme. Dies ist daher hauptsächlich für Entwickler von Compilern, Betriebssystemen und ähnlichem von Interesse, die sich mit individuellen und speziellen Systemanweisungen befassen müssen.

Neuere Implementierungen

  • Intel 64s BSF und BSR Anweisungen wirken anders als AMD64, wenn die Quelle Null ist und die Operandengröße 32 Bit beträgt. Der Prozessor legt die Nullflagge fest und verlässt die oberen 32 Bit des Ziels undefiniert. Beachten Sie, dass Intel dokumentiert, dass das Zielregister in diesem Fall einen undefinierten Wert hat, in der Praxis im Silizium jedoch das gleiche Verhalten wie AMD (Ziel unmodifiziert) implementiert. Die separate Behauptung, dass es in den oberen 32 möglicherweise keine Bits erhalten kann, wurde nicht verifiziert, wurde aber nur für Core 2 und Skylake ausgeschlossen.[43] Nicht alle Intel-Mikroarchitekturen wie 64-Bit-Pentium 4 oder Atom mit geringer Leistung.
  • AMD64 benötigt ein anderes Microcode-Update-Format und ein Kontroll-MSRS (modellspezifische Register), während Intel 64 implementiert Mikrocode Aktualisieren Sie unverändert von nur 32-Bit-Prozessoren.
  • Intel 64 fehlt einige MSRs, die in AMD64 als architektonisch angesehen werden. Diese beinhalten SYSCFG, Top_mem, und Top_mem2.
  • Intel 64 erlaubt Symall/Syset Nur im 64-Bit-Modus (nicht im Kompatibilitätsmodus),[44] und erlaubt SYSENTER/Sysexit in beiden Modi.[45] AMD64 fehlt SYSENTER/Sysexit in beiden Untermodien von langer Modus.[11]: 33
  • Im 64-Bit-Modus verhalten sich in der Nähe von Zweigen mit dem Präfix von 66H (Operand Size Override) unterschiedlich. Intel 64 ignoriert dieses Präfix: Die Anweisung verfügt über einen erweiterten Offset von 32-Bit-Schild, und der Befehlszeiger wird nicht abgeschnitten. AMD64 verwendet das 16-Bit-Offset-Feld in der Anweisung und löscht die obersten 48-Bit-Befehlszeiger.
  • AMD-Prozessoren stellen eine ungültige Ausnahme von schwimmender Punkt bei, wenn sie eine ausführen Fld oder FSTP einer 80-Bit-Signal-Nan, während Intel-Prozessoren dies nicht tun.
  • Intel 64 fehlt die Fähigkeit, eine reduzierte (und damit schnellere) Version der zu retten und wiederherzustellen Schwimmpunkt Staat (mit der Einbeziehung der Fxsave und Fxrstor Anweisungen).[Klarstellung erforderlich]
  • AMD -Prozessoren seitdem Opteron Rev. E und Athlon 64 Rev. D haben die begrenzte Unterstützung für die Segmentierung über das Long -Modus -Segment -Limit -Enable -Bit (LMSLE) wieder eingeführt, um sie zu erleichtern Virtualisierung von 64-Bit-Gästen.[46][47]
  • Bei der Rückkehr zu einer nicht-kanonischen Adresse mit Verwendung Syset, AMD64 -Prozessoren führen den allgemeinen Schutzverwerfungshandler in der Privilegienstufe 3 aus.[48] Während der Intel 64 -Prozessoren wird es in der Privilegienstufe 0 ausgeführt.[49]

Ältere Implementierungen

  • Die AMD64 -Prozessoren vor der Revision f[50] (Unterscheidet durch den Schalter von DDR zu DDR2 Speicher und neue Sockel AM2, F und S1) von 2006 fehlte die Cmpxchg16b Anweisung, die eine Erweiterung der ist Cmpxchg8b Anweisungen für die meisten Post-80486 Prozessoren. Ähnlich zu Cmpxchg8b, Cmpxchg16b gestattet atomare Operationen auf Oktaswörtern (128-Bit-Werte). Dies ist nützlich für parallele Algorithmen, die verwendet werden vergleichen und tauschen auf Daten größer als die Größe eines Zeigers, häufig in lock-freie und wartungsfreie Algorithmen. Ohne Cmpxchg16b Man muss Problemumgehungen wie a verwenden Kritischer Abschnitt oder alternative lock-freie Ansätze.[51] Seine Abwesenheit verhindert auch 64-Bit Fenster vor Windows 8.1 von a Benutzermodus Adressraum größer als 8Tib.[52] Die 64-Bit-Version von Windows 8.1 erfordert die Anweisung.[53]
  • Früher AMD64 und Intel 64 CPUs fehlten Lahf und Sahf Anweisungen im 64-Bit-Modus. AMD führte diese Anweisungen (auch im 64-Bit-Modus) mit ihrem ein 90 nm (Revision D) Prozessoren, beginnend mit Athlon 64 im Oktober 2004.[54][55] Intel stellte die Anweisungen im Oktober 2005 mit dem 0F47H und späteren Überarbeitungen von vor NetBurst.[61] Die 64-Bit-Version von Windows 8.1 benötigt diese Funktion.[53]
  • Früher Intel CPUs mit Intel 64 fehlt auch die Nx bit der AMD64 -Architektur. Es wurde im Oktober 2004 im Stufen -E0 (0F41H) hinzugefügt.[62] Diese Funktion ist von allen Versionen von Windows 8 erforderlich.
  • Frühe Intel 64-Implementierungen hatten eine physische Ansprache von 36-Bit (64 GIB), während ursprüngliche AMD64-Implementierungen eine 40-Bit-Implementierung hatten (1Tib) physische Adressierung. Intel verwendete die 40-Bit-physische Adressierung zuerst auf Xeon MP (Potomac), gestartet am 29. März 2005. Der Unterschied ist keine Differenz des benutzerfreundlichen ISAs. Jüngste[wenn?] AMD64 -Implementierungen liefern 256 TIB des physischen Adressraums (und ab 2021 Pläne eine Expansion auf 4PIB),[63] Während Intels Sandbrücke E aus dem Jahr 2011 eine physische Adressierung von 46-Bit (64 TIB) aufweist.[64][65] Auf dem ice Lake 3. Gen Xeon skalierbare Prozessoren erhöhte Intel die virtuelle Adressierung auf 57 Bit (128 PIB) und physisch auf 52 Bit (4 PIB).[66]

Annahme

Ein Gebietskartier, das die Darstellung verschiedener Familien von Mikroprozessoren in der Top500 -Supercomputer -Ranking -Liste von 1993 bis 2019 zeigt.[67]

Im Supercomputer verfolgt von Top500Das Erscheinungsbild von 64-Bit-Erweiterungen für die X86-Architektur ermöglichte 64-Bit-X86-Prozessoren durch AMD und Intel, um die meisten RISC-Prozessorarchitekturen zu ersetzen, die zuvor in solchen Systemen verwendet wurden (einschließlich Pa-risc, Sparc, Alpha und andere) sowie 32-Bit x86, obwohl Intel selbst zunächst erfolglos versucht hat, X86 durch eine neue inkompatible 64-Bit-Architektur in der zu ersetzen Itanium Prozessor.

Ab 2020, a Fujitsu A64FX-Basierter Supercomputer angerufen Fugaku ist Nummer eins. Der erste ARM-basierte Supercomputer erschien 2018 auf der Liste[68] und in den letzten Jahren keine CPU-Architektur-Co-Prozessoren (Gpgpu) haben auch eine große Rolle bei der Leistung gespielt. Intel Xeon Phi "Knights Corner" Coprozessoren, die eine Teilmenge von x86-64 mit einigen Vektorerweiterungen implementieren,[69] werden auch zusammen mit X86-64-Prozessoren in der verwendet Tianhe-2 Supercomputer.[70]

Betriebssystemkompatibilität und Eigenschaften

Die folgenden Betriebssysteme und Freisetzungen unterstützen die X86-64-Architektur in langer Modus.

BSD

Libelle BSD

Vorläufige Infrastrukturarbeiten wurden im Februar 2004 für einen X86-64-Port begonnen.[71] Diese Entwicklung blieb später ins Stocken geraten. Die Entwicklung begann im Juli 2007 erneut[72] und fuhr während Google Summer of Code 2008 und SOC 2009.[73][74] Die erste offizielle Veröffentlichung, die X86-64-Unterstützung enthält, war Version 2.4.[75]

Freebsd

Freebsd Erster Hinzufügen von X86-64-Unterstützung unter dem Namen "AMD64" als experimentelle Architektur in 5.1-Freisetzung im Juni 2003. Es wurde als Standardverteilungsarchitektur ab Januar 2004 als Standardverteilungsarchitektur aufgenommen Stufe 1 Plattform. Die 6.0-Release-Version hat einige Macken mit ausgeführten X86-Executables unter AMD64 gereinigt, und die meisten Fahrer arbeiten genauso wie in der X86-Architektur. Die Arbeiten werden derzeit durchgeführt, um den x86 besser integrieren zu können Anwendung Binärschnittstelle (ABI) auf die gleiche Weise wie die Linux 32-Bit-Abi-Kompatibilität derzeit.

Netbsd

X86-64 Architekturunterstützung wurde zunächst dem verpflichtet Netbsd Source Tree am 19. Juni 2001. Ab NetBSD 2.0, veröffentlicht am 9. Dezember 2004. NetBSD/AMD64 ist ein vollständig integrierter und unterstützter Port. Der 32-Bit-Code wird im 64-Bit-Modus mit einer NETBSD-32-Kernelkern-Kompatibilitätsschicht für 32-Bit-Syscalls unterstützt. Das NX-Bit wird verwendet, um nicht execurable Stack und Haufen mit einer Page-Granularität zu liefern (Segment-Granularität wird auf 32-Bit-X86 verwendet).

OpenBSD

OpenBSD hat AMD64 seit OpenBSD 3.5 unterstützt, die am 1. Mai 2004 veröffentlicht wurde. Vor der Erstveröffentlichung der Hardware wurde eine vollständige Implementierung des AMD64-Supports erreicht, da AMD mehrere Maschinen für das Projekt geliehen hatte Hackathon dieses Jahr. OpenBSD -Entwickler haben aufgrund ihrer Unterstützung für die die Plattform aufgenommen Nx bit, was eine einfache Implementierung der erlaubte W^x Besonderheit.

Der Code für den AMD64 -Port von OpenBSD wird auch auf Intel 64 -Prozessoren ausgeführt, die die klonierte Verwendung der AMD64 -Erweiterungen enthält. Da Intel jedoch in frühen Intel 64 -Prozessoren die Seite des Seitentabels NX ausgelassen hat, gibt es keine W^x -Fähigkeit auf diesen Intel -CPUs ; Spätere Intel 64 -Prozessoren fügten das NX -Bit unter dem Namen "XD Bit" hinzu. Symmetrische Multiprozessierung (SMP) arbeitet am AMD64 -Port von OpenBSD, beginnend mit Release 3.6 am 1. November 2004.

DOS

Es ist möglich, einzugeben langer Modus unter DOS ohne dos extender,[76] Der Benutzer muss jedoch in den realen Modus zurückkehren, um BIOS- oder DOS -Interrupts aufzurufen.

Es kann auch möglich sein, einzugeben langer Modus mit einer Dos extender ähnlich zu DOS/4GW, aber komplexer, da x86-64 fehlt Virtueller 8086 -Modus. DOS selbst ist sich dessen nicht bewusst, und es sollten keine Vorteile erwartet werden, es sei denn, DOS in einer Emulation mit einem angemessenen Backend der Virtualisierungstreiber, beispielsweise in der Massenspeicherschnittstelle.

Linux

Linux war der erste Betriebssystem-Kernel, der die X86-64-Architektur in betreibt langer ModusBeginnend mit der 2.4 -Version im Jahr 2001 (vor der Verfügbarkeit der Hardware).[77][78] Linux bietet auch rückwärtskompatibilität für das Ausführen von 32-Bit-Ausführungsfähigkeiten. Dies ermöglicht es den Programmen, die in den langen Modus neu kompilieren können, während die Verwendung von 32-Bit-Programmen beibehält. Mehrere Linux-Verteilungen versenden derzeit mit x86-64-nativen Kerneln und Userlands. Einige, wie z. Arch Linux,[79] Suse, Mandriva, und Debian Ermöglichen Sie den Benutzern die Installation eines Satzes von 32-Bit-Komponenten und Bibliotheken, wenn Sie eine 64-Bit-DVD installieren, sodass die meisten vorhandenen 32-Bit-Anwendungen neben dem 64-Bit-Betriebssystem ausgeführt werden können. Andere Verteilungen, wie z. Fedora, Slackware und Ubuntu, sind in einer Version erhältlich, die für eine 32-Bit-Architektur und eine andere für eine 64-Bit-Architektur zusammengestellt wurde. Fedora und Red Hat Enterprise Linux Ermöglichen Sie die gleichzeitige Installation aller Userland-Komponenten in 32- und 64-Bit-Versionen auf einem 64-Bit-System.

x32 Abi (Anwendungsbinärschnittstelle), eingeführt in Linux 3.4, ermöglicht es Programmen, die für den X32 ABI im 64-Bit-Modus von X86-64 ausgeführt werden, während nur 32-Bit-Zeiger und Datenfelder verwendet werden.[80][81][82] Obwohl dies das Programm auf einen virtuellen Adressraum von 4 Gib einschränkt, verringert es auch den Speicher Fußabdruck des Programms und kann es in einigen Fällen ermöglichen, schneller zu laufen.[80][81][82]

64-Bit-Linux erlaubt bis zu 128Tib des virtuellen Adressraums für einzelne Prozesse und kann ungefähr 64 TIB des physischen Speichers ansprechen, unterliegt den Einschränkungen des Prozessors und des Systems.[83]

Mac OS

Mac OS X 10.4.7 und höhere Versionen von Mac OS X 10.4 Führen Sie 64-Bit-Befehlszeilen-Tools mit den POSIX- und mathematischen Bibliotheken auf 64-Bit-Intel-basierten Maschinen aus, genau wie alle Versionen von Mac OS X 10.4 und 10.5 auf 64-Bit-PowerPC-Maschinen ausführen. Keine anderen Bibliotheken oder Frameworks arbeiten mit 64-Bit-Anwendungen in Mac OS X 10.4.[84] Der Kernel und alle Kernelverlängerungen sind nur 32-Bit.

Mac OS X 10.5 Unterstützt 64-Bit-GUI-Anwendungen mit Verwendung Kakao, Quarz, OpenGL, und X11 auf 64-Bit-Intel-basierten Maschinen sowie auf 64-Bit Powerpc Maschinen.[85] Alle Nicht-GUI-Bibliotheken und -Rahmenbedingungen unterstützen auch 64-Bit-Anwendungen auf diesen Plattformen. Der Kernel und alle Kernelverlängerungen sind nur 32-Bit.

Mac OS X 10.6 ist die erste Version von Mac OS Das unterstützt einen 64-Bit Kernel. Allerdings können nicht alle 64-Bit-Computer den 64-Bit-Kernel ausführen, und nicht alle 64-Bit-Computer, die den 64-Bit-Kernel ausführen können, werden dies standardmäßig tun.[86] Der 64-Bit-Kernel unterstützt wie der 32-Bit-Kernel 32-Bit-Anwendungen; Beide Kerne unterstützen auch 64-Bit-Anwendungen. 32-Bit-Anwendungen haben eine virtuelle Adressraumlimit von 4 Gib unter beiden Kernel.[87][88] Der 64-Bit-Kernel unterstützt nicht 32-Bit Kernelverlängerungenund der 32-Bit-Kernel unterstützt nicht 64-Bit-Kernelverlängerungen.

OS X 10.8 Enthält nur der 64-Bit-Kernel, unterstützt jedoch weiterhin 32-Bit-Anwendungen. Es unterstützt jedoch keine 32-Bit-Kernelverlängerungen.

macOS 10.15 Enthält nur der 64-Bit-Kernel und unterstützt nicht mehr 32-Bit-Anwendungen. Diese Entfernung der Unterstützung hat ein Problem für dargestellt Winehq (und die kommerzielle Version Crossover), da es noch in der Lage sein muss, 32-Bit-Windows-Anwendungen auszuführen. Die Lösung, bezeichnet Wine32on64, war hinzuzufügen Thunks Dadurch werden die CPU in und aus 32-Bit-Kompatibilitätsmodus in der nominell 64-Bit-Anwendung eingerichtet.[89][90]

macos verwendet die universeller binär Format zu Paket 32- und 64-Bit-Versionen von Anwendungs- und Bibliothekscode in eine einzige Datei; Die am besten geeignete Version wird zum Ladezeit automatisch ausgewählt. In Mac OS X 10.6 wird das universelle Binärformat auch für den Kernel und für die Kernelerweiterungen verwendet, die sowohl 32-Bit- als auch 64-Bit-Kerne unterstützen.

Solaris

Solaris 10 und später unterstützen die X86-64-Architektur.

Für Solaris 10 genau wie bei der Sparc Architektur, es gibt nur ein Betriebssystembild, das einen 32-Bit-Kernel und einen 64-Bit-Kernel enthält. Dies ist als "x64/x86" -DVD-ROM-Bild bezeichnet. Das Standardverhalten besteht darin, einen 64-Bit-Kernel zu starten, wodurch sowohl 64-Bit- als auch neue 32-Bit-ausführbare Ausführungsfähigkeiten ausgeführt werden können. Ein 32-Bit-Kernel kann auch manuell ausgewählt werden. In diesem Fall werden nur 32-Bit-ausführbare Funktionen ausgeführt. Das isAinfo Der Befehl kann verwendet werden, um festzustellen, ob ein System einen 64-Bit-Kernel ausführt.

Für Solaris 11 wird nur der 64-Bit-Kernel bereitgestellt. Der 64-Bit-Kernel unterstützt jedoch sowohl 32- als auch 64-Bit-ausführbare Bibliotheken und Systemaufrufe.

Fenster

X64 -Ausgaben von Microsoft Windows Client und Server -Windows XP Professional X64 Edition und Windows Server 2003 X64 Edition - wurden im März 2005 veröffentlicht.[91] Intern sind sie tatsächlich der gleiche Build (5.2.3790.1830 SP1).[92][93] Da sie die gleichen Quellbasis- und Betriebssystembinärdateien teilen, werden sogar Systemaktualisierungen in einheitlichen Paketen veröffentlicht, sehr in der Art und Weise wie Windows 2000 Professional- und Server -Editionen für x86. Windows Vista, das auch viele verschiedene Ausgaben hat, wurde im Januar 2007 veröffentlicht. Windows 7 wurde im Juli 2009 veröffentlicht. Windows Server 2008 R2 wurde in nur X64- und Itanium -Editionen verkauft; Spätere Versionen von Windows Server bieten nur eine X64 -Ausgabe an.

Versionen von Windows für X64 vor Windows 8.1 und Windows Server 2012 R2 bieten Folgendes an:

  • 8 TIB des virtuellen Adressraums pro Prozess, zugänglich sowohl im Benutzermodus als auch im Kernel -Modus, der als Benutzermodus -Adressraum bezeichnet wird. Ein X64 -Programm kann all dies verwenden, vorbehaltlich der Backing -Store -Grenzwerte des Systems und vorausgesetzt, es ist mit der Option "Große Adresse bewusst" verknüpft.[94] Dies ist eine 4096-fache Erhöhung gegenüber dem von 32-Bit-Fenstern angebotenen virtuellen Adressraum von 2 GIB-Benutzern.[95][96]
  • 8 TIB des Kernel -Modus Virtueller Adressraum für das Betriebssystem.[95] Wie beim Adressraum des Benutzermodus ist dies eine 4096-fache Erhöhung um 32-Bit-Windows-Versionen. Der erhöhte Speicherplatz kommt hauptsächlich dem Dateisystem-Cache und dem Kernel-Modus "Heaps" (nicht im Pagging und des PAGED-Pools) zugute. Windows verwendet nur insgesamt 16 TIB aus dem von den Prozessoren implementierten 256 TIB, da frühe AMD64 -Prozessoren eine fehlten Cmpxchg16b Anweisung.[97]

Unter Windows 8.1 und Windows Server 2012 R2 wurden sowohl virtuelle Adressräume des Benutzermodus als auch der Kernel -Modus auf 128 TIB erweitert.[22] Diese Versionen von Windows werden nicht auf Prozessoren installiert, denen es fehlt Cmpxchg16b Anweisung.

Die folgenden zusätzlichen Eigenschaften gelten für alle X64 -Versionen von Windows:

  • Fähigkeit, vorhandene 32-Bit-Anwendungen auszuführen (.exe Programme) und dynamische Linkbibliotheken (.dlls) Verwenden Wow64 Wenn WOW64 in dieser Version unterstützt wird. Darüber hinaus ein 32-Bit-Programm, wenn es mit der Option "große Adresse" in Verbindung gebracht wurde.[94] Kann bis zu 4 Gib virtueller Adressraum in 64-Bit-Fenstern anstelle des Standard 2 gib (optional 3 gib mit verwenden /3GB Startoption und "Link" -Linkoption "Große Adresse", das von 32-Bit-Windows angeboten wird.[98] Im Gegensatz zur Verwendung der /3GB BOOT -Option auf x86, so reduziert dies nicht den virtuellen Adressraum des Kernel -Modus, der dem Betriebssystem zur Verfügung steht. 32-Bit-Anwendungen können daher vom Ausführen von X64-Fenstern profitieren, auch wenn sie nicht für X86-64 neu kompiliert werden.
  • Sowohl 32- als auch 64-Bit-Anwendungen, wenn sie nicht mit "großer Adresse bewusst" verknüpft sind, sind auf 2 Gib virtueller Adressraum begrenzt.
  • Möglichkeit, bis zu 128 GIB (Windows XP/Vista), 192 GIB (Windows 7), 512 GIB (Windows 8), 1 TIB (Windows Server 2003), 2 TIB (Windows Server 2008/Windows 10), 4 TIB (TIB (TIB (Windows Server 2003)) zu verwenden. Windows Server 2012) oder 24 TIB (Windows Server 2016/2019) des Physical Random Access Memory (RAM).[99]
  • LLP64 Datenmodell: "int" und "lange" Typen sind 32 Bit breit, lang ist lang, 64 Bit, während Zeiger und Typen, die von Zeigern abgeleitet sind, 64 Bit breit sind.
  • Geräte-Treiber für Kernel-Modus müssen 64-Bit-Versionen sein. Es gibt keine Möglichkeit, den 32-Bit-Kernel-Modus ausführbar im 64-Bit-Betriebssystem auszuführen. Die Treiber für Benutzermodus-Geräte können entweder 32-Bit oder 64-Bit sein.
  • 16-Bit-Windows (Win16) und DOS-Anwendungen werden aufgrund des Entfernens der von der Windows nicht auf X86-64-Versionen ausgeführt Virtuelle DoS -Maschine Subsystem (NTVDM), das sich auf die Fähigkeit stützte, den virtuellen 8086 -Modus zu verwenden. Der virtuelle 8086 -Modus kann im langen Modus nicht eingegeben werden.
  • Vollständige Umsetzung der NX (Keine Ausführung) Seitenschutzfunktion. Dies wird auch in den letzten 32-Bit-Versionen von Windows implementiert, wenn sie im PAE-Modus gestartet werden.
  • Anstelle von FS -Segmentdeskriptor auf x86 -Versionen der Windows NT Familie, GS -Segmentdeskriptor wird verwendet, um auf zwei operatives System definierte Strukturen zu verweisen: Thread Information Block (NT_TIB) im Benutzermodus und im Kernelregion (Kern) im Benutzermodus und im Prozessorsteuerungsbereich (KPCR). So zum Beispiel im Benutzermodus GS: 0 ist die Adresse des ersten Mitglieds des Thread Information Blocks. Durch die Aufrechterhaltung dieser Konvent an sich wird von keinem modernen Betriebssystem verwendet.[95]
  • Frühe Berichte behaupteten, dass der Bediensystem Scheduler den X87 -FPU -Maschinenstatus nicht über Thread -Kontext -Switches speichern und wiederherstellen würde. Das beobachtete Verhalten zeigt, dass dies nicht der Fall ist: Der X87-Zustand wird gespeichert und wiederhergestellt, mit Ausnahme von Threads mit dem Kernel-Modus (eine Einschränkung, die auch in der 32-Bit-Version vorliegt). In der neuesten Dokumentation von Microsoft heißt es, dass der x87/mmx/3dnow! Anweisungen können im langen Modus verwendet werden, sie sind jedoch veraltet und können in Zukunft Kompatibilitätsprobleme verursachen.[98]
  • Einige Komponenten mögen Jet -Datenbankmotor und Datenzugriffsobjekte wird nicht auf 64-Bit-Architekturen wie X86-64 und IA-64 portiert.[100][101][102]
  • Microsoft Visual Studio kann kompilieren native Anwendungen Um entweder auf die X86-64-Architektur zu zielen, die nur auf 64-Bit-Microsoft-Windows oder die ausführen kann, oder die IA-32 Architektur, die als 32-Bit-Anwendung auf 32-Bit-Microsoft-Windows oder 64-Bit Wow64 Emulationsmodus. Verwaltete Anwendungen Kann entweder in IA-32, x86-64 oder in AnyCPU-Modi zusammengestellt werden. Software, die in den ersten beiden Modi erstellt wurde, verhalten sich wie ihre IA-32- oder X86-64 nativen Code-Gegenstücke; Bei Verwendung des AnyCPU-Modus werden jedoch Anwendungen in 32-Bit-Versionen von Microsoft Windows als 32-Bit-Anwendungen ausgeführt, während sie als 64-Bit-Anwendung in 64-Bit-Editionen von Microsoft Windows ausgeführt werden.

Videospielkonsolen

Beide Playstation 4 und Xbox eins und ihre Varianten enthalten AMD X86-64-Prozessoren, basierend auf dem Jaguar Mikroarchitektur.[103][104] Firmware und Spiele sind in X86-64-Code geschrieben. Es ist kein Legacy X86 -Code beteiligt.

Ihre nächsten Generationen, die PlayStation 5 und die Xbox -Serie X und Serie s Integrieren Sie auch AMD x86-64-Prozessoren, basierend auf der Zen 2 Mikroarchitektur.[105][106]

Branchennamenkonventionen

Da AMD64 und Intel 64 wesentlich ähnlich sind, verwenden viele Software- und Hardwareprodukte einen Lieferantenneutralbegriff, um ihre Kompatibilität mit beiden Implementierungen anzuzeigen. Die ursprüngliche Bezeichnung von AMD für diese Prozessorarchitektur "x86-64" wird manchmal immer noch für diesen Zweck verwendet.[2] Wie die Variante "x86_64".[3][4] Andere Unternehmen, wie z. Microsoft[6] und Sun Microsystems/Oracle Corporation,[5] Verwenden Sie die Kontraktion "x64" im Marketingmaterial.

Der Begriff IA-64 bezieht sich auf Itanium Prozessor und sollte nicht mit X86-64 verwechselt werden, da es sich um einen völlig anderen Anweisungssatz handelt.

Viele Betriebssysteme und Produkte, insbesondere diejenigen, die vor dem Eintritt von Intel in den Markt X86-64 einführten, verwenden den Begriff "AMD64" oder "AMD64", um sich sowohl auf AMD64 als auch auf Intel 64 zu beziehen.

  • AMD64
    • Die meisten BSD Systeme wie Freebsd, Mitternacht, Netbsd und OpenBSD Siehe sowohl AMD64 als auch Intel 64 unter dem Architekturnamen "AMD64".
    • Etwas Linux -Verteilungen wie zum Beispiel Debian, Ubuntu, Gentoo Linux Siehe sowohl AMD64 als auch Intel 64 unter dem Architekturnamen "AMD64".
    • Microsoft Windows's X64 -Versionen verwenden den AMD64 -Moniker intern, um verschiedene Komponenten zu bestimmen, die mit dieser Architektur verwendet oder kompatibel sind. Zum Beispiel die Umgebungsvariable Processor_architecture wird im Gegensatz zu "x86" in 32-Bit .[107]
    • Sonne Solaris's Ialist Der Befehl identifiziert sowohl AMD64- als auch Intel 64-basierte Systeme als "AMD64".
    • Java Entwickler-Kit (JDK): Der Name "AMD64" wird in Verzeichnisnamen mit X86-64-Dateien verwendet.
  • x86_64
    • Das Linux Kernel[108] und die GNU Compiler -Sammlung bezieht sich auf 64-Bit-Architektur als "x86_64".
    • Einige Linux -Verteilungen, wie z. Fedora, OpenSuse, Arch Linux, Gentoo Linux Siehe diese 64-Bit-Architektur als "x86_64".
    • Apfel Mac OS Bezieht sich auf 64-Bit-Architektur als "x86-64" oder "x86_64", wie im Terminalbefehl zu sehen Bogen[3] und in ihrer Entwicklerdokumentation.[2][4]
    • Brechen mit den meisten anderen BSD -Systemen, Libelle BSD bezieht sich auf 64-Bit-Architektur als "x86_64".
    • Haiku bezieht sich auf 64-Bit-Architektur als "x86_64".

Lizenzierung

X86-64/AMD64 wurde ausschließlich von AMD entwickelt. AMD hält Patente für Techniken, die in AMD64 verwendet werden.[109][110][111] Diese Patente müssen von AMD lizenziert werden, um AMD64 zu implementieren. Intel schließte eine Vereinbarung mit AMD ab, lizenziert ihre Patente für bestehende X86-Techniken und lizenziert ihre Patente zu den in x86-64 verwendeten Techniken.[112] Im Jahr 2009 haben AMD und Intel mehrere Klagen und Verzögerungsverschiedenheiten beigelegt, wodurch ihre Verzugsvereinbarungen erweitert wurden.[113][114][115]

Siehe auch

Anmerkungen

  1. ^ Für den Befehlssatz werden verschiedene Namen verwendet. Vor dem Start wurden x86-64 und x86_64 verwendet, während bei der Veröffentlichung AMD es AMD64 nannte.[1] Intel verwendete zunächst die Namen IA-32E und EM64T Bevor er sich schließlich für "Intel 64" für seine Umsetzung entschieden hat. Einige in der Branche, einschließlich Apfel,[2][3][4] Verwenden Sie x86-64 und x86_64, während andere, insbesondere, Sun Microsystems[5] (jetzt Oracle Corporation) und Microsoft,[6] Verwenden Sie x64. Das BSD Familie der OSS und mehrere Linux -Verteilungen[7][8] Verwenden Sie AMD64, ebenso wie Microsoft Windows intern.[9][10]
  2. ^ In der Praxis unterstützen 64-Bit-Betriebssysteme im Allgemeinen keine 16-Bit-Anwendungen, obwohl moderne Versionen von Microsoft Windows eine begrenzte Problemumgehung enthalten, die 16-Bit effektiv unterstützt Installshield und Microsoft ACME-Installateure durch stillschweigendes Ersetzen durch 32-Bit-Code.[12]
  1. ^ Das Register berichtete, dass der Stoting G1 (0F49H) von Pentium 4 am 17. Oktober und am 14. November in Volumen versehen wird.[59] Intel-Dokument besagt jedoch, dass Samples am 9. September verfügbar sind, während der 17. Oktober das "Datum der ersten Verfügbarkeit von Nachversionsmaterial" ist, das Intel als "das projizierte Datum definiert, dass ein Kunde möglicherweise erwartet, die Nachversionsmaterialien zu erhalten . [...] Kunden sollten bereit sein, an diesem Datum die postkonvertierten Materialien zu erhalten. "[60]

Verweise

  1. ^ "Debian AMD64 FAQ". Debian Wiki. Archiviert Aus dem Original am 26. September 2019. Abgerufen 3. Mai, 2012.
  2. ^ a b c "x86-64 Codemodell". Apfel. Archiviert Aus dem Original am 2. Juni 2012. Abgerufen 23. November, 2012.
  3. ^ a b c Bogen (1)- -Darwin und Mac OS Allgemeine Befehle Handbuch
  4. ^ a b c Kevin Van Vechen (9. August 2006). "Re: Intel Xnu Bugs Report". Darwin-dev Mailingliste. Apple Computer. Archiviert von das Original am 1. Februar 2020. Abgerufen 5. Oktober, 2006. Die Tools von Kernel und Entwickler haben auf "x86_64" für den Namen der Mach-O-Architektur standardisiert
  5. ^ a b "Solaris 10 auf AMD Opteron". Orakel. Archiviert Aus dem Original am 25. Juli 2017. Abgerufen 9. Dezember, 2010.
  6. ^ a b "Microsoft 64-Bit Computing". Microsoft. Archiviert von das Original am 12. Dezember 2010. Abgerufen 9. Dezember, 2010.
  7. ^ "AMD64 Port". Debian. Archiviert Aus dem Original am 26. September 2019. Abgerufen 23. November, 2012.
  8. ^ "Gentoo/AMD64 -Projekt". Gentoo -Projekt. Archiviert Aus dem Original am 3. Juni 2013. Abgerufen 27. Mai, 2013.
  9. ^ "WOW64 Implementierungsdetails". Archiviert vom Original am 13. April 2018. Abgerufen 24. Januar, 2016.
  10. ^ "Prozessorarchitekturklasse". Archiviert Aus dem Original am 3. Juni 2017. Abgerufen 24. Januar, 2016.
  11. ^ a b c d e f g h i j k l m n o p q r s t u AMD Corporation (Dezember 2016). "Band 2: Systemprogrammierung" (PDF). AMD64 Architekturprogrammierhandbuch. AMD Corporation. Archiviert (PDF) Aus dem Original am 13. Juli 2018. Abgerufen 25.März, 2017.
  12. ^ Raymond Chen (31. Oktober 2013). "Wenn es in 64-Bit-Fenstern keine 16-Bit-Emulationsschicht gibt, wie kommt es, dass bestimmte 16-Bit-Installateure ausführen dürfen?". Archiviert Aus dem Original am 14. Juli 2021. Abgerufen 14. Juli, 2021.
  13. ^ IBM Corporation (6. September 2007). "IBM WebSphere Application Server 64-Bit-Leistung entmystifiziert" (PDF). p. 14. Archiviert (PDF) Aus dem Original am 25. Januar 2022. Abgerufen 9. April, 2010. Die Abbildungen 5, 6 und 7 zeigen auch, dass die 32-Bit-Version von WAs-Anwendungen mit einer vollständigen nativen Hardware-Leistung auf den Plattformen der Leistung und X86-64 ausgeführt wird. Im Gegensatz zu einigen 64-Bit-Prozessorarchitekturen emulieren die Leistung und die X86-64-Hardware den 32-Bit-Modus nicht. Daher können Anwendungen, die nicht von 64-Bit-Funktionen profitieren, mit vollständiger Leistung auf der 32-Bit-Version von WebSphere ausgeführt, die auf den oben genannten 64-Bit-Plattformen ausgeführt werden.
  14. ^ "AMD gibt neue Technologien im MicroPorcessor Forum offen" (Pressemitteilung). AMD. 5. Oktober 1999. archiviert von das Original am 8. März 2012. Abgerufen 9. November, 2010.
  15. ^ "AMD veröffentlicht x86-64 architektonische Spezifikation; ermöglicht die marktgetriebene Migration zum 64-Bit-Computing" (Pressemitteilung). AMD. 10. August 2000. archiviert von das Original am 8. März 2012. Abgerufen 9. November, 2010.
  16. ^ Mauerer, W. (2010). Professionelle Linux -Kernel -Architektur. John Wiley & Sons.
  17. ^ "Intel 64 und IA-32 Architekturen-Softwareentwicklerhandbuch, Band 3A: Systemprogrammierhandbuch, Teil 1" (PDF). S. 4–7. Archiviert (PDF) Aus dem Original am 16. Mai 2011. Abgerufen 10. Juli, 2019.
  18. ^ a b "Bios und Kernel Developer's Guide (BKDG) für AMD Family 10H -Prozessoren" (PDF). p. 24. Archiviert (PDF) Aus dem Original am 18. April 2016. Abgerufen 27. Februar, 2016. Der physische Adressraum erhöhte sich auf 48 Bit.
  19. ^ "Mythos und Fakten über 64-Bit-Linux" (PDF). 2. März 2008. p. 7. archiviert von das Original (PDF) am 10. Oktober 2010. Abgerufen 30. Mai, 2010. Der physische Adressraum erhöhte sich auf 48 Bit
  20. ^ Shanley, Tom (1998). Pentium Pro und Pentium II -Systemarchitektur. PC -Systemarchitekturreihe (Second Ed.). Addison-Wesley. p.445. ISBN 0-201-30973-4.
  21. ^ Microsoft Corporation. "Was ist PAE, NX und SSE2 und warum muss mein PC sie unterstützen, um Windows 8 auszuführen?". Archiviert Aus dem Original am 11. April 2013. Abgerufen 19. März, 2013.
  22. ^ a b c d "Speichergrenzen für Windows -Releases". Msdn. Microsoft. 16. November 2013. Archiviert Aus dem Original am 6. Januar 2014. Abgerufen 20. Januar, 2014.
  23. ^ "5-Level-Paging und 5-Stufe EPT" (PDF). Intel. Mai 2017. Archiviert (PDF) Aus dem Original am 5. Dezember 2018. Abgerufen 17. Juni, 2017.
  24. ^ US -Patent 9858198, Larry Seiler, "64 KB-Seitensystem, das 4KB-Seitenbetrieb unterstützt", veröffentlicht 2016-12-29, ausgestellt 2018-01-02, zugewiesen an Intel Corp. 
  25. ^ "Opteron 6100 -Serie Motherboards". Supermicro Corporation. Archiviert Aus dem Original am 3. Juni 2010 2010. Abgerufen 22. Juni, 2010.
  26. ^ "Supermicro Xeonsolutions". Supermicro Corporation. Archiviert Aus dem Original am 27. Mai 2010. Abgerufen 20. Juni, 2010.
  27. ^ "Motherboards der Opteron 8000 -Serie". Supermicro Corporation. Archiviert Aus dem Original am 27. Mai 2010. Abgerufen 20. Juni, 2010.
  28. ^ "Tyan -Produktmatrix". MITEC International Corporation. Archiviert Aus dem Original am 6. Juni 2010. Abgerufen 21. Juni, 2010.
  29. ^ a b "Aus dem AMI -Archiv: Amibios 8 und der Übergang zu EFI". amerikanische Megatrends. 8. September 2017. archiviert von das Original am 25. Oktober 2021. Abgerufen 25. Oktober, 2021.
  30. ^ "Intel setzt das Yamhill -Projekt fort?". Neowin. Abgerufen 5. Juni, 2022.
  31. ^ "Craig Barrett bestätigt 64 -Bit -Adressverlängerungen für Xeon. Und Prescott". Der Anfragen. 17. Februar 2004. Archiviert vom Original am 12. Januar 2013.{{}}: CS1 Wartung: Ungeeignete URL (Link)
  32. ^ ""Eine Zusammenfassung von 64-Bit-Computing", von InternetNews.com ". Archiviert von das Original am 25. September 2012. Abgerufen 18. September, 2006.
  33. ^ Lapedus, Mark. "Intel to Demo 'CT' 64-Bit-Prozessorlinie bei IDF". Edn. Aspencore Media. Archiviert vom Original am 25. Mai 2021. Abgerufen 25. Mai, 2021.
  34. ^ "Intel 64 Architektur". Intel. Archiviert Aus dem Original am 29. Juni 2011. Abgerufen 29. Juni, 2007.
  35. ^ "Über neue Prozessorarchitektur in 1Q08 starten" (Abonnement erforderlich). Digitimes. Archiviert Aus dem Original am 3. Dezember 2008. Abgerufen 25. Juli, 2007.
  36. ^ Stokes, Jon (23. Januar 2008). "Jesaja enthüllte: Viaces neue Architektur mit geringer Leistung". ARS Technica. Archiviert Aus dem Original am 27. Januar 2008. Abgerufen 24. Januar, 2008.
  37. ^ "Via Starts über Nano Processor Family" (Pressemitteilung). ÜBER. 29. Mai 2008. Archiviert Aus dem Original am 3. Februar 2019. Abgerufen 25. Mai, 2017.
  38. ^ "Über Isaiah Architecture Einführung" (PDF). ÜBER. 23. Januar 2008. archiviert von das Original (PDF) am 7. September 2008. Abgerufen 31. Juli, 2013.
  39. ^ Weimer, Florian (10. Juli 2020). "Neue X86-64-Mikroarchitekturstufen". llvm-dev (Mailingliste). Archiviert vom Original am 14. April 2021. Abgerufen 11. März, 2021.
  40. ^ Weimer, Florian (5. Januar 2021). "Red Hat Enterprise Linux 9 für die X86-64-V2-Mikroarchitektur-Ebene". Red Hat Developer Blog. Abgerufen 22. März, 2022.
  41. ^ "System -V -Anwendung Binärschnittstelle mit niedriger Ebene Systeminformationen". x86-64 PSABI Repo. 29. Januar 2021. Archiviert vom Original am 2. Februar 2021. Abgerufen 11. März, 2021 - via Gitlab.
  42. ^ Wasson, Scott (23. März 2005). "64-Bit-Computer in Theorie und Praxis". Der Tech -Bericht. Der Tech -Bericht. Archiviert Aus dem Original am 12. März 2011. Abgerufen 22. März, 2011.
  43. ^ "Diskussion über Stack Overflow". März 2021. Abgerufen 2. März, 2021.
  44. ^ "Intel 64 und IA-32 Architekturen-Softwareentwicklerhandbuch Band 2 (2A, 2B & 2C): Anleitungssatzreferenz, A-Z" (PDF). Intel. September 2013. S. 4–397. Archiviert (PDF) Aus dem Original am 20. Oktober 2013. Abgerufen 21. Januar, 2014.
  45. ^ "Intel 64 und IA-32 Architekturen-Softwareentwicklerhandbuch Band 2 (2A, 2B & 2C): Anleitungssatzreferenz, A-Z" (PDF). Intel. September 2013. S. 4–400. Archiviert (PDF) Aus dem Original am 20. Oktober 2013. Abgerufen 21. Januar, 2014.
  46. ^ "Wie die Pensionierung im AMD64 -Long -Modus VMware brach". Pagetable.com. 9. November 2006. Archiviert Aus dem Original am 18. Juli 2011. Abgerufen 2. Mai, 2010.
  47. ^ "VMware- und CPU -Virtualisierungstechnologie" (PDF). VMware. Archiviert (PDF) Aus dem Original am 17. Juli 2011. Abgerufen 8. September, 2010.
  48. ^ "Handbuch des Architekturprogrammierers AMD64: Allgemeine und Systemanweisungen" (PDF). AMD. Mai 2018. p. 419. Archiviert (PDF) Aus dem Original am 20. August 2018. Abgerufen 2. August, 2018.
  49. ^ "Intel 64 und IA-32 Architekturen-Softwareentwicklerhandbuch Band 2 (2A, 2B & 2C): Anleitungssatzreferenz, A-Z" (PDF). Intel. September 2014. S. 4–412. Archiviert (PDF) Aus dem Original am 13. Januar 2015. Abgerufen 28. Dezember, 2014.
  50. ^ "Live-Migration mit AMD-V ™ Extended Migration Technology" (PDF). Entwickler.amd.com.
  51. ^ Magiert M. Michael. "Praktische lock-freie und wartfreie LL/SC/VL-Implementierungen mit 64-Bit-CAS" (PDF). IBM. Archiviert (PDF) Aus dem Original am 2. Mai 2013. Abgerufen 21. Januar, 2014.
  52. ^ Darwou (20. August 2004). "Warum ist der virtuelle Adressraum 4GB überhaupt?". Das alte neue Ding. Microsoft. Archiviert Aus dem Original am 26. März 2017. Abgerufen 25.März, 2017.
  53. ^ a b "Systemanforderungen - Windows 8.1". Archiviert Aus dem Original am 28. April 2014. Abgerufen 27. April, 2014. Um ein 64-Bit-Betriebssystem auf einem 64-Bit-PC zu installieren, muss Ihr Prozessor CMPXCHG16B, Prefetchw und LAHF/SAHF unterstützen.
  54. ^ Petkov, Borislav (10. August 2009). "Re: [Patch V2] x86: FACHSCHAFTE FACHSCHAFTE X86_FEATURE_LAHF_LM FLAGGELSCHAFT". Linux -Kernel -Mailingliste.
  55. ^ ""Revisionshandbuch für AMD Athlon 64 und AMD Opteron -Prozessoren" von AMD " (PDF). Archiviert (PDF) Aus dem Original am 24. August 2009 2009. Abgerufen 18. Juli, 2009.
  56. ^ "Produktänderungsbenachrichtigung 105224 - 01" (PDF). Intel. Archiviert von das Original (PDF) Am 17. November 2005.
  57. ^ "Intel® Pentium® D -Prozessor 800 Sequenz und Intel® Pentium® -Prozessor Extreme Edition 840 Spezifikationsaktualisierung" (PDF).
  58. ^ "Intel Xeon 2,8 GHz - NE80551KG0724mm / BX80551KG2800HA". CPU-World.
  59. ^ Smith, Tony (23. August 2005). "Intel optimiert EM64T für die vollständige AMD64 -Kompatibilität". Das Register.
  60. ^ "Produktänderungsbenachrichtigung 105271 - 00" (PDF). Intel. Archiviert von das Original (PDF) Am 17. November 2005.
  61. ^ 0f47h debütierte im B0 Schritt von Pentium d am 21. Oktober,[56][57] Aber 0F48H, das auch LAHF/SAHF unterstützt, wurde am 10. Oktober in der Start Dual-Core Xeon.[58][a]
  62. ^ "Produktänderungsbenachrichtigung 104101 - 00" (PDF). Intel. Archiviert von das Original (PDF) Am 16. Juli 2004.
  63. ^ Larabel, Michael (10. August 2021). "AMD-Vorbereitung von 5-Level-Paging-Linux-Unterstützung für zukünftige CPUs". Phoronix.
  64. ^ "Intel 64 Architektur erhöht den linearen Adressraum für Software auf 64 Bit und unterstützt den physischen Adressraum auf 46 Bit." auf Seite vol. 1 2-21 von Intel 64 und IA-32 Architektures Softwareentwicklerhandbuch September 2014 Archiviert 14. Mai 2019 bei der Wayback -Maschine
  65. ^ Logan, Tom (14. November 2011). "Intel Core i7-3960x Bewertung". Abgerufen 1. Juli, 2022.
  66. ^ Ihr, Huaisheng. "Einführung in 5-Level-Paging in den skalierbaren Intel Xeon-Prozessoren der 3. Generation mit Linux" (PDF). Lenovo. Abgerufen 1. Juli, 2022.
  67. ^ "Statistiken | Top500 Supercomputer -Websites". Top500.org. Archiviert Aus dem Original am 19. März 2014. Abgerufen 22. März, 2014.
  68. ^ "Sublist Generator | Top500 Supercomputer -Websites". www.top500.org. Archiviert Aus dem Original am 7. Dezember 2018. Abgerufen 6. Dezember, 2018.
  69. ^ "Intel® Xeon Phitm Coprozessor -Befehlssatz Architektur Referenzhandbuch" (PDF). Intel. 7. September 2012. Abschnitt B.2 Intel Xeon Phi Coprozessor 64 -Bit -Modus Einschränkungen. Archiviert (PDF) Aus dem Original am 21. Mai 2014. Abgerufen 21. Mai, 2014.
  70. ^ "Intel macht den schnellsten Supercomputer der Welt, zeigt neue und zukünftige Hochleistungs -Computing -Technologien". Archiviert Aus dem Original am 22. Juni 2013. Abgerufen 21. Juni, 2013.
  71. ^ "CVS Commit: SRC/SYS/AMD64/AMD64 Genassym.c src/sys/amd64/includem.h atomic.h bootinfo.h coredump.h cpufunc.h elf.h endian.h exec.h float.h fpu. h Frame.h Globaldata.h Ieeefp.h limits.h lock.h md_var.h param.h pcb.h pcb_ext.h pmap.h proc.h profil.h psl.h ... " Archiviert Aus dem Original am 4. Dezember 2008. Abgerufen 3. Mai, 2009.
  72. ^ "AMD64 Port". Archiviert Aus dem Original am 18. Mai 2010. Abgerufen 3. Mai, 2009.
  73. ^ "DragonflyBsd: googleSoc2008". Archiviert Aus dem Original am 27. April 2009 2009. Abgerufen 3. Mai, 2009.
  74. ^ "Sommer des Code akzeptierte Schüler". Archiviert Aus dem Original am 4. September 2010. Abgerufen 3. Mai, 2009.
  75. ^ "DragonflyBsd: Release24". Archiviert Aus dem Original am 23. September 2009. Abgerufen 3. Mai, 2009.
  76. ^ "Tutorial zum Eingeben von geschützten und langen Modus von DOS". Archiviert von das Original am 22. Februar 2017. Abgerufen 6. Juli, 2008.
  77. ^ Andi Kleen (26. Juni 2001). "Linux auf x86-64 Porting". Archiviert von das Original Am 10. September 2010. Status: Der Kernel, Compiler, Werkzeugkette. Die Kernelstiefel und arbeiten am Simulator und werden zum Portieren von Userland und zum Ausführen von Programmen verwendet
  78. ^ Andi Kleen. "Andi Kleens Seite". Archiviert Aus dem Original am 7. Dezember 2009. Abgerufen 21. August, 2009. Dies war das Originalpapier, das den Linux X86-64-Kernel-Port zurück beschreibt, als X86-64 nur bei Simulatoren erhältlich war.
  79. ^ "Arch64 FAQ". 23. April 2012. Archiviert Aus dem Original am 14. Mai 2012. Abgerufen 11. Mai, 2012. Sie können entweder die Multilib -Pakete oder einen i686 -Chroot verwenden.
  80. ^ a b Thorsten Leemhuis (13. September 2011). "Kernel-Protokoll: x32 Abi bekommt ungefähr 64-Bit-Nachteile". www.h-online.com. Archiviert von das Original am 28. Oktober 2011. Abgerufen 1. November, 2011.
  81. ^ a b "x32-Ein natives 32-Bit-ABI für x86-64". linuxplumbersconf.org. Archiviert Aus dem Original am 5. Mai 2012. Abgerufen 1. November, 2011.
  82. ^ a b "x32-abi". Google -Websites. Archiviert Aus dem Original am 30. Oktober 2011. Abgerufen 1. November, 2011.
  83. ^ "AMD64 Port". Debian.org. Archiviert Aus dem Original am 26. September 2019. Abgerufen 29. Oktober, 2011.
  84. ^ "Apple - Mac OS X Xcode 2.4 Versionshinweise: Compiler -Tools". Apple Inc. 11. April 2007. archiviert von das Original am 22. April 2009. Abgerufen 19. November, 2012.
  85. ^ "Apple - Mac OS X Leopard - Technologie - 64 -Bit". Apple Inc. archiviert aus das Original am 12. Januar 2009. Abgerufen 19. November, 2012.
  86. ^ "Mac OS X V10.6: Macs, die den 64-Bit-Kernel verwenden". Apple Inc. Archiviert Aus dem Original am 31. August 2009 2009. Abgerufen 29. November, 2012.
  87. ^ John Siracusa. "Mac OS X 10.6 Schneeleopard: Die ARS Technica Review". ARS Technica LLC. Archiviert Aus dem Original am 9. Oktober 2009. Abgerufen 20. Juni, 2010.
  88. ^ "Mac OS X -Technologie". Apple Inc. archiviert aus das Original am 28. März 2011. Abgerufen 19. November, 2012.
  89. ^ "Also haben wir keine Lösung für Catalina ... noch". Codeweavers Blog. Archiviert vom Original am 29. September 2021. Abgerufen 29. September, 2021.
  90. ^ Thomasen, Ken (11. Dezember 2019). "Win32 auf macos". Archiviert vom Original am 11. November 2020. Abgerufen 29. September, 2021.
  91. ^ "Microsoft erhöht das Tempolimit mit der Verfügbarkeit von 64-Bit-Editionen von Windows Server 2003 und Windows XP Professional | News Center". news.microsoft.com. Archiviert Aus dem Original am 25. Februar 2015. Abgerufen 14. August, 2016.
  92. ^ "Eine Beschreibung der X64-basierten Versionen von Windows Server 2003 und von Windows XP Professional X64 Edition". Microsoft -Unterstützung. Archiviert vom Original am 20. April 2016. Abgerufen 14. August, 2016.
  93. ^ "Windows Server 2003 SP1 Administration Tools Pack". Microsoft Download Center. Archiviert von das Original am 27. August 2016. Abgerufen 14. August, 2016.
  94. ^ a b "/Largeaddressaware (große Adressen bearbeiten)". Visual Studio 2005 Dokumentation - Visual C ++ - Linkeroptionen. Microsoft. Archiviert Aus dem Original am 1. Juli 2010. Abgerufen 19. Juni, 2010. Die Option /largeaddressaware teilt dem Linker mit, dass die Anwendung Adressen mehr als 2 Gigabyte verarbeiten kann.
  95. ^ a b c Matt Pietrek (Mai 2006). "Alles, was Sie wissen müssen, um 64-Bit-Windows-Systeme zu programmieren". Microsoft. Archiviert Aus dem Original am 20. Juni 2010. Abgerufen 24. Mai, 2010.
  96. ^ Chris St. Amand (Januar 2006). "Der Schritt zu x64 machen". Microsoft. Archiviert Aus dem Original am 18. Juni 2010. Abgerufen 24. Mai, 2010.
  97. ^ "Hinter Windows X86-64s 44-Bit-Virtual-Speicher-Adressierungsgrenze". Archiviert Aus dem Original am 23. Dezember 2008. Abgerufen 2. Juli, 2009.
  98. ^ a b "64-Bit-Programmierung für Spieleentwickler". Archiviert Aus dem Original am 11. November 2012. Abgerufen 21. August, 2013.
  99. ^ "Speichergrenzen für Windows -Releases". Microsoft. Archiviert Aus dem Original am 22. Juni 2010 2010. Abgerufen 20. Februar, 2013.
  100. ^ "Allgemeine Portierungsrichtlinien". Programmierhandbuch für 64-Bit-Fenster. Microsoft Docs. Archiviert vom Original am 28. Februar 2021. Abgerufen 25. Dezember, 2021.
  101. ^ "Treiberverlauf für Microsoft SQL Server". Microsoft Docs. Abgerufen 25. Dezember, 2021.
  102. ^ "Der Microsoft Ole DB-Anbieter für Jet- und Jet ODBC-Treiber ist nur in 32-Bit-Versionen erhältlich.". Bürozugang. Microsoft Docs. KB957570. Archiviert Aus dem Original am 8. Januar 2022. Abgerufen 25. Dezember, 2021.
  103. ^ Anand Lal Shimpi (21. Mai 2013). "Die Xbox One: Hardwareanalyse & Vergleich mit PlayStation 4". Anandtech. Archiviert Aus dem Original am 7. Juni 2013. Abgerufen 22. Mai, 2013.
  104. ^ "Der technische Spezifikationstest: Xbox One vs. PlayStation 4". Wildinformer. May 21, 2013. Archiviert Aus dem Original am 7. Juni 2013. Abgerufen 22. Mai, 2013.
  105. ^ "Was Sie von Sony 'PlayStation 5' im November erwarten können". Der indische Express. 31. August 2020. Archiviert Aus dem Original am 19. September 2020. Abgerufen 14. September, 2020.
  106. ^ Cutress, Dr. Ian. "Hot Chips 2020 Live -Blog: Microsoft Xbox Series X System Architecture (18:00 PT)". www.anandtech.com. Archiviert vom Original am 17. September 2020. Abgerufen 14. September, 2020.
  107. ^ "Processorarchitecture Fields". Archiviert Aus dem Original am 28. April 2015. Abgerufen 4. September, 2013.
  108. ^ "Eine Beispieldatei von Linux 3.7.8 Kernel Source -Baum mit der Verwendung des Begriffs x86_64". Archiviert von das Original am 23. September 2005. Abgerufen 17. Februar, 2013.
  109. ^ US 6877084 
  110. ^ US 6889312 
  111. ^ US 6732258 
  112. ^ "Patent -Kreuz -Lizenzvereinbarung zwischen AMD und Intel". 1. Januar 2001. archiviert von das Original am 21. Juni 2007. Abgerufen 23. August, 2009.
  113. ^ "AMD -Intel -Vergleichsvereinbarung". Archiviert Aus dem Original am 7. Juli 2017. Abgerufen 18. September, 2017.
  114. ^ Stephen Shankland und Jonathan E. Skillings (12. November 2009). "Intel zur Zahlung von AMD $ 1,25 Mrd. an Kartellverträgen". CNET. Archiviert von das Original am 8. November 2012. Abgerufen 24. April, 2012.
  115. ^ Smith, Ryan (12. November 2009). "AMD und Intel regeln ihre Unterschiede: AMD kann fabless gern gehen". Anandtech. Archiviert von das Original am 13. Mai 2010.

Externe Links