Information Technology Reference
In-Depth Information
In Anlehnung an das, was bereits zur Sprungvorhersage beschrieben wurde, lassen
sich auch hier die für Werthistorien- bzw. Wertvorhersagetabelle verwendeten
Caches vereinfachen, indem man in ihnen keine Tags vorsieht (siehe Abschnitt
2.3.1). Zwar ist eine eindeutige Zuordnung eines Eintrags zur jeweils angelegten
Befehlsadresse bzw. als Index verwendeten Werthistorie auf diese Weise nicht mög-
lich, allerdings hat dies keinen Einfluss auf die Funktionstüchtigkeit der Wertvor-
hersage. Schließlich ist ohnehin zu überprüfen, ob der vorhergesagte Wert den tat-
sächlichen Gegebenheiten entspricht oder nicht. Nachteilig ist, dass einem Eintrag
des Caches möglicherweise verschiedene Inhalte zugeordnet werden, die sich
gegenseitig aus dem Cache verdrängen ( aliasing ).
Bezogen auf die Werthistorientabelle, auf die normalerweise mit den unteren n Bits
der Befehlsadresse zugegriffen wird, gilt: Je häufiger es zu Verdrängungen kommt,
desto geringer ist die Kapazität des Caches, da weit auseinander liegende Befehle,
deren Adressen sich in den unteren n Bits entsprechen, seltener in einem Zeitab-
schnitt ausgeführt werden als eng beieinander liegende Befehle. Ob es vorteilhafter
ist, die Werthistorientabelle ohne Tags und großer Kapazität oder mit Tags und ent-
sprechend geringerer Kapazität zu realisieren, lässt sich nur durch Simulation ent-
scheiden. In [56] wird z.B. eine Werthistorientabelle mit Tag, in [147] eine Werthis-
torientabelle ohne Tags beschrieben.
Die Wertvorhersagetabelle ist i.Allg. ohne Tag realisiert, da man für die Tags eine
größere Speicherkapazität benötigt als für die eigentlichen Nutzdaten, bestehend aus
Vorhersagewert und -zustand. Zum Beispiel würden mit einer drei Werte umfassen-
den Historie von 32 Bit breiten Werten und einer Wertvorhersagetabelle mit 64K
Einträgen für jedes Tag wenigstens 80 Bits benötigt (3 32-16 mit einem direkt asso-
ziativen Cache), wo hingegen die Nutzdaten selbst nur 34 Bits erfordern. Wird auf
die Speicherung eines Tags verzichtet, muss die gesamte Werthistorie auf einen
wenige Bit breiten Index reduziert werden. Dies geschieht normalerweise durch
Anwendung einer Hashfunktion, die zu jedem in der Werthistorie gespeicherten
Wert sowie der Befehlsadresse des zugehörigen Befehls einzelne Bits extrahiert und
die generierten Zwischenergebnisse durch Shift und Exclusiv-Oder zu einem Index
verknüpft [147]. Das entsprechende Schaltnetz ist zwischen Werthistorien- und
Wertvorhersagetabelle zu positionieren (in Bild 2.49 durch b markiert).
Durch geeignete Wahl einer Hashfunktion lässt sich auch der für die Werthistorien-
tabelle benötigte Speicherbedarf reduzieren. Das Verfahren ist in Bild 2.50 angedeu-
tet. Statt der vollständigen Werthistorie ist in der entsprechenden Tabelle ein Hash-
wert gespeichert, der sich durch sukzessive Verknüpfung im Schaltnetz Hash 1 (a)
mit dem zuletzt berechneten, tatsächlich von einem Befehl verarbeiteten oder
erzeugten Wert und ggf. der jeweiligen Befehlsadresse ergibt. Im Allgemeinen wird
die Bitbreite h (siehe Bild) deutlich kleiner sein als die normalerweise zu spei-
chernde Werthistorie mit n Werten zu je w Bits (also n w). Im Prinzip ist es möglich,
den gespeicherten Hashwert direkt zur Adressierung der Wertvorhersagetabelle zu
verwenden. Etwas allgemeiner ist es jedoch, wenn der Index, wie im Bild darge-
stellt, durch erneute Anwendung einer Hashfunktion Hash 2 generiert wird (b). Ins-
besondere lässt sich so die Bitbreite des in der Werthistorie gespeicherten Hashwerts
auf die zur Adressierung der Wertvorhersagetabelle benötigte Bitzahl reduzieren.
Search WWH ::




Custom Search