Information Technology Reference
In-Depth Information
Sprungbefehls bhi ohne Umweg über die Laufzeitumgebung indirekt die mit V4
beginnende reale VLIW-Befehlsfolge aufzurufen.
Hardware-gestütztes Binden
Nachteilig am Binden mit indirekten Sprungoperationen ist, dass die Zieladresse
zunächst geladen werden muss (hier in das Register r3). Zwar kann dies meist paral-
lel zu anderen, der Sprungoperation vorangehenden Operationen geschehen, der
Zugriff auf den Datenspeicher benötigt jedoch i.Allg. viel Zeit, was die Ausfüh-
rungsgeschwindigkeit, mit der das virtuelle Programm bearbeitet wird, negativ
beeinflusst. Wäre bekannt, an welcher Adresse ein separierter Programmpfad zum
Zeitpunkt seiner Binärübersetzung im Trace-Buffer platziert würde, ließen sich statt
indirekter auch direkte Sprungoperationen für das „vorausschauende“ Binden ver-
wenden.
Mit jeder Referenz auf eine bisher nicht binärübersetzte Befehlsfolge reserviert man
zunächst einen von der hierzu benötigten Speicherverwaltungseinheit administrier-
ten Adressbereich und kennzeichnet ihn als nicht zugreifbar. Verzweigt eine Sprung-
operation in den reservierten Adressbereich hinein, löst die Speicherverwaltungsein-
heit einen Seitenfehler aus und startet die Laufzeitumgebung. Falls nach einer
anfänglichen Interpretation eine Binärübersetzung durchgeführt werden soll, wird
zu dem verwendeten Adressbereich Speicher reserviert, darin durch Binärüberset-
zung die zum separierten Programmpfad gehörende VLIW-Befehlsfolge erzeugt
und die Speicherverwaltungseinheit schließlich so umprogrammiert, dass es zu kei-
nen weiteren Seitenfehlern kommt.
Das hier skizzierte Verfahren findet u.a. in Daisy von IBM [34] und im Nemesis X
der TU Berlin [108 1 ] Anwendung. Bei Daisy übersetzt man das in 4 KByte großen
Seiten unterteilte virtuelle Programm in 16 KByte große Seiten des Trace-Buffers,
wobei sämtliche Adressbezüge linear vom Virtuellen ins Reale transformiert wer-
den. Der einfachen Adressumsetzung steht als wesentlicher Nachteil entgegen, dass
die potentiellen Sprungziele eines virtuellen Programms in der realen VLIW-
Befehlsfolge linear erhalten bleiben müssen, was aufwendig zu realisieren ist. Des-
halb werden beim Nemesis X Sprungbefehle, die zu einer bisher noch nicht binärü-
bersetzten virtuellen Befehlsfolge verweisen, auf einen von der virtuellen Adresse
unabhängigen Speicherbereich gelenkt und mit Hilfe des entsprechenden Trace-
Cache-Eintrags umgesetzt.
Zum Beispiel würde man bei der Binärübersetzung des mit der Sprungmarke V1
beginnenden Trace-Buffer-Eintrags in Bild 4.11 die mit d markierte unbedingte
Sprungoperation auch dann codieren, wenn das Sprungziel noch nicht binärüber-
setzt vorliegt. Die benutzte Zieladresse V4 wird dabei so festgelegt, dass sie auf
einen freien, willkürlich ausgewählten Adressbereich zeigt, dem ein Speicherbe-
reich entsprechender Größe mit Hilfe der Speicherverwaltungseinheit erst zugeteilt
wird, wenn der entsprechende Programmpfad ebenfalls binärübersetzt wurde.
1. Die durch diesen Literaturhinweis gekennzeichnete Arbeit beschreibt eine Realisierung ohne
Befehlsspeicherverwaltungseinheit. Das Binden geschieht hier noch teils direkt, teils indirekt.
Search WWH ::




Custom Search