DE4211222A1 - Verfahren und vorrichtung zur abzweigungs-vorhersage unter verwendung einer abzweigungs-vorhersagetabelle - Google Patents

Verfahren und vorrichtung zur abzweigungs-vorhersage unter verwendung einer abzweigungs-vorhersagetabelle

Info

Publication number
DE4211222A1
DE4211222A1 DE4211222A DE4211222A DE4211222A1 DE 4211222 A1 DE4211222 A1 DE 4211222A1 DE 4211222 A DE4211222 A DE 4211222A DE 4211222 A DE4211222 A DE 4211222A DE 4211222 A1 DE4211222 A1 DE 4211222A1
Authority
DE
Germany
Prior art keywords
branch
address
instructions
entry
commands
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.)
Granted
Application number
DE4211222A
Other languages
English (en)
Other versions
DE4211222B4 (de
Inventor
Mitsuo Saito
Takeshi Aikawa
Junji Mori
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Publication of DE4211222A1 publication Critical patent/DE4211222A1/de
Application granted granted Critical
Publication of DE4211222B4 publication Critical patent/DE4211222B4/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
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/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)

Description

Die vorliegende Erfindung bezieht sich auf eine Abzweigungs-Vorhersage in einem Computer, und insbesondere auf eine Abzweigungs-Vorhersage, die sich für einen Typ von Computer (einem sogenannten Super-Skaler-Prozessor) eignet, der mehrere Befehle gleichzeitig ausführen kann.
Die Verwendung einer Abzweigungs-Vorhersage-Tabelle (auch bekannt als Abzweigungs-Ziel-Buffer) ist im Stand der Technik als eine effektive Methode zur Beschleunigung der Abzweigungsprozessore in einem Computer bekannt, und ist in einem im Handel erhältlichen Computer, wie zum Beispiel den AM 29 000 Mikroprozessor der Firma AMD verwendet worden.
Eine derartige herkömmliche Abzweigungs-Vorhersage-Tabelle arbeitet nach einem einfachen Prinzip, nämlich wenn ein Abzweigungsbefehl ausgeführt wird, werden die Abzweigungsadresse und die Abzweigungs-Zieladresse paarweise in der Abzweigungs-Vorhersage-Tabelle aufgezeichnet, so daß wenn derselbe Abzweigungsbefehl das nächste Mal geholt wird, der Befehl des passenden Abzweigungsziels bei einem nächsten Prozeßzeitpunkt sofort nach dem Holen des Abzweigungsbefehls vor der tatsächlichen Ausführung des Abzweigungsbefehls geholt werden kann, entsprechend der Abzweigungs-Zieladresse, die der Abzweigungsadresse von demjenigen Abzweigungsbefehl entspricht, der in der Abzweigungs-Vorhersage-Tabelle aufgezeichnet ist, so daß der Abzweigungsprozeß für denjenigen Abzweigungsbefehl mit einer höheren Geschwindigkeit ausgeführt werden kann. Die Richtigkeit des entsprechend der Abzweigungs-Vorhersage-Tabelle vorhergesagten Abzweigungsziels wird bei der eigentlichen Ausführung des Abzweigungsbefehls überprüft, und wenn das vorausgesagte Abzweigungsziel falsch ist, wird das korrigierte Holen des passenden Abzweigungsziels nach der tatsächlichen Ausführung des Abzweigungsbefehls ausgeführt.
Um die Effektivität einer derartigen Abzweigungs-Vorhersage-Tabelle zu verbessern, ist es wünschenswert, die Abzweigungs-Vorhersage-Tabelle mit einen vollständig assoziativen oder einen Mehrweg-Assoziativ-Speicher zu bilden, der dieselbe Adresse an einer beliebigen Position in dem Speicher speichern kann.
Wenn jedoch diese Art von Speicher in einer herkömmlichen Abzweigungs-Vorhersage-Tabelle verwendet wird, besteht die Möglichkeit des Auftretens einer sogenannten Vielfacheintragung, bei der die identischen Daten an einer Vielzahl von Positionen in dem Speicher gespeichert werden, was zu einer Verwechslung bei der Abzweigungs-Vorhersage führen kann.
Vor kurzem ist außerdem ein Typ von Computer, ein sogenannter VLIW- (mit einem sehr langen Befehlswort oder very long instruction word) oder Super-Skalar-Prozessor entwickelt worden, der mehrere Befehle gleichzeitig ausführen kann. Nachdem eine Vielzahl von Befehlen gleichzeitig ausgeführt werden, wird in dieser Art von Computern eine Gruppe vom gleichzeitig auszuführenden Befehlen zusammen unter Verwendung einer Adresse eines Befehls in der Gruppe geholt, so daß sogar wenn ein Abzweigungsbefehl in der Gruppe existiert die zum Holen dieser Gruppe von Befehlen verwendete Adresse selber nicht notwendigerweise die Adresse des Abzweigungsbefehls in der Gruppe anzeigt. Aufgrund dessen ist es unmöglich gewesen, die geeignete Abzweigungs-Vorhersage durch einfaches Anwenden der oben beschriebenen herkömmlichen Abzweigungs-Vorhersage-Tabelle auf einen derartigen Super-Skalar-Prozessor zu erreichen.
Außerdem war es bei einen Prozessor vom Super-Skalar-Typ schwierig, ein anderes herkömmlich bekanntes Verfahren, nämlich das sogenannte verzögernde Befehle Verfahren, zur Beschleunigung des Abzweigungsprozesses in einem Computer anzuwenden, bei dem die Ausführungen der Befehle, die sich vor dem Abzweigungsbefehl befinden, aber sehr wohl vor der Ausführung des Abzweigungsbefehl ausgeführt werden können, vorher auf die Prozeßzeitpunkte nach der Ausführung des Abzweigungsbefehls verzögert werden, weil die Anzahl von verzögerten für jeden Abzweigungsbefehl erforderlichen Befehle in der Praxis zu groß ist.
Es ist daher Aufgabe der vorliegenden Erfindung, ein Verfahren und eine Vorrichtung zur Abzweigungs-Vorhersage unter Verwendung einer Abzweigungs-Vorhersage-Tabelle zu schaffen, die aus einem Assoziativ-Speicher so gebildet ist, daß die Abzweigungs-Vorhersage mit einer höheren Geschwindigkeit effektiver ausgeführt werden kann.
Es ist eine weitere Aufgabe der vorliegenden Erfindung, ein Verfahren und eine Vorrichtung zur Abzweigungs-Vorhersage unter Verwendung einer Abzweigungs-Vorhersage-Tabelle zu schaffen, die auf einen Prozessor eines Super-Skalar-Typs anwendbar ist, ohne eine Verwechslung bei der Abzweigungs-Vorhersage zu verursachen.
Entsprechend einem Aspekt der vorliegenden Erfindung wird eine Vorrichtung zur Abzweigungs-Vorhersage geschaffen, die umfaßt: eine Prozessoreinrichtung zum gleichzeitigen Ausführen einer Gruppe von Befehlen; eine Abzweigungs-Vorhersage-Tabelleneinrichtung zum Aufzeichnen von Eintragungen, wobei jede Eintragung eine Abzweigungsadresse, die eine Gruppe von Befehlen mit einem vorhergesagten Abzweigungsbefehl anzeigt, eine Abzweigungs-Zieladresse des vorhergesagten Abzweigungsbefehls, und eine Befehlsposition enthält, die eine Position des vorhergesagten Abzweigungsbefehls in der von der Abzweigungsadresse angezeigten Gruppe von Befehlen anzeigt; eine Befehls-Holeinrichtung zum Holen der Gruppe von Befehlen, die von der Prozessoreinrichtung gleichzeitig ausgeführt werden sollen, die die Gruppe von Befehlen holt, die von einer Abzweigungs-Zieladresse eines vorhergesagten Abzweigungsbefehls für die gegenwärtig geholte Gruppe von Befehlen zu einem nächsten Verarbeitungszeitpunkt anzeigt, zu dem der vorhergesagte Abzweigungsbefehl für die gegenwärtig geholte Gruppe von Befehlen in einer Eintragung in der Abzweigungs-Vorhersage-Tabelleneinrichtung mit einer Abzweigungsadresse speichert, die mit einer Adresse der gegenwärtig geholten Gruppe von Befehlen übereinstimmt; eine Vorhersage-Beurteilungseinrichtung, um den vorausgesagten Abzweigungsbefehl für die gegenwärtig geholte Gruppe von Befehlen als richtig zu beurteilen, wenn der vorausgesagte Abzweigungsbefehl tatsächlich bei einer tatsächlichen Ausführung der gegenwärtig geholten Gruppe von Befehlen angetroffen wird; und eine Ungültigkeitseinrichtung für vorhergesagte Befehle zum Ungültigerklären der Gruppe von Befehlen, die von der Abzweigungs-Zieladresse des vorhergesagten Abzweigungsbefehls für die gegenwärtig geholte Gruppe von Befehlen angezeigt wird, die von der Befehls-Holeinrichtung zum nächsten Verarbeitungszeitpunkt geholt werden, wenn die Vorhersage-Beurteilungseinrichtung den vorhergesagten Abzweigungsbefehl als nicht richtig beurteilt.
Entsprechend einem weiteren Aspekt der vorliegenden Erfindung wird eine Vorrichtung zur Abzweigungs-Vorhersage geschaffen, die umfaßt: eine Prozessoreinrichtung zum Ausführen von Befehlen; eine aus einem Assoziativ-Speicher gebildete Abzweigungs-Vorhersage-Tabelleneinrichtung zum Speichern von Eintragungen, wobei jeder Eintragung eine Abzweigungsadresse, die die gleichzeitig auszuführenden Befehle, die einen vorhergesagten Abzweigungsbefehl enthalten, anzeigt, eine Abzweigungs-Zieladresse des vorhergesagten Abzweigungsbefehls, und eine Eintragungsadresse enthält, die eine Position jedes Eintrags in dem Assoziativ-Speicher der Abzweigungs-Vorhersage-Tabelleneinrichtung anzeigt; eine Befehls-Holeinrichtung zum Holen von durch die Prozessoreinrichtung gleichzeitig auszuführenden Befehlen, die die von einer Abzweigungs-Zieladresse eines vorhergesagten Abzweigungsbefehls für gegenwärtig geholte Befehle angezeigten Befehle zu einem nächsten Verarbeitungszeitpunkt holt, zu dem der vorhergesagte Abzweigungsbefehl für die gegenwärtig geholten Befehle in einem Eintrag in der Abzweigungs-Vorhersage-Tabelleneinrichtung mit einer Abzweigungsadresse gespeichert wird, die mit einer Adresse der gegenwärtig geholten Befehle übereinstimmt; eine Vorhersage-Beurteilungseinrichtung zur Beurteilung des vorhergesagten Abzweigungsbefehls für die gegenwärtig geholten Befehle als richtig, wenn der vorhergesagte Abzweigungsbefehl tatsächlich bei einer tatsächlichen Ausführung der gegenwärtig geholten Befehle angetroffen wird; eine Ungültigkeitseinrichtung für vorhergesagte Befehle um die von der Abzweigungs-Zieladresse des vorhergesagten Abzweigungsbefehls für die gegenwärtig geholten Befehle, die von der Befehls-Holeinrichtung zu dem nächsten Bearbeitungszeitpunkt geholt werden für ungültig zu erklären, wenn die Vorhersage-Beurteilungseinrichtung den vorhergesagten Abzweigungsbefehl als nicht korrekt beurteilt; und eine Tabellen-Speichereinrichtung, um den Eintrag der den vorhergesagten Abzweigungsbefehl für die gegenwärtig geholten Befehle speichert, in die Abzweigungs-Vorhersage-Tabelleneinrichtung zurückzuschreiben, wenn die Vorhersage-Beurteilungseinrichtung den vorhergesagten Abzweigungsbefehl als nicht richtig beurteilt, indem die Eintragungsadresse der Eintragung verwendet wird, die den vorhergesagten Abzweigungsbefehls für die gegenwärtig geholten Befehle aufzeichnet.
Entsprechend einem weiteren Aspekt der vorliegenden Erfindung wird ein Verfahren zur Abzweigungs-Vorhersage für einen Prozessor geschaffen, der eine Gruppe von Befehlen gleichzeitig ausführen kann, umfassend die folgenden Schritte: Vorsehen einer Abzweigungs-Vorhersage-Tabelle, um Eintragungen zu speichern, wobei jeder Eintrag eine Abzweigungsadresse, die eine Gruppe von Befehlen, die einen vorhergesagten Abzweigungsbefehl enthält, anzeigt, eine Abzweigungs-Zieladresse des vorhergesagten Abzweigungsbefehls, und eine Befehlsposition, die eine Position des vorhergesagten Abzweigungsbefehls in der von der Abzweigungsadresse angezeigten Gruppe von Befehlen anzeigt, enthält; Holen der Gruppe von durch den Prozessor zu einem nächsten Verarbeitungszeitpunkt gleichzeitig auszuführenden Befehlen, die von einer Abzweigungs-Zieladresse eines vorhergesagten Abzweigungsbefehls für eine gegenwärtig geholte Gruppe von Befehlen angezeigt werden, zu dem der vorhergesagte Abzweigungsbefehl für die gegenwärtig geholte Gruppe von Befehlen in einer Eintragung in der AbzweigungsVorhersage-Tabelleneinrichtung mit einer Abzweigungsadresse gespeichert wird, die mit einer Adresse der gegenwärtig geholten Gruppe von Befehlen übereinstimmt; tatsächliches gleichzeitiges Ausführen der im Holschritt geholten Gruppe von Befehlen durch den Prozessor; Beurteilen des vorhergesagten Abzweigungsbefehls für die gegenwärtig geholte Gruppe von Befehlen als richtig, wenn der vorhergesagten Abzweigungsbefehl bei der tatsächlichen Ausführung der gegenwärtig geholten Gruppe von Befehlen in dem tatsächlichen Ausführungsschritt tatsächlich angetroffen wird; und Ungültigerklären der Gruppe von Befehlen, die durch die Abzweigungs-Zieladresse des vorhergesagten Abzweigungsbefehls für die gegenwärtig geholte Gruppe von Befehlen angezeigt werden, die in dem Holschritt zu einem nächsten Verarbeitungszeitpunkt geholt werden, wenn der vorhergesagte Abzweigungsbefehl in dem Beurteilungsschritt als nicht richtig beurteilt wird.
Entsprechend einem weiteren Aspekt der vorliegenden Erfindung wird ein Verfahren zur Abzweigungs-Vorhersage geschaffen, das die folgenden Schritte umfaßt: Vorsehen einer Abzweigungs-Vorhersage-Tabelle, die von einem Assoziativ-Speicher zur Speicherung von Einträgen gebildet wird, wobei jeder Eintrag eine Abzweigungsadresse, die gleichzeitig auszuführende Befehle, die einen vorhergesagten Abzweigungsbefehl enthalten, anzeigt, eine Abzweigungs-Zieladresse des vorhergesagten Abzweigungsbefehls, und einer Eintragungsadresse, die eine Position jedes Eintrags in dem Assoziativ-Speicher der Abzweigungs-Vorhersage-Tabelle anzeigt, enthält; Holen der von einem Prozessor gleichzeitig auszuführenden Befehle, die von einer Abzweigungs-Zieladresse eines vorhergesagten Abzweigungsbefehls für gegenwärtig geholte Befehle zu einem nächsten Verarbeitungszeitpunkt angezeigt werden, für den der vorhergesagte Abzweigungsbefehl für die gegenwärtig geholten Befehle in einem Eintrag in der Abzweigungs-Vorhersage-Tabelle mit einer Abzweigungsadresse gespeichert wird, die mit einer Adresse der gegenwärtig geholten Befehle übereinstimmt; tatsächliches gleichzeitiges Ausführen der im Holschritt geholten Befehle durch den Prozessor; Beurteilen des vorhergesagten Abzweigungsbefehls für die gegenwärtig geholten Befehle als richtig, wenn der vorhergesagte Abzweigungsbefehl tatsächlich in einer tatsächlichen Ausführung der gegenwärtig geholten Befehle in dem tatsächlichen Ausführungsschritt tatsächlich auftritt; Ungültigerklären der Befehle, die von der Abzweigungs-Zieladresse des vorhergesagten Abzweigungsbefehls für die gegenwärtig geholten Befehle angezeigt werden, die in dem Holschritt zu dem nächsten Verarbeitungszeitpunkt geholt werden, wenn der vorhergesagte Abzweigungsbefehl in dem Beurteilungsschritt als nicht richtig beurteilt wird; und Neuschreiben der Eintragung, die den vorhergesagten Abzweigungsbefehl für die gegenwärtig geholten Befehle speichert, in der Abzweigungs-Vorhersage-Tabelle, wenn der vorhergesagte Abzweigungsbefehl im Beurteilungsschritt als nicht richtig beurteilt wird, indem die Eintragungsadresse des Eintrags der den vorhergesagten Abzweigungsbefehl für die gegenwärtig geholten Befehle speichert, verwendet wird.
Weitere Merkmale und Vorteile der vorliegenden Erfindung werden aus der nun folgenden Beschreibung unter Bezugnahme auf die Zeichnungen ersichtlich.
In den Figuren zeigen:
Fig. 1 ein Blockdiagramm eines ersten Ausführungsbeispiels einer Vorrichtung für Abzweigungs-Vorhersage entsprechend der vorliegenden Erfindung;
Fig. 2 ein Flußdiagramm für einen Betrieb der Abzweigungs-Vorhersagevorrichtung aus Fig. 1 zum Zeitpunkt des Holens eines Befehls;
Fig. 3 ein Flußdiagramm für einen Betrieb der Abzweigungs-Vorhersagevorrichtung aus Fig. 1 zum Zeitpunkt der Ausführung eines Befehls;
Fig. 4 ein Blockdiagramm eines zweiten Ausführungsbeispiels einer Vorrichtung für Abzweigungs-Vorhersage entsprechend der vorliegenden Erfindung;
Fig. 5 ein Flußdiagramm für einen Betrieb einer Eintragungsadressen-Erzeugungseinheit in der Abzweigungs-Vorhersagevorrichtung aus Fig. 4;
Fig. 6 ein Prozeß-Flußdiagramm in der Vorrichtung aus Fig. 4, um deren Betrieb zu erklären;
Fig. 7 ein Blockdiagramm eines dritten Ausführungsbeispiels einer Vorrichtung zur Abzweigungs-Vorhersage entsprechend der vorliegenden Erfindung;
Fig. 8 ein Blockdiagramm eines vierten Ausführungsbeispiels einer Vorrichtung zur Abzweigungs-Vorhersage entsprechend der vorliegenden Erfindung;
Fig. 9 bis 14 eine Anzahl von Schaltbildern, die eine praktische Verwirklichung der Abzweigungs-Vorhersage-Vorrichtung entsprechend der vorliegenden Erfindung zeigen;
Fig. 15 bis 17 eine Anzahl von Schaltbildern, die eine Steuervorrichtung zeigen, die mit der praktischen Verwirklichung der in Fig. 9 bis Fig. 14 gezeigten AbzweigungsVorhersage-Vorrichtung assoziiert werden sollen;
Fig. 18 und 19 eine Anzahl von Schaltbildern, die eine Verbindung der praktischen Verwirklichung der in Fig. 9 bis Fig. 14 gezeigten Abzweigungs-Vorhersagevorrichtung und der in Fig. 15 bis Fig. 17 gezeigten Steuervorrichtung zeigen.
Unter Bezugnahme auf Fig. 1 wird das erste Ausführungsbeispiel einer Vorrichtung zur Abzweigungs-Vorhersage entsprechend der vorliegenden Erfindung ausführlich beschrieben. Dieses erste Ausführungsbeispiel eignet sich für einen Super-Skalar-Typ-Prozessor, der mehrere Befehle gleichzeitig ausführen kann.
In diesem Ausführungsbeispiel umfaßt die Vorrichtung ganz allgemein einen Prozessorabschnitt 50 und einen Abzweigungs-Vorhersageabschnitt 60.
Der Prozessorabschnitt 50 umfaßt außerdem: einen Cache-Speicher 1 zur Speicherung von auszuführenden Befehlen; einen Befehlsbuffer 2 zur Speicherung von den als nächstes auszuführenden Befehlen, die aus dem Cache-Speicher 1 geholt werden; eine Befehls-Ungültigkeitseinheit 3, die ausgewählte Befehle von den in dem Befehlsbuffer 2 gespeicherten Befehlen für ungültig erklären kann; eine Prozessorgruppe 4 zur tatsächlichen Ausführung der Befehle; eine Abzweigungs-Überwachungseinheit 5, um das Ausführungsergebnis der in der Befehls-Ungültigkeitseinheit 3 nicht für ungültig erklärten Befehle zu überwachen; und einen Programmzähler 6, um die Adresse der als nächstes aus dem Cache-Speicher 1 zu holenden Befehle zu definieren.
In der folgenden Beschreibung soll nun zur genauen Erklärung angenommen werden, daß die Prozessorgruppe 4 einen Super-Skalar-Typ-Prozessor bildet und zu einem Zeitpunkt vier Befehle gleichzeitig ausführen kann, so daß eine Gruppe-von vier Befehlen zu einem Zeitpunkt in den Befehlsbuffer 2 geholt werden. Hierbei wird jede Gruppe der gleichzeitig zu holenden Befehle durch die Adresse des obersten Befehls von den Befehlen der Gruppe identifiziert, so daß, wenn die Befehle mit Adressen (100) bis (103) gleichzeitig geholt werden, diese Gruppe von Befehlen durch die Adresse (100) des obersten Befehls von den Befehlen dieser Gruppe identifiziert wird.
Der Abzweigungs-Vorhersageabschnitt 60 umfaßt außerdem: eine Abzweigungs-Vorhersage-Tabelle 7, die aus einem vollständig Assoziativ-Speicher gebildet ist, zur Speicherung von Abzweigungs-Vorhersage-Tabelleneintragungen, wobei jeder Eintrag eine Abzweigungsadresse, deren entsprechende Abzweigungs-Zieladresse und deren entsprechende Befehlsposition enthält, die eine Position des Abzweigungsbefehls in der durch die Abzweigungsadresse identifizierte Gruppe von Befehlen anzeigt, die in der Abzweigungs-Vorhersage-Tabelle 7 entsprechend den in der Vergangenheit angetroffenen tatsächlichen Abzweigungsbefehlen gespeichert werden; eine Adressen-Inkrementeinheit 8, um zu der Adresse der zuletzt geholten Befehle ein Inkrement in Einheiten von vier zu addieren; einen Auswähler 9, um eine geeignete der zugeführten Adressen auszuwählen, und die ausgewählte Adresse dem Programmzähler 6 als die als nächste zu holende Adresse der Befehle zuzuführen; eine Ungültigkeits-Steuereinheit 10 zur Steuerung der Befehls-Ungültigkeitseinheit 3, um den von den in dem Befehlsbuffer 2 zum Zeitpunkt des Befehl-Holens gespeicherten Befehlen ausgewählten Befehl für ungültig zu erklären; ein Verzögerer 11 zum Verzögern der Übertragung der aus der Abzweigungs-Vorhersage-Tabelle 7 ausgelesene Abzweigungs-Zieladresse; einen Verzögerer 12 zum Verzögern der Übertragung der aus der Abzweigungs-Vorhersage-Tabelle 7 ausgelesenen Befehlsposition; einen Vergleicher 13 zum Vergleichen der Abzweigungs-Zieladresse und der Befehlsposition aus den Verzögerern 11 und 12 mit der tatsächlichen Fortschreitadresse und der tatsächlichen Befehlsposition des tatsächlich angetroffenen von der Abzweigungs-Überwachungseinheit 5 berichteten Abzweigungsbefehls; und eine Ungültigkeits-Ausführungseinheit 14 zur Steuerung des Ungültigkeitserklärens der in dem Befehlsbuffer 2 von der Befehls-Ungültigkeitseinheit 3 gespeicherten Befehlen, des Auswählens der Adresse in dem Auswähler 9, und des Zurückschreibens oder Löschens der Eintragung in der Abzweigungs-Vorhersage-Tabelle 7 zum Zeitpunkt der Befehlsausführung für den Fall der falschen Abzweigungs-Vorhersage.
Unter Bezugnahme auf die Fig. 2 und 3 wird nun der tatsächliche Betriebsvorgang der Vorrichtung aus Fig. 1 ausführlich beschrieben. Im folgenden wird der Betrieb für eine bestimmte Situation beschrieben, bei der die Befehle (100) bis (103) gegenwärtig geholt werden und die Abzweigungs-Vorhersage auf der Basis des Eintrags durchgeführt wird, der (100) für die Abzweigungsadresse anzeigt, (202) für die entsprechende Abzweigungs-Zieladresse und (2) für die entsprechende Befehlsposition.
Zunächst wird der Betrieb zum Zeitpunkt des Befehl-Holens entsprechend dem Flußdiagramm aus Fig. 2 wie folgt ausgeführt.
Im Schritt 101 sendet der Programmzähler 6 die Adresse (100) der gegenwärtig aus dem Befehlsbuffer 2 geholten Gruppe von Befehlen an die Abzweigungs-Vorhersage-Tabelle 7 und an die Adressen-Inkrementeinheit 8. Im Ansprechen darauf addiert die Adreß-Inkrementeinheit 8 das Inkrement in Einheiten von vier zu der Adresse (100) der gegenwärtig geholten Gruppe von Befehlen und sendet die erhaltene neue Adresse (104), die von dem Auswähler 9 ausgewählt werden soll wenn keine Abzweigungs-Vorhersage auftritt, an den Auswähler 9.
Als nächstes werden die in der Abzweigungs-Vorhersage-Tabelle 7 gespeicherten Abzweigungsadressen in dem Schritt 102 überprüft, um eine gespeicherte Abzweigungsadresse zu finden, die mit der Adresse (100) der gegenwärtig geholten Gruppe von Befehlen übereinstimmt.
Wenn eine derartige gespeicherte Abzweigungsadresse im nächsten Schritt 103 gefunden wird, sendet die Abzweigungs-Vorhersage-Tabelle 7 das den Treffer anzeigende Signal an den Auswähler 9 und die Ungültigkeits-Steuereinheit 10 und der Betrieb schreitet zum Schritt 104 weiter, wohingegen die Abzweigungs-Vorhersage-Tabelle 7 sonst das das Verfehlen anzeigende Signal an den Auswähler 9 und die Ungültigkeits-Steuereinheit 10 sendet und der Betrieb zum Schritt 111 fortschreitet. In der in Fig. 1 dargestellten Situation existiert eine Eintragung mit der Abzweigungsadresse (100), für die die entsprechende Abzweigungs-Zieladresse (202) und die entsprechende Befehlsposition (2) ist, so daß in einer derartigen Situation der Schritt 104 als nächster genommen wird.
Im Schritt 104 wird die Abzweigungs-Vorhersage-Tabelle 7 überprüft, um zu sehen, ob die Befehlsposition (2), entsprechend der im Schritt 103 gefundenen Abzweigungsadresse (100) derjenigen Adresse, von der die Adresse (100) der geholten Befehle im Programmzähler 6 erzeugt werden, voraus ist oder nicht. Wenn nämlich die Adresse (100) der geholten Befehle in dem Programmzähler 6 zum Beispiel von einer von dem Auswähler zugeführten Adresse (101) erzeugt wird, werden die Befehlsposition (2) dieser Adresse (101) und die gespeicherte Befehlsposition (2) entsprechend der Abzweigungsadresse (100) verglichen, um zu sehen, ob die gespeicherte Befehlsposition (2) voraus ist.
Wenn in dem nächsten Schritt 105 befunden wird, daß die aufgezeichnete Befehlsposition (2) voraus ist, sendet die Abzweigungs-Vorhersage-Tabelle 7 das das Verfehlen anzeigende Signal an den Auswähler 9 und die Ungültigkeits-Steuereinheit 10, und der Betrieb schreitet zum Schritt 111 fort, wohingegen die Abzweigungs-Vorhersage-Tabelle 7 ansonsten das den Treffer anzeigende Signal an den Auswähler 9 und die Ungültigkeits-Steuereinheit 10 sendet und der Betrieb schreitet zum Schritt 106 weiter.
Dieses Überprüfen der gespeicherten Befehlsposition im Schritt 104 ist vorgesehen, um die mögliche unerwünschte Vorhersage der Abzweigung an der Adresse, die der Adresse (101) voraus ist, wie zum Beispiel eine Adresse (100), entsprechend der AbzweigungsVorhersage-Tabelle 7 zu vermeiden. Mit anderen Worten, wenn die Eintragung mit der Abzweigungsadresse (100) in der Abzweigungs-Vorhersage-Tabelle 7 die Befehlsposition (2) besitzt, bedeutet dies, daß die tatsächliche Abzweigungsadresse (100) ist, und nachdem auf die Abzweigungs-Vorhersage-Tabelle 7 von der Adresse (100) für die gegenwärtig geholten Befehle (100) bis (103) zugegriffen wird, muß die Abzweigungs-Vorhersage aufgrund dieser Eintragung mit der Befehlsposition (1) für den Fall verhindert werden, daß der Befehl an der Adresse (100) zum Zeitpunkt einer Befehlsausführung der Gruppe von Befehlen (100) bis (103) nicht ausgeführt werden wird, wie in einem Fall, bei dem die Adresse (100) der gegenwärtig geholten Befehle in dem Programmzähler 6 von einer von dem Auswähler 9 zugeführten Adresse (101) erzeugt wird. Dieses Überprüfen ist wichtig, wenn die Adresse von der Adresse der gegenwärtig geholten Befehle selber die Abzweigungs-Zieladresse war. Wie aus der folgenden Beschreibung ersichtlich, wird in einem derartigen Fall die Abzweigungs-Vorhersage nicht ausgeführt, indem zum Schritt 111 fortgeschritten wird, und die Befehls-Ungültigkeitseinheit 3 wird gesteuert, um die Befehle an der Adresse (100) entsprechend der von dem Programmzähler 6 im Schritt 112 zugeführten Adresse (101) für ungültig erklärt.
Es soll darauf hingewiesen werden, daß das Überprüfen der gespeicherten Befehlsposition im Schritt 104 wie oben beschrieben durch die folgende Maßnahme ersetzt werden kann. Die Abzweigungs-Vorhersage-Tabelle 7 kann nämlich überprüft werden, um eine gespeicherte Abzweigungsadresse zu finden, zu der die Abzweigungs-Zieladresse (202) entsprechend der im Schritt 103 gefundenen Abzweigungsadresse (100) gehört, und für die sich die entsprechende Befehlsposition vor der Befehlsposition 3 der Abzweigungs-Zieladresse (202) entsprechend der im Schritt 103 gefundenen Abzweigungsadresse (100) befindet. In einer Situation in Fig. 1 werden die Eintragungen der Abzweigungs-Vorhersage-Tabelle 7 überprüft, um zu sehen, ob eine Eintragung mit der Abzweigungsadresse (200) existiert, zu der die vorhergesagte Abzweigungs-Zieladresse (202) für die in Frage stehende Abzweigungsadresse (100) gehört, und wenn eine derartige Eintragung gefunden wird, wird dann überprüft, um zu sehen, ob sich die Befehlsposition entsprechend einer derartigen gespeicherten Abzweigungsadresse (200) vor der Befehlsposition (3) der Abzweigungs-Zieladresse entsprechend der in Frage stehenden Abzweigungsadresse (100) befindet, das heißt, ob die gespeicherte Befehlsposition entsprechend der gespeicherten Abzweigungsadresse (200) entweder (1) oder (2) ist oder nicht.
Wenn eine derartige gespeicherte Abzweigungsadresse im nächsten Schritt 105 gefunden wird, sendet die AbzweigungsVorhersage-Tabelle 7 das das Verfehlen anzeigende Signal an den Auswähler 9 und die Ungültigkeits-Steuereinheit 10 und der Betrieb schreitet zum Schritt 111 fort, wohingegen die Abzweigungs-Vorhersage-Tabelle 7 das den Treffer anzeigende Signal ansonsten an den Auswähler 9 und die Ungültigkeits-Steuereinheit 10 sendet und der Betrieb schreitet zum Schritt 106 weiter.
Dieses Überprüfen der gespeicherten Abzweigungsadresse, zu der die Abzweigungs-Zieladresse (202) entsprechend der in Frage stehenden Abzweigungsadresse (100) gehört, und für die die entsprechende Befehlsposition sich vor der Befehlsposition (3) der Abzweigungs-Zieladresse (202) entsprechend der in Frage stehenden Abzweigungsadresse (100) im Schritt 104 befindet, ermöglicht die mögliche unerwünschte Vorhersage der Abzweigung an den Adressen (200) oder (201) entsprechend der Abzweigungs-Vorhersage-Tabelle 7 in dem nächsten Zyklus zu vermeiden, trotz der Tatsache, daß die Befehle an diesen Adressen (200) und (201) zu einem Zeitpunkt der Befehlsausführung der entsprechend der vorliegenden Abzweigungs-Vorhersage geholten Gruppe von Befehlen (200) bis (203) nicht ausgeführt werden, nachdem die Befehls-Ungültigkeitseinheit 3 die Befehle an diesen Adressen (200) und (201) entsprechend der von dem Programmzähler 6 im Schritt 112 wie später beschrieben zugeführten Adresse (202) für ungültig erklären wird. Wie aus der folgenden Beschreibung ersichtlich wird, wird die Abzweigungs-Vorhersage in einem derartigen Fall durch Fortschreiten zum Schritt 111 nicht ausgeführt werden.
Als nächstes wird im Schritt 106 die vorhergesagte Abzweigungs-Zieladresse (202) von der Abzweigungs-Vorhersage-Tabelle 7 an den Auswähler 9 gesendet, während die vorausgesagte Abzweigungs-Zieladresse (202) von der Abzweigungs-Vorhersage-Tabelle 7 an den Verzögerer 11 im Schritt 107 gesendet wird. Der Verzögerer 11 verzögert die Übertragung der vorausgesagten Abzweigungs-Zieladresse (202) an den Komparator 13 bis zu einem passenden Zeitpunkt, zu dem die tatsächliche Adresse zum Fortschreiten von dem tatsächlich angetroffenen Abzweigungsbefehl von der Abzweigungs-Überwachungseinheit 5 an den Vergleicher 13 gesendet wird.
Als nächstes liest im Schritt 108 die Ungültigkeits-Steuereinheit 10 die Befehlsposition (2) des in der Abzweigungs-Vorhersage-Tabelle 7 gespeicherten vorhergesagten Abzweigungsbefehls, und steuert die Befehls-Ungültigkeitseinheit 3, um die Befehle in der gegenwärtig geholten Gruppe von Befehlen (100) bis (103), für die die Befehlspositionen größer sind als die gespeicherte Befehlsposition (2) des vorhergesagten Abzweigungsbefehls, für ungültig zu erklären. In der Situation von Fig. 1 werden die Befehle (102) und (103), deren Befehlsposition (3) und (4) hinter der gespeicherten Befehlsposition (2) des vorhergesagten Abzweigungsbefehls sind, durch die Befehls-Ungültigkeitseinheit 3 für ungültig erklärt, weil diese Befehle (102) und (103) nicht ausgeführt werden sollen, wenn der vorhergesagte Abzweigungsbefehl tatsächlich genommen wird, wobei der Prozeß als nächstes zu dem Befehl (202) springen sollte.
Im Schritt 109 wird dann die gespeicherte Befehlsposition (2) von der Abzweigungs-Vorhersage-Tabelle 7 an den Verzögerer 12 gesendet. Der Verzögerer 12 verzögert die Übertragung der gespeicherten Befehlsposition (2) an den Komparator 13 bis zu einem passenden Zeitpunkt, zu dem die tatsächliche Befehlsposition des tatsächlich aufgetretenen Abzweigungsbefehls von der Abzweigungs-Überwachungseinheit 5 an den Komparator 13 gesendet wird.
Im Schritt 110 wählt dann der Auswähler 9 die vorhergesagte Abzweigungs-Zieladresse (202) entsprechend dem Treffer-Signal von der Abzweigungs-Vorhersage-Tabelle 7 und sendet sie als die Adresse oder Befehl, die als nächstes aus dem Cache-Speicher 1 geholt werden sollen, an den Programmzähler 6.
Wenn der Betrieb zum Schritt 111 fortschreitet, bedeutet das andererseits, daß keine Abzweigungs-Vorhersage gemacht werden wird, so daß der Auswähler 9 die von der Adressen-Inkrementeinheit 8 entsprechend dem Fehlersignal von der Abzweigungs-Vorhersage-Tabelle 7 eingegebene Adresse (104) auswählt, und sie an den Programmzähler 6 als die Adresse oder Befehl, die als nächstes aus dem Cache-Speicher 1 geholt werden sollen, sendet.
Im Schritt 112 erhält der Programmzähler 6 schließlich die Adresse (202) oder (104), die von dem Auswähler 9 für einen Verarbeitungszeitpunkt empfangen wird, und sendet die entsprechende Hol-Adresse (200) oder (104) zur Identifizierung der Gruppe von Befehlen, die als nächstes gleichzeitig geholt werden sollen an den Cache-Speicher 1. Hierbei kann für den Fall der Verwendung einer Zeilengröße von vier wie in der Situation in Fig. 1 die Hol-Adresse binär ausgedrückt werden, indem einfach die letzten zwei Bitwerte der von dem Auswähler 9 empfangenen Adresse weggelassen werden. In einem Fall, bei dem die von dem Auswähler 9 empfangene Adresse die vorhergesagte Abzweigungs-Zieladresse (202) ist, sendet also der Programmzähler 6 die Adresse (202) an die Befehls-Ungültigkeitseinheit 3, um die Befehle an den Adressen (200) und (201) für ungültig zu erklären, die zum Zeitpunkt einer nächsten Befehlsausführung nicht ausgeführt werden sollen.
Als nächstes wird zum Zeitpunkt der Befehlsausführung der Betrieb entsprechend dem Flußdiagramm von Fig. 3 wie folgt ausgeführt.
Zunächst überwacht die Abzweigungs-Überwachungseinheit 5 im Schritt 201 das Ausführungsergebnis der gültige Befehle in dem Befehlsbuffer 2, und zwar eines nach dem anderen in einer Reihenfolge, in der die Ausführung beendet wird, und sendet die tatsächliche Befehlsposition der tatsächlichen während der Ausführung angetroffenen Abzweigungsbedingung und die tatsächliche Adresse zum Fortschreiten von dem tatsächlichen während der Ausführung angetroffenen Abzweigungsbefehl an den Vergleicher 13.
Als nächstes vergleicht der Vergleicher 13 im Schritt 202 die tatsächliche Befehlsposition des tatsächlich angetroffenen von der Abzweigungs-Überwachungseinheit 5 empfangenen Abzweigungsbefehls mit der gespeicherten Befehlsposition (2) des von dem Verzögerer 12 empfangenen vorhergesagten Abzweigungsbefehl, und die tatsächliche Adresse zum Fortschreiten von dem tatsächlich angetroffenen von der Abzweigungs-Überwachungseinheit 5 empfangenen Abzweigungsbefehl mit der von dem Verzögerer 11 empfangenen vorhergesagten Abzweigungs-Zieladresse (202).
Als nächstes wird im Schritt 203 von dem Vergleicher 13 bestimmt, ob die tatsächliche Befehlsposition des tatsächlich angetroffenen Abzweigungsbefehls und die gespeicherte Befehlsposition (2) des vorhergesagten Abzweigungsbefehls miteinander übereinstimmen oder nicht. Wenn sie miteinander übereinstimmen, bedeutet das, daß der Abzweigungsbefehl tatsächlich in der gespeicherten Befehlsposition angetroffen worden ist, so daß der Betrieb zum Schritt 204 weiterschreitet, wohingegen es ansonsten bedeutet, daß der Abzweigungsbefehl tatsächlich nicht in einer Befehlsposition vor der gespeicherten Befehlsposition angetroffen worden ist, so daß der Betrieb zum Schritt 213 fortschreitet.
Im Schritt 204 wird entsprechend dem Bericht von der Abzweigungs-Überwachungseinheit 5 bestimmt, ob der tatsächliche Abzweigungsbefehl tatsächlich genommen worden ist oder nicht, und wenn er tatsächlich genommen worden ist, schreitet der Betrieb zum Schritt 205 weiter, wohingegen der Betrieb ansonsten zum Schritt 209 weiterschreitet.
Im Schritt 205 wird von dem Vergleicher 13 bestimmt, ob die tatsächliche Adresse zum Fortschreiten von dem tatsächlich angetroffenen Abzweigungsbefehl und die vorhergesagte Abzweigungs-Zieladresse miteinander übereinstimmen oder nicht, und wenn sie miteinander übereinstimmen, bedeutet das, daß die Abzweigungs-Vorhersage richtig gewesen ist, so daß der Betrieb zu der Verarbeitung bezüglich des nächsten Befehls fortschreitet, wohingegen es ansonsten bedeutet, daß die Abzweigungs-Vorhersage falsch gewesen ist, und der Betrieb schreitet zum Schritt 206 weiter.
Wenn in den Schritten 204 und 205 gefunden wird, daß die Befehlsposition und die Abzweigungs-Zieladressen übereinstimmen, sendet der Vergleicher 13 ein das Übereinstimmen anzeigende Signal an den Auswähler 9 und die Ungültigkeits-Fortführungseinheit 14, wohingegen der Vergleicher 13 ansonsten ein das nicht Übereinstimmen anzeigende Signal an den Auswähler 9 und die Ungültigkeits-Fortführungseinheit 14 sendet.
Im Schritt 206 wählt die Ungültigkeits-Fortführungseinheit 14 die Befehls-Ungültigkeitseinheit 3, um die Befehle (100) bis (203), die entsprechend der falschen Abzweigungs-Vorhersage geholt worden sind, entsprechend dem nicht Übereinstimm-Signal von dem Vergleicher 13 für ungültig zu erklären.
Nachdem in diesem Fall der Abzweigungsbefehl tatsächlich genommen worden ist, sendet die Ungültigkeits-Fortführungseinheit 14 als nächstes im Schritt 207 die tatsächliche von der Abzweigungs-Überwachungseinheit 5 berichtete Abzweigungs-Zieladresse an den Auswähler 9, um als nächstes das Holen von der tatsächlichen Abzweigung-Zieladresse durchzuführen.
Dann steuert die Ungültigkeits-Fortsetzungseinheit 14 im Schritt 208 die AbzweigungsVorhersage-Tabelle 7, um die falsche Eintragung in der Abzweigungs-Vorhersage-Tabelle 7 auf die richtige Eintragung umzuschreiben, die die tatsächliche Abzweigungsadresse, tatsächliche Abzweigungs-Zieladresse und tatsächliche Befehlsposition anzeigt. Hierbei wird die von dem Programmzähler 6 der Abzweigungs-Vorhersage-Tabelle 7 im Schritt 101 zugeführten Adresse (100) geeignet verzögert und zum Neuschreiben der AbzweigungsVorhersage-Tabelle 7 verwendet.
Wenn andererseits der Betrieb zum Schritt 209 fortschreitet, steuert die Ungültigkeits-Fortführungseinheit 14 die Befehls-Ungültigkeitseinheit 3, um die entsprechend der falschen Abzweigungs-Vorhersage geholten Befehle (200) bis (203) entsprechend dem nicht Übereinstimm-Signal von dem Vergleicher 13 für ungültig zu erklären.
Nachdem in diesem Fall der Abzweigungsbefehl tatsächlich nicht genommen worden ist, sendet die Ungültigkeit-Fortführungseinheit 14 als nächstes im Schritt 210 die Adressen der Befehle, die fehlerhaft von der Ungültigkeits-Steuereinheit 10 zum Zeitpunkt des Befehl-Holens entsprechend der falschen Abzweigungs-Vorhersage für ungültig erklärt wurden, an den Auswähler 9, um wieder als nächstes das Holen von derartigen fälschlich für ungültig erklärten Befehlen auszuführen. Hierbei sendet der Programmzähler 6 also die Adresse der fälschlich für ungültig erklärten Befehle an die Befehls-Ungültigkeitseinheit 3, um andere Befehle für ungültig zu erklären als die fälschlich für ungültig erklärten Befehle, die zum Zeitpunkt einer nächsten Befehlsausführung nicht wieder ausgeführt werden sollen.
Nachdem außerdem in diesem Fall kein Abzweigungsbefehl existiert, der tatsächlich genommen wird, steuert als nächstes die Ungültigkeits-Fortführungseinheit 14 im Schritt 211 die Abzweigungs-Vorhersage-Tabelle 7, um die falsche Eintragung in der AbzweigungsVorhersage-Tabelle 7 zu löschen. Hierbei wird die von dem Programmzähler 6 an die Abzweigungs-Vorhersage-Tabelle 7 im Schritt 101 zugeführte Adresse geeignet verzögert und zum Löschen der falschen Eintragung in der Abzweigungs-Vorhersage-Tabelle 7 verwendet.
Dann wählt der Auswähler 9 im Schritt 212 die in dem Schritt 207 oder Schritt 210 eingegebene Adresse und sendet sie an den Programmzähler 6 als die als nächstes zu holende Befehlsadresse, während er die anderen von der Abzweigungs-Vorhersage-Tabelle 7 und der Adressen-Inkrementeinheit 8 eingegebenen Adressen ignoriert, und der Betrieb schreitet zu der Verarbeitung bezüglich des nächsten Befehls fort.
Wenn der Betrieb andererseits von dem Schritt 203 zum Schritt 213 weiterschreitet, wird entsprechend dem Bericht von der Abzweigungs-Überwachungseinheit 5 entschieden, ob der tatsächliche Abzweigungsbefehl tatsächlich genommen worden ist oder nicht, und wenn er tatsächlich genommen worden ist, schreitet der Betrieb im Schritt 206 wie oben beschrieben fort, während der Betrieb ansonsten zum Schritt 214 fortschreitet.
Im Schritt 214 wird entschieden, ob die Ausführung von allen gültigen Befehlen in dem Befehlsbuffer 12 beendet worden ist oder nicht. Wenn alle gültigen Befehle ausgeführt worden sind, bedeutet das, daß tatsächlich kein Abzweigungsbefehl angegetroffen worden ist, so daß der Betrieb zum Schritt 209 wie oben beschrieben fortschreitet, wohingegen der Betrieb ansonsten zum Schritt 201 wie oben beschrieben zurückkehrt, um das Ausführungsergebnis des nächsten gültigen Befehls durch die Abzweigungs-Überwachungseinheit 5 überwachen zu lassen.
Es soll darauf hingewiesen werden, daß, wenn die im Prozessorabschnitt 50 auszuführenden Befehle die sogenannten verzögerten Befehle enthalten, die sogar dann ausgeführt werden müssen, wenn der zuvor befindliche Abzweigungsbefehl tatsächlich genommen worden ist, der oben beschriebene Betrieb wie folgt modifiziert werden sollte.
Zunächst sollten zum Zeitpunkt eines Befehl-Holens die von der Ungültigkeits-Steuereinheit 10 im Schritt 108 für ungültig erklärenden Befehle die Befehle in der gegenwärtig geholten Gruppe von Befehlen (100) bis (103) sein, für die die Befehlspositionen um eine plus eine vorgegebene verzögerte Befehlsanzahl der gespeicherten Befehlsposition (2) des vorhergesagten Abzweigungsbefehls zurückliegen. Hierbei ist die verzögerte Befehlsanzahl eine feste Anzahl, die in diesem Ausführungsbeispiel als eins angenommen wird, die für den Prozessorabschnitt 50 im voraus eingestellt wird. Zum Beispiel für die in Fig. 1 gezeigte Situation, wird somit der Befehl (103), dessen Befehlspositionen (4) um zwei hinter der gespeicherten Befehlsposition (2) des vorgebenen Abzweigungsbefehls ist, von der Befehls-Ungültigkeitseinheit 3 für ungültig erklärt werden.
Hierbei soll darauf hingewiesen werden, daß zum Zeitpunkt des Befehl-Holens die Tatsache, ob der verzögerte Befehl tatsächlich ausgeführt werden wird oder nicht, nicht bekannt ist und nicht festgestellt werden kann, bis der Befehl dekodiert wird.
Zweitens sollten zum Zeitpunkt der Befehlsausführung die wieder zu holenden Befehle, die im Schritt 210 definiert werden, nicht lediglich die Befehle sein, die fälschlich von der Ungültigkeits-Steuereinheit 10 zum Zeitpunkt des Befehl-Holens entsprechend deren falschen Abzweigungs-Vorhersage für ungültig erklärten Befehle sein, sondern der verzögerte Befehl, der sich tatsächlich als der Abzweigungsbefehl herausstellt und all die Befehle, die sich hinter diesem verzögerten Befehl befinden, der sich tatsächlich als der Abzweigungsbefehl herausstellt.
Wie oben beschrieben, wird es entsprechend dieses ersten Ausführungsbeispiels möglich, die Abzweigungs-Vorhersage unter Verwendung einer Abzweigungs-Vorhersage-Tabelle zu realisieren, die auf einen Prozessor eines Super-Skalar-Typs anwendbar ist, ohne bei der Abzweigungs-Vorhersage eine Verwechslung zu verursachen, so daß die Abzweigungs-Vorhersage effizienter mit höherer Geschwindigkeit ausgeführt werden kann.
Unter Bezugnahme auf Fig. 4 wird nun das zweite Ausführungsbeispiel einer Vorrichtung zur Abzweigungs-Vorhersage entsprechend der vorliegenden Erfindung ausführlich beschrieben. Dieses zweite Ausführungsbeispiel ist genauso auf irgendeine Art von Prozessor einschließlich eines Super-Skalar-Typ-Prozessors anwendbar, der gleichzeitig mehrere Befehle ausführen kann. In der folgenden Beschreibung wird der Einfachheit halber angenommen, daß die Prozessorgruppe 4 ein gewöhnlicher Prozessor ist, der zu einem Zeitpunkt einen Befehl ausführen kann, so daß zu einem Zeitpunkt ein Befehl in den Befehlsbuffer 2 geholt wird.
In diesem zweiten Ausführungsbeispiel umfaßt die Vorrichtung ganz allgemein einen Prozessorabschnitt 70 und einen Abzweigungs-Vorhersageabschnitt 80.
Der Prozessorabschnitt 70 umfaßt außerdem: einen Cache-Speicher 31 zum Speichern von auszuführenden Befehlen; einen Befehlsbuffer 32 zum Speichern des als nächstes auszuführenden Befehls, der von dem Cache-Speicher 31 geholt wird; eine Befehls-Ungültigkeitseinheit 33, um den in dem Befehlsbuffer 32 gespeicherten Befehl, der entsprechend der falschen Abzweigungs-Vorhersage geholt wird, für ungültig zu erklären; eine Prozessorgruppe 34, um den Befehl tatsächlich auszuführen; eine Abzweigungs-Überwachungseinheit 35, um das Ausführungsergebnis des Befehls zu überwachen; und einen Programmzähler 36, um die als nächstes aus dem Cache-Speicher 1 zu holende Befehlsadresse zu spezifizieren.
Der Abzweigungs-Vorhersageabschnitt 80 umfaßt außerdem: eine aus einem Voll-Assoziativspeicher gebildete Abzweigungs-Vorhersage-Tabelle 37 zum Speichern von Abzweigungs-Vorhersage-Tabelleneintragungen, wobei jeder Eintrag eine Abzweigungsadresse und deren entsprechende Abzweigungs-Zieladresse enthält, die in der Abzweigungs-Vorhersage-Tabelle 37 entsprechend der in der Vergangenheit tatsächlich angetroffenen Abzweigungsbefehle, zusammen mit einer Eintragungsadresse aufgezeichnet werden, die eine Position anzeigt, an der die Eintragung in dem Voll-Assoziativspeicher aufgezeichnet ist; eine Adressen-Inkrementeinheit 38, um ein Inkrement mit einer Eins-Einheit zu der Adresse des zuletzt geholten Befehls zu addieren; einen Auswähler 39 zum Auswählen einer passenden Adresse aus den zugeführten Adressen, und zum Zuführen der ausgewählten Adresse an den Programmzähler 36 als die als nächstes zu holende Befehlsadresse; einen Verzögerer 41 zum Verzögern der Übertragung der aus der AbzweigungsVorhersage-Tabelle 37 ausgelesenen Abzweigungs-Zieladresse; einen Vergleicher 43 zum Vergleichen der von dem Verzögerer 41 eingegebenen Abzweigungs-Zieladresse mit der von der Abzweigungs-Überwachungseinheit 35 berichteten tatsächlichen Abzweigungs-Zieladresse; eine Eintragungs-Adressenerzeugungseinheit 45 zum Speichern der von der Abzweigungs-Vorhersage-Tabelle 37 eingegebenen Eintragungsadresse und wenn erforderlich, zum Erzeugen einer neuen Eintragungsadresse; und eine Tabellen-Aufzeichnungssteuereinheit 46 zum Neuschreiben der Eintragung in der Abzweigungs-Vorhersage-Tabelle 37 unter Verwendung der von der Eintragungs-Adressenerzeugungseinheit 45 eingegebenen Eintragungsadresse, wenn die falsche Abzweigungs-Vorhersage gemacht wird.
Nun wird der tatsächliche Vorgang des Betriebs dieser Vorrichtung aus Fig. 4 ausführlich beschrieben. Im folgenden wird der Betrieb für eine bestimmte Situation beschrieben, bei der der Befehl (100) gegenwärtig geholt wird, und die Abzweigungs-Vorhersage auf der Basis der (100) für die Abzweigungsadresse, (202) für die entsprechende Abzweigungs-Zieladresse und (01) für die Eintragungsadresse anzeigenden Eintragung ausgeführt wird.
Zunächst sendet der Programmzähler 36 die Adresse (100) des gegenwärtig in den Befehlsbuffer 32 geholten Befehls an die Abzweigungs-Vorhersage-Tabelle 37 und an die Adressen-Inkrementeinheit 38. In Antwort darauf addiert die Adressen-Inkrementeinheit 38 das Eins-Einheitsinkrement zu der Adresse (100) des gegenwärtig geholten Befehls, und sendet die erhaltene neue Adresse (101), die von dem Auswähler 39 ausgewählt werden wird, wenn keine Abzweigungs-Vorhersage vorliegt, an den Auswähler 39.
Außerdem werden in der Abzweigungs-Vorhersage-Tabelle 37 die in der Abzweigungs-Vorhersage-Tabelle 37 aufgezeichneten Abzweigungsadressen überprüft, um eine aufgezeichnete Abzweigungsadresse zu finden, die mit der Adresse (100) des gegenwärtig geholten Befehls übereinstimmt.
Wenn eine derartige aufgezeichnete Abzweigungsadresse gefunden wird, wird die entsprechende vorhergesagte Abzweigungs-Zieladresse (202) von der AbzweigungsVorhersage-Tabelle 37 an den Auswähler 39 sowie an den Verzögerer 41 gesendet, während die entsprechende Eintragungsadresse (01) an die Eintragungs-Adressenerzeugungseinheit 45 gesendet wird.
Der Verzögerer 41 verzögert die Übertragung der vorhergesagten Abzweigungs-Zieladresse (202) an den Vergleicher 43 bis zu einem passenden Zeitpunkt, zu dem die tatsächliche Abzweigungs-Zieladresse von der Abzweigungs-Überwachungseinheit 35 an den Vergleicher 43 gesendet wird.
Der Auswähler 39 wählt dann die vorhergesagte Abzweigungs-Zieladresse (202) aus und sendet sie an den Programmzähler 36 als die als nächstes zu holende Befehlsadresse.
Wenn andererseits keine aufgezeichnete Abzweigungsadresse in der Abzweigungs-Vorhersage-Tabelle 37 gefunden wird, die mit der Adresse des gegenwärtig geholten Befehls übereinstimmt, wählt der Auswähler 39 die von der Adressen-Inkrementeinheit 38 eingegebene Adresse (101) und sendet sie an den Programmzähler 36 als die Adresse der als nächstes zu holenden Befehle.
Der Programmzähler 36 hält dann die Adresse (202) oder (101), die von dem Auswähler 39 für einen Verarbeitungszeitpunkt empfangen wird, und sendet sie an den Cache-Speicher 3 als die als nächstes zu holende Befehlsadresse.
Andererseits überwacht die Abzweigungs-Überwachungseinheit 35 das Ausführungsergebnis des gegenwärtig in den Befehlsbuffer 32 geholten Befehls, und sendet die tatsächliche Befehls-Abzweigungs-Zieladresse an den Vergleicher 43.
Dann vergleicht der Vergleicher 43 die tatsächliche Abzweigungs-Zieladresse, die von der Abzweigungs-Überwachungseinheit 35 empfangen wird, mit der von dem Verzögerer 41 empfangenen vorhergesagten Abzweigungs-Zieladresse (202), und gibt das Signal, das anzeigt, ob die Adressen übereinstimmen oder nicht, an die Befehls-Ungültigkeitseinheit 33, an die Eintragungs-Adressenerzeugungseinheit 45, und an die Tabellen-Aufzeichnungseinheit 46 ab.
Wenn die Adressen übereinstimmen, heißt daß, daß die Abzweigungs-Vorhersage richtig gewesen ist, so daß der Betrieb zu der Verarbeitung bezüglich des nächsten Befehls fortschreitet.
Wenn andererseits das Signal, das anzeigt, daß die Adressen nicht übereinstimmen, von dem Vergleicher 43 empfangen wird, bedeutet das, daß die Abzweigungs-Vorhersage falsch gewesen ist, so daß die Befehls-Ungültigkeitseinheit 33 den geholten Befehl zu einem nächsten Verarbeitungszeitpunkt für ungültig erklärt, zu dem der Befehl (202) fälschlicherweise entsprechend der falschen Abzweigungs-Vorhersage geholt wird.
Dann schreibt die Tabellen-Aufzeichnungs-Steuereinheit 46 die Eintragung für die Abzweigungsadresse (100) in der Abzweigungs-Vorhersage-Tabelle 37 durch Überschreiben der falschen Abzweigungs-Zieladresse (202) mit der tatsächlichen von der Abzweigungs-Überwachungseinheit 35 berichteten Abzweigungs-Zieladresse neu, wobei diese Neuschreibungsoperation bezüglich der Position in dem Assoziativ-Speicher ausgeführt wird, die durch die von der Eintragungs-Adressen-Erzeugungseinheit 45 eingegebenen Eintragungsadresse (01) angezeigt wird.
Da die Eintragungs-Adressen-Erzeugungseinheit 45 hierbei die Eintragungsadresse der relevanten Eintragung in dem Voll-Assoziativspeicher der Abzweigungs-Vorhersage-Tabelle 37 speichert, kann das Neuschreiben der falschen Abzweigungs-Vorhersage-Tabelleneintragung sofort ausgeführt werden. Da außerdem die falsche AbzweigungsVorhersage-Tabelleneintragung direkt mit der richtigen Eintragung überschrieben wird, wird das Problem von Vielfacheintragungen für eine Abzweigungsadresse, die die Verwechslung in der Abzweigungs-Vorhersage verursachen kann, vermieden.
Bei dem oben beschriebenen Betrieb arbeitet die Eintragungs-Adressen-Erzeugungseinheit 45 entsprechend dem Flußdiagramm von Fig. 5 wie folgt.
Als erstes wird im Schritt 301 bestimmt, ob der Vergleicher 43 die von der Abzweigungs-Überwachungseinheit 35 eingegebene tatsächliche Abzweigungs-Zieladresse mit der von dem Verzögerer 41 eingegebenen vorhergesagten Abzweigungs-Zieladresse verglichen hat oder nicht.
Wenn dieser Vergleich von dem Vergleicher 43 bereits ausgeführt worden ist, bedeutet das, daß der Abzweigungsbefehl an der vorhergesagten Abzweigungsposition tatsächlich angetroffen worden ist, so daß als nächstes im Schritt 302 bestimmt wird, ob die Abzweigungs-Zieladressen miteinander übereinstimmen, das heißt, ob die Abzweigungs-Vorhersage richtig oder falsch gewesen ist.
Für den Fall, daß die Abzweigungs-Zieladressen in dem Vergleicher 43 miteinander übereinstimmen, bedeutet das, daß die Abzweigungsvorhersage richtig gewesen ist, so daß der Betrieb der Eintragungs-Adressen-Erzeugungseinheit 45 zu einem Ende kommt.
Wenn die Adressen nicht miteinander übereinstimmen, bedeutet das andererseits, daß die Abzweigungs-Vorhersage falsch gewesen ist, so daß das Neuschreiben der entsprechenden Eintragung in der Abzweigungs-Vorhersage-Tabelle 37 erforderlich ist. In einem derartigen Fall sendet im Schritt 303 die Eintragungs-Adressen-Erzeugungseinheit 45 als nächstes die Eintragungsadresse entsprechend der neu zu schreibenden Eintragung, die zum Zeitpunkt der Abzweigungs-Vorhersage von der Abzweigungs-Vorhersage-Tabelle 37 empfangen und in der Eintragungs-Adressen-Erzeugungseinheit 45 gespeichert wird, an die Tabellen-Aufzeichnungs-Steuereinheit 46, so daß die Tabellen-Aufzeichnungs-Steuereinheit 46 die geeignete Neuschreibungsoperation bezüglich der geeigneten Position in dem Voll-Assoziativspeicher der Abzweigungs-Vorhersage-Tabelle 37 ausführen kann.
Wenn der Vergleicher 43 die Adressen im Schritt 301 nicht verglichen hat, wird als nächstes im Schritt 304 bestimmt, ob die Abzweigungs-Vorhersage gemacht worden ist oder nicht.
Wenn die Abzweigungs-Vorhersage gemacht worden ist, bedeutet dies, daß der Abzweigungsbefehl an der vorhergesagten Abzweigungsadresse nicht angetroffen worden ist, was anzeigt, daß die Eintragung entsprechend der vorhergesagten Abzweigungsadresse falsch ist und gelöscht werden sollte. In einem derartigen Fall speichert die Eintragungs-Adressen-Erzeugungseinheit 45 als nächstes im Schritt 303 die entsprechende Eintragungsadresse als eine offene Eintragungsadresse, die für die Neuaufzeichnung einer neuen Eintragung verfügbar ist, wobei in diesem Fall die Tabellen-Aufzeichnungs-Steuereinheit 46 die entsprechende Eintragung in der Abzweigungs-Vorhersage-Tabelle 37 löscht.
Wenn die Abzweigungs-Vorhersage nicht gemacht worden ist, bedeutet dies, daß der Abzweigungsbefehl an der Adresse, die nicht als die Abzweigungsadresse in der Abzweigungs-Vorhersage-Tabelle 37 aufgezeichnet ist, angetroffen worden ist, was anzeigt, daß keine Eintragung entsprechend des angetroffenen Abzweigungsbefehls vorliegt und eine Neueintragung erzeugt werden soll. In einem derartigen Fall sendet die Eintragungs-Adressen-Erzeugungseinheit 46 als nächstes im Schritt 303 eine in der Eintragungs-Adressen-Erzeugungseinheit 45 gespeicherte offene Eintragungsadresse oder eine zum Beispiel unter Verwendung einer Zufallszahl neu erzeugte neue Eintragungsadresse an die Tabellen-Aufzeichnungs-Steuereinheit 46, so daß die Tabellen-Aufzeichnungs-Steuereinheit 46 die geeignete neue Aufzeichnungsoperation bezüglich der in dem Voll-Assoziativspeicher der Abzweigungs-Vorhersage-Tabelle 37 verfügbaren Position ausführen kann.
Es soll darauf hingewiesen werden, daß wie in Fig. 6 gezeigt, wenn der von der Abzweigungs-Überwachungseinheit 35 überwachte Befehl I₁ zum gleichen Verarbeitungszeitpunkt geholt worden ist, zu dem das Neuschreiben oder die Neuaufzeichnung der Abzweigungs-Vorhersage-Tabelle 37 durch die Tabellen-Aufzeichnungs-Steuereinheit 46 ausgeführt wird, die oben beschriebenen Schritte 305 und 306 überbrückt werden sollten, um die Möglichkeit zu vermeiden, daß die richtig neu geschriebene Eintragung fälschlicherweise im Schritt 305 als eine offene Eintragung genommen wird oder daß die richtig neu eingeschriebene Eintragung im Schritt 306 doppelt aufgezeichnet wird.
Daher wird es entsprechend dieses zweiten Ausführungsbeispiels möglich, die Abzweigungs-Vorhersage unter Verwendung einer von einem Voll-Assoziativspeicher gebildete Abzweigungs-Vorhersage-Tabelle zu realisieren, ohne eine Verwechslung in der Abzweigungs-Vorhersage zu verursachen, so daß die Abzweigungs-Vorhersage effektiver mit höherer Geschwindigkeit durchgeführt werden kann.
Unter Bezugnahme auf die Fig. 7 wird nun das dritte Ausführungsbeispiel einer Vorrichtung für Abzweigungs-Vorhersage entsprechend der vorliegenden Erfindung ausführlich beschrieben. Dieses dritte Ausführungsbeispiel ist eine Abänderung des oben beschriebenen zweiten Ausführungsbeispiels, derart, daß es sich für einen Super-Skalar-Typ-Prozessor eignet, der gleichzeitig mehrere Befehle ausführen kann. In Fig. 7 sind diejenigen Elemente, die im wesentlichen den entsprechenden oben beschriebenen Elementen für das zweite Ausführungsbeispiel im Zusammenhang mit Fig. 6 gleichen, mit den gleichen Bezugszeichen bezeichnet, und deren Beschreibung wird weggelassen.
In diesem dritten Ausführungsbeispiel unterscheidet sich die Abzweigungs-Vorhersage-Tabelle 37a von der Abzweigungs-Vorhersage-Tabelle 37 aus Fig. 6 derart, daß jede Eintragung in der Abzweigungs-Vorhersage-Tabelle 37a auch die Befehlsposition zum Anzeigen einer Position des Abzweigungsbefehls in der Gruppe von durch die Abzweigungsadresse identifizierten Befehle enthält, genauso wie in der Abzweigungs-Vorhersage-Tabelle 7 des oben beschriebenen ersten Ausführungsbeispiels.
Somit ist es durch Verwendung dieser Befehlsposition möglich, mit einem Super-Skalar-Typ-Prozessor fertig zu werden, der mehrere Befehle gleichzeitig ausführen kann, genauso wie in dem oben beschriebenen ersten Ausführungsbeispiel.
In diesem Fall holt der Befehlsbuffer 32 eine Vielzahl von Befehlen gleichzeitig, und die Adressen-Inkrementeinheit 38 ergänzt die Adresse in Einheiten einer Anzahl von gleichzeitig zu holenden Befehlen, zum Beispiel in Einheiten von vier.
Es soll darauf hingewiesen werden, daß wenn die Eintragungs-Adressen-Erzeugungseinheit 45 dem Betrieb ähnlich wie der für das zweite Ausführungsbeispiel im Zusammenhang mit Fig. 5 oben beschriebenen ausführt, es in diesem dritten Ausführungsbeispiel im Schritt 306 erforderlich ist, zunächst zu überprüfen, ob die gespeicherte Befehlsposition entsprechend der gespeicherten Abzweigungsadresse derjenigen Adresse, von der die Adresse der geholten Befehle in dem Programmzähler 6 erzeugt werden, voraus ist, oder ob eine gespeicherte Abzweigungsadresse existiert, zu der die Abzweigungs-Zieladresse entsprechend der in Frage stehenden Abzweigungsadresse gehört, und für die die entsprechende Befehlsposition derjenigen der Abzweigungs-Zieladresse entsprechend der in Frage stehenden Abzweigungsadresse voraus ist, genauso wie im Schritt 104 aus Fig. 2 in dem ersten oben beschriebenen Ausführungsbeispiel. Wenn gefunden wird, daß die gespeicherte Befehlsposition voraus ist, oder wenn eine derartige gespeicherte Abzweigungsadresse gefunden wird, sollte die Abzweigungs-Vorhersage nicht ausgeführt werden, genauso wie in dem oben beschriebenen ersten Ausführungsbeispiel.
Daher wird es entsprechend dieses dritten Ausführungsbeispiels möglich, die Abzweigungs-Vorhersage unter Verwendung einer aus einem Voll-Assoziativspeicher gebildeten Abzweigungs-Vorhersage-Tabelle zu realisieren, die sich auch für einen Prozessor eines Super-Skalar-Typs eignet, ohne Verwechslung in der Abzweigungs-Vorhersage zu verursachen, so daß die Abzweigungs-Vorhersage effektiver mit höherer Geschwindigkeit ausgeführt werden kann.
Unter Bezugnahme auf die Fig. 8 wird nun das vierte Ausführungsbeispiel einer Vorrichtung für Abzweigungs-Vorhersage entsprechend der vorliegenden Erfindung ausführlich beschrieben. Dieses vierte Ausführungsbeispiel ist eine Abänderung des oben beschriebenen zweiten Ausführungsbeispiels, wobei die Behandlung der offenen Eintragungen in der Abzweigungs-Vorhersage-Tabelle verbessert ist. In Fig. 8 werden diejenigen Elemente, die den entsprechenden für das zweite Ausführungsbeispiel im Zusammenhang mit Fig. 6 oben beschriebenen Elementen gleichen, mit denselben Bezugszeichen bezeichnet, und deren Beschreibung wird weggelassen.
In diesem vierten Ausführungsbeispiel unterscheidet sich die Abzweigungs-Vorhersage-Tabelle 37b von der Abzweigungs-Vorhersage-Tabelle 37 aus Fig. 6 dadurch, daß jede Eintragung in der Abzweigungs-Vorhersage-Tabelle 37b auch ein Gültigkeitsbit enthält, das anzeigt, ob die Eintragung eine offene ist oder nicht. Zum Beispiel zeigt das Gültigkeitsbit (0) nicht offen an, und das Gültigkeitsbit (1) zeigt offen an.
Zusätzlich ist eine Gültigkeitsbit-Steuereinheit 47 zum Umändern des Gültigkeitsbits in der Abzweigungs-Vorhersage-Tabelle 37b vorgesehen.
Hierbei berichtet die Abzweigungs-Überwachungseinheit 35 der Gültigkeits-Steuereinheit 47, ob die vorhergesagte Abzweigung tatsächlich genommen worden ist oder nicht, und wenn die vorhergesagte Abzweigung tatsächlich nicht durchgeführt worden ist, ändert die Gültigkeitsbit-Steuereinheit 47 das Gültigkeitsbit der Eintragung für die vorhergesagte Abzweigungsadresse von (0) auf (1), um die Eintragung für die Abzweigung, die tatsächlich nicht genommen worden ist, als eine offene anzuzeigen.
In diesem vierten Ausführungsbeispiel kann der Prozessorabschnitt 70 außerdem eine Cache-Änderungs-Steuereinheit 48 zum Steuern des Cache-Speichers 31 und einen Hauptspeicher 49 enthalten, um den Cache-Inhalt in dem Cache-Speicher 31 auf einen anderen in dem Hauptspeicher 49 gespeicherten Inhalt zu ändern. In einem derartigen Fall berichtet die Cache-Änderungssteuereinheit 48 die Cache-Änderung an die Gültigkeitsbit-Steuereinheit 47, so daß die Gültigkeitsbit-Steuereinheit 47 das Gültigkeitsbit der Eintragungen für die Abzweigungsadressen ändert, die von dem Cache-Speicher 31 entfernt worden sind, durch die Cache-Änderung von (0) auf (1), um anzuzeigen, daß diese Eintragungen offen sind.
Wenn außerdem in diesem vierten Ausführungsbeispiel die Eintragungs-Adressen-Erzeugungseinheit 45 den Betrieb ähnlich wie der oben beschriebenen für das zweite Ausführungsbeispiel im Zusammenhang mit Fig. 5 ausführt, kann die Eintragungs-Adressen-Erzeugungseinheit 45 die Eintragungsadresse der Eintragung mit dem Gültigkeitsbit (0) an die Tabellen-Aufzeichnungs-Steuereinheit 46 im Schritt 306 vor Erzeugung irgendwelcher neuen Eintragungsadressen senden, so daß die Eintragungsadressen in dem Voll-Assoziativspeicher der Abzweigungs-Vorhersage-Tabelle 37b effektiver verwendet werden können und die Aufzeichnung der neuen Eintragung schneller ausgeführt werden kann.
Daher wird es entsprechend diesem vierten Ausführungsbeispiel möglich, die Abzweigungs-Vorhersage unter Verwendung einer von einem Voll-Assoziativspeicher gebildeten Abzweigungs-Vorhersage-Tabelle zu verwirklichen, ohne eine Verwechslung in der Abzweigungs-Vorhersage zu verursachen, so daß die Abzweigungs-Vorhersage effektiver mit höherer Geschwindigkeit ausgeführt werden kann.
Unter Bezugnahme auf die Fig. 9 bis 19 wird eine spezielle Schaltungsausführung der Vorrichtung entsprechend der vorliegenden Erfindung ausführlich beschrieben, die all die Merkmale der oben beschriebenen Ausführungsbeispiele enthält. In den Figuren zeigen die Fig. 9 bis Fig. 14 zusammengenommen eine Schaltungsausführung der Abzweigungs-Vorhersage-Vorrichtung, die als eine BTB-Schaltung bezeichnet wird, wobei es selbstverständlich ist, daß die auf jeder Figur erscheinende Anschlußnummer Tn (n = 1, 2, ...) mit der auf der anderen Figur erscheinenden identischen Anschlußnummer verbunden ist. Die Fig. 15 bis Fig. 17 zusammengenommen zeigen eine Steuerschaltung, die an die BTB-Schaltung von Fig. 9 bis Fig. 14 angeschlossen werden soll, wobei es selbstverständlich ist, daß die Anschlußnummer Rn (n = 1, 2, ...), die auf jeder Figur erscheint, mit der auf der anderen Figur erscheinenden identischen Anschlußnummer verbunden ist. Außerdem zeigen die Fig. 18 und Fig. 19 zusammengenommen eine Anordnung, bei der die BTB-Schaltung von Fig. 9 bis Fig. 14 und die Steuerschaltung aus Fig. 15 bis Fig. 17 verbunden sind, wobei es selbstverständlich ist, daß die auf jeder Figur erscheinende Anschlußnummer Sn (n = 1, 2, ...) mit der auf der anderen Figur erscheinenden identischen Anschlußnummer verbunden ist.
Als erstes wird die Steuerschaltung von Fig. 15 bis Fig. 17 ausführlich beschrieben. Diese Steuerschaltung von Fig. 15 bis Fig. 17 betrifft vier Stufen, umfassend: F-Stufe 20 (Holen), D-Stufe 21 (Dekodieren), E-Stufe 22 (Ausführen) und M-Stufe 23 (Speicherzugriff). Die auszuführenden Operationen in diesen Stufen sind wie folgt.
F-Stufe
Ein BTBHIT_P-Signal wird von der Datenweg-Einheit empfangen, und entsprechend dem Kontext der Stufen und dem Zustand der Abzweigungseinheit wird überprüft, ob das empfangene BTBHIT_P-Signal wirklich effektiv ist oder nicht. Wenn befunden wird, daß das BTBHIT_P-Signal wirklich effektiv ist, wird ein VALF-Signal zurückgegeben, um die Adresse von der BTB effektiv zu machen.
Das BTBHIT beurteilt den Treffer durch Verwendung der Spalte in Einheiten von vier Befehlen, und erzeugt einen Zustand, der vorläufiger Treffer genannt wird, für einen Fall, daß das FPC nach dem Abzweigungsbefehl ankommt, durch Vergleichen des am wenigstens wichtigsten Bits (bzw. least significant bit) des FPC mit der Position in den vier Befehlen, an der sich der Abzweigungsbefehl in der Vergangenheit befunden hat. Diese Operation ist eingebaut, um die Erzeugung der doppelt aufgezeichneten Eintragung in dem Assoziativ-Speicher zu verhindern.
D-Stufe
Die Position in den vier Befehlen, an der sich der Abzweigungsbefehl in der Vergangenheit befunden hat, wird überprüft, und wenn diese Position die letzte in den vier Befehlen ist, wird sie als der verzögerte Spalt angesehen, und ein VALF-Signal wird dann erzeugt.
E-Stufe
Der Abzweigungsbefehl wird in der BU (Abzweigungseinheit) tatsächlich ausgeführt und die zum Zeitpunkt eines BTBHIT in der F-Stufe erzeugten Adresse wird mit der durch die tatsächliche Ausführung des Abzweigungsbefehls in der BU erzeugten Adresse verglichen, um die durch die BTB vorhergesagte Adresse zu bestätigen.
Dann werden Bestätigungssignale ECASE1-3 und ein CNCL_P-Signal zur Aufhebung des Betriebs der BTB erzeugt.
M-Stufe
Die in die folgenden drei Fälle unterteilte Speicherungsoperation wird ausgeführt.
  • 1) Für den Fall, in dem kein effektiver Treffer in der F-Stufe vorliegt und das Auftreten der Abzweigung in der E-Stufe erfaßt wird, wird das Neuaufzeichnungs-Signal SETBTB an die BTB geliefert. Beim Speichern erzeugt sie eine Anzeige für die Verwendung einer Zufalls-Eintragungsadresse, einer Eintragung, für die der Treffer erhalten worden ist (BTBFHITM), und eine vorher gelöschte Adresse (INVTG).
  • 2) Für den Fall, in dem der effektive Treffer in der F-Stufe erzeugt worden ist, aber an eine verschiedene Adresse zum Zeitpunkt der Bestätigung in der E-Stufe (ein Fall einer indirekten Register-Abzweigung) gesprungen ist, wird die neue Zieladresse für die Eintragung, für die der Treffer erhalten worden ist, gespeichert.
  • 3) Für den Fall, daß das BTBHIT in der F-Stufe erhalten wird, aber das Auftreten der Abzweigung in der E-Stufe nicht erfaßt wird, wird das Löschen der BTB ausgeführt (BTBCLM).
Nun wird die BTB-Schaltung aus Fig. 9 bis Fig. 14 ausführlich beschrieben. In dieser BTB-Schaltung ist A-1 die Adreßspeicherung, die aus einem Assoziativspeicher (CAM) gebildet ist. Hierbei wird eine Anzahl von Eintragungen zum Speichern der Adressen als 32 angenommen.
Bezüglich der Eingänge von A-1, werden ein CAM-Such-Tor (CAMSP) und ein CAM-Schreib-Tor (CAMWP) in 27 Bits vorgesehen, so daß die Suchoperation und die Aufzeichnungsoperation der CAM gleichzeitig ausgeführt werden kann. Zum Zeitpunkt der Aufzeichnungsoperation wird die Eintragungsadresse zum Definieren der einzuschreibenden Eintragung durch ENTIN (31 : 0) definiert. Außerdem gibt es eine Eintragung-Effektiv-Flagge BTBVAL von 1 Bit zum Anzeigen der Wirksamkeit der Eintragung, derart, daß das Treffer-Signal nicht erzeugt wird, wenn dieses Gültigkeitsbit 0 ist, sogar wenn das CAMSP und das innere TAG in dem CAM zusammenpassen. Wenn die CAMSP und die innere TAG in der Suchoperation angepaßt werden und das Gültigkeitsbit 1 ist, werden die Daten in dem RAM-Abschnitt für diejenige Eintragung ausgelesen.
A-2 bezeichnet den oben beschriebenen RAM-Abschnitt. Dieser RAM-Abschnitt ist in den BRPOS-Abschnitt mit einem Feld von 2 Bits zum Anzeigen der Position des Abzweigungsbefehls in den vier Befehlen, und in den Datenabschnitt mit einem Feld von 32 Bit zum Anzeigen des Abzweigungsziels unterteilt.
Bezüglich der Eingänge dieses RAM-Abschnitts werden BUNUMM (1 : 0) und RAM-Schreib-Tor (RAMWP) (31 : 0) werden entsprechend den oben beschriebenen Feldern vorgesehen, und sie werden zu derselben Eintragung zum selben Zeitpunkt wie die Aufzeichnungsoperation des CAM-Abschnittes aufgezeichnet. Wenn der HIT von der Such-Operation erzeugt wird, werden die Data in dem RAM-Abschnitt für die Eintragung ausgelesen, für die der HIT erhalten worden ist. Dieses Schreiben in der Aufzeichnungsoperation und Lesen in der Suchoperation kann gleichzeitig in dem RAM-Abschnitt ausgeführt werden. Außerdem wird die Eintragung, für die der HIT in dem CAM-Abschnitt erzeugt worden ist, an BTBENT (31 : 0) abgegeben.
Der DATA-Abschnitt-Ausgang BTBDAT (31 : 0) zum Anzeigen des Abzweigungsziels des Assoziativspeichers A-2 wird mit dem D1-Eingang des Abzweigungsziel-Auswählers A-3 verbunden. Derselbe Ausgang ist auch mit dem Leitungs- bzw. Pipeline-Register A-4 verbunden. Der Ausgang des Pipeline-Registers A-4 ist außerdem mit dem Rohrleitungs- bzw. Pipeline-Register A-5 und dem D0-Eingang des Abzweigungsziel-Auswählers A-3 verbunden. Obwohl es von der Pipelinestufe des zu verwendenden Prozessors abhängt, wird die Treffersuche in der BTB in der F-Stufe ausgeführt, und A-4 entspricht der Pipelinestufe der D-Stufe, während A-5 der Pipelinestufe der E-Stufe entspricht.
Der Abzweigungs-Zielauswähler A-3 schaltet seine sechs Eingänge durch Verwendung von Signalleitungen VALD, VALF, ECASE1, ECASE2 und ECASE3. Die DATA von D0 bis D4 werden sequentiell ausgewählt, und wenn sie alle 0 sind, werden die DATA von D5 an den Ausgang Q (31 : 0) abgegeben. Die Signalleitung VALF ist eine Steuerleitung zum Anzeigen, daß der Ausgang des Assoziativspeichers in der F-Stufe effektiv ist, und ist das Signal, das an dem Steuerabschnitt, wie in Fig. 13 und Fig. 14 gezeigt, erzeugt wird. VALD ist ein Signal zum Aufpassen auf den Verzögerungsspalt, in dem dieses Signal 1 wird, wenn gewünscht wird, daß der Verzögerungsspalt wirksam gemacht wird. ECASE1, ECASE2 und ECASE3 sind die Einstell-Adressen für einen Fall, bei dem entdeckt wird, daß die falsche Adresse an die- F-Stufe abgegeben worden ist, wenn die Bestätigung des Abzweigungsziels der BTB in der E-Stufe ausgeführt wird. ECASE1 ist vorgesehen, weil die Abzweigungseinheit die Adresse des Abzweigungszieles abgibt, wenn die Vorhersage des BTB richtig ist, aber die Abzweigung tatsächlich schon genommen worden ist, so daß eine Notwendigkeit besteht, das Inkrement an dem FPC bereitzustellen. ECASE2 ist ein Signal, um auf den Fall aufzupassen, bei dem die Abzweigungsstellung in den vier Befehlen verschoben ist. ECASE3 ist ein Signal, um FPC aus den Verzögerungsspalt einzustellen, für einen Fall, daß die Vorhersage des BTB falsch ist.
Die Adressenberechnungseinrichtung A-6 ist für die Ausführung der Adressenberechnung entsprechend der Feststellung einer der Signale ECASE1, ECASE2 und ECASE3 wie oben beschrieben vorgesehen. Diese Adressenberechnung wird entsprechend des FPC, EPC und BRPOS_E (1.0) ausgeführt, das ein Signal ist, das BRPOS, das die Stellung an der sich der Abzweigungsbefehl in den vier Befehlen zum Zeitpunkt der BTB-Speicherung befindet, an die E-Stufe durch die Pipeline-Register A-7 und A-8 ähnlich wie A-4 und A-5 sendet.
Der Ausgang Q (31 : 0) des Abzweigungsziel-Auswählers A-3 wird an die Abzweigungseinheit als BTBBADRS (31 : 0) übertragen, während die BTBADVAL_C, die als eine logische Summe des BTB-Operations-Ungültigkeitssignals CNCL_P erhalten wird, und die OR (bzw. ODER-Verbindung) der oben beschriebenen Signalleitungen VALD, VALF, ECASE1, ECASE2 und ECASE3 als das Effektivsignal auch an die Abzweigungseinheit für die BTBADRS überträgt.
A-9 ist eine Übereinstimmungserfassungsschaltung in 32 Bit, die eine Schaltungsanordnung zum Ausführen der Bestätigung der Adresse JUMPAD_P (31 : 0) des von der Abzweigungseinheit eingegebenen Abzweigungsziels und des Abzweigungsziels der BTB darstellt. Das Übereinstimmungssignal wird an den Steuerabschnitt als BTBEQL übertragen.
Die Eintragungsadresse zum Zeitpunkt des Speicherns wird aus den drei Kandidaten aus dem Zufallsregister A-12 aus der DATA, die die Eintragung ist, zu der der Treffer erhalten worden ist, der von dem Pipeline-Register A-13 an die M-Stufe gesendet wird um die Aufzeichnung auszuführen und aus A-14, die die Eintragung speichert, für die die Löschung vorher gemacht worden ist, ausgewählt. Die Auswahl wird in dem Auswähler A-15 mit den Signalen BTFHITM und INVTG ausgeführt, die von der BTB-Steuereinheit eingegeben werden.
BTFHITM ist ein Signal, das festgestellt wird, wenn entdeckt wird, daß die Adresse für die der HIT von der BTB erhalten worden ist, in der E-Stufe ausgeschlossen worden ist, und es stellt eine Steuerleitung dar, um auf einen Fall aufzupassen, bei dem die Doppeleintragung auftritt, wenn die Aufzeichnung nicht entsprechend der Eintragung durchgeführt wird, für die der HIT durch die BTB erhalten worden ist. INVTG ist ein Signal, das festgestellt wird, wenn die Löschung aufgetreten ist, und wird fortlaufend festgestellt, bis die nächste Aufzeichnung ausgeführt wird.
Der Auswähler A-15 wählt für den Fall, daß BTFHITM festgestellt wird die DATA aus, die die Eintragung darstellt, für die der HIT erhalten worden ist, der von dem Pipeline-Register A-13 an die M-Stufe gesendet wird um die Speicherung der Eintragung durchzuführen für die der Hit erhalten worden ist, und für einen Fall, daß BTFHITM 0 ist und INVTG festgestellt wird die Eintragungsadresse von A-14, die die Eintragung speichert, für die die Löschung vorher gemacht worden ist, wohingegen er sonst den Wert des Zufallsregisters A-12 auswählt.
Die Assoziativspeicher A-1 und A-2 besitzen die Schaltungsanordnung, bei der die Suchoperation und die Aufzeichnungsoperation gleichzeitig ausgeführt werden können, aber es gibt einen Fall, bei dem die Zuverlässigkeit der Daten zu einem Problem wird, wenn die Suche und die Aufzeichnung bezüglich derselben Eintragung gleichzeitig auftrat. Die vorliegende Anordnung besitzt eine Funktion, um das Auftreten des Suchens und der Aufzeichnung bezüglich derselben-Eintragung zu erfassen, um auf einen derartigen 02645 00070 552 001000280000000200012000285910253400040 0002004211222 00004 02526 Fall aufzupassen.
Die Übereinstimmungsschaltung von A-11 und die logische Schaltung von A-10 erfassen des Auftreten des Suchens und der Aufzeichnung bezüglich derselben Eintragung, und maskieren das HIT-Signal der Assoziativspeicher A-1 und A-2.
In dem Pipeline-Register wird das Schreiben bewirkt, wenn kein STALL_P-Signal zum vorübergehenden Einfrieren der Pipeline vorliegt. Soweit es das erste Pipeline-Register der Pipeline-Register A-14, A-7 und A-13, die zwischen der F-Stufe und D-Stufe existieren, betrifft, gibt es eine zusätzliche Bedingung von einem ABEND_P-Signal, das anzeigt, ob alle vier Befehle ausgeführt worden sind oder nicht. Der Ausgang des Abzweigungsziel-Auswählers A-3 ist durch das Register A-16 verriegelt, und mit dem RAM-Abschnitt-Eingabetor RAMWP des Assoziativspeichers A-2 verbunden.
Es soll darauf hingewiesen werden, daß die oben beschriebenen Ausführungsbeispiele modifiziert werden können, so daß auch der Befehl des Abzweigungsziels in der Abzweigungs-Vorhersage-Tabelle gespeichert wird.
Andererseits können die oben beschriebenen Ausführungsbeispiele modifiziert werden, um den Cache-Speicher und die Abzweigungs-Vorhersage-Tabelle integriert in einer einzigen Speichervorrichtung so zu bilden, daß auch die Abzweigungs-Zieladresse in dem Cache-Speicher gespeichert wird und zum Zeitpunkt eines Holens von dem Cache-Speicher spezifiziert werden kann.
Außerdem können die aufzuzeichnenden Abzweigungs­ Vorhersage-Eintragungen entsprechend der Frequenz des Auftretens der Abzweigung anstelle der Aufzeichnung aller Abzweigungen, die vorher wie in den oben beschriebenen Ausführungsbeispielen auftraten, bestimmt werden.
Außerdem ist es nicht absolut notwendig, daß die Abzweigungs-Vorhersage-Tabelle mit einer Einrichtung zum Löschen der aufgezeichneten Eintragung ausgerüstet wird.
Wenn außerdem eine Möglichkeit für einen Fehler zum Zeitpunkt des Befehl-Holens besteht, kann anstelle des Stoppens der Aufzeichnung der Fehler durch den Vergleich mit der Eintragung sofort nach der Aufzeichnung festgestellt werden.
Außer den oben schon erwähnten Modifikationen und Abänderungen der obigen Ausführungsbeispiele können viele andere ausgeführt werden, ohne von den neuen und vorteilhaften Merkmalen der vorliegenden Erfindung abzuweichen. Dementsprechend ist beabsichtigt, daß alle derartigen Modifikationen und Abänderungen den Schutzumfang der beigefügten Ansprüche fallen.

Claims (21)

1. Abzweigungs-Vorhersage-Vorrichtung, umfassend:
eine Prozessoreinrichtung zum gleichzeitigen Ausführen einer Gruppe von Befehlen;
eine Abzweigungs-Vorhersage-Tabelleneinrichtung zum Aufzeichnen von Eintragungen, wobei jede Eintragung eine Abzweigungsadresse, die eine Gruppe von Befehlen mit einem vorhergesagten Abzweigungsbefehl anzeigt, eine Abzweigungs-Zieladresse des vorhergesagten Abzweigungsbefehls und eine Befehlsposition, die eine Position des vorhergesagten Abzweigungsbefehls in der durch die Abzweigungsadresse angezeigte Gruppe von Befehlen anzeigt, enthält;
eine Befehl-Holeinrichtung zum Holen der Gruppe von durch die Prozessoreinrichtung gleichzeitig auszuführenden Befehlen, die die Gruppe von Befehlen, die von einer Abzweigungs-Zieladresse eines vorhergesagten Abzweigungsbefehls für die gegenwärtig geholte Gruppe von Befehlen zu einem nächsten Verarbeitungszeitpunkt holt, zu dem der vorhergesagte Abzweigungsbefehl für die gegenwärtig geholte Gruppe von Befehlen in einer Eintragung in der Abzweigungs-Vorhersage-Tabelleneinrichtung mit einer Abzweigungsadresse aufgezeichnet wird, die mit einer Adresse der gegenwärtig geholten Gruppe von Befehlen übereinstimmt;
eine Vorhersage-Beurteilungseinrichtung zum Beurteilen des vorhergesagten Abzweigungsbefehls für die gegenwärtig geholte Gruppe von Befehlen als richtig, wenn der vorhergesagte Abzweigungsbefehl tatsächlich bei einer tatsächlichen Ausführung der gegenwärtig geholten Gruppe von Befehlen angetroffen wird; und
eine Ungültigkeitseinrichtung für vorhergesagte Befehle zum Ungültigkeitserklären der Gruppe von Befehlen, die durch die Abzweigungs-Zieladresse des vorhergesagten Abzweigungsbefehls für die gegenwärtig geholte Gruppe von Befehlen angezeigt werden, die von der Befehls-Holeinrichtung zu dem nächsten Verarbeitungszeitpunkt geholt werden, wenn die Vorhersage-Beurteilungseinrichtung den vorhergesagten Abzweigungsbefehl als nicht richtig beurteilt.
2. Vorrichtung nach Anspruch 1, dadurch gekennzeichnet, daß die Vorhersage-Beurteilungseinrichtung eine Vergleichereinrichtung zum Vergleichen der Befehlsposition, die in der Eintragung der Abzweigungs-Vorhersage-Tabelleneinrichtung mit der Abzweigungsadresse aufgezeichnet ist, die mit der Adresse der gegenwärtig geholten Gruppe von Befehlen übereinstimmt, mit einer tatsächlichen Befehlsposition eines tatsächlichen Ausführungsbefehls, der bei der tatsächlichen Ausführung der gegenwärtig geholten Gruppe von Befehlen angetroffen wird, enthält.
3. Vorrichtung nach Anspruch 2, außerdem umfassend eine Tabellen-Aufzeichnungseinrichtung zum Neuschreiben der Eintragungen in der Abzweigungs-Vorhersage-Tabelleneinrichtung, und wobei die Tabellen-Aufzeichnungseinrichtung die Eintragungen in der Abzweigungs-Vorhersage-Tabelleneinrichtung nicht neu schreibt, bis die Ausführung alle Befehle der gegenwärtig geholten Gruppe von Befehlen beendet ist, außer ein weiterer Abzweigbefehl wird bei der Ausführung einer tatsächlichen Ausführung der gegenwärtig geholten Gruppe von Befehlen nach dem tatsächlichen Abzweigungsbefehl angetroffen, wenn die tatsächliche Befehlsposition des tatsächlichen Abzweigungsbefehls, der bei der tatsächlichen Ausführung der gegenwärtig geholten Gruppe von Befehlen angetroffen wird, sich von der Befehlsposition des vorhergesagten Abzweigungsbefehls für die gegenwärtig geholte Gruppe von Befehlen unterscheidet und der tatsächliche Abzweigungsbefehl nicht genommen wird.
4. Vorrichtung nach Anspruch 2, außerdem umfassend eine Tabellen-Aufzeichnungseinrichtung zum Neuschreiben von Eintragungen in der Abzweigungs-Vorhersage-Tabelleneinrichtung, die auch eine neue Eintragung aufzeichnet, die den tatsächlichen Abzweigungsbefehl für die gegenwärtig geholte Gruppe von Befehlen in der Abzweigungs-Vorhersage-Tabelleneinrichtung aufzeichnet, wenn der tatsächliche Abzweigungsbefehl, der bei der tatsächlichen Ausführung der gegenwärtig geholten Gruppe von Befehlen angetroffen wird, nicht in der Abzweigungs-Vorhersage-Tabelleneinrichtung aufgezeichnet ist.
5. Vorrichtung nach Anspruch 1, außerdem umfassend eine Ungültigkeitseinrichtung für gegenwärtige Befehle, um Befehle in der gegenwärtig geholten Gruppe von Befehlen für ungültig zu erklären, die sich vor der eigentlichen Ausführung der gegenwärtig geholten Gruppe von Befehlen hinter der Befehlsposition des vorhergesagten Abzweigungsbefehls für die gegenwärtig geholte Gruppe von Befehlen befinden.
6. Vorrichtung nach Anspruch 5, dadurch gekennzeichnet, daß die Befehls-Holeinrichtung, die von der Ungültigkeitseinrichtung für gegenwärtige Befehle für ungültig erklärten Befehle zum nächsten Verarbeitungszeitpunkt holt, für einen Fall, daß alle Abzweigungsbefehle, die bei der eigentlichen Ausführung der gegenwärtig geholten Gruppe von Befehlen angetroffen wurden, tatsächlich nicht genommen werden, und für einen Fall, daß kein Abzweigungsbefehl bei der Ausführung der gegenwärtig geholten Gruppe von Befehlen angetroffen wird.
7. Vorrichtung nach Anspruch 5, dadurch gekennzeichnet, daß wenn die Gruppe von Befehlen, die von der Befehls-Holeinrichtung geholt werden, einen verzögerten Befehl enthält, der von der Ungültigkeitseinrichtung für gegenwärtige Befehle nicht für ungültig erklärt werden kann, sogar wenn er hinter der Befehlsposition des vorausgesagten Abzweigungsbefehls für die gegenwärtig geholte Gruppe von Befehlen angeordnet ist und der verzögerte Befehl tatsächlich ein Abzweigungsbefehl ist, die Befehls-Holeinrichtung den verzögerten Befehl holt, der tatsächlich ein Abzweigungsbefehl ist, und all die Befehle der gegenwärtig geholten Gruppe von Befehlen, die sich hinter dem einen verzögerten Befehl befinden, der zu dem, nächsten Verarbeitungszeitpunkt tatsächlich ein Abzweigungsbefehl ist.
8. Vorrichtung nach Anspruch 1, dadurch gekennzeichnet, daß die Befehls-Holeinrichtung die Gruppe von Befehlen sequentiell entsprechend der Adressen der Befehle holt, für einen Fall, bei dem die Adresse der gegenwärtig geholten Gruppe von Befehlen von einer anderen Adresse herrührt, und bei dem ein vorhergesagter Abzweigungsbefehl für die gegenwärtig geholte Gruppe von Befehlen existiert, der in einer Eintragung in der Abzweigungs-Vorhersage-Tabelleneinrichtung mit einer Abzweigungsadresse gespeichert wird, die mit der Adresse der gegenwärtig geholten Gruppe von Befehlen übereinstimmt, und die gespeicherte Befehlsposition entsprechend der Abzweigungsadresse, die mit der Adresse der gegenwärtig geholten Gruppe von Befehlen übereinstimmt, einer Befehlsposition der anderen Adresse voraus ist, von der die Adresse der gegenwärtig geholten Gruppe von Befehlen herrührt.
9. Vorrichtung nach Anspruch 1, dadurch gekennzeichnet, daß die AbzweigungsVorhersage-Tabelleneinrichtung einen Assoziativspeicher umfaßt.
10. Abzweigungs-Vorhersage-Vorrichtung, umfassend:
eine Prozessoreinrichtung zum Ausführen von Befehlen;
eine Abzweigungs-Vorhersage-Tabelleneinrichtung gebildet aus einem Assoziativspeicher zum Aufzeichnen von Eintragungen, wobei dem jede Eintragung eine Abzweigungsadresse, die gleichzeitig auszuführende Befehle mit einem vorhergesagten Abzweigungsbefehl anzeigt, eine Abzweigungs-Zieladresse des vorhergesagten Abzweigungsziels und eine Eintragungsadresse enthält, die eine Position jeder Eintragung in dem Assoziativspeicher der Abzweigungs-Vorhersage-Tabelleneinrichtung anzeigt;
eine Befehls-Holeinrichtung zum Holen von gleichzeitig von der Prozessoreinrichtung auszuführenden Befehlen, die die Befehle, die von einer Abzweigungs-Zieladresse eines vorhergesagte Abzweigungsbefehls für gegenwärtig geholte Befehle angezeigt werden, zu einem nächsten Verarbeitungszeitpunkt holt, zu dem der vorhergesagte Abzweigungsbefehl für die gegenwärtig geholte Gruppe von Befehlen in einer Eintragung in der Abzweigungs-Vorhersage-Tabelleneinrichtung mit einer Abzweigungsadresse aufgezeichnet wird, die mit einer Adresse der gegenwärtig geholten Befehle übereinstimmen;
eine Vorhersage-Beurteilungseinrichtung zum Beurteilen des vorhergesagten Abzweigungsbefehls für die gegenwärtig geholten Befehle als richtig, wenn der vorhergesagte Abzweigungsbefehl tatsächlich bei einer tatsächlichen Ausführung der gegenwärtig geholten Befehle angetroffen wird;
eine Ungültigkeitseinrichtung für vorhergesagte Befehle zum Ungültigkeiterklären der Befehle, die durch die Abzweigungs-Zieladresse des vorhergesagten Abzweigungsbefehls für die gegenwärtig geholten Befehle angezeigt werden, die von der Befehls-Holeinrichtung zu dem nächsten Verarbeitungszeitpunkt geholt werden, wenn die Vorhersage-Beurteilungseinrichtung den vorhergesagten Abzweigungsbefehl nicht als richtig beurteilt; und
eine Tabellen-Aufzeichnungseinrichtung, zum Neuschreiben der Eintragung, die den vorhergesagten Abzweigungsbefehl für die gegenwärtig geholten Befehle in der Abzweigungs-Vorhersage-Tabelleneinrichtung aufzeichnet, wenn die Vorhersage-Beurteilungseinrichtung den vorhergesagten Abzweigungsbefehl nicht als richtig beurteilt, durch Verwendung der Eintragungsadresse der Eintragung, die den vorhergesagten Abzweigungsbefehl für die gegenwärtig geholten Befehle aufzeichnet.
11. Vorrichtung nach Anspruch 10, dadurch gekennzeichnet, daß die Tabellen-Aufzeichnungseinrichtung auch eine Neueintragung aufzeichnet, die den tatsächlichen Abzweigungsbefehl für die gegenwärtig geholten Befehle in der Abzweigungs-Vorhersage-Tabelleneinrichtung aufzeichnet, wenn der tatsächliche Abzweigungsbefehl, der bei der tatsächlichen Ausführung der gegenwärtig geholten Befehle angetroffen wird, nicht in der Abzweigungs-Vorhersage-Tabelleneinrichtung aufgezeichnet ist, wo die Tabellen-Aufzeichnungseinrichtung die Neueintragung unter Verwendung einer neuen Eintragungsadresse aufzeichnet, die gegenwärtig in der Abzweigungs-Vorhersage-Tabelleneinrichtung nicht verwendet wird.
12. Vorrichtung nach Anspruch 10, außerdem umfassend eine Einrichtung zum Zuführen der Eintragungsadresse der Eintragung, die den vorhergesagten Abzweigungsbefehl für die gegenwärtig geholten Befehle aufzeichnet, die die Eintragungsadresse der Eintragung speichert, die den vorhergesagten Abzweigungsbefehl für die gegenwärtig geholten Befehle aufzeichnet, bis ein Neuschreiben der Eintragung, die den vorhergesagten Abzweigungsbefehl für die gegenwärtig geholten Befehle aufzeichnet, durch die Tabellen-Aufzeichnungseinrichtung ausgeführt wird.
13. Vorrichtung nach Anspruch 10, dadurch gekennzeichnet, daß die Tabellen-Aufzeichnungseinrichtung den Eintrag der den vorhergesagten Abzweigungsbefehl für die gegenwärtig geholten Befehle in der Abzweigungs-Vorhersage-Tabelleneinrichtung aufzeichnet, nicht neu schreibt, sogar wenn die Vorhersage-Beurteilungseinrichtung den vorhergesagten Abzweigungsbefehl nicht als richtig beurteilt, solange der tatsächliche Abzweigungsbefehl, der bei der tatsächlichen Ausführung der gegenwärtig geholten Befehle angetroffen wird, zu einem identischen Verarbeitungszeitpunkt geholt wird, zu dem eine Aufzeichnung durch die Tabellen-Aufzeichnungseinrichtung ausgeführt wird.
14. Vorrichtung nach Anspruch 10, dadurch gekennzeichnet, daß jede Eintragung in der Abzweigungs-Vorhersage-Tabelleneinrichtung außerdem ein Gültigkeitsbit enthält, das eine Gültigkeit dieser jeder Eintragung in der Abzweigungs-Vorhersage­ Tabelleneinrichtung anzeigt.
15. Vorrichtung nach Anspruch 14, dadurch gekennzeichnet, daß das Gültigkeitsbit jeder Eintragung in der Abzweigungs-Vorhersage-Tabelleneinrichtung diese jede Eintragung als ungültig anzeigt, wenn der vorhergesagte Abzweigungsbefehl jeder Eintragung bei der Ausführung des vorhergesagten Abzweigungsbefehls tatsächlich nicht genommen wird.
16. Vorrichtung nach Anspruch 14, außerdem umfassend eine Cache-Speichereinrichtung, um die von der Befehls-Holeinrichtung zu holenden Befehle zu speichern, und wobei das Gültigkeitsbit jeder Eintragung in der Abzweigungs-Vorhersage­ Tabelleneinrichtung diese jede Eintragung als ungültig bezeichnet, wenn ein Befehl mit einer Adresse, die mit der Abzweigungsadresse der jeweiligen Eintragung übereinstimmt, in der Cache-Speichereinrichtung nicht vorhanden ist.
17. Vorrichtung nach Anspruch 14, dadurch gekennzeichnet, daß die Tabellen-Aufzeichnungseinrichtung außerdem eine Neueintragung aufzeichnet, die den tatsächlichen Abzweigungsbefehl für die gegenwärtig geholten Befehle in der Abzweigungs-Vorhersage-Tabelleneinrichtung aufzeichnet, wenn die tatsächliche Abzweigungs-Vorhersage, die bei der tatsächlichen Ausführung der gegenwärtig geholten Befehle angetroffen wird, nicht in der Abzweigungs-Vorhersage-Tabelleneinrichtung aufgezeichnet ist, wobei die Tabellen-Aufzeichnungseinrichtung die Neueintragung durch Überschreiben einer Eintragung mit dem die Eintragung als ungültig anzeigenden Gültigkeitsbit aufzeichnet.
18. Vorrichtung nach Anspruch 10, dadurch gekennzeichnet, daß die Prozessoreinrichtung eine Gruppe von Befehlen gleichzeitig ausführt, die Befehls-Holeinrichtung die Gruppe von Befehlen zu jedem Verarbeitungszeitpunkt holt, und jede Eintragung in der Abzweigungs-Vorhersage-Tabelleneinrichtung außerdem eine Befehlsposition enthält, die eine Position des vorhergesagten Abzweigungsbefehls in der von der Abzweigungsadresse angezeigten Gruppe von Befehlen anzeigt.
19. Vorrichtung nach Anspruch 18, dadurch gekennzeichnet, daß die Befehls-Holeinrichtung die Befehle entsprechend den Adressen von Befehlen sequentiell holt, außer für den Fall, für den ein vorhergesagter Abzweigungsbefehl für die gegenwärtig geholten Befehle existiert, der in einer Eintragung in der Abzweigungs-Vorhersage-Tabelleneinrichtung mit einer Abzweigungsadresse aufgezeichnet ist, die mit einer Adresse der gegenwärtig geholten Befehle übereinstimmt und die Befehle, die von der Abzweigungs-Zieladresse des vorhergesagten Abzweigungsbefehls für gegenwärtig geholte Befehle angezeigt wird, nicht einen weiteren vorhergesagten Abzweigungsbefehl enthalten, der in einer weiteren Eintragung in der Abzweigungs-Vorhersage-Tabelleneinrichtung mit einer Abzweigungsadresse aufgezeichnet ist, die der Abzweigungs-Zieladresse des vorhergesagten Abzweigungsbefehls für gegenwärtig geholte Befehle voraus ist.
20. Abzweigungs-Vorhersage-Verfahren für einen Prozessor, der eine Gruppe von Befehlen gleichzeitig ausführen kann, umfassend die folgenden Schritte:
Schaffen einer Abzweige-Vorhersage-Tabelle zum Aufzeichnen von Eintragungen, wobei jede Eintragung eine Abzweigungsadresse, die eine Gruppe von Befehlen einschließlich eines vorhergesagten Abzweigungsbefehls anzeigt, eine Abzweigungs-Zieladresse des vorhergesagten Abzweigungsbefehls, und eine Befehlsposition, die eine Position des vorhergesagten Abzweigungsbefehls in der Gruppe von durch die Abzweigungsadresse angezeigten Befehlen anzeigt, enthält;
Holen der Gruppe von durch den Prozessor gleichzeitig auszuführenden Befehlen, die durch eine Abzweigungs-Zieladresse eines vorhergesagten Abzweigungsbefehls für eine gegenwärtig geholte Gruppe von Befehlen angezeigt werden, zu einem nächsten Verarbeitungszeitpunkt, zu dem der vorhergesagten Abzweigungsbefehl für die gegenwärtig geholte Gruppe von Befehlen in einer Eintragung in der Abzweigungs-Vorhersage-Tabelleneinrichtung mit einer Abzweigungsadresse aufgezeichnet wird, die mit einer Adresse der gegenwärtig geholten Gruppe von Befehlen übereinstimmt;
tatsächliches Ausführen der Gruppe von in dem Holschritt geholten Befehlen durch den Prozessor gleichzeitig;
Beurteilen, daß der vorhergesagte Abzweigungsbefehl für die gegenwärtig geholte Gruppe von Befehlen als richtig, wenn der vorhergesagten Abzweigungsbefehl tatsächlich bei einer tatsächlichen Ausführung der gegenwärtig geholten Gruppe von Befehlen in dem tatsächlichen Ausführungsschritt angetroffen wird; und
Ungültigerklären der Gruppe von Befehlen, die von der Aufzeichnungs-Zieladresse des vorhergesagten Aufzeichnungsbefehls für die gegenwärtig geholte Gruppe von Befehlen angezeigt werden, die in dem Holschritt zu dem nächsten Bearbeitungszeitpunkt geholt werden, wenn der vorhergesagte Abzweigungsbefehl in dem Beurteilungsschritt nicht als richtig beurteilt wird.
21. Abzweigungs-Vorhersage-Verfahren, umfassend die folgenden Schritte:
Schaffen einer aus einem Assoziativspeicher gebildeten Abzweigungs-Vorhersage-Tabelle, zum Aufzeichnen von Eintragungen, wobei jede Eintragung eine Abzweigungsadresse, die gleichzeitig auszuführende Befehle mit einem vorhergesagten Abzweigungsbefehl anzeigt, eine Abzweigungs-Zieladresse des vorhergesagten Abzweigungsbefehls, und eine Eintragungsadresse enthält, die eine Position der Eintragung in dem Assoziativspeicher der Abzweigungs-Vorhersage-Tabelle anzeigt;
Holen der von einem Prozessor gleichzeitig auszuführenden Befehle, die durch eine Abzweigungs-Zieladresse einen vorhergesagten Abzweigungsbefehl für gegenwärtig geholten Befehle angezeigt werden, zu einem nächsten Verarbeitungszeitpunkt, zu dem der vorhergesagte Abzweigungsbefehl die gegenwärtig geholte Gruppe von Befehlen in eine Eintragung in der Abzweigungs-Vorhersage-Tabelle mit einer Abzweigungsadresse aufgezeichnet wird, die mit einer Adresse der gegenwärtig geholten Befehle übereinstimmt;
tatsächliches Ausführen der in dem Holschritt geholten Befehle durch den Prozessor gleichzeitig;
Beurteilen des vorhergesagten Abzweigungsbefehls für die gegenwärtig geholten Befehle als richtig, wenn der vorhergesagten Abzweigungsbefehl tatsächlich bei einer tatsächlichen Ausführung der gegenwärtig geholten Befehle in dem tatsächlichen Ausführungsschritt angetroffen wird;
Ungültigerklären der Befehle, die von der Abzweigungs-Zieladresse des vorhergesagten Abzweigungsbefehls für die gegenwärtig geholten Befehle angezeigt werden, die in dem Holschritt beim nächsten Verarbeitungszeitpunkt geholt werden, wenn der vorhergesagte Abzweigungsbefehl in dem Beurteilungsschritt nicht als richtig beurteilt wird; und
Neuschreiben der Eintragung, die den vorhergesagten Abzweigungsbefehl für die gegenwärtig geholten Befehle in der Abzweigungs-Vorhersage-Tabelle aufzeichnet, wenn der vorhergesagte Abzweigungsbefehl in dem Beurteilungsschritt nicht als richtig beurteilt wird, durch Verwenden der Eintragungsadresse der Eintragung, die den vorhergesagten Abzweigungsbefehl für die gegenwärtig geholten Befehle aufzeichnet.
DE4211222A 1991-04-05 1992-04-03 Abzweigungs-Vorhersage-Vorrichtung und Abzweigungs-Vorhersage-Verfahren für einen Super-Skalar-Prozessor Expired - Fee Related DE4211222B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPP3-073329 1991-04-05
JP7332991 1991-04-05

Publications (2)

Publication Number Publication Date
DE4211222A1 true DE4211222A1 (de) 1992-10-22
DE4211222B4 DE4211222B4 (de) 2009-05-28

Family

ID=13515022

Family Applications (1)

Application Number Title Priority Date Filing Date
DE4211222A Expired - Fee Related DE4211222B4 (de) 1991-04-05 1992-04-03 Abzweigungs-Vorhersage-Vorrichtung und Abzweigungs-Vorhersage-Verfahren für einen Super-Skalar-Prozessor

Country Status (3)

Country Link
US (1) US5414822A (de)
KR (1) KR950012119B1 (de)
DE (1) DE4211222B4 (de)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0690373A1 (de) * 1993-12-15 1996-01-03 Silicon Graphics, Inc. Geraet zur verarbeitung von befehlen in einem rechnersystem
EP0770955A1 (de) * 1995-10-26 1997-05-02 STMicroelectronics Limited Cachespeicher

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5623614A (en) * 1993-09-17 1997-04-22 Advanced Micro Devices, Inc. Branch prediction cache with multiple entries for returns having multiple callers
ATE184407T1 (de) * 1994-01-03 1999-09-15 Intel Corp Verfahren und vorrichtung zum implementieren eines vierstufigen verzweigungsauflosungssystem in einem rechnerprozessor
US5574871A (en) * 1994-01-04 1996-11-12 Intel Corporation Method and apparatus for implementing a set-associative branch target buffer
TW253946B (en) * 1994-02-04 1995-08-11 Ibm Data processor with branch prediction and method of operation
JP3590427B2 (ja) * 1994-08-30 2004-11-17 株式会社ルネサステクノロジ 先行読出機能付命令キャッシュメモリ
US5608886A (en) * 1994-08-31 1997-03-04 Exponential Technology, Inc. Block-based branch prediction using a target finder array storing target sub-addresses
JP3494736B2 (ja) * 1995-02-27 2004-02-09 株式会社ルネサステクノロジ 分岐先バッファを用いた分岐予測システム
US6151090A (en) * 1995-05-31 2000-11-21 Casio Computer Co., Ltd. LCD using liquid crystal of ferroelectric and/or antiferroelectric phase having pretilt angle of 1 degree or less
US6112019A (en) * 1995-06-12 2000-08-29 Georgia Tech Research Corp. Distributed instruction queue
GB9521978D0 (en) * 1995-10-26 1996-01-03 Sgs Thomson Microelectronics Computer instruction supply
US5734881A (en) * 1995-12-15 1998-03-31 Cyrix Corporation Detecting short branches in a prefetch buffer using target location information in a branch target cache
US5742805A (en) * 1996-02-15 1998-04-21 Fujitsu Ltd. Method and apparatus for a single history register based branch predictor in a superscalar microprocessor
US5924128A (en) * 1996-06-20 1999-07-13 International Business Machines Corporation Pseudo zero cycle address generator and fast memory access
AU3666697A (en) * 1996-08-20 1998-03-06 Idea Corporation A method for identifying hard-to-predict branches to enhance processor performance
US5758143A (en) * 1996-10-07 1998-05-26 International Business Machines Corporation Method for updating a branch history table in a processor which resolves multiple branches in a single cycle
JPH10133874A (ja) * 1996-11-01 1998-05-22 Mitsubishi Electric Corp スーパスカラプロセッサ用分岐予測機構
US6088793A (en) * 1996-12-30 2000-07-11 Intel Corporation Method and apparatus for branch execution on a multiple-instruction-set-architecture microprocessor
TW357318B (en) * 1997-03-18 1999-05-01 Ind Tech Res Inst Branching forecast and reading device for unspecified command length extra-purity pipeline processor
US6237077B1 (en) * 1997-10-13 2001-05-22 Idea Corporation Instruction template for efficient processing clustered branch instructions
US6314493B1 (en) 1998-02-03 2001-11-06 International Business Machines Corporation Branch history cache
KR100498425B1 (ko) * 1998-02-04 2005-09-08 삼성전자주식회사 분기 예측 장치
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
US6304960B1 (en) 1998-08-06 2001-10-16 Intel Corporation Validating prediction for branches in a cluster via comparison of predicted and condition selected tentative target addresses and validation of branch conditions
US6230260B1 (en) 1998-09-01 2001-05-08 International Business Machines Corporation Circuit arrangement and method of speculative instruction execution utilizing instruction history caching
US6957327B1 (en) * 1998-12-31 2005-10-18 Stmicroelectronics, Inc. Block-based branch target buffer
US6976157B1 (en) * 1999-11-04 2005-12-13 International Business Machines Corporation Circuits, systems and methods for performing branch predictions by selectively accessing bimodal and fetch-based history tables
JP2003525493A (ja) 2000-02-28 2003-08-26 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ マルチコマンド命令語を有するデータプロセッサ
EP1405174A1 (de) * 2001-06-29 2004-04-07 Koninklijke Philips Electronics N.V. Verfahren, vorrichtung und kompilierer zur vorhersage von indirekten verzweigungszieladressen
JP3798998B2 (ja) * 2002-06-28 2006-07-19 富士通株式会社 分岐予測装置および分岐予測方法
US7426631B2 (en) * 2005-02-02 2008-09-16 International Business Machines Corporation Methods and systems for storing branch information in an address table of a processor
EP1990713B1 (de) * 2006-02-28 2013-04-10 Fujitsu Ltd. Abzweigungsprädiktionseinrichtung für computer
US7827392B2 (en) * 2006-06-05 2010-11-02 Qualcomm Incorporated Sliding-window, block-based branch target address cache
US20080040591A1 (en) * 2006-08-11 2008-02-14 Moyer William C Method for determining branch target buffer (btb) allocation for branch instructions
US20080040590A1 (en) * 2006-08-11 2008-02-14 Lea Hwang Lee Selective branch target buffer (btb) allocaiton
US7877586B2 (en) * 2008-02-01 2011-01-25 International Business Machines Corporation Branch target address cache selectively applying a delayed hit
US8181005B2 (en) * 2008-09-05 2012-05-15 Advanced Micro Devices, Inc. Hybrid branch prediction device with sparse and dense prediction caches

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5142634A (en) * 1989-02-03 1992-08-25 Digital Equipment Corporation Branch prediction
US5136697A (en) * 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
US5226130A (en) * 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US5283873A (en) * 1990-06-29 1994-02-01 Digital Equipment Corporation Next line prediction apparatus for a pipelined computed system
US5276882A (en) * 1990-07-27 1994-01-04 International Business Machines Corp. Subroutine return through branch history table

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
US IEEE Transactions on Computers, Vol. 39, No. 3, März 1990, S. 349-359 *
US-Z.: "Computer2, H. 1, 1984, S. 6-22 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0690373A1 (de) * 1993-12-15 1996-01-03 Silicon Graphics, Inc. Geraet zur verarbeitung von befehlen in einem rechnersystem
EP0690373A4 (de) * 1993-12-15 1997-05-14 Silicon Graphics Inc Geraet zur verarbeitung von befehlen in einem rechnersystem
US5954815A (en) * 1993-12-15 1999-09-21 Silicon Graphics, Inc. Invalidating instructions in fetched instruction blocks upon predicted two-step branch operations with second operation relative target address
US6247124B1 (en) 1993-12-15 2001-06-12 Mips Technologies, Inc. Branch prediction entry with target line index calculated using relative position of second operation of two step branch operation in a line of instructions
EP1320031A2 (de) 1993-12-15 2003-06-18 MIPS Technologies, Inc. (a Delaware corporation) Vorrichtung zur Verzweigungsvorhersage
US6691221B2 (en) 1993-12-15 2004-02-10 Mips Technologies, Inc. Loading previously dispatched slots in multiple instruction dispatch buffer before dispatching remaining slots for parallel execution
EP1320031A3 (de) * 1993-12-15 2008-12-17 MIPS Technologies, Inc. (a Delaware corporation) Vorrichtung zur Verzweigungsvorhersage
EP0770955A1 (de) * 1995-10-26 1997-05-02 STMicroelectronics Limited Cachespeicher

Also Published As

Publication number Publication date
US5414822A (en) 1995-05-09
KR920020314A (ko) 1992-11-21
DE4211222B4 (de) 2009-05-28
KR950012119B1 (ko) 1995-10-14

Similar Documents

Publication Publication Date Title
DE4211222A1 (de) Verfahren und vorrichtung zur abzweigungs-vorhersage unter verwendung einer abzweigungs-vorhersagetabelle
DE69133302T2 (de) Registerabbildung in einem einzigen Taktzyklus
DE69434728T2 (de) Synchronisationssystem und verfahren in einem datencachesystem mit aufgeteiltem pegel
DE3116100C2 (de) Datenverarbeitungseinheit
DE4222776C2 (de) Parallelverarbeitungseinheit und Verfahren zum Ausführen von Befehlen
DE69534148T2 (de) Rechnersystem zur Ausführung von Verzweigungsbefehlen
DE60130178T2 (de) Programmentwicklungsunterstützungsapparat
DE3210816C2 (de)
DE69628480T2 (de) Ausnahmebehandlung in einem Datenprozessor
DE69534113T2 (de) Kompression der Befehlswörter eines Rechners
DE19855806A1 (de) Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen
CH654943A5 (de) Pruefeinrichtung fuer mikroprogramme.
DE2415900A1 (de) Rechenautomat mit mehreren mit je einem vorratsspeicher versehenen rechenanlagen
DE1901036A1 (de) Anordnung fuer die wiederholte Ausfuehrung fehlerhaft ausgefuehrter Funktionen
DE2145709B2 (de)
DE19526008A1 (de) Vertikal partitionierter, primärer Befehls-Cache-Speicher
DE2336020B2 (de) Adressen-berechnungsschaltung fuer paritaetsfehler-korrekturprogramme
DE2364323C2 (de) Verfahren zur Behandlung von Unterbrechungsbedingungen in einer Datenverarbeitungsanlage
DE1949916A1 (de) Datenverarbeitungsverfahren und Computer zu seiner Durchfuehrung
DE2246863A1 (de) Verfahren und anordnung zur protokollierung des programmablaufs in datenverarbeitungsanlagen
DE2906685C2 (de)
DE2617485A1 (de) Verfahren und schaltungsanordnung zur abarbeitung von mikrobefehlsfolgen in datenverarbeitungsanlagen
DE2242009C2 (de) Verfahren und Anordnung zum Erkennen, ob im Mikroprogramm einer Datenverarbeitungsanlage vorgesehene Verzweigungsoperationen ausgeführt werden
DE2106731A1 (de) Diagnoseeinrichtung fur elektronische Datenverarbeitungsanlagen
DE10026017A1 (de) Vorabruf-Puffer

Legal Events

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