Information Technology Reference
In-Depth Information
Zur Arbeitsweise des Programms: Zunächst wird in Zeile 2 der Befehlszähler pc
inkrementiert und das erzeugte Ergebnis in npc (next pc) zwischengespeichert. Mit
dem noch unveränderten alten Wert des Befehlszählers wird anschließend auf den
Befehlsspeicher prog (program) zugegriffen und der gelesene Inhalt in die Variable
instr (instruction) kopiert. Die Extraktion der darin codierten Informationen erfolgt
in den Zeilen 4 bis 7, und zwar durch Anwendung von Shift- und Maskenoperatio-
nen. Dabei werden auch die zu verarbeitenden Operanden aus dem hier nur acht
Einträge enthaltenden Datenspeicher data in die Variablen a und b kopiert.
1:
forever {
2:
npc = pc + 1;
3:
instr = prog [pc];
4:
opcode = instr & 0x7f;
5:
a = data [instr >> 7 & 0x7];
6:
b = data [instr >> 10 & 0x7];
7:
d = instr >> 13;
8:
case (opcode) {
+1
9:
ADD: data [d] = a + b;
10:
SUB: data [d] = a - b;
Befehls-
speicher
Daten-
speicher
ALU
11 :
:
12:
BEQ: if (a == b) npc = d;
13:
:
Befehlsdecoder
14:
}
15:
pc = npc;
16: }
Bild 4.1. Interpretation der Funktionsweise eines realen sequentiell arbeitenden Prozessors
Die eigentliche Befehlsausführung geschieht in den Zeilen 8 bis 14. Durch Fallun-
terscheidung wird der Operationscode analysiert und die Operation ausgeführt,
wobei arithmetisch-logische Befehle, z.B. die Addition ADD oder die Subtraktion
SUB, direkt den Inhalt des durch d (destination) adressierten Datums verändern.
Sprungbefehle, z.B. ein Sprung bei Gleichheit BEQ, modifizieren abhängig von
einer Bedingung die zu verwendende Befehlsadresse in npc. Die Verarbeitung eines
Befehls endet mit der Zuweisung der nächsten Befehlsadresse npc an den Befehls-
zähler pc. Durch die Endlosschleife forever in Zeile 1 werden weitere Befehle in
derselben Weise ausgeführt. Ein Schleifendurchlauf entspricht dabei einem Takt-
schritt des in Hardware realisierten Prozessors.
Obwohl der virtuelle Prozessor in der hier dargestellten Form nicht praxistauglich
ist, verdeutlicht er dennoch gut die Arbeitsweise eines Interpreters. So lässt sich z.B.
feststellen, dass die Arbeitsgeschwindigkeit des virtuellen Prozessors wesentlich
davon abhängig ist, wie schnell ein Befehl decodiert wird, d.h. die im Befehlscode
enthaltenen Informationen extrahiert und durch Fallunterscheidung die notwendigen
Aktionen ausgewählt werden. Zum Vergleich: Die für das virtuelle Programm einzig
erforderliche Befehlsausführung (bei der Addition z.B. die Anweisung in Zeile 9)
beeinflusst die Arbeitsgeschwindigkeit des virtuellen Prozessors nur in geringem
Maße, und zwar auch deshalb, weil die hier implementierten virtuellen Befehle sich
von den meisten realen Prozessoren in nur einem Takt bearbeiten lassen.
Search WWH ::




Custom Search