Information Technology Reference
In-Depth Information
ren, nämlich eine Kombination aus Vergleichs- und davon abhängiger Sprungopera-
tion. Dies ist der Grund, weshalb sich die ersten beiden Operationen im Assembler-
programm aus Bild 3.21b in einem Befehl codieren lassen.
Ein weiterer im Programmiermodell des IA-64 definierter Sonderfall ist, dass Ope-
rationen, die dasselbe Zielregister verwenden und sich aufgrund der Prädikate kom-
plementär verhalten, dennoch parallel ausgeführt werden können (wie dies in Bild
3.21c z.B. mit den Operationen in den Zeilen 2 und 4 geschieht). Hingegen ist dies
nicht möglich, wenn die sich gegenseitig ausschließenden Operationen eine gemein-
same Verarbeitungseinheit durchlaufen, und zwar deshalb nicht, weil die Zuordnung
der Operationen und der Verarbeitungseinheiten zu einem Zeitpunkt geschieht, zu
dem i.Allg. noch nicht bekannt ist, ob die Operationen wirklich ausgeführt werden
sollen oder nicht (normalerweise nach dem Decodieren eines Befehls). Falls also im
Itanium 2 nur eine Additionseinheit zur Verfügung stehen würde, könnten in Bild
3.21c lediglich die Operationen in den Zeilen 2, 3 und 4 parallel codiert werden,
obwohl tatsächlich nur eine der beiden Additionen in den Zeilen 2 und 4 zur Aus-
führung kommt.
Ein Nachteil der Prädikation im Vergleich zur kombinierten Verwendung unbeding-
ter Verknüpfungs- und bedingter Sprungoperationen ist, dass durch sie zwar die
Anzahl der in einem Befehl codierbaren Operationen i.Allg. vergrößert, die Anzahl
der effektiv parallel ausführbaren Operationen jedoch möglicherweise sogar ver-
mindert wird. Zum Beispiel werden von den in Bild 3.21c im zweiten Befehl codier-
ten vier Operationen in jedem Fall nur zwei Operationen tatsächlich bearbeitet. Es
ist sogar möglich, dass in einem if-then-Konstrukt mit Prädikation bei nicht erfüllter
Abfragebedingung die Ausführung des leeren else-Zweigs mehrere Takte Zeit erfor-
dert, weil nämlich die bedingten Operationen des if-Zweigs, ohne Ergebnisse zu
erzeugen, dennoch verarbeitet werden müssen. Stellt sich in einem solchen Fall her-
aus, dass die Abfragebedingung in der Mehrzahl der zur Laufzeit auftretenden Fälle
nicht erfüllt ist, muss eine permanente Strafe in Kauf genommen werden. Das Pro-
gramm würde somit langsamer ausgeführt als unter Verwendung bedingter Sprung-
operationen, deren Verhalten sich dynamisch korrekt vorhersagen ließe.
Bemerkung. Eine andere Möglichkeit Sprungoperationen zu vermeiden besteht darin, Operati-
onsfolgen, in denen Verzweigungen auftreten, durch neu definierte Operationen zu lösen. Zum Bei-
spiel verfügt der an der TU Berlin entwickelte Nemesis X über eine Operation, mit der sich der
Maximalwert der übergebenen Operanden ermitteln lässt. Von vielen anderen Prozessoren wäre
hierzu ein Vergleich, ein bedingter Sprung und eine Zuweisung auszuführen. Ein anderes Beispiel
wurde bereits in Abschnitt 1.1.7 (siehe Beispiel 1.4) für Prozessoren mit PowerPC-Architektur von
Motorola bzw. IBM beschrieben. Mit Hilfe spezieller Befehle lassen sich zusammengesetzte Bedin-
gungen wie z.B. a
d ohne Sprung berechnen.
Eine ähnliche Möglichkeit ist im Programmiermodell der IA-64-Architektur definiert. Es ist näm-
lich möglich, mehrere Vergleichsoperationen mit demselben Zielregister parallel auszuführen,
wenn die Attribute „.and“ oder „.or“ an den Befehl angeheftet sind (siehe Bild 3.22). Technisch
wird die logische Verknüpfung der Vergleichsergebnisse realisiert, indem man bei einer Und-Ope-
ration die Null bei einer Oder-Operation die Eins in das Ergebnisregister schreibt (vergleichbar
einem wired-and bzw. wired-or). Der jeweils komplementäre Wert wird dabei ignoriert. Als Konse-
quenz ist jedoch in Kauf zu nehmen, dass vor Ausführung der Vergleiche das als Ziel verwendete
Prädikatsbit initialisiert werden muss.
=
b UND c
Search WWH ::




Custom Search