- IA64
-
IA-64 ("Intel Architecture 64-Bit"), ist eine 64-Bit-Architektur und Befehlssatz von Intel für die Prozessorgenerationen Itanium und Itanium 2. Die IA-64 unterstützt hardwaremäßig auch die IA-32 auf dem Stand des Pentium III. Da dies nur Beiwerk ist, reicht der Prozessor nicht an die Leistung der erhältlichen IA-32-CPUs heran. Außerdem sind Itanium-Prozessoren mit der IA-32 nur bedingt kompatibel, da zum Beispiel 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. Die IA-64 Architektur ist von der Intel 64 Architektur zu unterscheiden, die in wesentlich mehr Prozessoren eingesetzt wird und kompatibel zu der 64-Bit-Architektur von AMD (AMD64) ist.
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 IA-32-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.
Siehe auch
Weblinks
Wikimedia Foundation.