DE19983517B4 - Verfahren und Einrichtung zur Abzweigvorhersage unter Verwendung einer Abzweig-Vorhersagetabelle einer zweiten Stufe - Google Patents

Verfahren und Einrichtung zur Abzweigvorhersage unter Verwendung einer Abzweig-Vorhersagetabelle einer zweiten Stufe Download PDF

Info

Publication number
DE19983517B4
DE19983517B4 DE19983517T DE19983517T DE19983517B4 DE 19983517 B4 DE19983517 B4 DE 19983517B4 DE 19983517 T DE19983517 T DE 19983517T DE 19983517 T DE19983517 T DE 19983517T DE 19983517 B4 DE19983517 B4 DE 19983517B4
Authority
DE
Germany
Prior art keywords
branch
branch prediction
prediction table
instruction
taken
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE19983517T
Other languages
English (en)
Other versions
DE19983517T1 (de
Inventor
Tse-Yu Yeh
Harshvardhan Sharangpani
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE19983517T1 publication Critical patent/DE19983517T1/de
Application granted granted Critical
Publication of DE19983517B4 publication Critical patent/DE19983517B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

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

Landscapes

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

Abstract

Verzweigungsvorhersager eines Prozessors, wobei der Verzweigungsvorhersager aufweist:
eine primäre Verzweigungsvorhersagetabelle (100), die mit einem Befehlszeiger-Generator gekoppelt ist und eine erste Mehrzahl von Verzweigungsvorhersageeinträgen speichert, wobei jeder Eintrag anzeigt, ob eine Verzweigung genommen wird oder nicht, wobei jeder Eintrag einer Befehlsadresse entspricht, wobei die primäre Verzweigungsvorhersagetabelle (100) mit einem Zieladressenspeicher (101, 142) derart gekoppelt ist, daß beim Anzeigen einer zu nehmenden Verzweigung eine Zieladresse ausgegeben wird, und
eine sekundäre Verzweigungsvorhersagetabelle (102), die mit dem Befehlszeiger-Generator gekoppelt ist und eine zweite Mehrzahl von Verzweigungsvorhersageeinträgen zum Vorhersagen, ob eine Verzweigung genommen wird oder nicht, speichert, wobei die sekundäre Verzweigungsvorhersagetabelle (102) mit einer Schaltung (104) zum Bestimmen einer Zieladresse durch Dekodieren des dem Befehlszeiger entsprechenden Befehls gekoppelt ist, wobei die Vorhersage-Ausgabe der sekundären Verzweigungsvorhersagetabelle nur dann verwendet wird, wenn die primäre Verzweigungsvorhersagetabelle keinen Treffer ausgibt.

Description

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

Claims (13)

  1. Verzweigungsvorhersager eines Prozessors, wobei der Verzweigungsvorhersager aufweist: eine primäre Verzweigungsvorhersagetabelle (100), die mit einem Befehlszeiger-Generator gekoppelt ist und eine erste Mehrzahl von Verzweigungsvorhersageeinträgen speichert, wobei jeder Eintrag anzeigt, ob eine Verzweigung genommen wird oder nicht, wobei jeder Eintrag einer Befehlsadresse entspricht, wobei die primäre Verzweigungsvorhersagetabelle (100) mit einem Zieladressenspeicher (101, 142) derart gekoppelt ist, daß beim Anzeigen einer zu nehmenden Verzweigung eine Zieladresse ausgegeben wird, und eine sekundäre Verzweigungsvorhersagetabelle (102), die mit dem Befehlszeiger-Generator gekoppelt ist und eine zweite Mehrzahl von Verzweigungsvorhersageeinträgen zum Vorhersagen, ob eine Verzweigung genommen wird oder nicht, speichert, wobei die sekundäre Verzweigungsvorhersagetabelle (102) mit einer Schaltung (104) zum Bestimmen einer Zieladresse durch Dekodieren des dem Befehlszeiger entsprechenden Befehls gekoppelt ist, wobei die Vorhersage-Ausgabe der sekundären Verzweigungsvorhersagetabelle nur dann verwendet wird, wenn die primäre Verzweigungsvorhersagetabelle keinen Treffer ausgibt.
  2. Verzweigungsvorhersager nach Anspruch 1, dadurch gekennzeichnet, daß die erste Mehrzahl geringer als die zweite Mehrzahl ist.
  3. Verzweigungsvorhersager nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß die primäre Verzweigungsvorhersagetabelle (100) assoziativ ist und jeder Eintrag ein Tag aufweist.
  4. Verzweigungsvorhersager nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, daß die sekundäre Verzweigungsvorhersagetabelle (102) direkt-abgebildet ist, so daß die Einträge keine Tags aufweisen.
  5. Verzweigungsvorhersager nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, daß der primären Verzweigungsvorhersagetabelle (100) ein Zieladressen-Cache-Speicher (101) derart zugeordnet ist, daß jedem Eintrag der primären Verzweigungsvorhersagetabelle ein entsprechender Eintrag des Zieladressen-Cache-Speichers zugeordnet ist, wobei die in dem Zieladressen-Cache-Speicher gespeicherte Zieladresse dann, wenn der zugehörige Eintrag anzeigt, daß die Verzweigung genommen wird, als neuer Befehlszeiger verwendet wird.
  6. Verzweigungsvorhersager nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, daß die primäre Verzweigungsvorhersagetabelle (100) eine erste Art eines Vorhersagealgorithmus und die sekundäre Verzweigungsvorhersagetabelle (102) eine zweite Art eines Vorhersagealgorithmus, die sich von der ersten Art unterscheidet, implementiert.
  7. Ein Verfahren zum Vorhersagen eines einem Verzweigungsbefehl nachfolgendem Befehlszeigers mittels eines Verzweigungsvorhersagers eines Prozessors, wobei ein anfänglicher Befehlszeiger auf den Verzweigungsbefehl zeigt, wobei. a) eine erste Verzweigungsvorhersagetabelle unter Verwendung des anfänglichen Befehlszeigers durchsucht wird (205), wobei die erste Verzweigungsvorhersagetabelle eine erste Mehrzahl von Einträgen aufweist, die anzeigen, ob eine Verzweigung genommen wird oder nicht; b) dann, wenn ein dem anfänglichen Befehlszeiger entsprechender Eintrag in der ersten Verzweigungsvorher sagetabelle gefunden wird (210), der anzeigt, daß die Verzweigung genommen wird (215), eine zugehörige Zieladresse aus einem Speicher als nachfolgender Befehlszeiger gelesen wird; c) eine zweite Verzweigungsvorhersagetabelle unter Verwendung des anfänglichen Befehlszeigers durchsucht wird (205), wobei die zweite Verzweigungsvorhersagetabelle eine zweite Mehrzahl von Einträgen aufweist, die anzeigen, ob eine Verzweigung genommen wird oder nicht; d) wenigstens ein Teil des dem anfänglichen Befehlszeiger entsprechenden Befehls dekodiert wird (230), um eine Zieladresse zu bestimmen, sofern der Befehl ein Verzweigungsbefehl ist; und e) die dekodierte Zieladresse als nachfolgende Befehlszeigeradresse verwendet wird, wenn kein dem anfänglichen Befehlszeiger entsprechender Eintrag in der ersten Verzweigungsvorhersagetabelle gefunden wird und wenn von der zweiten Vorhersagetabelle oder durch ein Ergebnis des Dekodierschritts vorhergesagt wird, daß die Verzweigung genommen wird.
  8. Verfahren nach Anspruch 7, dadurch gekennzeichnet, daß die Schritte (205) des Durchsuchens der ersten und der zweiten Verzweigungsvorhersagetabelle gleichzeitig begonnen werden.
  9. Verfahren nach Anspruch 7 oder 8, dadurch gekennzeichnet, daß beim Durchsuchen der ersten Verzweigungsvorhersagetabelle unter Verwendung eines anfänglichen Befehlszeigers Adress-Tags der Tabelleneinträge mit dem Befehlszeiger verglichen werden.
  10. Verfahren nach einem der Ansprüche 7 bis 9, dadurch gekennzeichnet, daß beim Durchsuchen der zweiten Verzwei gungsvorhersagetabelle unter Verwendung des anfänglichen Befehlszeigers ein Eintrag aus einer direkt-abgebildeten Tabelle ausgewählt wird.
  11. Verfahren nach einem der Ansprüche 7 bis 10, dadurch gekennzeichnet, daß dann, wenn in der ersten Verzweigungsvorhersagetabelle ein dem anfänglichen Befehlszeiger entsprechender Eintrag gefunden wird, der anzeigt, daß die Verzweigung nicht genommen wird, der anfängliche Befehlszeiger um einen vorgegebenen Betrag inkrementiert wird, um den nachfolgenden Befehlszeiger zu gewinnen.
  12. Verfahren nach einem der Ansprüche 1 bis 11, dadurch gekennzeichnet, daß dann, wenn in der ersten Verzweigungsvorhersagetabelle kein dem anfänglichen Befehlszeiger entsprechender Eintrag gefunden wird und in der zweiten Verzweigungsvorhersagetabelle ein dem anfänglichen Befehlszeiger entsprechender Eintrag gefunden wird, der anzeigt, daß die Verzweigung nicht genommen wird, der anfängliche Befehlszeiger um einen vorgegebenen Betrag inkrementiert wird, um den nachfolgenden Befehlszeiger zu gewinnen.
  13. Verfahren nach einem der Ansprüche 7 bis 12, dadurch gekennzeichnet, daß der im Schritt d) dekodierte Teil des dem anfänglichen Befehlszeiger entsprechenden Befehls einen Hinweis enthält, der anzeigt, ob die Verzweigungsvorhersage statisch oder dynamisch ist, wobei dann, wenn die Verzweigungsvorhersage dynamisch ist, der in der zweiten Verzweigungsvorhersagetabelle vorhandene Eintrag zur Vorhersage, ob die Verzweigung genommen wird oder nicht, verwendet wird, und wobei dann, wenn die Verzweigungsvorhersage statisch ist, ein in dem dekodierten Teil des Befehls enthaltender Hinweis zur Vorhersage, ob die Verzweigung genommen wird oder nicht, verwendet wird und der in der zweiten Verzweigungsvorhersagetabelle enthaltene Eintrag ignoriert wird.
DE19983517T 1998-09-08 1999-08-26 Verfahren und Einrichtung zur Abzweigvorhersage unter Verwendung einer Abzweig-Vorhersagetabelle einer zweiten Stufe Expired - Fee Related DE19983517B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/149,885 US6553488B2 (en) 1998-09-08 1998-09-08 Method and apparatus for branch prediction using first and second level branch prediction tables
US09/149,885 1998-09-08
PCT/US1999/019892 WO2000014628A1 (en) 1998-09-08 1999-08-26 A method and apparatus for branch prediction using a second level branch prediction table

Publications (2)

Publication Number Publication Date
DE19983517T1 DE19983517T1 (de) 2002-07-11
DE19983517B4 true DE19983517B4 (de) 2006-12-07

Family

ID=22532208

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19983517T Expired - Fee Related DE19983517B4 (de) 1998-09-08 1999-08-26 Verfahren und Einrichtung zur Abzweigvorhersage unter Verwendung einer Abzweig-Vorhersagetabelle einer zweiten Stufe

Country Status (8)

Country Link
US (1) US6553488B2 (de)
KR (1) KR100411529B1 (de)
CN (1) CN1302376C (de)
AU (1) AU5699299A (de)
DE (1) DE19983517B4 (de)
GB (1) GB2357871B (de)
TW (1) TW455810B (de)
WO (1) WO2000014628A1 (de)

Families Citing this family (70)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6546481B1 (en) 1999-11-05 2003-04-08 Ip - First Llc Split history tables for branch prediction
US7107437B1 (en) * 2000-06-30 2006-09-12 Intel Corporation Branch target buffer (BTB) including a speculative BTB (SBTB) and an architectural BTB (ABTB)
JP4027620B2 (ja) 2001-06-20 2007-12-26 富士通株式会社 分岐予測装置、プロセッサ、及び分岐予測方法
US7024545B1 (en) * 2001-07-24 2006-04-04 Advanced Micro Devices, Inc. Hybrid branch prediction device with two levels of branch prediction cache
US7343397B2 (en) * 2002-03-29 2008-03-11 Lucent Technologies Inc. Method and apparatus for performing predictive caching of DNS requests by correlating IP addresses
US6978361B2 (en) * 2002-09-20 2005-12-20 International Business Machines Corporation Effectively infinite branch prediction table mechanism
US7831817B2 (en) * 2003-04-15 2010-11-09 Arm Limited Two-level branch prediction apparatus
JP2007527050A (ja) * 2003-07-09 2007-09-20 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 分岐予測の方法およびシステム
US20050015578A1 (en) * 2003-07-14 2005-01-20 Kimming So Two-bit branch prediction scheme using reduced memory size
JP2005149297A (ja) * 2003-11-18 2005-06-09 Renesas Technology Corp プロセッサおよびそのアセンブラ
US7243219B2 (en) * 2003-12-24 2007-07-10 Intel Corporation Predicting instruction branches with a plurality of global predictors using varying amounts of history instruction
US20050149680A1 (en) * 2003-12-30 2005-07-07 Intel Corporation Fast associativity collision array and cascaded priority select
US20050283593A1 (en) * 2004-06-18 2005-12-22 Vladimir Vasekin Loop end prediction
US7752426B2 (en) * 2004-08-30 2010-07-06 Texas Instruments Incorporated Processes, circuits, devices, and systems for branch prediction and other processor improvements
US7890735B2 (en) * 2004-08-30 2011-02-15 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
US7428632B2 (en) * 2004-09-14 2008-09-23 Arm Limited Branch prediction mechanism using a branch cache memory and an extended pattern cache
US7836288B2 (en) * 2004-09-14 2010-11-16 Arm Limited Branch prediction mechanism including a branch prediction memory and a branch prediction cache
DE102005001679B4 (de) * 2005-01-13 2008-11-13 Infineon Technologies Ag Mikroprozessor-Einrichtung, und Verfahren zur Branch-Prediktion für conditional Branch-Befehle in einer Mikroprozessor-Einrichtung
US7627739B2 (en) * 2005-08-29 2009-12-01 Searete, Llc Optimization of a hardware resource shared by a multiprocessor
US7725693B2 (en) * 2005-08-29 2010-05-25 Searete, Llc Execution optimization using a processor resource management policy saved in an association with an instruction group
US8255745B2 (en) 2005-08-29 2012-08-28 The Invention Science Fund I, Llc Hardware-error tolerant computing
US7779213B2 (en) * 2005-08-29 2010-08-17 The Invention Science Fund I, Inc Optimization of instruction group execution through hardware resource management policies
US7774558B2 (en) 2005-08-29 2010-08-10 The Invention Science Fund I, Inc Multiprocessor resource optimization
US8516300B2 (en) 2005-08-29 2013-08-20 The Invention Science Fund I, Llc Multi-votage synchronous systems
US8423824B2 (en) 2005-08-29 2013-04-16 The Invention Science Fund I, Llc Power sparing synchronous apparatus
US20070050604A1 (en) * 2005-08-29 2007-03-01 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Fetch rerouting in response to an execution-based optimization profile
US7739524B2 (en) * 2005-08-29 2010-06-15 The Invention Science Fund I, Inc Power consumption management
US8181004B2 (en) 2005-08-29 2012-05-15 The Invention Science Fund I, Llc Selecting a resource management policy for a resource available to a processor
US20070050605A1 (en) * 2005-08-29 2007-03-01 Bran Ferren Freeze-dried ghost pages
US7653834B2 (en) * 2005-08-29 2010-01-26 Searete, Llc Power sparing synchronous apparatus
US7647487B2 (en) * 2005-08-29 2010-01-12 Searete, Llc Instruction-associated processor resource optimization
US7877584B2 (en) * 2005-08-29 2011-01-25 The Invention Science Fund I, Llc Predictive processor resource management
US8375247B2 (en) 2005-08-29 2013-02-12 The Invention Science Fund I, Llc Handling processor computational errors
US8214191B2 (en) 2005-08-29 2012-07-03 The Invention Science Fund I, Llc Cross-architecture execution optimization
US8209524B2 (en) 2005-08-29 2012-06-26 The Invention Science Fund I, Llc Cross-architecture optimization
US20070288732A1 (en) * 2006-06-08 2007-12-13 Luick David A Hybrid Branch Prediction Scheme
US8301871B2 (en) * 2006-06-08 2012-10-30 International Business Machines Corporation Predicated issue for conditional branch instructions
US7487340B2 (en) * 2006-06-08 2009-02-03 International Business Machines Corporation Local and global branch prediction information storage
US8935517B2 (en) * 2006-06-29 2015-01-13 Qualcomm Incorporated System and method for selectively managing a branch target address cache of a multiple-stage predictor
US7472264B2 (en) * 2006-06-30 2008-12-30 Sun Microsystems, Inc. Predicting a jump target based on a program counter and state information for a process
US20080040590A1 (en) * 2006-08-11 2008-02-14 Lea Hwang Lee Selective branch target buffer (btb) allocaiton
US20080040591A1 (en) * 2006-08-11 2008-02-14 Moyer William C Method for determining branch target buffer (btb) allocation for branch instructions
US7533252B2 (en) * 2006-08-31 2009-05-12 Intel Corporation Overriding a static prediction with a level-two predictor
TW200816282A (en) * 2006-09-27 2008-04-01 Promos Technologies Inc Method for reducing stress between a conductive layer and a mask layer and use of the same
US8782384B2 (en) * 2007-12-20 2014-07-15 Advanced Micro Devices, Inc. Branch history with polymorphic indirect branch information
US8909907B2 (en) * 2008-02-12 2014-12-09 International Business Machines Corporation Reducing branch prediction latency using a branch target buffer with a most recently used column prediction
US7890739B2 (en) * 2008-02-19 2011-02-15 Oracle America, Inc. Method and apparatus for recovering from branch misprediction
US9021240B2 (en) * 2008-02-22 2015-04-28 International Business Machines Corporation System and method for Controlling restarting of instruction fetching using speculative address computations
US20110093658A1 (en) * 2009-10-19 2011-04-21 Zuraski Jr Gerald D Classifying and segregating branch targets
CN102306094B (zh) * 2011-08-16 2014-03-26 北京北大众志微系统科技有限责任公司 实现现代处理器间接转移预测的装置及方法
US8739186B2 (en) 2011-10-26 2014-05-27 Autodesk, Inc. Application level speculative processing
US8959320B2 (en) * 2011-12-07 2015-02-17 Apple Inc. Preventing update training of first predictor with mismatching second predictor for branch instructions with alternating pattern hysteresis
US9009734B2 (en) * 2012-03-06 2015-04-14 Autodesk, Inc. Application level speculative processing
US9262169B2 (en) 2012-06-11 2016-02-16 International Business Machines Corporation Branch prediction table install source tracking
US9235419B2 (en) * 2012-06-11 2016-01-12 International Business Machines Corporation Branch target buffer preload table
US9250912B2 (en) 2012-06-12 2016-02-02 International Business Machines Corporation Fast index tree for accelerated branch prediction
US9250909B2 (en) 2012-06-12 2016-02-02 International Business Machines Corporation Fast index tree for accelerated branch prediction
US9298465B2 (en) 2012-06-15 2016-03-29 International Business Machines Corporation Asynchronous lookahead hierarchical branch prediction
US9280351B2 (en) 2012-06-15 2016-03-08 International Business Machines Corporation Second-level branch target buffer bulk transfer filtering
US9430241B2 (en) 2012-06-15 2016-08-30 International Business Machines Corporation Semi-exclusive second-level branch target buffer
US9563430B2 (en) 2014-03-19 2017-02-07 International Business Machines Corporation Dynamic thread sharing in branch prediction structures
US20150268961A1 (en) * 2014-03-21 2015-09-24 Samsung Electronics Co., Ltd. Decoupling l2 btb from l2 cache to accelerate search for miss after miss
US10241800B2 (en) * 2015-06-16 2019-03-26 International Business Machines Corporation Split-level history buffer in a computer processing unit
US10747539B1 (en) 2016-11-14 2020-08-18 Apple Inc. Scan-on-fill next fetch target prediction
US10613867B1 (en) * 2017-07-19 2020-04-07 Apple Inc. Suppressing pipeline redirection indications
US10929136B2 (en) * 2018-04-11 2021-02-23 Futurewei Technologies, Inc. Accurate early branch prediction using multiple predictors having different accuracy and latency in high-performance microprocessors
US10817299B2 (en) * 2018-09-07 2020-10-27 Arm Limited Handling multiple control flow instructions
CN111209044B (zh) * 2018-11-21 2022-11-25 展讯通信(上海)有限公司 指令压缩方法及装置
US11163573B2 (en) * 2019-02-13 2021-11-02 International Business Machines Corporation Hierarchical metadata predictor with periodic updates
US11614944B2 (en) * 2020-11-09 2023-03-28 Centaur Technology, Inc. Small branch predictor escape

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0851344A2 (de) * 1996-12-23 1998-07-01 Texas Instruments Incorporated Kombinierte Sprungvorhersage und Cachevorauslade in einem Prozessor

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5163140A (en) * 1990-02-26 1992-11-10 Nexgen Microsystems Two-level branch prediction cache
US5230068A (en) * 1990-02-26 1993-07-20 Nexgen Microsystems Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence
US5608886A (en) * 1994-08-31 1997-03-04 Exponential Technology, Inc. Block-based branch prediction using a target finder array storing target sub-addresses
US5732253A (en) * 1994-10-18 1998-03-24 Cyrix Corporation Branch processing unit with target cache storing history for predicted taken branches and history cache storing history for predicted not-taken branches
US5815700A (en) * 1995-12-22 1998-09-29 Intel Corporation Branch prediction table having pointers identifying other branches within common instruction cache lines
AU3666697A (en) * 1996-08-20 1998-03-06 Idea Corporation A method for identifying hard-to-predict branches to enhance processor performance
US5995749A (en) * 1996-11-19 1999-11-30 Advanced Micro Devices, Inc. Branch prediction mechanism employing branch selectors to select a branch prediction
US5903750A (en) * 1996-11-20 1999-05-11 Institute For The Development Of Emerging Architectures, L.L.P. Dynamic branch prediction for branch instructions with multiple targets
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
US5805878A (en) * 1997-01-31 1998-09-08 Intel Corporation Method and apparatus for generating branch predictions for multiple branch instructions indexed by a single instruction pointer
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0851344A2 (de) * 1996-12-23 1998-07-01 Texas Instruments Incorporated Kombinierte Sprungvorhersage und Cachevorauslade in einem Prozessor

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
DRIESEN, K. and HÖLZLE, U.: The Cascade Predictor: Econimic and Adaptive Branch Target Prediction, University of California Santa Barbara, Technical Report TRCS98-17, June 22, 1998, Internet: http:// www.cs.ucsb.edu/labs/oocsb/papers/TRCS98-17.pdf
DRIESEN, K. and HÖLZLE, U.: The Cascade Predictor:Econimic and Adaptive Branch Target Prediction, University of California Santa Barbara, Technical Report TRCS98-17, June 22, 1998, Internet: http://www.cs.ucsb.edu/labs/oocsb/papers/TRCS98-17.pdf *

Also Published As

Publication number Publication date
WO2000014628A1 (en) 2000-03-16
US20010047467A1 (en) 2001-11-29
CN1328664A (zh) 2001-12-26
CN1302376C (zh) 2007-02-28
TW455810B (en) 2001-09-21
DE19983517T1 (de) 2002-07-11
US6553488B2 (en) 2003-04-22
AU5699299A (en) 2000-03-27
GB0105285D0 (en) 2001-04-18
GB2357871B (en) 2003-09-24
KR20010074978A (ko) 2001-08-09
KR100411529B1 (ko) 2003-12-18
GB2357871A (en) 2001-07-04

Similar Documents

Publication Publication Date Title
DE19983517B4 (de) Verfahren und Einrichtung zur Abzweigvorhersage unter Verwendung einer Abzweig-Vorhersagetabelle einer zweiten Stufe
DE10084556B4 (de) Optimierte Ausführung von statisch sehr wahrscheinlich vorhergesagten Verzweigungsbefehlen
DE3588182T2 (de) Vorausschauende Speicherabrufmethode und System für Verzweigung mit Ausführungsbefehlen
DE69433339T2 (de) Lade-/Speicherfunktionseinheiten und Datencachespeicher für Mikroprozessoren
DE69727773T2 (de) Verbesserte Verzweigungsvorhersage in einem Pipelinemikroprozessor
DE69028153T2 (de) Cache-Speicherfehlgriffsvorhersageverfahren und -vorrichtung
DE2855106C2 (de) Einrichtung zur Durchführung von bedingten Verzweigungen
DE3650232T2 (de) Rechnersteuerung mit Verzweigung in einem einzigen Zyklus.
DE4447238B4 (de) Schaltungsanordnung und Verfahren zum Gewinnen von Informationen zur Verzweigungsvorhersage
DE19983860B4 (de) Ein Verfahren und eine Einrichtung zur verbesserten Prädikatvorhersage
DE69028138T2 (de) Mechanismus zur präzisen Behandlung von Ausnahmebedingungen in einem Prozessor mit gepaarten Befehlen
DE3687744T2 (de) Aktualisierung der verzweigungsgeschichtstabelle in einem pipeline-verarbeitungssystem.
DE3751474T2 (de) Verzweigungsstrom-Koprozessor.
DE3851488T2 (de) Registerverwaltungssystem mit Ausführung von Befehlen in Unordnung in einem Computerprozessor.
DE19855806A1 (de) Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen
DE69031991T2 (de) Verfahren und Gerät zur Beschleunigung von Verzweigungsbefehlen
DE69631778T2 (de) Flexible implementierung eines systemverwaltungsmodus in einem prozessor
DE69738188T2 (de) Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor
DE69030931T2 (de) Mehrfachsequenzprozessorsystem
DE69734403T2 (de) Verfahren im bezug auf die behandlung von konditionellen sprüngen in einer multietagen-pipeline-struktur
DE102004013676A1 (de) Schleifenbetrieb mit null Overhead in einem Mikroprozessor mit Anweisungspuffer
DE4335475A1 (de) Datenverarbeitungseinrichtung mit Cache-Speicher
DE4345028A1 (de) Vorrichtung zur Reduzierung von Verzögerungen aufgrund von Verzweigungen
DE69530895T2 (de) Befehlsvorausladungsschaltung und Cachespeicher
DE19526008A1 (de) Vertikal partitionierter, primärer Befehls-Cache-Speicher

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8607 Notification of search results after publication
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20110301