Information Technology Reference
In-Depth Information
durch einen einzelnen realen Befehl des Pentium 4, möglicherweise jedoch durch
einen einzelnen realen Befehl einer anderen Prozessorarchitektur nachbildbar sind.
Zum Beispiel erfordert eine Addition r0 = r1 + r2, wegen der 2-Adressarchitektur
Gironimos die Verwendung von zwei virtuellen Befehlen, die sich auf zwei reale
Befehle des Pentium 4 oder des ColdFire MFC5407 von Motorola abbilden lassen
(Bild 4.4, Zeile 1 und 2). Für einen 3-Adressprozessor, z.B. dem UltraSPARC IIIi
von Sun, sind die zwei virtuellen Befehle jedoch in einem realen Befehl nachbild-
bar. Die Verwendung einer Befehlskomposition hat dabei den Vorteil, dass die Lauf-
zeittransformation kontextfrei erfolgen kann. Allerdings wäre im konkreten Fall
eine kontextbehaftete Umsetzung der virtuellen Befehle nicht wesentlich kompli-
zierter. Durch Verwendung einer Befehlskomposition wird jedoch ggf. verhindert,
dass bei der Codeerzeugung Befehle, die sich durch eine Laufzeittransformation gut
zusammenfassen lassen, auseinandergerissen werden.
Gironimo
Pentium 4
ColdFire MFC5407
UltraSPARC IIIi
1: {
mv.w
r0, r1
mov
eax, ebx
move.l
d1, d0
add
%i0, %g1, %g2
2:
add.w
r0, r2
}
add
eax, edx
add.l
d2, d0
3: {
mv.w
\r0, [r1]
mov
eax, [ebx]
move.l
(d2), (d1)
ld
[%g1, 0], %i0
4:
mv.w
[r2], \r0
}
mov
[edx], eax
move.l
(d2), d0
st
%i0, [%g2, 0]
Bild 4.4. Codierung einer 3-Adressaddition und eines Speicher-Speicher-Transfers durch virtuelle
Befehlskompositionen sowie mögliche Umsetzungen in reale Befehlsfolgen für den Pentium 4 von
Intel [80, 81, 82], ColdFire MFC5407 von Motorola [125] und UltraSPARC IIIi von Sun [173]
Ein weiterer Nutzen lässt sich aus Befehlskompositionen ziehen, wenn sog. tempo-
räre Register zum Einsatz kommen, wie dies in Bild 4.4 in den Zeilen 3 und 4 darge-
stellt ist. Ein Speicher-Speicher-Transfer erfordert mit Gironimo die Ausführung
von zwei virtuellen Befehlen: Einer, mit dem der zu übertragende Datenwert aus
dem Hauptspeicher in ein Register geladen und einer, mit dem dessen Inhalt weiter
in den Datenspeicher übertragen wird. Die Laufzeitumsetzung der virtuellen in eine
reale Befehlsfolge für den Pentium 4 oder auch für einen Prozessor mit Lade-Spei-
chere-Architektur, wie dem UltraSPARC IIIi, geschieht dann durch direkte Abbil-
dung der virtuellen Einzelbefehle.
Für einen realen Prozessor, der einen Speicher-Speicher-Transfer direkt verarbeiten
kann, z.B. dem ColdFire MFC5407, sind ebenfalls zwei reale Befehle erforderlich,
sofern der Inhalt des virtuellen Registers r0 nach Ausführung der Befehlskomposi-
tion noch benötigt wird. Ist dies jedoch nicht der Fall, lässt sich ein realer Befehl
einsparen. Natürlich muss hierzu dem Laufzeitumsetzer bekannt sein, dass der
Inhalt des virtuellen Registers r0 nicht über das Ende der Befehlskomposition hin-
aus benötigt wird. Dies wird im virtuellen Befehl durch ein die Registeradresse
ergänzendes Bit codiert und ist in Assemblerschreibweise durch einen vorangestell-
ten rückwärtsweisenden Schrägstrich (backslash) angegeben. 1
1. Befehlskompositionen haben darüber hinaus für Gleitkommaberechnungen eine wichtige
Funktion, um die virtuellen Gleitkommabefehle der 2-Adressarchitektur Gironimo auf die nach
dem Stapelprinzip arbeitende Gleitkommaeinheit des Pentium 4 abzubilden [107, 115].
Search WWH ::




Custom Search