Information Technology Reference
In-Depth Information
gesichert werden, an der das laufende Programm unterbrochen wurde. Die Rück-
sprungadresse bezieht sich natürlich auf das virtuelle Programm und kann präzise
oder unpräzise sein. Zur Erinnerung: Bei einer präzisen Ausnahmeanforderung
bezeichnet die Rücksprungadresse exakt die Positionen, an der das jeweilige Ereig-
nisse ausgelöst wurde. Präzise Ausnahmeanforderungen treten insbesondere auf,
wenn sich ein Befehl nicht fehlerfrei beenden lässt oder wenn Systemaufrufe durch-
geführt werden, wobei man zusätzlich unterscheidet, ob der ereignisauslösende
Befehl in seiner Verarbeitung unterbrochen oder zu Ende bearbeitet werden kann.
Im Gegensatz hierzu steht bei einer unpräzisen Ausnahmeanforderung die Adresse
des Befehls, mit dem das laufende Programm unterbrochen wird, nicht in Relation
zum Ereignis. Normalerweise werden z.B. (asynchrone) Unterbrechungsanforde-
rungen (interrupts) unpräzise verarbeitet. Selbstverständlich ist es unter Inkauf-
nahme eines erhöhten Realisierungsaufwands prinzipiell möglich, unpräzise Aus-
nahmeanforderungen auch präzise zu bearbeiten.
Mit einem die dynamische Binärübersetzung nutzenden Prozessor sind bei der Ver-
arbeitung von Ausnahmeanforderungen drei Fälle zu unterscheiden, je nachdem, ob
das Ereignis in der Phase der Interpretation, der Binärübersetzung oder der Ausfüh-
rung binärübersetzter realer VLIW-Befehlsfolgen auftritt. In der Interpretations-
phase wird der laufende Befehl beim Erkennen einer Ausnahmeanforderung entwe-
der regulär abgeschlossen oder augenblicklich beendet, wobei man ggf. erzeugte
Zwischenergebnisse verwirft. Ersteres hat im Vergleich zu Letzterem den Vorteil,
dass bereits bearbeitete Aktionen nach dem Ausnahmeprogramm nicht erneut
durchzuführen sind, jedoch auch den Nachteil einer längeren Ausnahmelatenzzeit.
In jedem Fall werden unpräzise Ausnahmeanforderungen in der Interpretations-
phase präzise bearbeitet.
Ähnlich verfährt man, wenn die Ausnahmeanforderung bei der Binärübersetzung
eines separierten Programmpfads auftritt, wobei jedoch ausschließlich asynchrone
Ereignisse zu berücksichtigen sind, und zwar deshalb, weil man die virtuellen
Befehle hier binärübersetzt und nicht ausführt, sie also auch keine Ereignisse auslö-
sen können. Wegen der Unmöglichkeit, mit dem Kontext des virtuellen Prozessors
den Zustand der Laufzeitumgebung zu sichern, muss die Binärübersetzung dabei
vollständig beendet oder abgebrochen werden, bevor in das Ausnahmeprogramm
verzweigt wird.
Der am aufwendigsten zu handhabende Fall ist, wenn eine Ausnahmeanforderung
die Ausführung einer binärübersetzten VLIW-Befehlsfolge unterbricht, und zwar
deshalb, weil die einzelnen Operationen nicht mehr in derselben Reihenfolge bear-
beitet werden, wie sie im virtuellen Programm vorgegeben ist und daher eine Unter-
brechung den Prozessor in einem Zustand hinterlassen kann, der bei korrekter Abar-
beitung der virtuellen Befehlsfolge niemals hätte auftreten dürften. Bild 4.15 ver-
deutlicht diesen Sachverhalt: Die rechts dargestellte, reale VLIW-Befehlsfolge lässt
sich durch Binärübersetzung aus der links dargestellten, virtuellen Befehlsfolge
erzeugen. Kommt es mit dem Ladebefehl zu einer Ausnahmeanforderung (z.B.
wegen eines Seitenfehlers), müsste das virtuelle Programm präzise unterbrochen
werden. Da jedoch der virtuelle and-Befehl (Zeile 3 links) bereits mit dem ersten
realen VLIW-Befehl (Zeile 1 rechts) emuliert wurde, befinden sich bei Ausführung
Search WWH ::




Custom Search