-
Die vorliegende Erfindung betrifft
eine Anweisungs-Vorausleseschaltung und eine Cache-Vorrichtung.
-
11 ist
ein Blockdiagramm, das eine herkömmliche
Anweisungs-Vorausleseschaltung
zeigt. Diese ist an die CPU (zentrale Verarbeitungseinheit) eines
Mikrocomputers oder ähnliches
angeschlossen, um im Voraus Anweisungsdaten D zu holen, d. h. vorauszulesen,
die für
die CPU beim nächsten
Zyklus erforderlich sind, um die Anweisungsausführungsgeschwindigkeit zu erhöhen. Die
Anweisungs-Vorausleseschaltung kann auch auf eine Cache-Vorrichtung
angewendet werden. In diesem Fall liest die Cache-Vorrichtung Anweisungsdaten
D im Voraus, um ihren Betrieb zu beschleunigen.
-
In 11 enthält die Anweisungs-Vorausleseschaltung
einen Adressen-Erzeugungsabschnitt 10,
der ein Signal FA empfängt,
das eine von der CPU (nicht gezeigt) gesendete Holadresse anzeigt, und
eine Vorausleseadresse erzeugt. Die Vorausleseadresse wird in einem
Speicher 20 gespeichert und wird auch zu einem Bestimmungssignal-Erzeugungsabschnitt 30 gesendet,
der ein Signal erzeugt, das schließlich als Signal VALID zur
CPU ausgegeben wird, das anzeigt, ob die zur CPU ausgegebene Anweisung
D gültig
oder ungültig
ist. Der Ausgang des Datenregisters 40 ist auch an einen
Vor-Decodierer 51 angeschlossen. Der Ausgang des Vor-Decodierers 51 ist
an ein synchrones D-Typ-Flip-Flop 51a angeschlossen, dessen
Ausgang an einen Eingang eines ODER-Gatters 52 angeschlossen
ist, sowie an den invertierten Eingang eines UND-Gatters 32a. Der
andere Eingang des ODER-Gatters 52 ist an ein Rücksetzsignal
RST von der CPU angeschlossen. Der andere Eingang zum UND-Gatter 32a kommt vom
Bestimmungssignal-Erzeugungsabschnitt 30 und
wird nachfolgend detaillierter beschrieben. Der Ausgang des ODER-Gatters 52 ist
an den "Rücksetz"-Anschluss eines
synchronen RS-FF
(Rücksetz-Setz-Flip-Flops) 54 angeschlossen.
Der "Setz"-Anschluss des Flip-Flops 54 empfängt das
Signal VALID vom Ausgang des UND-Gatters 32a über einen
Inverter 53. Der Ausgang des Flip-Flops 54 ist ein
Signal SEL0, das zum nachfolgend beschriebenen Adressen-Erzeugungsabschnitt 10 eingegeben wird.
-
Der Adressen-Erzeugungsabschnitt 10 weist einen
Selektor 11 auf, der zwei Eingangssignale empfängt und
in Abhängigkeit
vom Signal SEL0 vom Flip-Flop 54 zwischen den Signalen
auswählt.
Das erste Eingangssignal ist das Holsignal FA von der CPU. Das zweite
Eingangssignal ist das Ergebnis einer am Ausgangssignal vom Selektor 11 durchgeführten Verarbeitung.
Der Ausgang des Selektors 11 ist an ein Vorausleseadressenregister
(PFA) 12 angeschlossen. Der Ausgang des Registers 12 ist
an einen Inkrementierer 13 angeschlossen, der eine Eins zu
einer vom Register 12 ausgegebenen Adresse addiert. Dieses
Signal dient als das zweite Eingangssignal zum Selektor. Die Ausgabe
des Registers 12 wird auch als Vorausleseadresse zum Speicher 20 ausgegeben
und wird auch zum Tag- bzw. Etikettenregister 31 im Bestimmungssignal-Erzeugungsabschnitt 30 geführt. Das
Etikettenregister 31 hält
die Ausgabe vom Register 12 und gibt sie zu einer Anpassungseinheit 32 aus.
Die Anpassungseinheit 32 empfängt auch das Signal FA direkt
von der CPU und vergleicht die Etikettenregisteradresse mit der
Holadresse FA. Die Ausgabe der Anpassungseinheit 32 ist
die andere Eingabe zum UND-Gatter 32a, das oben angegeben
ist. Die Ausgabe des UND-Gatters 32a erzeugt das Signal
VALID. Wenn die Etikettenregisteradresse an die Holadresse FA angepasst
ist, ist das Anpassungseinheitssignal auf einem logischen Pegel "1 ", wohingegen das
Anpassungseinheitssignal dann, wenn die Adressen nicht angepasst
sind, einen logischen Pegel "0" annimmt.
-
Der Betrieb der Vorausleseschaltung
der 11 kann unter Bezugnahme
auf das Zeitdiagramm in 12 erklärt werden.
-
In 12 sind
das Holsignal FA, die im Register 12 geladene Vorausleseadresse,
die vom Register 40 gesendeten Anweisungsdaten D und die
Signale VALID, SEL0 und RST gezeigt. Wenn das Rücksetzsignal RST "1" ist, wird das Signal SEL0 des RS-FF 54,
welches Signal als das Ladeauswahlsignal für das Register 12 arbeitet,
auf "0" rückgesetzt. Bei
dieser Stufe gibt das Register 40 keine effektive Daten
aus. Wenn das Rücksetzsignal
RST "0" wird, wird das Holsignal
FA in das Register 12 geladen. Während das Auswahlsignal SEL0 "1" ist, arbeitet die Schaltung der 11 in einem Vorauslesemode,
so dass das Register 12 fortgesetzt mit den inkrementierten
Adressen geladen wird. Der Speicher 20 gibt die Daten D
entsprechend der vom Register 12 eingegebenen Adresse zum
Register 40 aus.
-
Wenn die Anweisungsdaten D entsprechend (2)
in 12 eine Verzweigungsanweisung
sind, erfasst der Vor-Decodierer 51 dies aus der Ausgabe des
Registers 40, und der Vorauslesemode wird freigegeben.
Danach erscheint eine Adresse A, die eine Verzweigungs-Zielortadresse
darstellt, im Holsignal FA von der CPU. Die Verzweigungs-Zielortadresse
A wird in das Register 12 geladen und die Schaltung beginnt
wieder im Vorauslesemode zu arbeiten, wie es aus der 12 zu sehen ist.
-
Jedoch leidet die vorangehende herkömmliche
Anweisungs-Vorausleseschaltung an dem Problem, dass der Vorauslesebetrieb
der Schaltung nicht nur dann gestoppt wird, wenn die durch den Vor-Decodierer 51 erfasste
vorausgelesene Anweisung eine unbedingte Verzweigungsanweisung ist, sondern
sogar dann, wenn sie eine bedingte Verzweigungsanweisung ist. Als
Ergebnis wird selbst dann, wenn die Bedingung nicht erfüllt ist
und somit die Verzweigung nicht genommen wird, der Vorauslesebetrieb
gestoppt, was zu einer unnötigen
Verzögerung
führt,
die unvermeidbar die Verarbeitungsleistung der CPU erniedrigt.
-
IBM Technical Disclosure Bulletin
Vol. 33, No. 3B, August 1990, "Efficient
Scheme to Reduce Over-Prefetching of Instructions for Loading an
Instruction Buffer" beschreibt
eine Technik und Hardware zum Eliminieren eines Vorauslesens von
Anweisungen aus einem Speicher in einem auf einem Mikroprozessor
basierenden System nach einer unbedingten Verzweigungsanweisung.
Dies beruht auf einem Prüfen
jeder Anweisung, um zu bestimmen, ob sie eine unbedingte Verzweigungsanweisung
ist, und wenn es so ist, auf einem Beendigen des Vorausleseprozesses,
um zu verhindern, dass nachfolgende Anweisungen nicht richtig im
Anweisungspuffer gespeichert und dann zum Mikroprozessor zugeführt werden.
-
EP-A-0 320 098 offenbart eine Sprungvorhersageschaltung,
die bestimmt, ob ein Sprung in Abhängigkeit von einer Bestimmung
diesbezüglich, ob
eine spezifizierte Sprungbedingung erfüllt worden ist, durchgeführt worden
ist. Dies erfordert eine Berücksichtigung
jeder aus dem Speicher wiedergewonnenen Anweisung.
-
Ein weiteres Vorausleseschema, das
eine Sprungvorhersage enthält
und eine Berücksichtigung der
Art der Anweisung erfordert, ist von Scott McFarling und John Hennessy,
Computer Systems Laboratory, Stanford University: "Reducing the Cost
of Branches", Conference
Proceedings of the 13th Annual International
Symposium on Computer Architecture, 2.–5. Juni 1986, Tokyo, Japan
offenbart.
-
Eine Anzahl von heuristischen Algorithmen, die
für eine
Verzweigungsvorhersage zu verwenden sind, ist in "Branch Prediction
Strategies and Branch Target Buffer Design", 8153 Computer 17 (1984), Jan., No.
1, Long Beach, California, USA, Johnny Lee und Alan Jay Smith offenbart.
Diese Algorithmen basieren auf einer Abbildung der Zustände der
bestimmten Verzweigung und einer Funktion, die die Vorhersage ergibt.
-
Gemäß der vorliegenden Erfindung
ist eine Anweisungs-Vorausleseschaltung nach Anspruch 1 geschaffen.
-
Die Anweisungs-Vorausleseschaltung
kann eine Cache-Vorrichtung aufweisen.
-
Die vorliegende Erfindung wird vollständiger aus
der hierin nachfolgend angegebenen detaillierten Beschreibung, genommen
in Zusammenhang mit den beigefügten
Zeichnungen, verstanden werden.
-
In den Zeichnungen ist:
-
1 ein
Blockdiagramm, das eine Anweisungs-Vorausleseschaltung gemäß der vorliegenden Erfindung
zeigt;
-
2 ein
Zeitdiagramm zum Erklären
eines Betriebs der in 1 gezeigten
Anweisungs-Vorausleseschaltung;
-
3 ein
Blockdiagramm, das eine Anweisungs-Vorausleseschaltung zeigt, die
einen Vor-Decodierer verwendet;
-
4 eine
Blockdiagramm, das die Struktur eines in 3 gezeigten Vor-Decodierers zeigt;
-
5 ein
Zeitdiagramm zum Erklären
eines Betriebs der in 3 gezeigten
Anweisungs-Vorausleseschaltung;
-
6 ein
Blockdiagramm, das einen weiteren Typ von Anweisungs-Vorausleseschaltung
zeigt;
-
7 ein
Blockdiagramm, das eine Schaltung zum Erzeugen eines Signals MISS
(= NICHTTREFFER) zeigt, das bei der in 6 gezeigten Anweisungs-Vorausleseschaltung
verwendet wird;
-
8 ein
Blockdiagramm, das einen weiteren Typ von Anweisungs-Vorausleseschaltung
zeigt;
-
9 ein
Blockdiagramm, das eine Verzweigungsvorhersageeinrichtung zeigt,
die bei der in 8 gezeigten
Anweisungs-Vorausleseschaltung verwendet wird;
-
10 ein
Diagramm, das einen weiteren Typ von Verzweigungsvorhersageeinrichtung
zeigt, die bei einer Anweisungs-Vorausleseschaltung verwendet wird;
-
11 ein
Blockdiagramm, das eine herkömmliche
Anweisungs-Vorausleseschaltung
zeigt; und
-
12 ein
Zeitdiagramm zum Erklären
eines Betriebs der in 11 gezeigten
herkömmlichen Anweisungs-Vorausleseschaltung.
-
Nachfolgend werden Ausführungsbeispiele der
vorliegenden Erfindung anhand eines Beispiels unter Bezugnahme auf
die beigefügten
Zeichnungen beschrieben.
-
1 ist
ein Blockdiagramm, das eine Anweisungs-Vorausleseschaltung gemäß der vorliegenden
Erfindung zeigt. In 1 sind
dieselben oder ähnliche
Elemente durch dieselben Symbole wie diejenigen in 11 dargestellt.
-
Wie bei der in 11 gezeigten Schaltung enthält die Anweisungs-Vorausleseschaltung
der 1 einen Adressen-Erzeugungsabschnitt 10,
der ein Signal FA empfängt,
das eine von einer CPU (nicht gezeigt) gesendete Holanweisungsadresse anzeigt,
und eine Vorausleseadresse erzeugt, einen Speicher 20,
der an eine Ausgangsseite des Adressen-Erzeugungsabschnitts 10 angeschlossen
ist und in der CPU zu verwendende Anweisungen entsprechend Adressen
speichert, einen Bestimmungssignal-Erzeugungsabschnitt 30,
der auch an die Ausgangsseite des Adressen-Erzeugungsabschnitts 10 angeschlossen
ist und zur CPU ein Signal VALID ausgibt, das anzeigt, ob die zur
CPU ausgegebenen Anweisungsdaten D gültig oder ungültig sind,
und ein Datenregister 40, das an eine Ausgangsseite des Speichers 20 angeschlossen
ist und die aus dem Speicher 20 ausgelesenen Daten D zum
Zuführen zur
CPU hält.
-
Bei der Anweisungs-Vorausleseschaltung dieses
Ausführungsbeispiels
ist eine Auswahlsignal-Erzeugungseinrichtung 60 anstelle
des Vor-Decodierers 51 und der zugehörigen Elemente in 11 vorgesehen. Die Auswahlsignal-Erzeugungseinrichtung 60 erzeugt
ein Auswahlsignal SEL1, das seinen Pegel bei einer Änderung
des Signals VALID von "gültig" zu "ungültig" ändert, um eine beim Adressen-Erzeugungsabschnitt 10 zu
ladende Adresse zu der von der CPU gesendeten Holadresse FA umzuschalten,
was später
detailliert beschrieben wird.
-
Der Adressen-Erzeugungsabschnitt 10 enthält einen
Selektor 11 mit einem Eingangsanschluss, der das Holsignal
FA von der CPU empfängt.
Der Adressen-Erzeugungsabschnitt 10 enthält weiterhin ein
Vorausleseadressenregister 12, das an eine Ausgangsseite
des Selektors 11 angeschlossen ist, und einen Inkrementierer 13,
der eine Ausgabe des Registers 12 empfängt. Der Inkrementierer 13 addiert
1 (Eins) zu einer vom Register 12 ausgegebenen Adresse
und gibt die um Eins inkrementierte Adresse zu einem weiteren Eingangsanschluss
des Selektors 11 aus. Der Selektor 11 empfängt weiterhin
das Ausgangssignal SEL1 und wählt
in Abhängigkeit
vom Ausgangssignal SEL1 entweder das Holsignal FA von der CPU oder
das Ausgangssignal vom Inkrementierer 13 zum Zuführen zum
Register 12 aus. Das Register 12 wird mit der
vom Selektor 11 ausgegebenen ausgewählten Adresse geladen und gibt
die geladene Adresse als Vorausleseadresse zum Speicher 20 aus.
-
Der Bestimmungssignal-Erzeugungsabschnitt 30 enthält ein Etikettenregister 31 und
eine Anpassungseinheit 32. Das Etikettenregister 31 hält die Ausgabe
vom Register 12 und gibt sie zur Anpassungseinheit 32 aus.
Die Anpassungseinheit 32 vergleicht die ausgegebene Adresse
vom Etikettenregister 31 mit der Holadresse FA von der
CPU. Wenn die vom Etikettenregister 31 ausgegebene Adresse an
die Holadresse FA angepasst ist oder mit dieser übereinstimmt, erzeugt die Anpassungseinheit 32 das
Signal VALID auf einem Pegel "1". Andererseits, nämlich dann,
wenn das Ergebnis negativ ist, erzeugt die Anpassungseinheit 32 das
Signal VALID auf einem Pegel "0". Das Signal VALID
wird zur CPU gesendet.
-
Die Auswahlsignal-Erzeugungseinrichtung 60 enthält ein RS-FF 62,
dem das Signal VALID über einen
Inverter 61 eingegeben wird, und ein D-FF 63 (Datenverzögerungs-Flip-Flop),
dem das Signal VALID direkt eingegeben wird. Das RS-FF 62 hat
einen Rücksetzanschluss
R, dem selektiv ein Rücksetzsignal
RST zum Einstellen eines Rücksetz-
oder Setzmodes eingegeben wird. Andererseits ist das D-FF 63 zum
Zwischenspeichern eines Zustands des Signals VALID vorgesehen, und
es hat einen Ausgangsanschluss, der an einen der Eingangsanschlüsse eines
UND-Gatters 64 mit
zwei Eingängen
angeschlossen ist. Dem anderen Eingangsanschluss des UND-Gatters 64 wird
ein invertierter Wert des Signals VALID eingegeben. Ein Ausgangssignal
des UND-Gatters 64 wird invertiert und zu einem der Eingangsanschlüsse eines
UND-Gatters 65 mit zwei Eingängen eingegeben. Weiterhin
ist ein Ausgangsanschluss des RS-FF 62 an den anderen Eingangsanschluss
des UND-Gatters 64 angeschlossen. Das Auswahlsignal SEL1
wird vom UND-Gatter 65 zum Selektor 11 zugeführt.
-
Nun wird hierin nachfolgend ein Betrieb
der in 1 gezeigten Anweisungs-Vorausleseschaltung
unter Bezugnahme auf ein in 2 gezeigtes Zeitdiagramm
erklärt.
-
In 2 sind
das Holsignal FA, die im Register 12 geladene Vorausleseadresse,
die vom Register 40 gesendeten Anweisungsdaten D und die
Signale VALID, SEL1 und RST gezeigt. Wenn das Rücksetzsignal RST "1" ist, wird das Auswahlsignal SEL1 des
UND-Gatters 65 auf "0" rückgesetzt.
Bei dieser Stufe gibt das Register 40 keine effektiven
Daten aus. Wenn das Rücksetzsignal
RST "0" wird, wird das Holsignal
FA in das Register 12 geladen und wird das Auswahlsignal
SEL1 auf "1" gesetzt. Während das
Ausgangsignal SEL1 "1" ist, arbeitet die
Schaltung der 1 in einem
Vorauslesemode, so dass das Register 12 fortgesetzt mit
den inkrementierten Adressen geladen wird. Der Speicher 20 gibt
die Daten D entsprechend der vom Register 12 eingegebenen
Adresse zum Register 40 aus.
-
Wenn die Anweisungsdaten D entsprechend (2)
in 2 eine unbedingte
Verzweigungsanweisung sind, oder eine bedingte Verzweigungsanweisung
sind und die Verzweigung ausgeführt
wird, sind die Holadresse FA von der CPU und die vom Register 12 ausgegebene
Adresse voneinander unterschiedlich, so dass die Anpassungseinheit 32 einen Pegel
des Signals VALID von "1" zu "0" ändert,
was "ungültig" darstellt. Insbesondere
wird dann, wenn die Verzweigung ausgeführt wird, die Holadresse FA A,
während
die vom Register 12 ausgegebene Adresse in 2 4 wird, so dass sich beide Adressen voneinander
unterscheiden, um zu veranlassen, dass die Anpassungseinheit 32 den
Pegel des Signals VALID von "1" zu "0" ändert.
Die Änderung
bezüglich
des Pegels des Signals VALID wird durch die Operationen des D-FF 63 und
des AND-Gatters 64 erfasst, um das Auswahlsignal SEL1 bei
einem Zyklus zwangsweise von "1" zu "0" zu ändern,
wie es in 2 ge zeigt
ist. Insbesondere ist es so eingerichtet, dass sich dann, wenn das
Signal VALID von "1" zu "0" geändert
wird, ein Pegel am Eingangsanschluss des UND-Gatters 64, der den invertierten
Wert des Signals VALID empfängt,
von "0" zu "1" ändert,
während
ein Pegel am Eingangsanschluss des am D-FF 63 angeschlossenen
UND-Gatters 64 aufgrund der Zwischenspeicheroperation des
D-FF 63 bei einem Zyklus "1" bleibt.
Somit wird ein Pegel am Eingangsanschluss des am UND-Gatter 64 angeschlossenen UND-Gatters 65 "0", während
ein Pegel am Eingangsschluss des am RS-FF 62 angeschlossenen UND-Gatters 65 "1" bleibt, so dass das Auswahlsignal SEL1
bei einem Zyklus "0" wird, wie es in 2 gezeigt ist.
-
Demgemäß wählt der Selektor 11 die
Holadresse FA zum Zuführen
zum Register 12 so aus, dass das Register 12 mit
der Adresse A geladen wird und die Vorausleseoperation wieder durchgeführt wird,
wie es in 2 gezeigt
ist. Wie es erkannt wird, stellt das Signal VALID dann, wenn die
Anweisungsdaten D entsprechend (2) in 2 die
bedingte Verzweigungsanweisung sind und die Verzweigung nicht ausgeführt wird,
fortgesetzt "gültig" dar, was entgegengesetzt
zur vorangehenden Beschreibung ist, so dass die Vorausleseoperation
fortgesetzt normal durchgeführt
wird.
-
Beim oben beschriebenen Ausführungsbeispiel
dauert selbst dann, wenn der Verzweigungsbefehl vorausgelesen wird,
die Vorausleseoperation an, bis tatsächlich eine Diskrepanz zwischen
der Holadresse FA und der vom Register 12 ausgegebenen Adresse
auftritt, um zu veranlassen, dass die Anpassungseinheit 32 das
Signal VALID von "gültig" zu "ungültig" zu ändern. Demgemäß kann dann,
wenn die Anweisung die bedingte Verzweigungsanweisung ist und die
Verzweigung nicht ausgeführt
wird, die Anweisung verglichen mit der in 11 gezeigten herkömmlichen Anweisungs-Vorausleseschaltung
effizient zur CPU zugeführt
werden. Weiterhin kann deshalb, weil die Anweisung nicht vor-decodiert
werden muss, wie bei der Schaltung der 11, die Hardware vereinfacht werden und
kann die Verarbeitungsverzögerung
vermieden werden. Weiterhin wird dann, wenn die in 1 gezeigte Schaltung auf eine im Voraus
beschreibbare Cache-Vorrichtung angewendet wird, da ein Updaten
fortgeführt
werden kann, um ein Trefferverhältnis
der Vorrichtung zu erhöhen,
ihre Leistungsfähigkeit
verbessert.
-
3 ist
ein Blockdiagramm, das eine Anweisungs-Vorausleseschaltung zeigt,
die einen Vor-Decodierer verwendet. In 3 sind dieselben oder ähnliche
Elemente durch dieselben Symbole wie diejenigen in 1 dargestellt.
-
Wie es in 3 gezeigt ist, enthält die Anweisungs-Vorausleseschaltung
weiterhin einen Vor-Decodierer 71, einen Selektor 72 und
ein UND-Gatter 73. Die andere Struktur ist im Wesentlichen
dieselbe wie diejenige, die in 1 gezeigt
ist.
-
Der Vor-Decodierer 71 ist
an eine Ausgangsseite des Datenregisters 40 angeschlossen.
Der Vor-Decodierer 71 ist vorgesehen, um zu erfassen, dass
die vorausgelesene Anweisung D vom Datenregister 40 eine
unbedingte Verzweigungsanweisung ist, und um eine Verzweigungs-Zielortadresse
von der unbedingten Verzweigungsanweisung zu extrahieren. Der Selektor 72 ist
zwischen einer Ausgangsseite des Inkrementierers 13 und
einer Eingangsseite des Selektors 11 vorgesehen. Der Selektor 72 empfängt die
inkrementierte Adresse vom Inkrementierer 13 und empfängt weiterhin
die Verzweigungs-Zielortadresse vom Vor-Decodierer 71,
wenn die vorausgelesene Anweisung D die unbedingte Verzweigungsanweisung
ist. Der Selektor 72 wählt
eine von ihnen zum Zuführen
zum Selektor 11 aus.
-
Ein Erfassungssignal, das anzeigt,
ob die Anweisungsdaten D die unbedingte Verzweigungsanweisung sind,
des Vor-Decodierers 71 wird zu einem der Eingangsanschlüsse eines
UND-Gatters 73 mit zwei Eingängen eingegeben. Dem anderen
Eingangsanschluss des UND-Gatters 73 wird das Signal VALID
eingegeben. Das UND-Gatter 73 gibt ein Auswahlsignal SEL2
zum Selektor 72 aus, der eine Auswahl zwischen den Adressen
vom Inkrementierer 13 und vom Vor-Decodierer 71 basierend
auf dem Auswahlsignal SEL2 umschaltet. Andererseits wird das Auswahlsignal
SEL1 zum Selektor 11 eingegeben. Bei dieser Schaltung wird
das Auswahlsignal SEL1 unter Verwendung der Auswahlsignal-Erzeugungseinrichtung 60 erzeugt,
die unter Bezugnahme auf 1 beschrieben
ist, kann aber unter Verwendung des Vor-Decodierers 51 bei
der in 11 gezeigten herkömmlichen
Schaltung erzeugt werden.
-
4 ist
ein Blockdiagramm, das eine Struktur des Vor-Decodierers 71 zeigt.
-
Der Vor-Decodierer 71 enthält eine
Koinzidenzschaltung 71-1. Die Koinzidenzschaltung 71-1 extrahiert
beispielsweise 6 Bits, die eine Eigenschaft der vom Datenregister 40 ausgegebenen
Anweisung darstellen, zum Erfassen einer Koinzidenz mit einer vorausgewählten Bit-Eigenschaft
der unbedingten Verzweigungsanweisung. Die Koinzidenzschaltung 71-1 gibt
ein Koinzidenzsignal S71-1 als Ergebnis der Erfassung zum UND-Gatter 73 aus.
Der Vor-Decodierer 71 enthält weiterhin ein Adressen-Extraktionsregister 71-2 und
einen Bit-Erweiterer 71-3. Dem Register 71-2 werden
beispielsweise 26 Bits eingegeben, die einer Adresse eines Anweisungsfelds
der vom Datenregister 40 ausgegebenen Anweisung zeigen,
um eine durch eine Anweisung bestimmte Verzweigungs-Zielortadresse
zu holen, wenn das Signal S71-1 "Koinzidenz" anzeigt. Ein Strom
von 26 Bits, die vom Register 71-2 ausgegeben werden, wird durch
den Bit-Erweiterer zu einem Strom von 32 Bits erweitert, um zum
Selektor 72 zugeführt
zu werden.
-
Nun wird hierin nachfolgend ein Betrieb
der in 3 gezeigten Anweisungs-Vorausleseschaltung
unter Bezugnahme auf ein in 5 gezeigtes Zeitdiagramm
erklärt.
-
In 5 erfasst
der Vor-Decodierer 71 dann, wenn beispielsweise die Anweisungsdaten
D entsprechend (2) die unbedingte Verzweigungsanweisung sind, dies,
und das UND-Gatter 73 gibt das entsprechende Auswahlsignal
SEL2 zum Selektor 72 aus. Gleichzeitig extrahiert der Vor-Decodierer 71 die durch
diese unbedingte Verzweigungsanweisung bestimmte Verzweigungs-Zielortadresse
und führt
sie zum Selektor 72 zu. Der Selektor 72 wählt die
Verzweigungs-Zielortadresse basierend auf dem Auswahlsignal SEL2
zum Zuführen
zum Selektor 11 aus. Demgemäß gibt der Selektor 11 die
Verzweigungs-Zielortadresse aus, so dass das Register 12 mit
der Verzweigungs-Zielortadresse zum Zuführen zum Speicher 20,
zum Inkrementierer 13 und zum Etikettenregister 31 geladen
wird.
-
Bei dieser Schaltung fährt die
Anweisungs-Vorausleseschaltung selbst dann damit fort, die Vorausleseoperation
durchzuführen,
wenn die unbedingte Verzweigungsanweisung vorausgelesen wird. Insbesondere
wird die Vorausleseoperation unter Verwendung der durch die unbedingte
Verzweigungsanweisung bestimmten Verzweigungs-Zielortadresse durchgeführt. Wie
es erkannt wird, arbeitet die Anweisungs-Vorausleseschaltung dann,
wenn die Anweisungsdaten D entsprechend (2) in 5 die bedingte Verzweigungsanweisung
sind, im Wesentlichen auf dieselbe Weise wie diejenige der 1. Weiterhin wird dann,
wenn die in 3 gezeigte
Schaltung auf eine im Voraus beschreibbare Cache-Vorrichtung angewendet
wird, da ein Updaten fortgeführt
werden kann, um ein Trefferverhältnis
der Vorrichtung selbst dann zu erhöhen, wenn eine unbedingte Verzweigungsanweisung
vorausgelesen wird, ihre Leistungsfähigkeit verbessert.
-
6 ist
ein Blockdiagramm, das einen weiteren Typ von Anweisungs-Vorausleseschaltung zeigt.
In 6 sind die gleichen
oder ähnliche
Elemente durch dieselben Symbole wie diejenigen in 3 dargestellt.
-
Wie es in 6 gezeigt ist, enthält die Anweisungs-Vorausleseschaltung
den Adressen-Erzeugungsabschnitt 10, den Speicher 20,
den Bestimmungssignal-Erzeugungsabschnitt 30 und
das Datenregister 40, wie die in 3 gezeigte Schaltung. Die Schaltung enthält einen
Vor-Decodierer 81 und einen Selektor 82. Der Vor-Decodierer 81 ist
an eine Ausgangsseite des Datenregisters 40 angeschlossen.
Der Vor-Decodierer 81 ist vorgesehen, um zu erfassen, dass
die vorausgelesene Anweisung D vom Datenregister 40 eine
bedingte Verzweigungsanweisung ist, und um eine Verzweigungs-Zielortadresse von
der bedingten Verzweigungsanweisung zu extrahieren. Der Selektor 82 ist
zwischen eine Ausgangsseite des Inkrementierers 30 und
eine Eingangsseite des Selektors 11 vorgesehen. Der Selektor 82 empfängt die
inkrementierte Adresse vom Inkrementierer 13 und empfängt weiterhin
die Verzweigungs-Zielortadresse vom Vor-Decodierer 81,
wenn die vorausgelesene Anweisung D die bedingte Verzweigungsanweisung
ist. Der Selektor 82 wählt
eine von ihnen zum Zuführen
zum Selektor 11 aus.
-
Ein Erfassungssignal, das anzeigt,
ob die Anweisungsdaten D die bedingte Verzweigungsanweisung sind,
des Vor-Decodierers 81 wird zu einem der Eingangsanschlüsse eines
UND-Gatters 83 mit zwei Eingängen eingegeben. Dem anderen
Eingangsanschluss des UND-Gatters 83 wird ein gegebenes
Verzweigungsvorhersage-Bit der vom Datenregister 40 ausgegebenen
vorausgelesenen Anweisung D eingegeben. Eine Ausgabe des UND-Gatters 83 und
das Signal VALID werden zu Eingangsanschlüssen eines UND-Gatters 84 mit
zwei Eingängen eingegeben.
Das UND-Gatter 84 gibt ein Auswahlsignal SEL2 zum Selektor 82 aus,
der eine Auswahl zwischen den Adressen vom Inkrementierer 13 und vom
Vor-Decodierer 81 basierend auf dem Auswahlsignal SEL2
umschaltet. Andererseits wird ein Auswahlsignal SEL1 zum Selektor 11 eingegeben.
Bei dieser Schaltung wird deshalb, weil eine Vorhersage diesbezüglich durchgeführt wird,
ob die bedingte Verzweigungsanweisung tatsächlich ausgeführt wird oder
nicht, weiterhin ein Signal MISS zum Laden der Holadresse FA zur
Verfügung
gestellt, wenn die Vorhersage falsch ist. Das Signal MISS und das
Rücksetzsignal
RST werden zu einem ODER-Gatter 85 eingegeben, von welchem
eine Ausgabe dann wieder zu einem Rücksetzanschluss R eines synchronen
RS-FF 86 eingegeben wird. Das RS-FF 86 gibt das
Auswahlsignal SEL1 zum Selektor 11 aus, der eine Auswahl
zwischen der Adresse von Selektor 82 und der Holadresse
FA basierend auf dem Auswahlsignal SEL1 umschaltet. Als Eingangssignal
zu einem Setzanschluss S des RS-FF 86 wird ein Moden-Einstellsignal
SEL1 beim vorangehenden Zyklus verwendet.
-
7 ist
ein Blockdiagramm, das eine Schaltung zum Erzeugen des Signals MISS
(= NICHTTREFFER) zeigt.
-
Die Schaltung enthält einen
FA-Änderungs-Extraktionsabschnitt 91,
der die Holadresse FA empfängt
und ihre Änderung
extrahiert, einen Zähler 92 zum
Zählen
einer Ausgabe des FA-Änderungs-Extraktionsabschnitts 91,
d. h. der Anzahl der von der CPU gesendeten Holadressen FA, eine
Koinzidenzschaltung 93 zum Erfassen, dass eine Ausgabe
des Zählers 92 "1" ist, ein ODER-Gatter 94 zum Ableiten
der logischen Summe einer Ausgabe der Koinzidenzschaltung 93 und
des Rücksetzsignals RST
und ein synchrones RS-FF 95 mit einem Rücksetzanschluss R, dem eine
Ausgabe des ODER-Gatters 94 eingegeben wird. Diese Elemente
arbeiten zusammen, um eine Zeitgabe des Signals MISS einzustellen.
Das RS-FF 95 hat einen Setzanschluss S, dem das Erfassungsergebnis
vom Vor-Decodierer 81 eingegeben wird, d. h. das Erfassungssignal,
das anzeigt, ob die Anweisungsdaten D die bedingte Verzweigungsanweisung
sind. Eine Ausgangsseite des RS-FF 95 ist an einen Freigabeanschluss
E des Zählers 92 und
an einen der Eingangsanschlüsse
eines UND-Gatters 96 mit zwei Eingängen angeschlossen. Ein invertierter
Wert des Signals VALID wird zum anderen Eingangsanschluss des UND-Gatters 96 eingegeben.
Das Signal MISS wird vom UND-Gatter 96 ausgegeben. Die
Schaltung der 7 prüft, ob die Verzweigungsvorhersage
falsch gewesen ist oder nicht, und erzeugt das Signal MISS dann,
wenn sich herausstellt, dass die Verzweigungsvorhersage falsch gewesen
ist.
-
Nun wird hierin nachfolgend ein Betrieb
der in 6 gezeigten Anweisungs-Vorausleseschaltung
beschrieben.
-
Wenn die bedingte Verzweigungsanweisung erfasst
wird, während
im Vorauslesemode gearbeitet wird, wird basierend auf dem Verzweigungsvorhersage-Bit
im Anweisungsfeld der Anweisung D abgeschätzt, ob die Verzweigung ausgeführt wird.
Das Verzweigungsvorhersage-Bit wird gemäß dem bekannten Vorhersagealgorithmus
vorbereitet, wenn ein Compiler oder ein Programmierer ein Programm herstellt.
Gemäß einer
Anweisungsgruppe kann das Verzweigungsvorhersage-Bit in der Form
eines Vorzeichen-Bits sein, das eine Richtung (Plus- oder Minus-Richtung) der Verzweigungs-Zielortadresse
anzeigt.
-
Wenn die bedingte Verzweigungsanweisung erfasst
wird, wie es oben angegeben ist, wird das entsprechende Erfassungssignal
vom Vor-Decodierer 81 zum Setzanschluss S des RS-FF 95 zugeführt, um
das RS-FF 95 zu setzen und um somit den Zähler 92 zum
Zählen
der Anzahl von von der CPU gesendeten Holadressen FA zu setzen.
Danach wird deshalb, weil bei diesem Ausführungsbeispiel die Verzweigungs-Zielortadresse
dann, wenn die Verzweigung ausgeführt wird, in der zweiten Holadresse
FA von der Holadresse FA erscheint, die die entsprechende bedingte
Verzweigungsanweisung anzeigt, das RS-FF 95 rückgesetzt,
wenn der Zählerwert "1" wird. Demgemäß wird dann, wenn das Signal
VALID "0" wird, was "ungültig" bedeutet, während das RS-FF 95 gesetzt
bleibt und somit den entsprechenden Eingangsanschluss des UND-Gatters 96 auf dem
Pegel "1" hält, das
Signal MISS vom UND-Gatter 96 zum Rücksetzen des RS-FF 86 ausgegeben, so
dass der Selektor 11 die von der CPU gesendete Holadresse
FA auswählt.
-
Wie es erkannt wird, führt die
Anweisungs-Vorausleseschaltung der 6,
solange die Verzweigungsvorhersage richtig ist, den Betrieb durch,
der im Wesentlichen derselbe wie derjenige ist, der in 5 gezeigt ist. Insbesondere
holt der Vor-Decodierer 81 die
durch die vorausgelesene bedingte Verzweigungsanweisung bestimmte
Verzweigungs-Zielortadresse und führt sie zum Selektor 82 zu.
Der Selektor 82 wählt
die Verzweigungs-Zielortadresse basierend auf dem Auswahlsignal
SEL2 zum Zuführen
zum Selektor 11 aus. Demgemäß gibt der Selektor 11 die
Verzweigungs-Zielortadresse aus, so dass das Register 12 mit
der Verzweigungs-Zielortadresse
zum Zuführen
zum Speicher 20, zum Inkrementierer 13 und zum
Etikettenregister 31 geladen wird.
-
Die Anweisungs-Vorausleseschaltung
fährt ungeachtet
dessen, ob die vorausgelesene bedingte Verzweigungsanweisung ausgeführt wird
oder nicht, damit fort, die Vorausleseoperation durchzuführen, solange
die Verzweigungsvorhersage nicht falsch ist. Weiterhin kann die
Anweisungs-Vorausleseschaltung dann, wenn diese Schaltung mit der
unter Bezugnahme auf 3 beschriebenen
Schaltung kombiniert wird, die Vorausleseoperation unter irgendeiner
der gespeicherten Anweisungen so lange fortführen, wie die Verzweigungsvorhersage
nicht falsch ist. Wenn die in 6 gezeigte
Schaltung auf eine im Voraus beschreibbare Cache-Vorrichtung angewendet
wird, wird deshalb, weil ein Updaten fortgeführt werden kann, um ein Trefferverhältnis der
Vorrichtung zu erhöhen,
selbst wenn eine bedingte Verzweigungsanweisung vorausgelesen wird,
ihre Leistungsfähigkeit
verbessert.
-
8 ist
ein Blockdiagramm, das einen weiteren Typ von Anweisungs-Vorausleseschaltung zeigt.
In 8 sind dieselben
oder ähnliche
Elemente durch dieselben Symbole wie diejenigen in 6 dargestellt.
-
Bei der in 6 dargestellten Schaltung wird das Verzweigungsvorhersage-Bit
als ein Vorhersagewert für
die Verzweigungsvorhersage verwendet. Eine Verzweigungsvorhersageeinrichtung 100 ist
für die
Verzweigungsvorhersage vorgesehen. Insbesondere wird in 8 anstelle des Verzweigungsvorhersage-Bits
eine Ausgabe der Verzweigungsvorhersageeinrichtung 100 zu
einem der Eingangsanschlüsse des
UND-Gatters 83 eingegeben. Die andere Struktur ist im Wesentlichen
dieselbe wie diejenige, die in 6 gezeigt
ist.
-
9 ist
ein Blockdiagramm, das die Verzweigungsvorhersageeinrichtung 100 zeigt.
Die Verzweigungsvorhersageeinrichtung 100 ist in der Form eines
Zufallswertgenerators, der durch ein D-FF gebildet ist. Ein Ausgangsanschluss
Q des D-FF ist an seinen
Datenanschluss D angeschlossen. Die Verzweigungsvorhersage wird
unter Verwendung einer Ausgabe des Zufallswertgenerators als Vorhersagewert
durchgeführt.
-
Insbesondere stellt die Ausgabe des
Zufallswertgenerators in Abhängigkeit
von der Zeitgabe einen Zufallswert "1" oder "0" dar. Da die mittlere Wahrscheinlichkeit
von "1" oder "0" in diesem Zufallswertgenerator 0,5
ist, wird in dem Fall, dass eine Bestimmung des Vorhersagewerts
schwierig ist, ein Trefferverhältnis
eher höher,
als dass ein Vorhersagewert auf "1" oder "0" festgelegt wird.
-
Wie es erkannt wird, führt die
in 8 gezeigte Anweisungs-Vorausleseschaltung
die Vorausleseoperation gleich derjenigen der unter Bezugnahme auf 6 beschriebenen Schaltung
durch. Im Fall einer Anweisungsgruppe ohne Verzweigungsvorhersage-Bit
im Anweisungsfeld kann die Verzweigungsvorhersage mit der vereinfachten
Hardware bei diesem Ausführungsbeispiel
erreicht werden.
-
10 ist
ein Diagramm, das einen weiteren Typ von Verzweigungsvorhersageeinrichtung 100 zeigt.
-
Wie es in 10 gezeigt ist, enthält die Verzweigungsvorhersageeinrichtung 100 einen
Vorgeschichten-Tabellenspeicher 111, einen Komparator 112 und
ein UND-Gatter 113 mit
zwei Eingängen.
Der Vorgeschichten-Tabellenspeicher 111 speichert vergangene
Vorgeschichten von "verzweigt" oder "nicht verzweigt" in Form von Adressen-Etiketten
1~N. Dem Vorgeschichten-Tabellenspeicher 111 werden die niederwertigen
Bits der Holadresse FA zum Ausgeben eines entsprechenden Adressen-Etiketts
und einer vergangenen Vorgeschichte davon eingegeben. Dem Komparator 112 werden
hochwertige Bits der Holadresse FA und das vom Vorgeschichten-Tabellenspeicher 111 ausgegebene
Adressen-Etikett für einen
Vergleich zwischen diesen eingegeben. Ein Ergebnis des Vergleichs
beim Komparator 112 wird zu einem der Eingangsanschlüsse des
UND-Gatters 113 eingegeben. Zum anderen Eingangsanschluss des
UND-Gatters 113 wird die vom Vorgeschichten-Tabellenspeicher 111 ausgegebene
entsprechende vergangene Vorgeschichte eingegeben. Wie es erkannt
wird, stellt eine Ausgabe des UND-Gatters 113 einen Verzweigungsvorhersagewert
dar und wird zu einem der Eingangsanschlüsse des UND-Gatters 83 in 8 zugeführt.
-
Bei dieser Schaltung kann die Verzweigungsvorhersage
selbst im Fall einer Anweisungsgruppe ohne Verzweigungsvorhersage-Bit
im Anweisungsfeld basierend auf der vergangenen Verzweigungsvorgeschichte
durchgeführt
werden. In 10 wird deshalb,
weil es unpraktisch ist, den Vorgeschichten-Tabellenspeicher 111 für alle Adressen vorzusehen,
der sogenannte Gruppenassoziativmode angenommen. Natürlich ist
es effizienter, den sogenannten vollen Assoziativmode anzunehmen. Wenn
die Holadresse FA nicht im Vorgeschichten-Tabellenspeicher 111 gefunden
wird, wird es eingerichtet, dass "nicht verzweigt" vom Vorgeschichten-Tabellenspeicher 111 ausgegeben
wird.
-
Wie es oben beschrieben ist, ist
der Vorgeschichten-Tabellenspeicher 111 zum Durchführen der
Verzweigungsvorhersage basierend auf der vergangenen Verzweigungsvorgeschichte
vorgesehen. Demgemäß kann die
vorausgelesene Anweisung selbst in einem Fall effizient zur CPU
zugeführt
werden, in welchem die Anweisungsgruppe kein Verzweigungsvorhersage-Bit
hat. Wie es erkannt wird, wird im Fall eines Programms, das eine
Ausführung einer
Schleife für
mehrere Male erfordert, ein Trefferverhältnis der Verzweigungsvorhersage
verbessert. Weiterhin wird im Fall einer im Voraus beschreibbaren
Cache-Vorrichtung, da ein Updaten selbst dann fortgeführt werden
kann, wenn eine bedingte Verzweigungsanweisung vorausgelesen wird,
ein Trefferverhältnis
der Vorrichtung erhöht,
um ihre Leistungsfähigkeit
zu verbessern.
-
Wie es oben beschrieben ist, ist
es dann, wenn die Holadresse FA nicht im Vorgeschichten-Tabellenspeicher 111 gefunden
wird, so eingerichtet, dass "nicht
verzweigt" vom Vorgeschichten-Tabellenspeicher 111 ausgegeben
wird. Jedoch kann "verzweigt" vom Vorgeschichten-Tabellenspeicher 111 ausgegeben
werden, indem das UND-Gatter 113 durch ein ODER-Gatter
ersetzt wird und die Ausgabe des Komparators 112 invertiert
wird.
-
Während
die vorliegende Erfindung in Bezug auf die bevorzugten Ausführungsbeispiele
beschrieben worden ist, soll die Erfindung nicht darauf beschränkt sein,
sondern sie kann auf verschiedene Weisen ausgeführt werden, ohne vom Prinzip
der Erfindung abzuweichen, wie es in den beigefügten Ansprüchen definiert ist.