DE3785897T2 - Steuervorrichtung zum vorabruf von befehlen. - Google Patents

Steuervorrichtung zum vorabruf von befehlen.

Info

Publication number
DE3785897T2
DE3785897T2 DE87901654T DE3785897T DE3785897T2 DE 3785897 T2 DE3785897 T2 DE 3785897T2 DE 87901654 T DE87901654 T DE 87901654T DE 3785897 T DE3785897 T DE 3785897T DE 3785897 T2 DE3785897 T2 DE 3785897T2
Authority
DE
Germany
Prior art keywords
branch
instruction
address
line
register
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE87901654T
Other languages
English (en)
Other versions
DE3785897D1 (de
Inventor
Tsuyoshi Nec Corporat Morisada
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Nippon Electric Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp, Nippon Electric Co Ltd filed Critical NEC Corp
Application granted granted Critical
Publication of DE3785897D1 publication Critical patent/DE3785897D1/de
Publication of DE3785897T2 publication Critical patent/DE3785897T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Description

  • Die 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.

Claims (4)

1. Steuervorrichtung zum Vorabruf von Befehlen mit einer Verzweignngs-Protokolltabelle (4, 1), die paarweise jeweils eine Verzweigungsbefehlsadresse und eine Verzweigungszieladresse eines Verzweigungsbefehls zur Steuerung des Vorabrufs des Befehls speichert, und mit:
Suchmitteln (3 bis 5) zum Durchsuchen der Verzweigungs- Protokolltabelle (4, 1) anhand einer Befehlsvorabrufadresse, gekennzeichnet durch
Speichermittel (13) zum Speichern von Informationen über die Speicherzugriffssteuerung für Verzweigungsziele in der Verzweigungs-Protokolltabelle (4, 1) entsprechend der Verzweigungszieladresse sowie
Mittel (2), die auf eine aus der Verzweigungs-Protokolltabelle ausgelesene Information über die Zugriffs- Steuerung reagieren und zur Überprüfung eines Speicherzugriffs des Befehlsvorabrufs dienen.
2. Vorrichtung nach Anspruch 1, gekennzeichnet durch Mittel zum Speichern der Anzahl restlicher Befehle als Maß für die Anzahl möglicher Befehlsvorabrufe aus dem Verzweigungsziel in der Verzweigungs-Protokolltabelle in Abhängigkeit von der Verzweigungszieladresse; Registermittel (5) zum Speichern der aus der Verzweignngs-Protokolltabelle (4, 1) gewonnenen Information über die Anzahl restlicher Befehle sowie Steuermittel (2) zum Steuern der Anzahl von Befehlsvorabrufen bei einem vorausgesagten Verzweigungsziel auf der Grundlage der Information über die Anzahl restlicher Befehle aus den Registermitteln (5).
3. Vorrichtung nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß die Verzweigungs-Protokolltabelle zum Speichern mehrerer Eintragspaare dient, wobei jedes Eintragspaar einen ersten Eintrag zum Festlegen einer Befehlsadresse eines durch eine Ausführungseinheit vor dem Vorabruf ausgeführten Verzweigungsbefehls sowie einen zweiten Eintrag zum Festlegen einer Verzweigungsinformation mit einer sich durch die Ausführung des Verzweigungsbefehls ergebenden Verzweigungszieladresse aufweist, wobei der zweite Eintrag dem ersten Eintrag in Bezug auf jeden Verzweigungsbefehl entspricht.
4. Vorrichtung nach Anspruch 3, gekennzeichnet durch Abrufmittel zum Abrufen eines der ersten Einträge der Eintragspaare in der Verzweigungs-Protokolltabelle als Reaktion auf eine aktuelle Befehlsadresse eines vorabgerufenen aktuellen Befehls, um die Verzweigungs-Protokolltabelle zu veranlassen, beim Auffinden eines der ersten Einträge einen entsprechenden zweiten Eintrag zu erzeugen.
DE87901654T 1986-02-28 1987-02-26 Steuervorrichtung zum vorabruf von befehlen. Expired - Fee Related DE3785897T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP4447986 1986-02-28
JP4447886 1986-02-28

Publications (2)

Publication Number Publication Date
DE3785897D1 DE3785897D1 (de) 1993-06-24
DE3785897T2 true DE3785897T2 (de) 1993-09-30

Family

ID=26384404

Family Applications (1)

Application Number Title Priority Date Filing Date
DE87901654T Expired - Fee Related DE3785897T2 (de) 1986-02-28 1987-02-26 Steuervorrichtung zum vorabruf von befehlen.

Country Status (5)

Country Link
US (1) US4881170A (de)
EP (1) EP0258453B1 (de)
JP (1) JPS63503177A (de)
DE (1) DE3785897T2 (de)
WO (1) WO1987005417A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4447238B4 (de) * 1994-01-04 2005-08-18 Intel Corporation, Santa Clara Schaltungsanordnung und Verfahren zum Gewinnen von Informationen zur Verzweigungsvorhersage

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2610122B1 (fr) * 1987-01-22 1992-03-13 Nec Corp Systeme de controle d'ecriture dans une table historique des branchements
GB8728493D0 (en) * 1987-12-05 1988-01-13 Int Computers Ltd Jump prediction
JP2723238B2 (ja) * 1988-01-18 1998-03-09 株式会社東芝 情報処理装置
US5099419A (en) * 1988-11-25 1992-03-24 Nec Corporation Pipeline microcomputer having branch instruction detector and bus controller for producing and carrying branch destination address prior to instruction execution
US5689670A (en) * 1989-03-17 1997-11-18 Luk; Fong Data transferring system with multiple port bus connecting the low speed data storage unit and the high speed data storage unit and the method for transferring data
EP0404068A3 (de) * 1989-06-20 1991-12-27 Fujitsu Limited Vorrichtung zur Ausführung eines Verzweigungsbefehls
JP2508280B2 (ja) * 1989-07-28 1996-06-19 日本電気株式会社 分岐ヒストリテ―ブル制御方式
EP0471888B1 (de) * 1989-08-28 1999-01-13 Nec Corporation Mikroprozessor zum verbesserten Startvorgang der Befehlsausführung nach der Ausführung eines bedingten Verzweigungsbefehls
US5210831A (en) * 1989-10-30 1993-05-11 International Business Machines Corporation Methods and apparatus for insulating a branch prediction mechanism from data dependent branch table updates that result from variable test operand locations
US5230068A (en) * 1990-02-26 1993-07-20 Nexgen Microsystems Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence
US5226130A (en) * 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
DE69128741T2 (de) * 1990-05-18 1998-07-16 Koninkl Philips Electronics Nv Mehrstufiger Befehlscachespeicher und Verwendungsverfahren dafür
US5212794A (en) * 1990-06-01 1993-05-18 Hewlett-Packard Company Method for optimizing computer code to provide more efficient execution on computers having cache memories
US5317703A (en) * 1990-06-29 1994-05-31 Hitachi, Ltd. Information processing apparatus using an advanced pipeline control method
US5530941A (en) * 1990-08-06 1996-06-25 Ncr Corporation System and method for prefetching data from a main computer memory into a cache memory
US5895489A (en) * 1991-10-16 1999-04-20 Intel Corporation Memory management system including an inclusion bit for maintaining cache coherency
US5333283A (en) * 1991-10-29 1994-07-26 International Business Machines Corporation Case block table for predicting the outcome of blocks of conditional branches having a common operand
US5285527A (en) * 1991-12-11 1994-02-08 Northern Telecom Limited Predictive historical cache memory
US5434986A (en) * 1992-01-09 1995-07-18 Unisys Corporation Interdependency control of pipelined instruction processor using comparing result of two index registers of skip instruction and next sequential instruction
JP2761688B2 (ja) * 1992-02-07 1998-06-04 三菱電機株式会社 データ処理装置
AU665368B2 (en) * 1992-02-27 1996-01-04 Samsung Electronics Co., Ltd. CPU having pipelined instruction unit and effective address calculation unit with retained virtual address capability
US5692167A (en) * 1992-07-31 1997-11-25 Intel Corporation Method for verifying the correct processing of pipelined instructions including branch instructions and self-modifying code in a microprocessor
US5442756A (en) * 1992-07-31 1995-08-15 Intel Corporation Branch prediction and resolution apparatus for a superscalar computer processor
US5434985A (en) * 1992-08-11 1995-07-18 International Business Machines Corporation Simultaneous prediction of multiple branches for superscalar processing
US5423048A (en) * 1992-08-27 1995-06-06 Northern Telecom Limited Branch target tagging
JP2596712B2 (ja) * 1993-07-01 1997-04-02 インターナショナル・ビジネス・マシーンズ・コーポレイション 近接した分岐命令を含む命令の実行を管理するシステム及び方法
JP3639927B2 (ja) * 1993-10-04 2005-04-20 株式会社ルネサステクノロジ データ処理装置
EP0649084A1 (de) * 1993-10-18 1995-04-19 Cyrix Corporation Verzweigungsverarbeitung in Mikroprozessor
JP2801135B2 (ja) * 1993-11-26 1998-09-21 富士通株式会社 パイプラインプロセッサの命令読み出し方法及び命令読み出し装置
JPH08106387A (ja) * 1994-10-06 1996-04-23 Oki Electric Ind Co Ltd 命令プリフェッチ回路及びキャッシュ装置
WO1996035165A1 (en) * 1995-05-06 1996-11-07 National Semiconductor Corporation Instruction memory limit check in microprocessor
US5905881A (en) * 1995-11-30 1999-05-18 Unisys Corporation Delayed state writes for an instruction processor
US5867699A (en) * 1996-07-25 1999-02-02 Unisys Corporation Instruction flow control for an instruction processor
US6195735B1 (en) * 1996-12-31 2001-02-27 Texas Instruments Incorporated Prefetch circuity for prefetching variable size data
US5887151A (en) * 1997-07-10 1999-03-23 Emc Corporation Method and apparatus for performing a modified prefetch which sends a list identifying a plurality of data blocks
US6058265A (en) * 1997-10-21 2000-05-02 Hewlett Packard Company Enabling troubleshooting of subroutines with greatest execution time/input data set size relationship
JP3606435B2 (ja) * 1999-09-29 2005-01-05 富士通株式会社 モードを変更する分岐命令を制御する命令処理装置および方法
US7085915B1 (en) 2000-02-29 2006-08-01 International Business Machines Corporation Programmable prefetching of instructions for a processor executing a non-procedural program
US8185721B2 (en) * 2008-03-04 2012-05-22 Qualcomm Incorporated Dual function adder for computing a hardware prefetch address and an arithmetic operation value
JP6457836B2 (ja) * 2015-02-26 2019-01-23 ルネサスエレクトロニクス株式会社 プロセッサおよび命令コード生成装置
US9921814B2 (en) * 2015-08-24 2018-03-20 International Business Machines Corporation Control flow graph analysis

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4200927A (en) * 1978-01-03 1980-04-29 International Business Machines Corporation Multi-instruction stream branch processing mechanism
SU942018A1 (ru) * 1979-12-25 1982-07-07 Предприятие П/Я А-3162 Устройство дл формировани команд с аппаратной организацией циклических программ
US4477872A (en) * 1982-01-15 1984-10-16 International Business Machines Corporation Decode history table for conditional branch instructions
US4604691A (en) * 1982-09-07 1986-08-05 Nippon Electric Co., Ltd. Data processing system having branch instruction prefetching performance
US4594659A (en) * 1982-10-13 1986-06-10 Honeywell Information Systems Inc. Method and apparatus for prefetching instructions for a central execution pipeline unit
EP0109655B1 (de) * 1982-11-17 1991-07-24 Nec Corporation Anordnung zum Vorabholen von Befehlen mit Vorhersage einer Verzweigungszieladresse
JPH061441B2 (ja) * 1983-09-12 1994-01-05 モトロ−ラ・インコ−ポレ−テツド 先取り確認装置
US4764861A (en) * 1984-02-08 1988-08-16 Nec Corporation Instruction fpefetching device with prediction of a branch destination for each branch count instruction
US4691277A (en) * 1984-10-24 1987-09-01 International Business Machines Corp. Small instruction cache using branch target table to effect instruction prefetch
US4679141A (en) * 1985-04-29 1987-07-07 International Business Machines Corporation Pageable branch history table
US4763245A (en) * 1985-10-30 1988-08-09 International Business Machines Corporation Branch prediction mechanism in which a branch history table is updated using an operand sensitive branch table

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4447238B4 (de) * 1994-01-04 2005-08-18 Intel Corporation, Santa Clara Schaltungsanordnung und Verfahren zum Gewinnen von Informationen zur Verzweigungsvorhersage

Also Published As

Publication number Publication date
EP0258453B1 (de) 1993-05-19
DE3785897D1 (de) 1993-06-24
US4881170A (en) 1989-11-14
EP0258453A1 (de) 1988-03-09
WO1987005417A1 (en) 1987-09-11
JPS63503177A (ja) 1988-11-17

Similar Documents

Publication Publication Date Title
DE3785897T2 (de) Steuervorrichtung zum vorabruf von befehlen.
DE3687724T2 (de) Digitalprozessorsteuerung.
DE3685876T2 (de) Meister-sklave-mikroprozessorsystem mit einem virtuellen speicher.
DE2855106C2 (de) Einrichtung zur Durchführung von bedingten Verzweigungen
DE3750935T2 (de) Verfahren und System zum Erleichtern der Befehlsausführung in einem digitalen Rechner.
DE10084556B4 (de) Optimierte Ausführung von statisch sehr wahrscheinlich vorhergesagten Verzweigungsbefehlen
DE3151745C2 (de)
DE3851746T2 (de) Sprungvorhersage.
DE3783370T2 (de) Schaltung zur blockierungsverhinderung von hochprioritaetsanforderungen an eine systemsteuerung.
DE3587167T2 (de) Geraet zur vektorverarbeitung.
DE69030931T2 (de) Mehrfachsequenzprozessorsystem
DE69027932T2 (de) Cpu-pipeline mit registerfile-bypass durch adressvergleich bei aktualisierungen/zugriffen
DE19855806A1 (de) Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen
DE3781794T2 (de) Vorrichtung und verfahren zum versehen eines cachespeichers mit einer schreiboperation mit zwei systemtaktzyklen.
DE2750721A1 (de) Ein/ausgabe-system
DE2630323B2 (de) Datenspeichereinrichtung mit einem Hauptspeicher, einem Hilfsspeicher und einer Vorausschaulogik
DE2715073A1 (de) Mikroprogrammierte rechner-steuervorrichtung
DE68924719T2 (de) Vorrichtung und Verfahren zur Ausführung eines Unterprogramms in einem Datenverarbeitungssystem mit Blockumschaltung.
DE1499182B2 (de) Datenspeichersystem
DE2755616A1 (de) Asymmetrischer multiprozessor
DE1499206C3 (de) Rechenanlage
DE2856680A1 (de) Befehlspuffer fuer ein datenverarbeitungssystem
DE68927292T2 (de) Mikrorechner, geeignet zur Schnellverarbeitung eines Verzweigungsbefehlskodes
DE4134392C2 (de) Verfahren und Vorrichtung zum Ungültigmachen von Befehlen in Geräten mit Parallelverarbeitung
DE3911721C2 (de)

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee