DE602004008711T2 - Anordnung, Verfahren und Rechnerdatensignal zur selektiven Annullierung der Vorhersage eines Rücksprungstapelspeichers als Antwort auf die Erkennung einer nicht-standard Rücksprungsbefehlsreihe - Google Patents

Anordnung, Verfahren und Rechnerdatensignal zur selektiven Annullierung der Vorhersage eines Rücksprungstapelspeichers als Antwort auf die Erkennung einer nicht-standard Rücksprungsbefehlsreihe Download PDF

Info

Publication number
DE602004008711T2
DE602004008711T2 DE602004008711T DE602004008711T DE602004008711T2 DE 602004008711 T2 DE602004008711 T2 DE 602004008711T2 DE 602004008711 T DE602004008711 T DE 602004008711T DE 602004008711 T DE602004008711 T DE 602004008711T DE 602004008711 T2 DE602004008711 T2 DE 602004008711T2
Authority
DE
Germany
Prior art keywords
prediction
return
microprocessor
btac
instruction
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 - Lifetime
Application number
DE602004008711T
Other languages
English (en)
Other versions
DE602004008711D1 (de
Inventor
Glenn G. Henry
Thomas Mcdonald
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.)
IP First LLC
Original Assignee
IP First LLC
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 IP First LLC filed Critical IP First LLC
Publication of DE602004008711D1 publication Critical patent/DE602004008711D1/de
Application granted granted Critical
Publication of DE602004008711T2 publication Critical patent/DE602004008711T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques

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)

Description

  • PRIORITÄTSINFORMATION
  • Dieses Patent nimmt die Priorität in Anspruch, die auf der US-Anmeldung, Eingangsnummer 10/679830, eingereicht am 6. Okt. 2003, beruht, sowie auf der vorläufigen US-Anmeldung, Eingangsnummer 60/501203, eingereicht am 8. Sept. 2003 mit dem Titel APPARATUS AND METHOD FOR OVERRIDING RETURN STACK PREDICTION IN RESPONSE TO DETECTION OF NON-STANDARD RETURN.
  • GEBIET DER ERFINDUNG
  • Die Erfindung betrifft im Allgemeinen das Gebiet der Verzweigungsvorhersage in Mikroprozessoren und insbesondere die Zieladressen-Vorhersage für Rücksprungbefehle mit Hilfe von Rücksprungstacks und Verzweigungsziel-Adresscaches.
  • HINTERGRUND DER ERFINDUNG
  • Ein Mikroprozessor ist eine digitale Vorrichtung, die Befehle ausführt, die in einem Computerprogramm spezifiziert sind. Moderne Mikroprozessoren arbeiten in der Regel mit einer Pipeline. D. h., sie bearbeiten mehrere Befehle gleichzeitig in unterschiedlichen Blöcken bzw. Pipelinestufen des Mikroprozessors. Hennessy und Patterson definieren das Pipelineverfahren als "eine Implementierungstechnik, bei der sich mehrere Befehle während der Ausführung überlappen". Siehe hierzu Computer Architecture: A Quantitative Approach, 2nd edition, von John L. Hennessy und David A. Patterson, Morgan Kaufmann Publishers, San Francisco, CA, 1996. Sie liefern weiterhin die folgende ausgezeichnete Erläuterung des Pipelineverfahrens:
    Eine Pipeline ist wie ein Fließband. In einem Automobil-Fließband gibt es viele Schritte, von denen jeder einen Teil zum Zusammenbau des Autos beiträgt. Jeder Schritt arbeitet parallel zu den anderen Schritten, jedoch an einem unterschiedlichen Fahrzeug. In einer Computerpipeline vervollständigt jeder Schritt in der Pipeline einen Teil eines Befehls. Wie am Fließband vervollständigen unterschiedliche Schritte unterschiedliche Teile der verschiedenen Befehle parallel. Jeder dieser Schritte heißt Pipestufe oder Pipesegment. Die Stufen sind hintereinander verbunden, so dass sie eine "Rohrleitung" bilden. Die Befehle treten an einem Ende ein, schreiten durch die Stufen fort und treten am anderen Ende so aus, wie dies auch Automobile auf einem Fließband tun.
  • Mikroprozessoren arbeiten in Taktzyklen. Normalerweise geht ein Befehl in jedem Taktzyklus von einer Stufe der Mikroprozessor-Pipeline auf eine andere Stufe über. Bleiben an einem Automobil-Fließband die Arbeiter in einer Stufe des Bands ohne Beschäftigung, weil sie kein Auto vorfinden, an dem Arbeiten zu verrichten sind, so wird die Produktion bzw. die Leistung des Bands geringer. Ist eine Mikroprozessorstufe während eines Taktzyklus untätig, da sie keinen Befehl hat, der auszuführen ist – diese Situation bezeichnet man üblicherweise als Pipeline-Blase – so nimmt die Prozessorleistung ab.
  • Eine mögliche Ursache für Pipelineblasen sind Verzweigungsbefehle. Tritt ein Verzweigungsbefehl auf, so muss der Prozessor die Zieladresse des Verzweigungsbefehls feststellen und damit beginnen, Befehle an der Zieladresse zu holen und nicht an der nächstfolgenden Adresse nach dem Verzweigungsbefehl. Da die Pipelinestufen, die die Zieladresse definitiv bestimmen, ein gutes Stück hinter den Stufen liegen, die die Befehle holen, werden bei Verzweigungsbefehlen Blasen erzeugt. Im Weiteren wird ausführlicher erklärt, dass Mikroprozessoren in der Regel Verzweigungsvorhersage-Mechanismen aufweisen, damit die Anzahl der Blasen geringer wird, die durch Verzweigungsbefehle verursacht werden.
  • Eine besondere Art von Verzweigungsbefehl ist der Rücksprungbefehl. Ein Rücksprungbefehl ist normalerweise der letzte Befehl, der von einem Unterprogramm ausgeführt wird, damit der Programmablauf wieder an die aufrufende Routine zurückgegeben wird, die das Programm ist, das bewirkt hat, dass die Programmsteuerung auf das Unterprogramm übergeht. In einer üblichen Programmfolge führt die aufrufende Routine einen Aufruf-Befehl aus. Der Aufruf-Befehl weist den Mikroprozessor an, eine Rücksprungadresse in einem Stack im Speicher abzulegen und anschließend zur Adresse des Unterprogramms zu verzweigen. Die im Stack abgelegte Rücksprungadresse ist die Adresse des Befehls, der dem Aufruf-Befehl in der rufenden Routine folgt. Das Unterprogramm führt zuletzt einen Rücksprungbefehl aus, der diejenige Rücksprungadresse aus dem Stack holt, die der Aufruf-Befehl vorher dort abgelegt hat, und verzweigt zur Rücksprungadresse, die die Zieladresse des Rücksprungbefehls ist. Ein Beispiel für einen Rücksprungbefehl ist der x86-Befehl RET. Ein Beispiel für einen Aufruf-Befehl ist der x86-Befehl CALL.
  • Ein Vorteil beim Ausführen von Aufruf-Rücksprung-Folgen liegt darin, dass sie erlauben, Unterprogrammaufrufe zu verschachteln. Beispielsweise kann ein Hauptprogramm ein Unterprogramm A aufrufen, das eine Rücksprungadresse ablegt. Das Unter programm A kann ein Unterprogramm B aufrufen, das eine Rücksprungadresse ablegt. Daraufhin führt das Unterprogramm B einen Rücksprungbefehl aus, der die Rücksprungadresse holt, die das Unterprogramm A abgelegt hat. Nun führt das Unterprogramm A einen Rücksprungbefehl aus, der die Rücksprungadresse holt, die das Hauptprogramm hinterlegt hat. Der Gedanke der Verschachtelung von Unterprogrammaufrufen ist sehr nützlich. Das oben dargestellte Beispiel kann man bis zu einer Aufruftiefe erweitern, die die Stackgröße noch unterstützen kann.
  • Aufgrund der regelmäßigen Struktur der Aufruf-Rücksprung-Befehlsfolgen verwenden moderne Mikroprozessoren einen Verzweigungs-Vorhersagemechanismus, der üblicherweise als Rücksprungstack bezeichnet wird, um die Zieladressen der Rücksprungbefehle vorherzusagen. Der Rücksprungstack ist ein kleiner Puffer, in dem Rücksprungadressen in einer Last-In-First-Out-Organisation zwischengespeichert werden. Jedes Mal wenn ein Aufruf-Befehl auftritt, wird die im Speicherstack zu hinterlegende Rücksprungadresse auch in den Rücksprungstack eingetragen. Bei jedem Auftreten eines Rücksprungbefehls wird die Rücksprungadresse in der obersten Position des Rücksprungstacks geholt und als vorhergesagte Zieladresse des Rücksprungbefehls verwendet. Dieser Vorgang verringert Blasen, da der Mikroprozessor nicht darauf warten muss, dass die Rücksprungadresse aus dem Speicherstack geholt wird.
  • US 2002/0194464 offenbart ein System, das einen spekulativen Verzweigungsziel-Adresscache aufweist, der von einem sekundären Prädiktor abhängig von der Art des Verzweigungsbefehls gezielt überschrieben wird.
  • US-5,768,576 offenbart ein System zum Vorhersagen und Handhaben des Rücksprungs anhand von Unterprogrammbefehlen.
  • Rücksprungstacks sagen in der Regel die Zieladressen von Rücksprungbefehlen sehr exakt vorher, da die Struktur der Aufruf-Rücksprung-Folgen sehr regelmäßig ist. Die Erfinder haben jedoch herausgefunden, dass gewisse Programme, beispielsweise gewisse Betriebssysteme, nicht immer Call/Ret-Befehle standardmäßig abarbeiten. Beispielsweise kann der auf einem x86-Mikroprozessor ausgeführte Code ein CALL enthalten, anschließend ein PUSH, um eine andere Rücksprungadresse in den Stack einzutragen, daraufhin ein RET, das einen Rücksprung zur eingetragenen Rücksprungadresse bewirkt und nicht zu der Adresse des Befehls nach dem CALL, die der CALL im Stack abgelegt hat. In einem weiteren Beispiel führt der Code ein PUSH aus, damit eine Rücksprungadresse im Stack abgelegt wird, anschließend ein CALL und daraufhin zwei RET- Befehle, wodurch für das zweite RET ein Rücksprung zur abgelegten Rücksprungadresse bewirkt wird und nicht zu dem Befehl nach einem CALL, das dem PUSH vorausgegangen ist. Dieses Verhalten verursacht eine Fehlinterpretation durch einen Rücksprungstack.
  • Man benötigt daher eine Einrichtung, die die Zieladresse eines Rücksprungbefehls genauer vorhersagt, und zwar insbesondere für Code, der eine nicht standardmäßige Aufruf-Rücksprung-Folge abarbeitet.
  • Die Erfindung stellt eine Vorrichtung bereit, die Rücksprungstack-Fehlvorhersagen erkennt und als Antwort darauf ein Überschreibflag setzt, das dem Rücksprungbefehl zugewiesen ist, so dass beim nächsten Auftreten des Rücksprungbefehls der Mikroprozessor die Zieladresse des Rücksprungbefehls nicht mit Hilfe des Rücksprungstacks, sondern mit einem anderen Mechanismus vorhersagen kann. Ein Verzweigungsziel-Adresscache (BTAC, BTAC = Branch Target Address Cache)) wird zum Speichern des Überschreibflags verwendet, das dem Rücksprungbefehl zugeordnet ist. In einer Ausführungsform ist der andere Mechanismus zum Vorhersagen der Rücksprungbefehl-Zieladresse der BTAC, der vermutlich beim Vorhersagen der Rücksprungbefehl-Zieladresse im Fall einer normalen Aufruf-Rücksprung-Folge in der Regel weniger genau ist, jedoch im Fall eines Codes, der eine nicht standardmäßige Aufruf-Rücksprung-Folge abarbeitet, genauer ist.
  • Gemäß einem Aspekt stellt die Erfindung einen Mikroprozessor bereit. Der Mikroprozessor enthält einen Rücksprungstack, der eine erste Vorhersage einer Zieladresse eines Rücksprungbefehls liefert. Der Mikroprozessor enthält auch einen Verzweigungsziel-Adresscache (BTAC), der eine zweite Vorhersage der Zieladresse des Rücksprungbefehls und eine Überschreibanzeige liefert. Die Überschreibanzeige zeigt einen vorbestimmten Wert, falls die erste Vorhersage die Zieladresse für ein erstes Auftreten des Rücksprungbefehls falsch vorhergesagt hat. Der Mikroprozessor enthält auch eine Verzweigungssteuerlogik, die mit dem Rücksprungstack und dem BTAC verbunden ist, und die den Mikroprozessor für ein zweites Auftreten des Rücksprungbefehls veranlasst, zur zweiten Vorhersage der Zieladresse zu verzweigen und nicht zur ersten Vorhersage, falls die Überschreibanzeige den vorbestimmten Wert zeigt.
  • Gemäß einem weiteren Aspekt stellt die Erfindung ein Verfahren zum Vorhersagen einer Zieladresse eines Rücksprungbefehls in einem Mikroprozessor bereit. Das Verfahren enthält das Aktualisieren einer Überschreibanzeige auf einen Wert wahr, falls ein Rücksprungstack die Zieladresse des Rücksprungbefehls falsch vorhergesagt hat. Das Verfahren enthält auch einen Verzweigungsziel-Adresscache (BTAC), der eine Vorhersage der Zieladresse nach der Aktualisierung erzeugt. Das Verfahren umfasst die Feststellung, ob die Überschreibanzeige den Wert wahr aufweist, nachdem der BTAC die Vorhersage erzeugt hat. Das Verfahren umfasst das Verzweigen des Mikroprozessors zu der Vorhersage, die der BTAC erzeugt hat, falls die Überschreibanzeige den Wert wahr aufweist.
  • Gemäß einem weiteren Aspekt stellt die Erfindung ein Computerdatensignal bereit, das in einem Übertragungsmedium verkörpert ist und computerlesbaren Programmcode umfasst, der einen Mikroprozessor bereitstellt. Der Programmcode enthält einen ersten Programmcode, der einen Rücksprungstack bereitstellt, der eine erste Vorhersage einer Zieladresse eines Rücksprungbefehls liefert. Der Programmcode enthält auch einen zweiten Programmcode, der einen Verzweigungsziel-Adresscache (BTAC) bereitstellt, der eine zweite Vorhersage der Zieladresse des Rücksprungbefehls liefert, und der eine Überschreibanzeige bereitstellt. Die Überschreibanzeige zeigt einen vorbestimmten Wert, falls die erste Vorhersage die Zieladresse für ein erstes Auftreten des Rücksprungbefehls falsch vorhergesagt hat. Der Programmcode enthält auch einen dritten Programmcode, der eine Verzweigungssteuerlogik bereitstellt, die mit dem Rücksprungstack und dem BTAC verbunden ist, und die den Mikroprozessor für ein zweites Auftreten des Rücksprungbefehls veranlasst, zur zweiten Vorhersage der Zieladresse zu verzweigen und nicht zur ersten Vorhersage, falls die Überschreibanzeige den vorbestimmten Wert zeigt.
  • Ein Vorteil der Erfindung besteht darin, dass sie möglicherweise die Genauigkeit der Verzweigungsvorhersage von Programmen verbessert, die nicht standardmäßige Aufruf-Rücksprung-Folgen einsetzen. Vorgenommene Simulationen haben eine Leistungsverbesserung bei Benchmarkwerten gezeigt, falls der Überschreibmechanismus wie in den Ausführungsformen beschrieben verwendet wird. Zusätzlich lässt sich der Vorteil mit dem Zufügen von Hardware in geringem Umfang realisieren, falls der Mikroprozessor bereits einen BTAC und einen Mechanismus zur Vorhersage einer anderen Rücksprungbefehl-Zieladresse enthält.
  • Weitere Merkmale und Vorzüge der Erfindung gehen aus den verbleibenden Abschnitten des Patents und den Zeichnungen hervor.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 zeigt ein Blockdiagramm eines Pipeline-Mikroprozessors der Erfindung.
  • 2 zeigt ein Flussdiagramm, das die Arbeitsweise des Mikroprozessors der Erfindung in 1 erläutert.
  • 3 zeigt ein Flussdiagramm, das die Arbeitsweise des Mikroprozessors der Erfindung in 1 erläutert.
  • 4 zeigt ein Flussdiagramm, das die Arbeitsweise des Mikroprozessors der Erfindung in 1 erläutert.
  • 5 zeigt ein Blockdiagramm eines Pipeline-Mikroprozessors gemäß einer anderen Ausführungsform der Erfindung.
  • 6 zeigt ein Flussdiagramm, das die Arbeitsweise des Mikroprozessors gemäß der anderen Ausführungsform der Erfindung in 5 erläutert.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Es wird nun Bezug auf 1 genommen. Sie zeigt ein Blockdiagramm eines Pipeline-Mikroprozessors 100 der Erfindung. In einer Ausführungsform enthält der Mikroprozessor 100 einen Mikroprozessor, dessen Befehlssatz im Wesentlichen mit dem Befehlssatz einer x86-Architektur übereinstimmt, und der die x86-Befehle CALL und RET enthält. Die Erfindung ist jedoch nicht auf Mikroprozessoren mit x86-Architektur eingeschränkt, sondern sie kann in jedem beliebigen Mikroprozessor eingesetzt werden, in dem ein Rücksprungstack zum Vorhersagen der Zieladressen von Rücksprungbefehlen verwendet wird.
  • Der Mikroprozessor 100 enthält einen Befehlscache 108. In dem Befehlscache 108 werden Befehlsbytes aus einem Systemspeicher zwischengespeichert, der mit dem Mikroprozessor 100 verbunden ist. Im Befehlscache 108 werden die Befehlsbytes in Cache-Lines zwischengespeichert. In einer Ausführungsform umfasst eine Cache-Line 32 Byte Befehlsbytes. Der Befehlscache 108 empfängt eine Hofadresse 132 von einem Multiplexer 106. Der Befehlscache 108 gibt eine Cache-Line von Befehlsbytes 186 aus, die durch die Hofadresse 132 bestimmt ist, falls die Hofadresse 132 in den Befehlscache 108 trifft. Die Cache-Line an Befehlsbytes 186, die durch die Hofadresse 132 spezifiziert ist, kann insbesondere eine oder mehrere Rücksprungbefehle enthalten. Die Befehlsbytes 186 werden wie dargestellt über die Pipelineregister 121 und 123 durch die Pipeline des Mikroprozessors 100 geleitet. Obwohl nur zwei Pipelineregister 121 und 123 für das Führen der Befehlsbytes 186 durch die Pipeline dargestellt sind, können andere Aus führungsformen mehr Pipelinestufen enthalten.
  • Der Mikroprozessor 100 enthält auch einen Befehlsdecodierer, der als F-Stufen-Befehlsdecodierer 114 bezeichnet wird und mit dem Ausgang des Pipelineregisters 123 verbunden ist. Der Befehlsdecodierer 114 empfängt Befehlsbytes 186 und zugehörige Information und decodiert die Befehlsbytes. In einer Ausführungsform unterstützt der Mikroprozessor 100 Befehle mit veränderlicher Länge. Der Befehlsdecodierer 114 empfängt einen Strom von Befehlsbytes und formatiert die Befehle in Einzelbefehle, indem er die Länge eines jeden Befehls bestimmt. Insbesondere erzeugt der Befehlsdecodierer 114 einen Wahr-Wert auf einem Ret-Signal 154, um anzuzeigen, dass er einen Rücksprungbefehl decodiert hat. In einer Ausführungsform enthält der Mikroprozessor 100 einen Computerkern mit eingeschränktem Befehlssatz (RISC), der Mikrobefehle ausführt. Der Befehlsdecodierer 114 übersetzt Makrobefehle, beispielsweise x86-Makrobefehle, in die Mikrobefehle des eigentlichen RISC-Befehlsatzes. Die Mikrobefehle werden wie dargestellt über die Pipelineregister 125 und 127 durch die Pipeline des Mikroprozessors 100 geführt. Obwohl nur zwei Pipelineregister 125 und 127 für das Durchreichen der Mikrobefehle dargestellt sind, können andere Ausführungsformen mehr Pipelinestufen enthalten. Die Stufen können beispielsweise eine Registerdatei, einen Adressgenerator, eine Daten-Lade/Speicher-Einheit, eine Ganzzahl-Ausführungseinheit, eine Gleitkommazahl-Ausführungseinheit, eine MXX-Ausführungseinheit, eine SSE-Ausführungseinheit und eine SSE-2-Ausführungseinheit enthalten.
  • Der Mikroprozessor 100 enthält auch eine Verzweigungsanalyselogik, die als E-Stufen-Verzweigungsanalyselogik 124 bezeichnet wird und an den Ausgang des Pipelineregisters 127 angeschlossen ist. Die Verzweigungsanalyselogik 124 empfängt Verzweigungsbefehle, zu denen auch Rücksprungbefehle gehören, während sie sich durch die Pipeline des Mikroprozessors 100 bewegen, und sie trifft eine endgültige Entscheidung über die Zieladresse aller Verzweigungsbefehle. Die Verzweigungsanalyselogik 124 liefert die korrekte Verzweigungsbefehl-Zieladresse als Eingabe an den Multiplexer 106, und zwar auf dem E-Stufen-Zieladresssignal 148. Wurde eine Zieladresse für den Verzweigungsbefehl vorhergesagt, so empfängt die Verzweigungsanalyselogik 124 zusätzlich eine vorhergesagte Zieladresse. Die Verzweigungsanalyselogik 124 vergleicht die vorhergesagte Zieladresse mit der korrekten Zieladresse 148 und stellt fest, ob die Zieladresse falsch vorhergesagt wurde, beispielsweise durch eine BTAC-Anordnung 102, einen BTAC-Rücksprungstack 104 oder einen F-Stufen-Rücksprungstack 116, die im Weiteren alle ausführlicher beschrieben werden. Wurde eine Zieladresse falsch vorhergesagt, so erzeugt die Verzweigungsanalyselogik 124 einen Wahr-Wert auf einem Fehl vorhersagesignal 158.
  • Der Mikroprozessor 100 enthält auch eine Verzweigungssteuerlogik 112, die mit dem Multiplexer 106 verbunden ist. Die Verzweigungssteuerlogik 112 erzeugt ein Multiplexer-Auswahlsignal 168, damit der Multiplexer 106 so gesteuert wird, dass er eine von mehreren Eingabeadressen zum Ausgeben einer Holadresse 132 wählt, siehe die folgende Beschreibung. Die Arbeitsweise der Verzweigungssteuerlogik 112 wird im Folgenden genauer beschrieben.
  • Der Mikroprozessor 100 enthält auch einen Addierer 182, der die Holadresse 132 erhält und die Holadresse 132 erhöht, damit die nächstfolgende Holadresse 162 als Eingabe für den Multiplexer 106 bereitsteht. Werden während eines gegebenen Taktzyklus keine Verzweigungsbefehle vorhergesagt oder ausgeführt, so steuert die Verzweigungssteuerlogik 112 den Multiplexer 106 so, dass er die nächstfolgende Holadresse 162 wählt.
  • Der Mikroprozessor 100 enthält auch eine Verzweigungsziel-Adresscacheanordnung 102 (BTAC), die so verbunden ist, dass sie die Holadresse 132 empfängt. Die BTAC-Anordnung 102 enthält eine Anzahl Speicherelemente oder Einträge, die jeweils dem Zwischenspeichern einer Verzweigungsbefehl-Zieladresse und der zugehörigen Verzweigungsvorhersageinformation dienen. Wird die Holadresse 132 in den Befehlscache 108 eingegeben, und liefert der Befehlscache 108 daraufhin die Line der Befehlsbytes 186, so liefert die BTAC-Anordnung 102 praktisch gleichzeitig eine Vorhersage, ob ein Verzweigungsbefehl in der Cache-Line 186 vorhanden ist, eine vorhergesagte Zieladresse des Verzweigungsbefehls, und eine Aussage, ob der Verzweigungsbefehl ein Rücksprungbefehl ist. Vorteilhafterweise liefert die BTAC-Anordnung 102 gemäß der Erfindung auch eine Überschreibanzeige, die angibt, ob die Zieladresse des Rücksprungbefehls von der BTAC-Anordnung 102 vorhergesagt werden soll und nicht durch einen Rücksprungstack. Dies wird im Weiteren ausführlicher erklärt.
  • Die Zieladresse 164 des Rücksprungbefehls, die die BTAC-Anordnung 102 vorhersagt, wird als Eingabe an einen zweiten Multiplexer 126 angelegt. Das Ausgangssignal des Multiplexers 126, d. h. die Zieladresse 144, wird als Eingabe an den Multiplexer 106 angelegt. Die Zieladresse 144 wird auch wie dargestellt über die Pipelineregister 111 und 113 durch die Pipeline des Mikroprozessors 100 geschoben. Das Ausgangssignal des Pipelineregisters 113 wird als Zieladresse 176 bezeichnet. Obwohl nur zwei Pipelineregister 111 und 113 für das Führen der Zieladresse 144 durch die Pipeline dargestellt sind, können andere Ausführungsformen mehr Pipelinestufen enthalten.
  • In einer Ausführungsform ist die BTAC-Anordnung 102 als assoziativer Cache mit zwei Wegen konfiguriert, der 4096 Zieladressen und die zugehörige Information speichern kann. Die Erfindung ist jedoch nicht auf eine bestimmte Ausführungsform der BTAC-Anordnung 102 eingeschränkt. In einer Ausführungsform wählen die unteren Bits der Holadresse 132 einen Satz bzw. eine Zeile in der BTAC-Anordnung 102. Für jeden Eintrag in der BTAC-Anordnung 102 wird eine Adresskennung gespeichert, die die oberen Adressbits der Adresse des Verzweigungsbefehls bezeichnet, dessen Zieladresse im zugehörigen Eintrag hinterlegt ist. Die oberen Bits der Holadresse 132 werden mit den Adresskennungen eines jeden Eintrags des gewählten Satzes verglichen. Stimmen die oberen Bits der Holadresse 132 mit einer gültigen Adresskennung im gewählten Satz überein, so tritt ein Treffer in der BTAC-Anordnung 102 auf, der anzeigt, dass die BTAC-Anordnung 102 einen Verzweigungsbefehl vorhersagt, der in der Befehls-Cache-Line 186 vorhanden ist, die die Holadresse 132 gewählt hat, und die der Befehlscache 108 im Wesentlichen gleichzeitig mit der Zieladressvorhersage 164 ausgibt.
  • Jeder Eintrag in der BTAC-Anordnung 102 speichert auch eine Angabe über die Art des Verzweigungsbefehls, der in der Befehls-Cache-Line 186 vorhanden ist, den die Holadresse 132 festlegt. D. h., die BTAC-Anordnung 102 speichert auch den Typ des Verzweigungsbefehls, dessen vorhergesagte Zieladresse 164 die BTAC-Anordnung 102 an den Multiplexer 126 anlegt. Ist im Einzelnen der Verzweigungsbefehlstyp ein Rücksprungbefehl, so erzeugt die BTAC-Anordnung 102 einen Wahr-Wert auf einem Ret-Signal 138, das der Verzweigungssteuerlogik 112 geliefert wird. Zusätzlich gibt die BTAC-Anordnung 102 ein Überschreibsignal 136 aus, das im Weiteren genauer erklärt wird, und das ebenfalls an die Verzweigungssteuerlogik 112 geliefert wird. In einer Ausführungsform umfasst das Verzweigungsbefehl-Typfeld, das in jedem Eintrag der BTAC-Anordnung 102 abgelegt ist, 2 Bit, die wie in Tabelle 1 dargestellt codiert sind.
    00 kein RET oder CALL
    01 CALL
    10 normales RET
    11 Überschreib-RET
    Tabelle 1
  • In einer Ausführungsform wird das höchstwertige Bit des Verzweigungstypfelds auf dem Ret-Signal 138 geliefert. Das geringstwertige Bit des Überschreibsignals wird auf einem Überschreibsignal 136 geliefert. Im Fall eines CALL-Befehls wird das Überschreibsignal 136 nicht verwendet. Wie man sehen kann, wird zum Unterbringen des Überschreibbits kein zusätzlicher Speicherplatz benötigt, da das Typfeld bereits zwei Bit umfasst und nur drei der vier möglichen Zustände verwendet wurden. Das Überschreibsignal 136 wird wie dargestellt über die Pipelineregister 101, 103, 105 und 107 durch die Pipeline des Mikroprozessors 100 geführt. Im Einzelnen wird das Ausgangssignal des Pipelineregisters 103, das als Überschreib_F-Signal 172 bezeichnet ist, an die Verzweigungssteuerlogik 112 geführt. Zusätzlich wird das Ausgangssignal des Pipelineregisters 107 als Überschreib_E-Signal 174 bezeichnet. Obwohl nur vier Pipelineregister 101, 103, 105 und 107 zum Führen des Überschreibsignals 136 durch die Pipeline dargestellt sind, können weitere Ausführungsformen mehr Pipelinestufen enthalten.
  • Erkennt in einer Ausführungsform die Verzweigungsanalyselogik 124 einen neuen Aufrufbefehl, so wird die Zieladresse des Aufrufbefehls in der BTAC-Anordnung 102 abgespeichert, und zwar zusammen mit einem Typfeldwert, der einen CALL-Befehl bezeichnet. Erkennt die Verzweigungsanalyselogik 124 einen neuen Rücksprungbefehl, so wird in ähnlicher Weise die Zieladresse des Rücksprungbefehls in der BTAC-Anordnung 102 abgespeichert, und zwar zusammen mit einem Typfeldwert, der einen normalen Rücksprungbefehl bezeichnet.
  • Der Mikroprozessor 100 enthält auch einen Rücksprungstack 104, der als BTAC-Rücksprungstack 104 bezeichnet wird und so angeschlossen ist, dass er das Ret-Signal 138 von der BTAC-Anordnung 102 empfängt. Der BTAC-Rücksprungstack 104 speichert die Rücksprungadressen, die von den Aufrufbefehlen spezifiziert werden, in einer Last-In-First-Out-Organisation im Cache. Erkennt in einer Ausführungsform die Verzweigungsanalyselogik 124 einen neuen Aufrufbefehl, so wird die von dem Aufrufbefehl spezifizierte Zieladresse oben auf dem BTAC-Rücksprungstack 104 abgelegt. Zeigt die BTAC-Anordnung 102 über das Ret-Signal 138 an, dass in der Cache-Line 186, die durch die Holadresse 132 bestimmt ist, ein Rücksprungbefehl vorhanden ist, so wird die Rücksprungadresse oben auf dem BTAC-Rücksprungstack 104 geholt und als Zieladresse 142 an den Multiplexer 126 geliefert. Die Verzweigungssteuerlogik 112 steuert den Multiplexer 126 über ein Steuersignal 184 so, dass er die vom BTAC-Rücksprungstack 104 vorhergesagte Zieladresse 142 wählt, wenn das Ret-Signal 138 wahr und das Überschreibsignal 136 falsch ist. Sonst steuert die Verzweigungssteuerlogik 112 den Multiplexer 126 über das Steuersignal 184 derart, dass er die Zieladresse 164 wählt, die die BTAC-Anordnung 102 vorhersagt.
  • Der Mikroprozessor 100 enthält auch einen zweiten Rücksprungstack 116, der als F-Stufen-Rücksprungstack 116 bezeichnet wird und so verschaltet ist, dass er das Ret-Signal 154 vom Befehlsdecodierer 114 erhält. Der F-Stufen-Rücksprungstack 116 speichert durch Call-Befehle festgelegte Rücksprungadressen in Last-In-First-Out-Organisation im Cache. Erkennt in einer Ausführungsform die Verzweigungsanalyselogik 124 einen neuen Aufrufbefehl, so wird die von dem Aufrufbefehl spezifizierte Zieladresse oben auf dem F-Stufen-Rücksprungstack 116 abgelegt. Zeigt der Befehlsdecodierer 114 über das Ret-Signal 154 an, dass ein Rücksprungbefehl decodiert wird, so wird die Rücksprungadresse oben auf dem F-Stufen-Rücksprungstack 116 geholt und dem Multiplexer 106 als Zieladresse 146 geliefert.
  • Der Mikroprozessor 100 enthält auch einen Komparator 118. Der Komparator 118 vergleicht die Zieladresse 146 des F-Stufen-Rücksprungstacks 116 und die durch die Pipeline geführte Zieladresse 176. Der Komparator 118 erzeugt einen Wahr-Wert auf einem Nichtübereinstimmungssignal 152, das an die Verzweigungssteuerlogik 112 geliefert wird, falls die Zieladresse 146 des F-Stufen-Rücksprungstacks 116 und die durch die Pipeline geführte Zieladresse 176 nicht übereinstimmen. Die Verzweigungssteuerlogik 112 steuert den Multiplexer 106 über das Steuersignal 168 so, dass die Zieladresse 146 des F-Stufen-Rücksprungstacks 116 gewählt wird, falls das Ret-Signal 154 wahr ist, das Überschreib_F-Signal 172 falsch ist und das Nichtübereinstimmungssignal 152 wahr ist. Andernfalls steuert die Verzweigungssteuerlogik 112 den Multiplexer 106 über das Steuersignal 168 so, dass einer seiner anderen Eingänge gewählt wird.
  • Der Mikroprozessor 100 enthält auch eine BTAC-Aktualisierungslogik 122, die mit der Verzweigungsanalyselogik 124 und der BTAC-Anordnung 102 verbunden ist. Die BTAC-Aktualisierungslogik 122 empfängt ein Fehlvorhersagesignal 158 von der Verzweigungsanalyselogik 124. Die BTAC-Aktualisierungslogik 122 empfängt das Überschreib_E-Signal 174 vom Pipelineregister 107. Die BTAC-Aktualisierungslogik 122 erzeugt ein BTAC-Aktualisierungs-Anforderungssignal 134, das an die BTAC-Anordnung 102 geliefert wird. Das BTAC-Aktualisierungs-Anforderungssignal 134 enthält Information zum Aktualisieren eines Eintrags in der BTAC-Anordnung 102. In einer Ausführungsform enthält das BTAC-Aktualisierungs-Anforderungssignal 134 eine Zieladresse eines Verzweigungsbefehls, die Adresse des Verzweigungsbefehls und einen Wert für das Typfeld.
  • Erkennt die Verzweigungsanalyselogik 124 einen neuen Verzweigungsbefehl, so erzeugt die BTAC-Aktualisierungslogik 122 eine BTAC-Aktualisierungs-Anforderung 134, damit die BTAC-Anordnung 102 mit der Information zum Vorhersagen der Zieladresse und des Typs des neuen Verzweigungsbefehls aktualisiert wird, und zwar bei einem nachfolgenden Auftreten oder Vorkommen des Verzweigungsbefehls in einer Befehls-Cache-Line, die die Holadresse 132 festlegt. Ist das Fehlvorhersagesignal 158 wahr, so erzeugt die BTAC-Aktualisierungslogik 122 zusätzlich eine BTAC-Aktualisierungs-Anforderung 134 zum Aktualisieren des Eintrags in der BTAC-Anordnung 102, der zum Verzweigungsbefehl gehört. Ist im Einzelnen der Verzweigungsbefehl ein Rücksprungbefehl, den der BTAC-Rücksprungstack 104 oder der F-Stufen-Rücksprungstack 116 falsch vorhergesagt hat, so weist die BTAC-Aktualisierungslogik 122 dem Überschreibbit im Eintrag in der BTAC-Anordnung 102 einen vorbestimmten Wert zu, um anzuzeigen, dass die Vorhersage 142 des BTAC-Rücksprungstacks 104 und die Vorhersage 146 des F-Stufen-Rücksprungstacks 116 mit der Vorhersage 164 der BTAC-Anordnung 102 überschrieben werden sollen, und zwar beim nächsten Auftreten oder Vorkommen des Rücksprungbefehls. In einer Ausführungsform wird das Typfeld wie in Tabelle 1 oben angegeben auf einen Überschreib-RET-Wert bzw. 11 gesetzt. Ist im Gegensatz dazu der Verzweigungsbefehl ein Rücksprungbefehl, der von der BTAC-Anordnung 102 falsch vorhergesagt wurde, weil das Überschreibbit gesetzt war, so weist die BTAC-Aktualisierungslogik 122 dem Überschreibbit im Eintrag der BTAC-Anordnung 102 einen vorbestimmten Wert zu, um anzuzeigen, dass beim nächsten Auftreten oder Vorkommen des Rücksprungbefehls die Vorhersage 142 des BTAC-Rücksprungstacks 104 und wenn nötig die Vorhersage 146 des F-Stufen-Rücksprungstacks 116 gewählt werden sollte und nicht die Vorhersage 164 der BTAC-Anordnung 102. In einer Ausführungsform wird wie in Tabelle 1 oben angegeben das Typfeld auf einen normalen Ret-Wert bzw. 10 gesetzt. Die Arbeitsweise des Mikroprozessors 100 wird nun ausführlicher anhand von 2 bis 4 beschrieben.
  • Es wird nun Bezug auf 2 genommen. Sie zeigt ein Flussdiagramm, das die Arbeitsweise des Mikroprozessors 100 der Erfindung in 1 erläutert. 2 beschreibt die Arbeitsweise des Mikroprozessors 100 für den Fall, dass ein Rücksprungbefehl von der BTAC-Anordnung 102 und dem BTAC-Rücksprungstack 104 in 1 vorhergesagt wird. Der Ablauf beginnt im Block 202.
  • Im Block 202 wird die Holadresse 132 aus 1 parallel an den Befehlscache 108 in 1 und die BTAC-Anordnung 102 angelegt. Daraufhin liefert der Befehlscache 108 die Cache-Line aus Befehlsbytes 186 in 1 an die Pipeline des Mikroprozessors 100, und zwar als Antwort auf die Holadresse 132. Der Ablauf geht zum Block 204 über.
  • Im Block 204 sagt die BTAC-Anordnung 102 ausgehend von der Holadresse 132 über das Ret-Signal 138 vorher, dass in der Befehls-Cache-Line 186, die der Befehlscache 108 an die Pipeline des Mikroprozessors 100 geliefert hat, ein Rücksprungbefehl vorhanden ist. Die BTAC-Anordnung 102 liefert eine Zieladresse 164 an den Multiplexer 126. Der Ablauf geht zum Entscheidungsblock 206 über.
  • Im Entscheidungsblock 206 stellt die Verzweigungssteuerlogik 112 fest, ob die Überschreibanzeige 136 gesetzt ist. Trifft dies zu, so geht der Ablauf zum Block 212; andernfalls geht der Ablauf zum Block 208.
  • Im Block 208 steuert die Verzweigungssteuerlogik 112 den Multiplexer 126 und den Multiplexer 106 so, dass die Zieladresse 142 des BTAC-Rücksprungstacks als Holadresse 132 gewählt wird, damit der Mikroprozessor 100 dorthin verzweigt. Der Ablauf endet im Block 208.
  • Im Block 212 steuert die Verzweigungssteuerlogik 112 den Multiplexer 126 und den Multiplexer 106 so, dass die Zieladresse 164 der BTAC-Anordnung als Holadresse 132 gewählt wird, damit der Mikroprozessor 100 dorthin verzweigt. Der Ablauf endet im Block 212.
  • 2 kann man entnehmen, dass bei gesetzter Überschreibanzeige 136, beispielsweise während eines vorhergehenden Auftretens des Rücksprungbefehls, das im Weiteren anhand von Block 408 beschrieben wird, die Verzweigungssteuerlogik 112 vorteilhafterweise den BTAC-Rücksprungstack 104 überschreibt und wahlweise die Zieladresse 164 wählt, die die BTAC-Anordnung 102 vorhersagt. Dadurch wird eine nahezu gewisse Fehlvorhersage durch den BTAC-Rücksprungstack 104 vermieden, falls das laufende Programm eine nicht standardmäßige Aufruf-Rücksprung-Folge ausführt.
  • Es wird nun Bezug auf 3 genommen. Sie zeigt ein Flussdiagramm, das die Arbeitsweise des Mikroprozessors 100 der Erfindung in 1 erläutert. 3 beschreibt die Arbeitsweise des Mikroprozessors 100 für den Fall, dass ein Rücksprungbefehl vorhergesagt wird, beispielsweise der in 2 vorhergesagte Rücksprungbefehl, und zwar durch den F-Stufen-Rücksprungstack 116 in 1. Der Ablauf beginnt im Block 302.
  • Im Block 302 decodiert der F-Stufen-Befehlsdecodierer 114 in 1 den Rücksprungbefehl, der in der Befehls-Cache-Line 186 vorhanden war, den der Befehlscache 108 aufgrund der Holadresse 132 ausgegeben hat, die im Block 202 in 2 an die BTAC-Anordnung 102 angelegt wurde, und die nachfolgend von der BTAC-Anordnung 102 und dem BTAC-Rücksprungstack 104 wie in 2 beschrieben vorhergesagt wurde. Da der F-Stufen-Befehlsdecodierer 114 über das Ret-Signal 154 anzeigt, dass ein Rücksprungbefehl decodiert wurde, liefert der F-Stufen-Rücksprungstack 116 seine vorhergesagte Zieladresse 146 an den Multiplexer 106. Der Ablauf geht zum Block 304 über.
  • Im Block 304 vergleicht der Komparator 118 in 1 die vom F-Stufen-Rücksprungstack vorhergesagte Zieladresse 146 mit der Zieladresse 176 in 1. Der Komparator 118 erzeugt einen Wahr-Wert auf dem Nichtübereinstimmungssignal 152 in 1, falls die Adressen 146 und 176 nicht übereinstimmen. Der Ablauf geht zum Entscheidungsblock 306 über.
  • Im Entscheidungsblock 306 untersucht die Verzweigungssteuerlogik 112 das Nichtübereinstimmungssignal 152, um festzustellen, ob eine Nichtübereinstimmung vorliegt. Trifft dies zu, so geht der Ablauf zum Entscheidungsblock 308 über. Andernfalls endet der Ablauf.
  • Im Entscheidungsblock 308 untersucht die Verzweigungssteuerlogik 112 das Überschreib_F-Signal 172 in 1, um festzustellen, ob das Überschreib_F-Bit 172 gesetzt ist. Trifft dies zu, so endet der Ablauf, d. h., die Verzweigung zur Zieladresse 164 der BTAC-Anordnung, die im Block 212 in 2 erfolgt, wird von der vorhergesagten Zieladresse 146 des F-Stufen-Rücksprungstacks nicht überlagert. Ist das Überschreib_F-Bit 172 gelöscht, so geht der Ablauf zum Block 312 über.
  • Im Block 312 steuert die Verzweigungssteuerlogik 112 den Multiplexer 106 so, dass er die vom F-Stufen-Rücksprungstack vorhergesagte Zieladresse 146 wählt, damit der Mikroprozessor 100 dorthin verzweigt. In einer Ausführungsform entfernt der Mikroprozessor 100 die Befehle in den Stufen über der F-Stufe, bevor er zur vom F-Stufen-Rücksprungstack vorhergesagten Zieladresse 146 verzweigt. Der Ablauf endet im Block 312.
  • 3 kann man entnehmen, dass bei gesetzter Überschreib_F-Anzeige 172, beispielsweise während eines vorhergehenden Auftretens des Rücksprungbefehls, das im Weiteren anhand von Block 408 beschrieben wird, die Verzweigungssteuerlogik 112 vorteilhafterweise den F-Stufen-Rücksprungstack 116 überschreibt und statt dessen die von der BTAC-Anordnung 102 vorhergesagte Zieladresse 164 beibehält. Dadurch wird eine nahezu gewisse Fehlvorhersage durch den F-Stufen-Rücksprungstack 116 vermieden, falls das laufende Programm eine nicht standardmäßige Aufruf-Rücksprung-Folge aus führt.
  • Es wird nun Bezug auf 4 genommen. Sie zeigt ein Flussdiagramm, das die Arbeitsweise des Mikroprozessors 100 der Erfindung in 1 erläutert. 4 beschreibt die Arbeitsweise des Mikroprozessors 100 für den Fall, dass ein Rücksprungbefehl erkannt wird, beispielsweise ein vorhergehendes Auftreten des Rücksprungbefehls, der in 2 und 3 vorhergesagt und decodiert wurde. Der Ablauf beginnt im Block 402.
  • Im Block 402 erkennt die E-Stufen-Verzweigungsanalyselogik 124 in 1 einen Rücksprungbefehl. D. h., die Verzweigungsanalyselogik 124 stellt schließlich die korrekte Zieladresse 148 des Rücksprungbefehls in 1 fest. Insbesondere erzeugt die Verzweigungsanalyselogik 124 einen Wahr-Wert auf dem Fehlvorhersagesignal 158 in 1, falls der Mikroprozessor 100 veranlasst wurde, zu einer falschen Zieladresse des Rücksprungbefehls zu verzweigen. Der Ablauf geht zum Entscheidungsblock 404 über.
  • Im Entscheidungsblock 404 untersucht die BTAC-Aktualisierungslogik 122 das Fehlvorhersagesignal 158, um festzustellen, ob die Zieladresse des Rücksprungbefehls falsch vorhergesagt wurde. Trifft dies zu, so geht der Ablauf zum Entscheidungsblock 406 über. Andernfalls endet der Ablauf.
  • Im Entscheidungsblock 406 untersucht die BTAC-Aktualisierungslogik 122 das Überschreib_E-Signal 174, um festzustellen, ob das Überschreib_E-Bit 174 gesetzt ist. Trifft dies zu, so geht der Ablauf zum Block 408. Andernfalls geht der Ablauf zum Block 412.
  • Im Block 408 erzeugt die BTAC-Aktualisierungslogik 122 eine BTAC-Aktualisierungs-Anforderung 134 zum Löschen des Überschreibbits für den Eintrag, das den Rücksprungbefehl falsch vorhergesagt hat. Die Erfinder haben festgestellt, dass ein gegebener Rücksprungbefehl über mehrere Programmwege erreicht werden kann. D. h., dass manchmal ein Rücksprung über einen nicht standardmäßigen Codeweg erreicht wird, beispielsweise einen der oben beschriebenen Codewege, die stets dazu führen, dass ein Rücksprungstack die Zieladresse des Rücksprungbefehls falsch vorhersagt. Der gleiche Rücksprungbefehl kann jedoch auch auf einem Codeweg erreicht werden, der eine standardmäßige Aufruf-Rücksprung-Paarfolge erzeugt. In letzterem Fall sagen Rücksprungstacks die Zieladresse eines Rücksprungbefehls generell genauer vorher. Tritt also bei gesetztem Überschreibbit eine Fehlvorhersage auf, so löscht die BTAC-Aktualisierungslogik 122 das Überschreibbit im Block 408, da angenommen wird, dass die standardmäßige Aufruf-Rücksprung-Paarfolge vorherrscht. Der Ablauf geht zum Block 414.
  • Im Block 412 erzeugt die BTAC-Aktualisierungslogik 122 eine BTAC-Aktualisierungs-Anforderung 134, damit das Überschreibbit in dem passenden Eintrag in der BTAC-Anordnung 102 gesetzt wird, da der F-Stufen-Rücksprungstack 116 die Zieladresse des Rücksprungbefehls falsch vorhergesagt hat. Durch das Setzen des Überschreibbits im BTAC 102 für den Eintrag, der die Vorhersage für den Rücksprungbefehl speichert, löst die Erfindung vorteilhaft das Problem, das durch eine nicht standardmäßige Aufruf-Rücksprung-Folge erzeugt wird. D. h., es wird zur Zieladresse 164 der BTAC-Anordnung verzweigt und nicht zur Zieladresse 142 des BTAC-Rücksprungstacks oder zur vom F-Stufen-Rücksprungstack vorhergesagten Zieladresse 146, die die Zieladresse des Rücksprungbefehls falsch vorhersagen würden. Der Ablauf geht zum Block 414 über.
  • Im Block 414 entleert der Mikroprozessor 100 seine Pipeline, da die fehlerhaft vorhergesagte Zieladresse des Rücksprungbefehls bewirkt hat, dass falsche Befehle aus dem Befehlscache 108 in die Pipeline des Mikroprozessors 100 geholt wurden. Diese Befehle dürfen also nicht ausgeführt werden. Nachfolgend steuert die Verzweigungssteuerlogik 112 den Multiplexer 106 derart, dass er die E-Stufen-Zieladresse 146 wählt, damit der Mikroprozessor 100 dorthin verzweigt und die Befehle am korrekten Ziel holt. Der Ablauf endet im Block 414.
  • In einer Ausführungsform aktualisiert der Block 412 das Typfeld des Eintrags in der BTAC-Anordnung 102 mit einem binären Wert 11, und der Block 408 aktualisiert das Typfeld des Eintrags in der BTAC-Anordnung 102 mit einem binären Wert 10 gemäß der obigen Tabelle 1.
  • 2 bis 4 kann man entnehmen, dass die Überschreibanzeige die Vorhersagegenauigkeit für einen Rücksprungbefehl potentiell verbessert. Erfasst der Mikroprozessor, dass ein Rücksprungbefehl möglicherweise als Teil einer nicht standardmäßigen Aufruf-Rücksprung-Folge ausgeführt worden ist, weil der Rücksprungstack die Zieladresse des Rücksprungbefehls falsch vorhergesagt hat, so setzt der Mikroprozessor die Überschreibanzeige, die dem Rücksprungbefehl im BTAC zugeordnet ist, und beim nächsten Auftreten des Rücksprungbefehls verwendet der Mikroprozessor einen anderen Vorhersagemechanismus als den Rücksprungstack zum Vorhersagen der Zieladresse des Rücksprungbefehls, da der Mikroprozessor der Überschreibanzeige entnimmt, dass der Rücksprungstack wahrscheinlich die Zieladresse für das aktuelle Auftreten des Rücksprungbe fehls falsch vorhersagt. Stellt im Gegensatz dazu der Mikroprozessor, obwohl ein Rücksprungbefehl vorher möglicherweise als Teil einer nicht standardmäßigen Aufruf-Rücksprung-Folge ausgeführt worden ist, fest, dass der nachfolgende Rücksprungbefehl wohl als Teil einer standardmäßigen Aufruf-Rücksprung-Folge ausgeführt worden ist, weil die BTAC-Anordnung die Zieladresse des Rücksprungbefehls falsch vorhergesagt hat, so löscht der Mikroprozessor die Überschreibanzeige, die dem Rücksprungbefehl im BTAC zugeordnet ist. Beim nächsten Auftreten des Rücksprungbefehls verwendet der Mikroprozessor den Rücksprungstack zum Vorhersagen der Zieladresse des Rücksprungbefehls, da der Mikroprozessor der Überschreibanzeige entnimmt, dass der Rücksprungstack die Zieladresse für das aktuelle Auftreten des Rücksprungbefehls vermutlich korrekt vorhersagt.
  • Es wird nun Bezug auf 5 genommen. Sie zeigt ein Blockdiagramm eines Pipeline-Mikroprozessors 500 gemäß einer alternativen Ausführungsform der Erfindung. Der Mikroprozessor 500 in 5 gleicht dem Mikroprozessor 100 in 1; er enthält jedoch keinen BTAC-Rücksprungstack 104 oder Multiplexer 126. Folglich wird die vorhergesagte Zieladresse 164, die die BTAC-Anordnung 102 ausgibt, direkt an den Multiplexer 106 angelegt und nicht über den Multiplexer 126. Zusätzlich wird die Zieladresse 164 der BTAC-Anordnung 102 anstelle der Zieladresse 144 in 1 als Eingabe an das Pipelineregister 111 geliefert und als Zieladresse 176 durch die Pipeline geführt.
  • Es wird nun Bezug auf 6 genommen. Sie zeigt ein Flussdiagramm, das die Arbeitsweise des Mikroprozessors 500 in 5 gemäß einer anderen Ausführungsform der Erfindung erläutert. 6 gleicht 2, der Entscheidungsblock 206 und der Block 208 sind jedoch nicht vorhanden. Damit geht der Ablauf vom Block 204 zum Block 212 über. Sagt die BTAC-Anordnung 102 einen Rücksprungbefehl über das Ret-Signal 138 vorher, so betätigt die Verzweigungssteuerlogik 112 demnach den Mikroprozessor 500 stets so, dass dieser zur Zieladresse 164 verzweigt, die die BTAC-Anordnung 102 vorhergesagt hat, da der BTAC-Rücksprungstack 104 und der Multiplexer 126 des Mikroprozessors 100 in 1 im Mikroprozessor 500 in 5 nicht vorhanden sind.
  • Der Mikroprozessor 500 in 5 arbeitet ebenfalls gemäß den Flussdiagrammen in 3 und 4. Da der BTAC-Rücksprungstack 104 im Mikroprozessor 500 nicht vorhanden ist, beachte man, dass die durch die Pipeline geführte Zieladresse 176 stets die Zieladresse 164 der BTAC-Anordnung 102 ist. Damit ist der im Block 304 vorgenommene Vergleich zwischen der Zieladresse 146 des F-Stufen-Rücksprungstacks 116 und der Zieladresse 176 stets ein Vergleich mit der durch die Pipeline geführten Zieladresse 164 der BTAC-Anordnung 102.
  • Obwohl die Erfindung und ihre Aufgaben, Merkmale und Vorteile ausführlich beschrieben sind, schließt die Erfindung weitere Ausführungsformen ein. Es sind beispielsweise Ausführungsformen beschrieben, in denen der Mikroprozessor zwei Rücksprungstacks aufweist. Der Mikroprozessor kann jedoch eine andere Anzahl von Rücksprungstacks besitzen, beispielsweise nur einen einzigen Rücksprungstack oder mehr als zwei Rücksprungstacks. Obwohl Ausführungsformen beschrieben sind, in denen der BTAC der andere Zieladressen-Vorhersagemechanismus zum Überschreiben des Rücksprungstacks ist, und zwar zusätzlich zum Speichern des Überschreibbits, das dem Rücksprungbefehl zugeordnet ist, den der Rücksprungstack falsch vorhergesagt hat, können andere alternative Zieladressen-Vorhersagemechanismen eingesetzt werden, beispielsweise ein Verzweigungszielpuffer.
  • Obwohl die Erfindung und ihre Aufgaben, Merkmale und Vorteile ausführlich beschrieben sind, schließt die Erfindung weitere Ausführungsformen ein. Zusätzlich zu Implementierungen der Erfindung mit Hilfe von Hardware kann die Erfindung in computerlesbarem Code (z. B. computerlesbarem Programmcode, Daten usw.) implementiert werden, der in einem computernutzbarem (z. B. lesbaren) Medium verkörpert ist. Der Computercode bewirkt das Ermöglichen der offenbarten Funktionen der Erfindung oder deren Herstellung oder beides. Man kann dies beispielsweise durch den Gebrauch allgemeiner Programmiersprachen erreichen (z. B. C, C++, JAVA usw.), durch GDSII-Datenbanken, durch Hardware-Beschreibungssprachen (HDL), zu denen Verilog HDL, VHDL, Alters HDL (AHDL) usw. gehören, oder weitere Programmier- und/oder (schematische) Schaltungserfassungswerkzeuge, die verfügbar sind. Man kann den Computercode in jedem beliebigen bekannten computernutzbaren (z. B. lesbaren) Medium ablegen, zu denen Halbleiterspeicher, magnetische Disks, optische Disks (z. B. CD-ROM, DVD-ROM usw.) gehören, und als Computerdatensignal, das in einem computernutzbaren (z. B. lesbaren) Übertragungsmedium (z. B. Trägerwellen oder irgendein anderes Medium, zu denen digitale, optische oder analoge Medien gehören) verkörpert ist. In dieser Form kann der Computercode über Kommunikationsnetze übertragen werden, zu den Internets und Intranets gehören. Natürlich kann die Erfindung als Computercode ausgeführt werden (z. B. als Teil eines IP-Kerns (IP = Intellectual Property, geistiges Eigentum), etwa eines Mikroprozessorkerns, oder als Entwurf auf Systemebene, beispielsweise als System an Chip (SOC)) und als Teil der Herstellung integrierter Schaltungen in Hardware transformiert werden. Die Erfindung kann auch als Kombination von Hardware und Computercode ausgeführt werden.
  • Schließlich sollten Fachleute zur Kenntnis nehmen, dass sie die offenbarte Konzeption und die besonderen Ausführungsformen leicht als Grundlage für den Entwurf oder für das Modifizieren anderer Strukturen verwenden können und damit die gleichen Zwecke der Erfindung erfüllen, ohne den Bereich der Erfindung zu verlassen, der durch die beigefügten Ansprüche bestimmt ist.

Claims (36)

  1. Mikroprozessor (100; 500), umfassend: einen Rücksprungstack (104; 116), geeignet zum Liefern einer ersten Vorhersage einer Zieladresse eines Rücksprungbefehls; gekennzeichnet durch: einen Verzweigungsziel-Adresscache, BTAC (102), der eine zweite Vorhersage der Zieladresse des Rücksprungbefehls liefert, und der eine Überschreibanzeige liefert, wobei die Überschreibanzeige einen vorbestimmten Wert zeigt, falls die erste Vorhersage die Zieladresse für einen ersten Fall des Rücksprungbefehls falsch vorhergesagt hat; und eine Verzweigungssteuerlogik (112), die mit dem Rücksprungstack und dem BTAC (102) verbunden ist und den Mikroprozessor (100; 500) für einen zweiten Fall des Rücksprungbefehls dazu veranlasst, zu der zweiten Vorhersage der Zieladresse zu verzweigen und nicht zu der ersten Vorhersage, falls die Überschreibanzeige den vorbestimmten Wert angibt.
  2. Mikroprozessor (100; 500) nach Anspruch 1, wobei der zweite Fall nach dem ersten Fall folgt.
  3. Mikroprozessor (100; 500) nach Anspruch 1, zudem umfassend: eine Aktualisierungslogik (122), die mit dem BTAC (102) verbunden ist und die Überschreibanzeige auf den vorbestimmten Wert aktualisiert, falls die erste Vorhersage die Zieladresse für den ersten Fall des Rücksprungbefehls falsch vorhergesagt hat.
  4. Mikroprozessor (100; 500) nach Anspruch 3, wobei die Aktualisierungslogik (122) die Überschreibanzeige auf einen zweiten vorbestimmten Wert aktualisiert, falls die zweite Vorhersage die Zieladresse für einen dritten Fall des Rücksprungbefehls falsch vorhergesagt hat, und sich der zweite vorbestimmte Wert von dem vorbestimmten Wert unterscheidet.
  5. Mikroprozessor (100; 500) nach Anspruch 4, wobei die Verzweigungssteuerlogik (112) den Mikroprozessor (100; 500) veranlasst, für einen vierten Fall des Rücksprungbefehls zu der ersten Vorhersage der Zieladresse zu verzweigen, falls die Überschreibanzeige den zweiten vorbestimmten Wert zeigt.
  6. Mikroprozessor (100; 500) nach Anspruch 5, zudem umfassend einen Komparator (118), der mit der Verzweigungssteuerlogik (112) verbunden ist und die erste Vorhersage und die zweite Vorhersage vergleicht, wobei, wenn die Überschreibanzeige den zweiten vorbestimmten Wert zeigt, die Verzweigungssteuerlogik (112) den Mikroprozessor (100; 500) veranlasst, zur ersten Vorhersage der Zieladresse nur dann zu verzweigen, falls der Komparator anzeigt, dass die erste Vorhersage und die zweite Vorhersage nicht übereinstimmen.
  7. Mikroprozessor (100; 500) nach Anspruch 4, wobei der dritte Fall des Rücksprungbefehls nach dem zweiten Fall folgt.
  8. Mikroprozessor (100; 500) nach Anspruch 4, wobei der dritte Fall des Rücksprungbefehls der zweite Fall ist.
  9. Mikroprozessor (100; 500) nach Anspruch 1, wobei der Rücksprungstack die erste Vorhersage liefert, nachdem der BTAC die zweite Vorhersage geliefert hat.
  10. Mikroprozessor (100; 500) nach Anspruch 1, zudem umfassend: eine Befehlsdecodierlogik (114), die mit der Verzweigungssteuerlogik (112) verbunden ist und den Rücksprungbefehl decodiert, wobei der Rücksprungstack (116) die erste Vorhersage abhängig davon liefert, dass die Befehlsdecodierlogik den Rücksprungbefehl decodiert.
  11. Mikroprozessor (100; 500) nach Anspruch 10, wobei der Rücksprungstack (116) die erste Vorhersage der Zieladresse abhängig davon speichert, dass die Befehlsdecodierlogik (114) einen Call-Befehl decodiert.
  12. Mikroprozessor (100; 500) nach Anspruch 1, wobei der Rücksprungstack (104) die erste Vorhersage im Wesentlichen gleichzeitig damit liefert, dass der BTAC (102) die zweite Vorhersage liefert.
  13. Mikroprozessor (100; 500) nach Anspruch 1, wobei der BTAC (102) zudem so konfiguriert ist, dass er eine Anzeige liefert, die angibt, dass der Rücksprungbefehl in einer Cache-Line aus Befehlsbytes vorhanden ist, die ein Befehlscache liefert.
  14. Mikroprozessor (100; 500) nach Anspruch 13, wobei der Rücksprungstack (104) die erste Vorhersage abhängig davon liefert, dass der BTAC (102) die Anzeige liefert, die angibt, dass der Rücksprungbefehl in der Cache-Line vorhanden ist.
  15. Mikroprozessor (100; 500) nach Anspruch 13, wobei der BTAC (102) die Anzeige liefert, dass der Rücksprungbefehl in der Cache-Line vorhanden ist, wenn eine Befehlsholadresse die Cache-Line in dem Befehlscache festlegt.
  16. Mikroprozessor (100; 500) nach Anspruch 1, wobei der Rücksprungstack (116) die erste Vorhersage der Zieladresse abhängig davon speichert, dass der BTAC (102) eine Anzeige liefert, die angibt, dass ein Call-Befehl in einer Befehls-Cache-Line vorhanden ist.
  17. Mikroprozessor (100; 500) nach Anspruch 1, zudem umfassend einen zweiten Rücksprungstack (104; 116), der mit der Verzweigungssteuerlogik (112) verbunden ist und eine dritte Vorhersage der Zieladresse des Rücksprungbefehls liefert.
  18. Mikroprozessor (100; 500) nach Anspruch 17, wobei die Verzweigungssteuerlogik (112) den Mikroprozessor veranlasst, für den zweiten Fall des Rücksprungbefehls zur zweiten Vorhersage der Zieladresse zu verzweigen, jedoch nicht zur ersten Vorhersage und nicht zur dritten Vorhersage, falls die Überschreibanzeige den vorbestimmten Wert zeigt.
  19. Mikroprozessor (100; 500) nach Anspruch 18, wobei die Verzweigungssteuerlogik (112) den Mikroprozessor veranlasst, für den zweiten Fall des Rücksprungbefehls zur dritten Vorhersage der Zieladresse zu verzweigen, falls die Überschreibanzeige einen anderen als den vorbestimmten Wert anzeigt.
  20. Mikroprozessor (100; 500) nach Anspruch 19, zudem umfassend einen Komparator, der mit der Verzweigungssteuerlogik verbunden ist und die erste Vorhersage mit der dritten Vorhersage vergleicht.
  21. Mikroprozessor (100; 500) nach Anspruch 20, worin, wenn der Komparator anzeigt, dass die erste und die dritte Vorhersage nicht übereinstimmen, und wenn die Überschreibanzeige einen anderen als den vorbestimmten Wert anzeigt, die Verzweigungssteuerlogik den Mikroprozessor veranlasst, nach dem Verzweigen zur dritten Vorhersage zur ersten Vorhersage zu verzweigen.
  22. Mikroprozessor (100; 500) nach Anspruch 1, worin die Verzweigungssteuerlogik (112) einen Multiplexer umfasst, der entweder die erste Vorhersage oder die zweite Vorhersage auswählt und sie an einen Befehlscache als Holadresse liefert, damit der Mikroprozessor zu der Vorhersage verzweigt, die aus der ersten Vorhersage und der zweiten Vorhersage ausgewählt wurde.
  23. Mikroprozessor nach Anspruch 1, worin der BTAC zahlreiche Überschreibanzeigen für zahlreiche Rücksprungbefehle speichert, und falls einer der zahlreichen Rücksprungbefehle der Rücksprungbefehl ist, der BTAC eine der zahlreichen Überschreibanzeigen für den Rücksprungbefehl als Überschreibanzeige liefert.
  24. Mikroprozessor nach Anspruch 23, worin der BTAC abhängig von einer eingegebenen Holadresse feststellt, ob einer der zahlreichen Rücksprungbefehle der Rücksprungbefehl ist, wobei die Holadresse eine Adresse ist, die aus einem Befehlscache des Mikroprozessors eingegeben wird.
  25. Verfahren zum Vorhersagen einer Zieladresse eines Rücksprungbefehls in einem Mikroprozessor (100; 500), wobei das Verfahren durch die Schritte gekennzeichnet ist: das Aktualisieren einer Überschreibanzeige mit einem gültigen Wert abhängig davon, dass ein Rücksprungstack (104; 116) die Zieladresse des Rücksprungbefehls falsch vorhersagt; durch einen Verzweigungsziel-Adresscache, BTAC (102), das Erzeugen einer Vorhersage der Zieladresse nach dem Aktualisieren; das Feststellen, ob die Überschreibanzeige einen gültigen Wert hat, nachdem der BTAC die Vorhersage erzeugt hat; und das Verzweigen des Mikroprozessors zu der Vorhersage, die der BTAC (102) erzeugt hat, falls die Überschreibanzeige einen gültigen Wert hat.
  26. Verfahren nach Anspruch 25, zudem umfassend das Aktualisieren der Überschreibanzeige mit einem ungültigen Wert abhängig davon, dass der BTAC (102) die Zieladresse des Rücksprungbefehls falsch vorhersagt.
  27. Verfahren nach Anspruch 25, zudem umfassend das Verzweigen des Mikroprozessors zu der Vorhersage, die der BTAC (102) erzeugt hat; durch den Rücksprungstack (104; 116) das Erzeugen einer Vorhersage der Zieladresse nachdem der BTAC die Vorhersage der Zieladresse erzeugt hat; und das Vergleichen der Vorhersage, die der BTAC erzeugt hat, mit der Vorhersage, die der Rücksprungstack erzeugt hat, nachdem der Mikroprozessor zu der Vorhersage verzweigt ist, die der BTAC erzeugt hat.
  28. Verfahren nach Anspruch 25, zudem umfassend: das Verzweigen des Mikroprozessors zu der Vorhersage, die der Rücksprungstack erzeugt hat, falls die vom BTAC erzeugte Vorhersage nicht mit der vom Rücksprungstack erzeugten Vorhersage übereinstimmt.
  29. Verfahren nach Anspruch 25, zudem umfassend: durch den Rücksprungstack, das Erzeugen einer Vorhersage der Zieladresse des Rücksprungbefehls nach dem Aktualisieren; und das Verzweigen des Mikroprozessors zu der Vorhersage, die der Rücksprungstack erzeugt hat, falls die Überschreibanzeige einen ungültigen Wert hat.
  30. Verfahren nach Anspruch 29, zudem umfassend: durch den BTAC (102), das Vorhersagen abhängig von einer Holadresse, ob der Rücksprungbefehl in einer Cache-Line vorhanden ist, die ein Befehlscache liefert, wobei die Holadresse die Cache-Line spezifiziert, die der Befehlscache liefert.
  31. Verfahren nach Anspruch 30, wobei das Erzeugen der Zieladresse des Rücksprungbefehls durch den BTAC (102) das Erzeugen der Zieladresse abhängig davon umfasst, ob der BTAC (102) vorhersagt, dass der Rücksprungbefehl in der Cache-Line vorhanden ist.
  32. Verfahren nach Anspruch 30, wobei das Erzeugen der Vorhersage der Zieladresse des Rücksprungbefehls durch den Rücksprungstack (104) das Erzeugen der Zieladresse abhängig davon umfasst, ob der BTAC (102) vorhersagt, dass der Rücksprungbefehl in der Cache-Line vorhanden ist.
  33. Verfahren nach Anspruch 25, ferner umfassend: das Decodieren des Rücksprungbefehls nachdem der BTAC die Vorhersage der Zieladresse erzeugt hat.
  34. Verfahren nach Anspruch 33, wobei das Erzeugen der Vorhersage der Zieladresse des Rücksprungbefehls durch den Rücksprungstack (116) das Erzeugen der Zieladresse abhängig vom Decodieren des Rücksprungbefehls umfasst.
  35. Verfahren nach Anspruch 33, wobei das Decodieren des Rücksprungbefehls erfolgt, nachdem ein Befehlscache den Rücksprungbefehl ausgegeben hat.
  36. Computerdatensignal, das in einem Übertragungsmedium ausgeführt ist, umfassend einen computerlesbaren Programmcode zum Bereitstellen eines Mikroprozessors, wobei der Programmcode umfasst: einen ersten Programmcode, der einen Rücksprungstack bereitstellt, der eine erste Vorhersage einer Zieladresse eines Rücksprungbefehls liefert, wobei das Computerdatensignal dadurch gekennzeichnet ist, dass der Programmcode ferner umfasst: einen zweiten Programmcode, der einen Verzweigungsziel-Adresscache, BTAC, bereitstellt, der eine zweite Vorhersage der Zieladresse des Rücksprungbefehls liefert, und der eine Überschreibanzeige bereitstellt, wobei die Überschreibanzeige einen vorbestimmten Wert angibt, falls die erste Vorhersage die Zieladresse für einen ersten Fall des Rücksprungbefehls falsch vorhergesagt hat; und einen dritten Programmcode, der eine Verzweigungssteuerlogik bereitstellt, die mit dem Rücksprungstack und dem BTAC verbunden ist und den Mikroprozessor für einen zweiten Fall des Rücksprungbefehls veranlasst, zu der zweiten Vorhersage der Zieladresse zu verzweigen und nicht zu der ersten Vorhersage, falls die Überschreibanzeige den vorbestimmten Wert zeigt.
DE602004008711T 2003-09-08 2004-02-10 Anordnung, Verfahren und Rechnerdatensignal zur selektiven Annullierung der Vorhersage eines Rücksprungstapelspeichers als Antwort auf die Erkennung einer nicht-standard Rücksprungsbefehlsreihe Expired - Lifetime DE602004008711T2 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US50120303P 2003-09-08 2003-09-08
US501203P 2003-09-08
US679830 2003-10-06
US10/679,830 US7237098B2 (en) 2003-09-08 2003-10-06 Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence

Publications (2)

Publication Number Publication Date
DE602004008711D1 DE602004008711D1 (de) 2007-10-18
DE602004008711T2 true DE602004008711T2 (de) 2008-06-12

Family

ID=34139064

Family Applications (1)

Application Number Title Priority Date Filing Date
DE602004008711T Expired - Lifetime DE602004008711T2 (de) 2003-09-08 2004-02-10 Anordnung, Verfahren und Rechnerdatensignal zur selektiven Annullierung der Vorhersage eines Rücksprungstapelspeichers als Antwort auf die Erkennung einer nicht-standard Rücksprungsbefehlsreihe

Country Status (3)

Country Link
US (2) US7237098B2 (de)
EP (1) EP1513062B1 (de)
DE (1) DE602004008711T2 (de)

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7134005B2 (en) * 2001-05-04 2006-11-07 Ip-First, Llc Microprocessor that detects erroneous speculative prediction of branch instruction opcode byte
US7165169B2 (en) * 2001-05-04 2007-01-16 Ip-First, Llc Speculative branch target address cache with selective override by secondary predictor based on branch instruction type
US7200740B2 (en) * 2001-05-04 2007-04-03 Ip-First, Llc Apparatus and method for speculatively performing a return instruction in a microprocessor
US7165168B2 (en) 2003-01-14 2007-01-16 Ip-First, Llc Microprocessor with branch target address cache update queue
US7707397B2 (en) * 2001-05-04 2010-04-27 Via Technologies, Inc. Variable group associativity branch target address cache delivering multiple target addresses per cache line
US20020194461A1 (en) * 2001-05-04 2002-12-19 Ip First Llc Speculative branch target address cache
US6895498B2 (en) * 2001-05-04 2005-05-17 Ip-First, Llc Apparatus and method for target address replacement in speculative branch target address cache
US6886093B2 (en) * 2001-05-04 2005-04-26 Ip-First, Llc Speculative hybrid branch direction predictor
US6823444B1 (en) * 2001-07-03 2004-11-23 Ip-First, Llc Apparatus and method for selectively accessing disparate instruction buffer stages based on branch target address cache hit and instruction stage wrap
US7162619B2 (en) * 2001-07-03 2007-01-09 Ip-First, Llc Apparatus and method for densely packing a branch instruction predicted by a branch target address cache and associated target instructions into a byte-wide instruction buffer
US7234045B2 (en) * 2001-07-03 2007-06-19 Ip-First, Llc Apparatus and method for handling BTAC branches that wrap across instruction cache lines
US7203824B2 (en) * 2001-07-03 2007-04-10 Ip-First, Llc Apparatus and method for handling BTAC branches that wrap across instruction cache lines
US7159097B2 (en) * 2002-04-26 2007-01-02 Ip-First, Llc Apparatus and method for buffering instructions and late-generated related information using history of previous load/shifts
US7152154B2 (en) * 2003-01-16 2006-12-19 Ip-First, Llc. Apparatus and method for invalidation of redundant branch target address cache entries
US7185186B2 (en) * 2003-01-14 2007-02-27 Ip-First, Llc Apparatus and method for resolving deadlock fetch conditions involving branch target address cache
US7143269B2 (en) * 2003-01-14 2006-11-28 Ip-First, Llc Apparatus and method for killing an instruction after loading the instruction into an instruction queue in a pipelined microprocessor
US7178010B2 (en) * 2003-01-16 2007-02-13 Ip-First, Llc Method and apparatus for correcting an internal call/return stack in a microprocessor that detects from multiple pipeline stages incorrect speculative update of the call/return stack
US7237098B2 (en) 2003-09-08 2007-06-26 Ip-First, Llc Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence
US20050273559A1 (en) * 2004-05-19 2005-12-08 Aris Aristodemou Microprocessor architecture including unified cache debug unit
JP2006040173A (ja) * 2004-07-29 2006-02-09 Fujitsu Ltd 分岐予測装置および分岐予測方法
US20070033385A1 (en) * 2005-08-02 2007-02-08 Advanced Micro Devices, Inc. Call return stack way prediction repair
US7747088B2 (en) * 2005-09-28 2010-06-29 Arc International (Uk) Limited System and methods for performing deblocking in microprocessor-based video codec applications
US20070204142A1 (en) * 2006-02-27 2007-08-30 Dieffenderfer James N Method and apparatus for repairing a link stack
JP2008299795A (ja) * 2007-06-04 2008-12-11 Nec Electronics Corp 分岐予測制御装置及びその方法
US7882338B2 (en) * 2008-02-20 2011-02-01 International Business Machines Corporation Method, system and computer program product for an implicit predicted return from a predicted subroutine
US8589629B2 (en) 2009-03-27 2013-11-19 Advanced Micro Devices, Inc. Method for way allocation and way locking in a cache
US8555040B2 (en) 2010-05-24 2013-10-08 Apple Inc. Indirect branch target predictor that prevents speculation if mispredict is expected
US9645822B2 (en) 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store instructions in an out-of-order execution microprocessor
EP2624126B1 (de) * 2011-04-07 2016-11-02 VIA Technologies, Inc. Effiziente konditionale Arithmetik- und Logikeinheit- (ALU) -Anweisung in leseanschlussbegrenztem Registerdatei-Mikroprozessor
US8924695B2 (en) 2011-04-07 2014-12-30 Via Technologies, Inc. Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor
US9336180B2 (en) 2011-04-07 2016-05-10 Via Technologies, Inc. Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode
US9317288B2 (en) 2011-04-07 2016-04-19 Via Technologies, Inc. Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9292470B2 (en) 2011-04-07 2016-03-22 Via Technologies, Inc. Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program
US8880857B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor
US9274795B2 (en) 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
US9128701B2 (en) 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
US8880851B2 (en) * 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9032189B2 (en) 2011-04-07 2015-05-12 Via Technologies, Inc. Efficient conditional ALU instruction in read-port limited register file microprocessor
US9043580B2 (en) 2011-04-07 2015-05-26 Via Technologies, Inc. Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA)
US9141389B2 (en) 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US9244686B2 (en) 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
US9146742B2 (en) 2011-04-07 2015-09-29 Via Technologies, Inc. Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA
US9176733B2 (en) 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
US9201654B2 (en) 2011-06-28 2015-12-01 International Business Machines Corporation Processor and data processing method incorporating an instruction pipeline with conditional branch direction prediction for fast access to branch target instructions
US20130024674A1 (en) 2011-07-20 2013-01-24 International Business Machines Corporation Return address optimisation for a dynamic code translator
US9354886B2 (en) 2011-11-28 2016-05-31 Apple Inc. Maintaining the integrity of an execution return address stack
US9753858B2 (en) 2011-11-30 2017-09-05 Advanced Micro Devices, Inc. DRAM cache with tags and data jointly stored in physical rows
US9225914B2 (en) * 2012-06-29 2015-12-29 Raytheon Company Infrared imaging system
US8984368B2 (en) 2012-10-11 2015-03-17 Advanced Micro Devices, Inc. High reliability memory controller
US9405544B2 (en) 2013-05-14 2016-08-02 Apple Inc. Next fetch predictor return address stack
US10867031B2 (en) 2015-07-23 2020-12-15 Apple Inc. Marking valid return targets
US11099849B2 (en) 2016-09-01 2021-08-24 Oracle International Corporation Method for reducing fetch cycles for return-type instructions
US10747539B1 (en) 2016-11-14 2020-08-18 Apple Inc. Scan-on-fill next fetch target prediction
US10649782B2 (en) 2018-03-29 2020-05-12 Arm Limited Apparatus and method for controlling branch prediction
US11055098B2 (en) 2018-07-24 2021-07-06 Advanced Micro Devices, Inc. Branch target buffer with early return prediction
US10768937B2 (en) * 2018-07-26 2020-09-08 Advanced Micro Devices, Inc. Using return address predictor to speed up control stack return address verification
US11526359B2 (en) * 2018-10-03 2022-12-13 Arm Limited Caching override indicators for statistically biased branches to selectively override a global branch predictor

Family Cites Families (124)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IT1000638B (it) * 1973-12-28 1976-04-10 Olivetti & Co Spa Calcolatore elettronico con dispo sitivo di deviazione dei micropro grammi
US4200927A (en) * 1978-01-03 1980-04-29 International Business Machines Corporation Multi-instruction stream branch processing mechanism
US4181942A (en) * 1978-03-31 1980-01-01 International Business Machines Corporation Program branching method and apparatus
US4860197A (en) * 1987-07-31 1989-08-22 Prime Computer, Inc. Branch cache system with instruction boundary determination independent of parcel boundary
US5193205A (en) * 1988-03-01 1993-03-09 Mitsubishi Denki Kabushiki Kaisha Pipeline processor, with return address stack storing only pre-return processed address for judging validity and correction of unprocessed address
US5142634A (en) * 1989-02-03 1992-08-25 Digital Equipment Corporation Branch prediction
US5226126A (en) * 1989-02-24 1993-07-06 Nexgen Microsystems Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags
US5148538A (en) * 1989-10-20 1992-09-15 International Business Machines Corporation Translation look ahead based cache access
US5163140A (en) * 1990-02-26 1992-11-10 Nexgen Microsystems Two-level branch prediction cache
JPH0820950B2 (ja) * 1990-10-09 1996-03-04 インターナショナル・ビジネス・マシーンズ・コーポレイション マルチ予測型分岐予測機構
WO1992006426A1 (en) * 1990-10-09 1992-04-16 Nexgen Microsystems Method and apparatus for parallel decoding of instructions with branch prediction look-up
US5394530A (en) * 1991-03-15 1995-02-28 Nec Corporation Arrangement for predicting a branch target address in the second iteration of a short loop
US5961629A (en) * 1991-07-08 1999-10-05 Seiko Epson Corporation High performance, superscalar-based computer system with out-of-order instruction execution
US5832289A (en) * 1991-09-20 1998-11-03 Shaw; Venson M. System for estimating worst time duration required to execute procedure calls and looking ahead/preparing for the next stack operation of the forthcoming procedure calls
CA2124333A1 (en) * 1992-02-27 1993-09-02 John A. Saba Cpu having pipelined instruction unit and effective address calculation unit with retained virtual address capability
US5313634A (en) * 1992-07-28 1994-05-17 International Business Machines Corporation Computer system branch prediction of subroutine returns
US5434985A (en) * 1992-08-11 1995-07-18 International Business Machines Corporation Simultaneous prediction of multiple branches for superscalar processing
JP3057934B2 (ja) * 1992-10-30 2000-07-04 日本電気株式会社 共有バス調停機構
US5463748A (en) * 1993-06-30 1995-10-31 Intel Corporation Instruction buffer for aligning instruction sets using boundary detection
US5623614A (en) * 1993-09-17 1997-04-22 Advanced Micro Devices, Inc. Branch prediction cache with multiple entries for returns having multiple callers
ES2138051T3 (es) * 1994-01-03 2000-01-01 Intel Corp Metodo y aparato para la realizacion de un sistema de resolucion de bifurcaciones en cuatro etapas en un procesador informatico.
US5604877A (en) * 1994-01-04 1997-02-18 Intel Corporation Method and apparatus for resolving return from subroutine instructions in a computer processor
TW253946B (en) * 1994-02-04 1995-08-11 Ibm Data processor with branch prediction and method of operation
GB2287111B (en) * 1994-03-01 1998-08-05 Intel Corp Method for pipeline processing of instructions by controlling access to a reorder buffer using a register file outside the reorder buffer
US5530825A (en) * 1994-04-15 1996-06-25 Motorola, Inc. Data processor with branch target address cache and method of operation
US5623615A (en) * 1994-08-04 1997-04-22 International Business Machines Corporation Circuit and method for reducing prefetch cycles on microprocessors
US5706491A (en) * 1994-10-18 1998-01-06 Cyrix Corporation Branch processing unit with a return stack including repair using pointers from different pipe stages
US5732243A (en) 1994-10-18 1998-03-24 Cyrix Corporation Branch processing unit with target cache using low/high banking to support split prefetching
US5628259A (en) * 1995-03-15 1997-05-13 Oklahoma Gas And Electric Company Economizer lump breaker
US5606682A (en) * 1995-04-07 1997-02-25 Motorola Inc. Data processor with branch target address cache and subroutine return address cache and method of operation
US5687360A (en) * 1995-04-28 1997-11-11 Intel Corporation Branch predictor using multiple prediction heuristics and a heuristic identifier in the branch instruction
US5968169A (en) * 1995-06-07 1999-10-19 Advanced Micro Devices, Inc. Superscalar microprocessor stack structure for judging validity of predicted subroutine return addresses
US5867701A (en) * 1995-06-12 1999-02-02 Intel Corporation System for inserting a supplemental micro-operation flow into a macroinstruction-generated micro-operation flow
US5752069A (en) * 1995-08-31 1998-05-12 Advanced Micro Devices, Inc. Superscalar microprocessor employing away prediction structure
US5634103A (en) * 1995-11-09 1997-05-27 International Business Machines Corporation Method and system for minimizing branch misprediction penalties within a processor
US5778438A (en) * 1995-12-06 1998-07-07 Intel Corporation Method and apparatus for maintaining cache coherency in a computer system with a highly pipelined bus and multiple conflicting snoop requests
US5864707A (en) * 1995-12-11 1999-01-26 Advanced Micro Devices, Inc. Superscalar microprocessor configured to predict return addresses from a return stack storage
US5734881A (en) * 1995-12-15 1998-03-31 Cyrix Corporation Detecting short branches in a prefetch buffer using target location information in a branch target cache
US5828901A (en) * 1995-12-21 1998-10-27 Cirrus Logic, Inc. Method and apparatus for placing multiple frames of data in a buffer in a direct memory access transfer
US5964868A (en) * 1996-05-15 1999-10-12 Intel Corporation Method and apparatus for implementing a speculative return stack buffer
US5805877A (en) * 1996-09-23 1998-09-08 Motorola, Inc. Data processor with branch target address cache and method of operation
US5850543A (en) * 1996-10-30 1998-12-15 Texas Instruments Incorporated Microprocessor with speculative instruction pipelining storing a speculative register value within branch target buffer for use in speculatively executing instructions after a return
KR100240591B1 (ko) * 1996-11-06 2000-03-02 김영환 분기명령어의 효율적인 처리를 위한 브랜치 타겟 버퍼 및 그를 이용한 분기 예측방법
US6088793A (en) * 1996-12-30 2000-07-11 Intel Corporation Method and apparatus for branch execution on a multiple-instruction-set-architecture microprocessor
DE69734093D1 (de) * 1996-12-31 2005-10-06 Metaflow Technologies Inc System zur Ausführung von Gleitkommaoperationen
US5802602A (en) * 1997-01-17 1998-09-01 Intel Corporation Method and apparatus for performing reads of related data from a set-associative cache memory
US5850532A (en) * 1997-03-10 1998-12-15 Advanced Micro Devices, Inc. Invalid instruction scan unit for detecting invalid predecode data corresponding to instructions being fetched
TW357318B (en) * 1997-03-18 1999-05-01 Ind Tech Res Inst Branching forecast and reading device for unspecified command length extra-purity pipeline processor
US6122729A (en) * 1997-05-13 2000-09-19 Advanced Micro Devices, Inc. Prefetch buffer which stores a pointer indicating an initial predecode position
US6073230A (en) * 1997-06-11 2000-06-06 Advanced Micro Devices, Inc. Instruction fetch unit configured to provide sequential way prediction for sequential instruction fetches
US5872946A (en) * 1997-06-11 1999-02-16 Advanced Micro Devices, Inc. Instruction alignment unit employing dual instruction queues for high frequency instruction dispatch
US6047334A (en) * 1997-06-17 2000-04-04 Intel Corporation System for delaying dequeue of commands received prior to fence command until commands received before fence command are ordered for execution in a fixed sequence
AU8495098A (en) * 1997-07-16 1999-02-10 California Institute Of Technology Improved devices and methods for asynchronous processing
US6157988A (en) * 1997-08-01 2000-12-05 Micron Technology, Inc. Method and apparatus for high performance branching in pipelined microsystems
US6154833A (en) 1997-08-11 2000-11-28 Intel Corporation System for recovering from a concurrent branch target buffer read with a write allocation by invalidating and then reinstating the instruction pointer
US6185676B1 (en) * 1997-09-30 2001-02-06 Intel Corporation Method and apparatus for performing early branch prediction in a microprocessor
US6370632B1 (en) * 1997-11-18 2002-04-09 Intrinsity, Inc. Method and apparatus that enforces a regional memory model in hierarchical memory systems
US5978909A (en) * 1997-11-26 1999-11-02 Intel Corporation System for speculative branch target prediction having a dynamic prediction history buffer and a static prediction history buffer
US6041405A (en) * 1997-12-18 2000-03-21 Advanced Micro Devices, Inc. Instruction length prediction using an instruction length pattern detector
US5931944A (en) * 1997-12-23 1999-08-03 Intel Corporation Branch instruction handling in a self-timed marking system
US6081884A (en) * 1998-01-05 2000-06-27 Advanced Micro Devices, Inc. Embedding two different instruction sets within a single long instruction word using predecode bits
US5974543A (en) * 1998-01-23 1999-10-26 International Business Machines Corporation Apparatus and method for performing subroutine call and return operations
US5881260A (en) * 1998-02-09 1999-03-09 Hewlett-Packard Company Method and apparatus for sequencing and decoding variable length instructions with an instruction boundary marker within each instruction
US6151671A (en) * 1998-02-20 2000-11-21 Intel Corporation System and method of maintaining and utilizing multiple return stack buffers
US6374349B2 (en) * 1998-03-19 2002-04-16 Mcfarling Scott Branch predictor with serially connected predictor stages for improving branch prediction accuracy
US6247102B1 (en) * 1998-03-25 2001-06-12 Compaq Computer Corporation Computer system employing memory controller and bridge interface permitting concurrent operation
US6108773A (en) * 1998-03-31 2000-08-22 Ip-First, Llc Apparatus and method for branch target address calculation during instruction decode
US6073210A (en) * 1998-03-31 2000-06-06 Intel Corporation Synchronization of weakly ordered write combining operations using a fencing mechanism
US6256727B1 (en) * 1998-05-12 2001-07-03 International Business Machines Corporation Method and system for fetching noncontiguous instructions in a single clock cycle
US6260138B1 (en) * 1998-07-17 2001-07-10 Sun Microsystems, Inc. Method and apparatus for branch instruction processing in a processor
US6122727A (en) * 1998-08-24 2000-09-19 Advanced Micro Devices, Inc. Symmetrical instructions queue for high clock frequency scheduling
US6816934B2 (en) * 2000-12-22 2004-11-09 Hewlett-Packard Development Company, L.P. Computer system with registered peripheral component interconnect device for processing extended commands and attributes according to a registered peripheral component interconnect protocol
US6134654A (en) * 1998-09-16 2000-10-17 Sun Microsystems, Inc. Bi-level branch target prediction scheme with fetch address prediction
US6279106B1 (en) * 1998-09-21 2001-08-21 Advanced Micro Devices, Inc. Method for reducing branch target storage by calculating direct branch targets on the fly
US6163839A (en) * 1998-09-30 2000-12-19 Intel Corporation Non-stalling circular counterflow pipeline processor with reorder buffer
US6279105B1 (en) * 1998-10-15 2001-08-21 International Business Machines Corporation Pipelined two-cycle branch target address cache
US6170054B1 (en) * 1998-11-16 2001-01-02 Intel Corporation Method and apparatus for predicting target addresses for return from subroutine instructions utilizing a return address cache
US6167492A (en) * 1998-12-23 2000-12-26 Advanced Micro Devices, Inc. Circuit and method for maintaining order of memory access requests initiated by devices coupled to a multiprocessor system
US6175897B1 (en) * 1998-12-28 2001-01-16 Bull Hn Information Systems Inc. Synchronization of branch cache searches and allocation/modification/deletion of branch cache
US6601161B2 (en) * 1998-12-30 2003-07-29 Intel Corporation Method and system for branch target prediction using path information
US6418525B1 (en) * 1999-01-29 2002-07-09 International Business Machines Corporation Method and apparatus for reducing latency in set-associative caches using set prediction
US6314514B1 (en) * 1999-03-18 2001-11-06 Ip-First, Llc Method and apparatus for correcting an internal call/return stack in a microprocessor that speculatively executes call and return instructions
US6233676B1 (en) * 1999-03-18 2001-05-15 Ip-First, L.L.C. Apparatus and method for fast forward branch
EP1050810A1 (de) * 1999-05-03 2000-11-08 STMicroelectronics SA Rechnersystem mit mehreren funktionellen Einheiten
US6321321B1 (en) * 1999-06-21 2001-11-20 Vlsi Technology, Inc. Set-associative cache-management method with parallel and single-set sequential reads
US6275913B1 (en) * 1999-10-15 2001-08-14 Micron Technology, Inc. Method for preserving memory request ordering across multiple memory controllers
US6457120B1 (en) * 1999-11-01 2002-09-24 International Business Machines Corporation Processor and method including a cache having confirmation bits for improving address predictable branch instruction target predictions
US6748441B1 (en) * 1999-12-02 2004-06-08 Microsoft Corporation Data carousel receiving and caching
US6757815B2 (en) * 1999-12-23 2004-06-29 Intel Corporation Single array banked branch target buffer
US6560696B1 (en) * 1999-12-29 2003-05-06 Intel Corporation Return register stack target predictor
US6502185B1 (en) * 2000-01-03 2002-12-31 Advanced Micro Devices, Inc. Pipeline elements which verify predecode information
US6351796B1 (en) * 2000-02-22 2002-02-26 Hewlett-Packard Company Methods and apparatus for increasing the efficiency of a higher level cache by selectively performing writes to the higher level cache
US6910124B1 (en) * 2000-05-02 2005-06-21 International Business Machines Corporation Apparatus and method for recovering a link stack from mis-speculation
US6609192B1 (en) * 2000-06-06 2003-08-19 International Business Machines Corporation System and method for asynchronously overlapping storage barrier operations with old and new storage operations
US6754808B1 (en) * 2000-09-29 2004-06-22 Intel Corporation Valid bit generation and tracking in a pipelined processor
FR2816593B1 (fr) * 2000-11-16 2003-07-25 Catherine Dumouchel Palette de transport
US6866093B2 (en) * 2001-02-13 2005-03-15 Honeywell International Inc. Isolation and flow direction/control plates for a heat exchanger
US7165169B2 (en) 2001-05-04 2007-01-16 Ip-First, Llc Speculative branch target address cache with selective override by secondary predictor based on branch instruction type
US6886093B2 (en) * 2001-05-04 2005-04-26 Ip-First, Llc Speculative hybrid branch direction predictor
US6895498B2 (en) * 2001-05-04 2005-05-17 Ip-First, Llc Apparatus and method for target address replacement in speculative branch target address cache
US7165168B2 (en) * 2003-01-14 2007-01-16 Ip-First, Llc Microprocessor with branch target address cache update queue
US7200740B2 (en) * 2001-05-04 2007-04-03 Ip-First, Llc Apparatus and method for speculatively performing a return instruction in a microprocessor
US7134005B2 (en) * 2001-05-04 2006-11-07 Ip-First, Llc Microprocessor that detects erroneous speculative prediction of branch instruction opcode byte
US20020194461A1 (en) * 2001-05-04 2002-12-19 Ip First Llc Speculative branch target address cache
US6823444B1 (en) * 2001-07-03 2004-11-23 Ip-First, Llc Apparatus and method for selectively accessing disparate instruction buffer stages based on branch target address cache hit and instruction stage wrap
US7162619B2 (en) * 2001-07-03 2007-01-09 Ip-First, Llc Apparatus and method for densely packing a branch instruction predicted by a branch target address cache and associated target instructions into a byte-wide instruction buffer
US7203824B2 (en) * 2001-07-03 2007-04-10 Ip-First, Llc Apparatus and method for handling BTAC branches that wrap across instruction cache lines
US7234045B2 (en) * 2001-07-03 2007-06-19 Ip-First, Llc Apparatus and method for handling BTAC branches that wrap across instruction cache lines
US7024545B1 (en) * 2001-07-24 2006-04-04 Advanced Micro Devices, Inc. Hybrid branch prediction device with two levels of branch prediction cache
WO2003019393A1 (en) * 2001-08-24 2003-03-06 Intel Corporation A general intput/output architecture, protocol and related methods to implement flow control
US6898699B2 (en) * 2001-12-21 2005-05-24 Intel Corporation Return address stack including speculative return address buffer with back pointers
US20030131175A1 (en) * 2001-12-24 2003-07-10 Heynemann Tom A. Method and apparatus for ensuring multi-threaded transaction ordering in a strongly ordered computer interconnect
US7159097B2 (en) * 2002-04-26 2007-01-02 Ip-First, Llc Apparatus and method for buffering instructions and late-generated related information using history of previous load/shifts
US7058795B2 (en) 2002-06-25 2006-06-06 Intel Corporation Method and apparatus of branch prediction
US7048012B2 (en) * 2002-10-24 2006-05-23 Albany International Corp. Paired warp triple layer forming fabrics with optimum sheet building characteristics
US6968444B1 (en) * 2002-11-04 2005-11-22 Advanced Micro Devices, Inc. Microprocessor employing a fixed position dispatch unit
US7185186B2 (en) * 2003-01-14 2007-02-27 Ip-First, Llc Apparatus and method for resolving deadlock fetch conditions involving branch target address cache
US7143269B2 (en) * 2003-01-14 2006-11-28 Ip-First, Llc Apparatus and method for killing an instruction after loading the instruction into an instruction queue in a pipelined microprocessor
US7152154B2 (en) * 2003-01-16 2006-12-19 Ip-First, Llc. Apparatus and method for invalidation of redundant branch target address cache entries
US7178010B2 (en) * 2003-01-16 2007-02-13 Ip-First, Llc Method and apparatus for correcting an internal call/return stack in a microprocessor that detects from multiple pipeline stages incorrect speculative update of the call/return stack
US7237098B2 (en) 2003-09-08 2007-06-26 Ip-First, Llc Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence
US20060218385A1 (en) * 2005-03-23 2006-09-28 Smith Rodney W Branch target address cache storing two or more branch target addresses per index
US9026744B2 (en) * 2005-03-23 2015-05-05 Qualcomm Incorporated Enforcing strongly-ordered requests in a weakly-ordered processing
US7783817B2 (en) * 2006-08-31 2010-08-24 Qualcomm Incorporated Method and apparatus for conditional broadcast of barrier operations

Also Published As

Publication number Publication date
DE602004008711D1 (de) 2007-10-18
EP1513062B1 (de) 2007-09-05
US7237098B2 (en) 2007-06-26
US20050076193A1 (en) 2005-04-07
US7631172B2 (en) 2009-12-08
EP1513062A1 (de) 2005-03-09
US20070083741A1 (en) 2007-04-12

Similar Documents

Publication Publication Date Title
DE602004008711T2 (de) Anordnung, Verfahren und Rechnerdatensignal zur selektiven Annullierung der Vorhersage eines Rücksprungstapelspeichers als Antwort auf die Erkennung einer nicht-standard Rücksprungsbefehlsreihe
DE69929936T2 (de) Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem
DE602004011889T2 (de) Anordnung und Verfahren zur Durchführung einer frühen Korrektur von falschen Vorhersagen beim bedingten Verzweigungsbefehl
DE69031991T2 (de) Verfahren und Gerät zur Beschleunigung von Verzweigungsbefehlen
DE69932066T2 (de) Mechanismus zur "store-to-load forwarding"
DE69433339T2 (de) Lade-/Speicherfunktionseinheiten und Datencachespeicher für Mikroprozessoren
DE10084556B4 (de) Optimierte Ausführung von statisch sehr wahrscheinlich vorhergesagten Verzweigungsbefehlen
DE68927855T2 (de) Verfahren und Datenverarbeitungseinheit zur Vorverarbeitung von implizierten Spezifizierern in einem Pipeline-Prozessor
DE69835100T2 (de) Prozessor konfiguriert um vorausschauende resultate von zusammengefassten übertragungs-, vergleichs- und einfachen arithmetischen befehlen zu produzieren
DE69133302T2 (de) Registerabbildung in einem einzigen Taktzyklus
DE19781850B4 (de) Mikroprozessor zum spekulativen Ausführen von Befehlen aus mehreren von einem Verzweigungsbefehl angezeigten Befehlsströmen, Verfahren und Computersystem mit Mikroprozessor
DE69534113T2 (de) Kompression der Befehlswörter eines Rechners
DE19983517B4 (de) Verfahren und Einrichtung zur Abzweigvorhersage unter Verwendung einer Abzweig-Vorhersagetabelle einer zweiten Stufe
DE2704842C2 (de) Im Pipeline-Betrieb arbeitende Datenverarbeitungseinrichtung
DE69738188T2 (de) Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor
DE3750935T2 (de) Verfahren und System zum Erleichtern der Befehlsausführung in einem digitalen Rechner.
DE69024068T2 (de) Verfahren und Datenverarbeitungseinheit zur Pipeline- Verarbeitung von Register- und Registeränderungs- Spezifizierern in dem gleichen Befehl
DE69534148T2 (de) Rechnersystem zur Ausführung von Verzweigungsbefehlen
DE69727773T2 (de) Verbesserte Verzweigungsvorhersage in einem Pipelinemikroprozessor
DE69629383T2 (de) Superskalarer mikroprozessor mit risc86 befehlssatz
DE3851746T2 (de) Sprungvorhersage.
DE68928513T2 (de) Verfahren zur Vorverarbeitung mehrerer Befehle
DE69908175T2 (de) Verbesserte befehlsdekodierung durch paralleldekodierungsalgorithmus
DE4222776A1 (de) Verfahren und anordnung fuer eine verzweigungsbefehlsverarbeitung in einer parallelverarbeitungseinheit
DE2855106A1 (de) Einrichtung zur durchfuehrung von instruktionsverzweigungen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition