Information Technology Reference
In-Depth Information
Bemerkung. Der parallele Zugriff auf mehrere Zeilen im Befehlscache ist technisch aufwendig
zu verwirklichen. Deshalb bieten sich als Alternative die sog. Trace-Caches an, in denen man die
auszuführenden Basisblockfolgen unter der Adresse des ersten auszuführenden Basisblocks spei-
chert. Trace-Caches werden in Abschnitt 3.2.4 beschrieben.
Rücksprungstapel (return stack)
Eine eigene Gruppe von Sprungbefehlen, die zu einem indirekten Sprungziel meist
unbedingt verzweigen, sind die Rücksprungbefehle . Zur Vorhersage einer Rück-
sprungadresse (normalerweise die auf einen Unterprogrammaufruf folgende
Befehlsadresse) lässt sich eines der zuvor beschriebenen Verfahren verwenden. Bes-
sere Vorhersageergebnisse sind jedoch erzielbar, wenn die Rücksprungadressen von
einer separaten Einheit vorhergesagt werden, die die Schachtelungsstruktur von
Unterprogrammen berücksichtigt.
Bei einem Unterprogrammaufruf wird hierbei die Rücksprungadresse nicht nur für
den Programmierer sichtbar abgelegt, z.B. auf dem Parameter- und Variablenstapel,
sondern zusätzlich auf einem im Prozessor realisierten Rücksprungstapel. Mit Aus-
führung eines Rücksprungbefehls wird die dort abgelegte Adresse zur Vorhersage
des indirekten Sprungziels verwendet und der entsprechende Eintrag entfernt. In den
allermeisten Fällen erweist sich die vorhergesagte Rücksprungadresse als korrekt.
Falls dies jedoch nicht der Fall ist, z.B. weil auf dem Rücksprungstapel nicht genü-
gend viele Adressen speicherbar sind, wird dies nach Ausführung des Rücksprung-
befehls erkannt und dabei alle falsch in das Fließband geladenen Befehle annulliert.
Einer der ersten Prozessoren, der einen Rücksprungstapel besaß, ist der 6x86 von
Cyrix [29].
2.2.6 Daten- und Kontrollflusskonfliktlösung durch Wertvorhersage
Mit den in Abschnitt 2.2.3 beschriebenen Verfahren können die meisten Datenfluss-
konflikte verzögerungsfrei gelöst werden. Eine Ausnahme bilden Ladebefehle, die
einen Operanden lesen, der von einem nachfolgenden Befehl verarbeitet wird, da
hier die Latenzzeit bei Zugriffen auf den Hauptspeicher abgewartet werden muss.
Insbesondere ist die Verwendung von Bypässen nicht möglich. Das Problem lässt
sich jedoch durch die Vorhersage der Zugriffsadresse lösen, so dass es möglich ist,
den Zugriff auf den Hauptspeicher vollständig durchzuführen, bevor der Ladebefehl
die Execute-Stufe des Fließbands tatsächlich erreicht und davon abhängige Befehle
auf den zu lesenden Wert zugreifen.
Es ist klar, dass die Vorhersage von Operanden bzw. deren Gegenstück, den Ergeb-
nissen auch dazu geeignet ist, die Entscheidungen von Sprungbefehlen vorherzube-
stimmen, indem nämlich die von einem bedingten Sprungbefehl ausgewertete
Bedingung als Wert prognostiziert wird. So könnte etwas gelingen, was mit keinem
der zuvor beschriebenen Verfahren möglich ist: die Vorhersage eines nichtverzwei-
genden Sprungbefehls am Ende einer häufig wiederholten Schleife.
 
Search WWH ::




Custom Search