Information Technology Reference
In-Depth Information
Reorder-Buffer, Renaming-Register
Um die Befehlsreihenfolge in der Rückschreibphase wiederherstellen zu können,
müssen die Befehle bereits in der Decodierphase entsprechend gekennzeichnet wer-
den. Hierzu wird jedem Befehl eine Position in dem als eine Art Ringpuffer reali-
sierten sog. Reorder-Buffer ( Neuordnungspuffer ) zugewiesen. Sobald der Befehl die
Ausführungsphase passiert hat, speichert man das erzeugte Ergebnis in einem Extra-
Register zwischen und vermerkt dies an der zugeordneten Position im Reorder-Buf-
fer. Ein Ergebnis wird erst dann in den Registerspeicher übertragen und dabei die
belegte Position des Reorder-Buffers freigegeben, wenn alle zuvor zu bearbeitenden
Befehle ausgeführt wurden, was daran zu erkennen ist, dass die jeweils „älteren“
Positionen des Reorder-Buffers als gefüllt markiert sind.
Die erwähnten Extra-Register heißen Renaming-Register. Sie sind assoziativ adres-
sierbar, damit mehrere Ergebnisse, die für dasselbe Zielregister bestimmt sind,
gespeichert und unter derselben Adresse abgerufen werden können. Solange ein
Ergebnis noch nicht in den Registerspeicher übertragen wurde, müssen nachfol-
gende sich auf dieses Ergebnis beziehende Befehle, auf das entsprechende Rena-
ming-Register zugreifen. Angemerkt sei noch, dass die Steuerung des Reorder-Buf-
fers und der Renaming-Register durch die sog. Retirement - oder auch Completion-
Unit geschieht. Sie ist im Falle einer Ausnahmeanforderung insbesondere für das
Löschen aller noch im Reorder-Buffer eingetragenen Befehle verantwortlich.
Angenommen, die in Bild 3.37 dargestellte Befehlsfolge wird von einem superska-
laren Prozessor bearbeitet (die Ergebnisse der Befehle sind unter der ersten Adresse
verfügbar). Wegen der Abhängigkeit der Addition vom Divisionsergebnis in r7 las-
sen sich zunächst nur die Division, die Multiplikation und die Subtraktion starten
(Ausführungsphase). Die zeitaufwendige Division blockiert jedoch während ihrer
Ausführung den vollständigen Abschluss aller nachfolgenden Befehle. Deshalb
werden die Ergebnisse der Multiplikation und der Subtraktion - sobald verfügbar -
z.B. unter r9 a und r9 b in die Renaming-Register eingetragen.
Nachfolgende Befehle beziehen sich ab jetzt auf r9 b . Trotzdem muss auch r9 a wei-
terhin in einem Renaming-Register gespeichert bleiben, da sich prinzipiell zwischen
der Multiplikation und der Subtraktion ein Befehl befinden könnte, der eine Aus-
nahmeanforderung stellt. In einem solchen Fall würde nach der Ausnahmebehand-
lung nämlich erwartet, dass in r9 das Multiplikationsergebnis r9 a und nicht das Sub-
traktionsergebnis r9 b gespeichert ist.
1: div
r7 , r1, r2
2: mul
r9, r3, r4
Decodier-
phase
Ausführungs-
phase
Rückschreib-
phase
3: add
r8, r7 , r9
4: sub
r9, r4, r6
Bild 3.37. Bearbeitung einer Befehlsfolge in einem superskalaren Prozessor
Sobald das Ergebnis der Division vorliegt, kann es unter r7 a in die Renaming-Regis-
ter eingetragen werden. Genau wie beim Abschluss der Ausführung von Multiplika-
tion und Subtraktion ist auch der Abschluss der Division im Reorder-Buffer zu ver-
Search WWH ::




Custom Search