-
Die Erfindung betrifft eine Steuervorrichtung zum
Vorabruf von Befehlen zum Einsatz in einem
Datenverarbeitungssystem, das zum Befehlsvorabruf fähig ist.
-
In einem Datenverarbeitungssystem zum Speichern einer
Befehlsgruppe, die mindestens einen Verzweigungsbefehl in
Form einer Befehlsfolge enthält, wird der Verzweigungsbefehl
auf die nachstehen beschriebene Weise verarbeitet.
-
Zunächst wird der Verzweigungsbefehl einem Prozessor
zugeführt. Dann werden dem Verzweigungsbefehl folgende Befehle
vorabgerufen, und ein anschließend auszuführender Befehl wird
durch die Ausführung des Verzweigungsbefehls festgelegt. Die
US-A-4,200,927 offenbart ein Beispiel für ein solches System.
In dem offenbarten System ist jedoch die Geschwindigkeit der
Datenverarbeitung infolge der Tatsache begrenzt, daß die
-
Steuerung des Befehlsvorabrufs solange ausgesetzt wird, bis
b
-
ein Ergebnis der Ausführung des Verzweigungsbefehls vorliegt.
-
Zur Lösung dieses Problems wurde ein System
vorgeschlagen, in dem das Ergebnis der Ausführung eines
Verzweigungsbefehls vorausgesagt wird und der Befehlsvorabruf auf der
Grundlage dieser Voraussage erfolgt. Ist die Voraussage
richtig, kann ein Prozessor mit minimaler
Verarbeitungsverzögerung arbeiten. Für ein solches Voraussagesystem gibt es
gewöhnlich mehrere Beispiele.
-
Ein erstes Beispiel ist ein System, in dem entweder die
"Erfolgs"-Seite oder der "Nichterfolgs"-Seite eines
vorausgesagten Verzweigungsziels für jeden Verzweigungsbefehl
vorausgesagt wird.
-
In einem anderen Beispiel wird ein Verzweigungsziel auf
der Grundlage zurückliegender Tatsachen vorausgesagt. D. h.
in diesem System wird die Tatsache ausgenutzt, daß für einen
Verzweigungsbefehl ein Verzweigungsziel durch ein
vorhergehendes Ergebnis desselben Verzweigungsbefehls vorliegt, und
ein aktuelles Verzweigungsziel auf der Grundlage des
vorhergehenden Ergebnisses vorausgesagt wird, um so die
Voraussagegenauigkeit zu verbessern. Ein typisches Beispiel für ein
solches System offenbart die US-A-4,477,872.
-
Als weiteres Beispiel gibt es ein System mit einer
Anzahl von Verzweigungsbefehl-Flags zur Voraussage von
Verzweigungszielen entsprechend den Verzweigungsbefehlen, und auf
die Flags wird als Reaktion auf auftretende
Verzweigungsbefehle Bezug genommen, um die Verzweigungsziele vorauszusagen.
-
In jedem dieser Systeme muß jedoch der
Verzweigungsbefehl ausgelesen und decodiert werden, und die
Datenverarbeitung wird durch das Auslesens und die Decodierung verzögert,
selbst wenn die Voraussage richtig ist.
-
Die US-A-4,604,691 offenbart ein Voraussagesystem zur
Lösung des vorstehend genannten Problems. In diesem System
wird eine Verzweigungszieladresse eines Verzweigungsbefehls,
die in einem Block eines Cache-Befehlsspeichers enthalten
ist, der seinerseits eine Kopie des Befehlsteils eines
Hauptspeichers darstellt, in Speichermitteln als Adresse eines
Blocks gespeichert, der nach dem erstgenannten, dem Block des
Cache-Befehlsspeichers entsprechenden Block abzurufen ist.
Bei einem Befehlsvorabruf wird gleichzeitig mit dem Zugriff
auf die Speichermittel auf den Cache-Befehlsspeicher zum
Auslesen der Verzweigungszieladresse zugegriffen, und die
Adresse des vorabzurufenden Befehls wird durch die ausgelesene
Verzweigungszieladresse bestimmt. Im Gegensatz zu den zuvor
genannten Systemen beschleunigt dieses System wirksam die
Geschwindigkeit der Datenverarbeitung. Die Voraussage in diesem
System erfolgt jedoch anhand einer blockweisen Zuordnung des
Cache-Befehlsspeichers. Wenn daher mehrere
Verzweigungsbefehle in einem Block enthalten sind, ist eine Voraussage
entsprechend der jeweiligen Verzweigungsbefehle unmöglich.
Folglich ist die Voraussagegenauigkeit in diesem System relativ
gering.
-
Die EP-A-0109655 offenbart ein Voraussagesystem mit
hoher Genauigkeit. Dieses System verwendet im allgemeinen eine
Verzweigungs-Protokolltabelle. Bei diesem System werden die
Adresse eines Verzweigungsbefehls und eine
Verzweigungszieladresse in der Tabelle paarweise angeordnet und
gespeichert. Indem die Tabelle anhand einer Befehlsvorabrufadresse
beim Vorabruf des Befehls durchsucht wird, ist es möglich,
eine Adresse eines anschließend auszuführenden
Verzweigungsziels zu erhalten.
-
Es gibt viele Systeme für die Zonenverwaltung des
Hauptspeichers. Eines davon besteht darin, ihn mit Hilfe von
Segmenten zu verwalten, die durch Segmentdeskriptoren
dargestellt sind. Jeder Segmentdeskriptor beschreibt für die
Segmentverwaltung notwendige Informationen wie z. B. eine
Basisadresse, eine Grenze und ein Flag. Die Basisadresse und die
Grenze bezeichnen den unteren bzw. oberen Zonengrenzwert, und
das Flag steht für einen Zugriffsmodus auf das Segment.
-
Im Datenverarbeitungssystem, das die Segmente zur
Hauptspeicherverwaltung verwendet, ist der Segmentdeskriptor, der
die Segmentgröße beim Abrufen eines durch eine
Verzweigungszieladresse adressierten Befehls bezeichnet, solange
unbekannt, bis der Verzweigungsbefehl vollständig decodiert ist.
Wenn daher die Verzweigung in einen Bereich in der Nähe des
Grenzbereichs der Segmentzone erfolgt, besteht die
Möglichkeit, daß auch dann ein Befehl vorabgerufen wird, wenn es
sich um einen Zugriff auf einen Bereich außerhalb der
Segmentzone handelt.
-
Weiterhin erfolgt in diesem System der Vorabruf des
Verzweigungszielbefehls vor dem Decodieren des
Verzweigungsbefehls. Daher können in der Zeit vom Vorabruf des
Verzweigungsbefehls bis zur Decodierung des Verzweigungsbefehls
mehrere Befehle liegen. Befindet sich unter diesen mehreren
Befehlen ein Befehl zur Änderung des Zugriffsmodus für die
Speichermittel, kann auf die- Speichermittel in einem
fehlerhaften Zugriffsmodus zugegriffen werden.
-
Folglich ist es eine Aufgabe der Erfindung, eine
Steuervorrichtung zum Vorabruf von Befehlen zu schaffen, mit der
ein fehlerhafter Zugriffsmodus vermieden wird. Diese Aufgabe
wird mit den Merkmalen der Patentansprüche gelöst.
-
Nachstehend wird die Erfindung unter Bezug auf die
beigefügten Zeichnungen näher beschrieben. Es zeigen
-
Fig. 1 ein Blockdiagramm einer Ausführungsform der
Erfindung;
-
Fig. 2 ein detailliertes Blockdiagramm eines in Fig. 1
gezeigten Addierers 1 für Verzweigungszieladressen;
-
Fig. 3 ein detailliertes Blockdiagramm einer in Fig. 1
gezeigten Steuereinrichtung 2 zum Vorabruf von
Verzweigungszielen;
-
Fig. 4 ein detailliertes Blockdiagramm eines Addierers 3
für Befehlsvorabrufadressen in Fig. 3;
-
Fig. 5 ein detailliertes Blockdiagramm eines
Stapelspeichers 4 für Befehlsadressen in Fig. 1 sowie
-
Fig. 6 ein detailliertes Blockdiagramm eines Puffers 5
zur Verzweigungszielvoraussage.
-
In den Zeichnungen bezeichnen gleiche Bezugszahlen
gleiche Bauelemente, und Daten und Adressen werden den jeweiligen
Leitungen bitparallel oder bitseriell zugeführt.
-
Fig. 1 zeigt eine bevorzugte Ausführungsform der
Erfindung mit einem Addierer 1 für Verzweigungszieladressen zum
Berechnen einer tatsächlichen Verzweigungszieladresse, einer
Steuereinrichtung 2 zum Vorabruf von Verzweigungszielen zur
Vorabrufsteuerung eines vorausgesagten Verzweigungsziels,
einem Addierer 3 für Befehlsvorabrufadressen zum Berechnen von
Befehlsvorabrufadressen, einem Stapelspeicher 4 für
Befehlsadressen zum Speichern von Befehlsadressen und einem Puffer 5
zur Verzweigungszielvoraussage zum Feststellen, ob die
Befehlsadresse des vorausgesagten Verzweigungsziels dieselbe
wie die Adresse des Verzweigungsbefehls ist oder nicht, wobei
die im Stapelspeicher 4 für Befehlsadressen gespeicherten
Befehlsadressen für den Puffer 5 - zur Verzweigungszielvoraussage
bestimmt sind.
-
Nachstehend wird die Funktion der erfindungsgemäßen
Ausführungsform unter Bezugnahme auf Fig. 1 bis 6 näher
beschrieben.
-
Zunächst wird unter Bezugnahme auf Fig. 1 und 4 eine
Verarbeitung zum Vorabruf von Befehlen in einer
Einschreibeoperation näher beschrieben.
-
Eine vorhergehende Vorabrufadresse wird von einem
Register 34 für Befehlsvorabrufadressen gemäß Fig. 4 abgeleitet.
Das Register 34 gehört zu dem in Fig. 1 gezeigten Addierer 3
für Befehlsvorabrufadressen. Die vorhergehende
Vorabrufadresse wird einem Addierer 35 für effektive
Befehlsvorabrufadressen zugeführt. Der Addierer 3 für Vorabrufadressen addiert n
Bytes zur vorhergehenden Vorabrufadresse, und das Ergebnis
wird über einen Selektor 37 in einem Register 40 für
effektive Befehlsvorabrufadressen gespeichert. Andererseits wird
eine Basisadresse von einer Registerdatei 36 des
Segmentdeskriptors über eine Leitung 227, einen Selektor 38 und eine
Leitung 229 einem Befehlsvorabruf-Basisregister 41 zugeführt
und darin gespeichert.
-
Eine aus dem Register 40 abgeleitete effektive Adresse
zum Befehlsvorabruf wird im Adreßregister 34 über eine
Leitung 223 gespeichert und gleichzeitig einem Addierer 44 für
virtuelle Befehlavorabrufadressen zugeführt. Der Addierer 44
addiert die ihm vom Register 40 zugeführte effektive
Befehlsvorabrufadresse mit der ihm vom Register 41 zugeführten
Basisadresse, um so eine virtuelle Adresse zum Befehlsvorabruf
zu erzeugen.
-
Die virtuelle Adresse wird über eine Leitung 236, einen
Selektor 46 und eine Leitung 110 einem zum Stapelspeicher 4
für Befehlsadressen gehörenden Register für virtuelle
Adressen (49 in Fig. 5) zugeführt, darin gespeichert und einem
Hauptspeicher (nicht gezeigt) zugeführt. Aus dem
Hauptspeicher wird ein Befehl als Reaktion auf die virtuelle Adresse
abgeleitet, die über eine Leitung 100 dem Addierer für
Verzweigungszieladressen 1 zugeführt wird.
-
Danach verlagert sich die Steuerung auf die
Befehlsverarbeitung der Einschreibeoperation.
-
Gemäß Fig. 1 und 2 wird der vom Hauptspeicher über die
Leitung 100 zugeführte Befehl in einem Befehlsregister 10
gespeichert. Die im Befehlsregister 10 gespeicherte
Verzweigungszieladresse
wird über eine Leitung 201 einem Addierer 1
zum Erzeugen einer effektiven Verzweigungszieladresse
zugeführt und über eine Leitung 202 in einem Register 13 für
effektive Verzweigungszieladressen gespeichert.
-
Andererseits wird die Basisadresse des
Segmentdeskriptors, die aus einer Registerdatei 12 über eine Leitung 203
als Reaktion auf einen über eine Leitung 200 von diesem
Befehlsregister 10 bereitgestellten Operationscode (OP-Code)
ausgelesen wird, in einem Register 14 gespeichert.
Gleichzeitig mit dieser Speicheroperation wird die Grenzadresse des
Segmentdeskriptors über eine Leitung 204 einem Register 15
zugeführt und darin gespeichert, und die Modusinformation des
Segmentdeskriptors wird über eine Leitung 205 einem Register
16 zugeführt und darin gespeichert.
-
Zur Modusinformation kann z. B. ein Hauptmodus, ein
privilegierter Modus und ein Modus zur Cache-Speicherumgehung
gehören. Die im Register 13 gespeicherte effektive
Verzweigungszieladresse wird über eine Leitung 115 dem vorstehend
genannten Register 34 für Befehlsvorabrufadressen zugeführt
und zum Vorabruf eines nächsten Befehls verwendet. Ein
Addierer 17 für virtuelle Verzweigungszieladressen addiert die
effektive Verzweigungszieladresse vom Register 13 und die
Basisadresse vom Register 14, um so eine virtuelle
Verzweigungszieladresse zu einer Leitung 101 zu senden. Ein Addierer
18 zur Berechnung der Anzahl unbenutzt gebliebener
Zielbefehle subtrahiert die vom Register 13 bereitgestellte
effektive Verzweigungszieladresse von der vom Register 15
bereitgestellten Grenze und führt die so gewonnene Anzahl über eine
Leitung 210 einem Ausrichter 19 zu. Der Ausrichter 19 sendet
die vom Register 16 über eine Leitung 209 zugeführte
Modusinformation und die Anzahl unbenutzt gebliebener Zielbefehle zu
einer Leitung 102.
-
Gemäß Fig. 1 und 4 wird die über die Leitung 101
ankommende virtuelle Verzweigungszieladresse über einen Selektor
46 zur Leitung 110 gesendet. Gleichzeitig werden die Anzahl
unbenutzt gebliebener Verzweigungszielbefehle und die
Modusinformation
über einen Selektor 47 zu einer Leitung 111
gesendet.
-
In Fig. 1 und 5 wird die über die Leitung 110 ankommende
virtuelle Verzweigungszieladresse in einem zum Stapelspeicher
4 für Befehlsadressen gehörenden Register 49 für virtuelle
Adressen gespeichert. Die im Register 49 gespeicherte
virtuelle Verzweigungszieladresse wird über eine Leitung 237 zu
einer Registerdatei 51 verschoben, in der die
Verzweigungszieladresse gespeichert wurde. Die über die Leitung 111
eingehende Anzahl nutzbarer Verzweigungszielbefehle und die
Modusinformation werden in einem Register 50
zwischengespeichert, dann von dort aus über eine Leitung 238 zu einer
Registerdatei 52 verschoben und darin gespeichert.
-
In dem vorstehend erwähnten Verfahren zum Vorabruf von
Befehlen wird die über das Register für virtuelle Adressen 49
der Registerdatei 51 zugeführte und darin gespeicherte
virtuelle Befehlsvorabrufadresse über eine Leitung 239, einen
Selektor 53 und eine Leitung 240 einem Register für
Befehlsadressen 54 zugeführt und darin gespeichert. Die virtuelle
Befehlsvorabrufadresse im Register 54, die in der
Registerdatei 51 gespeicherte virtuelle Verzweigungszieladresse sowie
die in der Registerdatei 52 gespeicherte Anzahl nutzbarer
Verzweigungszielbefehle und die Modusinformation werden über
eine Leitung 112, eine Leitung 113 bzw. eine Leitung 114 zum
Puffer 5 zur Verzweigungszielvoraussage geführt.
-
Gemäß Fig. 1 und 6 wird die über die Leitung 112
ankommende virtuelle Befehlsvorabrufadresse über den Selektor 56
des Puffers 5 zur Verzweigungszielvoraussage und eine Leitung
245 zu einem Register 57 verschoben und darin gespeichert.
Das Register 57 speichert eine Einschreibeadresse der
Verzweigungs-Protokolltabelle. Die im Register 57 gespeicherte
virtuelle Befehlsvorabrufadresse wird als Reaktion auf über
eine Leitung 246 ankommende wertniedrigste Bits zu einem
Schreib-/Lesespeicher 58 verschoben und in diesem zur
Adreßspeicherung gespeichert. Ebenfalls als Reaktion auf die
wertniedrigsten Bits wird die über die Leitung 113
bereitgestellte virtuelle Verzweigungszieladresse zu einem Schreib-/
Lesespeicher 59 zum Speichern der Verzweigungszieladresse des
Verzweigungsbefehls verschoben und darin gespeichert.
-
Die über die Leitung 114 ankommende Anzahl nutzbarer
Verzweigungsbefehle und die Modusinformation werden ebenfalls
als Reaktion auf die wertniedrigsten Bits zu einem
Schreib-/Lesespeicher 60 zum Speichern der
Verzweigungszielinformation des Verzweigungsbefehls verschoben und darin
gespeichert.
-
Damit ist die Einschreibeoperation abgeschlossen.
-
Als nächstes wird eine Ausleseoperation beschrieben.
-
Zunächst wird unter Bezugnahme auf Fig. 1 und 4 eine
Verarbeitung zum Vorabruf von Befehlen für die
Ausleseoperation beschrieben. Eine vorhergehende Vorabrufadresse vom
Register 34 für Befehlsvorabrufadressen (Fig. 4), das zum
Addierer 3 für Vorabrufadressen gemäß Fig. 1 gehört, wird einem
Addierer 35 für effektive Befehlsvorabrufadressen zugeführt.
Der Addierer 3 für Vorabrufadressen addiert n Bytes zur
vorhergehenden Vorabrufadresse. Das Ergebnis der Addition wird
über eine Leitung 225, einen Selektor 37 und eine Leitung 226
einem Register 40 für effektive Befehlsvorabrufadressen
zugeführt und darin gespeichert. Andererseits wird eine von der
Registerdatei 36 des Befehlssegmentdeskriptors gelieferte
Basisadresse über die Leitung 227, einen Selektor 38 und die
Leitung 229 einem Befehlsvorabruf-Basisregister 41 zugeführt
und darin gespeichert.
-
Ein Addierer 44 für virtuelle Befehlsvorabrufadressen
addiert die vom Register 40 bereitgestellte effektive
Befehlsvorabrufadresse und die vom Register 41 bereitgestellte
Basisadresse, um so eine virtuelle Adresse zum
Befehlsvorabruf zu erzeugen. Diese virtuelle Adresse wird über die
Leitung 236, einen Selektor 46 und die Leitung 110 einem zum
Stapelspeicher 4 für Befehlsadressen gehörenden Register für
virtuelle Adressen (49 in Fig. 5) zugeführt und darin
gespeichert. Die virtuelle Adresse wird ebenfalls zum Hauptspeicher
(nicht gezeigt) gesendet. Als Reaktion auf die virtuelle
Adresse wird aus dem Hauptspeicher über die Leitung 100 ein
Befehl abgeleitet.
-
Außerdem wird die virtuelle Adresse über die Leitung 110
dem Puffer zur Verzweigungszielvoraussage 5 zugeführt.
-
Nachstehend wird das Vorabrufverfahren für vorausgesagte
Verzweigungsziele in der Ausleseoperation näher beschrieben.
-
Gemäß Fig. 1 und 6 wird die über die Leitung 110
ankommende virtuelle Adresse über den Selektor 56 und eine Leitung
245 einem Register 57 zum Speichern von Ausleseadressen der
Verzweigungs-Protokolltabelle zugeführt und darin
gespeichert. Wertniedrigste Bits der im Register 57 gespeicherten
virtuellen Adresse werden als Adresse über die Leitung 246 zu
einem Schreib-/Lesespeicher 58 zum Speichern der
Verzweigungsbefehlsadresse gesendet. Als Reaktion auf die Adresse
stellt der Speicher 58 eine Befehlsadresse auf einer Leitung
248 bereit. Ein Komparator 61 vergleicht die über die Leitung
248 ankommende Befehlsadresse mit der über eine Leitung 247
ankommenden virtuellen Adresse.
-
Andererseits wird als Reaktion auf über die Leitung 246
ankommende wertniedrigste Bits der virtuellen Adresse zum
Befehlsvorabruf vom Speicher 59 eine virtuelle
Verzweigungszieladresse des Verzweigungsbefehls auf einer Leitung 249 und
vom Speicher 60 mindestens entweder die Anzahl nutzbarer
Verzweigungszielbefehle oder die Modusinformation auf einer
Leitung 250 bereitgestellt. Das Vergleichsergebnis des
Komparators 61 wird in einem Flip-Flop (F/F) 62 angezeigt und
gleichzeitig einem Register 64 für vorausgesagte
Verzweigungszielinformationen zugeführt. Geht aus dem
Vergleichsergebnis eine Übereinstimmung hervor, wird das F/F 62 gesetzt,
und die vorausgesagte Verzweigungszieladresse sowie entweder
die Anzahl nutzbarer Verzweigungszielbefehle oder die
Modusinformation werden über die Leitungen 249 und 250 in den
Registern 63 und 64 gesetzt, die mit der Leitung 108 bzw. 109
verbunden sind.
-
Gemäß Fig. 1 und 3 wird die über eine Leitung 104
ankommende Modusinformation zum späteren Abruf des vorausgesagten
Verzweigungsziels einem Modusinformationsregister 21
zugeführt und darin gespeichert; außerdem wird sie über einen
Selektor 22 einer Leitung 107 zugeführt. Die Anzahl der über
die Leitung 104 ankommenden restlichen Befehle wird über den
Ausrichter 34 zur Leitung 105 geführt. Wenn die Anzahl der
restlichen Verzweigungsbefehle "1" beträgt, sind die über die
Leitung 104, einen Ausrichter 20 und eine Leitung 212 zu
einem Gatter 23 sowie die über eine Leitung 213 zum Gatter 24
geführten Signale jeweils "0". Damit wird ein über ein NAND-
Gatter 26 und eine Leitung 214 einem UND-Gatter 27
zuzuführendes Signal "0", wodurch verhindert wird, daß ein Flip-Flop
(F/F) 28 für das Gültigkeitsbit des Zähler für die Anzahl der
Abfragen 30 gesetzt wird. Folglich wird die zweite und
nachfolgende Abfragen verhindert.
-
Wenn die Anzahl restlicher Befehle "2" beträgt, sind die
über die Leitung 104, den Ausrichter 20 und die Leitung 212
zum Gatter 23 sowie über die Leitung 213 zum Gatter 24 zu
sendenden Signale "0" bzw. "0" und "1"; dadurch wird der
Ausgang des UND-Gatters 25 "1", woraufhin ein Flip-Flop (F/F) 65
für das Gültigkeitsbit so gesetzt wird, daß als restliche
Anzahl "2" angezeigt wird.
-
Gemäß Fig. 1 und 4 wird die über die Leitung 107
ankommende Modusinformation über einen Selektor 39 und eine
Leitung 230 zum Abfragemodusregister 42 gesendet und darin
gespeichert. Die über die Leitung 105 ankommende Anzahl
restlicher Befehle wird zum Umlauf in einem Register für die Anzahl
restlicher Befehle 43 gespeichert. Ein Ausrichter 45 sendet
die über eine Leitung 233 ankommende Modusinformation und die
über eine Leitung 234 ankommende Anzahl restlicher Befehle
über eine Leitung 235 und einen Selektor 47 zur Leitung 111.
-
Die Ausgabe des F/F (62 in Fig. 6) des Puffers 5 zur
Verzweigungszielvoraussage wird über ein ODER-Gatter 29 der
Steuereinrichtung 2 zur Voraussage von Verzweigungszielen
gemäß Fig. 3 und eine Leitung 222 zu einem Zähler 30 für die
Anzahl der Abfragen gesendet, um diesen zu aktivieren. Der
Zähler 30 wird auf "0" als Anfangswert gesetzt. Der Wert wird
über eine Leitung 106 zum Addierer 3 für
Befehlsvorabrufadressen gesendet.
-
Beim ersten Lesen des Inhalts des Zählers 30 wird der
Inhalt in einem +1-Addierer für den Zähler für die Anzahl der
Abf ragen
um den Wert "1" vermehrt, und das Ergebnis wird über
eine Leitung 220 zum Zähler 30 gesendet und darin
gespeichert. Der Wert des Zählers 30 wird über die Leitung 106 zum
Addierer 3 für Befehlsvorabrufadressen gesendet. Im Addierer
3 für Befehlsvorabrufadressen gemaß Fig. 4 wird der über die
Leitung 106 ankommende Anfangswert "0" über den Selektor 38
und die Leitung 229 im Befehlsvorabruf-Basisregister 41
gesetzt. Die über die Leitung 108 ankommende vorausgesagte
Verzweigungszieladresse wird über den Selektor 37 und die
Leitung 226 zum Register 40 für effektive
Befehlsvorabrufadressen zum Befehlsvorabruf gesendet und darin gespeichert. Das
Register 44 für virtuelle Befehlsvorabrufadressen addiert die
vom Register 40 bereitgestellte vorausgesagte
Verzweigungszieladresse zum Anfangswert "0" aus dem Register 41 und
erzeugt die vorausgesagte Verzweigungszieladresse, die über die
Leitung 238, den Selektor 46 und die Leitung 110 zum
Hauptspeicher gesendet wird. Gleichzeitig wird die im Register 42
gespeicherte Modusinformation über die Leitung 233, den
Ausrichter 45, die Leitung 235, den Selektor 47, einen
Ausrichter 48 und die Leitung 109 zum Hauptspeicher gesendet, und
oder vorausgesagte Verzweigungszielbefehl wird ausgelesen.
Damit ist der Hauptteil der Ausleseoperation abgeschlossen. Die
vorausgesagte Verzweigungszieladresse und die Anzahl
restlicher Befehle werden gemäß nachstehender Beschreibung
verarbeitet.
-
Gemäß Fig. 1 und 5 wird die über die Leitung 110
ankommende vorausgesagte Verzweigungszieladresse im virtuellen
Register 49 für virtuelle Adressen und danach über die Leitung
237 in der Registerdatei 51 gespeichert. Andererseits wird
die über die Leitung 111 ankommende Anzahl restlicher Befehle
im Register 50 und danach über die Leitung 238 in der
Registerdatei 52 gespeichert.
-
Unter Bezugnahme auf Fig. 1 bis 4 wird nachstehend jetzt
ein zweiter Vorabruf des vorausgesagten
Verzweigungszielbefehls beschrieben. Gemäß Fig. 3 und 4 wird beim zweiten
Vorabruf der Inhalt des Modusinformationsregisters 21 für den
nachfolgenden Vorabruf des vorausgesagten Verzweigungsziels
über eine Leitung 216, den Selektor 22, die Leitung 107, den
Selektor 39 und die Leitung 230 zum Abfragemodusregister 42
gesendet. Der Wert "1" im Zähler für die Anzahl der Abfragen
30, der durch den ersten Vorabruf des vorausgesagten
Verzweigungszielbefehls vergeben wurde, wird zum Befehlsvorabruf
über die Leitung 106, den Selektor 38 und die Leitung 229 zum
Basisregister 41 als "n" gesendet. Da diesmal die beim ersten
Vorabruf verwendete virtuelle Adresse im Register 40 für
effektive Adressen zum Befehlsvorabruf verbleibt, wird im
Addierer 44 für Vorabrufadressen "n" zur virtuellen Adresse
addiert, und das Ergebnis wird über die Leitung 236, den
Selektor 46 und die Leitung 110 zum Hauptspeicher übermittelt.
Zeitgleich mit dieser Übermittlung wird das Signal für den
Speicherzugriffsmodus vom Abfragemodusregister 42 über die
Leitung 233, den Ausrichter 45, die Leitung 235, den Selektor
47, den Ausrichter 48 und die Leitung 109 zum Hauptspeicher
gesendet.
-
Bei der zweiten Abfrage wird die Ausgabe "1" des
Gültigkeitsbit-Flip-Flops < F/F) 28 für den Zähler 30 für die Anzahl
der Abfragen über eine Leitung 215, das ODER-Gatter 29 und
die Leitung 222 zum Zähler 30 für die Anzahl der Abfragen
geführt, der dadurch aktiviert wird. Zum Wert des Zählers 30
wird ein Wert "1" im Addierer 33 für den Zähler 30 für die
Anzahl der Abfragen addiert, und das Ergebnis wird über die
Leitung 220 wieder zum Zähler zurückgeführt. Diesmal gibt das
Gültigkeitsbit-F/F 65 eine "1" aus, was bedeutet, daß die
Anzahl restlicher Befehle "2" beträgt. Dadurch wird das
Gültigkeitsbit-F/F 28 für den Zähler für die Anzahl der Abfragen 30
über das UND-Gatter und ein ODER-Gatter 66 zurückgesetzt, was
eine dritte Abfrage ausschließt. Bei der dritten Abfrage wird
der Inhalt des Modusinformationsregisters 21 zur
nachfolgenden Abfrage eines vorausgesagten Verzweigungsziels über die
Leitung 216, den Selektor 22, die Leitung 107, den Selektor
39 und die Leitung 230 dem Abfragemodusregister 42 zugeführt.
Der Wert "2" des Zähler für die Anzahl der Abfragen 30 wird
zum Befehlsvorabruf über die Signalleitung 106, den Selektor
38 und die Leitung 229 zum Basisregister 41 geführt und darin
als Basisadresse "2n" gespeichert. Der Addierer 44 für
virtuelle Befehlsvorabrufadressen addiert die Basisadresse "2n" im
Basisregister 41 zur im Register 40 für effektive Adressen
zum Befehlsvorabruf gespeicherten virtuellen Adresse des
vorausgesagten Verzweigungsziels, und das Ergebnis wird über die
Leitung 236, den Selektor 46 und die Leitung 110 zum
Hauptspeicher übermittelt. Die Ausgabe "2" des Zähler 30 für die
Anzahl der Abfragen wird über die Leitung 219 zu einem
Ausrichter 31 geführt, von dem aus sie über das ODER-Gatter 66
und eine Leitung 252 zum Gültigkeitsbit-F/F 28 für den Zähler
30 für die Anzahl der Abfragen als Signal "1" zum Rücksetzen
des F/F 28 gesendet wird.
-
Nach dem Rücksetzen dieses F/F endet die Erzeugung von
Abfragen, wenn die Anzahl der Abfragen drei erreicht.
-
In dieser Ausführungsform wird die Anzahl restlicher
Befehle zur Steuerung der Anzahl oder Menge von Vorabrufen von
vorausgesagten Verzweigungszielen in der Steuereinrichtung 2
zum Befehlsvorabruf verwendet. Daher kann der Begriff "Anzahl
restlicher Befehle" die Anzahl der Befehlsvorabrufe, die
Anzahl der restlichen Bytes oder der grenzbeschreibenden
Segmente beinhalten. Somit können durch die Erfindung
segmentüberschreitende, zu weitgehende Befehlsvorabrufe wirksam
beschränkt werden, indem die Anzahl oder Menge der Vorabrufe
von Verzweigungszielbefehlen bei der Verzweigungsvoraussage
begrenzt wird. Weiterhin ermöglicht die Erfindung einen
korrekten Speicherzugriff beim Befehlsvorabruf des
vorausgesagten Verzweigungsziels, indem Informationen über den
Speicherzugriffsmodus für das Verzweigungsziels in der Verzweigungs-
Protokolltabelle entsprechend der Verzweigungszieladresse
gespeichert werden.