Information Technology Reference
In-Depth Information
Startadresse direkt aus der Ausnahmetabelle liest und indirekt zum Sprungziel hnd
verzweigt. Letzteres ist aufwendiger zu realisieren, hat aber den Vorteil eines gerin-
geren Speicherbedarfs und vermeidet einen von zwei Sprungbefehlen, durch den die
Reaktionszeit auf eine Ausnahmeanforderung wegen des potentiell möglichen Kon-
trollflusskonflikts verlängert wird (siehe Abschnitt 2.2.4).
Ausnahmetabelle
:
and
Befehlszählerinhalt wird
automatisch gesichert
...
Tabellenbasis
sub
...
div
r1 = r2, r0
hnd:
save
...
add
...
:
restore
hnd
:
...
bra hnd
div0
rte
Gesicherter Befehlszähler
wird wieder hergestellt
a
b
Bild 1.20. Ausnahmebehandlung. a Synchrone Ausnahmeanforderung bei Division durch Null (es
wird angenommen, dass r0 gleich Null ist). b Ermittlung der Startadresse des entsprechenden Aus-
nahmeprogramms
Die Wahl des bei einer Ausnahmeanforderung zu verwendenden Eintrags der Aus-
nahmetabelle ist meist fest mit dem jeweiligen Ereignis verknüpft. So wird bei einer
Division durch Null ein Ausnahmeprogramm unabhängig davon aufgerufen, wel-
cher Befehl für den Fehler verantwortlich gewesen ist. Problematisch kann dies im
Zusammenhang mit asynchronen Ereignissen sein, da die Anzahl der zum Stellen
von Unterbrechungsanforderungen benötigten Signalleitungen in allen Prozessoren
deutlich begrenzt ist und daher möglicherweise mehrere Unterbrechungsquellen
über eine gemeinsame Signalleitung zusammengefasst werden müssen. Welcher
Peripheriebaustein das asynchrone Ereignis ausgelöst hat, ist hierbei programmiert
innerhalb des Ausnahmeprogramms zu entscheiden. Die dabei verwendete Abfrage-
reihenfolge legt eine Bearbeitungspriorität fest, für den Fall, dass mehrere Periphe-
riebausteine gleichzeitig eine Anforderung stellen.
Bemerkung. Natürlich ist es möglich, die Abfrage auch in Hardware zu realisieren, wie z.B. in
den Prozessoren der MC680xx Familie von Motorola [120]. Bei einer Unterbrechungsanforderung
wird dabei die Nummer des zu verwendenden Ausnahmeeintrags (er wird bei Motorola als Vektor-
nummer bezeichnet) automatisch ermittelt, indem innerhalb einer sog. Interrupt-Acknowledge-
Phase auf ein Spezialregister des die Anforderung stellenden Peripheriebausteins zugegriffen wird
[46]. Die Startadresse des Ausnahmeprogramms ( Vektoradresse ) wird anschließend entsprechend
der ermittelten Vektornummer aus der Ausnahmetabelle (Vektortabelle) gelesen und das Ausnah-
meprogramm schließlich aufgerufen. Falls die Speicherung einer Vektornummer in älteren Periphe-
riebau steinen nicht möglich ist, kann die Interrupt-Acknowledge-Phase auch durch das Signal
IACK quittiert und der Prozessor veranlasst werden, die Startadresse wie oben beschrieben zu
ermitteln. Die hierbei verwendeten Einträge der Ausnahmetabelle werden als Autovektoren
bezeichnet.
In modernen Prozessoren ist die Basisadresse der Ausnahmetabelle i.Allg. als Vari-
able in einem prozessorinternen Spezialregister gespeichert (im Bild als Tabellenba-
sis bezeichnet). Um zu vermeiden, dass der Aufruf eines Ausnahmeprogramms
rekursiv weitere Ausnahmeanforderungen stellt, z.B. weil der Zugriff auf die Aus-
nahmetabelle einen Fehler verursacht, müssen einige zusätzliche Anforderungen
 
Search WWH ::




Custom Search