Information Technology Reference
In-Depth Information
in VLIW-Befehlen codierte Operationen selektiv auszuführen. Dies ermöglicht es,
mitten in eine bereits übersetzte Befehlsfolge (trace) hinein zu verzweigen.
Ein vor allem in eingebetteten Systemen wesentlicher Nachteil der dynamischen
Binärübersetzung ist, dass für Ausnahme- oder Unterbrechungsanforderungen
i.Allg. lange Latenzzeiten in Kauf genommen werden müssen, und zwar deshalb,
weil die zugrunde liegenden skalaren Prozessorarchitekturen normalerweise eine
präzise Behandlung der Ausnahmen oder Unterbrechungen verlangen. Die Neme-
sis-Architektur weist diesen Nachteil nicht auf. Ein Ausnahme- bzw. Unterbre-
chungsprogramm wird hier durch Aufruf einer PAL-Funktion statisch in ein VLIW-
Programm übersetzt, das bei Auftreten des jeweiligen Ergebnisses nahezu verzöge-
rungsfrei aufgerufen werden kann. Insbesondere ist es nicht erforderlich, den zuvor
in Bearbeitung befindlichen VLIW-Befehlsstrom rückzuspulen und eine zeitauf-
wendige Interpretation der skalaren Befehle bis zu dem die Ausnahmeanforderung
stellenden Befehl durchzuführen (siehe Abschnitt 4.2.7).
A.1 Arbeitsregister
Nemesis ist eine Lade-Speichere-Architektur und führt die meisten Befehle auf
Registern aus. Die hier vorgesehenen vier Bits ermöglichen die Adressierung von 15
Registern (0x0 bis 0xe sowie 0xf mit einer vom jeweiligen Befehl und den einzelnen
Operanden abhängigen Sonderfunktion). Der Registeradressraum unterteilt sich in
einen lokalen und einen globalen Bereich. Lokale Register lassen sich über die
Registeradressen 0x0 bis 0x7 (8 Register) oder, bei deaktivierten globalen Regis-
tern, über die Registeradressen 0x0 bis 0xe (15 Register) ansprechen. Globale
Register sind, sofern aktiviert, über die Registeradressen 0x8 bis 0xe (7 Register)
adressierbar. Im Folgenden wird die Organisation der lokalen und globalen Register
nacheinander beschrieben.
Lokale Register
Die Nemesis-Architektur verwendet einen als Stapel organisierten Registerspeicher.
Die oberen Einträge befinden sich in realen Registern, die darin nicht unterbringba-
ren unteren Einträge im Hauptspeicher. Die oberste Adresse des Stapels ist im Spe-
zialregister lrm.sp (register stack pointer), die unterste, einem Register gerade nicht
mehr zugeordnete Adresse im Spezialregister lrm.bp (register stack bottom) gespei-
chert. Die maximale Anzahl der real verfügbaren Register kann als Konstante im
Spezialregister lrm.sz (register size) gelesen werden.
Zur Funktion: Nach der Initialisierung referenziert lrm.sp gleich lrm.bp einen in
Richtung niedriger Adressen hin wachsenden Stapel. Mit Hilfe der Befehle alloc ,
allocshow oder allochide lässt sich darauf Speicherplatz reservieren, wobei lrm.sp
um einen konstanten Wert vermindert wird (siehe Bild A.1a). Die Wortadresse in
lrm.sp ordnet einem Eintrag im Hauptspeicher das virtuelle Register r0 zu (im Bild
rechts dargestellt). Die reale Registeradresse von r0 (in der Bildmitte) ergibt sich
hierbei entsprechend der unteren Bits der Hauptspeicheradresse, nämlich durch
Und-Verknüpfung mit einer der Bytegröße des Registerspeichers minus 1 errechen-
Search WWH ::




Custom Search