-
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.
-
Aus
IEEE Transactions an Computers, vol. 39, No. 3, März 1990,
S. 349–359
ist bekannt, bei bedingten Verzweigungen Vorhersagen über den
zu erwartenden Verzweigungsweg zu treffen.
-
Aus
der US-Zeitschrift „Computer" Heft 1, 1984, S.
6–22 ist
ein Hardwaremechanismus zur Abzweigungsvorhersage unter Verwendung
einer Abzweigungs-Vorhersage-Tabelle (Branch-Target-Buffer) bekannt.
-
Aus
der
EP 0 401 992 ist
ein Super-Skalar-Prozessor bekannt, in dessen Befehls-Cache-Speicher
Abzweigungs-Vorhersage-Information gespeichert wird.
-
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 29000 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 eines 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 langes 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 für
einen Prozessor eines Super-Skalar-Typs zu schaffen, so daß die Abzweigungs-Vorhersage
mit einer höheren
Geschwindigkeit effektiver ausgeführt werden kann.
-
Diese
Aufgabe wird durch die Abzweigungs-Vorhersage-Vorrichtung für einen
Super-Skalar-Prozessor, gemäß Patentanspruch
1, sowie durch das Abzweigungs-Vorhersage-Verfahren für einen Super-Skalar-Prozessor,
gemäß nebengeordnetem Patentanspruch
20, gelöst.
-
Vorteilhafte
Ausgestaltungen der Erfindung geben die abhängigen Patentansprüche wieder.
-
Weitere
Merkmale und Vorteile der vorliegenden Erfindung werden aus der
nun folgenden Beschreibung unter Bezugnahme auf die Zeichnungen ersichtlich.
-
In
den Figuren zeigen:
-
1 ein
Blockdiagramm eines ersten Ausführungsbeispiels
einer Vorrichtung für
Abzweigungs-Vorhersage entsprechend der vorliegenden Erfindung;
-
2 ein
Flußdiagramm
für einen
Betrieb der Abzweigungs-Vorhersagevorrichtung aus 1 zum
Zeitpunkt des Nolens eines Befehls;
-
3 ein Flußdiagramm für einen Betrieb der Abzweigungs-Vorhersagevorrichtung
aus 1 zum Zeitpunkt der Ausführung eines Befehls;
-
4 ein
Blockdiagramm eines zweiten Ausführungsbeispiels
einer Vorrichtung für
Abzweigungs-Vorhersage entsprechend der vorliegenden Erfindung;
-
5 ein
Flußdiagramm
für einen
Betrieb einer Eintragungsadressen-Erzeugungseinheit in der Abzweigungs-Vorhersagevorrichtung
aus 4;
-
6 ein
Prozeß-Flußdiagramm
in der Vorrichtung aus 4, um deren Betrieb zu erklären;
-
7 ein
Blockdiagramm eines dritten Ausführungsbeispiels
einer Vorrichtung zur Abzweigungs-Vorhersage entsprechend der vorliegenden Erfindung;
-
8 ein
Blockdiagramm eines vierten Ausführungsbeispiels
einer Vorrichtung zur Abzweigungs-Vorhersage entsprechend der vorliegenden Erfindung;
-
9 bis 14 eine
Anzahl von Schaltbildern, die eine praktische Verwirklichung der
Abzweigungs-Vorhersage-Vorrichtung entsprechend der vorliegenden
Erfindung zeigen;
-
15 bis 17 eine
Anzahl von Schaltbildern, die eine Steuervorrichtung zeigen, die
mit der praktischen Verwirklichung der in 9 bis 14 gezeigten
Abzweigungs-Vorhersage-Vorrichtung assoziiert werden sollen;
-
18 und 19 eine
Anzahl von Schaltbildern, die eine Verbindung der praktischen Verwirklichung
der in 9 bis 14 gezeigten
Abzweigungs-Vorhersagevorrichtung und der in 15 bis 17 gezeigten
Steuervorrichtung zeigen.
-
Unter
Bezugnahme auf 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 eine Prozessor-Einrichtung 50 und
einen Abzweigungs-Vorhersageabschnitt 60.
-
Die
Prozessor-Einrichtung 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ültigkeitserklärungs-Einheit 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ültigkeitserklärungs-Einheit 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 geeignte 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ültigkeitserklärungs-Einheit 3,
um den von den in dem Befehlsbuffer 2 zum Zeitpunkt des
Befehl-Nolens 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ültigkeitserklärungs-Einheit 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 2 und 3 wird nun
der tatsächliche
Betriebsvorgang der Vorrichtung aus 1 ausführlich beschrieben.
Im folgenden wird der Betrieb flit 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 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 Adress-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 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 Abzeigungs-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 Beisppiel
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
Abzweigungs-Vorhersage-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ültigkeitserklärungs-Einheit 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 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 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 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ültigkeitserklärungs-Einheit 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ültigkeitserklärungs-Einheit 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 1 werden die Befehle <102> und <103>, deren Befehlsposition <3> und <4> hinter der gespeicherten
Befehlsposition <2> des vohergesagten
Abzweigungsbefehls sind, durch die Befehls-Ungültigkeitserklärungs-Einheit 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 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ültigkeitserklärungs-Einheit 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 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 Befehlspositon <2> des vohergesagten
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 vohergesagte 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ählen 9 und
die Ungültigkeits-Fortführungseinheit 14 sendet.
-
Im
Schritt 206 wählt
die Ungültigkeits-Fortführungseinheit 14 die
Befehls-Ungültigkeitserklärungs-Einheit 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 UngUltigkeits-Fortsetzungseinheit 14 im Schritt 208 die
Abzweigungs-Vorhersage-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 Programmzahler 6 der
Abzweigungs-Vorhersage-Tabelle 7 im Schritt 101 zugeführten Adresse <100> geeignet verzögert und zum
Neuschreiben der Abzweigungs-Vorhersage-Tabelle 7 verwendet.
-
Wenn
andererseits der Betrieb zum Schritt 209 fortschreitet,
steuert die Ungültigkeits-Fortführungseinheit 14 die
Befehls-Ungültigkeitserklärungs-Einheit 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-Nolens 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ültigkeitserklärungs-Einheit 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 Abzweigungs-Vorhersage-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 in der Prozessoreinrichtung 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-Nolens 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
die Prozessoreinrichtung 50 im voraus eingestellt wird.
Zum Beispiel für
die in 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ültigkeitserklärungs-Einheit 3 für ungültig erklärt werden.
-
Hierbei
soll darauf hingewiesen werden, daß zum Zeitpunkt des Befehl-Nolens
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-Nolens 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 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 eine Prozessoreinrichtung 70 und
einen Abzweigungs-Vorhersageabschnitt 80.
-
Die
Prozessoreinrichtung 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ültigkeitserklärungs-Einheit 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 holenden 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
Addresse 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 Abzweigungs-Vorhersage-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 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 Abzweigungs-Vorhersage-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ültigkeitserklärungs-Einheit 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ültigkeitserklärungs-Einheit 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 <D1> 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 Abzweigungs-Vorhersage-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 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 Zufallsfahl 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 6 gezeigt,
wenn der von der Abzweigungs-Überwachungseinheit 35 überwachte
Befehl Il 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 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 7 sind diejenigen Elemente,
die im wesentlichen den entsprechenden oben beschriebenen Elementen
für das
zweite Ausführungsbeispiel im
Zusammenhang mit 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 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 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 2 in dem
ersten oben beschriebenen Asufü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 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 8 werden diejenigen Elemente,
die den entsprechenden für
das zweite Ausführungsbeispiel
im Zusammenhang mit 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 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 warden 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 Abzweigungsadrese 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 die Prozessoreinrichtung 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-Änderungs-Steuereinheit 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 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 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 9 bis 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 15 bis 17 zusammengenommen
zeigen eine Steuerschaltung, die an die BTB-Schaltung von 9 bis 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 18 und 19 zusammengenommen
eine Anordnung, bei der die BTB-Schaltung von 9 bis 14 und
die Steuerschaltung aus 15 bis 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 15 bis 17 ausführlich beschrieben.
Diese Steuerschaltung von 15 bis 17 betrifft
vier Stufen, umfassend: F-Stufe 20 (Holen), D-Stufe 21 (Dekodieren),
E-Stufe 22 (Ausführen)
und M-Stufe 23 (Speicherzugriff). Die auszuführenden
Operationen in diesen Stufen sind wie folgt.
-
F-Stufe
-
Ein
BTBHIT_P-Signal wird von der Datenweg-Einheit empfangen, und entsprechend
dem Kontext der Stufen und dem Zustand der Abzweigungseinheit wird überprüft, ob das
empfangene BTBHIT_P-Signal wirklich effektiv ist oder nicht. Wenn
befunden wird, daß das
BTBHIT_P-Signal wirklich effektiv ist, wird ein VALF-Signal zurückgegeben,
um die Adresse von der BTB effektiv zu machen.
-
Das
BTBHIT beurteilt den Treffer durch Verwendung der Spalte in Einheiten
von vier Befehlen, und erzeugt einen Zustand, der vorläufiger Treffer
genannt wird, für
einen Fall, daß das
FPC nach dem Abzweigungsbefehl ankommt, durch Vergleichen des am
wenigstens wichtigsten Bits (bzw. least significant bit) des FPC
mit der Position in den vier Befehlen, an der sich der Abzweigungsbefehl
in der Vergangenheit befunden hat. Diese Operation ist eingebaut,
um die Erzeugung der doppelt aufgezeichneten Eintragung in dem Assoziativ-Speicher
zu verhindern.
-
D-Stufe
-
Die
Position in den vier Befehlen, an der sich der Abzweigungsbefehl
in der Vergangenheit befunden hat, wird überprüft, und wenn diese Position
die letzte in den vier Befehlen ist, wird sie als der verzögerte Spalt
angesehen, und ein VALF-Signal wird dann erzeugt.
-
E-Stufe
-
Der
Abzweigungsbefehl wird in der BU (Abzweigungseinheit) tatsächlich ausgeführt und
die zum Zeitpunkt eines BTBHIT in der F-Stufe erzeugten Adresse
wird mit der durch die tatsächliche
Ausführung
des Abzweigungsbefehls in der BU erzeugten Adresse verglichen, um
die durch die BTB vorhergesagte Adresse zu bestätigen.
-
Dann
werden Bestätigungssignale ECASE1–3 und ein
CNCL_P-Signal zur Aufhebung des Betriebs der BTB erzeugt.
-
M-Stufe
-
Die
in die folgenden drei Fälle
unterteilte Speicherungsoperation wird ausgeführt.
- (1)
Für den
Fall, in dem kein effektiver Treffer in der F-Stufe vorliegt und
das Auftreten der Abzweigung in der E-Stufe erfaßt wird, wird das Neuaufzeichnungs-Signal
SETBTB an die BTB geliefert. Beim Speichern erzeugt sie eine Anzeige
für die Verwendung
einer Zufalls-Eintragungsadresse, einer Eintragung, für die der
Treffer erhalten worden ist (BTBFHITM), und eine vorher gelöschte Adresse
(INVTG).
- (2) Für
den Fall, in dem der effektive Treffer in der F-Stufe erzeugt worden
ist, aber an eine verschiedene Adresse zum Zeitpunkt der Bestätigung in der
E-Stufe (ein Fall einer indirekten Register-Abzweigung) gesprungen
ist, wird die neue Zieladresse für
die Eintragung, für
die der Treffer erhalten worden ist, gespeichert.
- (3) Für
den Fall, daß das
BTBHIT in der F-Stufe erhalten wird, aber das Auftreten der Abzweigung in
der E-Stufe nicht erfaßt
wird, wird das Löschen der
BTB ausgeführt
(BTBCLM).
-
Nun
wird die BTB-Schaltung aus 9 bis 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 13 und 14 gezeigt,
erzeugt wird. VALD ist ein Signal zum Aufpassen auf den Verzögerungsspalt,
in dem dieses Signal l 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 auf 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 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.