DE19983860B4 - Ein Verfahren und eine Einrichtung zur verbesserten Prädikatvorhersage - Google Patents

Ein Verfahren und eine Einrichtung zur verbesserten Prädikatvorhersage Download PDF

Info

Publication number
DE19983860B4
DE19983860B4 DE19983860T DE19983860T DE19983860B4 DE 19983860 B4 DE19983860 B4 DE 19983860B4 DE 19983860 T DE19983860 T DE 19983860T DE 19983860 T DE19983860 T DE 19983860T DE 19983860 B4 DE19983860 B4 DE 19983860B4
Authority
DE
Germany
Prior art keywords
predicate
value
operand
predicted
predicate value
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
DE19983860T
Other languages
English (en)
Other versions
DE19983860T1 (de
Inventor
Edward T. San Jose Grochowski
Hans J. San Francisco Mulder
Vincent E. Cambridge Hummel
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 DE19983860T1 publication Critical patent/DE19983860T1/de
Application granted granted Critical
Publication of DE19983860B4 publication Critical patent/DE19983860B4/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/30094Condition code generation, e.g. Carry, Zero flag
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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
    • 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)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

Verfahren zum Ausführen einer wenigstens einen prädizierten Befehl enthaltenden Sequenz von Befehlen, wobei der prädizierte Befehl in Abhängigkeit vom Wert eines ihm zugeordneten Prädikats ausgeführt wird, wobei der Wert des Prädikats als Ergebnis eines Vergleichs eines ersten Operanden mit einem zweiten Operanden bestimmt wird,
dadurch gekennzeichnet,
daß vor der Bestimmung des tatsächlichen Prädikatwerts ein vorhergesagter Prädikatwert bestimmt wird, indem eine erste Mehrzahl von am geringsten bewerteten Bits des ersten Operanden mit einer zweiten Mehrzahl von am geringsten bewerteten Bits des zweiten Operanden verglichen wird; und der prädizierte Befehl in Abhängigkeit von den vorhergesagten Prädikatwert bedingt ausgeführt wird.

Description

  • Die Erfindung betrifft ein Verfahren zum Ausführen einer wenigstens einen prädizierten Befehl enthaltenden Sequenz von Befehlen, wobei der prädizierte Befehl in Abhängigkeit vom Wert eines ihm zugeordneten Prädikats ausgeführt wird, wobei der Wert des Prädikats als Ergebnis eines Vergleichs eines ersten Operanden mit einem zweiten Operanden bestimmt wird. Darüber hinaus bezieht sich die Erfindung auf einen Prozessor zur Abarbeitung einer wenigstens einen prädizierten Befehl enthaltenden Befehlssequenz.
  • Ein Prozessor bearbeitet und steuert den Datenfluß in einem Computersystem. Eine Erhöhung der Geschwindigkeit oder des Durchsatzes des Prozessors führt dazu, daß die Rechenleistung des Computers erhöht wird. Prozessorentwickler benutzen viele verschiedene Techniken, um die Prozessorgeschwindigkeit und den Prozessordurchsatz zu erhöhen, um leistungsfähigere Computer für die Verbraucher zu schaffen. Eine von den Entwicklern verwendete Technik wird Prädikation (Predication) genannt.
  • Die Predication ist die bedingte Ausführung von Befehlen in Abhängigkeit von dem Wert eines Prädikats. Beispielsweise sei die folgende Sequenz von Befehlen betrachtet: COMPARE R1 = R2 → p2 (p2) ADD R3 + R4 → R5
  • Der erste Befehl, COMPARE R1 = R2 → p2, bestimmt den Wert für das Prädikat p2 auf der Grundlage eines Vergleichs der Operanden R1 und R2. Sofern der Wert des Registers R1 gleich dem Wert des Registers R2 ist, dann wird der Wert des Prädikats p2 auf "wahr" gesetzt, und wenn die Werte von R1 und R2 nicht gleich sind, wird p2 auf "falsch" gesetzt. "Wahr" und "Falsch" werden in dem Prozessor üblicherweise als Einzelbitwerte "1" bzw. "0" dargestellt (oder als "0" bzw. "1" bei einer negativen Logikimplementierung).
  • Der zweite Befehl, (p2) ADD R3 + R4 → R5, enthält zwei Teile. Der erste Teil, (p2), macht den zweiten Teil, ADD R3 + R4 → R5, von dem Wert des Prädikats p2 abhängig. Wenn p2 wahr ist (z. B. eine "1"), dann wird der Wert von R5 gleich dem Wert von R3 + R4 gesetzt. Wenn p2 falsch ist (z. B. eine "0"), dann wird der zweite Teil des Befehls übersprungen (das heißt der Befehl wird im wesentlichen wie eine Keine-Operation (Noop) behandelt), und der Prozessor führt den sequentiell nächsten Befehl in der Programmcodesequenz aus.
  • Unglücklicherweise beansprucht der COMPARE-Befehl für seine Ausführung eine lange Zeit. Deswegen kann die Ausführung abhängiger, nachfolgender Befehle, wie beispielsweise des ADD-Befehls, verzögert werden, bis der COMPARE-Befehl seine Ausführung abgeschlossen hat.
  • Aus dem US-Patent 4,999,800 sind Gleitkommaaddierer bekannt, bei denen vorgeschlagen wird, vor Abschluss eines vollständigen Vergleichs von Exponenten-Bits das Ergebnis eines frühzeitigen Vergleichs nur der am geringsten bewerteten Bits der Exponenten zu verwenden, um die Mantissen bereits zu verschieben, bevor der Exponentenvergleich abgeschlossen ist.
  • Der Erfindung liegt ausgehend von der oben genannten Problematik die Aufgabe zugrunde, die Ausführung von prädizierten Befehlen zu beschleunigen.
  • Diese Aufgabe wird erfindungsgemäß durch ein Verfahren mit den Merkmalen des Anspruchs 1 bzw. durch ein Verfahren mit den Merkmalen des Anspruchs 10 sowie durch einen Prozessor mit den Merkmalen des Anspruchs 13 gelöst.
  • Vorteilhafte und/oder bevorzugte Weiterbildungen der Erfindung sind in den Unteransprüchen gekennzeichnet.
  • Die vorliegende Erfindung wird beispielhaft anhand der beigefügten Figuren beschrieben, in welchen:
  • 1 ein Zustandsdiagramm für einen in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung ausgebildeten Prädikatvorhersager ist;
  • 2 ein gemäß einem Ausführungsbeispiel der vorliegenden Erfindung gebildeter Komparator ist;
  • 3 ein in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung ausgebildeter Prädikatvorhersager ist;
  • 4 ein gemäß einem Ausführungsbeispiel der vorliegenden Erfindung ausgebildetes Computersystem ist; und
  • 5 ein Ablaufdiagramm ist, das ein Verfahren gemäß der vorliegenden Erfindung zeigt.
  • Es werden ein Verfahren und eine Einrichtung zum Durchführen einer Prädikatvorhersage beschrieben. Gemäß einem Ausführungsbeispiel der vorliegenden Erfindung wird ein Prädikatwert entweder unter Verwendung historischer Informationen oder durch Vergleich einer Auswahl der am geringsten bewerteten Bits (LSBs) der beiden Operanden des COMPARE-Befehls, der den Prädikatwert bestimmt, vorhergesagt. Wenn der Prädikatvorhersager ein großes Vertrauen in seine Fähigkeit zum genauen Vorhersagen eines Prädikatwerts auf der Grundlage von dem Prädikat zugeordneten historischen Informationen festgestellt hat, so werden dann die historischen Informationen verwendet, um den vorhergesagten Prädikatwert (PPV – Predicted Predicate Value) zu bestimmen. Wenn andererseits der Prädikatvorhersager ein geringes Vertrauen in seine Fähigkeit zum genauen Vorhersagen eines Prädikatwerts auf der Grundlage der historischen Informationen hat, dann wird der PPV durch Vergleichen der LSBs des ersten Operanden mit den LSBs des zweiten Operanden bestimmt. Sobald der PPV für ein Prädikat bestimmt worden ist, wird ein mit dem Prädikat prädizierter Befehl in Abhängigkeit von dem PPV bedingt ausgeführt, indem entweder der Befehl normal ausgeführt oder der Befehl wie eine No-op (Keine-Operation) behandelt wird.
  • Nachdem der COMPARE-Befehl die Ausführung abgeschlossen hat, wird der sich ergebende tatsächliche Prädikatwert (APV – Actual Predicate Value) mit dem PPV verglichen, um die Genauigkeit der Vorhersage zu bestimmen. Sofern die Vorhersage korrekt war, wird die Ausführung der nachfolgenden Befehle normal fortgesetzt. Sofern die Vorhersage falsch war, wird der rückseitige oder hintere Abschnitt (backend portion) der Prozessor-Pipeline einer Flush-Operation unterzogen und die Be fehle werden beginnend mit dem prädizierten Befehl unter Verwendung des APV als Prädikatwert neu ausgeführt. Der APV wird darüber hinaus verwendet, um die dem Prädikat zugeordneten, in einer Prädikatvorgeschichtetabelle gespeicherten historischen Informationen zu aktualisieren.
  • Eine detailliertere Beschreibung der Ausführungsbeispiele der vorliegenden Erfindung einschließlich verschiedener Konfigurationen und Implementierungen ist unten angegeben. Zur Vereinfachung können darüber hinaus die Begriffe "Prädikatregister", "Prädikat", "Prädikat-ID" und "Prädikatwert" in austauschbarer Weise verwendet werden, ebenso können die Begriffe "Register", "Register-ID", "Registerwert" und "Operand" in austauschbarer Weise verwendet werden. Beispielsweise soll unter einer "Prädikatvorhersage" genauer gesagt eine "Prädikatwertvorhersage" verstanden werden. Außerdem soll ein "Vergleichen eines ersten Register mit einem zweiten Register" genauer betrachtet ein "Vergleichen eines in dem ersten Register gespeicherten Werts mit einem in dem zweiten Register gespeicherten Wert" bedeuten.
  • Wiederum sei die folgende Sequenz von Befehlen betrachtet: COMPARE R1 = R2 → p2 (p2) ADD R3 + R4 → R5
  • Wie oben beschrieben, bestimmt der erste Befehl einen Wert für das Prädikat p2. Der zweite Befehl ist ein prädizierter Befehl, dessen Ausführung von dem Wert des Prädikats p2 prädiziert (oder bedingt) wird. Bei einem in hohem Maße pipelineverschachtelten Prozessor kann der COMPARE-Befehl mehrere Takte zum Abschluß seiner Ausführung beanspruchen. Um zu vermeiden, daß der ADD-Befehl um diese Takte verzögert wird, wird der Wert des Prädikats p2 vorhergesagt und der ADD-Befehl wird dann in Abhängigkeit von dem PPV des p2 bedingt ausgeführt.
  • 1 ist ein Zustandsdiagramm für einen gemäß einem Ausführungsbeispiel der vorliegenden Erfindung gebildeten Prädikatvorhersager, in welchem zwei Zustände definiert sind. Zur Vereinfachung wird das Zustandsdiagramm unter Bezugnahme auf die oben erörterte Sequenz von Befehlen beschrieben.
  • Im Zustand 100 wird der PPV für das Prädikat p2 durch den Prädikatvorhersager unter Verwendung der dem Prädikat p2 zugeordneten historischen Informationen berechnet. Wenn nach der Ausführung des COMPARE-Befehls für den APV für p2 bestimmt wird, daß dieser gleich dem PPV ist, dann war die Vorhersage richtig. Richtige Vorhersagen können ein hohes Vertrauensniveau für die Fähigkeit des Prädikatvorhersagers zum richtigen Berechnen eines PPV für p2 auf der Grundlage der historischen Informationen erzeugen. Da das Vertrauensniveau hoch ist, wird bei dem nächsten Mal, wenn die Befehlssequenz in dem Programmcode angetroffen wird, eine nachfolgende Vorhersage für p2 ebenfalls auf der Grundlage dieser historischen Informationen vorgenommen.
  • Wenn jedoch der APV ungleich dem PPV ist, so ist die Vorhersage falsch. Das Vertrauensniveau kann infolge der Fehlvorhersage für p2 abfallen. Wenn das Vertrauensniveau unter einen Schwellenwert absinkt, geht die Zustandsmaschine in den Zustand 101 gemäß 1 über. Dieser Zustand stellt die Operation des Prädikatvorhersagers dar, wenn es ein geringes Vertrauen in die Fähigkeit des Vorhersagers zum richtigen Berechnen eines PPV für p2 auf der Grundlage der historischen Informationen, die p2 zugeordnet sind, gibt. Nach dem Übergang in den Zustand 101 wird eine nachfolgende Vorhersage für p2 auf der Grundlage eines Vergleichs der LSBs der Operanden des COMPARE-Befehls, R1 und R2, vorgenommen, statt die historischen Informationen für p2 zu verwenden.
  • Bei einem Ausführungsbeispiel der vorliegenden Erfindung berechnet der Prädikatvorhersager ein erstes Vertrauensniveau für seine Fähigkeit zum richtigen Berechnen eines PPV für p2 auf der Grundlage historischer Informationen. Der Vorhersager berechnet außerdem ein zweites Vertrauensniveau für seine Fähigkeit zum richtigen Berechnen eines PPV für p2 auf der Grundlage von LSB-Vergleichen. Hohe und niedrige Vertrauensniveaus werden dann durch Vergleichen der beiden berechneten Vertrauensniveaus miteinander bestimmt, wodurch ein variabler Vertrauensniveauschwellenwert erzeugt wird. Bei einem alternativen Ausführungsbeispiel wird nur ein einziges Vertrauensni veau durch den Vorhersager berechnet, und dieses Vertrauensniveau wird mit einem vorgegebenen Schwellenwert verglichen, um hohes und niedriges Vertrauen voneinander abzugrenzen. Für die Zwecke dieser Diskussion soll die Aussage, daß der Prädikatvorhersager ein hohes oder geringes Vertrauen in seine Fähigkeit zum genauen Berechnen eines PPV für ein Prädikat auf der Grundlage historischer Informationen aufweist, äquivalent der Aussage sein, daß der Prädikatvorhersager ein niedriges bzw. hohes Vertrauen in seine Fähigkeit zum genauen Berechnen eines PPV für das Prädikat auf der Grundlage von Operanden-LSB-Vergleichen hat.
  • Wenn das Vertrauensniveau über den Schwellenwert ansteigt, dann kehrt der Prädikatvorhersager in den Zustand 100 gemäß 1 zurück. Im Ergebnis dieses Übergangs wird ein nachfolgender PPV für p2 durch den Prädikatvorhersager unter Verwendung der p2 zugeordneten historischen Informationen berechnet, statt einen Vergleich der LSBs der Operanden zu verwenden. Bei einem alternativen Ausführungsbeispiel der vorliegenden Erfindung könnte das Zustandsdiagramm zusätzliche Zustände enthalten, wie beispielsweise einen Zustand, in welchem der Prozessor angehalten wird, bis der APV für das Prädikat bestimmt worden ist.
  • 2 ist ein gemäß einem Ausführungsbeispiel der vorliegenden Erfindung ausgebildeter Komparator, in welchem die LSBs des in dem Register R1 201 gespeicherten Operanden mit den LSBs des in dem Register R2 202 gespeicherten Operanden verglichen werden, um einen PPV zu bestimmen. Gemäß dem Ausführungsbeispiel von 2 werden nur die fünf am geringsten bewerteten Bits der 64-Bit-Operanden in dem Komparator 203 verglichen, um einen PPV zu bestimmen. Die Bits a(0) und b(0), a(1) und b(1), a(2) und b(2), a(3) und b(3) sowie a(4) und b(4) werden unter Verwendung der XOR-Gatter 210, 211, 212, 213 bzw. 214 auf Gleichheit verglichen. Die Ausgaben jedes der XOR-Gatter 210214 werden als Eingangssignale dem NOR-Gatter 220 zur Verfügung gestellt, dessen Ausgabe der PPV ist. Bei diesem Ausführungsbeispiel zeigt ein PPV von 1 an, daß die am geringsten bewerteten fünf Bits aus dem Operanden des Regis ters 201, a(0)–a(4), gleich den fünf am geringsten bewerteten Bits aus dem Operanden des Registers 202, b(0)–b(4), sind. Ein PPV von 0 zeigt an, daß die Bits ungleich sind.
  • Gemäß einem Ausführungsbeispiel der vorliegenden Erfindung kann das Vergleichen der LSBs der beiden Operanden schneller ein Ergebnis erzeugen, als das Vergleichen sämtlicher Bits der Operanden. Dies kann beispielsweise auf Einfächerungseinschränkungen der logischen Gatter eines Komparators zurückzuführen sein. Die Einfächerungseinschränkung könnte eine zeitraubende, erweiterte Kaskade logischer Gatter erfordern, um sämtliche Bits der Operanden zu vergleichen. Indem nur die LSBs der beiden Operanden anstelle sämtlicher Bits verglichen werden, kann eine schnelle Zwei-Ebenen-Kaskade, wie beispielsweise die in 2 gezeigte, verwendet werden.
  • Im allgemeinen kann dann, wenn die Werte der beiden Operanden nahe beieinander liegen, ein Vergleich einer ausreichenden Anzahl von LSBs der Operanden das Ergebnis des Vergleichs sämtlicher Bits der Operanden vorhersagen. Die Anzahl der LSBs, die zum Erzeugen eines PPV für das Prädikat verglichen werden sollen, kann durch eine geeignete Ausbalancierung der PPV-Genauigkeit, Komparatorgröße und Komparatorgeschwindigkeit bestimmt werden. Beispielsweise erhöht sich in dem Maße, wie die Anzahl der verglichenen LSBs erhöht wird, die Genauigkeit des PPV, aber die Komparatorgröße kann sich ebenfalls erhöhen und die Komparatorgeschwindigkeit könnte sinken. Umgekehrt verringert sich in dem Maße, wie sich die Anzahl der verglichenen LSBs verringert, auch die Komparatorgröße, und die Komparatorgeschwindigkeit erhöht sich, aber die PPV-Genauigkeit sinkt ab.
  • Bei einem Ausführungsbeispiel der vorliegenden Erfindung wird das am geringsten bewertete Viertel der Operandenbits oder weniger Operandenbits verglichen, um den PPV zu bestimmen. Bei 64-Bit-Operanden sind dies die am geringsten bewerteten 16 Bits der Operanden. Bei einem anderen Ausführungsbeispiel werden die acht am geringsten bewerteten oder weniger Operandenbits verglichen, um den PPV zu bestimmen. Bei 64-Bit-Operanden führt dies dazu, daß das am geringsten bewertete Byte jedes Operanden verglichen wird. Man beachte jedoch, daß die vorliegende Erfindung nicht auf 64-Bit-Operandengrößen beschränkt ist. Eine beliebige Anzahl von Operandengrößen kann in Verbindung mit alternativen Ausführungsbeispielen der vorliegenden Erfindung verwendet werden. Darüber hinaus kann eine beliebige Anzahl von LSBs, die geringer als die Gesamtzahl der Bits in den Operanden ist, mit einer entsprechenden Anzahl von LSBs eines anderen Operanden verglichen werden, um den PPV zu bestimmen.
  • Obwohl bei dem Komparator gemäß 2 bestimmt wird, ob die LSBs gleich sind, könnten gemäß alternativen Ausführungsbeispielen der vorliegenden Erfindung ausgebildete Komparatoren eine beliebige mathematische Beziehung zwischen den LSBs oder irgendeinem anderen Abschnitt der Bits der Operanden vergleichen. Bei einer Ausführungsform beispielsweise, bei der ein Prädikat durch einen COMPARE-Befehl bestimmt wird, der feststellt, ob der erste Operand größer oder gleich einem zweiten Operanden ist, berechnet der Komparator den PPV, indem er bestimmt, ob die LSBs oder die am höchsten bewerteten Bits (MSBs) des ersten Operanden größer oder gleich den LSBs bzw. MSBs des zweiten Operanden sind. Bei einem Ausführungsbeispiel, bei welchem ein Prädikat durch einen COMPARE-Befehl bestimmt wird, der feststellt, ob ein erster Operand kleiner oder gleich einem zweiten Operanden ist, berechnet der Komparator den PPV, indem er bestimmt, ob die LSBs oder MSBs des ersten Operanden kleiner als die LSBs bzw. MSBs des zweiten Operanden sind.
  • 3 ist ein Prädikatvorhersager, der in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung ausgebildet ist. Eine Prädikatvorgeschichtetabelle 301 speichert historische Informationen, die jeder einer beliebigen Anzahl von Befehlen zugeordnet sind, und wird durch Befehlszeiger (IPs) indexiert. Zusätzlich speichert die Tabelle 301 das dem IP zugeordnete Vertrauensniveau. Der Registersatz 302 speichert die einer beliebigen Anzahl von Registern zugeordneten Registerwerte. Die Ausgaben der Tabelle 301 und des Registersatzes 302 werden mit den Eingängen des PPV-Berechners 303 gekoppelt, dessen Ausgang mit einem Eingang eines Spekulatives-Prädikat-Registersatzes (SPRF – Speculative Predicate Register File) 304 gekoppelt ist. Ein Ausgang des SPRF 304 ist mit dem PPV-Eingang der Prozessorpipeline 305 und ein weiterer Ausgang des SPRF 304 ist mit einem Eingang des XOR-Gatters 306 gekoppelt. Befehle 300 werden, nachdem sie von einem (nicht gezeigten) Decodierer decodiert worden sind, dem Eingang der Pipeline 305 sowie der mit der Prädikatvorgeschichtetabelle 301, dem Registersatz 302 und dem SPRF 304 gekoppelten IP-, Register- und Prädikatauswahlschaltung zur Verfügung gestellt. Bei einem Ausführungsbeispiel umfaßt diese Auswahlschaltung einen Multiplexer. Der APV-Ausgang der Pipeline 305 ist mit einem Eingang des XOR-Gatters 306 und mit einem Eingang der Prädikatvorgeschichtetabelle 301 gekoppelt. Der Ausgang des XOR-Gatters 306 ist mit dem Flush-Signaleingang der Pipeline 305 gekoppelt. Der IP-Ausgang der Pipeline 305 ist mit der IP-Auswahlschaltung der Tabelle 301 gekoppelt, und der Prädikat-ID-Ausgang der Pipeline 305 ist mit der Prädikatauswahlschaltung des SPRF 304 gekoppelt. Der Registerwertausgang der Pipeline 305 ist mit einem Eingang des PPV-Berechners 303 gekoppelt. Um die Betriebsweise des Prädikatvorhersagers gemäß 3 zu demonstrieren, sei die Ausführung der oben beschriebenen Sequenz von Befehlen betrachtet. Nachdem der Prozessor den ersten Befehl, COMPARE R3 = R2 → p2, abgerufen und decodiert hat, wird der IP des Befehls dem Prädikatvorhersager gemäß 3 aus dem Block 300 zur Verfügung gestellt. Der IP des COMPARE-Befehls wird verwendet, um den richtigen Ort aus der Prädikatvorgeschichtetabelle 301 auszuwählen. Die historischen Informationen und das Vertrauensniveau, die diesem Befehl zugeordnet sind (und somit die p2 zugeordneten historischen Informationen) werden aus der Tabelle 301 gelesen und dem PPV-Berechner 303 zur Verfügung gestellt. Gleichzeitig werden die Register-IDs von R1 und R2 verwendet, um die richtigen Operanden aus dem Registersatz 302 auszuwählen. Eine Auswahl der LSBs der Operanden R1 und R2 wird aus der Tabelle 301 gelesen und dem Komparator 312 in dem PPV-Berechner zur Verfügung gestellt. Der Komparator 312 enthält eine Schaltung, die in einer Weise ausgebildet ist und betrieben wird, die dem Komparator 203 gemäß 2 ähnlich ist.
  • Bei einem Ausführungsbeispiel der vorliegenden Erfindung können die in der Tabelle 301 gemäß 3 gespeicherten historischen Informationen eine beliebige Anzahl von Bits umfassen, und die vorgeschichte-basierte Vorhersageschaltung 311 des PPV-Berechners 303 könnte diese Bits in Verbindung mit herkömmlichen Verzweigungsvorhersagetechniken verwenden, um einen PPV für p2 zu berechnen. Beispielsweise kann ein Zwei-Bit-Aufwärts/Abwärts-Zähler oder eine bimodale Vorhersagetechnik verwendet werden, um einen einzelnen unrichtigen PPV in einer Serie von richtigen PPVs für p2 zu tolerieren. Lokale oder globale Vorhersagetechniken können ebenfalls verwendet werden, oder es kann alternativ eine Kombination von Techniken beispielsweise in einem Auswählervorhersager verwendet werden.
  • Die in der Prädikatvorgeschichtetabelle 301 gemäß 3 gespeicherten historischen Informationen können Informationen umfassen, die auf die Programmvorgeschichte, Kontextkorrelation oder PPV-Genauigkeitsraten bezogen sind. Bei einem alternativen Ausführungsbeispiel der vorliegenden Erfindung könnte ein Teil oder die gesamte vorgeschickte-basierte Vorhersageschaltung 311 in dem Berechner 303 mit der Prädikatvorgeschichtetabelle 301 verschmolzen sein. Auf diese Weise könnte der auf historischen Informationen basierende PPV in der Tabelle berechnet und gespeichert werden, statt ihn "auf dem Wege" von dem Berechner 303 berechnen zu lassen. Bei einem alternativen Ausführungsbeispiel der vorliegenden Erfindung wird die Prädikatvorgeschichtetabelle 301 durch den Prädikat-ID des zugeordneten Prädikats (z. B. p2 bei diesem Beispiel) oder durch den IP des prädizierten Befehls, der den durch den Berechner 303 berechneten PPV verwendet, indexiert.
  • Vertrauensniveaus sind ebenfalls in der Tabelle 301 gemäß 3 gespeichert. Bei einem Ausführungsbeispiel der vorliegenden Erfindung reflektieren diese Niveaus das relative Vertrauen auf die Genauigkeit einer Prädikatvorhersage, die auf der historischen Information basiert. Sofern das Niveau des Vertrauens auf die Genauigkeit der Vorhersagen auf der Grundlage historischer Informationen, die p2 zugeordnet sind, hoch ist (das heißt über einem Schwellenwert), so wird der PPV für p2 unter Verwendung der historischen Informationen bestimmt. Wenn jedoch das Vertrauensniveau gering ist (das heißt unter einem Schwellenwert), so wird der PPV für p2 bestimmt, indem die LSBs der Operanden R1 und R2 verglichen werden. Ein einen Multiplexer 313 enthaltender Auswähler in dem PPV-Berechner 303 gemäß 3 wählt aus, ob der PPV entweder auf der Grundlage historischer Informationen aus der vorgeschichtebasierten Vorhersageschaltung 311 oder auf der Grundlage des Vergleichs der LSBs aus dem Komparator 312 bestimmt werden soll. Der Multiplexer 313 weist einen ersten Eingang auf, der mit dem Ausgang der vorgeschichte-basierten Vorhersageschaltung 311 gekoppelt ist, und einen zweiten Eingang, der mit dem Ausgang des LSB-Komparators 312 gekoppelt ist. Der Steuereingang des Multiplexers 313 wird durch das Vertrauensniveau aus Tabelle 301 gesteuert, und der Ausgang des Multiplexers ist der PPV-Ausgang des PPV-Berechners 303.
  • Man beachte, daß die LSBs der Operanden R1 und R2 aus dem Registersatz 302 eine gewisse Zeit benötigen, um am Komparator 312 in dem PPV-Berechner 303 gemäß 3 einzutreffen. Diese Verzögerung kann beispielsweise auf einem langen Weg zwischen dem Registersatz 302 und dem Berechner 303 basieren. Beispielsweise können sich der Registersatz 302 und der Berechner 303 in separaten Einheiten des Prozessors aufhalten. Alternativ kann die Verzögerung auf einem Lese-nach-Schreiben-Risiko an R1 oder R2 basieren. Bei einem Ausführungsbeispiel der vorliegenden Erfindung wird die Verzögerung reduziert, indem der Berechner 303 mit dem Register-Umgehungsbus aus der Pipeline 305 gekoppelt wird. Dieser Bus ist als Kopplung zwischen dem Registerwert-Ausgang aus der Pipeline 305 und dem Eingang des LSB-Komparators 312 in dem PPV-Berechner 303 dargestellt. Man beachte, daß dieser Bus außerdem ebensogut mit dem Registersatz 302 gekoppelt sein kann (was nicht gezeigt ist), um die Registerwerte in dem Satz 302 zu aktualisieren.
  • Trotz der Verwendung des Umgehungsbusses können die historischen Informationen und Vertrauensniveaus aus Tabelle 301 bei dem PPV-Berechner 303 gemäß 3 eintreffen, bevor die Operanden R1 und R2 den Berechner erreichen. Im Ergebnis kann ein PPV für p2 auf der Grundlage der historischen Informationen berechnet werden, bevor der auf den LSB-Vergleichen basierende PPV berechnet wird. Folglich stellt gemäß einem Ausführungsbeispiel der vorliegenden Erfindung der PPV-Berechner 303 auf der Grundlage der historischen Informationen eine frühe Vorhersage an den SPRF 304 zur Verfügung, wenn ein hohes Vertrauensniveau bestimmt wird. Der Berechner 303 stellt eine späte Vorhersage, die auf den LSB-Vergleichen basiert, an den SPRF 304 zur Verfügung, wenn ein niedriges Vertrauensniveau bestimmt wird.
  • Der PPV für p2 wird, nachdem er von dem Berechner 303 gemäß 3 berechnet worden ist, in den SPRF 304 eingegeben, wo der PPV auf einen Zugriff durch einen nachfolgenden Befehl wartet, der mit p2 prädiziert ist. Gemäß einem Ausführungsbeispiel der vorliegenden Erfindung ist SPRF 304 ein Registersatz, der PPV-Speicherplätze für sämtliche Prädikate enthält. Spekulative Prädikate (das heißt PPVs), die noch nicht in einen Architekturzustand festgeschrieben (committet) worden sind, werden in dem SPRF 304 an dem richtigen Ort gespeichert. Bei einem Ausführungsbeispiel der Erfindung, bei dem die Prozessorarchitektur 64 Prädikate ermöglicht, enthält der SPRF 304 64 Speicherplätze, p0–p63, in welchen PPVs gespeichert werden können.
  • Parallel zu den Aktivitäten des oben beschriebenen Prädikatvorhersagers wird der COMPARE-Befehl dem Eingang der Pipeline 305 gemäß 3 zur Verfügung gestellt. In der Pipeline 305 wird der APV für p2 bestimmt, indem ein vollständiger Bitvergleich der Operanden R1 und R2 durchgeführt wird. Während der COMPARE-Befehl in der Pipeline ausgeführt wird, aber bevor der APV bestimmt worden ist, wird der decodierte ADD-Befehl als nächstes dem Prädikatvorhersager aus dem Block 300 zur Verfügung gestellt. Der Prädikat-ID von p2 wird verwendet, um den richtigen PPV in dem SPRF 304 auszuwählen. Der PPV für p2 wird aus dem SPRF 304 gelesen und dem PPV-Eingang der Pipeline 305 zur Verfügung gestellt, während der prädizierte ADD-Befehl dem Befehlseingang der Pipeline 305 zur Verfügung gestellt wird. Sofern der PPV für p2 "wahr" ist, wird der ADD-Befehl normal ausgeführt. Sofern der PPV für ein Prädikat "falsch" ist, wird der Befehl wie eine no-op behandelt. Das Behandeln eines Befehls wie eine no-op bedeutet, daß der Befehl entweder nicht ausgeführt wird oder, sofern er ausgeführt wird, die sich ergebenden Daten nicht verwendet werden, um die Architekturzustände des Registersatzes zu aktualisieren.
  • Während der prädizierte ADD-Befehl in der Pipeline 305 gemäß 3 ausgeführt wird, schließt der vorhergehende COMPARE-Befehl seine Ausführung ab, und es wird ein APV für p2 bestimmt. Der APV für p2 wird aus der Pipeline 305 an dem APV-Ausgang zur Verfügung gestellt, und der IP für den COMPARE-Befehl wird an dem IP-Ausgang zur Verfügung gestellt. Der IP wird zu der IP-Auswahlschaltung der Prädikatvorgeschichtetabelle 301 übertragen und verwendet, um den richtigen Ort in der Tabelle auszuwählen, in welchen der APV für p2 geschrieben werden soll. Dieser APV wird verwendet, um die historischen Informationen und das Vertrauensniveau, die p2 zugeordnet sind, zu aktualisieren. Zusätzlich wird der Prädikat-ID von p2 von dem Ausgang der Pipeline 305 zu der Prädikatauswahlschaltung des SPRF 304 übertragen, um den richtigen Ort in der Datei auszuwählen, aus welcher der PPV für p2 gelesen wird. Dieser PPV wird mit dem APV für p2 mit Hilfe des XOR-Gatters 306 verglichen, um zu bestimmen, ob das Prädikat p2 richtig vorhergesagt worden ist (das heißt, ob der APV mit dem PPV übereinstimmt) oder ob er falsch vorhergesagt worden ist (das heißt, der APV nicht mit dem PPV übereinstimmt). Wenn der PPV für p2 richtig war, wird die Befehlsausführung normal fortgesetzt. Wenn jedoch der PPV falsch vorhergesagt wurde, wird ein Flush-Signal aus dem XOR-Gatter 306 an die Pipeline 305 gesendet, was die Pipeline 305 veranlaßt, die darin ausgeführten Befehle einer Flush-Operation zu unterziehen.
  • Zusätzlich zur Bereitstellung des APV für p2 an die Prädikatvorgeschichtetabelle 301 und an einen Eingang des XOR- Gatters 306 gemäß 3 wird der APV für p2 zusammen mit seinem Prädikat-ID dem Architekturprädikatregistersatz (APRF – Architectural Predicate Register File) (der nicht gezeigt ist) zur Verfügung gestellt, um den Wert des Prädikats p2 zu aktualisieren. Der APRF speichert nicht-spekulative, in der Architektur festgeschriebene Prädikatwerte, wobei auf ihn durch nachfolgende Befehle, die mit p2 prädiziert sind, zugegriffen wird, um zu bestimmen, ob der Befehl ausgeführt werden soll oder wie eine no-op behandelt werden soll. Bei Bereitstellen des PPV für p2 an das XOR-Gatter 306 macht der SPRF 304 den dem p2 zugeordneten Eintrag ungültig. Auf diese Weise führen zukünftige Zugriffe auf den SPRF 304 durch nachfolgende Befehle, die mit p2 prädiziert sind, zu einem Fehlversuch, was die Befehle zwingt, den APV für p2 zu verwenden, der in dem APRF gespeichert ist.
  • Man beachte, daß die Pipeline 305 gemäß 3 nur einen Teil der vollständigen Pipeline des Prozessors repräsentiert. Insbesondere enthält die Pipeline 305 den Backend-Abschnitt der Pipeline, der die Ausführungsstufe enthält. Da die Prädikatvorhersage in der Nähe des Backend der Pipeline ausgeführt wird, müssen im Vergleich zu einem herkömmlichen falsch vorhergesagten Verzweigungswiederherstellungsprozeß weniger Befehle einer Flush-Operation unterzogen werden. Wenn der PPV für p2 falsch vorhergesagt wird, werden der ADD-Befehl und irgendwelche nachfolgenden Befehle, die direkt oder indirekt auf den falschen PPV vertrauen, der Flush-Operation unterzogen und durch die Pipeline 305 neu ausgeführt.
  • 4 zeigt ein in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung ausgebildetes Computersystem. Der Prozessor 400 ist mit einem Cache 405 gekoppelt und enthält eine Pipeline 401, deren Backend-Abschnitt mit dem Prädikatvorhersager 402 gekoppelt ist. Eine Brücke 410 ist mit dem Prozessor 400 über einen Systembus gekoppelt. Die Brücke 410 wird verwendet, um den Prozessor 400 mit einem Hauptspeicher 415 und mit Peripheriekomponenten 420 und 430 zu koppeln. Eine Brücke 425 koppelt eine Tastatur 435, einen externen Speicher 440 und einen Monitor 445 mit der Brücke 410.
  • Die Peripheriekomponenten 420 und 430 gemäß 4 können Audio- und Video-Eingabe/Ausgabe-Einrichtungen enthalten, wie beispielsweise Audio/Video-Generatoren, -Beschleuniger oder – Analysierer. Der externe Speicher 440 kann eine Festplatte, ein Diskettenlaufwerk, ein Bandlaufwerk oder andere magnetische Speichereinrichtungen, einen batteriegestützten Speicher mit wahlfreiem Zugriff (RAM), eine elektrisch programmierbare Nur-Lese-Speicher (EPROM)-Einrichtung, andere Festkörperspeicherbauelemente, eine CDROM oder weitere nicht-flüchtige maschinenlesbare Speichermedien umfassen.
  • Gemäß einem Ausführungsbeispiel der vorliegenden Erfindung ist ein Operandenwert eines COMPARE-Befehls zusammen mit dem COMPARE-Befehl selbst anfänglich im externen Speicher 440 gemäß 4 gespeichert. Während des Betriebs des Computersystems initiiert der Prozessor 400 eine Übertragung des COMPARE-Befehls und des Operanden aus dem externen Speicher 440 in den Hauptspeicher 415 über die Brücken 425 und 410. Der COMPARE-Befehl und der Operand können dann zu dem Cache 405 übertragen werden, bevor sie von dem Prozessor 400 empfangen und von diesen verwendet werden, oder der COMPARE-Befehl oder der Operand können direkt aus dem Hauptspeicher 415 an den Prozessor 400 über die Brücke 410 übertragen werden.
  • Sobald in der Pipeline 401 gemäß 4 der COMPARE-Befehl decodiert ist, wird der decodierte Befehl dem Prädikatvorhersager 402 zur Verfügung gestellt, welcher so ausgebildet ist, daß er in Kooperation mit der Pipeline 401 in einer Weise arbeitet, die ähnlich der des Prädikatvorhersagers und der Pipeline ist, die oben in Verbindung mit 3 beschrieben worden sind. Während der Prädikatvorhersage werden die LSBs des Operanden mit den LSBs eines zweiten Operanden des COMPARE-Befehls verglichen, um einen PPV für ein Prädikat zu berechnen. Bei einem alternativen Ausführungsbeispiel der vorliegenden Erfindung wird der Operand im Ergebnis einer Berechnung durch den Prozessor 400 erzeugt und nachfolgend im externen Cache 405 oder dem Hauptspeicher 415 gespeichert. Dieser Operand wird dann von dem Prozessor 400 zur Verwendung bei der Ausführung des COMPARE-Befehls wieder abgerufen. Alternativ kann der Operand aus einem Speicherplatz einer der beiden Peripheriekomponenten 420 oder 430 herrühren.
  • 5 ist ein Ablaufdiagramm, das ein Verfahren gemäß der vorliegenden Erfindung zeigt. Im Schritt 510 wird ein Vertrauensniveau bestimmt. Dieses Vertrauensniveau zeigt das Vertrauen in die Fähigkeit des Prädikatvorhersagers an, genau ein Prädikat auf der Grundlage der dem Prädikat zugeordneten historischen Informationen vorherzusagen, wie es von dem Prädikatvorhersager bestimmt wird. Im Schritt 515 bestimmt der Vorhersager, ob das berechnete Vertrauensniveau geringer als ein Schwellenwert ist. Sofern das berechnete Vertrauensniveau geringer als ein Schwellenwert ist, wird der PPV bestimmt, indem die LSBs eines ersten Operanden mit den LSBs eines zweiten Operanden eines COMPARE-Befehls im Schritt 525 verglichen werden. Wenn jedoch das berechnete Vertrauensniveau nicht kleiner als ein Schwellenwert ist, dann wird der PPV im Schritt 520 unter Verwendung historischer Informationen bestimmt, was mit Verzweigungsvorhersagetechniken vergleichbar ist.
  • Diese Erfindung wurde unter Bezugnahme auf ihre speziellen Ausführungsbeispiele beschrieben. Für Personen, die den Vorteil dieser Offenbarung haben, ist es jedoch klar, daß verschiedene Modifikationen und Änderungen an diesen Ausführungsbeispielen vorgenommen werden können, ohne von dem breiteren Geist und Umfang der Erfindung abzuweichen. Die Beschreibung und die Zeichnungen sind demzufolge in einem veranschaulichenden und keinem einschränkenden Sinne zu verstehen.

Claims (22)

  1. Verfahren zum Ausführen einer wenigstens einen prädizierten Befehl enthaltenden Sequenz von Befehlen, wobei der prädizierte Befehl in Abhängigkeit vom Wert eines ihm zugeordneten Prädikats ausgeführt wird, wobei der Wert des Prädikats als Ergebnis eines Vergleichs eines ersten Operanden mit einem zweiten Operanden bestimmt wird, dadurch gekennzeichnet, daß vor der Bestimmung des tatsächlichen Prädikatwerts ein vorhergesagter Prädikatwert bestimmt wird, indem eine erste Mehrzahl von am geringsten bewerteten Bits des ersten Operanden mit einer zweiten Mehrzahl von am geringsten bewerteten Bits des zweiten Operanden verglichen wird; und der prädizierte Befehl in Abhängigkeit von den vorhergesagten Prädikatwert bedingt ausgeführt wird.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß der Vergleich des ersten Operanden mit dem zweiten Operanden durch Ausführen eines COMPARE-Befehls ausgeführt wird, um den tatsächlichen Wert des Prädikats zu bestimmen, der tatsächliche Prädikatwert mit dem vorhergesagten Prädikatwert verglichen wird, und eine Pipeline einer Flush-Operation unterzogen wird, sofern der tatsächliche und der vorhergesagte Prädikatwert nicht übereinstimmen.
  3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, daß der prädizierte Befehl nach der Flush-Operation der Pipeline ausgeführt wird.
  4. Verfahren nach Anspruch 2, dadurch gekennzeichnet, daß die Flush-Operation der Pipeline nur einen Backend-Abschnitt der Pipeline umfaßt.
  5. Verfahren nach Anspruch 2, dadurch gekennzeichnet, daß dem Prädikat entsprechende historische Informationen in einer Prädikatvorgeschichtetabelle nach dem Vergleichen des tatsächlichen Prädikatwerts mit dem vorhergesagten Prädikatwert aktualisiert werden.
  6. Verfahren nach einem der Ansprüche 1–5, dadurch gekennzeichnet, daß das Vergleichen der ersten Mehrzahl mit der zweiten Mehrzahl das Vergleichen des am geringsten bewerteten Viertels oder einer geringeren Anzahl der Bits des ersten Operanden mit dem am geringstens bewerteten Viertel oder einer geringeren Anzahl der Bits des zweiten Operanden umfaßt.
  7. Verfahren nach einem der Ansprüche 1–6, dadurch gekennzeichnet, daß das bedingte Ausführen des prädizierten Befehls das Ausführen des prädizierten Befehls umfaßt, sofern der vorhergesagte Prädikatwert wahr ist.
  8. Verfahren nach Anspruch 7, dadurch gekennzeichnet, daß das bedingte Ausführen des prädizierten Befehls ein Behandeln des prädizierten Befehls wie eine Keine-Operation umfaßt, sofern der vorhergesagte Prädikatwert falsch ist.
  9. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß das Vergleichen der ersten Mehrzahl mit der zweiten Mehrzahl nach dem Feststellen eines geringen Niveaus des Vertrauens in die Fähigkeit zum genauen Berechnen des vorhergesagten Prädikatwerts auf der Grundlage von dem Prädikat zugeordneten historischen Informationen ausgeführt wird.
  10. Verfahren zum Ausführen einer wenigstens einen prädizierten Befehl enthaltenden Sequenz von Befehlen, wobei der prädizierte Befehl in Abhängigkeit vom Wert eines ihm zugeordneten Prädikats ausgeführt wird, wobei der Wert des Prädikats als Ergebnis eines Vergleichs eines ersten Operanden mit einem zweiten Operanden bestimmt wird, dadurch gekennzeichnet, daß vor der Bestimmung des tatsächlichen Prädikatwerts ein vorhergesagter Prädikatwert bestimmt wird, indem: ein Niveau des Vertrauens in eine Fähigkeit zum genauen Bestimmen eines vorhergesagten Prädikatwerts auf der Grundlage von dem Prädikat zugeordneten historischen Informationen bestimmt wird, der vorhergesagte Prädikatwert unter Verwendung der historischen Informationen bestimmt wird, sofern das zuvor bestimmte Vertrauensniveau ein vorgegebenes Niveau erreicht, und dann, wenn das Vertrauensniveau das vorgegebene Niveau nicht erreicht, der vorhergesagte Prädikatwert bestimmt wird, indem mit Hilfe eines COMPARE-Befehls eine erste Mehrzahl von am geringsten bewerteten Bits des ersten Operanden mit einer zweiten Mehrzahl von am geringsten bewerteten Bits des zweiten Operanden verglichen wird.
  11. Verfahren nach Anspruch 10, gekennzeichnet durch: bedingtes Ausführen eines prädizierten Befehls in Abhängigkeit von dem vorhergesagten Prädikatwert; Bestimmen eines tatsächlichen Prädikatwerts für das Prädikat; und Unterziehen eines Backend einer Pipeline einer Flush-Operation, sofern der tatsächliche Prädikatwert und der vorhergesagte Prädikatwert nicht gleich sind.
  12. Verfahren nach Anspruch 10, dadurch gekennzeichnet, daß das Bestimmen des vorhergesagten Prädikatwerts das Vergleichen der niedrigsten acht Bits oder einer geringeren Anzahl von LSBs des ersten Operanden mit den niedrigsten acht Bits oder einer geringeren Anzahl von LSBs des zweiten Operanden umfaßt.
  13. Prozessor (400) zur Abarbeitung einer wenigstens einen prädizierten Befehl enthaltenden Befehlssequenz, wobei der prädizierte Befehl in Abhängigkeit vom Wert eines ihm zugeord neten Prädikats ausgeführt wird, wobei der Wert des Prädikats als Ergebnis eines Vergleichs eines ersten Operanden mit einem zweiten Operanden bestimmt wird, wobei der Prozessor aufweist: eine Prädikatvorgeschichtetabelle (301) zum Speichern von dem Prädikat zugeordneten Vorgeschichte-Informationen; einen Registersatz (302) zum Speichern der Operanden; einen Berechner (303) für einen vorhergesagten Prädikatwert, wobei der Berechner (303) einen mit einem Ausgang der Prädikatvorgeschichtetabelle (301) gekoppelten ersten Eingang aufweist und einen mit einem Ausgang des Registersatzes (302) gekoppelten zweiten Eingang aufweist, und der Berechner (303) einen Ausgang zum Ausgeben des vorhergesagten Prädikatwerts aufweist.
  14. Prozessor nach Anspruch 13, dadurch gekennzeichnet, daß der Ausgang des Berechners (303) mit einem Registersatz (304) für spekulative Prädikate gekoppelt ist.
  15. Prozessor nach Anspruch 14, gekennzeichnet durch: eine IP-Auswahlschaltung, die einen mit der Prädikatvorgeschichtetabelle (301) gekoppelten Ausgang aufweist; eine Registerauswahlschaltung, die einen mit dem Registersatz (302) gekoppelten Ausgang aufweist; und einen Befehlsdecodierer, der einen mit dem Eingang der IP-Auswahlschaltung und mit der Registerauswahlschaltung gekoppelten Ausgang aufweist.
  16. Prozessor nach Anspruch 15, gekennzeichnet durch eine Pipeline (305) mit einem Eingang für einen vorhergesagten Prädikatwert, der mit einem Ausgang des Registersatzes für spekulative Prädikate (304) gekoppelt ist, und einem Ausgang für den tatsächlichen Prädikatwert (APV), der mit einem Eingang der Prädikatvorgeschichtetabelle (301) gekoppelt ist.
  17. Prozessor nach Anspruch 16, gekennzeichnet durch ein XOR-Gatter (306) mit einem ersten Eingang, der mit dem Ausgang (305) der Pipeline für den tatsächlichen Prädikatwert gekop pelt ist, einem zweiten Eingang, der mit einem Ausgang des Registersatzes für vorhergesagte Prädikatwerte (304) gekoppelt ist, und einem Ausgang, der mit einem Flush-Eingang der Pipeline (305) gekoppelt ist.
  18. Prozessor nach Anspruch 14, dadurch gekennzeichnet, daß der Berechner (303) den vorhergesagten Prädikatwert auf der Grundlage eines Vergleichs einer ersten Mehrzahl von am geringsten gewerteten Bits des ersten Operanden mit einer zweiten Mehrzahl von am geringsten bewerteten Bits des zweiten Operanden berechnet.
  19. Prozessor nach Anspruch 18, gekennzeichnet durch einen Registersatz (304) für spekulative Prädikate zum Speichern des vorhergesagten Prädikatwerts (PPV).
  20. Prozessor nach Anspruch 18 oder 19, gekennzeichnet durch eine Pipeline (305), die den vorhergesagten Prädikatwert empfängt und die einen prädizierten Befehl in Abhängigkeit von dem vorhergesagten Prädikatwert bedingt ausführt.
  21. Prozessor nach Anspruch 20, dadurch gekennzeichnet, daß die Pipeline (305) einen Ausgang für einen tatsächlichen Prädikatwert zum Bereitstellen eines tatsächlichen Prädikatwerts (APV) an die Prädikatvorgeschichtetabelle (301) enthält.
  22. Prozessor nach einem der Ansprüche 18–21, dadurch gekennzeichnet, daß der Berechner (303) einen Auswähler (313) enthält, um auf der Grundlage eines Vertrauensniveaus auszuwählen, ob der vorhergesagte Prädikatwert entweder auf der Grundlage historischer Informationen oder auf der Grundlage des Vergleichs bestimmt werden soll.
DE19983860T 1998-12-31 1999-12-23 Ein Verfahren und eine Einrichtung zur verbesserten Prädikatvorhersage Expired - Fee Related DE19983860B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/224,414 US6367004B1 (en) 1998-12-31 1998-12-31 Method and apparatus for predicting a predicate based on historical information and the least significant bits of operands to be compared
US09/224,414 1998-12-31
PCT/US1999/030882 WO2000041072A1 (en) 1998-12-31 1999-12-23 A method and apparatus for improved predicate prediction

Publications (2)

Publication Number Publication Date
DE19983860T1 DE19983860T1 (de) 2002-01-31
DE19983860B4 true DE19983860B4 (de) 2007-12-06

Family

ID=22840567

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19983860T Expired - Fee Related DE19983860B4 (de) 1998-12-31 1999-12-23 Ein Verfahren und eine Einrichtung zur verbesserten Prädikatvorhersage

Country Status (6)

Country Link
US (2) US6367004B1 (de)
CN (1) CN1133924C (de)
AU (1) AU2387400A (de)
DE (1) DE19983860B4 (de)
GB (1) GB2360111B (de)
WO (1) WO2000041072A1 (de)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6988183B1 (en) * 1998-06-26 2006-01-17 Derek Chi-Lan Wong Methods for increasing instruction-level parallelism in microprocessors and digital system
US6367004B1 (en) * 1998-12-31 2002-04-02 Intel Corporation Method and apparatus for predicting a predicate based on historical information and the least significant bits of operands to be compared
US6442679B1 (en) * 1999-08-17 2002-08-27 Compaq Computer Technologies Group, L.P. Apparatus and method for guard outcome prediction
US6625744B1 (en) * 1999-11-19 2003-09-23 Intel Corporation Controlling population size of confidence assignments
US6629238B1 (en) * 1999-12-29 2003-09-30 Intel Corporation Predicate controlled software pipelined loop processing with prediction of predicate writing and value prediction for use in subsequent iteration
US6654878B1 (en) * 2000-09-07 2003-11-25 International Business Machines Corporation Register bit scanning
US7051191B2 (en) * 2001-12-26 2006-05-23 Intel Corporation Resource management using multiply pendent registers
US20030126414A1 (en) * 2002-01-02 2003-07-03 Grochowski Edward T. Processing partial register writes in an out-of order processor
US20040025153A1 (en) * 2002-07-30 2004-02-05 Johnson Teresa L. System and method for software pipelining loops with multiple control flow paths
US6950925B1 (en) * 2002-08-28 2005-09-27 Advanced Micro Devices, Inc. Scheduler for use in a microprocessor that supports data-speculative execution
US7299225B2 (en) 2002-11-26 2007-11-20 International Business Machines Corporation High performance predicate push-down for non-matching predicate operands
US7107438B2 (en) * 2003-02-04 2006-09-12 Via Technologies, Inc. Pipelined microprocessor, apparatus, and method for performing early correction of conditional branch instruction mispredictions
US7234043B2 (en) * 2005-03-07 2007-06-19 Arm Limited Decoding predication instructions within a superscaler data processing system
DE102005050382B4 (de) * 2005-10-20 2012-08-09 Infineon Technologies Ag Prozessor zum Prüfen einer Bedingung für eine bedingte Ausführung eines Programmbefehls
US20070260856A1 (en) * 2006-05-05 2007-11-08 Tran Thang M Methods and apparatus to detect data dependencies in an instruction pipeline
US9946550B2 (en) 2007-09-17 2018-04-17 International Business Machines Corporation Techniques for predicated execution in an out-of-order processor
US7818551B2 (en) * 2007-12-31 2010-10-19 Microsoft Corporation Feedback mechanism for dynamic predication of indirect jumps
CN101324838A (zh) * 2008-07-31 2008-12-17 华为技术有限公司 一种指令执行方法和装置
WO2010065710A1 (en) * 2008-12-03 2010-06-10 Massachusetts Institute Of Technology Resonant optical modulators
US20100217962A1 (en) * 2009-02-26 2010-08-26 Lsi Corporation Predicting a conditional bit value for continuing execution of an instruction
US20110047357A1 (en) * 2009-08-19 2011-02-24 Qualcomm Incorporated Methods and Apparatus to Predict Non-Execution of Conditional Non-branching Instructions
US8433885B2 (en) * 2009-09-09 2013-04-30 Board Of Regents Of The University Of Texas System Method, system and computer-accessible medium for providing a distributed predicate prediction
US10698859B2 (en) 2009-09-18 2020-06-30 The Board Of Regents Of The University Of Texas System Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture
US9021241B2 (en) 2010-06-18 2015-04-28 The Board Of Regents Of The University Of Texas System Combined branch target and predicate prediction for instruction blocks
US20130283023A1 (en) * 2012-04-18 2013-10-24 Qualcomm Incorporated Bimodal Compare Predictor Encoded In Each Compare Instruction
US9495169B2 (en) * 2012-04-18 2016-11-15 Freescale Semiconductor, Inc. Predicate trace compression
US9389868B2 (en) 2012-11-01 2016-07-12 International Business Machines Corporation Confidence-driven selective predication of processor instructions
US9582279B2 (en) 2013-03-15 2017-02-28 International Business Machines Corporation Execution of condition-based instructions
US9934035B2 (en) 2013-03-21 2018-04-03 Nxp Usa, Inc. Device and method for tracing updated predicate values
US9946549B2 (en) 2015-03-04 2018-04-17 Qualcomm Incorporated Register renaming in block-based instruction set architecture
US10180840B2 (en) 2015-09-19 2019-01-15 Microsoft Technology Licensing, Llc Dynamic generation of null instructions
US10936316B2 (en) 2015-09-19 2021-03-02 Microsoft Technology Licensing, Llc Dense read encoding for dataflow ISA
US11016770B2 (en) 2015-09-19 2021-05-25 Microsoft Technology Licensing, Llc Distinct system registers for logical processors
US11977891B2 (en) 2015-09-19 2024-05-07 Microsoft Technology Licensing, Llc Implicit program order
US11681531B2 (en) 2015-09-19 2023-06-20 Microsoft Technology Licensing, Llc Generation and use of memory access instruction order encodings
US10719321B2 (en) 2015-09-19 2020-07-21 Microsoft Technology Licensing, Llc Prefetching instruction blocks
US10871967B2 (en) 2015-09-19 2020-12-22 Microsoft Technology Licensing, Llc Register read/write ordering
US10678544B2 (en) 2015-09-19 2020-06-09 Microsoft Technology Licensing, Llc Initiating instruction block execution using a register access instruction
US10768936B2 (en) 2015-09-19 2020-09-08 Microsoft Technology Licensing, Llc Block-based processor including topology and control registers to indicate resource sharing and size of logical processor
US10452399B2 (en) 2015-09-19 2019-10-22 Microsoft Technology Licensing, Llc Broadcast channel architectures for block-based processors
US10198263B2 (en) 2015-09-19 2019-02-05 Microsoft Technology Licensing, Llc Write nullification
US11126433B2 (en) 2015-09-19 2021-09-21 Microsoft Technology Licensing, Llc Block-based processor core composition register
US10776115B2 (en) 2015-09-19 2020-09-15 Microsoft Technology Licensing, Llc Debug support for block-based processor

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4999800A (en) * 1989-11-13 1991-03-12 Motorola, Inc. Floating point adder with pre-shifter
EP0605876A1 (de) * 1993-01-08 1994-07-13 International Business Machines Corporation Verfahren und System zur verbesserten Genauigkeit der Sprungvorhersage in einem Superskalarprozessor
US5590362A (en) * 1990-03-27 1996-12-31 International Business Machines Corporation Database engine predicate evaluator
WO1997048042A1 (en) * 1996-03-26 1997-12-18 Advanced Micro Devices, Inc. An operand cache for reducing latency of read instructions

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4578750A (en) * 1983-08-24 1986-03-25 Amdahl Corporation Code determination using half-adder based operand comparator
US4967351A (en) * 1986-10-17 1990-10-30 Amdahl Corporation Central processor architecture implementing deterministic early condition code analysis using digit based, subterm computation and selective subterm combination
US5471593A (en) 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
US5627981A (en) * 1994-07-01 1997-05-06 Digital Equipment Corporation Software mechanism for accurately handling exceptions generated by instructions scheduled speculatively due to branch elimination
WO1998008160A1 (en) 1996-08-20 1998-02-26 Idea Corporation A method for identifying hard-to-predict branches to enhance processor performance
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
US5857104A (en) 1996-11-26 1999-01-05 Hewlett-Packard Company Synthetic dynamic branch prediction
US6021487A (en) * 1996-12-16 2000-02-01 Intel Corporation Method and apparatus for providing a signed integer divide by a power of two
US5909566A (en) * 1996-12-31 1999-06-01 Texas Instruments Incorporated Microprocessor circuits, systems, and methods for speculatively executing an instruction using its most recently used data while concurrently prefetching data for the instruction
US6092187A (en) * 1997-09-19 2000-07-18 Mips Technologies, Inc. Instruction prediction based on filtering
US6009512A (en) * 1997-10-27 1999-12-28 Advanced Micro Devices, Inc. Mechanism for forwarding operands based on predicated instructions
US6353883B1 (en) * 1998-08-04 2002-03-05 Intel Corporation Method and apparatus for performing predicate prediction
US6240510B1 (en) * 1998-08-06 2001-05-29 Intel Corporation System for processing a cluster of instructions where the instructions are issued to the execution units having a priority order according to a template associated with the cluster of instructions
US6115808A (en) * 1998-12-30 2000-09-05 Intel Corporation Method and apparatus for performing predicate hazard detection
US6367004B1 (en) * 1998-12-31 2002-04-02 Intel Corporation Method and apparatus for predicting a predicate based on historical information and the least significant bits of operands to be compared
US6442679B1 (en) * 1999-08-17 2002-08-27 Compaq Computer Technologies Group, L.P. Apparatus and method for guard outcome prediction
US6513109B1 (en) * 1999-08-31 2003-01-28 International Business Machines Corporation Method and apparatus for implementing execution predicates in a computer processing system
US6629238B1 (en) * 1999-12-29 2003-09-30 Intel Corporation Predicate controlled software pipelined loop processing with prediction of predicate writing and value prediction for use in subsequent iteration

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4999800A (en) * 1989-11-13 1991-03-12 Motorola, Inc. Floating point adder with pre-shifter
US5590362A (en) * 1990-03-27 1996-12-31 International Business Machines Corporation Database engine predicate evaluator
EP0605876A1 (de) * 1993-01-08 1994-07-13 International Business Machines Corporation Verfahren und System zur verbesserten Genauigkeit der Sprungvorhersage in einem Superskalarprozessor
WO1997048042A1 (en) * 1996-03-26 1997-12-18 Advanced Micro Devices, Inc. An operand cache for reducing latency of read instructions

Also Published As

Publication number Publication date
WO2000041072A1 (en) 2000-07-13
US6367004B1 (en) 2002-04-02
CN1133924C (zh) 2004-01-07
US20020016907A1 (en) 2002-02-07
CN1346462A (zh) 2002-04-24
GB2360111A (en) 2001-09-12
DE19983860T1 (de) 2002-01-31
GB0114437D0 (en) 2001-08-08
AU2387400A (en) 2000-07-24
US7085919B2 (en) 2006-08-01
GB2360111B (en) 2003-11-05

Similar Documents

Publication Publication Date Title
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
DE69420540T2 (de) Verfahren und Vorrichtung zum Implementieren eines vierstufigen Verzweigungsauflosungssystem in einem Rechnerprozessor
DE69033443T2 (de) Mechanismus zur Verzweigungsrücksetzung in einem Prozessor mit gepaarten Befehlen
DE69325086T2 (de) Verfahren und System für spekulative Befehlsausführung
DE69227429T2 (de) Anordnung und Verfahren zur Auflösung von Abhängigkeiten unter mehreren Befehlen in einer Speicheranordnung
DE68927911T2 (de) Datenverarbeitungssystem
DE69719235T2 (de) Prozessor und Verfahren zur spekulativen Ausführung von bedingten Verzweigungsbefehlen unter Verwendung einer von mehreren Verzweigungsvorhersageverfahren
DE69031991T2 (de) Verfahren und Gerät zur Beschleunigung von Verzweigungsbefehlen
DE3650232T2 (de) Rechnersteuerung mit Verzweigung in einem einzigen Zyklus.
DE69805275T2 (de) Verfahren und Anordnung zur Reduzierung von Störungen in einer Verzweigungsgeschichtstabelle eines Mikroprozessors
DE69033398T2 (de) Rechnerarchitektur mit Mehrfachbefehlsausgabe
DE3486211T2 (de) Kodebestimmung mit einem auf Halbaddierer basierten Operandenvergleicher.
DE69534148T2 (de) Rechnersystem zur Ausführung von Verzweigungsbefehlen
DE69032635T2 (de) Verfahren und Vorrichtung zur Erkennung von Betriebsmittelkonflikten in einer Pipeline-Verarbeitungseinheit
DE69904189T2 (de) Konfigurierter prozessor zur abbildung von logischen registernummern auf physikalische registernummern unter verwendung von virtuellen registernummern
DE69932066T2 (de) Mechanismus zur "store-to-load forwarding"
DE3650413T2 (de) Verfahren und Vorrichtung zur Annulierung eines Befehls.
DE69327927T2 (de) Schnelles Vorausholen und Zuteilung von Befehlen mittels vorausschauender Anmerkungen von früher vorausgeholten
DE69904083T2 (de) Anordnung und verfahren zum etikettieren und ungültig-erklären von spekulativ ausgeführten befehlen
DE69430053T2 (de) Ganzzahldivisionsvorrichtung und -verfahren
DE19506435C2 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE69418146T2 (de) Temporärer Registersatz für einen superpipeline-superskalaren Prozessor
DE4222776A1 (de) Verfahren und anordnung fuer eine verzweigungsbefehlsverarbeitung in einer parallelverarbeitungseinheit
DE4447238A1 (de) Einrichung und Verfahren zum Vorhersagen von Verzweigungsinstruktionen

Legal Events

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

Effective date: 20130702