Information Technology Reference
In-Depth Information
Eine weitere Lösung wurde im Rahmen des Nemesis-Projekts verwirklich. Falls
während einer Ausnahmebehandlung nicht auf den Zustand des virtuellen Pro-
gramms Zugriff genommen wird, gibt es auch keinen Grund dafür, weshalb nicht
die VLIW-Befehlsfolge direkt unterbrochen und nach Ausführung des Ausnahme-
programms die Bearbeitung der VLIW-Befehlsfolge auch wieder aufgenommen
werden sollte. Hierbei ist dafür Sorge zu tragen, dass der Rücksprung sich auf das
reale und nicht auf das virtuelle Programm bezieht, was sich jedoch durch Abstrak-
tion erreichen lässt, nämlich indem man das Ausnahmeprogramm nicht direkt in
eine Ausnahmetabelle einträgt (siehe Abschnitt 1.4.1), sondern eine zur Laufzeitum-
gebung Genesis X gehörende, dafür zuständige sog. PAL-Funktion (processor abs-
traction layer function) aufruft.
Das virtuelle Ausnahmeprogramm wird so in eine native VLIW-Befehlsfolge sta-
tisch binärübersetzt, wobei sämtliche virtuellen Rücksprungbefehle durch reale
Rücksprungoperationen ersetzt werden. Außerdem überprüft man, ob das Ausnah-
meprogramm unerlaubt auf den Zustand des virtuellen Prozessors vor der Ausnah-
mebehandlung oder direkt auf Befehle des virtuellen Ausnahmeprogramms zugreift
(was nicht möglich ist, weil das Ausnahmeprogramm bei Ausführung nur in einer
binärübersetzten Variante vorliegt). Gegebenenfalls wird der PAL-Aufruf mit einem
Fehler quittiert.
Angenommen, das zur Bearbeitung von Seitenfehlern zuständige Programm wurde
auf die beschriebene Weise eingebunden. Kommt es bei Ausführung der in der
VLIW-Befehlsfolge aus Bild 4.15 codierten Ladeoperation zu einer Ausnahme,
wird der entsprechende VLIW-Befehl unterbrochen und augenblicklich in das binär-
übersetzte VLIW-Ausnahmeprogramm verzweigt. Dort lässt sich die benötigte
Speicherseite z.B. von einer Festplatte laden und mit dem Rücksprungbefehl der
präzise unterbrochene VLIW-Befehl erneut ausführen.
Das einzige Problem besteht darin, dass nach Bearbeitung eines Ausnahmepro-
gramms nicht immer in die unterbrochene reale Befehlsfolge zurückkehrt wird, wie
z.B. bei einem Prozesswechsel . Hierbei ist es nämlich erforderlich, den sich i.Allg.
auf das virtuelle Programm beziehende Kontext zu sichern. Deshalb sind weitere
PAL-Funktionen vorgesehen, mit denen es möglich ist, einen Kontextwechsel abs-
trakt zu initiieren, und zwar, indem neben dem Zustand des virtuellen Programms
der der realen VLIW-Befehlsfolge gesichert wird. Es bleibt anzumerken, dass die
hier angedeutete Technik nur zum Einsatz kommen kann, wenn sie bereits beim Ent-
wurf der Prozessorarchitektur vorgesehen wurde, wie beim Nemesis X der Fall.
Bemerkung. In einigen Situationen, z.B. bei im Zusammenhang mit Ladebefehlen auftretenden
Fehlspekulationen , ist es auch mit Nemesis X notwendig, eine zum Teil bearbeitete reale VLIW-
Befehlsfolge in den Zustand zurückzuversetzen, der zu Beginn der Ausführung des separierten Pro-
grammpfads bestanden hat, um die virtuellen Befehle anschließend streng sequentiell interpretieren
zu können. Hierzu muss es möglich sein, die bereits berechneten Ergebnisse durch die initialen
Werte zu ersetzen, und zwar möglichst verzögerungsfrei.
Bezogen auf den Hauptspeicher bedeutet dies, dass Speichereoperationen erst ausgeführt werden
dürfen, wenn es definitiv nicht zu einer Wiederherstellung des Startzustands kommen wird, d.h.
beim Verlassen des jeweiligen separierten Programmpfads. Speichereoperationen werden von
Nemesis X deshalb als Aufträge in einen Schreibpuffer eingetragen und erst abgearbeitet, wenn
Search WWH ::




Custom Search