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 PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims description 48
- 230000004044 response Effects 0.000 title claims description 6
- 238000001514 detection method Methods 0.000 title description 3
- 230000005540 biological transmission Effects 0.000 claims description 3
- 230000001419 dependent effect Effects 0.000 claims 1
- 230000008569 process Effects 0.000 description 28
- 230000007246 mechanism Effects 0.000 description 9
- 230000008901 benefit Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3848—Speculative 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 in1 erläutert. -
3 zeigt ein Flussdiagramm, das die Arbeitsweise des Mikroprozessors der Erfindung in1 erläutert. -
4 zeigt ein Flussdiagramm, das die Arbeitsweise des Mikroprozessors der Erfindung in1 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 in5 erläutert. - AUSFÜHRLICHE BESCHREIBUNG
- Es wird nun Bezug auf
1 genommen. Sie zeigt ein Blockdiagramm eines Pipeline-Mikroprozessors100 der Erfindung. In einer Ausführungsform enthält der Mikroprozessor100 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 Befehlscache108 . In dem Befehlscache108 werden Befehlsbytes aus einem Systemspeicher zwischengespeichert, der mit dem Mikroprozessor100 verbunden ist. Im Befehlscache108 werden die Befehlsbytes in Cache-Lines zwischengespeichert. In einer Ausführungsform umfasst eine Cache-Line32 Byte Befehlsbytes. Der Befehlscache108 empfängt eine Hofadresse132 von einem Multiplexer106 . Der Befehlscache108 gibt eine Cache-Line von Befehlsbytes186 aus, die durch die Hofadresse132 bestimmt ist, falls die Hofadresse132 in den Befehlscache108 trifft. Die Cache-Line an Befehlsbytes186 , die durch die Hofadresse132 spezifiziert ist, kann insbesondere eine oder mehrere Rücksprungbefehle enthalten. Die Befehlsbytes186 werden wie dargestellt über die Pipelineregister121 und123 durch die Pipeline des Mikroprozessors100 geleitet. Obwohl nur zwei Pipelineregister121 und123 für das Führen der Befehlsbytes186 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-Befehlsdecodierer114 bezeichnet wird und mit dem Ausgang des Pipelineregisters123 verbunden ist. Der Befehlsdecodierer114 empfängt Befehlsbytes186 und zugehörige Information und decodiert die Befehlsbytes. In einer Ausführungsform unterstützt der Mikroprozessor100 Befehle mit veränderlicher Länge. Der Befehlsdecodierer114 empfängt einen Strom von Befehlsbytes und formatiert die Befehle in Einzelbefehle, indem er die Länge eines jeden Befehls bestimmt. Insbesondere erzeugt der Befehlsdecodierer114 einen Wahr-Wert auf einem Ret-Signal154 , um anzuzeigen, dass er einen Rücksprungbefehl decodiert hat. In einer Ausführungsform enthält der Mikroprozessor100 einen Computerkern mit eingeschränktem Befehlssatz (RISC), der Mikrobefehle ausführt. Der Befehlsdecodierer114 übersetzt Makrobefehle, beispielsweise x86-Makrobefehle, in die Mikrobefehle des eigentlichen RISC-Befehlsatzes. Die Mikrobefehle werden wie dargestellt über die Pipelineregister125 und127 durch die Pipeline des Mikroprozessors100 geführt. Obwohl nur zwei Pipelineregister125 und127 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-Verzweigungsanalyselogik124 bezeichnet wird und an den Ausgang des Pipelineregisters127 angeschlossen ist. Die Verzweigungsanalyselogik124 empfängt Verzweigungsbefehle, zu denen auch Rücksprungbefehle gehören, während sie sich durch die Pipeline des Mikroprozessors100 bewegen, und sie trifft eine endgültige Entscheidung über die Zieladresse aller Verzweigungsbefehle. Die Verzweigungsanalyselogik124 liefert die korrekte Verzweigungsbefehl-Zieladresse als Eingabe an den Multiplexer106 , und zwar auf dem E-Stufen-Zieladresssignal148 . Wurde eine Zieladresse für den Verzweigungsbefehl vorhergesagt, so empfängt die Verzweigungsanalyselogik124 zusätzlich eine vorhergesagte Zieladresse. Die Verzweigungsanalyselogik124 vergleicht die vorhergesagte Zieladresse mit der korrekten Zieladresse148 und stellt fest, ob die Zieladresse falsch vorhergesagt wurde, beispielsweise durch eine BTAC-Anordnung102 , einen BTAC-Rücksprungstack104 oder einen F-Stufen-Rücksprungstack116 , die im Weiteren alle ausführlicher beschrieben werden. Wurde eine Zieladresse falsch vorhergesagt, so erzeugt die Verzweigungsanalyselogik124 einen Wahr-Wert auf einem Fehl vorhersagesignal158 . - Der Mikroprozessor
100 enthält auch eine Verzweigungssteuerlogik112 , die mit dem Multiplexer106 verbunden ist. Die Verzweigungssteuerlogik112 erzeugt ein Multiplexer-Auswahlsignal168 , damit der Multiplexer106 so gesteuert wird, dass er eine von mehreren Eingabeadressen zum Ausgeben einer Holadresse132 wählt, siehe die folgende Beschreibung. Die Arbeitsweise der Verzweigungssteuerlogik112 wird im Folgenden genauer beschrieben. - Der Mikroprozessor
100 enthält auch einen Addierer182 , der die Holadresse132 erhält und die Holadresse132 erhöht, damit die nächstfolgende Holadresse162 als Eingabe für den Multiplexer106 bereitsteht. Werden während eines gegebenen Taktzyklus keine Verzweigungsbefehle vorhergesagt oder ausgeführt, so steuert die Verzweigungssteuerlogik112 den Multiplexer106 so, dass er die nächstfolgende Holadresse162 wählt. - Der Mikroprozessor
100 enthält auch eine Verzweigungsziel-Adresscacheanordnung102 (BTAC), die so verbunden ist, dass sie die Holadresse132 empfängt. Die BTAC-Anordnung102 enthält eine Anzahl Speicherelemente oder Einträge, die jeweils dem Zwischenspeichern einer Verzweigungsbefehl-Zieladresse und der zugehörigen Verzweigungsvorhersageinformation dienen. Wird die Holadresse132 in den Befehlscache108 eingegeben, und liefert der Befehlscache108 daraufhin die Line der Befehlsbytes186 , so liefert die BTAC-Anordnung102 praktisch gleichzeitig eine Vorhersage, ob ein Verzweigungsbefehl in der Cache-Line186 vorhanden ist, eine vorhergesagte Zieladresse des Verzweigungsbefehls, und eine Aussage, ob der Verzweigungsbefehl ein Rücksprungbefehl ist. Vorteilhafterweise liefert die BTAC-Anordnung102 gemäß der Erfindung auch eine Überschreibanzeige, die angibt, ob die Zieladresse des Rücksprungbefehls von der BTAC-Anordnung102 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-Anordnung102 vorhersagt, wird als Eingabe an einen zweiten Multiplexer126 angelegt. Das Ausgangssignal des Multiplexers126 , d. h. die Zieladresse144 , wird als Eingabe an den Multiplexer106 angelegt. Die Zieladresse144 wird auch wie dargestellt über die Pipelineregister111 und113 durch die Pipeline des Mikroprozessors100 geschoben. Das Ausgangssignal des Pipelineregisters113 wird als Zieladresse176 bezeichnet. Obwohl nur zwei Pipelineregister111 und113 für das Führen der Zieladresse144 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-Anordnung102 eingeschränkt. In einer Ausführungsform wählen die unteren Bits der Holadresse132 einen Satz bzw. eine Zeile in der BTAC-Anordnung102 . Für jeden Eintrag in der BTAC-Anordnung102 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 Holadresse132 werden mit den Adresskennungen eines jeden Eintrags des gewählten Satzes verglichen. Stimmen die oberen Bits der Holadresse132 mit einer gültigen Adresskennung im gewählten Satz überein, so tritt ein Treffer in der BTAC-Anordnung102 auf, der anzeigt, dass die BTAC-Anordnung102 einen Verzweigungsbefehl vorhersagt, der in der Befehls-Cache-Line186 vorhanden ist, die die Holadresse132 gewählt hat, und die der Befehlscache108 im Wesentlichen gleichzeitig mit der Zieladressvorhersage164 ausgibt. - Jeder Eintrag in der BTAC-Anordnung
102 speichert auch eine Angabe über die Art des Verzweigungsbefehls, der in der Befehls-Cache-Line186 vorhanden ist, den die Holadresse132 festlegt. D. h., die BTAC-Anordnung102 speichert auch den Typ des Verzweigungsbefehls, dessen vorhergesagte Zieladresse164 die BTAC-Anordnung102 an den Multiplexer126 anlegt. Ist im Einzelnen der Verzweigungsbefehlstyp ein Rücksprungbefehl, so erzeugt die BTAC-Anordnung102 einen Wahr-Wert auf einem Ret-Signal138 , das der Verzweigungssteuerlogik112 geliefert wird. Zusätzlich gibt die BTAC-Anordnung102 ein Überschreibsignal136 aus, das im Weiteren genauer erklärt wird, und das ebenfalls an die Verzweigungssteuerlogik112 geliefert wird. In einer Ausführungsform umfasst das Verzweigungsbefehl-Typfeld, das in jedem Eintrag der BTAC-Anordnung102 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 - 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 Überschreibsignal136 geliefert. Im Fall eines CALL-Befehls wird das Überschreibsignal136 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 Überschreibsignal136 wird wie dargestellt über die Pipelineregister101 ,103 ,105 und107 durch die Pipeline des Mikroprozessors100 geführt. Im Einzelnen wird das Ausgangssignal des Pipelineregisters103 , das als Überschreib_F-Signal172 bezeichnet ist, an die Verzweigungssteuerlogik112 geführt. Zusätzlich wird das Ausgangssignal des Pipelineregisters107 als Überschreib_E-Signal174 bezeichnet. Obwohl nur vier Pipelineregister101 ,103 ,105 und107 zum Führen des Überschreibsignals136 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-Anordnung102 abgespeichert, und zwar zusammen mit einem Typfeldwert, der einen CALL-Befehl bezeichnet. Erkennt die Verzweigungsanalyselogik124 einen neuen Rücksprungbefehl, so wird in ähnlicher Weise die Zieladresse des Rücksprungbefehls in der BTAC-Anordnung102 abgespeichert, und zwar zusammen mit einem Typfeldwert, der einen normalen Rücksprungbefehl bezeichnet. - Der Mikroprozessor
100 enthält auch einen Rücksprungstack104 , der als BTAC-Rücksprungstack104 bezeichnet wird und so angeschlossen ist, dass er das Ret-Signal138 von der BTAC-Anordnung102 empfängt. Der BTAC-Rücksprungstack104 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 Verzweigungsanalyselogik124 einen neuen Aufrufbefehl, so wird die von dem Aufrufbefehl spezifizierte Zieladresse oben auf dem BTAC-Rücksprungstack104 abgelegt. Zeigt die BTAC-Anordnung102 über das Ret-Signal138 an, dass in der Cache-Line186 , die durch die Holadresse132 bestimmt ist, ein Rücksprungbefehl vorhanden ist, so wird die Rücksprungadresse oben auf dem BTAC-Rücksprungstack104 geholt und als Zieladresse142 an den Multiplexer126 geliefert. Die Verzweigungssteuerlogik112 steuert den Multiplexer126 über ein Steuersignal184 so, dass er die vom BTAC-Rücksprungstack104 vorhergesagte Zieladresse142 wählt, wenn das Ret-Signal138 wahr und das Überschreibsignal136 falsch ist. Sonst steuert die Verzweigungssteuerlogik112 den Multiplexer126 über das Steuersignal184 derart, dass er die Zieladresse164 wählt, die die BTAC-Anordnung102 vorhersagt. - Der Mikroprozessor
100 enthält auch einen zweiten Rücksprungstack116 , der als F-Stufen-Rücksprungstack116 bezeichnet wird und so verschaltet ist, dass er das Ret-Signal154 vom Befehlsdecodierer114 erhält. Der F-Stufen-Rücksprungstack116 speichert durch Call-Befehle festgelegte Rücksprungadressen in Last-In-First-Out-Organisation im Cache. Erkennt in einer Ausführungsform die Verzweigungsanalyselogik124 einen neuen Aufrufbefehl, so wird die von dem Aufrufbefehl spezifizierte Zieladresse oben auf dem F-Stufen-Rücksprungstack116 abgelegt. Zeigt der Befehlsdecodierer114 über das Ret-Signal154 an, dass ein Rücksprungbefehl decodiert wird, so wird die Rücksprungadresse oben auf dem F-Stufen-Rücksprungstack116 geholt und dem Multiplexer106 als Zieladresse146 geliefert. - Der Mikroprozessor
100 enthält auch einen Komparator118 . Der Komparator118 vergleicht die Zieladresse146 des F-Stufen-Rücksprungstacks116 und die durch die Pipeline geführte Zieladresse176 . Der Komparator118 erzeugt einen Wahr-Wert auf einem Nichtübereinstimmungssignal152 , das an die Verzweigungssteuerlogik112 geliefert wird, falls die Zieladresse146 des F-Stufen-Rücksprungstacks116 und die durch die Pipeline geführte Zieladresse176 nicht übereinstimmen. Die Verzweigungssteuerlogik112 steuert den Multiplexer106 über das Steuersignal168 so, dass die Zieladresse146 des F-Stufen-Rücksprungstacks116 gewählt wird, falls das Ret-Signal154 wahr ist, das Überschreib_F-Signal172 falsch ist und das Nichtübereinstimmungssignal152 wahr ist. Andernfalls steuert die Verzweigungssteuerlogik112 den Multiplexer106 über das Steuersignal168 so, dass einer seiner anderen Eingänge gewählt wird. - Der Mikroprozessor
100 enthält auch eine BTAC-Aktualisierungslogik122 , die mit der Verzweigungsanalyselogik124 und der BTAC-Anordnung102 verbunden ist. Die BTAC-Aktualisierungslogik122 empfängt ein Fehlvorhersagesignal158 von der Verzweigungsanalyselogik124 . Die BTAC-Aktualisierungslogik122 empfängt das Überschreib_E-Signal174 vom Pipelineregister107 . Die BTAC-Aktualisierungslogik122 erzeugt ein BTAC-Aktualisierungs-Anforderungssignal134 , das an die BTAC-Anordnung102 geliefert wird. Das BTAC-Aktualisierungs-Anforderungssignal134 enthält Information zum Aktualisieren eines Eintrags in der BTAC-Anordnung102 . In einer Ausführungsform enthält das BTAC-Aktualisierungs-Anforderungssignal134 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-Aktualisierungslogik122 eine BTAC-Aktualisierungs-Anforderung134 , damit die BTAC-Anordnung102 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 Holadresse132 festlegt. Ist das Fehlvorhersagesignal158 wahr, so erzeugt die BTAC-Aktualisierungslogik122 zusätzlich eine BTAC-Aktualisierungs-Anforderung134 zum Aktualisieren des Eintrags in der BTAC-Anordnung102 , der zum Verzweigungsbefehl gehört. Ist im Einzelnen der Verzweigungsbefehl ein Rücksprungbefehl, den der BTAC-Rücksprungstack104 oder der F-Stufen-Rücksprungstack116 falsch vorhergesagt hat, so weist die BTAC-Aktualisierungslogik122 dem Überschreibbit im Eintrag in der BTAC-Anordnung102 einen vorbestimmten Wert zu, um anzuzeigen, dass die Vorhersage142 des BTAC-Rücksprungstacks104 und die Vorhersage146 des F-Stufen-Rücksprungstacks116 mit der Vorhersage164 der BTAC-Anordnung102 ü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-Anordnung102 falsch vorhergesagt wurde, weil das Überschreibbit gesetzt war, so weist die BTAC-Aktualisierungslogik122 dem Überschreibbit im Eintrag der BTAC-Anordnung102 einen vorbestimmten Wert zu, um anzuzeigen, dass beim nächsten Auftreten oder Vorkommen des Rücksprungbefehls die Vorhersage142 des BTAC-Rücksprungstacks104 und wenn nötig die Vorhersage146 des F-Stufen-Rücksprungstacks116 gewählt werden sollte und nicht die Vorhersage164 der BTAC-Anordnung102 . In einer Ausführungsform wird wie in Tabelle 1 oben angegeben das Typfeld auf einen normalen Ret-Wert bzw. 10 gesetzt. Die Arbeitsweise des Mikroprozessors100 wird nun ausführlicher anhand von2 bis4 beschrieben. - Es wird nun Bezug auf
2 genommen. Sie zeigt ein Flussdiagramm, das die Arbeitsweise des Mikroprozessors100 der Erfindung in1 erläutert.2 beschreibt die Arbeitsweise des Mikroprozessors100 für den Fall, dass ein Rücksprungbefehl von der BTAC-Anordnung102 und dem BTAC-Rücksprungstack104 in1 vorhergesagt wird. Der Ablauf beginnt im Block202 . - Im Block
202 wird die Holadresse132 aus1 parallel an den Befehlscache108 in1 und die BTAC-Anordnung102 angelegt. Daraufhin liefert der Befehlscache108 die Cache-Line aus Befehlsbytes186 in1 an die Pipeline des Mikroprozessors100 , und zwar als Antwort auf die Holadresse132 . Der Ablauf geht zum Block204 über. - Im Block
204 sagt die BTAC-Anordnung102 ausgehend von der Holadresse132 über das Ret-Signal138 vorher, dass in der Befehls-Cache-Line186 , die der Befehlscache108 an die Pipeline des Mikroprozessors100 geliefert hat, ein Rücksprungbefehl vorhanden ist. Die BTAC-Anordnung102 liefert eine Zieladresse164 an den Multiplexer126 . Der Ablauf geht zum Entscheidungsblock206 über. - Im Entscheidungsblock
206 stellt die Verzweigungssteuerlogik112 fest, ob die Überschreibanzeige136 gesetzt ist. Trifft dies zu, so geht der Ablauf zum Block212 ; andernfalls geht der Ablauf zum Block208 . - Im Block
208 steuert die Verzweigungssteuerlogik112 den Multiplexer126 und den Multiplexer106 so, dass die Zieladresse142 des BTAC-Rücksprungstacks als Holadresse132 gewählt wird, damit der Mikroprozessor100 dorthin verzweigt. Der Ablauf endet im Block208 . - Im Block
212 steuert die Verzweigungssteuerlogik112 den Multiplexer126 und den Multiplexer106 so, dass die Zieladresse164 der BTAC-Anordnung als Holadresse132 gewählt wird, damit der Mikroprozessor100 dorthin verzweigt. Der Ablauf endet im Block212 . -
2 kann man entnehmen, dass bei gesetzter Überschreibanzeige136 , beispielsweise während eines vorhergehenden Auftretens des Rücksprungbefehls, das im Weiteren anhand von Block408 beschrieben wird, die Verzweigungssteuerlogik112 vorteilhafterweise den BTAC-Rücksprungstack104 überschreibt und wahlweise die Zieladresse164 wählt, die die BTAC-Anordnung102 vorhersagt. Dadurch wird eine nahezu gewisse Fehlvorhersage durch den BTAC-Rücksprungstack104 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 Mikroprozessors100 der Erfindung in1 erläutert.3 beschreibt die Arbeitsweise des Mikroprozessors100 für den Fall, dass ein Rücksprungbefehl vorhergesagt wird, beispielsweise der in2 vorhergesagte Rücksprungbefehl, und zwar durch den F-Stufen-Rücksprungstack116 in1 . Der Ablauf beginnt im Block302 . - Im Block
302 decodiert der F-Stufen-Befehlsdecodierer114 in1 den Rücksprungbefehl, der in der Befehls-Cache-Line186 vorhanden war, den der Befehlscache108 aufgrund der Holadresse132 ausgegeben hat, die im Block202 in2 an die BTAC-Anordnung102 angelegt wurde, und die nachfolgend von der BTAC-Anordnung102 und dem BTAC-Rücksprungstack104 wie in2 beschrieben vorhergesagt wurde. Da der F-Stufen-Befehlsdecodierer114 über das Ret-Signal154 anzeigt, dass ein Rücksprungbefehl decodiert wurde, liefert der F-Stufen-Rücksprungstack116 seine vorhergesagte Zieladresse146 an den Multiplexer106 . Der Ablauf geht zum Block304 über. - Im Block
304 vergleicht der Komparator118 in1 die vom F-Stufen-Rücksprungstack vorhergesagte Zieladresse146 mit der Zieladresse176 in1 . Der Komparator118 erzeugt einen Wahr-Wert auf dem Nichtübereinstimmungssignal152 in1 , falls die Adressen146 und176 nicht übereinstimmen. Der Ablauf geht zum Entscheidungsblock306 über. - Im Entscheidungsblock
306 untersucht die Verzweigungssteuerlogik112 das Nichtübereinstimmungssignal152 , um festzustellen, ob eine Nichtübereinstimmung vorliegt. Trifft dies zu, so geht der Ablauf zum Entscheidungsblock308 über. Andernfalls endet der Ablauf. - Im Entscheidungsblock
308 untersucht die Verzweigungssteuerlogik112 das Überschreib_F-Signal172 in1 , um festzustellen, ob das Überschreib_F-Bit172 gesetzt ist. Trifft dies zu, so endet der Ablauf, d. h., die Verzweigung zur Zieladresse164 der BTAC-Anordnung, die im Block212 in2 erfolgt, wird von der vorhergesagten Zieladresse146 des F-Stufen-Rücksprungstacks nicht überlagert. Ist das Überschreib_F-Bit172 gelöscht, so geht der Ablauf zum Block312 über. - Im Block
312 steuert die Verzweigungssteuerlogik112 den Multiplexer106 so, dass er die vom F-Stufen-Rücksprungstack vorhergesagte Zieladresse146 wählt, damit der Mikroprozessor100 dorthin verzweigt. In einer Ausführungsform entfernt der Mikroprozessor100 die Befehle in den Stufen über der F-Stufe, bevor er zur vom F-Stufen-Rücksprungstack vorhergesagten Zieladresse146 verzweigt. Der Ablauf endet im Block312 . -
3 kann man entnehmen, dass bei gesetzter Überschreib_F-Anzeige172 , beispielsweise während eines vorhergehenden Auftretens des Rücksprungbefehls, das im Weiteren anhand von Block408 beschrieben wird, die Verzweigungssteuerlogik112 vorteilhafterweise den F-Stufen-Rücksprungstack116 überschreibt und statt dessen die von der BTAC-Anordnung102 vorhergesagte Zieladresse164 beibehält. Dadurch wird eine nahezu gewisse Fehlvorhersage durch den F-Stufen-Rücksprungstack116 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 Mikroprozessors100 der Erfindung in1 erläutert.4 beschreibt die Arbeitsweise des Mikroprozessors100 für den Fall, dass ein Rücksprungbefehl erkannt wird, beispielsweise ein vorhergehendes Auftreten des Rücksprungbefehls, der in2 und3 vorhergesagt und decodiert wurde. Der Ablauf beginnt im Block402 . - Im Block
402 erkennt die E-Stufen-Verzweigungsanalyselogik124 in1 einen Rücksprungbefehl. D. h., die Verzweigungsanalyselogik124 stellt schließlich die korrekte Zieladresse148 des Rücksprungbefehls in1 fest. Insbesondere erzeugt die Verzweigungsanalyselogik124 einen Wahr-Wert auf dem Fehlvorhersagesignal158 in1 , falls der Mikroprozessor100 veranlasst wurde, zu einer falschen Zieladresse des Rücksprungbefehls zu verzweigen. Der Ablauf geht zum Entscheidungsblock404 über. - Im Entscheidungsblock
404 untersucht die BTAC-Aktualisierungslogik122 das Fehlvorhersagesignal158 , um festzustellen, ob die Zieladresse des Rücksprungbefehls falsch vorhergesagt wurde. Trifft dies zu, so geht der Ablauf zum Entscheidungsblock406 über. Andernfalls endet der Ablauf. - Im Entscheidungsblock
406 untersucht die BTAC-Aktualisierungslogik122 das Überschreib_E-Signal174 , um festzustellen, ob das Überschreib_E-Bit174 gesetzt ist. Trifft dies zu, so geht der Ablauf zum Block408 . Andernfalls geht der Ablauf zum Block412 . - Im Block
408 erzeugt die BTAC-Aktualisierungslogik122 eine BTAC-Aktualisierungs-Anforderung134 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-Aktualisierungslogik122 das Überschreibbit im Block408 , da angenommen wird, dass die standardmäßige Aufruf-Rücksprung-Paarfolge vorherrscht. Der Ablauf geht zum Block414 . - Im Block
412 erzeugt die BTAC-Aktualisierungslogik122 eine BTAC-Aktualisierungs-Anforderung134 , damit das Überschreibbit in dem passenden Eintrag in der BTAC-Anordnung102 gesetzt wird, da der F-Stufen-Rücksprungstack116 die Zieladresse des Rücksprungbefehls falsch vorhergesagt hat. Durch das Setzen des Überschreibbits im BTAC102 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 Zieladresse164 der BTAC-Anordnung verzweigt und nicht zur Zieladresse142 des BTAC-Rücksprungstacks oder zur vom F-Stufen-Rücksprungstack vorhergesagten Zieladresse146 , die die Zieladresse des Rücksprungbefehls falsch vorhersagen würden. Der Ablauf geht zum Block414 über. - Im Block
414 entleert der Mikroprozessor100 seine Pipeline, da die fehlerhaft vorhergesagte Zieladresse des Rücksprungbefehls bewirkt hat, dass falsche Befehle aus dem Befehlscache108 in die Pipeline des Mikroprozessors100 geholt wurden. Diese Befehle dürfen also nicht ausgeführt werden. Nachfolgend steuert die Verzweigungssteuerlogik112 den Multiplexer106 derart, dass er die E-Stufen-Zieladresse146 wählt, damit der Mikroprozessor100 dorthin verzweigt und die Befehle am korrekten Ziel holt. Der Ablauf endet im Block414 . - In einer Ausführungsform aktualisiert der Block
412 das Typfeld des Eintrags in der BTAC-Anordnung102 mit einem binären Wert 11, und der Block408 aktualisiert das Typfeld des Eintrags in der BTAC-Anordnung102 mit einem binären Wert 10 gemäß der obigen Tabelle 1. -
2 bis4 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-Mikroprozessors500 gemäß einer alternativen Ausführungsform der Erfindung. Der Mikroprozessor500 in5 gleicht dem Mikroprozessor100 in1 ; er enthält jedoch keinen BTAC-Rücksprungstack104 oder Multiplexer126 . Folglich wird die vorhergesagte Zieladresse164 , die die BTAC-Anordnung102 ausgibt, direkt an den Multiplexer106 angelegt und nicht über den Multiplexer126 . Zusätzlich wird die Zieladresse164 der BTAC-Anordnung102 anstelle der Zieladresse144 in1 als Eingabe an das Pipelineregister111 geliefert und als Zieladresse176 durch die Pipeline geführt. - Es wird nun Bezug auf
6 genommen. Sie zeigt ein Flussdiagramm, das die Arbeitsweise des Mikroprozessors500 in5 gemäß einer anderen Ausführungsform der Erfindung erläutert.6 gleicht2 , der Entscheidungsblock206 und der Block208 sind jedoch nicht vorhanden. Damit geht der Ablauf vom Block204 zum Block212 über. Sagt die BTAC-Anordnung102 einen Rücksprungbefehl über das Ret-Signal138 vorher, so betätigt die Verzweigungssteuerlogik112 demnach den Mikroprozessor500 stets so, dass dieser zur Zieladresse164 verzweigt, die die BTAC-Anordnung102 vorhergesagt hat, da der BTAC-Rücksprungstack104 und der Multiplexer126 des Mikroprozessors100 in1 im Mikroprozessor500 in5 nicht vorhanden sind. - Der Mikroprozessor
500 in5 arbeitet ebenfalls gemäß den Flussdiagrammen in3 und4 . Da der BTAC-Rücksprungstack104 im Mikroprozessor500 nicht vorhanden ist, beachte man, dass die durch die Pipeline geführte Zieladresse176 stets die Zieladresse164 der BTAC-Anordnung102 ist. Damit ist der im Block304 vorgenommene Vergleich zwischen der Zieladresse146 des F-Stufen-Rücksprungstacks116 und der Zieladresse176 stets ein Vergleich mit der durch die Pipeline geführten Zieladresse164 der BTAC-Anordnung102 . - 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)
- 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. - Mikroprozessor (
100 ;500 ) nach Anspruch 1, wobei der zweite Fall nach dem ersten Fall folgt. - 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. - 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. - 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. - 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. - Mikroprozessor (
100 ;500 ) nach Anspruch 4, wobei der dritte Fall des Rücksprungbefehls nach dem zweiten Fall folgt. - Mikroprozessor (
100 ;500 ) nach Anspruch 4, wobei der dritte Fall des Rücksprungbefehls der zweite Fall ist. - Mikroprozessor (
100 ;500 ) nach Anspruch 1, wobei der Rücksprungstack die erste Vorhersage liefert, nachdem der BTAC die zweite Vorhersage geliefert hat. - 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. - 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. - 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. - 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. - 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. - 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. - 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. - 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. - 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. - 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. - 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. - 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. - 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. - 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.
- 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.
- 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. - 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. - 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. - 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.
- 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.
- 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. - 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. - 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. - Verfahren nach Anspruch 25, ferner umfassend: das Decodieren des Rücksprungbefehls nachdem der BTAC die Vorhersage der Zieladresse erzeugt hat.
- 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. - Verfahren nach Anspruch 33, wobei das Decodieren des Rücksprungbefehls erfolgt, nachdem ein Befehlscache den Rücksprungbefehl ausgegeben hat.
- 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.
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)
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)
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 |
-
2003
- 2003-10-06 US US10/679,830 patent/US7237098B2/en active Active
-
2004
- 2004-02-10 DE DE602004008711T patent/DE602004008711T2/de not_active Expired - Lifetime
- 2004-02-10 EP EP04250693A patent/EP1513062B1/de not_active Expired - Lifetime
-
2006
- 2006-12-11 US US11/609,261 patent/US7631172B2/en not_active Expired - Lifetime
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 |