IA-64

aus Wikipedia, der freien Enzyklopädie
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-64-Architektur.

Funktionsweise[Bearbeiten]

Architektur des Itanium.

Das Design basiert auf einem Konzept mit dem Namen Explicitly Parallel Instruction Computing (EPIC), das dem althergebrachten Very Long Instruction Word (VLIW) ähnelt, jedoch eine Reihe von Verbesserungen enthält. Bei EPIC werden die Prozessorbefehle, die keine Abhängigkeiten voneinander 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.

IA-32-Emulation[Bearbeiten]

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.

Fortschritt oder Abwärtskompatibilität[Bearbeiten]

Die IA-32-Architektur ist 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. Der Vorteil der Abwärtskompatibilität ist die problemlose Weiterverwendbarkeit der existierenden Software ohne Anpassungsaufwand (Portierung) und Neukompilation.

Intel versuchte, mit den Altlasten aufzuräumen (auch um sich vom Konkurrenten AMD abzusetzen, welcher vor allem x86-Patente und -Kompetenzen besaß) und veröffentlichte mit der IA-64 Architektur eine eigenständige Architektur, die nicht eine Erweiterung des bestehenden IA-32 Befehlssatzes darstellt. Der Preis, der dafür zu zahlen ist, ist dass 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 schlechter Leistungsfähigkeit von Software führt.[1]

Dieser gewagte Schritt der Firma Intel erwies sich auf dem freien Markt als nicht durchsetzbar, auch weil für den Endanwender-Markt weiterhin hauptsächlich IA-32-Prozessoren hergestellt wurden und der IA-32-Kompatibilitätsmodus im Itanium extrem langsam war. Auch die notwendige Anpassung zur Ausnutzung der Itaniumfähigkeiten für die enorme Masse der existierenden Software wäre sehr aufwändig gewesen, selbst im optimistischen, problemfreien Falle wäre immer noch eine Neukompilierung und Auslieferung der Software notwendig. Im schlimmsten Fall wären aufwändige Fehlerbehebungen, Anpassungen oder die vollständige Neuerstellung von Software notwendig, z.B. da nicht immer der Quellcode für Software zur Verfügung steht, beispielsweise im Falle, dass ein Hersteller zwischenzeitlich Konkurs gegangen ist. Ein weiteres Problem war eine anfänglich mäßige Leistungsfähigkeit auch von spezifisch angepasster Itaniumsoftware, da sowohl Softwareentwickler, als auch Compilerhersteller erst Erfahrung mit der neuen Itanium-Architektur sammeln mussten, um sie optimal unterstützen zu können, ein Wissen, das für die x86-Architektur bereits langjährig aufgebaut war.[2]

AMD verfolgte mit dem AMD64 das pragmatischere Konzept der Abwärtskompatibilität auch über die 32-Bit/64-Bit-Grenze hinweg durch eine um einen 64-Bit-Modus erweiterte Variante der IA-32-Architektur.[1] AMD war damit erfolgreich und konnte Intel Marktanteile abjagen. Intel folgte letztendlich AMD architektonisch, auch unter dem Druck von Betriebssystemhersteller Microsoft, welcher ankündigte, langfristig nur eine 64-Bit-Architektur in Windows unterstützen zu wollen. Intel veröffentlichte daraufhin die Intel-64-Architektur, die weitgehend mit AMD64 übereinstimmt, aber eben auch weiterhin alle Altlasten aus 25 Jahren mitschleppt (was sich bei heutigen Prozessoren aber hauptsächlich im Befehlssatz äußert, da "intern" ohnehin in andere Strukturen dekodiert wird, siehe Mikrocode).

Siehe auch[Bearbeiten]

Weblinks[Bearbeiten]

Einzelnachweise[Bearbeiten]

  1. a b Michael Kanellos: AMD rolls dice on Opteron chip (englisch) CNET News. 21. April 2003. Abgerufen am 10. Mai 2012.
  2. Andy Patrizio: Why Intel can't seem to retire the x86. ITworld. 4. März 2013. Abgerufen am 15. April 2013.