Information Technology Reference
In-Depth Information
Die Multiplikation in Zeile 3 lässt sich ähnlich wie die Division in Zeile 1 behan-
deln. Bemerkenswert ist, dass das Arbeitsregister C überschrieben werden darf,
obwohl die Subtraktionseinheit (entsprechend Zeile 2) noch auf das Ergebnis der
Division wartet und als zweiten Operanden den alten Wert von C benötigt. Dies ist
möglich, weil der Wert von C bereits beim Beginn der Addition in das entspre-
chende Reservierungsregister kopiert wurde.
Der letzte Befehl in Zeile 4 ist ebenfalls verzögerungsfrei startbar, da beide Quello-
peranden direkt gelesen werden können und die zweite Reservierungsstation der
kombinierten Additions-/Subtraktionseinheit noch frei ist (c). Obwohl nur eine Ver-
arbeitungseinheit für die Addition und die Subtraktion zur Verfügung steht, kommt
es zu keinem Ressourcenkonflikt, solange freie Reservierungseinheiten existieren.
Das Divisionsergebnis muss nach dem Start des Additionsbefehls nicht mehr in das
Arbeitsregister A geschrieben werden, so dass sich die Referenz in A durch die
Referenz auf die Subtraktionseinheit ersetzen lässt (“div” wird durch “sub” ersetzt).
Weil nach der Addition in Zeile 4 keine freien Einträge in den Reservierungsstatio-
nen zur Verfügung stehen, muss jeder weitere Befehl zu einem Ressourcenkonflikt
führen und daher bis zu dessen Lösung verzögert werden. In welcher Reihenfolge
die Befehle beendet werden, ist von der Geschwindigkeit der einzelnen Verarbei-
tungseinheiten abhängig. Wahrscheinlich wird zunächst die Addition beendet,
sofern die Ausführungsreihenfolge der Operationen in der für Additionen und Sub-
traktionen gemeinsamen Verarbeitungseinheit nicht von der Reihenfolge mit der die
Operanden in die beiden getrennten Reservierungseinheiten geschrieben wurden,
abhängt. Nach der Addition folgen mit großer Wahrscheinlichkeit die Multiplika-
tion, die Division und zum Schluss die Subtraktion, die auf das Ergebnis der Divi-
sion warten musste. Die Befehle werden also in der Reihenfolge der Zeilen 4, 3, 1, 2
ausgeführt.
Bemerkung. Reservierungseinheiten werden oft zur dynamischen Operationsparallelisierung
verwendet. In realen Prozessoren sind einige Details jedoch anders als hier beschrieben implemen-
tiert. Zum Beispiel sind die Reservierungsstationen den Verarbeitungseinheiten nicht fest zugeord-
net, sondern in einem zentralen, sog. Befehlspuffer ( instruction queue ) vereint. Tritt z.B. in dem
obigen Beispiel ein Ressourcenkonflikt auf, wenn zwei Divisionen nacheinander ausgeführt wer-
den, geschieht dies mit einem Befehlspuffer deshalb nicht, weil sich die zweite Division in einer der
freien Reservierungsstationen, die den Verarbeitungseinheiten nicht mehr fest zugeordnet sind,
speichern lässt. Eine zweites Detail, das oft auf andere Weise als hier beschrieben realisiert wird,
ist, dass in den Reservierungsstationen statt der unmittelbaren Operanden Referenzen auf die jewei-
ligen Renaming-Register gespeichert werden. Diese Änderung vereinfacht die technische Umset-
zung bei gleichbleibender Wirkung des Verfahrens.
3.2.3 Befehlsbeendigung
In einem sequentiellen Programm wird implizit vorausgesetzt, dass bei Ausführung
eines Befehls alle vorangehenden Befehle in ihrer Bearbeitung vollständig abge-
schlossen sind. In einem superskalaren Prozessor muss dies, unabhängig davon, ob
die Befehlsausführung in-der-Reihe oder außer-der-Reihe erfolgt, nicht unbedingt
der Fall sein, was jedoch immer dann ein Problem darstellt, wenn eine Änderung
Search WWH ::




Custom Search