-
Die
Erfindung bezieht sich auf einen Verzweigungsvorhersager eines Prozessors
bzw. auf ein Verfahren zum Vorhersagen eines einem Verzweigungsbefehl
nachfolgenden Befehlszeigers.
-
Fortschrittliche
Prozessoren verwenden Pipeline-Techniken zum Ausführen von
Befehlen mit sehr hohen Geschwindigkeiten. Bei solchen Prozessoren
ist die gesamte Maschine als Mehrfachpipeline, bestehend aus mehreren
kaskadierten Hardwarestufen, organisiert. Die Befehlsverarbeitung
ist in eine Folge von Operationen unterteilt und jede Operation
wird mit Hardware in einer entsprechenden Pipelinestufe ("Pipe-Stufe") durchgeführt. Unabhängige Operationen
von mehreren Befehlen können gleichzeitig
von verschiedenen Pipe-Stufen verarbeitet werden, wodurch der Befehlsdurchsatz
des Prozessors erhöht
wird. Wenn ein Pipeline-Prozessor mehrere Ausführungsressourcen in jeder Pipe-Stufe enthält, kann
der Durchsatz des Prozessors einen Befehl pro Taktzyklus übersteigen.
Um diese Befehlsausführungsfähigkeit
voll zu nutzen, müssen
die Ausführungsressourcen
des Prozessors mit genügend
Befehlen von dem richtigen Ausführungspfad versehen
sein.
-
Bei
einem typischen Computersystem dirigiert ein Befehlszeiger (IP)
den Prozessor von einem Befehl des Programmcodes zum nächsten Befehl. Ein
Befehl kann diesen IP zum nächsten
Befehl in der normalen Programmcodefolge dirigieren, oder er kann
den IP anweisen, einen Abschnitt des Programmcodes zu überspringen
und die Ausführung
an einem nicht-sequentiellen Befehl wieder aufzunehmen. Der Befehl,
welcher den Prozessor entweder zum Fortsetzen der Ausführung des
nächsten
Befehls in der Folge oder zum "Verzweigen" auf einen anderen,
nicht-nachfolgenden Befehl veranlaßt, wird als Verzweigungsbefehl
bezeichnet.
-
Wenn
beispielsweise ein Textprozessor eine Rechtschreibüberprüfung durchführt, werden
Softwarebefehle ausgeführt,
um die richtige Schreibweise jedes Worts zu verifizieren. Solange
die Wörter richtig
buchstabiert sind, werden die Befehle sequentiell ausgeführt. Sobald
ein falsch geschriebenes Wort gefunden wird, dirigiert ein Verzweigungsbefehl den
IP jedoch in einen Unterroutinenzweig, der den Benutzer über das
falsch buchstabierte Wort informiert. Diese Subroutine wird dann
vom Prozessor ausgeführt.
-
Verzweigungsbefehle
bilden Hauptherausforderungen dafür, die Pipeline mit Befehlen
aus dem richtigen Ausführungspfad
gefüllt
zu halten. Wenn ein Verzweigungsbefehl ausgeführt und die Verzweigungsbedingung
erfüllt
ist, springt der Steuerablauf des Prozessors zu einer neuen Codesequenz,
und Befehle aus der neuen Codesequenz werden in die Pipeline übertragen.
Eine Verzweigungsausführung tritt
typischerweise am hinteren Ende der Pipeline auf, während Befehle
am vorderen Ende der Pipeline abgerufen werden. Wenn sich das Abrufen
eines Befehls auf eine Verzweigungsausführung stützt, um den richtigen Ausführungspfad
zu bestimmen, kann die Prozessorpipeline mit Befehlen aus dem falschen Ausführungspfad
gefüllt
werden, bevor die Verzweigungsbedingung aufgelöst wird. Diese Befehle müßten sodann
aus der Pipeline ausgespült
werden, wodurch Ressourcen in den betroffenen Pipe-Stufen untätig sind,
während
Befehle aus dem richtigen Ausführungspfad
abgerufen werden. Die untätigen
Pipe-Stufen werden als Pipeline-Bubbles bezeichnet, da sie keine
brauchbare Ausgabe liefern, bis sie mit Befehlen aus dem richtigen
Ausführungspfad
gefüllt sind.
-
Moderne
Prozessoren beinhalten Verzweigungsvorhersagemodule an den Frontenden
ihrer Pipelines zur Verringerung der Anzahl von Pipeline-Bubbles.
Wenn ein Verzweigungsbefehl in das Frontende der Pipeline eintritt,
sagt das Verzweigungsvorhersagemodul voraus, ob der Verzweigungsbefehl
genommen wird, wenn er am hinteren Ende der Pipeline ausgeführt wird.
-
Wenn
die Verzweigung als genommen vorhergesagt wird (nichtsequentielle
Befehlsausführung),
liefert das Verzweigungsvoraussagemodul eine Verzweigungszieladresse
an das Befehls-Abrufmodul,
wobei der IP dadurch umdirigiert wird, daß die IP-Adresse gleich der
den ersten Befehl des verzweigten Programmcodes enthaltenden Adresse
gemacht wird. Die den ersten Befehl des verzweigten Codes enthaltende
Adresse wird als "Zieladresse" bezeichnet. Verzweigungsvorhersageeinrichtungen mit
Verzweigungszielpuffern (BTB) und mehrstufigen Architekturen sind
z. B. aus dem Artikel von Karel Driesen und Urs Hölzle, "The Casdaded Predictor: Economic
and Adaptive Branch Target Prediction", Technischer Bericht TRCS98-17, und
dem
EP 0 851 344 A2 bekannt.
Das Abrufmodul, das auch am Frontende der Pipeline angeordnet ist,
beginnt, Befehle aus der Zieladresse abzurufen. Wenn andererseits eine
Verzweigungsvorhersage vorhersagt, daß eine Verzweigung nicht genommen
wird (sequentielle Befehlsabarbeitung), rückt der Verzweigungsvorhersager
die IP-Adresse vor, so daß der
IP auf den nächsten
Befehl in der normalen Programmcodefolge hinweist. Wenn die Verzweigungsausführung am
hinteren Ende der Pipeline auftritt, kann der Prozessor bestätigen, ob
die Vorhersage am Frontende richtig war. War sie unrichtig, wird
die Pipeline gespült.
Je höher die
Verzweigungsvorhersagegenauigkeit ist, desto weniger Pipeline-Bubbles
und Spülungen
gibt es.
-
Herkömmliche
Verzweigungsvorhersagemodule verwenden Verzweigungszielpuffer (BTBs)
zum Speichern der Vorhersageeinträge, die beispielsweise Informationen
darüber
enthalten, ob ein Zweig genommen wird, und über die wahrscheinliche Zieladresse,
wenn die Verzweigung genommen wird. Diese Verzweigungsvorhersageeinträge sind
den IP-Adressen
zugeordnet, welche die Verzweigungsbefehle enthalten. Für jede IP-Adresse,
die in einer Verzweigungsvorhersagetabelle verfolgt wird, weist der
zugehörige
Verzweigungsvorhersageeintrag die IP-Adresse zusammen mit Vorgeschichte-Informationen
auf, welche hilfreich sind, um vorherzusagen, ob die Verzweigung
in der Zukunft eingeschlagen wird oder nicht. Aber selbst das Verfahren
des Nachschlagens eines Befehls im BTB, des Bestimmens, ob die Verzweigung
genommen wird, und der Lieferung einer Zieladresse an das Abrufmodul
aufgrund einer getroffenen Vorhersage verursacht eine Verzögerung bei
der Umlenkung des Prozessors auf die Zieladresse. Diese Verzögerung macht
es möglich,
daß Befehle
aus dem falschen Ausführungspfad
in die Pipeline eintreten und in ihr wandern können. Da diese Befehle nicht
zum Fortschritt auf dem vorhergesagten Ausführungspfad beitragen, rufen
sie "Bubbles" in der Pipeline
hervor, wenn sie ausgespült
werden. Genauere und vollständige
Verzweigungsvorhersagealgorithmen (unter Verwendung größerer Verzweigungstabellen)
brauchen zur Abarbeitung länger
und erzeugen größere Verzögerungen
im Umlenkungsprozeß.
Je größer die
Anzahl von zum Umlenken der Pipeline erforderlichen Taktzyklen ist,
desto größer ist
die Zahl von in der Pipeline erzeugten Bubbles. Es gibt daher einen
Kompromiß zwischen
der Zugriffsgeschwindigkeit der Verzweigungsvorhersagestrukturen
und der Größe und Genauigkeit
des Inhalts dieser Strukturen.
-
Aus
Geschwindigkeits- und Kostengründen begrenzen
moderne Prozessoren häufig
die Größe des verwendeten
BTB. Dies reduziert die Genauigkeit der Verzweigungserfassung und
-vorhersage, insbesondere bei großen Arbeitsbelastungen. Bei der
geringeren Größe des BTB
muß ein
neuer Verzweigungsvorhersageeintrag manchmal einen älteren Verzweigungsvorhersageeintrag überschreiben. Wenn
ein einem überschriebenen
Verzweigungsvorhersageeintrag zugeordneter Verzweigungsbefehl vom
Prozessor dann erneut ausgeführt
wird, existiert keine historische Information, die dem Verzweigungsvorhersager
bei der Vorhersage hilft, ob die Verzweigung genommen werden soll
oder nicht. Als Folge nimmt die Verzweigungsvorhersagegenauigkeit
ab, wodurch die Leistungsfähigkeit
des Prozessors verringert wird. Wenn die Größe der Softwareanwendungen
zunimmt, nimmt die Anzahl von Verzweigungsbefehlen bei solchen Anwendungen
zu, und die begrenzte Größe der Verzweigungsvorhersagetabellen
wird zu einem signifikanten Problem.
-
Es
ist daher eine Aufgabe der Erfindung, Verzweigungsvorhersagen mit
geringer Verzögerung
für die
am häufigsten
aufgerufene Untermenge von Verzweigungen (diejenigen mit hoher Lokalität) zur Verfügung zu
stellen und trotzdem sinnvolle Vorhersagen für den gesamten Arbeitssatz
zu liefern.
-
Diese
Aufgabe wird erfindungsgemäß durch einen
Verzweigungsvorhersager mit den Merkmalen des Anspruchs 1 bzw. ein
Verfahren zum Vorhersagen eines einem Verzweigungsbefehl nachfolgenden Befehlszeigers
mit den Merkmalen des Anspruchs 7 gelöst.
-
Vorteilhafte
und/oder bevorzugte Weiterbildungen der Erfindung sind in den Unteransprüchen gekennzeichnet.
-
Die
vorliegende Erfindung wird anhand eines Ausführungsbeispiels und ohne Beschränkung hierauf
in den Figuren der beigefügten
Zeichnungen dargestellt, in denen gleiche Bezugszeichen ähnliche Elemente
bezeichnen, und in denen:
-
1 ein
Ablaufdiagramm eines Verfahrens nach der Erfindung ist;
-
2 eine
Ablauf-Vorhersagepipeline nach einem Ausführungsbeispiel der Erfindung
zeigt; und
-
3 den
Verzweigungsvorhersager nach 2 zeigt.
-
Ein
Verzweigungsvorhersager für
einen Prozessor mit primärer
und sekundärer
Verzweigungsvorhersagetabelle wird beschrieben. Eine Anfangsbefehlszeiger(IP)-Adresse
wird von einem IP-Generator erzeugt. Die primäre (L1-) Verzweigungsvorhersagetabelle
(BPT) und sekundäre
(L2-) BPT werden nach Verzweigungsvorhersageeinträgen, die
der anfänglichen
IP-Adresse zugeordnet
sind, durchsucht. Bei einem Ausführungsbeispiel
der Erfindung ist die L1-BPT assoziativ (d. h. voll assoziativ oder Mehr-Wege-Satz-assoziativ),
und die L2-BPT ist direkt-abgebildet.
-
Da
die L1-BPT assoziativ ist, werden Verzweigungsvorhersageeinträge mit Tags
versehen, und diese Tags werden zusammen mit der Verzweigungsvorhersageinformation
in der L1-BPT gespeichert. Verzweigungsvorhersageeinträge in der
direkt- abgebildeten
L2-BPT sind nicht mit Tags versehen, so daß nur die Verzweigungsvorhersageinformation
in der L2-BPT gespeichert wird. Da die Verzweigungsvorhersageeinträge in der
L1-BPT größer als
die Verzweigungsvorhersageeinträge
in der L2-BPT sind,
kann die L2-BPT mehr Verzweigungsvorhersageeinträge in dem gleichen Speicherraum haben
als die L1-BPT. Obwohl die L1-BPT genauer und schneller sein kann
als die L2-BPT,
wirkt die L2-BPT daher als ein "Back-up" für die L1-BPT
und ermöglicht
die Speicherung zusätzlicher
Verzweigungsvorhersageinformationen bei einer relativ geringen Zunahme
der Prozessorgröße. Durch
Einbeziehung sowohl der L1-BPT als auch der L2-BPT in einen Prozessor,
können
die Verzweigungsvorhersagegenauigkeit und die Gesamtgeschwindigkeit gleichzeitig
ohne merkliche Erhöhung
der Hardwarekosten verbessert werden. Außerdem kann eine moderate Zunahme
der Größe der L2-BPT
die gesamte Speicherkapazität
weiter vergrößern, um
damit in der Lage sein, die Masse der Verzweigungen in Programmen
mit großen
Arbeitssätzen
zu halten.
-
Wenn
ein Verzweigungsvorhersageeintrag, der der Anfangs-IP-Adresse zugeordnet
ist, in der L1-BPT gefunden wird ("Treffer" in der L1-BPT genannt), dann wird die
dem Eintrag zugeordnete Verzweigungsvorhersageinformation zum Vorhersagen einer
Verzweigung als genommen oder nicht genommen benutzt (d. h. zum
Vorhersagen der nachfolgenden IP-Adresse). Wenn ein der anfänglichen IP-Adresse
zugeordneter Verzweigungsvorhersageeintrag nicht in der L1-BPT gefunden
wird ("Fehlversuch" bzw. "Miss" in der L1-BPT genannt),
so wird der der IP-Adresse zugeordnete Befehl decodiert, um festzustellen,
ob er ein Verzweigungsbefehl ist. Ist er ein Verzweigungsbefehl,
so wird die Verzweigungsvorhersageinformation aus der L2-BPT zum Vorhersagen
des Nehmens oder Nichtnehmens einer Verzweigung verwendet.
-
Bei
einem alternativen Ausführungsbeispiel der
Erfindung liefert die Software dem Prozessor Hinweise, um die Verzweigungsvorhersage
zu unterstützen.
Bei diesem Ausführungsbeispiel
dienen diese Hinweise zur Bestimmung, ob die Verzweigungsvorhersageinformation
aus der L2-BPT oder die in der Software selbst verschlüsselte Verzweigungsvorhersageinformation
zum Vorhersagen des Nehmens oder Nichtnehmens einer Verzweigung
verwendet werden soll.
-
Eine
Zwei-Stufen-Verzweigungsvorhersager-Gestaltung wie diese kann sich
als besonders zweckmäßig für Prozessoren
erweisen, deren Aufgabe die Ausführung
großer
Anwendungen ist, z. B. derjenigen, welche auf Servern oder Workstations ablaufen.
Eine genauere Beschreibung der Ausführungsbeispiele der Erfindung,
einschließlich
verschiedener Konfigurationen und Implementierungen, wird nachfolgend
geliefert.
-
1 ist
ein Ablaufdiagramm, das ein Verfahren der vorliegenden Erfindung
zeigt. Im Schritt 205 werden L1- und L2-Verzweigungsvorhersagetabellen
nach einer Anfangs- bzw. Start-IP-Adresse zugeordneten Verzweigungsvorhersageeinträgen durchsucht.
Die L1-BPT ist eine assoziative Tabelle mit Tags, und die L2-BPT
ist eine direkt-abgebildete Tabelle ohne Tags. Bei einem Ausführungsbeispiel speichert
die L1-BPT weniger
Verzweigungsvorhersageeinträge
als die L2-BPT, jedoch ist die L1-BPT schneller und liefert eine
größere Verzweigungsvorhersagegenauigkeit
als die L2-BPT. Da die L1-BPT weniger
Verzweigungsvorhersageeinträge
speichert, speichert die L1-BPT nur diejenigen Verzweigungsvorhersageeinträge, welche
zuletzt benutzt worden sind und daher in der nahen Zukunft mit höchster Wahrscheinlichkeit
erneut verwendet werden.
-
Im
Schritt 210 der 1 wird bestimmt, ob es in der
L1-BPT einen der Anfangs-IP-Adresse zugeordneten Treffer gibt oder
nicht. Wenn es in der L1-BPT einen Treffer gibt, wird im Schritt 215 als nächstes bestimmt,
ob die der Anfangs-IP-Adresse zugeordneten Verzweigungsvorhersageinformationen
in der L1-BPT anzeigen, daß die
Verzweigung als genommen vorherzusagen ist oder nicht. Wenn die
Verzweigung als genommen vorhergesagt wird, so wird im Schritt 220 die
nachfolgende IP-Adresse auf eine Adresse aus dem TAC oder RSB umgelenkt. Wenn
dagegen die Verzweigung als nicht zu nehmen vorhergesagt wird, so
wird im Schritt 225 kein Umlenksignal gesendet.
-
Wenn
es im L1-BPT keinen Treffer gibt (ein Fehlversuch in der L1-BPT),
decodiert ein Decodierer wenigstens einen Teil des Befehls im Schritt 230 der 1,
um festzustellen, ob der der Anfangs-IP-Adresse zugeordnete Befehl
ein Verzweigungsbefehl ist. Wenn der Befehl als Verzweigungsbefehl
erkannt wird, wird auch eine Zieladresse vom Decodierer im Schritt 230 decodiert
sowie, ob der Befehl ein Rückkehren
ist oder nicht. Bei einem Ausführungsbeispiel,
bei dem Verzweigungsvorhersagehinweise von Verzweigungsbefehlen
dem Verzweigungsvorhersager zur Verfügung gestellt werden, decodiert
der Decodierer diese Hinweisinformation im Schritt 230.
-
Wenn
im Schritt 235 in 1 festgestellt wird,
daß der
Befehl kein Verzweigungsbefehl ist, so wird im Schritt 240 kein
Umlenksignal gesendet. Wenn festgestellt wird, daß der Befehl
ein Verzweigungsbefehl ist, dann wird als nächstes im Schritt 250 festgestellt,
ob ein diesem Verzweigungsbefehl zugeordneter Hinweis statisch ist.
Zu beachten ist, daß bei
einem alternativen Ausführungsbeispiel
der Erfindung, bei dem keine Hinweise implementiert sind, die Schritte 250 und 260 eliminiert
sind, und wenn festgestellt wird, daß der Befehl ein Verzweigungsbefehl
ist, so springt der Verfahrensablauf vom Schritt 235 zum
Schritt 255.
-
Wenn
der dem Verzweigungsbefehl zugeordnete Hinweis nicht statisch ist
(d. h., er ist dynamisch), so wird als nächstes im Schritt 255 der 1 festgestellt,
ob die Verzweigungsvorhersageinformationen in der L2-BPT, die der
Anfangs-IP-Adresse zugeordnet sind, anzeigen, daß die Verzweigung als genommen
vorhergesagt werden soll. Wenn die Verzweigung als genommen vorhergesagt
wird, so wird im Schritt 265 die nachfolgende IP-Adresse
umgelenkt, wobei die nachfolgende IP-Adresse als Adresse aus dem
TAC, dem RSB (wenn der Befehl als ein Rückkehrbefehl bestimmt wird)
oder eine vom Decodierer decodierte Adresse vorhergesagt wird. Wenn dagegen
die Verzweigung als nicht zu nehmend vorhergesagt wird, dann wird
im Schritt 240 kein Umlenksignal gesendet.
-
Wenn
statt dessen der dem Verzweigungsbefehl zugeordnete Hinweis statisch
ist, dann wird als nächstes
im Schritt 240 der 1 bestimmt,
ob der Hinweis anzeigt, ob die Verzweigung als genommen oder nicht-genommen
vorhergesagt werden soll. Wenn der Hinweis besagt, daß die Verzweigung
genommen wird, dann fährt
der Prozeßablauf
zum Schritt 265 fort, wie oben beschrieben wurde. Wenn statt
dessen der Hinweis besagt, daß die
Verzweigung nicht genommen wird, so wird der Prozeßablauf mit
Schritt 240 fortgesetzt, wie oben beschrieben wurde.
-
Zu
beachten ist, daß nach
einem Ausführungsbeispiel
der Erfindung Verzweigungsvorhersagen in den Schritten 220 oder 225 der 1 früher beendet
werden als Verzweigungsvorhersagen in den Schritten 240 oder 265.
-
2 zeigt
eine Verzweigungsvorhersagepipeline nach einem Ausführungsbeispiel
der Erfindung. Gemäß der Pipeline
nach 2 liefert das Ausgangssignal des IP-Multiplexers 10 eine
Anfangs-IP-Adresse an einen Inkrementierer 20, einen primären (L1-)
Verzweigungsvorhersager 21 und einen sekundären (L2-)
Verzweigungsvorhersager 22. Der Inkrementierer 20 inkrementiert
die Anfangs-IP-Adresse in geeigneter Weise, um eine nachfolgende
IP-Adresse zu schaffen, und liefert die nachfolgende IP-Adresse
zurück
an den Eingang des IP-Multiplexers 10 während einer ersten Pipelinestufe.
Der IP-Inkrementierer 20 nimmt eine Anfangs-IP-Adresse
und inkrementiert sie um einen vorgegebenen Wert. Der vorgegebene
Wert, der zur Anfangs-IP-Adresse addiert wird, ist die Differenz zwischen
zwei aufeinanderfolgenden Speicheradressen, welche aufeinanderfolgende
Befehle oder Gruppen von Befehlen des ausgeführten Programmcodes speichern.
-
Der
L1-Verzweigungsvorhersager 21 kann ein Umlenksignal erzeugen
und dieses Signal an einen Eingang einer IP-Steuerung 11 anlegen.
Dieses Signal zeigt an, ob die nachfolgende IP-Adresse eine Folgeadresse
der Anfangs-IP-Adresse ist. Wenn der L1-Verzweigungsvorhersager 21 ein
Umlenksignal an die IP-Steuerung 11 sendet, zeigt dies
an, daß die nachfolgende
IP-Adresse nicht-sequentiell ist, und der L1-Verzwei gungsvorhersager 21 liefert
dann eine nachfolgende IP-Adresse
an den Eingang des IP-Multiplexers 10 während einer zweiten Pipelinestufe.
-
Der
L2-Verzweigungsvorhersager 22 kann ebenfalls ein Umlenksignal
erzeugen und dieses Signal an einen anderen Eingang der IP-Steuerung 11 anlegen.
Dieses Signal zeigt in ähnlicher
Weise an, ob die nachfolgende IP-Adresse sequentiell zur Anfangs-IP-Adresse
ist oder nicht. Wenn der L2-Verzweigungsvorhersager 22 ein
Umlenksignal an die IP-Steuerung 11 sendet, zeigt dies
an, daß die
nachfolgende IP-Adresse
nicht-sequentiell ist, und der L2-Verzweigungsvorhersager 22 liefert
dann eine nachfolgende IP-Adresse an den Eingang des IP-Multiplexers 10 während einer
dritten Pipelinestufe.
-
Die
IP-Steuerung 11 bestimmt dann auf der Basis der Signale
aus dem L2-Verzweigungsvorhersager 22 und dem L1-Verzweigungsvorhersager 21, welches
der drei Eingangssignale des IP-Multiplexers 10 zum Ausgang
des Multiplexers durchgelassen werden kann. Wenn weder der L1-Verzweigungsvorhersager 21 noch
der L2-Verzweigungsvorhersager 22 ein Umlenksignal sendet,
wird die inkrementierte IP-Adresse vom Inkrementierer 20 als
die nachfolgende Adress-IP-Ausgabe vom Multiplexer 10 ausgewählt. Wenn
der L1-Verzweigungsvorhersager 21 ein Umlenksignal sendet,
wird die IP-Adresse vom Ausgang des L1-Verweigungsvorhersagers 21 als
die nachfolgende Adress-IP-Ausgabe vom Multiplexer 10 ausgewählt. Wenn
der L2-Verzweigungsvorhersager 22 ein Umlenksignal sendet,
wird die IP-Adresse vom Ausgang des L2-Verzweigungsvorhersagers 22 als
die nachfolgende Adress-IP-Ausgabe vom Multiplexer 10 ausgewählt.
-
Zu
beachten ist, daß der
hier verwendete Ausdruck "Anfangs-IP-
oder Startadresse" sich
auf irgendeine IP-Adresse bezieht, welche als Referenzpunkt verwendet
wird, von dem aus eine nachfolgende IP-Adresse vorhergesagt wird. "Anfangs-IP-Adresse" soll nicht beschränkt sein
auf die der ersten Zeile des Programmcodes einer speziellen Softwareanwendung
zugeordnete IP-Adresse. Eine Anfangs-IP-Adresse kann irgendeine
IP-Adresse sein, die irgendeiner Programmcodezeile einer Anwendung
zugeordnet ist.
-
3 zeigt
den L1-Verzweigungsvorhersager 21 und den L2-Verzweigungsvorhersager 22 der 2 gemäß einem
Ausführungsbeispiel
der Erfindung. Der Verzweigungsvorhersager der 3 kann auf
demselben Halbleitersubstrat enthalten sein wie der Prozessor, für den der
Verzweigungsvorhersager die Verzweigungsvorhersage durchführt. Bei
einem anderen Ausführungsbeispiel
sind ein oder mehrere Funktionsblöcke des Verzweigungsvorhersagers
auf einem separaten Halbleitersubstrat angeordnet. So kann beispielsweise
zur Verringerung der Gesamtgröße des Prozessors
die L2-BPT 102 auf einem separaten Halbleitersubstrat angeordnet
sein.
-
Die
L1-BPT 100 ist eine assoziative Tabelle, die Verzweigungsvorhersageeinträge enthält, auf
die durch Adreß-Tags Bezug genommen
wird. Jedes Adreß-Tag
ist einer einen Verzweigungsbefehl enthaltenden IP-Adresse zugeordnet.
Jeder Verzweigungsvorhersageeintrag in L1-BPT 100 weist
zusätzlich
zu dem ihm zugeordneten Adreß-Tag
Verzweigungsvorhersageinformationen auf. Diese Verzweigungsvorhersageinformationen
werden vom Verzweigungsvorhersager verwendet, um vorherzusagen,
ob die Verzweigung genommen werden wird oder nicht. Die spezielle
Art in der L1-BPT 100 gespeicherten Verzweigungsvorhersageinformationen ist
vergleichbar mit einer von verschiedenen Arten von Verzweigungsvorhersagealgorithmen,
welche von einem Verzweigungsvorhersager implementiert werden kann,
wobei viele dieser Arten dem Fachmann bekannt sind.
-
Beispielsweise
wird nach einem Ausführungsbeispiel
der Erfindung ein Lokale-Vorgeschichte-Vorhersagealgorithmus in
Verbindung mit der L1-BPT 100 implementiert. Bei einem
anderen Ausführungsbeispiel
wird ein Globale-Vorgeschichte-Verzweigungs-Vorhersagealgorithmus
oder ein Zählervorhersager
(z. B. ein Zwei-Bit-Aufwärts-Abwärtszähler, auch
bekannt als bimodaler Verzweigungsvorhersager) in L1-BPT 100 implementiert.
Bei einem anderen Ausführungsbeispiel
ist die L1-BPT 100 in
zwei oder mehr separate Verzweigungsvorhersagetabellen unterteilt,
wobei jede Tabelle einen anderen Verzwei gungsvorhersagealgorithmus
implementiert. Eine Auswahlschaltung bestimmt dann, welcher Algorithmus
die genaueste Vorhersage in einem speziellen Fall liefern würde und
wählt die
richtige Tabelle.
-
Bei
einem Ausführungsbeispiel
der Erfindung ist die L1-BPT 100 der 3 Mehr-Wege-Satz-assoziativ.
Bei einem anderen Ausführungsbeispiel
der Erfindung ist die L1-BPT 100 vollständig assoziativ. Um die Geschwindigkeit
zu verbessern, mit der Verzweigungsvorhersageeinträge in der L1-BPT 100 durchsucht
werden, wird die Tabelle relativ klein gehalten und hat eine Speicherkapazität von angenähert 512
bis 2K Verzweigungsvorhersageeinträgen.
-
Die
Anfangs-IP-Adresse wird an den Eingang des L1-Verzweigungsvorhersagers 21 der 3 angelegt.
Diese Anfangs-IP-Adresse wird zum Durchsuchen der L1-BPT 100 und
des Zieladressen-Caches (TAC) 101 verwendet. Wenn die Adresse
in der L1-BPT gefunden wird, ist dies ein Treffer, und ein Treffersignal
wird über
die Treffer/Miss-Signalleitung 121 an einen Eingang des
UND-Gatters 144 gesendet. Wenn die Adresse in der L1-BPT 100 nicht
gefunden wird, ist das ein Fehlversuch (Miss), und ein Miss-Signal
wird über
die Treffer/Miss-Signalleitung 121 gesendet. Wenn es einen
Treffer in der L1-BPT 100 gibt und der zugehörige Eintrag
in L1-BPT 100 anzeigt, daß die Verzweigung genommen
wird, wird dies durch ein Genommen-Signal angezeigt, das über die
Genommen/Nicht-Genommen-Signalleitung 122 zum anderen Eingang
des UND-Gatters 144 gesendet wird. Wenn es einen Treffer
in der L1-BPT 100 gibt und der zugehörige Eintrag in der L1-BPT 100 anzeigt,
daß die
Verzweigung nicht genommen wird, wird dies durch ein Nicht-Genommen-Signal
angezeigt, das über
die Genommen/Nicht-Genommen-Signalleitung 122 gesendet
wird. Wenn es einen Treffer gibt, der in der L1-BPT 100 "genommen" ist, und die L1-BPT
ferner anzeigt, daß die
Verzweigung eine Rückkehr
ist, wird dies durch ein Rückkehrsignal
angezeigt, welches über
die Rückkehr/Nicht-Rückkehr-Signalleitung 143 zum
Steuereingang des Multiplexers 106 gesendet wird. Wenn
es einen Treffer gibt, der in der L1-BPT 100 "genommen" ist und die L1-BPT
anzeigt, daß die Verzweigung
keine Rückkehr
ist, wird dies durch ein Nicht-Rückkehr-Signal über die
Rückkehr/Nicht-Rücklauf-Signalleitung 143 angezeigt.
-
Wenn
es einen Treffer in der L1-BPT 100 der 3 gibt
und die L1-BPT anzeigt, daß die
Verzweigung genommen wird, gibt UND-Gatter 144 ein Umlenksignal
an die IP-Steuerung 11 aus. Wenn es entweder einen Miss
in der L1-BPT 100 oder einen Nicht-Genommen-Treffer in
der Ll-BPT gibt, so gibt UND-Gatter 144 kein
Umlenksignal aus. Wenn das UND-Gatter 144 ein Umlenksignal
ausgibt, wird eine IP-Adresse ebenfalls vom Multiplexer 106 ausgegeben.
Die Rückkehr/Nicht-Rückkehr-Signalleitung 143 bestimmt
den Ausgang des Multiplexers 106. Wenn Signalleitung 143 anzeigt,
daß die
Verzweigung ein Rückkehrbefehl
ist, wird die Rückkehradresse
vom Rückkehr-Stapelpuffer (RSB) 142,
der mit einem Eingang des Multiplexers 106 gekoppelt ist,
von dem Multiplexer 106 zum Ausgang und demgemäß zum IP-Multiplexer 10 übertragen.
Wenn Signalleitung 143 anzeigt, daß die Verzweigung kein Rückkehrbefehl
(für einen
Genommen-Treffer in der L1-BPT 100) ist, wird die Zieladresse
vom TAC 101, der mit dem anderen Eingang des Multiplexers 106 über Zielbus 123 gekoppelt
ist, zum Ausgang des Multiplexers 106 und dementsprechend
zum IP-Multiplexer 10 übertragen.
Zusätzlich
wird eine im TAC 101 gefundene Zieladresse zusammen mit
einem Treffer/Miss-Signal ebenfalls einem Eingang des Multiplexers 109 des
L2-Verzweigungsvorhersager 22 zur Verfügung gestellt, wie weiter unten
beschrieben wird.
-
Die
L2-BPT 102 der 3 ist eine direkt-abgebildete
Tabelle, welche Verzweigungsvorhersageeinträge mit Verzweigungsvorhersageinformationen ohne
Adreß-Tags
enthält.
Diese Verzweigungsvorhersageinformationen werden vom Verzweigungsvorhersager
dazu verwendet, vorherzusagen, ob eine Verzweigung genommen oder
nicht genommen werden soll. Die spezielle Art von Verzweigungsvorhersageinformationen,
die in der L2-BPT 102 gespeichert
sind, ist vergleichbar mit einem von verschiedenen Arten von Verzweigungsvorhersagealgorithmen, die
von einem Verzweigungsvorhersager implementiert werden kann, wobei
viele dieser Algorithmen dem Fachmann bekannt sind. Einige dieser
Verzweigungsvorhersagealgorithmen sind oben in Verbindung mit der
L1-BPT 100 beschrieben. Die L2-BPT 102 kann einen oder irgendeine
Kombination dieser Algorithmen implementieren, und zwar unabhängig von
der Art des von der Ll-BPT 100 implementierten Algorithmus.
-
Es
ist insbesondere unter der Kostenperspektive vorteilhaft, daß der Verzweigungsvorhersagealgorithmus,
der in der L2-BPT 102 der 3 implementiert
ist, einen kleinen Speicherraum belegt. Gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung implementiert die L2-BPT 102 daher
einen Zwei-Bit-Zähler-Algorithmus
als ihr Verfahren zur Verzweigungsvorhersage. Obwohl ein Zwei-Bit-Zähler-Algorithmus
möglicherweise
nicht so genau ist, wie beispielsweise der lokale oder globale Verzweigungs-Vorhersagealgorithmus,
der in der L1-BPT 100 implementiert ist, benötigt eine
Verzweigungsvorhersagetabelle mit einem Zwei-Bit-Zähler-Algorithmus
nur zwei Bits Speicher pro Verzweigungsvorhersageeintrag. Verzweigungsvorhersagetabellen, die
entweder lokale oder globale Verzweigungsvorhersagealgorithmen implementieren,
können
deutlich mehr als zwei Speicherbits pro Verzweigungsvorhersageeintrag
benötigen.
Durch Verwendung von Verzweigungsvorhersageeinträgen ohne Tag und eines Zwei-Bit-Zähler-Algorithmus kann
die L2-BPT 102 zwischen dem Vier- bis Achtfachen oder Mehrfachen
der Verzweigungsvorhersageeinträgen
speichern, die die Ll-BPT 100 bei angenähert dem gleichen Speicherraum
speichern kann. Bei einem Ausführungsbeispiel
der Erfindung hat die L2-BPT 102 daher eine relativ große Speicherkapazität von angenähert 2K
bis 8K oder mehr Verzweigungsvorhersageeinträgen. Bei einem Ausführungsbeispiel,
bei dem die L2-BPT keine Tags aufweist, kann eine Verzweigung, die
keinen zugehörigen
statischen Hinweis (weiter unten genauer beschrieben) aufweist, die
L2-BPT-Vorhersage beim Retirement aktualisieren.
-
Die
Verzweigungsvorhersageinformation, die in dem der IP-Anfangsadresse
zugeordneten Verzweigungsvorhersageeintrag gespeichert ist, wird aus
der L2-BPT 102 der 3 gele sen,
und unter Verwendung dieser Information wird eine Vorhersage zum
Nehmen oder Nichtnehmen der Verzweigung berechnet. In Abhängigkeit
von der Verzweigungsvorhersage wird ein Nehmen- oder Nicht-Nehmen-Signal über die
t/n-Leitung 126 an einen Eingang des Multiplexers 107 gesendet.
Bei einem Ausführungsbeispiel
der vorliegenden Erfindung, bei dem die L2-BPT 102 direkt-abgebildet (direct-mapped)
ist, gibt es stets einen Treffer in dieser Tabelle. Dies bedeutet,
daß ein
gewisser Prozentsatz dieser Treffer eine IP-Adresse einer Verzweigungsvorhersageinformation
einer anderen IP-Adresse zuordnen kann. Eine Möglichkeit, dieses Problem zu
vermeiden, besteht in der Speicherung von Adreß-Tags in der L2-BPT 102 und
im Vergleichen dieser Tags mit den Tags von einlaufenden IP-Adressen.
Der Kostenvorteil der reduzierten Tabellengröße durch Verzicht auf Speicherung
von Tags in der L2-BPT 102 kann sich jedoch als wertvoller
erweisen als die Zunahme der Verzweigungsvorhersagegenauigkeit,
die durch Speicherung von Tags erzielt werden kann.
-
Der
Eingabebefehlspuffer 103 wird unter Verwendung der IP-Anfangsadresse
aus dem IP-Multiplexer 10 der 3 durchsucht,
und der zugeordnete Befehl wird dem Befehlsdecodierer 104 geliefert.
Bei einem Ausführungsbeispiel
der Erfindung decodiert der Decodierer 104 den Befehl teilweise
oder vollständig,
um festzustellen, ob der Befehl ein Verzweigungsbefehl ist oder
nicht, und wenn dies der Fall ist, so bestimmt der Decodierer zusätzlich die
Zieladresse und, ob der Befehl ein Rückkehrbefehl ist oder nicht.
In Abhängigkeit
davon, ob der Befehl ein Verzweigungs- (oder Rückkehr)-Befehl ist oder nicht,
wird ein geeignetes Signal an den Eingang des UND-Gatters 108 über b/nb-Leitung 129 gesendet.
Die Zieladresse 130 wird vom Decodierer 104 an
einen Eingang des Multiplexers 109 gesendet.
-
Bei
einem Ausführungsbeispiel,
bei dem Verzweigungsvorhersagehinweise in den Befehl einbezogen
sind, bestimmt der Decodierer 104 gemäß 3 auch,
ob der Verzweigungsvorhersagehinweis statisch oder dynamisch ist,
und, wenn er statisch ist, bestimmt der Decodierer, ob der Hinweis "ge nommen" oder "nicht-genommen" ist. Ein einen Hinweis als
statisch oder dynamisch anzeigendes Signal wird über s/d-Hinweisleitung 127 an den Steuereingang des
Multiplexers 107 geliefert. Ein einen Hinweis als genommen
oder nicht genommen anzeigendes Signal wird über t/n-Hinweisleitung 128 an
einen Eingang des Multiplexers 107 angelegt. Ein statischer Hinweis
zeigt dem Verzweigungsvorhersager an, daß der zugehörige Verzweigungsbefehl stets
als genommen oder nicht genommen vorherzusagen ist (in Abhängigkeit
von dem Genommen/nicht-genommen Hinweis), und zwar unabhängig von
irgendwelchen in der L2-BPT 102 gefundenen Verzweigungsvorhersageinformationen.
Ein dynamischer Hinweis zeigt dem Verzweigungsvorhersager an, daß die in
der L2-BPT 102 gefundene Verzweigungsvorhersageinformation dazu
verwendet werden soll, das Nehmen- oder Nicht-Nehmen der Verzweigung
vorherzusagen. Bei einem alternativen Ausführungsbeispiel der Erfindung
enthält
ein einen dynamischen Hinweis aufweisender Befehl auch einen Genommen/nicht-genommen-Hinweis,
der bei anfänglicher
Ausführung
des Verzweigungsbefehls als Verzweigungsvorhersage verwendet wird.
Danach wird eine in einer Verzweigungsvorhersagetabelle gespeicherte
Verzweigungsvorhersageinformation zum Bestimmen nachfolgender Verzweigungsvorhersagen
für diesen
Verzweigungsbefehl verwendet.
-
Wenn
das dem Steuereingang des Multiplexers 107 gemäß 3 über die
s/d-Hinweisleitung 127 zur Verfügung gestellte Signal anzeigt,
daß der Hinweis
dynamisch ist, so wählt
der Multiplexer als sein Ausgangssignal das über die t/n-Leitung 126 einlaufende
Genommen/nicht-genommen-Signal der L2-BPT. Wenn das dem Steuereingang
des Multiplexers 107 zugeführte Signal stattdessen anzeigt,
daß der
Hinweis statisch ist, so wählt
der Multiplexer als sein Ausgangssignal das über die t/n-Hinweisleitung 128 vom
Decodierer 104 zugeführte
Genommen/nicht-genommen-Hinweissignal. Bei einem Ausführungsbeispiel,
bei dem die L2-BPT Tags aufweist, der Hinweis dynamisch ist und
es einen Miss (Fehlversuch) in der L2-BPT gibt, wird und die decodierte Vorhersage
weiter benutzt. Bei diesem Ausführungsbeispiel
kann eine Tref fer/Miss-Leitung (oder deren Invertierte) aus der
L2-BPT 102 einer UND-Verknüpfung (oder NAND-Verknüpfung) mit
der s/d-Hinweisleitung 127 (oder
deren Invertierter) unterworfen werden, wobei das Ausgangssignal
mit dem Steuereingang des Multiplexers 107 gekoppelt wird.
-
Wenn
das an dem Eingang des UND-Gatters 108 über b/nb-Leitung 129 von 3 zur
Verfügung gestellte
Signal anzeigt, daß der
der IP-Adresse zugeordnete Befehl ein Verzweigungs-(oder Rückkehr-)befehl
ist und das Ausgangssignal des Multiplexers 107 anzeigt,
daß die
Verzweigung genommen wird, so gibt UND-Gatter 108 ein Umlenksignal
an einen Eingang von UND-Gatter 141 aus. Andernfalls gibt
UND-Gatter 108 kein
Umlenksignal aus. Der andere Eingang des UND-Gatters 141 ist
ein invertierender Eingang, der mit der von der L1-BPT 100 kommenden
Hit/Miss-Signalleitung 121 gekoppelt ist. UND-Gatter 141 wirkt
so, daß es
das Senden eines Umlenksignals an die IP-Steuerung 11 verhindert, wenn
das Ausgangssignal des UND-Gatters 108 eine Umlenkung anzeigt,
es jedoch einen Treffer in der L1-BPT gibt. Dies geschieht, da eine
frühzeitige Vorhersage
aus der L1-BPT 100 sich als genauer erweisen kann als die
späte Vorhersage
aus der L2-BPT 102. Somit gibt das UND-Gatter 141 ein
Umlenksignal an die IP-Steuerung 11, wenn das Ausgangssignal
des UND-Gatters 108 Umlenkung anzeigt und es einen Fehlversuch
in der L1-BPT 100 gibt.
-
Der
Multiplexer 109 der 3 wird von
dem Rückkehr/Keine-Rückkehr-Signal
aus dem Befehlsdecodierer 104 über die r/nr-Signalleitung 140 und von
einem Hit/Miss-Signal des TAC 101 über die h/m-Signalleitung 150 gesteuert.
Befehlsdecodierer 104 wählt
das richtige Ausgangssignal für
Multiplexer 109 aus. Wenn beispielsweise die n/nr-Signalleitung 140 anzeigt,
daß der
Befehl ein Rückkehrbefehl
ist, wird die Rückkehradresse
aus dem Rückkehrstapelpuffer
(RSB) 142 (dasselbe RSB-Ausgangssignal, das dem L1-Verzweigungsvorhersager 21 zur
Verfügung
gestellt wurde), der mit einem Eingang des Multiplexers 109 gekoppelt
ist, an den Ausgang des Multiplexers 109 und dementsprechend
an den IP-Multiple xer 10 übertragen. Wenn die Signalleitung 140 anzeigt,
daß der
Verzweigung kein Rückkehrbefehl
(bei einer genommenen Verzweigung) ist, wird die Zieladresse aus
dem TAC 101 zum Ausgang des Multiplexers 109 übertragen,
wenn es gemäß Anzeige
der h/m-Signalleitung 150 einen Treffer in dem TAC 101 gibt.
Anderenfalls wird die vom Decodierer 104 decodierte und über Zielbus 130 an
einen anderen Eingang des Multiplexers 109 angelegte Zieladresse zum
Ausgang von Multiplexer 109 übertragen.
-
Die
Vorhersage des nachfolgenden IP wird dann an den Prozessor geliefert,
und die an dieser Adresse befindlichen Befehle werden vom Prozessor ausgeführt. Diese
Vorhersage wird später
entweder als richtig oder als unrichtig festgestellt. Die Verzweigungsvorhersageinformationen,
die in der L1-BPT 100 und in der L2-BPT 102 in
Zuordnung zu dem vorhergesagten Verzweigungsbefehl gespeichert sind, können danach
aktualisiert werden, um die Vorhersagegenauigkeit zu erhöhen, wenn
der Verzweigungsbefehl das nächste
Mal ausgeführt
wird. Wenn die IP-Adresse in Zuordnung zu einem Verzweigungsbefehl
in der L1-BPT fehlte und der Verzweigungsbefehl keinen statischen
Hinweis liefert, wird bei einem Ausführungsbeispiel der Erfindung
die L1-BPT aktualisiert, so daß eine
Verzweigungsvorhersageeintrag in Zuordnung zu der IP-Adresse aufgenommen
wird.
-
Die
Erfindung wurde unter Bezugnahme auf spezielle Ausführungsbeispiele
beschrieben. Aufgrund der Offenbarung der vorliegenden Anmeldung ist
es jedoch für
Fachleute klar, daß zahlreiche
Abwandlungen und Änderungen
an diesen Ausführungsbeispielen
im Rahmen der Erfindung vorgenommen werden können. Die Beschreibung und
die Zeichnungen sind daher in illustrativem und nicht in einem begrenzenden
Sinne zu verstehen.