Information Technology Reference
In-Depth Information
satz kommt, wohl aber, wenn eine Speicherverwaltungseinheit Verwendung findet
und jedem Eintrag des Trace-Buffers eine eigene Speicherseite zugeordnet wird. Die
Vorgehensweise ist vergleichbar mit der, die bereits in Abschnitt 4.2.5 beschrieben
wurde. Zunächst wird der zu löschende Eintrag aus dem Trace-Cache ausgewählt,
und zwar mit Hilfe der z.B. auch bei in Hardware realisierten Caches genutzten
Strategien (Abschnitt 2.3.1). Statt des naheliegenden LRU-Verfahrens verwendet
man hier jedoch oft Heuristiken, die leichter programmiert implementierbar sind. So
wird z.B. beim Nemesis X eine Zufallsauswahl durchgeführt. Steht der zu löschende
Eintrag fest, muss er im Trace-Cache nur noch als leer markiert und die assoziierte
Speicherseite im Trace-Buffer als nicht verfügbar gekennzeichnet werden. Zu einem
späteren Zeitpunkt ausgeführte Sprungoperationen, die in den gelöschten Trace-
Buffer-Eintrag hinein führen, lassen sich schließlich mit Hilfe der Speicherverwal-
tungseinheit erkennen. Dabei wird jeweils ein Seitenfehler ausgelöst und die Lauf-
zeitumgebung für eine Interpretation oder Binärübersetzung neu gestartet.
Ein Detail ist noch zu klären: Der zu einer freigegebenen Speicherseite gehörende
Adressbereich darf nämlich nicht durch eine andere als der ursprünglichen VLIW-
Befehlsfolge belegt werden, da sich dann möglicherweise noch im Trace-Buffer
existierende Sprungoperationen nicht mehr korrekt auflösen ließen. Zum Beispiel
käme es zu einem Programmabsturz, wenn der in Bild 4.13a grau unterlegte Adress-
bereich nach Freigabe der VLIW-Befehlsfolge A durch die VLIW-Befehlsfolge B
ersetzt und der mit a markierte Sprung, der regulär in die VLIW-Befehlsfolge A füh-
ren soll, ausgeführt würde. Es gibt jedoch eine Möglichkeit zur Lösung dieses Pro-
blems: Ein bestimmter Adressbereich wird fest einer bestimmten VLIW-Befehls-
folge zugeordnet. Gibt man z.B. in Bild 4.13a den grau unterlegte Eintrag mit der
VLIW-Befehlsfolge A frei, lässt er sich erneut nur durch dieselbe VLIW-Befehls-
folge A belegen. Referenzen werden also entweder korrekt aufgelöst oder von der
Speicherverwaltungseinheit als offen erkannt.
Das Verfahren findet u.a. mit Daisy von IBM [34] und Nemesis X von der TU Ber-
lin [108 1 ] Anwendung. Bei Daisy ist es so realisiert, dass jedem Adressbereich des
virtuellen Programms ein Adressbereich für die VLIW-Befehlsfolge eineindeutig
zugeordnet ist (wie bereits im Zusammenhang mit dem Binden angedeutet). Die
Adressbereiche aller belegten und unbelegten Einträge im Trace-Buffer ergeben
hierbei ein zum virtuellen Programm vergleichbares Speicherabbild. Die Nachteile
des Verfahrens sind, dass sowohl die Binärübersetzung als auch die Optimierung
sehr kompliziert sind, da sämtliche Adressbezüge korrekt erhalten bleiben müssen
und dieselben virtuellen Befehle nicht in unterschiedlichen VLIW-Befehlsfolgen
berücksichtigt werden können.
Beim Nemesis X ist die Zuordnung der separierten virtuellen Programmpfade zu
den durch die Speicherverwaltungseinheit administrierten Trace-Buffer-Einträgen
deshalb in der Weise realisiert, dass mit jedem neu hinzu kommenden Eintrag ein
neuer „virtueller“ Adressbereich belegt wird, der sich an die bereits reservierten
1. Die durch diesen Literaturhinweis gekennzeichnete Arbeit beschreibt eine Realisierung ohne
Befehlsspeicherverwaltungseinheit. Zur Speicherbereinigung kommt dort noch das in Bild
4.13b skizzierte Verfahren zum Einsatz.
Search WWH ::




Custom Search