Information Technology Reference
In-Depth Information
In der zweiten, der sog. Ausführungsphase werden die Operationen parallel in
den Verarbeitungseinheiten ausgeführt, wobei auch der Datenspeicher ggf.
lesend angesprochen wird. Außerdem holt man spätestens jetzt die Quelloperan-
den aus dem Registerspeicher, falls dies nicht bereits in der Decodierphase
geschehen ist.
In der dritten, der sog. Rückschreibphase werden schließlich die erzeugten
Ergebnisse in den sichtbaren Maschinenstatus übernommen, indem z.B. schrei-
bend auf den Registerspeicher zugegriffen wird.
Die dynamische Parallelisierung der sequentiell codierten Befehle geschieht in der
Decodierphase, und zwar anhand eines klar umgrenzten Regelwerks: Befehle lassen
sich nur dann parallelisieren, wenn ausreichend viele Verarbeitungseinheiten ver-
fügbar sind, es also keinen Ressourcenkonflikt gibt. Des Weiteren müssen die zu
verarbeitenden Operanden zugreifbar sein, d.h., der aktuelle Befehl darf keine
Datenabhängigkeiten ( data dependencys ; auch Read-after-Write - oder RAW-Abhän-
gigkeiten ) zu vorangehenden, gleichzeitig auszuführenden Befehlen aufweisen.
Falls wegen bestehender Konflikte die Verarbeitung eines Befehls verzögert werden
muss, lässt sich die Ausführung unabhängiger, sequentiell folgender Befehle im
Prinzip bereits starten - vorausgesetzt, dass hierbei keine noch benötigten Operan-
den überschrieben werden. Die entsprechende Abhängigkeit wird als Gegenabhän-
gigkeit ( anti dependency , auch Write-after-Read - oder WAR-Abhängigkeit ) bezeich-
net. Schließlich ist die sog. Ergebnisabhängigkeit ( output dependency ; auch Write-
after-Write - oder WAW-Abhängigkeit ) zu berücksichtigen. Sie tritt auf, wenn zwei
Befehle schreibend auf dieselbe Ergebnisadresse zugreifen. Würde sie nicht beach-
tet, bestünde die Gefahr, dass durch die Ergebnisse eines Befehls die eines nachfol-
genden Befehls überschrieben werden.
Zur Verdeutlichung ist in Bild 3.32 ein Assemblerprogramm mit den darin auftreten-
den Abhängigkeiten dargestellt. Angenommen, ein superskalarer Prozessor kann
pro Zeiteinheit vier Befehle parallel starten, dann ließen sich, sofern keine Konflikte
bzw. Datenabhängigkeiten auftreten würden, alle vier Befehle parallel bearbeiten
(ähnlich wie z.B. beim PowerPC 604 von Motorola [130]). Tatsächlich besteht
jedoch zwischen den Befehlen in den Zeilen 1 und 2 eine Datenabhängigkeit und
zwischen den Befehlen in den Zeilen 1 und 3 ein Ressourcenkonflikt. Falls es nicht
möglich ist, Befehle in veränderter Reihenfolge zu bearbeiten, kann somit zunächst
nur die Multiplikation in Zeile 1 ausgeführt werden. Die restlichen Befehle lassen
sich anschließend mit Verfügbarkeit des Ergebnisses in r1 parallel beginnen.
Sollen des Weiteren die Befehle auch in veränderter Reihenfolge bearbeitet werden
können, sind zusätzlich die Gegen- und Ergebnisabhängigkeiten zu berücksichtigen.
Wegen der echten Datenabhängigkeit wird hierbei zunächst die Subtraktion verzö-
gert, bis das Ergebnis der Multiplikation in Zeile 1 bereitsteht, wobei sich die Warte-
zeit durch Bypässe verkürzen lässt. Außerdem muss mit der Bearbeitung des
Befehls in Zeile 3 gewartet werden, bis die Multiplikationseinheit einen weiteren
Befehl entgegennehmen kann. Zunächst kommt es somit nur zur Ausführung der
Befehle in den Zeilen 1 und 4.
Search WWH ::




Custom Search