IA-64

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von IA64)
Wechseln zu: Navigation, Suche

IA-64 (Intel Architecture 64-Bit) ist eine 64-Bit-Architektur und ein EPIC-Befehlssatz, welche gemeinsam von Hewlett-Packard und Intel für die Itanium Prozessorgenerationen (Merced, Itanium 2, …, Tukwila) entwickelt wurde. Die IA-64-Architektur unterscheidet sich deutlich von der Intel-64-Architektur, die sich als IA-32-Erweiterung versteht und kompatibel zur AMD64-Architektur ist. Intel-64 und AMD64 sind mittlerweile auch wesentlich weiter verbreitet als die IA-32-Architektur.

Inhaltsverzeichnis

[Bearbeiten] Funktionsweise

Das Design basiert auf einem Konzept mit dem Namen Explicitly Parallel Instruction Computing (EPIC), das dem althergebrachten VLIW (Very Long Instruction Word) ähnelt, jedoch eine Reihe von Verbesserungen enthält. Bei EPIC werden die Prozessorbefehle, die keine Abhängigkeiten haben und daher parallel ausgeführt werden können, anhand vordefinierter Muster in Instruction Groups aufgeteilt und so an den Prozessor weitergegeben, der dann anhand seiner eigenen Fähigkeiten entscheiden kann, wie viele der theoretisch möglichen Instruktionsgruppen tatsächlich parallel ausgeführt werden. Die Idee dahinter ist, dass bereits der Compiler feststellt, wie viel Parallelität möglich ist, und dies entsprechend im Programmcode festhält, und der Prozessor die Pipelines später optimal auslasten kann, je nachdem, wie viele Anweisungen er tatsächlich parallel ausführen kann.

Die Architektur versucht, die Wartezeiten auf dem Speicher zu verringern, indem für jeden Datentyp eine große Zahl Register auf dem Prozessor vorhanden ist. So gibt es 128 64-Bit-Register für ganzzahlige Berechnungen, 128 82-Bit-Register speziell für Gleitkomma-Daten und 64 1-Bit-Vorhersageregister, über die die Befehle bedingt ausgeführt werden. Dies erlaubt es, mehr Informationen in den Registern zu halten, anstatt jedes mal den langsamen Weg über Cache oder Arbeitsspeicher zu beschreiten, wenn Daten benötigt werden.

Für das Ausführen von 32-bit-Software nutzt der Prozessor einen Teil der IA-64-Register als IA-32-Register. Außerdem gibt es im IA-32 einen Sprungbefehl, mit dem in den IA-64-Modus (zurück) gewechselt wird. Nutzt man diesen auf einem IA-32-Prozessor, so erfolgt dort ein Invalid-Opcode-Interrupt.

Die Architektur verfügt über einen großen Befehlssatz mit teilweise hoher Komplexität. So gibt es unter anderem besondere Prozessorbefehle für Multimedia- und aufwendige Gleitkomma-Operationen.

In der Software werden bei einem Funktionsaufruf die aktuellen Registerinhalte auf den Stack geschrieben und nach Ablauf der Funktion wieder zurückgeholt. Dies verursacht Wartezeiten und bremst den Programmfluss aus. Das IA-64-Design reduziert diese Latenz, indem diese Stack-Operationen auf den Registern selbst ausgeführt werden. Die sogenannte Register Stack Engine (RSE) behandelt die Fälle, in denen die Register und der Speicher synchronisiert werden müssen.

[Bearbeiten] IA-32 Emulation

Obwohl die Eigenständigkeit der IA-64-Architektur von Anfang an herausgestellt wurde, wollte man sich dennoch mit dem Prädikat IA-32-kompatibel schmücken. Ältere Itanium-Varianten unterstützen daher auch hardwaremäßig IA-32-Befehle auf dem Stand eines Pentium III. Da es sich dabei nur um eine Emulationseinheit handelte, reicht die Leistung von 32-bit-Software auf einem IA-64-System aber nicht an die Leistung derselben Software auf einem vergleichbaren x86-System heran. Außerdem sind Itanium-Prozessoren mit IA-32 nur bedingt kompatibel, da zum Beispiel das Paging über die IA-64-Architektur läuft und ein Versuch, das CR3 (Page Directory Base Register) mit einem Wert zu laden, von dieser abgefangen wird. Seit dem Itanium 2 wird eine softwarebasierte Variante der x86-Emulation namens IA-32 EL verwendet. Diese ist dank verschiedenster Optimierungen zwar schneller als die hardwarebasierende Variante, aber immer noch langsamer als ein vergleichbar getakteter x86-Prozessor. Generell hat aber die Fähigkeit, IA-32 emulieren zu können, ihre Bedeutung weitestgehend verloren, und alle für den Zielmarkt wichtigen Softwarepakete liegen mittlerweile auch in einer nativen IA-64-Version vor. Neben dem IA-32-Software-Emulator existiert zur Emulation der PA-RISC-Architektur das HP-UX ARIES (Automatic Re-translation and Integrated Environment Simulation)-Paket.

[Bearbeiten] Fortschritt oder Abwärtskompatibilität

Der Fluch der auf den Entwicklern von Computerarchitekturen lastet ist die Forderung, dass die Software die für ältere Architekturen geschrieben wurde, uneingeschränkt auch auf den Nachfolgearchitekturen laufen soll. So ist die IA-32 Architektur abwärtskompatibel bis zur Architektur des Intel 8080-Prozessors aus dem Jahre 1974. Dies führt dazu, dass Altlasten aus Vorgängerarchitekturen auch in neue Designs übernommen werden müssen. Dadurch können zum einen moderne Gestaltungsansätze nicht bestmöglich umgesetzt werden. Zum anderen ist es nicht möglich eine in sich schlüssige Architektur (zum Beispiel hinsichtlich einheitlicher Operation-Code-Formate) zu erstellen.

Intel versuchte mit den Altlasten aufzuräumen und veröffentlichte mit der IA-64 Architektur eine neue und frische eigenständige Architektur, die nicht einfach eine Erweiterung des bestehenden IA-32 Befehlssatzes darstellt. Der Preis der dafür zu zahlen ist, dass bestehende für den IA-32 Befehlssatz geschriebene Software auf der neuen Architektur nur eingeschränkt ausführbar ist. Selbst der weiterhin ausführbare Code wird teilweise auf Software-Basis emuliert was zu langsamerer Laufzeit führt.

Dieser mutige Schritt der Firma Intel erwies sich auf dem freien Markt als nicht durchsetzbar. Intel gab dem Druck des Marktes nach (nicht zuletzt unter dem Druck der des Konkurrenten AMD, der mit seiner AMD64-Architektur voran ging und unter dem zusätzlichen Druck der Firma Microsoft) und veröffentlichte mit der Intel-64 Architektur eine weitere Erweiterung der IA-32 Architektur, die weiterhin alle Altlasten aus 25 Jahren mit schleppt.

[Bearbeiten] Siehe auch

[Bearbeiten] Weblinks

Meine Werkzeuge
Namensräume

Varianten
Aktionen
Navigation
Mitmachen
Drucken/exportieren
Werkzeuge
In anderen Sprachen