Information Technology Reference
In-Depth Information
gung den nachfolgenden Befehl überspringt, wird der Sprungbefehl aus dem
Befehlsstrom entfernt und der nachfolgende Befehl bedingt bearbeitet.
Natürlich ist die hier als dynamische Prädikation ( dynamic predication , instruction
folding [176, 177] oder collapsing [149]) bezeichnete Technik prinzipiell auch auf
mehrere im Fließband befindliche Befehle anwendbar. Das geschieht jedoch nicht
beim Nemesis C (mit dem Programmiermodell Nemesis in der Version V1.0), da der
Realisierungsaufwand wegen der nicht eigenständig ausführbaren Präfixbefehle
dadurch deutlich vergrößert würde. Statt dessen wird ein Sprungbefehl mit Offset
Null nicht wie erwartet in der Weise interpretiert, dass nur der nachfolgende 16 Bit
breite Befehl bedingt zur Ausführung kommt, sondern der nachfolgende beliebig
breite Befehl (siehe Beispiel 2.2).
Beispiel 2.2. Ermittlung eines Minimalwerts . In Bild 2.25 sind drei Befehlsfolgen einander
gegenübergestellt, mit denen sich jeweils das Minimum zweier ganzer Zahlen in den Arbeitsregis-
tern R0 und R1 (bzw. r0 und r1) berechnen lässt. Das Ergebnis wird in R2 (bzw. r2) gespeichert (das
Ergebnisregister der unterschiedlichen Befehle ist jeweils in Fettschrift gesetzt). In Bild 2.25a und b
sind die Befehlsfolgen für den ARM7TDMI sowie in Bild 2.25c eine entsprechende Befehlsfolge
für den Nemesis C dargestellt. Die beiden Befehlsfolgen für den ARM7TDMI unterscheiden sich
darin, dass einmal herkömmliche bedingte Sprungbefehle (a) und einmal bedingte Befehle (b) ver-
wendet werden. Die Pfeile verbinden die Programmteile mit jeweils demselben Effekten.
Der erste MOV-Befehl in Bild 2.25a kommt zur Ausführung, wenn der BGT-Befehl (Branch on
Greater Than) nicht zur Sprungmarke next verzweigt. In seiner Wirkung entspricht dies dem
MOVLE-Befehl in Bild 2.25b (Move on Less or Equal), der das Zielregister ausschließlich dann
verändert, wenn das Bedingungsregister die Relation „kleiner oder gleich“ anzeigt. Zum Vergleich
ist in Bild 2.25c die Befehlsfolge für den Nemesis C dargestellt. Die jeweils umrahmten Befehle
werden vom Prozessor als Einheit bearbeitet. Bemerkenswert ist, dass sich die Befehlsfolge in Bild
2.25b nicht kompakter codieren lässt als die in Bild 2.25c, da ein bedingt ausführbarer Befehl beim
ARM7TDMI 32 statt 16 Bit breit ist. Für die einzelnen Befehlsfolgen werden von links nach rechts
10 Byte (falls die sog. Thumb-Instructions verwendet werden), 12 Byte und 10 Byte benötigt.
min:
CMP
R0, R1
min:
CMP
R0, R1
min:
cmp
r0, r1
BGT
next
bhis
next
MOVLE
R2 , R0
MOV
R2 , R0
MOVGT
R2 , R1
mov
r2 , r0
next:
BLE
end
:
next:
bls s
end
MOV
R2 , R1
mov
r2 , r1
end:
:
end:
:
a
b
c
Bild 2.25. Befehlsfolgen zur Berechnung des Minimums zweier vorzeichenbehafteter ganzer Zah-
len. a Herkömmliche Befehlsfolge für den ARM. b Abgewandelte Befehlsfolge für den ARM, in
der die bedingte Befehlsausführung verwendet wird. c Befehlsfolge mit dynamischer Prädikation
für den Nemesis C
Verzögerte Verzweigungen (delayed branch)
Die bei verzweigenden Sprungbefehlen auftretende Zeitstrafe ist vermeidbar, indem
nicht die auf den Sprungbefehl folgenden und in das Fließband geladenen Befehle
annulliert, sondern regulär beendet werden, und zwar unabhängig davon, ob der
Sprungbefehl verzweigt oder nicht verzweigt. So würden in der in Bild 2.24a darge-
stellten Befehlsfolge die auf den Sprungbefehl folgende Addition und Subtraktion
 
Search WWH ::




Custom Search