Doping für CPUs — Möglichkeiten der Leistungssteigerung
Ansätze der Optimierung per Hardware
VLIW: Very long instruction word
Im letzten Absatz wurde erwähnt, dass bei der VLIW Philosophie die Hard- und Software Hand in Hand zusammenarbeiten müssen, um einen möglichst hohen Durchsatz an Instruktionen und Threads zu erreichen. Die Anpassung der Hardware an VLIW stellt somit gleichzeitig den Einstieg in das nächste und deutlich ausführlichere Kapitel der Optimierung der Hardware an bestehenden Programmcode dar.
Das folgende fiktive Beispiel ist entnommen aus dem Kapitel “Intel Itanium: 64-Bit und neue Architektur für den Servermarkt” des Artikels “64-Bit CPUs für’s Wohnzimmer: Innovation oder Marketinggeblubber?”, hier auf Planet 3DNow!.
Bei VLIW (Very Long Instruction Word) handelt es sich um eine Erweiterung der Superskalaren Arbeitsweise. Der Mikroprozessor verfügt, wie bei dieser auch, über mehrere Recheneinheiten, die auf bestimmte Operationen spezialisiert sind (ALU, FPU, etc.). Im Gegensatz zur reinen superskalaren Arbeitsweise erfolgt die Optimierung der Ausführung jedoch nicht im Leitwerk des Mikroprozessors, sondern bereits im Voraus durch den Compiler. Das Leitwerk hat nun nur noch die Aufgabe, die einzelnen Instruktionen an die einzelnen Recheneinheiten zu verteilen, nicht jedoch diese auf ihren Inhalt zu analysieren.
Im obigen VLIW-Kern eines Mikroprozessors verfügt dieser über sechs Recheneinheiten, sowie eine Instruktionslänge von 32 Bit. Ein superskalarer Prozessor würde nun ein Instruktionsregister von 32 Bit Länge besitzen, das Leitwerk dieses lesen, decodieren und anschließend an die entsprechende Recheneinheit weiterleiten. Ein VLIW Prozessor besitzt hingegen ein Instruktionsregister von
also im obigen Fall 32 Bit * 6 Recheneinheiten = 192 Bit. Eine Instruktion enthält also maximal sechs Sub-Instruktionen. Diese Einteilung erledigt der Compiler, so dass der Programmcode immer optimal auf die Maschine abgestimmt ist. Intel nennt diese Technik im Itanium EPIC (Explicitly parallel Instruction Computer), ein Compiler für IA-64 muss somit EPIC-Kompatiblen Maschinencode erzeugen.