Information Technology Reference
In-Depth Information
erfüllt sein. So sind z.B. die Einträge in der Ausnahmetabelle ausgerichtet zu spei-
chern, falls der verwendete Prozessor Zugriffe auf nicht ausgerichtete Daten oder
Befehle nicht unterstützt. Das gilt auch für Tabellen, in denen die Sprungziele direkt
codiert sind (sofern die Tabelle keine Sprungbefehle enthält). Sollte eine Speicher-
verwaltungseinheit verwendet werden, darf außerdem der für die Ausnahmetabelle
benötigte Speicherbereich nicht ausgelagert werden, weil andernfalls beim Zugriff
darauf ein Seitenfehler auftreten würde (zu Speicherverwaltungseinheiten und Sei-
tenfehlern siehe Abschnitt 2.3.2). Es sei noch angemerkt, dass eine Ausnahmeanfor-
derung, die während des Aufrufs eines Ausnahmeprogramms auftritt, den Prozessor
i.Allg. zum Anhalten (stop) bringt.
Die maximale Zeit, die zwischen dem Auftreten eines Ereignisses und dem Ausfüh-
rungsbeginn des ersten Befehls des Ausnahmeprogramms vergeht, wird als Ausnah-
melatenzzeit , in Bezug auf asynchrone Ereignisse auch als Unterbrechungslatenzzeit
( interrupt latency time ) bezeichnet. Letztere ist von Bedeutung, weil sie die Reakti-
onszeit auf Notsituationen bestimmt oder die Anzahl der pro Zeiteinheit maximal
akzeptierbaren Ereignisse begrenzt.
Nach Ablauf der Latenzzeit werden im weiteren Verlauf der Bearbeitung einer Aus-
nahmeanforderung i.Allg. zunächst die Inhalte der benötigten Register gesichert (in
Bild 1.20a durch „save“ angedeutet), damit der Zustand des unterbrochenen Pro-
gramms erhalten bleibt, und eine vom Ereignis sowie der jeweiligen Applikation
abhängige Befehlsfolge ausgeführt. Die Ausnahmebearbeitung endet schließlich,
indem explizit die gesicherten Registerinhalte wieder hergestellt (restore) werden
und mit einem Rücksprungbefehl (return from exception) zum unterbrochenen Pro-
gramm zurückgekehrt wird, wobei alle beim Aufruf des Ausnahmeprogramms auto-
matisch durchgeführten Aktionen wieder rückgängig gemacht werden.
Falls der Befehl, bei dem die Ausnahmesituation aufgetreten ist, vollständig und
fehlerfrei beendet wurde, wird das unterbrochene Programm mit dem darauf folgen-
den Befehl fortgesetzt (in Bild 1.20a ist dies die Addition). Sollte der entsprechende
Befehl mit der Ausnahmeanforderung jedoch vorzeitig beendet worden sein, muss
dieser erneut bearbeitet werden (in Bild 1.20a würde nach dem Rücksprungbefehl
die Division ausgeführt). Im Fehlerfall ist dies nur sinnvoll, wenn das Ausnahme-
programm die Fehlerursache zuvor behebt. Gegebenenfalls lässt sich das laufende
Programm auch beenden.
Ob ein Befehl erneut auszuführen ist oder nicht, kann im Prinzip automatisch durch
den Prozessor entschieden werden. Es ist aber auch möglich, dies explizit im Pro-
gramm zu codieren, wobei die Rücksprungadresse entweder entsprechend modifi-
ziert oder geeignet ausgewählt wird. Letzteres geschieht z.B. bei den Prozessoren
mit SPARC-Architektur von Sun (siehe Beispiel 1.13) oder beim Nemesis C der TU
Berlin der hierzu über unterschiedliche Rücksprungbefehle verfügt [114, 198].
Beispiel 1.13. Ausnahmeverarbeitung durch SPARC-Prozessoren . Prozessoren mit SPARC-
Architektur (wie der UltraSPARC III Cu von Sun [172]), verarbeiten eine Ausnahmeanforderung
(von Sun als Trap bezeichnet), indem sie zunächst den laufenden Befehl abschließen, dessen
Adresse und Folgeadresse in den Registern %l1 bzw. %l2 speichern, das Supervisorbits S sichern,
setzen und schließlich zu einem Eintrag der Ausnahmetabelle (trap table) verzweigen. Die benö-
tigte Sprungadresse wird dabei ermittelt, indem man eine dem jeweiligen Ereignis zugeordnete
Search WWH ::




Custom Search