Hardware Reference
In-Depth Information
von Befehlssatzregistern zu den physisch vorhandenen Registern im Register
Pool an. Eine weitere Tabelle zeigt, welcher Wert zu verwenden ist, wenn ein
Befehl auf einen Operanden zugreifen will. Beispielsweise ist der Wert von
Register $0 aktuell, da die Eintrage beider Tabellen auf dasselbe physische
Register zeigen. Fur $1 verweist die Tabelle auf den Eintrag, der zum Befehl
ADD $1,$4,1 gehort.
Der Hauptnachteil bei diesem Ansatz ist, dass die Historie der Zuordnung
aller Befehle im Reorder Buffer aufbewahrt werden muss [34]. Bei dieser
Variante muss der Reorder Buffer nicht durchsucht werden, wenn ein Be-
fehl eingetragen wird, sondern wenn Befehle verworfen werden mussen. Die
Zuordnungstabelle muss dann entsprechend auf den letzten gultigen Wert
zuruckgesetzt werden.
4.7
4.7 Behandlung von Speicherzugriffen
Wir betrachten die Situation, dass ein Befehl an eine Speicheradresse schreibt.
Der Befehl sei zwar fertig gestellt, aber noch nicht bestatigt. Der Befehl be-
findet sich also noch im Reorder Buffer. Folgende Verschrankungen konnen
auftreten, die uns an die Datenabhangigkeiten zwischen Befehlen aus Ab-
schnitt 4.3 erinnern:
1. Ein nachfolgender Befehl kommt zur Ausfuhrung, der an genau dieser Spei-
cheradresse liest.
2. Ein nachfolgender Befehl kommt zur Ausfuhrung, der an genau diese Spei-
cheradresse schreibt.
3. Ein vorangehender Befehl kommt zur Ausfuhrung, der an genau dieser
Speicheradresse liest. Die Speicherstelle darf keinesfalls vorher uberschrie-
ben werden.
Bei den in Abschnitt 4.3 betrachteten Konflikten konnten wir die Abhan-
gigkeiten allein durch Ansehen der Befehle und der beteiligten Register er-
mitteln. Weil die Adressen aber erst zur Laufzeit berechnet werden, konnen
die Konflikte nicht durch einen festen Konfliktgraphen erfasst werden. Ein
Ladebefehl kann erst dann ausgefuhrt werden, wenn die Adressen aller vor-
angegangenen Store-Befehle bekannt und von der Adresse des Ladebefehls
verschieden sind. Im folgenden Programmfragment wird zunachst zeitrau-
bend die Adresse fur den schreibenden Speicherzugriff in Zeile 1 berechnet.
Die Befehle in Zeilen 2 und 4 konnen parallel ausgefuhrt werden, sofern zwei
Units fur Speicherzugriffe vorhanden und frei sind. Der Befehl in Zeile 4 hat
allerdings keine Moglichkeit, vorauszusehen, ob er nicht an dieselbe Stelle im
Speicher zugreift, an die der STO in Zeile 2 schreibt.
Search WWH ::




Custom Search