Information Technology Reference
In-Depth Information
dem Programmiermodell eines realen Prozessors entsprechen. Zur Begriffsabgrenzung wird im
Folgenden trotzdem von virtuellen Befehlen bzw. Programmen gesprochen.
4.2.1 Profilbildung
Damit sequentielle virtuelle Programme operationsparallel ausgeführt werden kön-
nen, muss der reale Prozessor natürlich eine explizit parallelverarbeitende Prozes-
sorarchitektur besitzen. Normalerweise kommen hier VLIW-Prozessoren zum Ein-
satz (z.B. der Efficeon von Transmeta [188] oder Daisy von IBM [34, 35, 36]). Das
für die dynamische Binärübersetzung benötigte Laufzeitprofil für ein sequentielles
virtuelles Programm lässt sich somit nur durch Interpretation erstellen.
Die Verfahrensweise ist hier ähnlich, wie in Abschnitt 4.1.1 bereits erläutert: Jeder
Befehl wird explizit als Datum gelesen, decodiert und nach einer Fallunterscheidung
bearbeitet. Zusätzlich werden jedoch, falls virtuelle Sprungbefehle zur Ausführung
kommen, Profildaten gesammelt, und zwar durch Zählen der Häufigkeiten der
jeweils verwendeten Sprungziele in einem sog. Trace-Cache 1 . - Das Prinzip lässt
sich gut am Beispiel des an der TU Berlin entwickelten Prozessors Nemesis X ver-
deutlichen. Die in Bild 4.9 dargestellte virtuelle Nemesis-Befehlsfolge (oben) wird
durch die Laufzeitumgebung Genesis X interpretiert und in eine reale Befehlsfolge
für den als VLIW-Prozessor realisierten Nemesis X umgesetzt (siehe auch [108]).
Die Interpretation der virtuellen Nemesis-Befehlsfolge geschieht zunächst wie
gewohnt. Sobald der virtuelle Sprungbefehl in Zeile 5 das erste Mal zur Ausführung
gelangt und verzweigt, wird ein Eintrag im Trace-Cache erzeugt und der Zählwert 1
damit assoziiert. Das erneute Ausführen desselben verzweigenden virtuellen
Sprungbefehls wird im Trace-Cache durch Inkrementieren des Zählwerts vermerkt
und dabei jeweils das Überschreiten eines konstant vorgegebenen Grenzwerts, als
Auslöser für eine ggf. durchzuführende Binärübersetzung, überprüft.
Nach kurzer Zeit der Interpretation ergeben sich z.B. die in Bild 4.9 im Trace-Cache
eingetragenen Zählwerte, wobei offensichtlich der virtuelle Sprungbefehl in Zeile 9
nie und der in Zeile 11 am häufigsten verzweigt ist. Das mit Letzterem assoziierte
Sprungziel L1 überschreitet zuerst den hier mit 3 angenommenen Grenzwert, was
schließlich dazu führt, dass die grau unterlegte sequentielle virtuelle Befehlsfolge zu
der in Bild 4.9 im Trace-Buffer gespeicherten operationsparallelen realen Befehls-
folge für den Nemesis X übersetzt wird, und zwar auf eine später noch zu beschrei-
bende Weise.
Für die Geschwindigkeit, mit der die virtuelle Befehlsfolge letztendlich bearbeitet
wird, ist natürlich die Zeit, die man für die Interpretation der Befehle benötigt, von
Bedeutung. Zwar sind insgesamt nur wenige virtuelle Befehle zu interpretieren, dies
kann aber zeitaufwendiger sein, als die sequentielle virtuelle Befehlsfolge nativ zu
bearbeiten. Anders als beim Entwurf virtueller Prozessoren lassen sich beim Hard-
1.
Dieser hat zwar eine ähnliche Funktion wie die in Abschnitt 3.2.4 beschriebenen Trace-Caches,
beide Techniken sollten jedoch nicht verwechselt werden. Insbesondere sind die Trace-Caches
hier normalerweise in Software realisiert.
 
Search WWH ::




Custom Search