Grundlagen zu Intels Itanium (Teil I)

Drei Instruktionen pro Befehlswort

EPIC verwendet lange Befehlswörter von 128 Bit Breite. Diese Befehlswörter werden bei Intel als Bündel bezeichnet und können drei Instruktionen zu je 41 Bit Breite, die Silben, sowie ein so genanntes Template mit fünf Bit aufnehmen. Das Template kodiert die Befehlsart der Instruktionen des Bündels und legt die Ausführungseinheiten fest, die die drei Silben benötigen. So signalisiert etwa das Template-Mnemonic "MII", dass der erste Befehl im Bundle auf das Memory zugreift und die beiden anderen unabhängig je eine Integer-Pipeline belegen.

Die fünf Bit des Templates ermöglichen 32 verschiedene Kombinationen von Befehlsarten, derzeit unterstützt der Itanium jedoch nur 24 Kombinationen. Durch die Verwendung des Templates werden die Kombinationsmöglichkeiten von Befehlen in einem Bündel eingeschränkt. Dadurch kann die Schaltung, die die Instruktionen auf die Ausführungseinheiten verteilt, einfacher und schneller gehalten werden. Allerdings führen die Unverträglichkeiten von Befehlskombinationen auch oft dazu, dass der Compiler kein komplettes Bündel erzeugen kann. Fehlstellen füllt er dann mit NOP (No Operation)-Befehlen, die jedoch den Speicherbedarf für Programme anwachsen lassen.

Der Itanium verarbeitet aber nicht nur ein Bündel gleichzeitig. Er kann die Befehle zweier Bündel zeitgleich auf die Funktionseinheiten verteilen und so maximal sechs Befehle parallel ausführen. Allerdings sind die Kombinationsmöglichkeiten der zwei Bündel eingeschränkt. Während der Itanium-Prozessor mit dem Merced-Kern nur 28 Prozent aller Template-Paarungen parallel ausführen konnte, hat Intel diese Zahl beim Itanium 2 durch die größere Zahl von Ausführungseinheiten auf 75 Prozent gesteigert. Verboten sind die restlichen Kombinationen jedoch nicht. Treffen zwei unverträgliche Bündel aufeinander, so muss eines einen Taktzyklus in einem Pufferspeicher in der Pipeline warten. Bei realen Programmen kann man mit effektiv drei bis vier Befehlen pro Taktzyklus rechnen. In hoch optimierten Libraries soll der Itanium sogar fünf Befehle pro Takt erreichen.