Information Technology Reference
In-Depth Information
verzögerungsfrei in den Registerspeicher schreiben. Da möglicherweise das Ergeb-
nis einer Operation vor dem einer vorangehend zu bearbeitenden Operation vorliegt,
wird hier von Außer-der-Reihe-Beendigung ( out-of-order completion ) gesprochen.
Die Reihenfolge, in der man die Ergebnisse z.B. in den Registerspeicher schreibt, ist
für den regulären Betrieb eines Prozessors ohne Bedeutung. Die Semantik eines
Programms bleibt in jedem Fall erhalten, wenn echte Datenabhängigkeiten berück-
sichtigt werden und gleichzeitig in Ausführung befindliche Befehle keine WAW-
Abhängigkeiten aufweisen. Dies gilt jedoch nur, solange die Bearbeitung eines
Befehls nicht zu einer Ausnahme führt, da sonst der Registerspeicher, für den Pro-
grammierer sichtbar, einen Zustand einnehmen könnte, der bei einer streng sequen-
tiellen Bearbeitung der Befehle nie auftreten dürfte.
Falls sich ein superskalarer Prozessor kompatibel zu einem skalaren Prozessor ver-
halten muss, ist dies nicht tolerierbar. Daher sorgt man in einem solchen Prozessor
dafür, dass die Ergebnisse immer in der richtigen Reihenfolge, höchstens jedoch
parallel in den Registerspeicher geschrieben werden. Am einfachsten lässt sich dies
erreichen, indem die gleichzeitig auszuführenden Befehle das Fließband im Gleicht-
akt durchlaufen, einander also nicht überholen. Dies bezeichnet man als In-der-
Reihe-Beendigung ( in-order completion ). Eine Realisierung ist jedoch aufwendiger,
als würden die Befehle außer-der-Reihe beendet werden. Einerseits, weil das Steuer-
werk den Gleichtakt kontrollieren muss, andererseits, weil die Fließbänder alle die
gleiche Länge besitzen müssen, ggf. also extra Fließbandregister und zur Vermei-
dung von Datenflusskonflikten zusätzliche Bypässe vorzusehen sind.
Superskalare Prozessoren, die die ursprüngliche Befehlsreihenfolge beim Decodie-
ren beibehalten und deren Architektur nicht durch Kompatibilitätsanforderungen
beschränkt ist, erlauben daher oft die Außer-der-Reihe-Beendigung der Befehle. Im
Falle einer Ausnahmeanforderung wird dann die Adresse des ersten noch nicht aus-
geführten Befehls für den Rücksprung verwendet. Da es möglich ist, dass von den
parallel gestarteten Befehlen, die vor dieser Adresse hätten ausgeführt werden müs-
sen, einige, nämlich die für die Ausnahmesituation verantwortlichen Befehle noch
nicht bearbeitet wurden, wird hier von einer unpräzisen Ausnahmeanforderung
(imprecise interrupt, imprecise exception) gesprochen. Im Allgemeinen können die
für die Ausnahmesituation verantwortlichen Befehle hierbei nicht identifiziert wer-
den. Problematisch ist dies für Seitenfehler, die deshalb nach Möglichkeit erkannt
werden sollten, solange die Befehlsadresse noch eindeutig zuzuordnen ist, z.B.
bevor die Befehle den Decoder passiert haben.
Die Parallelisierung von Befehlen unter Beibehaltung der Reihenfolge ist wegen des
geringen Aufwands vor allem in älteren Prozessoren, wie dem einfachen Pentium
von Intel [79] oder dem Alpha 21064 von DEC [31] implementiert. Zum Beispiel
verarbeitet der Alpha 21064 pro Takt bis zu zwei Befehle in drei parallelen Verar-
beitungseinheiten: einer Gleitkommaeinheit, einer Integereinheit und einer Lade-/
Speichereinheit. Unpräzise Ausnahmeanforderungen werden u.a. von der Gleitkom-
maeinheit ausgelöst, die ein im Vergleich zu den anderen Einheiten längeres Fließ-
band besitzt. Falls eine präzise Bearbeitung einer Ausnahmeanforderung erforder-
lich ist, lässt sich dies erzwingen, indem ein spezieller Trap-barrier-Befehl ausge-
Search WWH ::




Custom Search