DE4211222A1 - Verfahren und vorrichtung zur abzweigungs-vorhersage unter verwendung einer abzweigungs-vorhersagetabelle - Google Patents
Verfahren und vorrichtung zur abzweigungs-vorhersage unter verwendung einer abzweigungs-vorhersagetabelleInfo
- 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
Links
- 239000000872 buffer Substances 0.000 title abstract description 18
- 230000015654 memory Effects 0.000 claims description 48
- 238000012545 processing Methods 0.000 claims description 27
- 230000003111 delayed effect Effects 0.000 claims description 16
- 238000000034 method Methods 0.000 claims description 15
- 239000011800 void material Substances 0.000 claims 1
- 239000007853 buffer solution Substances 0.000 abstract 1
- 238000012544 monitoring process Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000012217 deletion Methods 0.000 description 5
- 230000037430 deletion Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012790 confirmation Methods 0.000 description 4
- 230000001934 delay Effects 0.000 description 4
- 238000001514 detection method Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000009482 thermal adhesion granulation Methods 0.000 description 2
- 150000001875 compounds Chemical class 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative 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.
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.
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.
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.
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.
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.
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.
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.
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.
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)
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)
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)
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 |
-
1992
- 1992-04-03 DE DE4211222A patent/DE4211222B4/de not_active Expired - Fee Related
- 1992-04-03 US US07/863,181 patent/US5414822A/en not_active Expired - Lifetime
- 1992-04-04 KR KR1019920005633A patent/KR950012119B1/ko not_active IP Right Cessation
Non-Patent Citations (2)
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)
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 |