Information Technology Reference
In-Depth Information
dungen oft der Fall sein wird. Problematisch dabei ist auch, dass jedes Programm
die zu verwendende Registerbank frei selektieren kann und es daher unmöglich ist,
einen Eingriff in die Registerbankverwaltung des Betriebssystems, insbesondere
durch fehlerhafte Programme, zu verhindern. Dadurch kann sich die Stabilität eines
Systems deutlich vermindern. Im Extrem müssen daher die Inhalte aller Register-
bänke gesichert werden, was oft mit einem erheblichen Zeitaufwand verbunden ist.
Kontextwechsel infolge von Unterprogrammaufrufen
Im Prinzip ist es möglich, die beschriebenen Probleme zu umgehen, indem Register-
bänke in Hardware verwaltet werden und ein wahlfreies Umschalten durch nicht
privilegierte Programme nur bedingt erlaubt wird (so sind z.B. einige Register der
ARM7TDMI-Architektur von ARM [10] in Bänken organisiert, die vom Betriebs-
modus abhängig aktiviert werden, wobei ein nichtprivilegiertes Programm den
Betriebsmodus nicht verändern kann). Tatsächlich ist der erforderliche Aufwand
jedoch größer als der Nutzen, da die Geschwindigkeit eines Systems nur geringfügig
von den Bearbeitungszeiten für Kontextwechsel bei Ausnahmeanforderungen
beeinflusst wird.
Besser lassen sich Registerbänke für die im Vergleich zu Ausnahmeanforderungen
deutlich häufiger auftretenden Unterprogrammaufrufe verwenden. Dabei wird imp-
lizit oder explizit eine freie Registerbank selektiert, auf die sich alle weiteren Aktio-
nen beziehen. Insbesondere werden darin die lokalen Variablen gehalten, denen bei
der Übersetzung ein Register zugewiesen wurde. Da die für das aufrufende Pro-
gramm verwendete Registerbank während der Bearbeitung des Unterprogramms
nicht sichtbar ist, können darin übergeordnete Variablen oder Zwischenergebnisse
unbeeinflusst überdauern.
Beispiel 1.14. Parameterübergabe in Registerbänken . Registerbänke sind zwar gut geeignet, um
darin die lokalen Variablen eines Unterprogramms zu speichern, jedoch schlecht, um Parameter an
ein Unterprogramm zu übergeben bzw. Ergebnisse zurückzuliefern. Falls dies erforderlich ist, muss
entweder der Datenspeicher verwendet werden, was langsam ist, oder eine „ globale “ Registerbank,
auf die sich unabhängig vom Inhalt des Spezialregisters Bank-Select zugreifen lässt. Dies setzt
natürlich voraus, dass der Registerspeicher entsprechend organisiert ist.
So verfügt der 80960KA von Intel [17] z.B. über insgesamt 80 Register, die in fünf Bänken zu je 16
Registern organisiert sind. Zu jedem Zeitpunkt kann auf 32 Register direkt zugegriffen werden, von
denen 16 in einer ausgezeichneten globalen Registerbank und 16 in einer der vier lokalen Register-
bänke gehalten werden. Das Umschalten der jeweils aktiven Registerbank erfolgt implizit mit den
Unterprogrammaufrufen bzw. -rücksprüngen. Beim Überschreiten der maximalen Schachtelung-
stiefe Vier wird - für den Benutzer transparent - der Inhalt der „ältesten“ Registerbank automatisch
in den Hauptspeicher übertragen. Umgekehrt wird der Inhalt einer zuvor ausgelagerten Register-
bank wieder geladen, wenn sie durch einen Rücksprungbefehl aktiviert werden soll.
Das automatische Ein- und Auslagern von Registerbankinhalten, wie es in Beispiel
1.14 beschrieben wurde, ist nur möglich, wenn über das Alter der Belegung der ein-
zelnen Registerbänke Buch geführt wird. Dies ist sehr einfach, wenn man die Reser-
vierungen und Freigaben in der numerischen Reihenfolge der Registerbankadressen
durchführt. Falls z.B. wie in Bild 1.23a aktuell die Registerbank 1 selektiert ist und
der Inhalt des Spezialregisters Bank-Select bei Unterprogrammaufrufen sowie
Search WWH ::




Custom Search