Zum Inhalt springen

AMD64

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 18. April 2005 um 18:06 Uhr durch 84.164.224.174 (Diskussion) (Software-Unterstützung). 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 bekannt als x86-64. Anders als Intel, deren 64-Bit-Architektur IA-64 mit der heute in PCs meistverwendeten x86-Architektur nur noch 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 kompatibel.

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.

Software-Unterstützung

Das erste Betriebssystem, das eine funktionierende Unterstützung für den 64-Bit-Modus der K8-Prozessoren bot, war Linux. Von Microsoft ist erst seit April 2005 die Windows XP 64-bit Edition RTM (ready to manufacture) für AMD64 verfügbar. Bisher jedoch nur in us-enlgisch.

In den aktuellen Medienberichten (Juli 2004) ist inzwischen davon die Rede, dass Microsoft die Windows Versionen für AMD64 nur als Original Equipment Manufacturer-Versionen (OEM) geplant zu haben scheint, es also keine für den Einzelhandel bestimmte Regalversion geben wird, sondern nur über Großhändler als Beigabe z.B. beim Kauf eines Komplettrechners geben soll. Allerdings wird man laut Aussagen von Microsofts Produktmanager für Windows XP64, Brian Marr, auch als Privatmann und Computerfreak diese OEM- und Systembuilder-Versionen erwerben können. (siehe Ankündigung in den privaten Newsgroups microsoft.private.windowsserver_64bit newsgroup)

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

Vermarktung

AMD vermarktet die erste Generation von AMD64-Prozessoren unter den Namen Athlon 64 und Opteron (Codename K8). Ersterer ist für den Einsatz in Desktop- und Mobilrechnern gedacht, der multiprozessorfähige Opteron zielt auf den Server-Bereich mit 1-8 Prozessoren. Server-Prozessoren sind typischerweise etwas langsamer getaktet als ihre Desktop-Kollegen, AMD brachte daher im April 2003 zunächst den Opteron auf den Markt, um erst einmal Erfahrungen mit den neuen Prozessoren im Praxiseinsatz zu machen, und die zu diesem Zeitpunkt noch bestehenden Probleme mit der Taktfestigkeit der AMD64-Prozessoren auszubügeln. Der Takt des seit Oktober 2003 verfügbaren Athlon 64 3200+ war zur damaligen Zeit recht hoch angesetzt, und AMD brachte neben einem schnelleren 3400+ zunächst auch einen 3000+ auf den Markt, der bei gleichem Takt wie das Modell 3200+ nur halb so viel Cache hat. Auf diese Weise lassen sich auch noch Prozessorkerne verkaufen, bei denen während der Qualitätskontrolle Fehler am Cache festgestellt wurden, indem diejenige Hälfte des Caches, die den Fehler enthält, "abgeknipst" wird.

EM64T – AMD64 aus dem Hause Intel

Da AMD zwischenzeitlich viele namhafte 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"). 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. Bereits wenige Tage nach der offiziellen Ankündigung durch Intel besaß der Linux-Kernel im Rahmen seines AMD64-Ports bereits Unterstützung für EM64T, die erste entsprechend ausgerüstete Kernel-Version war 2.6.3. Auch der GNU C-Compiler gcc ist ab der Version 3.3.3 bereits vor Erscheinen der ersten produktionsreifen EM64T-Prozessoren in der Lage, optimierten Code für diese Architektur zu erzeugen.

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 beim K8 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. 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, die nun auch SSE2 beherrscht. Um eine schnellere Anbindung des Prozessors an die Außenwelt zu realisieren, verfügt der K8 über einen integrierten Speichercontroller (sitzt sonst in der Northbridge) und einen Controller für den HyperTransport-Bus. Über diesen neuen seriellen Hochgeschwindigkeitsbus, der den klassischen Front Side Bus ersetzt, läuft die gesamte Kommunikation des Prozessors mit Komponenten wie PCI-Express, PCI-Bus oder AGP-Grafikkarte. Weitere, eigentlich nicht architekturspezifische Verbesserungen der Prozessoren gegenüber den aktuellen Athlon XP-Modellen betreffen den Cache, die TLB-Puffer und die Sprungvorhersage, um eventuelle Leistungsverluste durch die von 10 auf 12 Stufen verlängerte Pipeline der Ausführungseinheiten (17 Stufen bei den SSE-Einheiten) mindestens auszugleichen.

Die 64bit-Register haben folgende Bezeichnungen:

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

Betriebsmodi

Ein K8-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.

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 GB für alle Tasks und Betriebssystem zusammen.
  • Ohne PAE 2 GB (im Sonderfall 3 GB) pro Task
  • Mit PAE 64 GB für alle Tasks und Betriebssystem zusammen. (Beschränkt durch 36-Bit breiten physischen Adressbus).

Bei AMD64 ist die Breite einer virtuellen Adresse 48 Bit, das heißt eine Task kann 256 TB adressieren. Die K8-Prozessoren haben zur Zeit 40 Adresspins, physisch können sie also 1 TB Speicher adressieren. Die physische Adressgrenze beträgt somit 1 TB 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.

Siehe auch