AMD64

Mikroarchitektur der AMD-K8-Generation für 64-Bit-Mikroprozessoren, die auf herkömmlichen 32-Bit-Prozessoren aufbaut und daher uneingeschränkt zu 32-Bit- und sogar 16-Bit-Software abwärtskompatibel ist
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 6. Dezember 2005 um 18:19 Uhr durch Tsca.bot (Diskussion | Beiträge) (Bot: ergänze: tr). Sie kann sich erheblich von der aktuellen Version unterscheiden.

AMDs AMD64-Prozessor-Architektur (erstmals eingeführt in AMDs K8 CPUs (Opteron/Athlon 64)) ist AMDs Einstieg in den 64-Bit Mikroprozessor-Markt. Früher war sie auch bekannt als x86-64. Intel verwendet die Technologie in seinen neueren x86-basierten Prozessoren unter dem Namen EM64T. Anders als die von Intel von Grund auf neuentwickelte 64-Bit-Architektur IA-64, die mit der heute in PCs meistverwendeten x86-Architektur nur wenig gemeinsam hat, wählte AMD einen weit weniger radikalen Ansatz: Der Chip ist ein vollwertiger 32-Bit-Prozessor, dessen Register im 64-bit-Modus verbreitert werden. Er ist dadurch uneingeschränkt zu heutiger 32-bit- und sogar alter 16-bit-Software abwärtskompatibel.

x86-64

Während der Entwicklung nannte AMD die Architektur noch x86-64. Kurz vor der Markteinführung der Prozessoren änderte AMD allerdings die Bezeichnung in AMD64. Manche behaupten, die Gerüchte um Intels "Yamhill"-Projekt seien der Grund gewesen, den Namen zu ändern. Das Projekt beschäftigte sich schon damals mit der Integration von AMDs 64Bit-Erweiterung in den Pentium-4-Prozessor. Neuerdings wird das Kürzel x64 von Microsoft und einigen Fachpublikationen für dieses erweiterte Programmiermodell verwendet.

Software-Unterstützung

Das erste Betriebssystem, das eine funktionierende Unterstützung für den 64-Bit-Modus der AMD64-Prozessoren bot, war Linux. Von Microsoft ist erst seit April 2005 die Windows XP Professional x64 Edition für AMD64 verfügbar, die allerdings nur eine Zwischenlösung ist, bis Windows Vista auf den Markt kommt. Die x64-Edition wird von Microsoft derzeit nur sehr zurückhaltend als OEM- und Systembuilder-Version vermarktet, um den Supportaufwand in Grenzen zu halten und die zukünftigen Vista-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 nicht-englische Sprachen.

Inzwischen gibt es auch die drei wichtigsten BSD-Derivate mit AMD64-Unterstützung: FreeBSD, NetBSD sowie OpenBSD. Der neueste BSD-Abkömmling DragonFly BSD arbeitet derzeit (September 2005) noch an der Portierung nach AMD64.

Architektonisches

AMD64 ist konzeptionell ein 64-bit Aufsatz auf einen AMD Athlon XP. Wenn man sich den Aufbau eines Athlon (K7) und eines Athlon 64 K8-Prozessors ansieht, stellt man eine 90%ige Ähnlichkeit fest. Alle Register sind bei AMD64 64 Bit lang; wenn der Prozessor im 32-bit-Kompatibilitätsmodus läuft, werden die obersten 32 Bit jedes Registers auf 0 gesetzt. Im 64-bit-Modus verfügt der Prozessor über je 8 zusätzliche Integer- und SSE-Register, die im 32-bit-Modus brach liegen müssen.

Die 64bit-Register haben folgende Bezeichnungen:

RAX - Akkumulator
RBX - Base Register
RCX - Counter
RDX - Data Register
RBP - Base-Pointer
RSI - Source-Index
RDI - Destination-Index
RSP - Stack-Pointer
RIP - Instruktion-Pointer
R8-R15

Für Fließkommaoperationen ist zwar aus Kompatibilitätsgründen eine x87-FPU auf dem Prozessor vorhanden, der Hersteller empfiehlt jedoch, für Fließkommaberechnungen generell nur noch die performantere und problemfreiere SSE-Einheit zu benutzen.

Da im 64-Bit-Modus keine Speichersegmentierung mehr unterstützt wird, können Systemaufrufe stark beschleunigt werden, da keine Segmentierungsinformationen mehr gespeichert und wiederhergestellt werden müssen. AMD trug dem durch Einführung einer neuen SYSCALL-Instruktion Rechnung. Obwohl man theoretisch auch im 64-Bit-Modus wie bisher über Interrupts oder die SYSENTER-Instruktion einen Systemaufruf einleiten könnte, ist SYSCALL schneller.

Maximaler Arbeitsspeicher

Einer der Hauptgründe, AMD64 der x86-Architektur vorzuziehen, ist die Möglichkeit, mehr Arbeitsspeicher zu verwenden. Übersteigt der installierte Arbeitsspeicher den maximalen Adressraum einer CPU, dann bleibt der Arbeitsspeicher, der jenseits des Adressraums liegt, ungenutzt. Die Adressgrenzen der x86-Prozessoren:

  • Ohne PAE 4 GiB für alle Tasks und Betriebssystem zusammen.
  • Ohne PAE 2 GiB (im Sonderfall 3 GiB) pro Task
  • Mit PAE 64 GiB für alle Tasks und Betriebssystem zusammen. (Beschränkt durch den 36-Bit breiten physischen Adressbus).

Bei AMD64 ist die Breite einer virtuellen Adresse 48 Bit, das heißt ein Task kann 256 TiB adressieren. Die AMD64-Prozessoren haben zur Zeit 40 Adresspins, physisch können sie also 1 TiB Speicher adressieren. Die physische Adressgrenze beträgt somit 1 TiB pro Task und für alle Tasks zusammen. Spätere Prozessoren können über mehr Adresspins einen größeren ansteuerbaren Arbeitsspeicher bieten, ohne dass Veränderungen an Betriebssystem oder gar Programmen notwendig wären.

Registererweiterung

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

Gleichzeitig wurde mit AMD64 ein neue Aufrufkonvention für Programmprozeduren (ABI) eingeführt, bei dem Parameter nicht mehr regelmäßig über den Programmstack laufen wie in den klassischen x86 Betriebsmodi, sondern in der Regel in Registern übergeben werden. Dieses registerorientierte ABI ist bei anderen Prozessorfamilien (wie PowerPC) schon länger üblich, und kann zu einer Beschleunigung rechenintensiver Programme führen.

Betriebsmodi

Ein AMD64-Prozessor kann sich in einem von "zweieinhalb" Betriebsmodi befinden:

  • Legacy-Mode – Wenn der Prozessor beim Start einen 32-bit-Kernel vorfindet, deaktiviert er seine 64-bit-Features und verhält sich prinzipiell wie ein Athlon XP
  • Long Mode – Dies ist der vollwertige 64-bit-Modus, in den er schaltet, wenn ein 64-bit-Kernel läuft.
  • Compatibility Mode – Hierbei handelt es sich um einen Untermodus des Long Mode, in den der Prozessor temporär schaltet, wenn auf einem 64-bit-System ein 32-bit-Programm ausgeführt werden soll. Einem solchen Programm präsentiert sich der Prozessor ebenfalls wie ein Athlon XP.

EM64T – AMD64 aus dem Hause Intel

Da AMD zwischenzeitlich viele namenhafte OEM-Hersteller ins AMD64-Boot holen konnte und außerdem in nicht allzu ferner Zeit der langsame Umstieg auf 64 Bit in Desktop- und Workstation-Rechnern ansteht, gehen derzeit fast alle Beobachter davon aus, dass AMD64 in Zukunft die bedeutendste 64-Bit-Architektur werden wird. Dies hat inzwischen auch Hauptkonkurrent Intel anerkannt und Prozessoren mit EM64T-Architektur (Extended Memory 64 Technology, auch bekannt als IA-32e) im Angebot. Dies geschah hauptsächlich, da Intels hauseigene IA-64-Architektur für den Desktop-Einsatz zu teuer ist und überdies noch immer mit einigen konzeptionellen Schwierigkeiten kämpft, zum anderen hatte aber auch Microsoft signalisiert, dass sie außer AMD64 keine weitere 64-Bit-Architektur auf dem Desktop unterstützen würden. Diese Entscheidung zwang Intel das erste Mal in der Firmengeschichte, Technologie des Hauptkonkurrenten AMD in ihren eigenen Produkten anzubieten. Bei EM64T handelt es sich um eine zum originalen AMD64 weitgehend kompatible Umsetzung der AMD64-Architektur in Intel-Prozessoren, gekürzt um AMD-spezifische Features wie Prefetching und 3DNow!, aber ergänzt um neue SSE3-Befehle. Ein weiterer wichtiger Unterschied ist die bei den gegenwärtig erhältlichen EM64T-Prozessoren fehlende IOMMU-Einheit. Dies führt dazu, dass bei EM64T anders als beim "echten" AMD64 keine direkten DMA-Zugriffe auf Speicherbereiche oberhalb von 4 GB möglich sind. Stattdessen muss der Betriebssystem-Kernel diese Fähigkeit in Software emulieren und die Daten zunächst in Puffer unterhalb der 4-GB-Grenze schreiben.

Intel hatte die AMD64-Architektur bereits vor einiger Zeit im Rahmen eines Lizenzaustausch-Abkommens mit AMD lizenziert, im Gegenzug darf AMD die Intel-Technologien SSE2 und SSE3 in ihre Prozessoren integrieren. Die ersten Prozessoren mit EM64T-Erweiterung sind Server-Prozessoren der Xeon-Reihe (Nocona), die als Konkurrent zu AMDs Opteron positioniert sind. Mittlerweile enthalten auch Intels Pentium 4 (Prescott) Desktop-Prozessoren EM64T (erkennbar an einem angehängten "F"), ebenso wie einige Celeron D. Intel betont, dass IA-64 durch EM64T keinesfalls obsolet geworden sei, man möchte im Gegenteil IA-64 noch stärker als bisher als bestmögliche Alternative für Kunden mit Bedarf nach hoher Fließkomma-Rechenleistung vermarkten, eine Disziplin, in der IA-64 traditionell überaus gute Leistungen bringt.

Nutzen der 64-Bit-Erweiterung

Benötigt eine Anwendung weder den größeren Adressraum, noch die genaueren Rechenoperationen, erfährt sie in einer 64-Bit-Umgebung keinerlei Leistungssteigerung. Im allgemeinen werden Befehle und Daten als 64-Bit-Objekte abgelegt, sie benötigen also mehr physischen Speicher als die gleichen Objekte in einem 32-Bit-Betriebssystem. Zieht eine Anwendung also keine Vorteile aus der 64-Bit-Umgebung, kann das auch zu Leistungseinbußen führen.

Während Desktopsoftware von der 64bit-Erweiterung kaum profitiert oder sogar gehemmt wird, ist die Erweiterung vorteilhaft bei sehr datenintensiven Prozessen wie großen Datenbanken auf Servern und dem Umgang mit sehr großen Dateien wie in der Videobearbeitung. Durch die zusätzlich vorhandene Registererweiterung einschliesslich der immer vorhandener SSE Einheit mit ihren Zusatzregistern profitieren von den AMD64 Modi auch sehr rechenintensive Programme wie die 3D-Modellierung und mathematische Simulationen.

Siehe auch