Information Technology Reference
In-Depth Information
Dieser Nachteil ist durch Indexteilung vermeidbar (vergleiche Bild 2.36b). Das ent-
sprechend modifizierte als Mgshare bezeichnete Verfahren ist in Bild 2.43b darge-
stellt. Insbesondere steht nun jedem Sprungbefehl die gesamte Kapazität der
Sprungmustertabelle zur Verfügung. Als Nachteil muss hier in Kauf genommen
werden, dass ein bestimmter Sprungbefehl, der innerhalb einer vorherzusagenden
Sprungfolge an unterschiedlichen Positionen auftritt, in der Sprungmustertabelle
auch mehrere Einträge belegt.
2.2.5 Sprungzielvorhersage
Bei korrekter Vorhersage einer Sprungentscheidung wird der Kontrollflusskonflikt
nur dann vermieden, wenn der Sprungbefehl in der ersten Fließbandstufe, bzw. bei
verzögerter Verzweigung und ohne Parallelverarbeitung der Befehle (delayed
branch; siehe Seite 100) in der zweiten Fließbandstufe, ausgeführt werden kann.
Dies ist jedoch nur möglich, wenn im Falle eines verzweigenden Sprungbefehls
auch die Zieladresse bekannt ist, die sich erst durch Decodierung, normalerweise in
der zweiten oder einer späteren Fließbandstufe, aus dem Befehlscode extrahieren
lässt.
Falls die Zieladresse direkt im Sprungbefehl codiert ist, kann sie ggf. am Ende der
ersten Fließbandstufe durch Vordecodierung des Befehlscodes ermittelt werden.
Allerdings verlängert sich dadurch möglicherweise der kritische Pfad, da in der ers-
ten Fließbandstufe der Befehl nicht nur geladen, sondern zusätzlich als Sprungbe-
fehl identifiziert und die darin codierte meist relative Zieladresse im Falle des Ver-
zweigens auf die Befehlsadresse des Sprungbefehls addiert werden muss. In Prozes-
soren, die man mit sehr hohen Taktfrequenzen betreibt, ist der Befehlscode oft erst
in der zweiten oder einer nachfolgenden Fließbandstufe verfügbar (z.B. benötigt der
Alpha 21264 von Compaq zwei Takte für Zugriffe auf den Befehlscache [102]).
Auch ist eine Extraktion des Sprungziels nur möglich, wenn eine direkte und keine
indirekte Adresse verwendet wird, da Letztere erst zum Zeitpunkt der tatsächlichen
Befehlsausführung bekannt ist.
Sprungzielcache (branch target cache, branch target buffer)
In einem Sprungzielcache werden zu den Befehlsadressen von bereits ausgeführten
Sprungbefehlen die jeweils verwendeten Zieladressen gespeichert. Bei erneuter
Ausführung eines Sprungbefehls, z.B. innerhalb einer Schleife, lässt sich auf diese
Weise die potentielle Zieladresse bereits in der ersten Fließbandstufe ermitteln, und
zwar, indem der Sprungzielcache mit Hilfe des Befehlszählers adressiert wird. Der
Sprungzielcache kann verwendet werden, um die Zieladressen von direkten und von
indirekten Sprungbefehlen zu bestimmen. Bei indirekten Sprungbefehlen ist jedoch
zusätzlich zu überprüfen, ob die zur Laufzeit ermittelte tatsächliche Zieladresse mit
der im Sprungzielcache gespeicherten und bei der spekulativen Ausführung des
Sprungbefehls verwendeten Zieladresse übereinstimmt. Falls dies nicht der Fall ist,
müssen alle auf den Sprungbefehl folgenden, bereits im Fließband befindlichen
Befehle annulliert werden - entsprichend dem Vorgehen bei einer Fehlvorhersage
der Sprungentscheidung bedingter Sprungbefehle. Die Zuverlässigkeit der Vorher-
Search WWH ::




Custom Search