Hardware Reference
In-Depth Information
ist ublich, die Umbenennungsregister getrennt von den Befehlssatzregistern
in einem eigenen Registersatz zu verwalten.
Bei der Zuteilung eines Befehls auf eine Ausfuhrungseinheit werden ihm
erforderliche Umbenennungsregister zugewiesen, falls eine ausreichende An-
zahl davon verfugbar ist. Ansonsten kommt der Zuteilungsprozess zum Still-
stand, ein strukturelles Hemmnis. Der Wert in dem zugeteilten Register wird
zunachst als ungultig gekennzeichnet, weil das Ergebnis dort ja noch nicht ab-
gelegt wurde. Das zugeteilte Register wird allerdings als belegt gekennzeich-
net. Bei Beendigung der Ausfuhrung des Befehls wird das Ergebnisregister
als gultig gekennzeichnet und bei der Bestatigung des Befehls das Ergebnis
in das Befehlssatzregister durch Umkopieren des Inhalts ubernommen. Dabei
wird das Schattenregister auch wieder frei gegeben.
Wie oben beschrieben, werden beim Eintrag eines neuen Befehls in den Reor-
der Buffer ublicherweise die vorangehenden Eintrage durchsucht, um die ak-
tuellsten Werte fur dessen Operanden aufzufinden. Man spricht dann von im-
pliziter Umbenennung , da nirgends explizit vermerkt ist, wo sich der jungste
spekulative Wert eines Registers befindet [34]. Diese Situation ist in Abbil-
dung 4.7 veranschaulicht fur das obige Beispiel von Seite 71. Dabei geben
wir nur ein Ergebnis je Befehl an. Fur das Register $2 finden sich in dieser
Situation insgesamt drei Werte: Zunachst der Wert im Befehlssatzregister
$2 . Dies ist der Wert, der im Falle eines Interrupts gilt und gesichert wer-
den musste. Ferner der von der Addition ADD $2,$3,$4 erzeugte Wert, mit
dem das Befehlssatzregister $2 bei der folgenden Bestatigung des Befehls zu
uberschreiben ist. Schließlich noch der spekulative Wert, der durch die Sub-
traktion SUB $2,$2,1 berechnet wurde. Diese Subtraktion ist der jungste
(kalteste) Befehl, der einen Wert fur $2 liefert. Ein neuer Befehl, der auf $2
zugreift, musste diesen Wert verwenden. Im Gegensatz dazu ist z.B. fur das
Register $4 kein spekulativer Wert vorhanden. Hier muss auf das entspre-
chende Befehlssatzregister zugegriffen werden.
Mussen spekulativ ausgefuhrte Befehle verworfen werden, etwa weil ein Inter-
rupt auftritt oder sich ein Sprungbefehl als falsch vorhergesagt herausstellt,
so sind lediglich die entsprechenden Eintrage im Reorder Buffer zu loschen
und die zugehorigen belegten Umbenennungsregister freizugeben.
Daneben gibt es noch die Moglichkeit der expliziten Umbenennung von Re-
gistern [34]. Bei dieser Variante gibt eine Tabelle daruber Auskunft, wo der
jeweils jungste (spekulativste) Wert eines Registers zu finden ist. Da haufig
auch aktuelle Werte in Befehlssatzregistern zu finden sind, bietet es sich an,
hier einen gemeinsamen Pool fur Schatten- und Befehlssatzregister vorzuse-
hen. Das Umkopieren von Werten bei der Bestatigung von Befehlen entfallt
dann. Es wird ersetzt durch das Umsetzen von Zeigern. Diese Situation ist
in Abbildung 4.8 dargestellt. Die ganz rechte Tabelle gibt die Zuordnung
Search WWH ::




Custom Search