Movatterモバイル変換


[0]ホーム

URL:


Zum Inhalt springen
WikipediaDie freie Enzyklopädie
Suche

x64

aus Wikipedia, der freien Enzyklopädie

In derInformatik istx64 eine64-Bit-Befehlssatzarchitektur, die auf derx86-Architektur basiert und beiPCs seit 2003 Verbreitung findet. Alternative Bezeichnungen sindx86-64 (auch in der Schreibweise „x86_64“) undAMD64 (auch in Kleinschreibung: „amd64“).

Dax86-Prozessorenrückwärts-kompatibel ausgelegt sind, bieten auch x64-Prozessoren neben dem 64-Bit-Betriebsmodus ebenfalls den bisherigen 32-Bit- sowie die ursprünglichen 16-Bit-Modi. Damit ergänzt x64 dieIntel Architecture 32-Bit bzw. kurzIA-32 um einen 64-Bit-Betriebsmodus.

Implementierungen

[Bearbeiten |Quelltext bearbeiten]

x64 wird sowohl durch AMD als auch durch Intelimplementiert:

Die Implementierungen von AMD und Intel weisen im Detail Unterschiede auf, die jedoch in der Praxis kaum Auswirkungen haben. Nicht nur die Bezeichnung „x64“ (wie z. B. von Windows genutzt), sondern auch „amd64“ (wie z. B. von Linux genutzt, aber teilweise auch von Windows[2]) und „x86-64“ (der Entwicklungsname von AMD64) stehen somit für beide Implementierungen gleichermaßen.[3]

Andere Hersteller sind mit AMD64 und Intel 64 kompatibel, ohne dass deren x86-64-Befehlssatzerweiterung eine eigene Bezeichnung hätte. Dies ist z. B. beiVIA/Centaur der Fall: die 2008 vorgestelltenNano-x86-Prozessoren der von Grund auf neu entwickeltenIsaiah-Mikroarchitektur bieten einen kompatiblen 64-Bit-Modus.[4][5]

Geschichte

[Bearbeiten |Quelltext bearbeiten]

Diex86-64-Architektur entstand als Gegenentwurf zurItanium-Architektur „IA-64“ von Intel undHewlett Packard. Während Intel eine ganz neue64-Bit-Architektur erschuf, die mit der damals und auch danach in PCs meistverwendetenIA-32-Architektur nur wenig gemeinsam hatte, wählte AMD einen weit weniger radikalen Ansatz: Als Erweiterung des bestehendenBefehlssatzes ist ein 64-Bit-x86-Prozessor ebenfalls ein vollwertiger 32-Bit-x86-Prozessor, nur mit zusätzlichen Befehlen und Modi, die im hinzugekommenen Betriebsmodus verbreiterteRegister zur Verfügung stellen. Dadurch bleibt dieBefehlssatzarchitektur und die Kompatibität zu bestehender Software erhalten.

Intel stellte die ersten IA-64-Prozessoren (IA-64entspricht Itanium) am 4. Oktober 1999 vor.[6] Tags darauf kündigte AMD seinen Gegenentwurf an[7] und veröffentlichte die „x86-64“-Spezifikation im August 2000.[8] Intel brachte dieerste Generation des Itanium im Juni 2001 heraus und schob noch 2002 diezweite Generation hinterher. Bei AMD dauerte es bis zum April 2003, bis die erstenOpteron mit der nun „AMD64“ getauften 64-Bit-Erweiterung verfügbar wurden. Sie wurden so gut vom Markt angenommen, dass Intel ab Juni 2004 begann, die erstenXeon-Prozessoren („Nocona“) mit der kompatiblen „EM64T“-64-Bit-Erweiterung auszustatten.

Nun stattete AMD alle Modellreihen mit der AMD64-Erweiterung aus, während Intel bei 64-Bit noch auf die Itanium-Reihe setzte – erst im Juli 2006 wurden die ersten Desktop- und Mobilprozessoren derCore-2-Reihe mit der nun „Intel 64“ getauften Architektur verkauft. Alle Folgegenerationen IA-32-kompatibler Prozessoren von AMD und Intel sind seither als 64-Bit-Architektur ausgelegt, zuletzt dieAtom-Prozessoren von Intel ab 2008. Andere Hersteller folgten der Marktentwicklung, der 64-Bit-VIA-Nano etwa wurde ab Januar 2008 verfügbar.

Bezeichnungen

[Bearbeiten |Quelltext bearbeiten]

Geschichtlich wurde die 64-Bit-Befehlssatzerweiterung für die bestehende x86-Architektur, die von Intel IA-32 genannt wird, ab 1999 von AMD unter dem Namen „x86-64“ entwickelt. Auf einigen Systemen wurde sie auchx86_64 genannt, weil einBindestrich in einigen Situationen alsTrennzeichen interpretiert wird. Dies ist z. B. beimLinux-Kernel, aber u. a. auch beiXNU (dem Kernel vonDarwin und damit u. a.macOS) der Fall, weshalb auchuname die Schreibweise mitUnterstrich ausgibt. Als die erstenOpteron-Prozessoren von AMD 2003 mit der 64-Bit-Erweiterung vorgestellt wurden, änderte AMD den Namen dafür in „AMD64“.[3] Die meisten Linux-Distributionen nutzen daher die offizielle Bezeichnungamd64 zur Kennzeichnung von 64-Bit-x86, wie auch der Kernel vonFreeBSD beiuname. Für 32-Bit-x86 unterscheidet indes nicht nur Linux bereits nach den Befehlssatzerweiterungen, die nach dem „i386“ (die erste32-Bit-Architektur von Intel, ohne Erweiterungen) kamen, etwa „i586“ (i386 mit den Erweiterungen desPentium) oder „i686“ (die Erweiterungen desPentium Pro bzw.Pentium II, auchP6-Generation genannt, d. h. mit zumindestMMX undSSE) oder sogar „i686-pae“ (i686, zusätzlich mit derPAE-Erweiterung). Bei „amd64“ ist auf jeden Fall dieSSE2-Erweiterung des Prozessors nutzbar.

Architektur16-Bit32-Bit64-Bit
 x8680x86,x86-16ab8086/8088
 IA-32:Intel Architecture 32-Bit i386 –i686,x86-32ab80386
x64x86-64, amd64abOpteron
x86-S oder x86Smögl. zukünftig
IA-64 Intel Architecture 64-Bit(IA-32-Emulation)Itanium
Itanium 2

Die Bezeichnungx64 (für 64-Bit) wurde, angelehnt an „x86“, vonMicrosoft undSun eingeführt. Teilweise wurde die 32-Bit-x86-Architektur („IA-32“) daraufhin auch als „x32“ (für 32-Bit) oder x86-32 bezeichnet, da beide technisch gesehen x86-Befehlssätze darstellen. Da Intel die x86-ISA („Instruction Set Architecture“) später IA-32 nannte und mit IA-64 (Itanium) eine neue, aber inkompatible 64-Bit-Architektur einwickelte, entsteht oft Verwirrung zwischen den Begriffen „x64“ und „IA-64“: Als Befehlssatzerweiterung ist x64 Teil der x86-Architektur und eine Erweiterung von IA-32, denn jeder Prozessor mit x64-Befehlssatz ist auch ein vollwertiger 32-Bit- und 16-Bit-x86-Prozessor – IA-64 („Intel Architecture 64-Bit“) hingegen wird auch als dieItanium-Architektur bezeichnet, die nicht x86-kompatibel ist und daher im Grundsatz auch nichts mit x64 oder IA-32 zu tun hat (außer einer IA-32-Emulation bei der ersten Itanium-Generation – da IA-64 von Intel als Nachfolger von IA-32 geplant war, wollte man so die Möglichkeit eines sanften Übergangs schaffen, allerdings war die Emulation sehr langsam und somit überwiegend unbrauchbar).

Siehe auch:x86-Architektur#Nomenklatur undIA-32#Nomenklatur

Betriebssystem-Unterstützung

[Bearbeiten |Quelltext bearbeiten]

Das ersteBetriebssystem, das eine funktionierende Unterstützung für den 64-Bit-Modus der AMD64-Prozessoren bot, warLinux (offizielle Einführung in denLinux-Kernel 1. März 2002).[9] Von Microsoft war seit April 2005 dieWindows XP Professional x64 Edition für 64-Bit-x86 verfügbar, die allerdings nur als Zwischenlösung gedacht war, bisWindows Vista im Januar 2007 auf den Markt kam.

Die x64-Edition vonWindows XP wurde von Microsoft nur sehr zurückhaltend als OEM- und Systembuilder-Version vermarktet, um den „Support“-Aufwand in Grenzen zu halten und die zukünftigenVista-Verkäufe nicht zu gefährden. Es gibt keine Home-Variante, keine Schachtel-Version für den Einzelhandel und keine vollständige Lokalisierung für Sprachen außer Englisch. Allerdings ist es möglich, diese Version mit MUI-(Multi User Interface)-Packs zu „übersetzen“.

Mac OS X (seit 2016 „macOS“) unterstützt die x64-Architektur seit Beginn der Umstellung seiner Plattform vonPowerPC zu Intel-Prozessoren im Jahr 2006, der KernelXNU lief jedoch auch auf 64-Bit-Intel-CPUs anfangs im 32-Bit-Kompatibilitätsmodus desLong Mode. Der erste 64-Bit-Kernel wurde inSnow Leopard Ende 2009 verfügbar gemacht und wurde bei einigenMacs automatisch verwendet, wenn die Voraussetzungen dafür gegeben waren: neben einem 64-Bit-Prozessor ist dies auch eine in 64-Bit implementierteFirmware (EFI war zuanfangs teilweise als 32-Bit-Variante implementiert) und die Verfügbarkeit aller benötigtenTreiber auch in 64-Bit (bei einigen Mac-Modellen waren essentielle Treiber stets nur in 32-Bit-Ausführung verfügbar, z. B. für die Grafikkarte).[10] Seit dem Mitte 2012 veröffentlichtenMountain Lion ist nur noch ein 64-Bit-Kernel vorhanden.

Auch die drei wichtigstenBSD-Derivate unterstützen die AMD64-Architektur:FreeBSD,NetBSD sowieOpenBSD (ab Version 3.5).

Architektur

[Bearbeiten |Quelltext bearbeiten]

Alle Register haben bei AMD64 eine Breite von 64 Bit. Wenn der Prozessor im 32-Bit-Kompatibilitätsmodus läuft, werden die obersten 32 Bit jedes Registers auf 0 gesetzt. Im 64-Bit-Modus bietet der Prozessor außerdem je 8 zusätzliche Integer- undSSE-Register, die im 32-Bit-Modus aus Kompatibilitätsgründen nicht verfügbar sind.

Die AMD64-Architektur besitzt folgende Anwendungsregister, die in normalen Anwendungsprogrammen zur Verfügung stehen:

Allgemeine Register (je 64 Bit)
Name(ursprüngliche) Bedeutung
RAXAkkumulator
RBXBase Register
RCXCounter
RDXData Register
RBPBase-Pointer
RSISource-Index
RDIDestination-Index
RSPStack-Pointer
R8…R15Register 8 bis 15
64-Bit-Media-/80-Bit-Gleitkommaregister
NameBedeutungHinweis
ST(0) … ST(7)FPU-Register 0 … 7werden
gemeinsam genutzt
MMX0 … MMX7MMX-Register 0 … 7
64-Bit-Media-/80-Bit-Gleitkommaregister
NameBedeutung
XMM0 … XMM7SSE-Register 0 … 7
XMM8 … XMM15SSE-Register 8 … 15
Sonstige Register
NameBedeutung
RIP64-Bit-Instruction-Pointer (Befehlszeiger)
RFLAGS64-Bit-Flagregister (Statusregister)
FSWFPU state word
FCWFPU control word
FTWFPU tag word

Die gelb hinterlegten Register R8–R15 und XMM8–XMM15 stehen ausschließlich im 64-Bit-Modus zur Verfügung. Die Register RAX–RSP sowie RFLAGS und RIP sind im 32-Bit-Modus nur 32 Bit groß und heißen dort EAX–ESP, EFLAGS und EIP, wie schon beim80386. Der Zugriff auf die 64-Bit-Register erfolgt über neu eingeführte Befehlspräfixe. Hierfür werdenOpcodes verwendet, welche im 32-Bit-Modus bereits für andere Befehle stehen. Aus diesem Grund sind die 64-Bit-Register – anders als die 32-Bit-Präfixe, die auch im 16-Bit-Modus zur Verfügung stehen – nur im 64-Bit-Modus verfügbar.

Für Gleitkommaoperationen ist zwar aus Kompatibilitätsgründen einex87-FPU auf dem Prozessor vorhanden. Der Hersteller empfiehlt jedoch, für Gleitkommaberechnungen generell nur noch die problemärmereSSE-Einheit zu benutzen. Problematisch ist hierbei allerdings, dass die SSE-Einheit bis heute keine transzendenten Funktionen (Sinus, Cosinus,Arcustangens,Logarithmus) beherrscht; diese müssen weiterhin über die x87-FPU berechnet oder per Software emuliert werden. Außerdem beherrscht die SSE-Einheit nur 64-Bit-Gleitkommaarithmetik, während die x87-FPU-Einheit je nach Einstellung des FPU Control Words mit bis zu 80-Bit-Gleitkommaarithmetik arbeitet, obwohl die mit der SSE-Einheit unterstützen einfachen Fließkommabefehle die gleiche Latenz/Ausführungszeit haben, wie die FP-Befehle des 80x87. Außerdem bestehen die Opcodes des 80x87 nur aus 2 Bytes, während die der SSE-Befehle aus mindestens 3 Bytes (doppelte Genauigkeit wird mit Präfix 066h „umgeschaltet“, d. h. sogar 4 Bytes pro Befehl) bestehen, was bis heute den 80x87-Code wesentlich kompakter macht. Komplexere Funktionen, für welche der 80x87 (z. B. fsin, fsincos, fptan, f2xm1, fyl2x …, siehe oben) 2-Byte Rechenbefehle hatten, müssen mit SSE mithilfe der vier Grundrechenarten über Reihenentwicklung simuliert werden, was den Codecache des Prozessors belastet und die Rechengenauigkeit negativ beeinflusst.

Während heutzutage die üblichen Compiler im 64-Bit-Modus nur noch SSE-Befehle zur Fließkommaarithmetik benutzen (auch für skalare Berechnungen), muss man erwähnen, dass auch im 64-Bit-Modus die „alten“ 80x87-Befehle nach wie vor funktionieren – sie werden aber eben nicht mehr bei der Übersetzung des Quellcodes benutzt. Dabei wäre sogar eine gemeinsame Verwendung von SSE- und 80x87-Befehlen ist auch im 64-Bit-Modus möglich, ein Datenaustausch zwischen den Registerebenen ist jedoch nur über temporäre Speicherung im RAM möglich, weil eine Implementation vergessen wurde oder als nicht wichtig betrachtet wurde: Direkte Austauschbefehle existieren nicht (z. B. der einfache Befehl „kopiere x87-Register ST(3) nach Register XMM0 mit doppelter Genauigkeit an die Position, welche in Register CL benannt wird“, würde aussehen wie „fstd XMM0, ST(3),CL“, in umgekehrter Ladeoperation „fldd ST(3), XMM0, CL“).

Da im 64-Bit-Modus keineSpeichersegmentierung mehr unterstützt wird, könnenSystemaufrufe stark beschleunigt werden, da keine Segmentierungsinformationen mehr gespeichert und wiederhergestellt werden müssen. AMD trug dem durch Einführung eines neuenSYSCALL-Maschinenbefehls Rechnung. Obwohl man theoretisch auch im 64-Bit-Modus wie bisher über Interrupts oder denSYSENTER-Befehl einen Systemaufruf durchführen könnte, istSYSCALL schneller.

Maximaler Arbeitsspeicher

[Bearbeiten |Quelltext bearbeiten]

Einer der Hauptgründe, AMD64 derx86-Architektur vorzuziehen, ist die Möglichkeit, mehrArbeitsspeicher zu verwenden. Übersteigt der installierte Arbeitsspeicher den maximalen Adressraum einer CPU, dann bleibt der Arbeitsspeicher, der jenseits des Adressraums liegt, ungenutzt. Die Speichergrößengrenzen entsprechender Prozessoren liegen bei …

Adressraum
CPUphysischlinear/logisch
bzw. virtuell
80861 MiB (220 Byte)64 KiB (216 Byte)
8028616 MiB (224 Byte)64 KiB (216 Byte)
80386SX16 MiB (224 Byte)4 GiB (232 Byte)
ab 80386DX4 GiB (232 Byte)4 GiB (232 Byte)
Pentium Pro/
AMD Athlon
64 GiB (236 Byte)4 GiB (232 Byte)
CPUs mit AMD641 TiB (240 Byte)
oder 256 TiB (248 Byte)
256 TiB (248 Byte)

Bei AMD64 ist die Breite einervirtuellen Adresse 48 Bit. Das heißt, ein Prozess kann 256 TiB adressieren. Während die bei der Einführung von AMD64 üblichen AMD-Prozessoren der GenerationK8 noch 40 Adressier-Pins besaßen und damit physisch nur 1 TiB Speicher adressieren konnten, hat die Prozessoren-GenerationK10 die vollen 48 Adressier-Pins, womit nun auch physisch 256 TiB Speicher adressierbar sind.

Registererweiterung

[Bearbeiten |Quelltext bearbeiten]

Die Verdoppelung der Registerzahl des allgemeinen Rechenwerks ist im Befehlssatz unabhängig vom 64-Bit-Transfer vorhanden. Die Implementierung der AMD64-Erweiterung in den CPUs beinhaltet diese Erweiterung jedoch immer. ModerneCompiler können so häufiger Zwischenwerte von Berechnungen in CPU-Registern ablegen, statt in den Hauptspeicher auszulagern. Komplexe Berechnungen werden dadurch beschleunigt, so dass rechenintensive Programme davon profitieren.

Gleichzeitig wurde mit AMD64 eine neueAufrufkonvention[11] fürProgrammfunktionen (ABI) eingeführt. Bei dieser Aufrufkonvention werden Funktionsparameter nicht mehr überwiegend über den Programmstack transferiert, wie bei den klassischenx86-32-Aufrufkonventionen, sondern in der Regel in Registern übergeben. Dieses registerorientierte ABI, welches bei anderen Prozessorfamilien (wie PowerPC) schon länger üblich ist, wurde durch die Registererweiterung möglich und kann zu einer Beschleunigung rechenintensiver Programme führen.

Betriebsmodi

[Bearbeiten |Quelltext bearbeiten]

Es lassen sich zwei grundsätzliche Betriebsmodi unterscheiden:

  • Legacy Mode: Hierunter fallen alle „alten“ Betriebsmodi der x86-Architektur, alsoReal Mode,Protected Mode undSystem Management Mode.
  • Long Mode (AMD64) oderIA-32e Mode (Intel 64): Dieser Betriebsmodus besteht aus zwei Submodi:
    • 64-Bit Mode: Der „echte“ 64-Bit-Mode für 64-bittige Anwendungen auf einem 64-Bit-Betriebssystem.
    • Compatibility Mode: Dieser Mode dient dazu, 32-bittige Anwendungen auch auf einem 64-Bit-Betriebssystem ausführen zu können. Die Anwendung „sieht“ dabei eine Umgebung, die demProtected Mode zu entsprechen scheint. In Wahrheit werden aber dennoch Mechanismen der AMD64-Architektur benutzt, wie etwa eine vierstufige Seitentabellen-Hierarchie. Ebenso werden 16-Bit-Protected-Mode-Programme imCompatibility Mode unterstützt, nicht jedochReal-Mode-Programme, die imLegacy Mode in einerVirtual-8086-Mode-Umgebung ausgeführt werden. DerCompatibility Mode muss explizit vom Betriebssystem unterstützt werden und kann dann für ein einzelnesCodesegment aktiviert werden.

Beim Systemstart befindet sich jeder x86-Prozessor zunächst im 16-Bit-ModusReal Mode, was der Kompatibilität zum8086 von Intel geschuldet ist. Verwendet ein PC einBIOS, so bleibt der Prozessor zunächst imReal Mode, bis das Betriebssystem startet. Daher sind alle BIOS-Bootloader 16-Bit-Programme und erst das Betriebssystem, bzw. dessen Kernel, schaltet in den 32-Bit- oder 64-Bit-Modus.UEFI andererseits schaltet entweder in den 32-Bit-ModusProtected Mode, um ein 32-Bit-EFI-Programm zu starten, oder in den 64-Bit-ModusLong Mode, um ein 64-Bit-EFI-Programm zu starten. Dieses EFI-Programm istz. B. der Bootloader für das Betriebssystem. Das ist der Grund, warum ein 32-Bit-UEFI normalerweise kein 64-Bit-Betriebssystem starten kann. Bei einigen Betriebssystemversionen gibt es deshalb einenCross-Bit-Depth-Bootprozess, der aus einem 32-Bit-EFI heraus ein 64-Bit-Betriebssystem starten kann, jedoch muss dabei sowohl der 32-Bit-EFI-Loader als auch der 64-Bit-Betriebssystemkernel passend konfiguriert sein.[12]

Nutzen der 64-Bit-Erweiterung

[Bearbeiten |Quelltext bearbeiten]
Nachteil – Speicherverbrauch
Alle Adresswerte sind 64 Bit statt 32 Bit breit. Ihre Speicherung verbraucht daher im RAM und in den Caches doppelt so viel Platz und bei Bewegungen zwischen RAM und CPU müssen somit doppelt so viele Bytes bewegt werden. Sichtbar wird dieses in den erzeugten Programmdateien, die im Vergleich zum 32-Bit-Programm etwa 25 bis 30 Prozent größer sind. Allerdings wurde im 64-Bit-Modus eineIP-relative Adressierung mit vorzeichenbehafteten 32-Bit-Offsets eingeführt. Damit wird eine Zunahme der Befehlslänge verhindert.
FürLinux wurde aus diesem Grund diex32-ABI geschaffen, welche nur 32 Bit breite Adressen verwendet, aber trotzdem in Genuss der anderen Vorteile von AMD64 (wie z. B. mehr Register) kommt.
Neutral – Vektoroperation
Die SSE-Einheit übernimmt den weitaus größten Teil der Berechnungen für Multimedia und Mathematik, sowohl für Gleitkommawerte als auch für ganzzahlige gepackte Zahlen mit mehreren Werten, darunter vor allem Vektoren und Matrizen. Die Erweiterung der ALU-Register auf 64 Bit tangiert diese Einheit gar nicht, da die SSE-Register schon immer 128 Bit breit waren, so dass SSE-Berechnungen unverändert ablaufen. Die nachfolgend genannte Verdoppelung der Registerzahl betrifft jedoch auch die SSE-Mediaregister.
Vorteil – mehr Speicher pro Prozess
Die Grenze der klassischenIA-32-Architektur von 2 (bzw. 4) GiB adressierbarem Hauptspeicher pro Prozess („linearer Adressraum“) entfällt.
Vorteil – Registeranzahl
Zusätzlich zur 64-Bit-Aufweitung weist die AMD64-Architektur eine doppelte Zahl an allgemeinen Registern auf. Das ist vorteilhaft bei vielen Zwischenwerten in einer Prozedur, die nicht mehr zeitweise auf denAufrufstapel im Hauptspeicher ausgelagert werden müssen. Da die althergebrachten acht Register schon immer knapp waren, setzt man hier 25 bis 30 Prozent[13] Geschwindigkeitsvorteil bei Programmen imLong Mode an. Dieser Vorteil existiert nicht nur bei der Nutzung von 64-Bit großen Zeigern (nativer 64-Bit-Modus), sondern auch bei 32-Bit-Zeigern (32-Bit-Modus von x64), wie z. B. beimx32-ABI. Zusätzlich ist eine neue Funktionsaufruf-Konvention eingeführt worden, die die zusätzlichen Register zur Übergabe von Funktionsparametern vorschreibt. Diese Art der Parameterübergabe ist deutlich schneller als die herkömmliche Parameterübergabe auf dem Stapelspeicher.
Vorteil – Adressbreite
Wenn Datenmengen im Gigabyte-Bereich verarbeitet werden, entfallen aufwendige Zugriffsberechnungen mit 32-Bit-Differenzen zu Basisadressen. Insbesondere beherrschen alle modernen Betriebssysteme das Einblenden von Dateien auf der Festplatte in den Hauptspeicher (virtual file mapping): Statt stückweiser Abarbeitung kann nun im Prinzip die gesamte Festplatte für den Direktzugriff in einem Stück eingeblendet werden. Hilfsfunktionen mit Dateizeigern entfallen und degenerieren zu einfachenALU-Operationen.
Vorteil – Vektoreinheiten
Sollen 32-Bit-Programme auch auf älteren Prozessoren laufen, können diese Programme keine SSE-Einheit voraussetzen und werden meistens ohne SSE-Unterstützung kompiliert. Alle AMD64-fähigen Prozessoren verfügen hingegen mindestens über SSE2, das somit bei 64-Bit-Software immer zur Verfügung steht.
Vorteil – 64-Bit-Register für Integerarithmetik
Anwendungen, die auf Integerarithmetik angewiesen sind, profitieren sehr davon, dass Multiplikationen mit ganzen Zahlen größer als 32 Bit erheblich schneller verarbeitet werden. Beispielsweise wird für die Verarbeitung von 64-Bit-Ganzzahlen auf 32-Bit-Systemen etwa das 2,5 Fache an Rechenzeit benötigt.[14] Dies kann zum Beispiel Kryptographie und Audio- beziehungsweise Videoencodingsoftware betreffen.

Der letztgenannte Vorteil betrifft vor allem Datenbanken und die Videobearbeitung, die von der Aufweitung von Adressen auf 64 Bit erheblich profitiert. Die SSE-Einheit bestimmt weitgehend die Abarbeitung von Spielen und mathematischen Programmen – soweit sie komplexe Teilberechnungen auf wenigen Speicherobjekten beinhalten, profitieren diese stärker von den Vorteilen. Das betrifft vor allem Bereiche der 3D-Modellierung.

Grundsätzlich ist der Nutzen stark spezifisch für jede Anwendung und die eingesetzten Algorithmen: Viele alte Programme verwenden auf 32 Bit optimierte Algorithmen, die erst nach Anpassung durch Programmierer von der 64-Bit-Erweiterung profitieren können. Das betrifft sowohl mathematische Hilfsfunktionen (auch Multimedia und Spiele) als auch die Speicherverwaltung. Viele Programme aus dem Unix-Bereich haben hierbei einen Vorsprung, da dort 64-Bit-Architekturen schon lange üblich sind.

Weiterentwicklung

[Bearbeiten |Quelltext bearbeiten]

Im Gegensatz zu einigen anderen Architekturen wird x86-64 seit seiner Einführung 2003 aktiv weiterentwickelt, sodass sich bereits in den 2010er Jahren das Problem ergab, dass Code für die erste, ursprünglich auf der AMD-K8-Architektur aufgebauten Version von x86-64 und nicht für aktuelle x64-Systeme optimiert war. Da dies nicht mehr zeitgemäß ist, schlossen sich 2020 AMD, Intel,Red Hat undSUSE zusammen, um Versionen von x86-64 zu definieren. Diese sind alsBinärschnittstellen-Profile (ABIs) verfügbar und können dazu verwendet werden, optimierten Code zu erzeugen.[15] Die Profile sind fürUnix undunixartige Systeme, die aufSystem V basieren, als „psABI“ (ps steht für „Processor Supplement“) zusammengefasst.[16] UnterLinux fanden in der ersten Hälfte der 2020er Jahre bei diversenDistributionen Diskussionen darüber statt, auf x86-64-v2 zu wechseln, was aber teilweise verworfen wurde, da man ältere x86-Prozessoren nicht ausschließen wollte. Die Geschwindigkeitssteigerungen sind nur bei ausgesuchten Anwendungen signifikant.[17][18]

InMikroarchitekturen ausgedrückt bedeutet das:

Auf dem weit verbreiteten BetriebssystemWindows vonMicrosoft gibt es zwar keine vergleichbaren Profile, allerdings gibt indirekt das Betriebssystem selbst eine Basis-Optimierung für den Code der Windows-Programme vor. So wurde die erste Generation von x86-64 nur bisWindows 7 unterstützt, bereits abWindows 8 – veröffentlicht Ende 2012 – sind die BefehleCMPXCHG16b,PrefetchW und LAHF/SAHF Voraussetzung.

x86-S oder x86S

Im Mai 2023 hat Intel einWhitepaper veröffentlicht, in dem die Idee vorgestellt wird, die x86-Altlasten bei modernen x86-64-Prozessoren in Zukunft wegzulassen. Ein solcher x64-Prozessor hätte die alten Modi, 16-Bit-Real Mode und 16-Bit- wie auch 32-Bit-Protected Mode, wie es die 32-Bit-x86-Architektur IA-32 bzw. i386 aufweist, nicht mehr, daher auch „x86-S“ bzw. „x86S“: S fürenglischSimplification, also Vereinfachung. Moderne 64-Bit-Systeme nutzen ohnehin nur noch den 64-Bit-Long Mode, in dem unter einem 64-Bit-Betriebssystem auch 32-Bit-Software weiterhin ausgeführt werden kann.[19][20] Die meist überflüssigen, nicht mehr verwendeten Teile des Prozessors würden nicht nur wegfallen, ohne sie könnte die x86-Architektur auch effizienter und sicherer werden.[21]

Wann erste Prozessoren ohne 16- und 32-Bit-Altlasten (englischLegacy) erscheinen könnten, ist noch offen, aber es sind vermutlich noch ein paar Jahre.[22]

Weblinks

[Bearbeiten |Quelltext bearbeiten]

Einzelnachweise

[Bearbeiten |Quelltext bearbeiten]
  1. Chris Lomont: Introduction to x64 Assembly. In: Intel Developer Zone. Intel, 19. März 2012, abgerufen am 20. November 2016 (englisch): „x64 is a generic name for the 64-bit extensions to Intel's and AMD's 32-bit x86 instruction set architecture (ISA). AMD introduced the first version of x64, initially called x86-64 and later renamed AMD64. Intel named their implementation IA-32e and then EMT64. There are some slight incompatibilities between the two versions, but most code works fine on both versions;“ 
  2. BeemerBiker: Q: WAIK-Difference of x86, amd64 and ia64? (Forum) In: Microsoft Community. Microsoft, 25. Februar 2011, abgerufen am 6. Januar 2018 (englisch): „I installed Windows Automated Installation Kit and got three directories named x86, IA64 and AMD64. I expected to see x64.“ 
  3. abChristof Windeck: 64-Bit-Namen. In:Heise online. 28. April 2008. Abgerufen am 19. November 2016.; Zitat: „In Bezug auf x86-Prozessoren mit 64-Bit-Erweiterung meinen x86-64, AMD64, EM64T, Intel 64 und x64 praktisch dasselbe.“.
  4. Andreas Stiller: VIA/Centaur stellt neue Prozessorarchitektur CN (Isaiah) vor. In:Heise online. 24. Januar 2008. Abgerufen am 8. Februar 2026.; Zitat: „Mit dem von Grund auf neu gestalteten Prozessor mit Codenamen CN oder Jesaja (Isaiah) will VIA Marktführer Intel im Niedrig-Energie- und -Preisbereich herausfordern.“.
  5. Nico Ernst: VIAs „Isaiah“ heißt jetzt „Nano“ und taktet bis 1,8 GHz. In: Golem.de. 29. Mai 2008, abgerufen am 8. Februar 2026: „Wie bereits berichtet, ist der Nano ein Out-of-Order-Prozessor mit 64-Bit-Registern und somit kompatibel zu AMD64 und Intel64.“ 
  6. Michael Kanellos: Intel Names Merced Chip Itanium. In: CNET News.com. 4. Oktober 1999, abgerufen am 7. August 2013 (englisch). 
  7. AMD Discloses New Technologies at Microprocessor Forum. In: press release. AMD, 5. Oktober 1999, abgerufen am 9. November 2010 (englisch). 
  8. AMD Releases x86-64 Architectural Specification; Enables Market Driven Migration to 64-Bit Computing. In: press release. AMD, 10. August 2000, abgerufen am 9. November 2010 (englisch). 
  9. Herbert Schmid: 64-Bit-Linux für AMDs Hammer offiziell. In:Heise online. 1. März 2002. Abgerufen am 6. Januar 2018.
  10. Prince McLean: Road to Mac OS X Snow Leopard: 64-bit to the Kernel. AppleInsider, 28. Oktober 2008, abgerufen am 13. Oktober 2018 (englisch). 
  11. Michael Matz, Jan Hubicka, Andreas Jaeger, Mark Mitchell: System V Application Binary Interface – AMD64 Architecture Processor Supplement – Draft Version 0.99.4. (PDF; 552 kB) 13. Januar 2010, abgerufen am 7. August 2013 (englisch). 
  12. Rod Smith: Boot 32bit UEFI from file. (Q&A) Antwort auf die gestellte Frage. In: superuser.com. Stack Exchange, 31. Januar 2016, abgerufen am 20. Januar 2018 (englisch, Roderick W. Smith ist Herausgeber des BootloadersrEFInd). 
  13. x86-64 Machine-Level Programming (PDF; 230 kB) S. 5–6,3.2 Assembly Code Example.
  14. Myth and Facts About 64-bit Linux. (PDF; 233 kB; englisch) – verschiedene Performancevergleiche von AMD64 und IA32, auf Seite 27 werden ganzzahlige Additionen auf 32- und 64-Bit-Systemen verglichen
  15. Florian Weimer: Building Red Hat Enterprise Linux 9 for the x86-64-v2 microarchitecture level. In: DeveloperBlog. Red Hat, 5. Januar 2021, abgerufen am 25. April 2023 (englisch, AbschnittBackground of the x86-64 microarchitecture levels): „In the summer of 2020, AMD, Intel, Red Hat, and SUSE collaborated to define three x86-64 microarchitecture levels on top of the x86-64 baseline.“ 
  16. Where is the x86-64 System V ABI documented? In: Stack Overflow. 8. August 2013, abgerufen am 25. April 2023 (englisch). 
  17. Provide a x86-64-v3 microarchitecture level port. In: Arch Linux RFCs. 2. März 2020, abgerufen am 6. Februar 2026 (englisch): „Moving the baseline to x86-64-v2 was discussed, but the gains were not considered enough to justify removal of support for hardware without SSE4.2.“ 
  18. Allan McRae: Provide a x86_64_v3 microarchitecture level port. (Internetforum) In: Arch Linux / RFCs / Merge Requests. 12. März 2021, abgerufen am 6. Februar 2026 (englisch). 
  19. Marie Pavlosky: Bit-Rauschen: Nvidia-Höhenflug, x86-Altlasten, Intel-Baupläne. In:Heise online. 19. Juni 2023. Abgerufen am 20. Juni 2023.; Zitat: „Kommende, einfachere 64-Bit-Prozessoren würden dann die Bezeichnung "x86S" tragen, das "S" steht für Simplification. 32-Bit-Anwendungen könnten dann so wie jetzt schon unter 64-Bit-Windows im WoW64-Subsystem laufen.“.
  20. Michael Larabel: Intel Publishes ‘X86-S’ Specification For 64-bit Only Architecture. Phoronix, 20. Mai 2023, abgerufen am 20. Juni 2023 (englisch). 
  21. Sanjiv Sathiah: Intel x86-S could bring a major 64-bit only revision to its chip architecture. Notebookcheck.net, 21. Mai 2023, abgerufen am 20. Juni 2023 (englisch): „Intel has outlined its plans to switch to 64-bit only CPU architecture in a new white paper it has published on its website. The chipmaker is seeking feedback on its architectural proposal which it hopes will lead to a more efficient, stable and secure user experience in the near future.“ 
  22. Valentin Sattler: x86S: Intel schlägt neuen Befehlssatz für 64-Bit-Systeme vor. In: PC Games Hardware. 21. Mai 2023, abgerufen am 20. Juni 2023: „Eine unmittelbare Einführung von x86S ist aber nicht zu erwarten. Stattdessen will das Unternehmen erst Feedback aus der Industrie sammeln und den neuen Befehlssatz entsprechend anpassen. Falls AMD mitzieht, wäre eine Änderung in einigen Jahren aber durchaus denkbar, sofern es durch den neuen Befehlssatz tatsächlich nennenswerte Vorteile gibt.“ 
Befehlssatzerweiterungen derx86-Architektur (16 Bit;32 Bit:IA-32;64 Bit:x64)
Betriebsmodi

Real ModeProtected ModeVirtual 8086 ModeSystem Management ModeLong ModeCompatibility Mode

Befehlssatzerweiterungen

x87PAENXAMD64/Intel 64 (x64) ⬝HTTVT-x/AMD-V/VIA VT3DNow!MMXSSESSE2PadLockSSE3SSSE3SSE4SSE4aSSE5F16CAVXCLMULAES-NIFMATSXBMIMPXSGX

Abgerufen von „https://de.wikipedia.org/w/index.php?title=X64&oldid=264085365
Kategorie:

[8]ページ先頭

©2009-2026 Movatter.jp