Information Technology Reference
In-Depth Information
len des interpretierenden realen Prozessors bearbeiten (je einen Takt für den virtuel-
len Befehlszugriff, das Inkrementieren des Befehlszählers, das Generieren der für
die Fallunterscheidung erforderlichen Sprungzieladresse, die eigentliche Befehls-
ausführung und einen vorhersagbaren unbedingten Schleifensprungbefehl, sowie
drei Takte für den im Zusammenhang mit der Fallunterscheidung stehenden, nicht
vorhersagbaren indirekten Sprungbefehl). Lediglich einen Takt benötigt die eigentli-
che Ausführung des virtuellen Befehls, sodass interpretierte virtuelle Prozessoren
kaum mehr als 10% der Leistung realer Prozessoren erreichen.
Nun enthalten reale wie virtuelle Programme oft Passagen, die mehr als einmal aus-
geführt werden. Eine Möglichkeit zur Beschleunigung virtueller Prozessoren ist es
deshalb, die Decodierung von sich wiederholenden Befehlsfolgen nur ein einziges
Mal durchzuführen und dabei ein reales Programm zu generieren, das sich mit der
vollen Geschwindigkeit des realen Prozessors ausführen lässt. Diese hier als Lauf-
zeittransformation bezeichnete Technik ermöglicht die Bearbeitung virtueller Pro-
gramme mit einer nur geringfügig geringeren Geschwindigkeit als sie von sog. nati-
ven , also direkt für reale Prozessoren übersetzten Programmen erreichbar ist.
Bild 4.3a zeigt ein von Bild 4.2a abgeleitetes Programm zur Laufzeittransformation.
Anstatt wie bei der Interpretation die auszuführenden Befehle zu lesen, zu decodie-
ren und auszuführen und dabei den Befehlszähler jeweils entsprechend des Kon-
trollflusses zu verändern, werden mit Hilfe eines Iterators lc (location counter) alle
Befehle jeweils einmal gelesen (Zeile 2), decodiert (Zeile 3) und in eine reale
Befehlsfolge umgesetzt. Aus dem in Bild 4.3b dargestellten virtuellen Programm
lässt sich so das in Bild 4.3c gezeigte reale Programm, hier z.B. für die CPU32 von
Motorola [120], generieren. In welcher Weise die einzelnen virtuellen in reale
Befehle umgesetzt werden, ist für den Schleifenrumpf durch Pfeile gekennzeichnet.
So werden z.B. die virtuellen 3-Adressbefehle ADD, MUL und SUBI (Zeile 2, 3
und 4 in Bild 4.3b) auf zwei reale Befehle bzw. einen realen Befehl äquivalent abge-
bildet. Die Anzahl der tatsächlich erzeugten realen Befehle ist hierbei jeweils davon
abhängig, ob das virtuelle Zielregister mit dem ersten Quelloperanden überein-
stimmt oder nicht.
Auch der bedingte virtuelle Schleifensprungbefehl BEQI wird zu zwei realen
Befehlen gewandelt. Dabei ist jedoch zusätzlich zu berücksichtigen, dass die Trans-
formation der einzelnen virtuellen Befehle eine Verschiebung der Sprungmarken im
realen Programm bewirkt. Angenommen, die Zeilennummern der beiden Assemb-
lerprogramme entsprechen den jeweiligen Befehlsadressen (natürlich zu Halbwor-
ten), dann verschiebt sich die Sprungmarke L hier von Adresse 3 in Bild 4.3b zur
Adresse 4 in Bild 4.3c. Damit die Zieladressen der realen Sprungbefehle mit denen
des virtuellen Programms korrespondieren, wird eine mit der Laufzeittransforma-
tion zu generierende Sprungadressumsetzungstabelle benötigt, in der zu den virtuel-
len die jeweiligen realen Befehlsadressen gespeichert sind. Diese Sprungadressum-
setzungstabelle muss auch nach der Laufzeittransformation noch verfügbar bleiben,
um indirekte Sprungbefehle korrigieren zu können. - Die Laufzeittransformation
endet mit einem Aufruf des erzeugten realen Programms, hier mit einem unbeding-
ten Sprungbefehl in Zeile 15 des in Bild 4.3a dargestellten Laufzeitprogramms.
Search WWH ::




Custom Search