Information Technology Reference
In-Depth Information
tiert - wenn das Schleifenende erreicht ist - weitergegeben. Nach dem letzten
Schleifendurchlauf ist der zum Register gespeicherte Eintrag gleich dem maximal
möglichen Zählwert 2 32 - 1. Das Sprungverhalten jedes nachfolgend ausgeführten,
darauf basierenden Schleifenbefehls wird deshalb zunächst auf herkömmliche Art
und Weise vorhergesagt. - Ein vergleichbares Verfahren dürfte im Itanium [73, 74,
75, 76] bzw. Itanium 2 [78] von Intel realisiert sein.
Opcode
Rn
Sprungziel
Schleifenbefehl
Schleifenzähl-
vorhersagetabelle
Index
Zählwerte
Rn
i
a
b
tatsächlicher Wert
2
0
Sprungvorhersag e
herkömmliche
Sprungvorhersage
XOR
c
Bild 2.55. Prinzipielle Funktionsweise einer Einheit zur Vorhersage eines Schleifenendes
Das in Bild 2.55 dargestellte Verfahren setzt voraus, dass im Programmiermodell
des Prozessors Schleifenbefehle explizit definiert sind. Falls dies jedoch nicht der
Fall ist, z.B. aus Gründen der Kompatibilität, wird ein erhöhter Aufwand notwendig.
In [157] ist ein vom Programmiermodell unabhängig arbeitendes Verfahren
beschrieben, dass in leicht vereinfachter Form in Bild 2.56 dargestellt ist. In der
cache-ähnlich organisierten Schleifenendvorhersagetabelle ( loop termination buf-
fer ) wird zur Adresse der für Schleifen verwendeten Sprungbefehle gespeichert, wie
häufig sie in der Vergangenheit ausgeführt wurden, bevor eine Fehlvorhersage auf-
getreten ist. Dies lässt sich nutzen, um bei erneuter Ausführung der Schleife deren
Ende vorherzusagen.
Da die für die Schleifenterminierung relevanten Befehle nicht durch einen speziel-
len Befehlscode von anderen Sprungbefehlen unterscheidbar sind, verwendet man
zu deren Erkennung eine Heuristik. Im einfachsten Fall werden nur solche Sprung-
befehle berücksichtigt, deren befehlszählerrelativen Zieladresse negativ sind (Rück-
wärtssprünge). Sprungbefehle, mit denen aus einer Schleife herausgesprungen wird,
lassen sich so jedoch nicht identifizieren. Besser ist es, die für die Terminierung
einer Schleife relevanten Sprungbefehle daran zu erkennen, dass sie abgesehen vom
Schleifenende ein konstantes Sprungverhalten aufweisen, also permanent verzwei-
gen oder permanent nicht verzweigen.
Das Verhalten der für die Schleifenterminierung relevanten Sprungbefehle wird
zunächst in derselben Weise vorhergesagt wie das aller Sprungbefehle, also z.B.
durch eines der in Abschnitt 2.2.4 beschriebenen Verfahren. Um das Schleifenende
vorhersagen zu können, ist es zuerst erforderlich, die Anzahl der Schleifendurch-
läufe zu ermitteln. Hierzu wird im Moment der Fehlvorhersage eines für die Schleif-
enterminierung relevanten Sprungbefehls - also dem wahrscheinlichen Schleifen-
ende - ein neuer Eintrag in der Schleifenendvorhersagetabelle erzeugt und darin der
Search WWH ::




Custom Search