Information Technology Reference
In-Depth Information
gemeinsam codieren lassen. Das Verschieben von Operationen ist jedoch nur inner-
halb vorgegebener Grenzen erlaubt, die von bedingten Sprüngen (Kontrollflussauf-
spaltungen), Einsprungstellen (Kontrollflusszusammenführungen) oder Operatio-
nen, zu denen Datenabhängigkeiten bestehen, gebildet werden.
Trotzdem ist es möglich, Operationen auch über solche Barrieren hinweg vorzuver-
legen, sofern man die bewirkte Änderung der Semantik von Programmen durch
geeignete Maßnahmen kompensiert. Die verschobene Operation wird hierbei speku-
lativ verarbeitet und das erzeugte Ergebnis verworfen, wenn sich herausstellt, dass
die Ausführung nie hätte erfolgen dürfen. - Übrigens ist die spekulative Ausführung
von Operationen eine der Techniken, die sich hinter dem durch Intel und HP mit
dem Akronym EPIC 1 ( explicitly parallel instruction computing ) umschriebenen
Prinzip verbergen [151, 158].
Bei der sog. Kontrollflussspekulation ( control speculation ) wird eine in einem
bedingt auszuführenden Kontrollpfad codierte Operation vor den zur Bedingungs-
auswahl benutzten Sprung verschoben und die von ihr erzeugten Ergebnisse
zunächst zwischengespeichert. Stellt sich bei der Verarbeitung der Sprungoperation
heraus, dass der die verschobene Operation ursprünglich enthaltende bedingte Kon-
trollpfad nicht zur Ausführung gelangt, sind weitere Aktionen unnötig, da das spe-
kulativ erzeugte Ergebnis nicht endgültig gespeichert, sondern in einem temporären
Register lediglich zwischengespeichert wurde. Stellt sich jedoch heraus, dass der die
Operation ursprünglich enthaltende bedingte Kontrollpfad tatsächlich ausgeführt
wird, ist das erzeugte Zwischenergebnis entweder dem eigentlichen Ziel zuzuweisen
oder direkt für weitere Berechnungen zu verwenden (die sog. Weitergabe von
Kopien). Obwohl eine Kontrollflussspekulation mit beliebigen Operationen durch-
führbar ist, benutzt man sie im Zusammenhang mit Register-Register-Operationen
i.Allg. nicht, weil sich eine ähnliche Wirkung durch die Prädikation erreichen lässt.
Dies wird im nächsten Abschnitt genauer erläutert.
Von besonderer Bedeutung ist die Kontrollflussspekulation jedoch für Ladeoperatio-
nen, da es auf diese Weise möglich ist, die mit Speicherzugriffen verbundene
Latenzzeiten hinter parallel ausführbaren unabhängigen Operationen zu verbergen.
Ein aus dem Handbuch der Architekturdefinition IA-64 entlehntes, leicht modifi-
ziertes Anwendungsbeispiel ist in Bild 3.19 dargestellt. Teilbild a zeigt als Vorgabe
ein Programm, in dem durch die Operation ld8 in Zeile 4 der Inhalt von r4 aus dem
Hauptspeicher geladen und in Zeile 5 durch eine Addition weiterverarbeitet wird
(die jeweils in einem Befehl als parallel ausführbar codierten Operationen sind
durch zwei Semikolons getrennt). Da der Speicherzugriff mehrere Takte erfordert,
ist es wegen der bestehenden Datenabhängigkeit notwendig, die Befehlsverarbei-
tung vor Ausführung der Addition kurzzeitig, nämlich bis zur Verfügbarkeit des
benötigten Operanden in r4 zu stoppen (interlock). Gelingt es, den Ausführungszeit-
1.
Dahinter verbirgt sich ein Architekturkonzept zur operationsparallelen Verarbeitung von durch
einen Übersetzer statisch erzeugten Programmen, wobei der Grad an Parallelität durch spezielle
hardware-gestützte Verfahren, wie die spekulative Operationsausführung, die bedingte Operati-
onsausführung, das Software Pipelining usw. verbessert werden. Im Folgenden wird der Begriff
nicht weiter verwendet.
Search WWH ::




Custom Search