Information Technology Reference
In-Depth Information
die Sprungmuster im Sprunghistorienregister ( branch history register , BHR) mit
den unteren Bits der Befehlsadressen der Sprungbefehle konkateniert (Bild 2.36a).
Falls mehrere Sprungbefehle dieselbe Sprunghistorie aufweisen, besteht die prinzi-
pielle Möglichkeit, dass bei einer Sprungvorhersage unterschiedliche Einträge der
Sprungmustertabelle referenziert werden und sich unterschiedliche Vorhersagen
generieren lassen. Die Anzahl der Bits die man vom Befehlszähler berücksichtigt,
bestimmt dabei die maximale Anzahl von Einträgen die identische Sprungmuster in
der Sprungmustertabelle aufweisen dürfen, wobei Kollisionen auftreten, wenn bei
gleicher Sprunghistorie die Befehlsadressen unterschiedlicher vorherzusagender
Sprungbefehle in den unteren Bits übereinstimmen.
Shift
Shift
PC
BHR
PC
BHR
m
n
n
n
XOR
n+m
n
Sprungmustertabelle
Sprungmuster
Sprungmustertabelle
Sprungmuster
a
b
Bild 2.36. Indexerzeugung für die globale adaptive Sprungvorhersage. a Indexselektion. b Indext-
eilung
Nachteilig an der in Bild 2.36a dargestellten Indexselektion ist, dass Sprungmuster
die sehr selten auftreten, trotzdem mehrere Einträge der Sprungmustertabelle bele-
gen, obwohl möglicherweise nur ein einzelner Sprungbefehl eine entsprechende
Historie aufweist. Deshalb ist in [102] das Verfahren entsprechend Bild 2.36b modi-
fiziert worden. Bei der sog. Indexteilung ( index sharing ) wird die n Sprungentschei-
dungen enthaltende Sprunghistorie im Register BHR mit den unteren n Bits des
Befehlszählers exclusiv-oder verknüpft (das Verfahren wird oft auch als gshare
bezeichnet [85, 102]). So ist es prinzipiell möglich (wenn auch nicht wahrschein-
lich), dass die gesamte Sprungmustertabelle nur Einträge mit identischer Sprunghis-
torie enthält.
In der Literatur finden sich noch andere Verfahren zur Vermeidung möglicher Kon-
flikte. Sie basieren oft darauf, dass die Sprunghistorie (im Register BHR) und die
Befehlsadresse im Befehlszähler PC mit Hilfe einer Hashfunktion zu einem Tabel-
lenindex gewandelt werden. Erwähnenswert ist auch der in [85] beschriebene
Ansatz, bei dem die Hashfunktion durch ein Bit im Sprungbefehl beeinflusst wird.
Konflikte werden hier vermieden, indem man vom Übersetzer mit Hilfe eines Profi-
lers Informationen in die Sprungbefehle codiert, die für eine optimale Ausnutzung
der Sprungmustertabelle sorgen.
Die globale adaptive Sprungvorhersage findet in vielen modernen Prozessoren Ver-
wendung, oft in Kombination mit weiteren Sprungvorhersageverfahren. Vorteilhaft
wirkt sich vor allem die im Vergleich zu anderen Verfahren deutlich einfachere Rea-
lisierbarkeit aus. Insbesondere wird ein aufwendig zu implementierender Cache
nicht benötigt (siehe auch Abschnitt 2.3.1). Die Registertransferschaltung ist leicht
Search WWH ::




Custom Search