Information Technology Reference
In-Depth Information
-rücksprüngen inkrementiert bzw. dekrementiert wird, kann bei vollem Register-
speicher die Registerbank 2 als die älteste identifiziert werden (gefolgt von Regis-
terbank 3 und Registerbank 0). Bei nicht vollständig gefülltem Registerspeicher ist
eine zusätzliche Markierung des ältesten Eintrags erforderlich, der i.Allg. entweder
in Form eines zur Registerbank gesetzten Bits oder als Zeiger realisiert wird. Der
Registerspeicher lässt sich damit als voll erkennen, wenn durch einen Unterpro-
grammaufruf eine markierte Registerbank aktiviert werden würde und als leer, wenn
vor einem Unterprogrammrücksprung die markierte Registerbank aktiv ist.
Ob der notwendige Transport zwischen der zu aktivierenden Registerbank und dem
Datenspeicher wie beim 80960KA automatisch in Hardware durchgeführt wird oder
in einem Ausnahmeprogramm, ist implementierungsabhängig. Letzteres ist einfa-
cher zu realisieren, sofern der Prozessor den Befehl, bei dessen Ausführung der
volle oder leere Registerspeicher erkannt wurde, also z.B. ein Unterprogrammaufruf
oder -rücksprung, nach Bearbeitung des Ausnahmeprogramms erneut starten kann
(siehe auch Beispiel 1.15).
Bank-Select
Window-Select
Window-Base
Ta i l
Window-Select
Free
r5
r4
r9 (r1)
r10
Mark
Mark
a
b
c
d
Bild 1.23. Unterschiedliche Organisationsformen für Registerspeicher. a Verwaltung in unabhängi-
gen Blöcken. b Verwaltung in sich überlappenden Fenstern einheitlicher Größe. c Verwaltung in
Fenstern variabler Größe. d Verwaltung mit Freispeicherliste
Die Verwendung globaler Register für die Parameterübergabe hat den Nachteil, dass
diese bei Unterprogrammaufrufen genau wie lokale Variablen gesichert werden
müssen. In einigen Prozessoren wird der Registerspeicher daher nicht in Register-
bänken, sondern alternativ in sich gegenseitig überlappenden sog. Registerfenstern
( register window ), wie sie in Bild 1.23b dargestellt sind, organisiert. Registerfenster
sind fest in drei Bereiche unterteilbar: ein Eingangsbereich, in dem die Parameter
des Aufrufers entgegengenommen und Ergebnisse zurückgereicht werden, ein loka-
ler Bereich, der nur für das jeweils aktuelle Unterprogramm zugreifbar ist und ein
Ausgangsbereich, in dem Parameter an geschachtelte Unterprogramme übergeben
bzw. erzeugte Ergebnisse gelesen werden können 1 . Da es bei einem Unterpro-
grammaufruf nach dem Weiterschalten des aktuellen Registerfensters nicht möglich
ist, auf die Parameter oder lokalen Variablen des Aufrufers zuzugreifen, muss man
die entsprechenden Inhalte nicht explizit sichern, und zwar auch dann nicht, wenn
mehrere Unterprogramme geschachtelt aufgerufen werden.
1. Meist ist außerdem ein hier nicht dargestellter globaler Registerbereich vorhanden, der sich
unabhängig vom Inhalt des Spezialregisters Window-Select ansprechen lässt.
Search WWH ::




Custom Search