Information Technology Reference
In-Depth Information
1:
foreach (lc in prog) {
1:
MOVI
R1, #1
2:
ADD
R2, R1, R0
2:
instr = prog [lc];
3: L: MUL
R1, R1, R2
3:
case (instr) {
4:
SUBI
R0, R0, #1
4:
ADD_2_1_0:
gen („move.l
d1, d2“);
5:
BEQI
R0, #1, L
5:
gen („add.l
d0, d2“);
b
6:
:
7:
MUL_1_1_2:
gen („mulu.l
d2, d1“);
8:
:
9:
SUBI_0_0_1: gen („sub.l
#1, d0“);
1: P: move.l
#1, d1
10:
:
2:
move.l
d1, d2
11:
BEQI_0_1_3: gen („cmp
#1, d0“);
3:
add.l
d0, d2
12:
genb („beq“, 3);
4: L: mulu.l
d2, d1
13:
}
5:
sub.l
#1, d0
14: }
15: goto P;
a
6:
cmp
#1, d0
7:
beq
L
c
Bild 4.3. Beispiel einer Laufzeittransformation. a das transformierende Programm. b das zu trans-
formierende virtuelle Programm. c Ergebnis der Transformation
Virtueller Prozessor mit realitätsbezogener Architektur (Gironimo)
Die Gesamtzeit bei Ausführung eines virtuellen Programms ergibt sich als Summe
der Zeiten für die Laufzeittransformation und für die Ausführung des realen Pro-
gramms. Eine zu nativen Programmen vergleichbare Ausführungsgeschwindigkeit
ist erreichbar, wenn die Architektur des virtuellen auf die des realen Prozessors
abgestimmt ist. Bei identischer virtueller und realer Prozessorarchitektur reduziert
sich die Laufzeittransformation z.B. auf den Aufruf des bereits transformiert vorlie-
genden virtuellen Programms.
Umgekehrt ist eine Emulation durch Laufzeittransformation dann besonders inef-
fektiv, wenn die virtuelle Prozessorarchitektur Merkmale besitzt, die von realen Pro-
zessorarchitekturen nicht direkt unterstützt werden. Die schnelle Emulation einer 0-
Adressarchitektur erfordert z.B., dass der reale Registerspeicher indirekt adressier-
bar ist, da andernfalls der Stapel im langsamen Hauptspeicher untergebracht werden
müsste. Auch kann eine virtuelle 3-Adressarchitektur von einer realen 0-Adressar-
chitektur nur schlecht durch Laufzeittransformation emuliert werden, weil der reale
Stapel i.Allg. nicht wahlfrei zugreifbar ist und somit die Register ebenfalls im lang-
samen Hauptspeicher gehalten werden müssen.
Es ist daher naheliegend, die Architektur eines neu zu entwerfenden virtuellen Pro-
zessors auf die einer möglichst großen Anzahl realer Prozessoren abzustimmen.
Selbstverständlich werden dabei die Ausführungsgeschwindigkeiten, abhängig von
den für die Emulation verwendeten realen Prozessoren, variieren. Eine maximale
Ausführungsgeschwindigkeit sollte sich erreichen lassen, wenn eine reale Prozes-
sorarchitektur verwendet wird, die für die erwarteten virtuellen Anwendungen
besonders häufig zum Einsatz kommt.
Gironimo ist eine an der TU Berlin entwickelte virtuelle Prozessorarchitektur, die
auf die des realen Pentium 4 von Intel abgestimmt ist, einem in Arbeitsplatzrechnern
Search WWH ::




Custom Search