Information Technology Reference
In-Depth Information
Verfahren zur Wertvorhersage
Die Vorhersage eines Werts ist vergleichbar mit der einer Sprungentscheidung: Aus
der Adresse des wertverarbeitenden oder -erzeugenden Befehls, dem Pfad, der zu
diesem Befehl geführt hat, dem Operationscode oder auch der zum Wert gehörenden
Registeradresse usw. wird vom realisierten Verfahren abhängig ein Wert extrapo-
liert, bevor er im Fließband tatsächlich zur Verfügung steht. Die drei wichtigsten
Verfahren, nämlich die konstante Wertvorhersage (last value prediction), die diffe-
rentielle Wertvorhersage (stride prediction) und die kontextbasierte Wertvorhersage
(context based prediction), werden nachfolgend beschrieben.
Mögliche Einsatzgebiete lassen wir dabei zunächst noch außer Acht. Die Verwen-
dung der Wertvorhersage zur Verkürzung der effektiven Latenzzeit bei Cache- und
Hauptspeicherzugriffen bzw. zur Verbesserung der Zuverlässigkeit bei der Vorher-
sage von Sprungentscheidungen werden gesondert ab Seite 136 behandelt. Weitere
Einsatzfelder sind das Laden einer Cache-Zeile, noch bevor darauf zugegriffen wird
(Abschnitt 2.3.1) und die spekulative Parallelausführung von Befehlsfolgen, bevor
die jeweils benötigten Operanden verfügbar sind.
Konstante Wertvorhersage (last value prediction). Beim einfachsten Verfahren
zur Wertvorhersage wird ausgenutzt, dass bei wiederholter Ausführung einiger
Befehle immer wieder dieselben Werte verarbeitet oder generiert werden [148, 50].
Zum Beispiel ist die Adresse, mit der man auf einen im Stapel befindlichen Ein-
gangsparameter einer Funktion zugreift, oft konstant, ebenso wie der durch einen
Ladebefehl als Ergebnis gelesene Wert ( Eingangsparameter sind unveränderlich).
Zur Vorhersage solcher konstanten Werte wird z.B. mit der Befehlsadresse des den
Wert verarbeitenden oder erzeugenden Befehls eine cache-ähnlich organisierte
Tabelle, die sog. Wertvorhersagetabelle ( value prediction table , VPT ), durchsucht.
Befindet sich der entsprechende Eintrag nicht darin, wird der Befehl in herkömmli-
cher Weise ausgeführt und, sobald der vorherzusagende Wert verfügbar ist, dieser
für zukünftige Vorhersagen in die Wertvorhersagetabelle eingetragen. Falls sich
jedoch ein passender Eintrag findet, wird der darin gespeicherte Wert zur Vorher-
sage genutzt, um z.B. den Lesezugriff eines Ladebefehls zu bearbeiten, bevor die
jeweilige Adresse im Fließband berechnet wurde. Natürlich ist mit der Verfügbar-
keit der tatsächlichen Adresse zu überprüfen, ob die Wertvorhersage korrekt war.
Gegebenenfalls müssen die mit einem falsch vorhergesagten Wert gestarteten Aktio-
nen rückgängig gemacht sowie erneut, nun mit der korrekten Adresse, ausgeführt
werden. Bei der Vorhersage der Zugriffsadresse eines Ladebefehls ist in diesem Fall
also der Lesezugriff zu wiederholen.
Die spekulative Ausführung eines Befehls und dessen wiederholte Bearbeitung im
Falle einer Fehlvorhersage kann mehr Zeit in Anspruch nehmen, als würde man den
Befehl herkömmlich abarbeiten. Deshalb ist es wichtig, eine Wertvorhersage nur
dann durchzuführen, wenn möglichst sichergestellt ist, dass das Ergebnis der Vor-
hersage auch korrekt sein wird. Falls in einem Eintrag der Wertvorhersagetabelle
nur ein einzelner Wert gespeichert werden kann, ist die Vorgehensweise ähnlich, wie
zur dynamischen Sprungvorhersage durch Gewichtung bereits beschrieben wurde:
Search WWH ::




Custom Search