DE10084556B4 - Optimierte Ausführung von statisch sehr wahrscheinlich vorhergesagten Verzweigungsbefehlen - Google Patents

Optimierte Ausführung von statisch sehr wahrscheinlich vorhergesagten Verzweigungsbefehlen Download PDF

Info

Publication number
DE10084556B4
DE10084556B4 DE10084556T DE10084556T DE10084556B4 DE 10084556 B4 DE10084556 B4 DE 10084556B4 DE 10084556 T DE10084556 T DE 10084556T DE 10084556 T DE10084556 T DE 10084556T DE 10084556 B4 DE10084556 B4 DE 10084556B4
Authority
DE
Germany
Prior art keywords
branch
prediction
field
predicted
taken
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE10084556T
Other languages
English (en)
Other versions
DE10084556T1 (de
Inventor
Tse-Yu Milpitas Yeh
Monis San Jose Rahman
Mitchell A. Palo Alto Poplingher
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE10084556T1 publication Critical patent/DE10084556T1/de
Application granted granted Critical
Publication of DE10084556B4 publication Critical patent/DE10084556B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3846Speculative instruction execution using static prediction, e.g. branch taken strategy

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

Mikroprozessor mit einer Verzweigungsvorhersagetabelle (BPT; 140, 200), deren Einträge (260) jeweils ein Vorhersagefeld (244) und ein Vorgeschichteregister (246) enthalten, wobei das Vorhersagefeld (244) anzeigt, ob eine Verzweigung als zu nehmend oder nicht zu nehmend vorhergesagt ist, und wobei das Vorgeschichteregister (246) Vorgeschichteinformationen speichert, die die Vorgeschichte vorangegangener Ausführungen des zugehörigen Verzweigungsbefehls charakterisieren,
dadurch gekennzeichnet,
daß der Mikroprozessor ferner ein Compilerhinweis-Register (247) enthält, das wenigstens ein erstes Feld (281) aufweist, welches anzeigt, ob eine Verzweigung durch den Compiler als eine Verzweigung charakterisiert ist, welche statisch vorhergesagt ist, das heißt als mit einer hohen Wahrscheinlichkeit zu nehmend oder nicht zu nehmend vorhergesagt ist, und
daß das Vorhersagefeld (244) und das Vorgeschichteregister (246) eines zu aktualisierenden Eintrags (260) der Verzweigungsvorhersagetabelle mit den Eingängen einer Vorhersageaktualisierungslogik (248) gekoppelt sind, wobei in Abhängigkeit vom Inhalt des ersten Feldes (281) des Compiler-Hinweisregisters (247) die Ausgangssignale (252, 254) der Vorhersageaktualisierungslogik (248) selektiv mit dem...

Description

  • Die vorliegende Erfindung betrifft das Gebiet der Mikroprozessoren. Insbesondere betrifft die vorliegende Erfindung die Verzweigungsvorhersage bei Mikroprozessoren.
  • Computerprogramme enthalten üblicherweise eine große Anzahl von Verzweigungsbefehlen, die bei ihrer Ausführung verursachen können, daß Befehle in einer von der im Programmspeicher angegebenen Reihenfolge abweichenden Reihenfolge ausgeführt werden. Wenn ein Verzweigungsbefehl ausgeführt wird, geht die Ausführung entweder mit dem nächsten sequentiellen Befehl aus dem Speicher weiter oder die Ausführung springt zu einem von einer Verzweigungszieladresse spezifizierten Befehl. Man spricht davon, daß eine von dem Verzweigungsbefehl spezifizierte Verzweigung "genommen" wird, wenn die Ausführung zu dem von der Verzweigungszieladresse spezifizierten Befehl springt, und davon, daß sie "nicht genommen" wird, wenn die Ausführung mit dem nächsten sequentiellen Befehl aus dem Speicher fortgesetzt wird.
  • Verzweigungsbefehle sind entweder unbedingte oder bedingte Verzweigungsbefehle. Eine unbedingte Verzweigung wird bei jeder Ausführung des Befehls genommen. Ein bedingter Verzweigungsbefehl wird genommen oder nicht genommen, je nach der Auflösung einer Bedingung, welche normalerweise ein Ergebnis einer logischen Anweisung ist. Die Befehle, die nach einer bedingten Verzweigung auszuführen sind, sind solange nicht mit Gewißheit bekannt, bis die Bedingung, von der die Verzweigung abhängt, aufgelöst wird. Mikroprozessoren gemäß dem Stand der Technik warten jedoch nicht, bis die Bedingung aufgelöst wird, sondern führen eine Verzweigungsvorhersage aus, wobei der Mikroprozessor versucht zu erraten, ob die Verzweigung genommen wird oder nicht, so daß die der Verzweigung nachfolgenden Befehle abgerufen und spekulativ ausgeführt werden können. Wenn vorhergesagt wird, daß eine Verzweigung nicht genommen wird, ruft der Mikroprozessor den nächsten sequentiellen Befehl nach der Verzweigung aus dem Speicher ab und führt ihn spekulativ aus. Wenn vorhergesagt wird, daß die Verzweigung genommen wird, ruft der Mikroprozessor den Befehl an der vorhergesagten Verzweigungszieladresse ab. Die der Verzweigungsvorhersage nachfolgenden Befehle, die ausgeführt werden, sind "spekulativ", da der Mikroprozessor noch nicht weiß, ob die Vorhersage richtig ist oder nicht. Dementsprechend können alle von den spekulativen Befehlen veranlaßten auszuführenden Operationen nicht vollständig abgeschlossen werden. Wenn eine Speicher-Schreiboperation beispielsweise spekulativ ausgeführt wird, kann die Schreiboperation solange nicht an ein Speichersystem gesendet werden, bis alle vorherigen Verzweigungsbedingungen erfolgreich ausgeführt wurden. Ansonsten kann ein Befehl in einem falsch vorhergesagten Pfad dazu führen, daß der Inhalt des Speichers fehlerhaft wird.
  • Wenn schließlich bestimmt wird, daß die Verzweigungsvorhersage richtig war, werden die spekulativ ausgeführten Befehle verabschiedet oder auf andere Weise festgeschrieben. Bei dem Beispiel einer Speicher-Schreiboperation wird die Verabschiedung dadurch ausgeführt, daß die Schreiboperation an das Speichersystem gesendet wird. Wenn sich schließlich herausstellt, daß die Verzweigungsvorhersage unrichtig war, dann werden alle spekulativ ausgeführten Befehle, die der falsch vorhergesagten Verzweigung nachfolgen, üblicherweise aus dem System gelöscht (flushed). Bei dem Beispiel mit der Speicher-Schreiboperation wird die Schreiboperation nicht an das Speichersystem gesendet, sondern statt dessen verworfen.
  • Zur Beschleunigung einer Verzweigungsvorhersage enthalten einige bekannte Mikroprozessoren eine Verzweigungsvorhersagetabelle (branch prediction table-BPT), die eine Cache-Speicherung der zuletzt vorhergesagten Verzweigungen zusammen mit zugehörigen Vorhersageinformationen ermöglicht, beispielsweise mit einer Vorgeschichte (history) vorheriger Ausführungen, die auch als dynamische Vorgeschichte bekannt ist, und/oder Vorhersagen für diese Verzweigung und deren Erfolg.
  • Aus IBM Technical Disclosure Bulletin, IBM Corp., NY, US, Vol 37, No. 7, 1. Juli 1994, Seiten 109 bis 113 ist ein Verzweigungs-Vorhersage Mechanismus mit Vorhersagetabellen bekannt. Der Verzweigungs-Vorhersage Mechanismus kombiniert verschiedene Arten der Verzweigungs-Vorhersagen in einem gemeinsamen Mechanismus und wendet diese bedingungsabhängig an.
  • Die US 5,848,269 beschreibt eine Verzweigungs-Vorhersage-Einrichtung mit einem Vorhersage-Informationspuffer und einem Verzweigungs-Vorhersage Mechanismus. Die Verzweigungs-Vorhersage für eine Verzweigungs-Anweisung erfolgt zur gleichen Zeit wie das Abholen einer der Verzweigungs-Anweisung vorhergehenden Anweisung.
  • Aus der EP 0 544 026 A1 ist eine Einrichtung zur Verzweigungs-Vorhersage bei nach dem Pipeline-Prinzip betriebenen Verarbeitungseinheiten bekannt. Für jeden Verzweigungsbefehl werden allen möglichen Kombinationen einer Anzahl von vorhergehenden Verzweigungsbefehlen Verzweigungsentscheidungen zugeordnet und zusammen mit einer aktuellen Historie gespeichert.
  • Zusätzlich zu einem dynamischen Verzweigungsprotokoll können Vorhersagemechanismen zur Unterstützung der Verzweigungsvorhersage außerdem Kompilierer-Hinweise verwenden. Die Kompilierer-Hinweise werden normalerweise dadurch bestimmt, daß Programmprofile definiert werden, wobei dies dadurch geschieht, daß man ein Programm mit verschiedenen Sätzen von Testdaten ablaufen läßt. Aus der Definition von Profilen für einen Kompilierer weiß man möglicherweise, ob eine Verzweigung wahrscheinlich genommen wird oder nicht und mit wie hoher Wahrscheinlichkeit die Verzweigung genommen wird oder nicht. Diese Informationen können in einen Befehl hineinko diert werden. Um diese Informationen von dem Befehl herauszufinden, muß der Befehl aus dem Befehlscache gelesen und dekodiert werden. Das Problem besteht darin, daß ein Befehl in der Pipeline später dekodiert wird. Daher sind die in dem Befehl kodierten Informationen erst einige Stufen später in der Pipeline verfügbar.
  • Aufgabe der Erfindung ist es, eine verbesserte Verzweigungs-Vorhersage zur Verfügung zu stellen. Die Aufgabe wird erfindungsgemäß gelöst durch einen Mikroprozessor mit einer Verzweigungsvorhersagetabelle, deren Einträge jeweils ein Vorhersagefeld und ein Vorgeschichteregister enthalten, wobei das Vorhersagefeld anzeigt, ob eine Verzweigung als zu nehmend oder nicht zu nehmend vorhergesagt ist. Das Vorgeschichteregister speichert Vorgeschichteinformationen, die die Vorgeschichte vorangegangener Ausführungen des zugehörigen Verzweigungsbefehls charakterisieren. Der Mikroprozessor enthält ferner ein Compilerhinweis-Register, das wenigstens ein erstes Feld aufweist, welches anzeigt, ob eine Verzweigung durch den Compiler als eine Verzweigung charakterisiert ist, welche statisch vorhergesagt ist, das heißt als mit einer hohen Wahrscheinlichkeit zu nehmend oder nicht zu nehmend vorhergesagt ist. Das Vorhersagefeld und das Vorgeschichteregister eines zu aktualisierenden Eintrags der Verzweigungsvorhersagetabelle sind mit den Eingängen einer Vorhersageaktualisierungslogik gekoppelt, wobei in Abhängigkeit vom Inhalt des ersten Feldes des Compiler-Hinweisregisters die Ausgangssignale der Vorhersageaktualisierungslogik selektiv mit dem Vorhersagefeld und dem Vorgeschichteregister gekoppelt werden, um eine Aktualisierung des Vorhersagefelds und des Vorgeschichteregisters durch die Ausgangssignale nur dann zu ermöglichen, wenn keine statische Vorhersage durch den Inhalt des ersten Feldes angezeigt ist.
  • Die Aufgabe wird außerdem durch ein Verfahren mit den Merkmalen des Anspruchs 15 gelöst.
  • Die Merkmale, Aspekte und Vorteile der vorliegenden Erfindung werden anhand der folgenden detaillierten Beschreibung, der beigefügten Ansprüche und der zugehörigen Zeichnungen deutlicher, in denen:
  • 1 ein Blockschaltbild zeigt, das ein vereinfachtes Ausführungsbeispiel eines Mikroprozessors gemäß der vorliegenden Erfindung zeigt;
  • 2 zeigt ein Blockschaltbild, das eine Verzweigungsvorhersagetabelle mit einem entsprechenden Eintrag und andere Strukturen der Verzweigungsvorhersagetabelle gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
  • 3 zeigt ein Ablaufdiagramm im Zusammenhang mit einem Ausführungsbeispiel eines Verfahrens zum Zuweisen einer Verzweigung gemäß der vorliegenden Erfindung.
  • Ein Ausführungsbeispiel der vorliegenden Erfindung enthält einen Mikroprozessor. Der Mikroprozessor hat eine Verzweigungsvorhersagetabelle (BPT), die wenigstens einen Verzweigungseintrag enthält. Der wenigstens eine Verzweigungseintrag enthält ein Vorhersagefeld, um anzuzeigen, ob eine Verzweigung als genommen vorhergesagt wird oder nicht. Der wenigstens eine Verzweigungseintrag enthält ferner ein Vorgeschichteregister zur Speicherung von Vorgeschichteinformationen. Die BPT enthält ferner eine Vorhersageaktualisierungslogik, die das Vorhersagefeld und das Vorgeschichteregister aktualisiert, außer wenn auf eine Verzweigung als statisch sehr wahrscheinlich vorhergesagt hingewiesen wird.
  • Der Mikroprozessor enthält ferner ein Kompilierer-Hinweisregister, das ein erstes Feld hat, welches im aktiven Zustand anzeigt, daß eine Verzweigung statisch sehr wahrscheinlich vorhergesagt ist. Das Kompilierer-Hinweisregister enthält ferner ein zweites Feld, das im aktiven Zustand anzeigt, ob eine Verzweigung als genommen vorhergesagt wurde. Der wenigstens eine Eintrag enthält ferner ein Feld (im folgenden bezeichnet als "sehr wahrscheinlich vorhergesagtes/unbedingtes" (strongly predicted/unconditional-SP/U)- Feld). Das SP/U-Feld wird als Ergebnis gesetzt, wenn herausgefunden wurde, daß eine unbedingte Verzweigung vorliegt und ebenfalls wenn herausgefunden wurde, daß eine in den Verzweigungseintrag eingefügte bedingte Verzweigung sehr wahrscheinlich vorhergesagte Kompilierer-Hinweise aufweist. Das SP/U-Feld zeigt im aktiven Zustand an, daß die Verzweigung entweder sehr wahrscheinlich vorhergesagt wurde oder es sich um eine unbedingte Verzweigung handelt.
  • Das Vorhersagefeld ist mit dem zweiten Feld des Kompilierer-Hinweisregisters gekoppelt und mit der Vorhersageaktualisierungslogik. Das Vorhersagefeld kann Informationen empfangen, die angeben, ob eine Verzweigung als genommen vorhergesagt wird, und zwar entweder von dem Kompilierer-Hinweis oder von einem dynamischen Verzweigungsvorhersager bzw. -prädiktor, der die Vorhersageaktualisierungslogik verwendet. Wenn das SP/U-Feld aktiv ist, ist es so konfiguriert, daß es eine Aktualisierung des Vorgeschichteregisters oder sowohl des Vorgeschichteregisters als auch des Vorhersagefeldes verhindert. Folglich wird der dynamische Prädiktor infolge der Aktivierung des SP/U-Feldes daran gehindert, die Kompilierer-Vorhersage zu ändern oder sowohl die Kompilierer-Vorhersage als auch die Vorgeschichteinformationen zu ändern.
  • Es hat sich gezeigt, daß fehlerhafte Vorhersagen allgemein verringert werden, wenn Kompilierer-Hinweise verwendet werden. Das Ausführungsbeispiel des Mikroprozessors gemäß der vorliegenden Erfindung ermöglicht dem Kompilierer-Hinweisregister, welches angibt, ob eine Verzweigung sehr wahrscheinlich bzw. mit hoher Wahrscheinlichkeit vorhergesagt wird, den auf dem Chip implementierten dynamischen Vorhersagealgorithmus außer Kraft zu setzen, wenn der Kompilierer sich bei dem Ergebnis einer Verzweigung ziemlich sicher ist – d.h. bei sehr wahrscheinlich vorhergesagten Verzweigungen. Bei Verwendung eines Zuweisungsalgorithmus, der auf der obigen Beschreibung und dem SP/U-Feld in der BPT basiert, kann die Vorhersagegenauigkeit verbessert werden. Durch Speiche rung von Kompilierer-Vorhersageinformationen in der BPT werden diese Informationen außerdem wesentlich früher verfügbar als sonst nach der Dekodierung der Verzweigungsbefehls, da es länger dauert, bis der Befehl dekodiert wird. Daher kann mit dem Ausführungsbeispiel des erfindungsgemäßen Mikroprozessors bestimmt werden, ob die chipeigene dynamische Vorhersage verwendet werden soll oder ob sie durch die statischen Kompilierer-Hinweise außer Kraft gesetzt werden soll, bevor der Befehl dekodiert wird.
  • 1 zeigt ein vereinfachtes Ausführungsbeispiel des erfindungsgemäßen Mikroprozessors 100 als Blockschaltbild. Der Mikroprozessor 100 enthält mehrere Pipelinestufen, von denen die Pipelinestufen 102, 104 und 106 dargestellt sind. Die Pipelinestufe 102, die auch Befehlszeigererzeugungspipelinestufe genannt wird, erzeugt den Befehlszeiger, der auf einen Befehl im Befehlscache 108 zeigt. In der nächsten Pipelinestufe 104, der Abrufstufe, wird ein Befehl auf der Basis des in der vorherigen Pipelinestufe erzeugten Befehlszeigers aus dem Befehlscache 108 abgerufen. In der nächsten Pipelinestufe, der Rotierpipelinestufe 106 wird ein Befehl abgerufen und dekodiert. Ohne die erfindungsgemäße Einrichtung und das erfindungsgemäße Verfahren ist ein Kompilierer-Vorhersagehinweis erst nach Dekodierung eines Befehls in der Rotierpipelinestufe 106 verfügbar. Bei dem Ausführungsbeispiel des erfindungsgemäßen Mikroprozessors kann der Kompilierer-Vorhersagehinweis in der Abrufpipelinestufe 104 zur Verfügung gestellt werden, wenn die Verzweigung zuvor gesehen wurde und in der Verzweigungsvorhersagetabelle (BPT) 140 zugeordnet wurde.
  • Die BPT 140 sorgt für eine Cache-Speicherung der zuletzt vorhergesagten Verzweigungen zusammen mit entsprechenden Vorhersageinformationen, beispielsweise einer kurzen Vorgeschichte von vorherigen Ausführungen und/oder Vorhersagen für diese Verzweigung und deren Erfolg. Beispielsweise kann ein Verzweigungseintrag der BPT 140 ein (nicht dargestelltes) Vorhersagefeld enthalten, welches anzeigt, ob eine Ver zweigung genommen werden soll oder nicht. Zusätzlich enthält ein Verzweigungseintrag der BPT ein Verzweigungstypfeld, welches anzeigt, ob eine Verzweigung ein Aufruf bzw. CALL, eine Rücksprung- bzw. Rückkehrverzweigung bzw. ein RETURN, eine reguläre Verzweigung usw. ist. Der Mikroprozessor 100 weist einen Befehlszeigergenerator (instruction pointer generator-IPG) 103 auf, der einen Befehlszeiger (instruction pointer-IP) erzeugt. Der IP spezifiziert der BPT 140 und dem Befehle speichernden Befehlscache (instruction cache-IC) 108 einen neuen Befehl. Bei vielen Ausführungsformen von Mikroprozessoren mit Pipeline-Architektur kann auf die BPT 140 mit Hilfe eines Tag-Wertes zugegriffen werden, der in dem Befehlszeiger zur Verfügung gestellt wird und Tag-Werten entspricht, die von dem IC 108 zur Kennzeichnung seiner Cache-Zeilen verwendet werden.
  • Zusätzlich zur Bereitstellung des Befehlszeigers für die BPT 140 und den IC 108, stellt der IPG 103 den Befehlszeiger einem Zieladreß-Cache (Target Address Cache-TAC) 110 zur Verfügung. Der TAC 110 enthält Adressen von Zielbefehlen, wo eine Verzweigung genommen werden kann, wenn die BPT vorhersagt, daß eine Verzweigung genommen wird. Wenn bestimmt wird, daß eine Verzweigung genommen werden soll, steuert der TAC 110 eine Adresse, d.h. eine Zieladresse, eines Zielbefehls an den IPG 103. Die von dem TAC 110 zu dem IPG 103 gesteuerte Adresse wird dekodiert und dann als regulärer Befehlszeiger zum Abrufen eines zugehörigen Zielbefehls vom IC 108 verwendet. Auf diese Weise beginnt eine Abrufeinheit, die den IC 108 enthalten kann, erneut mit dem Abrufen von Befehlen von der neuen Zieladresse. Bei einem Ausführungsbeispiel der vorliegenden Erfindung können die BPT 140 und der TAC 110 in einer Einheit kombiniert sein, wobei jeder Verzweigungseintrag der BPT außerdem eine Zieladresse der Verzweigung enthält.
  • Der Mikroprozessor 100 enthält ferner eine Vorhersageschaltung 112, einen Rücksprung- bzw. Rückkehrstapelpuffer (return stack buffer-RSB) 124 und eine Auswahleinrichtung 120, die mit dem TAC 110, dem RSB 123 und der Vorhersageschaltung 112 gekoppelt ist. Die Vorhersageschaltung 112 weist einen Eingangsport auf, der mit dem TAC 110 derart gekoppelt ist, daß er von diesem ein TREFFER/FEHLVERSUCH-Signal (HIT/MISS signal) empfangen kann. Ein zweiter Eingangsport der Vorhersageschaltung 112 ist derart mit der BPT 140 gekoppelt, daß er von dieser Informationen darüber empfangen kann, ob eine Verzweigung genommen wird oder nicht. Diese Informationen werden in dem Vorhersagefeld eines oben beschriebenen BPT-Eintrags gespeichert. Die Vorhersageschaltung 112 weist ferner einen dritten Eingangsport auf, der derart mit der BPT 140 gekoppelt ist, daß er von der BPT 140 Informationen darüber empfangen kann, ob es in der BPT 140 einen Treffer oder einen Fehlversuch gibt. Ferner weist die Schaltung 112 einen vierten Eingangsport auf, der derart mit der BPT 140 gekoppelt ist, daß er Informationen über den Typ der Verzweigung von der BPT 140 empfangen kann. Der Typ einer Verzweigung gibt an, ob eine Verzweigung von RÜCKSPRUNG- bzw. RETURN-Typ oder von einem anderen Typ als vom RÜCKSPRUNG-Typ ist, beispielsweise vom AUFRUF- bzw. CALL-Typ oder vom regulären Typ.
  • Die Vorhersageschaltung 112 erzeugt auf der Basis der an ihren Eingangsports empfangenen Informationen ein Steuer(auswahl)signal für die Auswahleinrichtung 120. Die Auswahleinrichtung 120 wählt in Abhängigkeit von dem logischen Zustand dieses Signals eine der Zieladressen aus, die von dem TAC 110 und dem RSB 124 zur Verfügung gestellt werden. Beispielsweise gibt es einen Verzweigungstreffer in der BPT 140 und dem TAC 110, und die Verzweigung wird als genommen vorhergesagt und ist nicht vom RÜCKSPRUNG-Typ. Die Vorhersageschaltung 112 erzeugt ein Auswahlsignal für die Auswahleinrichtung 120, das zur Auswahl der Zieladresse vom TAC 110 führt. Die Auswahleinrichtung 120 stellt die Zieladresse einem der Eingangsports der Auswahleinrichtung 150 des IPG 103 zur Verfügung.
  • Die Auswahleinrichtung 150 weist einen weiteren Eingangsport auf, der mit einem Inkrementor bzw. Aufwärtszähler 152 gekoppelt ist, der den Befehlszähler um einen vorgegebenen Wert, beispielsweise um "1", inkrementiert. Der inkrementierte Zeiger wird zur Verwendung als neuer Befehlszeiger in den Fällen zur Auswahleinrichtung 150 zurückgekoppelt, in denen das Abrufen des nächsten sequentiellen Befehls gewünscht wird. Außerdem hat die Auswahleinrichtung 150 zwei Eingangsports zum Empfang der Signale AUSNAHME (EXEPTION)/UNTERBRECHUNG (TRAP) und FEHLERHAFTE VERZWEIGUNGSVORHERSAGE (BRANCH MISPREDICTION-BMISP).
  • Die Auswahleinrichtung 150 weist ferner mehrere Auswahleingangsports auf, die mehrere Auswahlsignale empfangen. Eines dieser Ausgangssignale ist das genommen/nicht genommen(taken/not taken-T/N)-Signal vom BPT 140. Weitere Signale sind ein Gültige-Ausnahme-Signal (GÜLTIGE AUSNAHME bzw. VALID EXCEPTION) und ein Gültige-Verzweigungsfehlvorhersage-Signal (GÜLTIGE BMISP bzw. VALID BMISP), die von Pipelinestufen empfangen werden, welche weiter hinten in der Pipeline "angeordnet" sind. Die Auswahleinrichtung 150 kann so konfiguriert sein, daß sie bei den an sie angelegten Befehlsadreßsignalen gemäß einem Schema Prioritäten setzt, wobei (1) eine erste Priorität einem AUSNAHME/UNTERBRECHUNG-Befehlsadreßesignal verliehen wird, das von einem Back-end des Mikroprozessors ausgegeben wird; (2) eine zweite Priorität einem Verzweigungsfehlvorhersage(BMISP)-Befehlsadreßsignal verliehen wird, das ebenfalls von dem Back-end des Mikroprozessors ausgegeben wird; (3) eine dritte Priorität einem Zielbefehlsadreßsignal verliehen wird, das von der Auswahleinrichtung 120 an die Auswahleinrichtung 150 ausgegeben wird; und (4) eine vierte Priorität dem von dem Inkrementor 152 erzeugten inkrementierten Befehlszeigersignal verliehen wird. Gemäß diesem Prioritätenschema wählt die Auswahleinrichtung 150 an einem Ausgangsport die von der Auswahleinrichtung 120 empfangene Zieladresse aus, wenn die Auswahlsi gnale GÜLTIGE BSIMP und GÜLTIGE AUSNAHME nicht aktiv sind und die Verzweigung als genommen vorhergesagt wird.
  • Ein Vorhersagealgorithmus steuert die Vorhersage in folgender Weise. Wenn die BPT 140 einen Fehlversuch und der TAC 110 einen Treffer anzeigt, wird eine Verzweigung als genommen vorhersagt und von der Auswahleinrichtung 120 wird die Zieladresse vom TAC 110 ausgewählt und an den Befehlszeigergenerator 103 geliefert. Wenn es sowohl einen BPT-Fehlversuch als auch einen TAC-Fehlversuch gibt, dann wird bestimmt, daß es keinen Verzweigungseintrag gibt. Der Befehlszeigergenerator 103 inkrementiert den aktuellen Zeiger und leitet den inkrementierten aktuellen Zeiger an die Auswahleinrichtung 150 zurück. Wenn es in der BPT einen Treffer und in dem TAC einen Fehlversuch gibt und die BPT anzeigt, daß der Befehl vom RÜCKSPRUNG-Typ ist, steuert die Vorhersageschaltung 112 die Auswahleinrichtung 120 mit einem Auswahlsignal an, daß zur Auswahl einer entsprechenden Rücksprungadresse von dem RSB 124 führt. Wenn es jedoch sowohl in der BPT 140 als auch in der TAC 110 einen Treffer gibt, und die Verzweigung als genommen vorhergesagt wird, veranlaßt die Vorhersageschaltung 112, daß die Zieladresse von dem TAC von der Auswahleinrichtung 120 ausgewählt wird.
  • Sofern es sowohl in der BPT 140 als auch in der TAC 110 einen Treffer gibt, die Verzweigung jedoch als nicht genommen vorhergesagt wird, fährt der Mikroprozessor damit fort, daß er den nächsten sequentiellen Befehl in dem Cache 108 abruft, indem er einen neuen Zeiger auf der Basis des inkrementierten vorherigen Zeigers erzeugt. Wenn es in der BPT 140 einen Treffer gibt, jedoch einen Fehlversuch in dem TAC 110 und der Befehl vom regulären Typ ist, kann die Zieladresse aus dem Befehl berechnet werden, nachdem der Befehl dekodiert wurde.
  • Bei dem hier beschriebenen Ausführungsbeispiel des erfindungsgemäßen Mikroprozessors ist der Kompilierer so konfiguriert, daß er die "Kompilierer-Hinweise" als 2-Bit-Vorhersageinformationen in einen Befehl hinein kodiert. Die zur Kodierung von Kompilierer-Hinweisen vorgesehenen zwei Bits werden entsprechend der Wahrscheinlichkeit gesetzt, daß eine Verzweigung genommen wird oder nicht. Die zwei Bits kodieren vier verschiedene Möglichkeiten der Verzweigungsvorhersage: Wahrscheinlich nicht genommen, wahrscheinlich genommen, sehr wahrscheinlich nicht genommen und sehr wahrscheinlich genommen. In der folgenden Beschreibung werden die sehr wahrscheinlich genommenen und sehr wahrscheinlich nicht genommenen Verzweigungen "statisch genommene" bzw. "statisch nicht genommene" Verzweigungen genannt, da die Verzweigung bei Verwendung des von dem Kompilierer zur Verfügung gestellten statischen Hinweises besser vorhergesagt wird. Die wahrscheinlich genommenen und wahrscheinlich nicht genommenen Verzweigungen werden "dynamisch genommene" bzw. "dynamisch nicht genommene" Verzweigungen genannt, da die Verzweigung bei Verwendung eines dynamischen Prädiktors vorhergesagt wird. In der folgenden Beschreibung sind die Begriffe "statisch" und "sehr wahrscheinlich" und "dynamisch" und "wahrscheinlich" austauschbar.
  • Der Kompilierer bestimmt eine "Genommen-Rate", in dem er Programmprofile definiert, wobei ein Programm mit Sätzen von Testdaten abläuft und die Verzweigungsergebnisstatistik erfaßt wird. Die "Genommen-Rate" kann zwischen 0 % und 100 % liegen. Wenn die "Genommen-Rate" zwischen 0 und einem bestimmten Prozentsatz "X" liegt, beispielsweise ca. 10 %, ist es sehr wahrscheinlich, daß die Verzweigung "nicht genommen" wird und die beiden Bits können die Vorhersage als "statisch nicht genommen" codieren. Wenn die "Genommen-Rate" zwischen ca. 10 % und einem bestimmten Prozentsatz "Y" liegt, beispielsweise ca. 50 %, ist die Vorhersage wahrscheinlich "dynamisch nicht genommen". Wenn die "Genommen-Rate" zwischen ca. 50 % und einem bestimmten Prozentsatz "Z" liegt, beispielsweise ca. 90 %, ist die Vorhersage wahrscheinlich "dynamisch genommen". Wenn die "Genommen-Rate" zwischen "Z" und 100 % liegt, ist die Vorhersage sehr wahrscheinlich "statisch genommen".
  • Die Prozentzahlen X, Y und Z werden auf der Basis eines Vergleichs mit der Genauigkeit des in dem Mikroprozessor implementierten dynamischen Verzweigungsprädiktors erstellt. Beispielsweise hat die Vorhersage eines dynamischen Verzweigungsprädiktors üblicherweise eine Genauigkeit von 90 %. Hat der Kompilierer eine höhere Genauigkeit als 90 %, kann der Kompilierer-Hinweis anstelle des dynamischen Prädiktors verwendet werden. Wenn eine Verzweigung sehr wahrscheinlich "genommen" wird, können die beiden kodierten Bits daher verwendet werden, um das außer Kraft zu setzen, was der dynamische BPT-Prädiktor anzeigt, da der Kompilierer sehr zuversichtlich ist, daß eine Verzweigung genommen wird.
  • Wenn eine "statisch nicht genommene" Verzweigung auftritt, gibt es üblicherweise keine Änderung des Befehlsflusses. Daher ist es nicht erforderlich, diese Verzweigung in der BPT zwischenzuspeichern. wenn die in einem Befehl kodierten Informationen angeben, daß es eine Vorhersage wahrscheinlich genommen oder wahrscheinlich nicht genommen gibt, ist der Kompilierer nicht sehr sicher, ob die Verzweigung genommen werden soll oder nicht. In diesem Fall wird die BPT 140 zur dynamischen Vorhersage des Verhaltens von Verzweigungen verwendet. Die dynamische Vorhersage verwendet die History bzw. die Vorgeschichte einer Verzweigung, die in der BPT aufgezeichnet ist, um das Ergebnis der anstehenden Verzweigungen vorherzusagen. Wenn der Mikroprozessor, in dem das hier beschriebene Ausführungsbeispiel der vorliegenden Erfindung implementiert ist, eine BPT-Vorhersage aufweist – d.h., eine dynamische Vorhersage verfügbar ist, kann er die BPT-Vorhersage verwenden, um zu bestimmen, ob eine Verzweigung genommen werden soll oder nicht. Wenn die BPT-Vorhersage nicht verfügbar ist oder der Mikroprozessor die BPT-Vorhersage außer Kraft setzen will, kann der Mikroprozessor das genommen/nicht-genommen-Feld des 2-Bit-Kompilierer-Hinweises verwenden, um zu bestimmen, ob eine Verzweigung genommen werden soll oder nicht. Bei einem Ausführungsbeispiel der vorliegenden Erfindung sind die zwei kodierten Bits Teil eines 41-Bit-Befehls und werden von dem Kompilierer in den Befehl geschrieben, jedoch ist der Schutzbereich der vorliegende Erfindung nicht auf 41-Bit-Befehle beschränkt. Die Länge eines Befehls ist derart, daß in jedem Befehl wenigstens zwei Bits zur Kodierung von Kompilierer-Hinweisen vorgesehen sind.
  • Im Allgemeinen sind in der BPT gespeicherte Verzweigungen solche Verzweigungen, die wahrscheinlich Befehlsflußänderungen verursachen. Üblicherweise werden diese Verzweigungen sowohl in der BPT als auch in dem TAC zwischengespeichert. Gemäß einem in diesem Abschnitt später beschriebenen Zuweisungsprozeß werden Verzweigungen, für die es in der BPT einen Fehlversuch gab, standardmäßig als nicht genommen vorhergesagt, bis die Kompilierer-Vorhersagehinweise von der Dekodierung der Befehle verfügbar sind. Anders als "statisch nicht genommene" Verzweigungsbefehle werden "dynamisch nicht genommene" Verzweigungsbefehle zu einem Zeitpunkt wahrscheinlicher genommen. Daher werden Informationen, die "dynamisch genommene" oder "dynamisch nicht genommene" Verzweigungen betreffen, in die BPT gespeichert.
  • Für eine reguläre bedingte Verzweigung kann man die Zieladresse in den TAC einfügen, ohne sie in die BPT einzufügen. Bei einer sehr wahrscheinlich genommenen Verzweigung, beispielsweise einer "statisch genommenen" Verzweigung, ist es solange unbedeutend, ob die Vorgeschichte der Verzweigung in der BPT ist oder nicht, solange die Zieladresse in dem TAC ist, da die Vorgeschichte dieser Verzweigung von der Vorhersage nicht verwendet wird. Wenn eine Adresse in dem TAC einen Treffer erzielt, jedoch in der BPT zu einem Fehlversuch führt, wird bei einem Ausführungsbeispiel des erfindungsgemäßen Mikroprozessors die Verzweigung automatisch als genommen vorhergesagt unter Verwendung der Zieladresse von dem Treffer-TAC-Eintrag. AUFRUF- und RÜCKSPRUNG-Befehle mit "statisch genommen"-Hinweisen werden jedoch in die BPT geschrieben, da diese beiden Verzweigungsarten den Rücksprungstapelpuffer (RSB) 124 beeinflussen können. Daher kön nen AUFRUF- und RÜCKSPRUNG-Informationen in die BPT 140 geschrieben werden, so daß die BPT 140 den AUFRUF/RÜCKSPRUNG-Typ zur Verfügung stellen kann, bevor Verzweigungen dekodiert werden.
  • 2 zeigt eine Darstellung einer Verzweigungsvorhersagetabelle (BPT) 200. Für jeden Verzweigungsbefehl hat die BPT 200 einen Verzweigungseintrag 260. Der Verzweigungseintrag 260 hat verschiedene Felder, u.a. ein Gültig-Bit-Feld 240, ein sehr wahrscheinlich vorhergesagt/unbedingt(strongly predicted/unconditional-SP/U)-Feld 242, ein Vorhersagefeld 244, ein Verzweigungstypfeld (AUFRUF/RÜCKSPRUNG/REGULÄR) 261 und ein Vorgeschichteregister bzw. Protokollregister 246. Bei einem Ausführungsbeispiel haben das SP/U-Feld und das Vorhersagefeld 242 bzw. 244 jeweils ein Bit, während das Vorgeschichteregister 246 4 Bits enthält. Man beachte, daß die Größe der obigen Felder nicht auf eine spezielle Anzahl von Bits beschränkt ist, sondern die Felder mit verschiedenen Anzahlen von Bits implementiert werden können. Im folgenden werden das SP/U-Feld und das Vorhersagefeld 242 und 244 als "SP/U-Bit 242" und "Vorhersagebit 244" bezeichnet. Das Gültig-Bit 240 zeigt an, ob die Verzweigung in dem Eintrag 260 gültig ist oder nicht. Das SP/U-Bit 242 zeigt an, ob die Verzweigung eine bedingte oder eine unbedingte Verzweigung ist, oder ob die Verzweigung eine sehr wahrscheinlich vorhergesagte Verzweigung ist. Zu den regulären bedingten Verzweigungen gehören Verzweigungen vom Nicht-Rücksprung-Typ und vom Nicht-Aufruf-Typ. Üblicherweise kann sich die Vorhersage für eine bedingte Verzweigung in Abhängigkeit von der Ausführungsvorgeschichte zeitlich ändern.
  • Das Vorhersagebit 244 und das Vorgeschichteregister 246 sind mit einer Vorhersageaktualisierungslogikschaltung 248 gekoppelt. Die Vorhersageaktualisierungslogikschaltung 248 ist mit einer Mustervorgeschichtetabelle 250 gekoppelt. Die Vorhersageaktualisierungslogikschaltung 248 kann einen zweistufigen Vorhersagealgorithmus implementieren, beispielsweise den "Tse-Yu Yeh Two-level prediction algorithm". Weitere Informationen zu diesem Algorithmus finden sich in "T-Y Yeh und Y.N. Patt "Alternative Implementations of Two-Level Adaptive Branch Prediction", Proceedings des 19th International Symposium on Computer Architecture, Seiten 124-134, Mai, 1992.
  • Üblicherweise werden das Vorhersagebit 244 und das Vorgeschichteregister 246 von der Vorhersageaktualisierungslogikschaltung 248 aktualisiert. Bei einer unbedingten Verzweigung oder bei statisch genommenen und statisch nicht genommenen Verzweigungen verändert sich die Vorhersage jedoch zeitlich nicht – die Vorhersage bleibt entweder genommen oder nicht genommen. Um eine Veränderung der Vorhersage in diesen Fällen zu vermeiden, ist das SP/U-Bit 242 so konfiguriert, daß es das Vorhersagebit 244 und das Vorgeschichteregister 246 daran hindert, von der Vorhersageaktualisierungslogikschaltung 248 aktualisiert zu werden.
  • Das SP/U-Bit 242 ist über einen Inverter 262 mit Tristate-Puffern 270 und 272 gekoppelt, die Schreiboperationen an das Vorhersagebit 244 bzw. das Vorgeschichteregister 246 weiterleiten. Wenn das SP/U-Bit 242 gesetzt ist, wird die Vorhersageaktualisierungslogikschaltung 248 daran gehindert, das Vorhersagebit 244 und das Vorgeschichteregister 246 zu aktualisieren, da die Tristate-Puffer 270 und 272 hochohmig gemacht (tristated) werden. Der Inverter 262 invertiert das logische Signal vom SP/U-Bit 242 und erzeugt eine logische "0" für die Freigabeports der Tristate-Puffer 270 und 272. Sobald das SP/U-Bit 242 gesetzt ist, wird von dem zweiten Feld (T/N) 280 des Computerhinweisregisters 247 in das Vorhersagebit des Vorhersagefeldes 244 geschrieben. Wenn das SP/U-Bit 242 jedoch auf "0" entaktiviert wurde, erlauben die Tristate-Puffer 270 und 272 die Aktualisierung des Vorhersagebits 244 und des Vorgeschichteregisters 246 mit dem oben erwähnten zwei Stufen Vorhersagealgorithmus entsprechenden Informationen von der Vorhersageaktualisierungsschaltung 248.
  • Bei dem Ausführungsbeispiel des erfindungsgemäßen Mikroprozessors wird das Vorgeschichteregister auf "1111" gesetzt, wenn eine Verzweigung "statisch genommen" wird. Wenn alle Bits des Vorgeschichteregisters auf "1" gesetzt sind, wird eine Verzweigung als genommen vorhergesagt. In der Mustervorgeschichtetabelle 250 ist der "1111" entsprechende Eintrag 290 fest verdrahtet mit "1", so daß eine Verzweigung immer als genommen vorhergesagt wird, wenn der Inhalt des Vorgeschichteregisters "1111" ist. Dies zeigt an, daß eine Verzweigung während der ganzen Zeit genommen wird. Wenn eine Verzweigung "statisch nicht genommen" wird, ist das Vorgeschichteregister auf "0000" gesetzt. Bei der Mustervorgeschichtetabelle ist der dem "0000"-Eintrag entsprechende Eintrag 292 festverdrahtet auf "0", um immer "nicht genommen" vorherzusagen, wenn der Inhalt des Vorgeschichteregisters "0000" ist. Bei Festverdrahtung der Einträge "0000" und "1111" mit "0" bzw. "1", ändert sich die Vorhersage nicht; anders ist es bei Situationen, in denen die Einträge in der Mustervorgeschichtetabelle 250 von der Ausführungsvorgeschichte lernen und ihre Vorhersage entsprechend modifizieren.
  • Für "statisch genommene" Verzweigungen ist das SP/U-Bit 242 daher gesetzt, und das Vorgeschichteregister behält solange seinen Anfangswert "1111", solange es die Verzweigung in der BPT noch gibt. Bei "statisch nicht genommenen" Verzweigungen wird das SP/U-Bit 242 gesetzt, und das Vorgeschichteregister behält den Anfangswert von "0000". Wenn der Kompilierer-Hinweis anzeigt, daß es eine "dynamisch genommene" oder eine "dynamisch nicht genommene" Vorhersage gibt, wird das SP/U-Bit 242 gelöscht. Es wird die reguläre dynamische Vorhersage verwendet, wobei das das Vorhersagebit 242 und das Verzweigungsprotokollregister 246 von der Vorhersageaktualisierung 248 aktualisiert werden.
  • 3 zeigt ein Ablaufdiagramm im Zusammenhang mit einem Prozeß zum Zuordnen einer Verzweigung gemäß einem Ausführungsbeispiel der vorliegenden Erfindung. Der Prozeß be ginnt mit dem Block 301, auf den der Entscheidungsblock 302 folgt. Bei dem Entscheidungsblock 302 wird aus den Kompilierer-Hinweisen bestimmt, d.h. aus den beiden kodierten Bits, ob eine Verzweigung statisch ist. Wenn die Verzweigung nicht statisch, sondern dynamisch ist, geht der Prozeß mit dem Block 304 weiter. Beim Block 304 werden die BPT und der TAC aktualisiert. Beim Aktualisieren wird üblicherweise u.a. eine Zieladresse in den TAC geschrieben, welche zuletzt verwendet wurde und es werden Verzweigungsinformationen in die BPT geschrieben. Das SP/U-Bit 242 wird auf "0" gesetzt, um der Vorhersageaktualisierungslogikschaltung eine Aktualisierung des Vorgeschichte- bzw. Protokollregisters und des Vorhersagebits zu ermöglichen. Von diesem Zeitpunkt an wird die dynamische Vorhersage verwendet. Wenn die Verzweigung als genommen vorhergesagt wird, wird das Vorgeschichteregister auf 1111 (oder auf ein anderes Muster, welches wahrscheinlich eine genommene Vorhersage erzielt) initialisiert. Wenn die Verzweigung als nicht genommen vorhergesagt wird, wird das Vorgeschichteregister auf 0000 initialisiert (oder auf ein anderes Muster, welches wahrscheinlich eine nicht genommene Vorhersage erzielt).
  • Wenn beim Entscheidungsblock 302 jedoch bestimmt wird, daß die Verzweigung statisch ist, geht der Prozeß vom Entscheidungsblock 302 zum Entscheidungsblock 306 weiter, in welchem bestimmt wird, ob die Verzweigung "genommen" wird oder "nicht genommen" wird. Wenn die Verzweigung "nicht genommen" wird, d.h. wenn die Verzweigung "statisch nicht genommen" wird, geht der Prozeß mit dem Block 308 weiter. Es wird keine Zuordnung in der BPT ausgeführt. Wenn auf eine Verzweigung als sehr wahrscheinlich nicht genommen hingewiesen wird, werden die Informationen der Verzweigung nicht in die Vorhersagetabelle aufgenommen, da die Standardverzweigungsvorhersage bereits "nicht genommen" lautet. Wenn die Verzweigung jedoch genommen wird, geht der Prozeß mit dem Entscheidungsblock 310 weiter, bei dem bestimmt wird, ob die Verzweigung vom "AUFRUF"-Typ oder vom "RÜCKSPRUNG"-Typ ist.
  • Wenn die Verzweigung weder vom AUFRUF-Typ noch vom RÜCKSPRUNG-Typ ist, geht der Prozeß mit dem Block 311 weiter, bei dem der TAC aktualisiert wird. Der Grund hierfür ist, daß man keinen Platz in der BPT zur Speicherung der Vorgeschichte vergeuden sollte, wenn eine Verzweigung sehr wahrscheinlich genommen wird, wie in dem Fall einer "statisch genommenen" Verzweigung.
  • Wenn die Verzweigung vom AUFRUF-Typ oder vom RÜCKSPRUNG-Typ ist, geht der Prozeß mit dem Entscheidungsblock 313 weiter, bei dem bestimmt wird, ob die Verzweigung vom AUFRUF-Typ ist. Wenn die Verzweigung vom AUFRUF-Typ ist, geht der Prozeß mit dem Block 312 weiter, bei dem sowohl die BPT als auch der TAC aktualisiert werden. Die Vorgeschichte- bzw. Protokollregisterinformationen werden auf "1111" aktualisiert, und das SP/U-Bit 242 wird auf 1 gesetzt. Die BPT wird aktualisiert, damit den Verzweigungstyp beispielsweise AUFRUF, RÜCKSPRUNG oder regulär betreffende Informationen aufgezeichnet werden. Die Verzweigungstypinformationen werden zur Aktualisierung anderer Verzweigungsvorhersagestrukturen verwendet. Beispielsweise kann der Rücksprungstapelpuffer (RSB) nach der Vorhersage mit dem "Typ" der Informationen aktualisiert werden. Nach einem "AUFRUF" wird die Rücksprungadresse in den RSB eingegeben. Nach einem "RÜCKSPRUNG" werden die obersten Informationen aus dem Stapel herausgeholt.
  • Wenn bei dem Entscheidungsblock 313 jedoch bestimmt wird, daß der Block vom RÜCKSPRUNG-Typ ist, geht der Prozeß mit dem Block 314 weiter, bei dem bis auf eine Ausnahme die gleichen Aktionen wie beim Block 312 ausgeführt werden. Der TAC wird nicht aktualisiert, da RÜCKSPRUNG-Adressen mit Hilfe des RSB statt mit dem TAC vorhergesagt werden.

Claims (19)

  1. Mikroprozessor mit einer Verzweigungsvorhersagetabelle (BPT; 140, 200), deren Einträge (260) jeweils ein Vorhersagefeld (244) und ein Vorgeschichteregister (246) enthalten, wobei das Vorhersagefeld (244) anzeigt, ob eine Verzweigung als zu nehmend oder nicht zu nehmend vorhergesagt ist, und wobei das Vorgeschichteregister (246) Vorgeschichteinformationen speichert, die die Vorgeschichte vorangegangener Ausführungen des zugehörigen Verzweigungsbefehls charakterisieren, dadurch gekennzeichnet, daß der Mikroprozessor ferner ein Compilerhinweis-Register (247) enthält, das wenigstens ein erstes Feld (281) aufweist, welches anzeigt, ob eine Verzweigung durch den Compiler als eine Verzweigung charakterisiert ist, welche statisch vorhergesagt ist, das heißt als mit einer hohen Wahrscheinlichkeit zu nehmend oder nicht zu nehmend vorhergesagt ist, und daß das Vorhersagefeld (244) und das Vorgeschichteregister (246) eines zu aktualisierenden Eintrags (260) der Verzweigungsvorhersagetabelle mit den Eingängen einer Vorhersageaktualisierungslogik (248) gekoppelt sind, wobei in Abhängigkeit vom Inhalt des ersten Feldes (281) des Compiler-Hinweisregisters (247) die Ausgangssignale (252, 254) der Vorhersageaktualisierungslogik (248) selektiv mit dem Vorhersagefeld (244) und dem Vorgeschichteregister (246) gekoppelt werden, um eine Aktualisierung des Vorhersagefelds (244) und des Vorgeschichteregisters (246) durch die Ausgangssignale (252, 254) nur dann zu ermöglichen, wenn keine statische Vorhersage durch den Inhalt des ersten Feldes (281) angezeigt ist.
  2. Mikroprozessor nach Anspruch 1, wobei das erste Feld (281) dann, wenn es aktiv ist, anzeigt, daß eine Verzweigung statisch sehr wahrscheinlich vorhergesagt wird.
  3. Mikroprozessor nach Anspruch 2, wobei das Compilerhinweis-Register (247) ferner ein zweites Feld enthält, das wenn es aktiv ist, anzeigt, daß eine Verzweigung als genommen vorhergesagt wird.
  4. Mikroprozessor nach Anspruch 1, ferner mit einer mit der Vorhersageaktualisierungslogik (248) gekoppelten Mustervorgeschichtetabelle.
  5. Mikroprozessor nach Anspruch 2, wobei ein Verzweigungseintrag ein sehr wahrscheinlich vorhergesagtes/unbedingtes Vorhersagefeld (242) enthält, um anzuzeigen, ob eine Verzweigung eine sehr wahrscheinlich vorhergesagte Verzweigung oder eine unbedingte Verzweigung ist.
  6. Mikroprozessor nach Anspruch 5, wobei das sehr wahrscheinlich vorhergesagte/unbedingte Vorhersagefeld (242) mit dem ersten Feld (281) des Compilerhinweis-Registers (247) gekoppelt ist.
  7. Mikroprozessor nach Anspruch 1, wobei das Vorhersagefeld (244) mit dem zweiten Feld des Compilerhinweis-Registers (247) gekoppelt ist.
  8. Mikroprozessor nach Anspruch 1, wobei ein Verzweigungseintrag ein Gültig-Feld enthält, um anzuzeigen, ob der Verzweigungseintrag gültig ist.
  9. Mikroprozessor nach Anspruch 1, wobei ein Verzweigungseintrag ein Feld enthält, das anzeigt, ob die Verzweigung vom AUFRUF-, RÜCKSPRUNG- oder vom regulären Typ ist.
  10. Mikroprozessor nach Anspruch 9, wobei ein Zieladreß-Cache aktualisiert wird, wenn bestimmt wird, daß die Ver zweigung sehr wahrscheinlich als genommen vorhergesagt wird und weder vom AUFRUF- noch vom RÜCKSPRUNG-Typ ist.
  11. Mikroprozessor nach Anspruch 10, wobei die Verzweigungsvorhersagetabelle und eine Zieladreß-Cache aktualisiert werden, wobei das Vorgeschichteregister auf den Typ genommen initialisiert wird, und die Vorhersage- und SP/U-Felder aktiviert werden, wenn bestimmt wird, daß die Verzweigung sehr wahrscheinlich als genommen vorhergesagt wird und vom AUF-RUF-Typ ist.
  12. Mikroprozessor nach Anspruch 10, wobei die Verzweigungsvorhersagetabelle aktualisiert wird, wobei das Vorgeschichteregister auf den Typ genommen initialisiert wird, wobei die Vorhersage- und SP/U-Felder aktiviert werden und der TAC nicht aktualisiert wird, wenn bestimmt wird, daß die Verzweigung sehr wahrscheinlich als genommen vorhergesagt wird und vom RÜCKSPRUNG-Typ ist.
  13. Mikroprozessor nach Anspruch 1, wobei die Verzweigungsvorhersagetabelle und ein Zieladreß-Cache (TAC) aktualisiert werden, das SP/U-Feld entaktiviert wird und das Vorgeschichteregister auf den Typ genommen initialisiert wird, wenn die Verzweigung als dynamisch genommen vorhergesagt wird.
  14. Mikroprozessor nach Anspruch 1, wobei die Verzweigungsvorhersagetabelle und ein Zieladreß-Cache (TAC) aktualisiert werden, das SP/U-Feld entaktiviert wird und das Vorgeschichteregister auf den Typ nicht genommen initialisiert wird, wenn die Verzweigung als dynamisch nicht genommen vorhergesagt wird.
  15. Verfahren zum Zuteilen und Aktualisieren eines Eintrags in einer Verzweigungsvorhersagetabelle (BPT) und einem Zieladreß-Cache (TAC) beim Decodieren eines Verzweigungsbefehls in einem Mikroprozessor, wobei der Befehlsabruf nach einem Verzweigungsbefehl auf der Grundlage der Verzweigungsvorhersagetabelle und des Zieladreß-Caches erfolgt, wobei zunächst bestimmt wird, ob die Verzweigung statisch als zu nehmend oder nicht zu nehmend, das heißt als mit einer hohen Wahrscheinlichkeit zu nehmend bzw. nicht zu nehmend, vorhergesagt wird, indem ein gespeicherter Compiler-Hinweis überprüft wird, wobei dann, wenn dies der Fall ist und wenn die Verzweigung weder von einem CALL-Typ noch von einem RETURN-Typ ist, nur ein Eintrag in dem Zieladreß-Cache aktualisiert wird, sofern die Verzweigung statisch als zu nehmend vorhergesagt wird, und weder ein Eintrag in dem Zieladreß-Cache noch ein Eintrag in der Verzweigungsvorhersagetabelle erzeugt wird, wenn die Verzweigung statisch als nicht zu nehmend vorhergesagt wird.
  16. Verfahren nach Anspruch 15, dadurch gekennzeichnet, daß dann, wenn die Verzweigung statisch als zu nehmend vorhergesagt wird und festgestellt wird, daß die Verzweigung vom CALL-Typ ist, ein zugehöriger Eintrag in der Verzweigungsvorhersagetabelle und ein Eintrag in dem Zieladreß-Cache aktualisiert werden, wobei ein Vorgeschichteregister des Eintrags der Verzweigungsvorhersagetabelle derart initialisiert wird, daß er eine Verzweigung als zu nehmend charakterisiert, ein Vorhersagefeld auf "zu nehmend" gesetzt wird und ein Statisch-vorhergesagt/Unbedingt(SP/U)-Feld auf "statisch vorhergesagt/unbedingt" gesetzt wird.
  17. Verfahren nach Anspruch 15, dadurch gekennzeichnet, daß dann, wenn die Verzweigung statisch als zu nehmend vorhergesagt wird und festgestellt wird, daß die Verzweigung vom RETURN-Typ ist, nur ein Eintrag in der Verzweigungsvorhersagetabelle aktualisiert wird, indem das Vorgeschichteregister so initialisiert wird, daß es eine Verzweigung als zu nehmend charakterisiert, das Vorhersagefeld auf "zu nehmend" gesetzt wird und das SP/U-Feld auf "statisch-vorhergesagt/unbedingt" gesetzt wird.
  18. Verfahren nach Anspruch 15, ferner mit dem Schritt, daß wenn die Verzweigung dynamisch als genommen vorhergesagt wird, die Verzweigungsvorhersagetabelle und der TAC aktualisiert werden; das SP/U-Feld entaktiviert wird und ein Vorgeschichteregister auf genommen initialisiert wird.
  19. Verfahren nach Anspruch 15, ferner mit dem Schritt, daß wenn die Verzweigung dynamisch als nicht genommen vorhergesagt wird, die Verzweigungsvorhersagetabelle und der TAC aktualisiert werden, das Vorgeschichteregister auf nicht genommen initialisiert wird und das SP/U-Feld entaktiviert wird.
DE10084556T 1999-05-03 2000-05-01 Optimierte Ausführung von statisch sehr wahrscheinlich vorhergesagten Verzweigungsbefehlen Expired - Fee Related DE10084556B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/304,600 US6427206B1 (en) 1999-05-03 1999-05-03 Optimized branch predictions for strongly predicted compiler branches
US09/304,600 1999-05-03
PCT/US2000/011789 WO2000067116A1 (en) 1999-05-03 2000-05-01 Optimized execution of statically strongly predicted branch instructions

Publications (2)

Publication Number Publication Date
DE10084556T1 DE10084556T1 (de) 2002-04-25
DE10084556B4 true DE10084556B4 (de) 2005-11-24

Family

ID=23177181

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10084556T Expired - Fee Related DE10084556B4 (de) 1999-05-03 2000-05-01 Optimierte Ausführung von statisch sehr wahrscheinlich vorhergesagten Verzweigungsbefehlen

Country Status (7)

Country Link
US (1) US6427206B1 (de)
CN (1) CN1150455C (de)
AU (1) AU4812500A (de)
DE (1) DE10084556B4 (de)
GB (1) GB2363878B (de)
TW (1) TWI223195B (de)
WO (1) WO2000067116A1 (de)

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3683439B2 (ja) * 1999-08-24 2005-08-17 富士通株式会社 分岐予測を抑止する情報処理装置および方法
JP2001243070A (ja) * 2000-02-29 2001-09-07 Toshiba Corp プロセッサ及び分岐予測方法並びにコンパイル方法
US20020059562A1 (en) * 2000-09-26 2002-05-16 Yutaka Haga Apparatus for collecting profiles of programs
JP3890910B2 (ja) * 2001-03-21 2007-03-07 株式会社日立製作所 命令の実行結果予測装置
CN100382017C (zh) * 2002-07-09 2008-04-16 徐肇昌 子序网模块及其调用方法
US7143272B2 (en) * 2002-12-27 2006-11-28 Intel Corporation Using computation histories to make predictions
US7343481B2 (en) * 2003-03-19 2008-03-11 Arm Limited Branch prediction in a data processing system utilizing a cache of previous static predictions
CN100378618C (zh) * 2003-03-27 2008-04-02 Nxp股份有限公司 基于分支的活动监控
US20040225866A1 (en) * 2003-05-06 2004-11-11 Williamson David James Branch prediction in a data processing system
DE602004030575D1 (de) * 2003-07-09 2011-01-27 Nxp Bv Verfahren und system zur zweigprädiktion
US20050154859A1 (en) * 2004-01-14 2005-07-14 Arm Limited Branch prediction in a data processing apparatus
US20050228977A1 (en) * 2004-04-09 2005-10-13 Sun Microsystems,Inc. Branch prediction mechanism using multiple hash functions
DE602005027338D1 (de) * 2004-04-21 2011-05-19 Fujitsu Ltd Abzweigungsvorhersageeinrichtung, verfahren dafür und prozessor
US8719837B2 (en) 2004-05-19 2014-05-06 Synopsys, Inc. Microprocessor architecture having extendible logic
JP4533432B2 (ja) * 2004-06-02 2010-09-01 インテル コーポレイション Tlb相関型分岐予測器及びその使用方法
US20060015706A1 (en) * 2004-06-30 2006-01-19 Chunrong Lai TLB correlated branch predictor and method for use thereof
US20060190710A1 (en) * 2005-02-24 2006-08-24 Bohuslav Rychlik Suppressing update of a branch history register by loop-ending branches
US8214191B2 (en) * 2005-08-29 2012-07-03 The Invention Science Fund I, Llc Cross-architecture execution optimization
US8255745B2 (en) * 2005-08-29 2012-08-28 The Invention Science Fund I, Llc Hardware-error tolerant computing
US8181004B2 (en) * 2005-08-29 2012-05-15 The Invention Science Fund I, Llc Selecting a resource management policy for a resource available to a processor
US7644258B2 (en) * 2005-08-29 2010-01-05 Searete, Llc Hybrid branch predictor using component predictors each having confidence and override signals
US8423824B2 (en) 2005-08-29 2013-04-16 The Invention Science Fund I, Llc Power sparing synchronous apparatus
US8209524B2 (en) * 2005-08-29 2012-06-26 The Invention Science Fund I, Llc Cross-architecture optimization
US8275976B2 (en) * 2005-08-29 2012-09-25 The Invention Science Fund I, Llc Hierarchical instruction scheduler facilitating instruction replay
US8516300B2 (en) * 2005-08-29 2013-08-20 The Invention Science Fund I, Llc Multi-votage synchronous systems
US9176741B2 (en) * 2005-08-29 2015-11-03 Invention Science Fund I, Llc Method and apparatus for segmented sequential storage
US7877584B2 (en) * 2005-08-29 2011-01-25 The Invention Science Fund I, Llc Predictive processor resource management
US7779213B2 (en) * 2005-08-29 2010-08-17 The Invention Science Fund I, Inc Optimization of instruction group execution through hardware resource management policies
US7739524B2 (en) * 2005-08-29 2010-06-15 The Invention Science Fund I, Inc Power consumption management
US8296550B2 (en) * 2005-08-29 2012-10-23 The Invention Science Fund I, Llc Hierarchical register file with operand capture ports
US7725693B2 (en) * 2005-08-29 2010-05-25 Searete, Llc Execution optimization using a processor resource management policy saved in an association with an instruction group
US7653834B2 (en) * 2005-08-29 2010-01-26 Searete, Llc Power sparing synchronous apparatus
US7627739B2 (en) * 2005-08-29 2009-12-01 Searete, Llc Optimization of a hardware resource shared by a multiprocessor
US20070050605A1 (en) * 2005-08-29 2007-03-01 Bran Ferren Freeze-dried ghost pages
US20070050606A1 (en) * 2005-08-29 2007-03-01 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Runtime-based optimization profile
US7774558B2 (en) * 2005-08-29 2010-08-10 The Invention Science Fund I, Inc Multiprocessor resource optimization
US20070083735A1 (en) * 2005-08-29 2007-04-12 Glew Andrew F Hierarchical processor
US7647487B2 (en) * 2005-08-29 2010-01-12 Searete, Llc Instruction-associated processor resource optimization
US7607042B2 (en) * 2005-08-29 2009-10-20 Searete, Llc Adjusting a processor operating parameter based on a performance criterion
US8218635B2 (en) 2005-09-28 2012-07-10 Synopsys, Inc. Systolic-array based systems and methods for performing block matching in motion compensation
US7562206B2 (en) * 2005-12-30 2009-07-14 Intel Corporation Multilevel scheme for dynamically and statically predicting instruction resource utilization to generate execution cluster partitions
JP4873546B2 (ja) * 2006-06-20 2012-02-08 ルネサスエレクトロニクス株式会社 データ処理装置、データ処理方法
KR100817056B1 (ko) * 2006-08-25 2008-03-26 삼성전자주식회사 분기이력 길이표시기, 분기예측 시스템 및 분기 예측 방법
US7779241B1 (en) * 2007-04-10 2010-08-17 Dunn David A History based pipelined branch prediction
EP2063355B1 (de) * 2007-11-22 2017-09-20 Sony Interactive Entertainment Europe Limited Zweigstellenvorhersageverfahren
CN101770358B (zh) * 2010-02-10 2013-01-30 龙芯中科技术有限公司 微处理器跳转指令分支预测处理系统和方法
US20140156978A1 (en) * 2012-11-30 2014-06-05 Muawya M. Al-Otoom Detecting and Filtering Biased Branches in Global Branch History
US10635446B2 (en) * 2015-09-24 2020-04-28 Qualcomm Incorporated Reconfiguring execution pipelines of out-of-order (OOO) computer processors based on phase training and prediction
US9639370B1 (en) * 2015-12-15 2017-05-02 International Business Machines Corporation Software instructed dynamic branch history pattern adjustment
US11579886B2 (en) * 2018-01-09 2023-02-14 International Business Machines Corporation System and method for multi-level classification of branches
US11113066B2 (en) 2018-01-09 2021-09-07 International Business Machines Corporation Predicting a branch instruction classified as simple or hard to predict based on a confidence counter in a branch type table
CN110688153B (zh) * 2019-09-04 2020-08-11 深圳芯英科技有限公司 一种指令分支执行控制方法及相关设备、指令结构
US11809873B2 (en) * 2020-04-29 2023-11-07 Intel Corporation Selective use of branch prediction hints
US11928474B2 (en) * 2022-06-03 2024-03-12 Microsoft Technology Licensing, Llc Selectively updating branch predictors for loops executed from loop buffers in a processor

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0544026A1 (de) * 1991-11-26 1993-06-02 Siemens Nixdorf Informationssysteme Aktiengesellschaft Einrichtung zur Sprungvorhersage bei der Durchführung von Sprungbefehlen
DE4493224T1 (de) * 1993-05-14 1996-04-25 Intel Corp Spekulative-Vorgeschichte-Mechanismus in einem Verzweigungszielpuffer
US5848269A (en) * 1994-06-14 1998-12-08 Mitsubishi Denki Kabushiki Kaisha Branch predicting mechanism for enhancing accuracy in branch prediction by reference to data

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0628184A (ja) * 1991-08-26 1994-02-04 Internatl Business Mach Corp <Ibm> ブランチ予測方法及びブランチプロセッサ
TW261676B (de) * 1993-11-02 1995-11-01 Motorola Inc
GB9521980D0 (en) * 1995-10-26 1996-01-03 Sgs Thomson Microelectronics Branch target buffer
US5742805A (en) 1996-02-15 1998-04-21 Fujitsu Ltd. Method and apparatus for a single history register based branch predictor in a superscalar microprocessor
US5761490A (en) 1996-05-28 1998-06-02 Hewlett-Packard Company Changing the meaning of a pre-decode bit in a cache memory depending on branch prediction mode
US5896259A (en) * 1997-08-05 1999-04-20 Raytheon Company Preheating device for electronic circuits

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0544026A1 (de) * 1991-11-26 1993-06-02 Siemens Nixdorf Informationssysteme Aktiengesellschaft Einrichtung zur Sprungvorhersage bei der Durchführung von Sprungbefehlen
DE4493224T1 (de) * 1993-05-14 1996-04-25 Intel Corp Spekulative-Vorgeschichte-Mechanismus in einem Verzweigungszielpuffer
US5848269A (en) * 1994-06-14 1998-12-08 Mitsubishi Denki Kabushiki Kaisha Branch predicting mechanism for enhancing accuracy in branch prediction by reference to data

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
IBM Technical Disclosure Bulletin, IBM Corp., US, Vol.37, No.7, July 1994, Seiten 109-113 *
Patent Abstracts of Japan JP 10228377 A *

Also Published As

Publication number Publication date
DE10084556T1 (de) 2002-04-25
US6427206B1 (en) 2002-07-30
GB0125908D0 (en) 2001-12-19
CN1150455C (zh) 2004-05-19
WO2000067116A1 (en) 2000-11-09
AU4812500A (en) 2000-11-17
CN1359488A (zh) 2002-07-17
GB2363878A (en) 2002-01-09
TWI223195B (en) 2004-11-01
GB2363878B (en) 2003-12-17

Similar Documents

Publication Publication Date Title
DE10084556B4 (de) Optimierte Ausführung von statisch sehr wahrscheinlich vorhergesagten Verzweigungsbefehlen
DE19983517B4 (de) Verfahren und Einrichtung zur Abzweigvorhersage unter Verwendung einer Abzweig-Vorhersagetabelle einer zweiten Stufe
DE69929936T2 (de) Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem
DE69322683T2 (de) Verfahren und Vorrichtung zur Durchführung eines pseudo-LRU Cachespeicherersetzungsschemas mit einer Verriegelungsfunktion
DE69327927T2 (de) Schnelles Vorausholen und Zuteilung von Befehlen mittels vorausschauender Anmerkungen von früher vorausgeholten
DE3785897T2 (de) Steuervorrichtung zum vorabruf von befehlen.
DE69031991T2 (de) Verfahren und Gerät zur Beschleunigung von Verzweigungsbefehlen
DE3588182T2 (de) Vorausschauende Speicherabrufmethode und System für Verzweigung mit Ausführungsbefehlen
DE69702350T2 (de) Verzweigungsvorhersageschema für cachespeicherzeile, das von sätzen eines set-assoziativen cachespeichers gemeinsam verwendet wird
DE69719235T2 (de) Prozessor und Verfahren zur spekulativen Ausführung von bedingten Verzweigungsbefehlen unter Verwendung einer von mehreren Verzweigungsvorhersageverfahren
DE69932066T2 (de) Mechanismus zur &#34;store-to-load forwarding&#34;
DE69229198T2 (de) Verzweigungsbefehlprozessor und Verfahren
DE69534113T2 (de) Kompression der Befehlswörter eines Rechners
DE69738188T2 (de) Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor
DE69805275T2 (de) Verfahren und Anordnung zur Reduzierung von Störungen in einer Verzweigungsgeschichtstabelle eines Mikroprozessors
DE60009151T2 (de) Vorhersage von datenbeförderung von speicher- zum ladebefehl mit untrainierung
DE4222776A1 (de) Verfahren und anordnung fuer eine verzweigungsbefehlsverarbeitung in einer parallelverarbeitungseinheit
DE102004013676A1 (de) Schleifenbetrieb mit null Overhead in einem Mikroprozessor mit Anweisungspuffer
DE69623146T2 (de) Verfahren und Vorrichtung zum Koordinieren der Benutzung von physikalischen Registern in einem Mikroprozessor
DE2630323A1 (de) Datenspeichereinrichtung
DE4447238A1 (de) Einrichung und Verfahren zum Vorhersagen von Verzweigungsinstruktionen
DE19855806A1 (de) Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen
DE2856680C2 (de)
DE19526008C2 (de) Befehlsvorholeinheit für einen Computer
DE19824289C2 (de) Pipelineverarbeitungsmaschine

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee