Information Technology Reference
In-Depth Information
Zeile 11 folgende, nicht dargestellte virtuelle Befehlsfolge zur Ausführung gelangt,
durch Multiplikation der Einzelwahrscheinlichkeiten, mit denen die Sprungbefehle
dem Programmpfad folgen zu 0 ( 2 / 3 1 0), was sicher unterhalb jedes erlaubten
Grenzwerts liegt. Der virtuelle Sprungbefehl in Zeile 5 verzweigt nämlich in zwei
Dritteln der Fälle (das Verzweigen hat die Wahrscheinlichkeit 2 / 3 ), der in Zeile 9 nie
(das Nichtverzweigen hat die Wahrscheinlichkeit 1) und der in Zeile 11 immer (das
Nichtverzweigen hat die Wahrscheinlichkeit 0).
Ein letztes, noch anzusprechendes Verfahren wurde mit dem Nemesis X an der TU
Berlin realisiert. Das Ende eines Programmpfads wird dabei bestimmt, indem man
den Speicherbedarf der binärübersetzten realen Befehlsfolge mit einem Grenzwert
vergleicht. Das Verfahren ist aus zwei Gründen von Vorteil: (1.) lassen sich Trace-
Buffer-Einträge einheitlicher Größe einfacher verwalten als Einträge unterschiedli-
cher Größe. (2.) ist es möglich, die Verwaltung des Trace-Buffers in einer Art und
Weise zu erweitern, die es erlaubt, nicht länger verfügbare Einträge automatisch zu
erkennen. Dieses für die sog. Speicherbereinigung wichtige Merkmal wird in
Abschnitt 4.2.6 genauer erläutert.
4.2.3 Binärübersetzung
Nach Separation eines Programmpfads wird die Binärübersetzung durchgeführt,
wobei hier auch die zur statischen Codeerzeugung benutzten Verfahren zum Einsatz
kommen (siehe hierzu Abschnitt 3.1.5). Optimierungen, wie das Entfernen unnöti-
ger Befehle oder die Weitergabe von Kopien, sind dabei ebenfalls möglich [8].
Natürlich lassen sich auch die realen Befehle entlang des separierten Programm-
pfads verschieben und ggf. spekulativ ausführen, um so den Grad an Operationspar-
allelität zu erhöhen. Es muss jedoch gewährleistet sein, dass fälschlicherweise
erzeugte Ergebnisse nicht ggf. noch benötigte Registerinhalte verändern, weshalb
der verwendete reale Prozessor über eine größere Anzahl an Registern verfügen
sollte, als das zugrunde liegende virtuelle Programmiermodell vorgibt (die erzeug-
ten Ergebnisse werden jeweils erst nach Auflösung der Spekulation zugewiesen).
Im Zusammenhang mit Lade- bzw. Speicherebefehlen muss der reale Prozessor
außerdem die Kontrollfluss - und Datenflussspekulationen unterstützen, d.h. die in
Abschnitt 3.1.5 beschriebenen Prinzipien implementieren (bei einer Fehlspekulation
wird hier oft so verfahren, dass die jeweilige reale Befehlsfolge in ihrer Wirkung auf
den virtuellen Prozessorzustand gänzlich rückgängig gemacht und die virtuelle
Befehlsfolge ein zweites Mal, nun durch Interpretation, ausgeführt wird). - Das
Prinzip der Binärübersetzung soll anhand der in Bild 4.9 dargestellten virtuellen
Nemesis-Befehlsfolge erläutert werden, wobei als Zielprozessor der Nemesis X zum
Einsatz kommt. Er ist in der Lage zwei arithmetisch-logische Operationen und eine
Sprungoperation parallel auszuführen.
Übersetzungsprozess
Bei der Binärübersetzung der Befehlsfolge werden die virtuellen Befehle streng
sequentiell in reale Operationen umgesetzt und diese in einer Weise angeordnet,
Search WWH ::




Custom Search