Information Technology Reference
In-Depth Information
in Bild 4.13a soll gelöscht werden, dann ist dies zwar durch entsprechende Aktuali-
sierung des Trace-Cache möglich, dabei würden jedoch die zwei mit a und b mar-
kierten Referenzen in den hervorgehoben umrahmten VLIW-Befehlsfolgen ungültig
werden. Kommt es zur Ausführung einer entsprechenden Sprungoperation, würde
das in den allermeisten Fällen den Absturz des Programms zur Folge haben.
Natürlich ließe sich der gesamte Trace-Buffer nach den offenen Referenzen durch-
suchen und diese ggf. durch Aufrufe der Laufzeitumgebung ersetzen. Allerdings
wäre dies sehr zeitaufwendig, weshalb man z.B. bei Dynamo von HP nicht einzelne
Trace-Cache-Einträge, sondern immer den gesamten Trace-Cache löscht [12, 13].
Als Konsequenz muss dafür jedoch in Kauf genommen werden, dass die Häufigkeit,
mit der die Laufzeitumgebung gestartet wird, nach dem Löschen des Trace-Caches
schlagartig ansteigt und die Ausführungsgeschwindigkeit des virtuellen Programms
dadurch kurzzeitig um Größenordnungen einbricht.
Trace-
Cache
Trace-Buffer
Trace-
Cache
Trace-Buffer 1
e
a
Trace-Buffer 2
B
A
d
c
b
f
b
a
Bild 4.13. Organisation eines Trace-Cache. a mit einem Trace-Buffer. b mit zwei Trace-Buffern
Im Rahmen des Nemesis-Projekts wurde deshalb das in Bild 4.13b skizzierte Ver-
fahren erprobt (jedoch nicht realisiert). Statt eines einzelnen finden hier mehrere
Trace-Buffer Verwendung, die alternierend gefüllt werden. Das Binden geschieht
jeweils so, dass man direkte Sprungoperationen nur verwendet, wenn sie den jewei-
ligen Trace-Buffer nicht verlassen (c) oder sie in den jeweils „jüngeren“ Trace-Buf-
fer verzweigen (d). Alle anderen Referenzen werden indirekt gelöst (e und f).
Um Platz im Trace-Cache zu schaffen, kennzeichnet man nun alle Einträge als
gelöscht, die auf den „ältesten“ Trace-Buffer (hier Trace-Buffer 2) verweisen, wobei
die gespeicherten Startadressen (z.B. mit f markiert) durch Zeiger auf die Laufzeit-
umgebung zu ersetzen sind. Letzteres garantiert, dass die nach dem Löschen norma-
lerweise offenen Referenzen nicht ins Leere laufen, sondern eine ggf. erneute Inter-
pretation bzw. Binärübersetzung der jeweiligen virtuellen Befehlsfolge initiieren.
Schließlich ist nur noch der durch den Trace-Buffer belegte Speicher freizugeben.
Hardware-gestützte Verfahren
Die individuelle Freigabe eines einzelnen Eintrags im Trace-Cache ist zwar nicht
sinnvoll, wenn eines der zuvor beschriebenen programmieren Verfahren zum Ein-
Search WWH ::




Custom Search