Grundlagen zu Intels Itanium (Teil I)

Floatingpoint-Register

Die Fließkommaeinheit ist eine der herausragenden Funktionseinheiten der IA-64. Für Berechnungen stehen 128 Fließkommaregister mit einer Breite von 82 Bit zur Verfügung. Lediglich die Register f0 und f1 sind fest auf die häufig benötigten Werte 0 beziehungsweise 1 gelegt. Alle Register sind nach dem Schema Ergebnis = Operand1 x Operand2 ansprechbar. Dies ist eine wesentliche Verbesserung gegenüber der IA-32, die alle Fließkommaoperanden über einen Stack übergibt. Die 128 Fließkommaregister sind ebenso wie die Allzweckregister in 32 statische und in 96 dynamische Register aufgeteilt.

Die IA-64 bietet wie die IA-32 die Möglichkeit, 80-Bit-Fließkommaberechnungen durchzuführen. Die zusätzlichen Bits der 82 Bit breiten Register nutzt der Itanium intern für Zwischenergebnisse. Durch die höhere Genauigkeit verringern sich Rundungs- und Verfahrensfehler bei komplexen Berechnungen.

Neben dem 80-Bit-Format sind Floatingpoint-Operationen im 64-Bit-Double-Precision-Format und im 32-Bit-Single-Precision-Format möglich. Bei Single Precision kann der Itanium gleich zwei Werte parallel in einem Floatingpoint-Register halten und bearbeiten. Der Fließkommabefehlssatz enthält unter anderem eine Multiply and Accumulate (MAC) Instruction, die eine Multiplikation und eine Addition in einem Taktzyklus gemeinsam durchführt. Durch die SIMD-Fähigkeit des Prozessors kann man bei einfacher Genauigkeit sogar zwei MAC-Operationen gleichzeitig erledigen. Diese Funktion ist die Grundlage vieler Filter- algorithmen und üblicherweise nur bei Signalprozessoren vorhanden.

Erstaunlich ist, dass die Itanium Architektur keine Befehle zur Berechnung transzendenter Funktionen wie der Quadratwurzel oder des Tangens zur Verfügung stellt. Selbst die einfache Division ist ihr unbekannt. All diese Funktionen bildet der Compiler als Software-Algorithmen nach. Dabei kann er aber die Eigenschaften des Prozessors wie etwa das Software-Pipelining mit Register-Rotation sowie die parallele Ausführung von Programmteilen durch mehrere Fließkommarecheneinheiten optimal ausnutzen. Dadurch ist die Fließkommaberechnung des Itanium meist deutlich schneller als die anderer Prozessoren, die diese Aufgaben fest in Hardware verdrahtet haben.