DE2855106C2 - Einrichtung zur Durchführung von bedingten Verzweigungen - Google Patents
Einrichtung zur Durchführung von bedingten VerzweigungenInfo
- Publication number
- DE2855106C2 DE2855106C2 DE2855106A DE2855106A DE2855106C2 DE 2855106 C2 DE2855106 C2 DE 2855106C2 DE 2855106 A DE2855106 A DE 2855106A DE 2855106 A DE2855106 A DE 2855106A DE 2855106 C2 DE2855106 C2 DE 2855106C2
- Authority
- DE
- Germany
- Prior art keywords
- instruction
- branch
- execution
- pointer
- buffer
- 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
Links
- 239000000872 buffer Substances 0.000 claims description 116
- 230000006870 function Effects 0.000 claims description 42
- 230000015654 memory Effects 0.000 claims description 36
- 238000012546 transfer Methods 0.000 claims description 16
- 238000012545 processing Methods 0.000 claims description 10
- 230000000694 effects Effects 0.000 claims description 5
- 230000001143 conditioned effect Effects 0.000 claims description 2
- 238000011094 buffer selection Methods 0.000 claims 1
- 230000002401 inhibitory effect Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 20
- 230000003111 delayed effect Effects 0.000 description 10
- 238000000034 method Methods 0.000 description 5
- 238000013519 translation Methods 0.000 description 4
- 230000014616 translation Effects 0.000 description 4
- 230000003936 working memory Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 230000003247 decreasing effect Effects 0.000 description 2
- 230000006698 induction Effects 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 240000004808 Saccharomyces cerevisiae Species 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 210000001217 buttock Anatomy 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000005284 excitation Effects 0.000 description 1
- 238000009472 formulation Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3846—Speculative instruction execution using static prediction, e.g. branch taken strategy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
Description
Die Erfindung betrifft eine Einrichtung zur Durchführung von bedingten Verzweigungen mehrerer Befehlsfolgen in einer elektronischen Datenverarbeitungsanla-
ge nach dem Oberbegriff des Anspruchs 1.
Bedingte Verzweigungsinstruktionen oder -befehle, z.B. in Computern aus der Familie der IBM Systeme
370, geben eine zu prüfende Bedingung sowie die Adresse einer neuen Instruktion an, die auszuführen ist,
wenn eine vorgeschriebene Bedingung erfüllt wird. Andernfalls wird die Instruktionsverarbeitung in einer Reihenfolge,
von der bedingten Verzweigungsinstruktion an, fortgesetzt. In Hochleistungs-Fließbandcomputern
(pipeline computer) kann man mit einer Instruktionsinterpretationseinheit (IPPF bzw. 20) mehrere Instruktionen
vorher vom Hauptspeicher abrufen und sie für die sequentielle Ausführung durch eine Ausführungseinheit
vorbereiten. Wenn die IPPF eine bedingte Verzweigungsinstruktion decodiert, kann es sein, daß eine vor-
5r> hergehende Instruktion, die die zu prüfende Bedingung
festlegt, noch nicht ausgeführt ist. Daher ist unsicher, ob die durch die Adreßinformation der Verzweigungsinstruktion
bezeichnete Instruktion überhaupt ausgeführt wird. Somit muß eine Strategie entwickelt werden, damit
die IPPF weiter Instruktionen vom Speicher über die Verzweigungsinstruktion hinaus vorher abrufen und
decodieren kann, um die Reihenfolge der Instruktionen für die Weitergabe an die Ausführungseinheit aufrechtzuerhalten.
b5 In der US-Patentschrift Nr. 34 18 638 ist die Steuereinrichtung
für bedingte Verzweigung im Model 90 des IBM Systems 360 beschrieben. Instruktionen werden
dort vorher abgerufen, decodiert und direkt an mehrere
Ausführungseinheiten übertragen, wodurch die Instruktionen überlappt verarbeitet und ausgeführt werden
können. Ein komplizierter Mechanismus ist vorgesehen, um bedingte Verzweigungsinstruktionen an verschiedene
Ausführungseinheiten und danach weitere, speziell 5 als bedingt, markierte Instruktionen, die abhängig vom
Ergebnis der bedingten Verzweigung ausgeführt wurden oder nicht, übertragen zu können. Die Instruktionseinheit enthält nur einen Satz von Instruktionspuffern,
die die Kapazität der Instruktionseinheit auf die Decodierung nur einer bedingten Verzweigungsinstruktion
und den Vorabruf nur einer Zielinstruktionsfolge einschränken.
In der US-Patentschrift Nr. 35 51 895 ist ein weiteres Hochleistungs-Computersystem für den vorherigen Abruf
und die Decodierung von Instruktionen, einschließlich bedingter Verzweigungsinstruktionen, beschrieben.
Hier wird eine Spezialinstruktion mit dem Namen »Vorausverzweigung« beschrieben, die von einem Assoziativspeicher
und Vorausschaubäumen dazu benutzt wurde, Zielinstruktionsfolgen vorher abzurufen, wenn bedingte
Verzweigungen auftraten.
Ein anderes bekanntes Hochleistungssystem, das eine IPPF enthält, um mehrere, der Reihe nach an eine Ausführungseinheit
zu gebende Instruktionen vorher zu decodieren ist im IBM System 370 Mod. 168 beschrieben.
In diesem System sind zwei separate Instruktionspuffer enthalten, so daß Instruktionen entweder von der Instruktionsfolge
der bedingten Verzweigung oder aus der Zielinstruktionsfolge vorher abgerufen und decodiert
werden können. Während der Decodierung der bedingten Verzweigungsinstruktionen wird vorhergesagt,
ob die Verzweigung wahrscheinlich erfolgreich ist oder nicht. Eine weitere Decodierung, entweder aus der
ursprünglichen Instruktionsfolge oder aus der Zielinstruktionsfolge
folgt dann, basierend auf dieser Vorhersage, und die vorverarbeitenden Instruktionen werden
in einer Instruktionswarteschlange für die sequentielle Abgabe an die Ausführungseinheit gepuffert. Erfolg
oder Mißerfolg einer abgefragten Bedingung bestimmen schließlich, ob die vorher decodierten Instruktionen
aus der richtigen Instruktionsfolge stammen. Da nur zwei Instruktionspuffer vorgesehen sind, braucht man
nur einen Schalter ein- oder auszuschalten, um die Instruktionen vom richtigen Puffer an eine Decodiereinrichtung
weiterzuleiten.
Dadurch, daß, wie bei der in der britischen Patentschrift 13 78 565 beschriebenen Datenverarbeitungsanlage,
nur zwei Instruktionspuffer vorgesehen sind, kann nur jeweils eine bedingte Verzweigungsinstruktion anstehen.
Wenn eine zweite bedingte Verzweigungsinstruktion im Instruktionsdecodier-Mechanismus erkannt
wird, hört der Instruktions-interpretations-Mechanismus
auf zu funktionieren, bis die erste bedingte Verzweigung gelöst ist, weil eine zweite Zielinstruktionsfolge
nicht vorher abgerufen werden kann.
Die Aufgabe der Erfindung besteht deshalb darin, eine
Einrichtung zur Durchführung von bedingten Verzweigungen nach dem Oberbegriff des Patentanspruchs
1 anzugeben, bei der mehrere Befehle, die auf zwei ausstehende bedingte Verzweigungsbefehle folgen,
vorher abgerufen, decodiert und zur Befehlsausführung in eine Warteschlange gesetzt werden können.
Gelöst wird diese Aufgabe der Erfindung durch die im Hauptanspruch angegebenen Merkmale.
Vorteilhafte Ausgestaltungen und Weiterbildungen des Gegenstandes der Erfindung sind den Unteransprüchen
zu entnehmen.
Auf diese Weise wird der Vorteil erzielt, daß eine Datenverarbeitungsanlage, die mit der erfindungsgemäßen
Einrichtung ausgerüstet ist, nun in der Lage ist, mindestens zwei bedingte Verzweigungsinstruktionen
decodieren zu können, was zu geringeren Wartezeiten und damit einer höheren Verarbeitungsgeschwindigkeit
führt.
Ein Ausführungsbeispiel der Erfindung ist in den Figuren dargestellt und wird anschließend näher beschrieben.
Es zeigt
Fig. 1 in einem Blockdiagramm die Hauptfunktionseinheiten
eines Datenverarbeitungssystems mit einer Instruktionsinterpretationseinheit (IPPF),
Fig.2 in einem Blockdiagramm die Hauptfunktionseinheiten
einer IPPF,
F i g. 3A, B und C (vertikal untereinandergelegt) ein detailliertes Blockdiagramm einer IPPF,
F i g. 4 in einem Blockdiagramm eine Ausführungseinheit, die auf bedingte Verzweigungsinstruktionen anspricht,
F i g. 5 das Format von Verzweigungsinstruktionen des IBM Systems/370,
F i g. 6 in einem Logikdiagramm die Erfolgsvorhersage der Ergebnisse von Verzweigungsinstruktionen,
F i g. 7 in einem Blockdiagramm die Codierung der Verzweigungs-Statusinformation aus der Instruktionsdecodierung
und die in der Ausführungseinheit erzeugten Signale zur Ergebnisanzeige der Verzweigungsprüffunktion,
F i g. 8 in einem detaillierten Logikdiagramm die in F i g. 7 dargestellte Verzweigungs-Ergebnisdecodierung,
F i g. 9 in einem Blockdiagramm die zur Steuerung der EinVAusgabe von drei Instruktionspuffern verwendet
werden,
Fig. 10 in einem Zeitdiagramm die verschiedenen
zeitlichen Beziehungen zwischen einer Anforderung eines Instruktionsabrufes zum Speicher und der Rückgabe
der Instruktionen zur Eingabe in die Instruktionspuffer,
F i g. 11 ein Zustandsdiagramm der Instruktions-Abruffolgeschaltung,
die zu jedem Instruktionspuffer gehört,
Fig. 12 in einem Zeitdiagramm die Beziehung der Instruktionsdecodierung zur Instruktionsschlange und
der Präsentation von Instruktionen, der Reihe nach, an eine Ausführungseinheit und
Fig. 13A und 13B in logischen Diagrammen die Ein-/Ausgabesteuerung eines Instruktionspuffers.
F i g. 1 zeigt die Hauptfunktionsteile eines Hochleistungs-Datenverarbeitungssystems.
Ein Hauptteil der vorliegenden Erfindung findet sich in einer Instruktionsinterpretationseinheit
(!PPF) 20. Die IPPF 20 kommuniziert
mit einer Prozessor-Speichersteuerung (PSCF) 21, die einen Hochgeschwindigkeitsspeicher für die Instruktionsfolgen
vom Befehlsspeicher (Prozessorspeicher) 22 und zur Einleitung der Übertragung von Datenoperanden
an eine Ausführungseinheit oder E-Funktion 23 enthält Die IPPF 20 kommuniziert auch mit der E-Funktion
23 zur Übertragung einzelner Instruktionen der Reihe nach an die ^-Funktion 23. Die Ergebnisse
von Instruktionsausführungen in der ^-Funktion 23 werden an die IPPF 20 zurückgegeben, um so die Reihenfolge
der Instruktionsausführung steuern zu können.
Die übrigen Teile des Verarbeitungssystems, die mit dem Verständnis der vorliegenden Erfindung nichts zu
tun haben, umfassen Kanäle 24, eine Konsole 23 und die Wartungs- und Wiederholungssteuerung 26.
Fig. 2 zeigt die Hauptfunktionsbereiche in der IPPF
20 der Fig. 1. Dazu gehören eine Drei-Instruktionsfolge-Vorabrufschaltung
27, ein Instruktionsvordecodierer 28, eine Adressenaufstellschaltung 29 sowie Sperren 30.
Die IPPF 20 hat die Möglichkeit, vier vordecodierte Instruktionen zu speichern oder in eine Warteschlange
zu setzen, um sie einzeln der Reihe nach an eine E- Funktion 23 zu geben. Dazu gehört Information über abzurufende
Datenoperanden, zu benutzende allgemeine Register, Startadreßinformation für einen vom Mikroprogramm
gesteuerten Steuerspieicher und verschiedene andere noch vollständiger zu beschreibende Steuersignale.
Viele zu decodierende Instruktionen verlangen eine Adreßberechnung in der IPPF 20, und daher ist die
Adressenaufstellschaltung 29 vorgesehen. Mit einer Anzahl von Sperren 30 wird sichergestellt, daß die richtigen
Daten für die Adressenaufstellung und die Instruktions-Vordecodierung zur Verfügung stehen, bevor die
decodierte Instruktionsinformation in eine viergliedrige Warteschlange eingetragen wird.
Eine Hauptfunktion der vorliegenden Erfindung besteht in der Steuerung der logischen und Leitschaltungen
in der Drei-Instruktionsfolgen-Vorabrufschaltung
27. Diese Einrichtung enthält drei separate Instruktionspuffer, die jeweils mehrere Instruktionen aus drei separaten
Instruktionsfolgen speichern können. Diese Instruktionen sind einzeln im Instruktionsvordecodierer
28 zu verwenden. Die Steuerung der drei separaten Instruktionspuffer aufgrund des Auftretens von bedingten
Verzweigungsinstruktionen ist das Hauptanliegen der vorliegenden Erfindung.
Wenn die F i g. 3A, 3B und 3C vertikal untereinandergelegt werden, ist die IPPF 20 im einzelnen zu sehen.
F i g. 3A enthält in Form eines Blockdiagrammes die Instruktionsabruf-
und Decodierschaltung. Fig.3B enthält die Adreßberechnungsschaltung und F i g. 3C zeigt
einige zur IPPF 20 gehörende Sperren.
In F i g. 3A sind drei separate Sätze von Instruktionspufferregistern
(I Puffer A, B, Q 31, 32 und 33 gezeigt, jeder Satz empfängt im gewählten Zustand jedesmal,
wenn eine Instruktionsabrufanforderung an die PSCF
21 gesendet wird, 64 Bits der Instruktionsinformation,
wobei besonders der mit I-Puffer A bezeichnete Satz 31 zu beachten ist Abhängig von dem zu einem bestimmten
Satz von Instruktionspuffern gehörenden Wert im Instruktions-Adreßzähler werden die 64 Instruktionsinformationsbits
in ein bestimmtes der gezeigten vier Register geleitet Daher können 32, jeweils acht Bit große
Bytes der Instruktionsinformation vorher abgerufen und in jedem Satz der Instruktionspuffer 31,32 oder 33
gespeichert werden.
im System werden Instruktionen einzeln in der IPPF
20 decodiert Die jeweils in der richtigen Reihenfolge zu decodierende Instruktion wird in ein I-Register 35 übertragen,
das 32 Bits der Instruktionsinformation enthält Eine Reihe von Toren 36 wird entsprechend der Information
im Instruktionsadreßzähler so geschaltet, daß
die richtige Instruktion von dem gegenwärtig benutzten Instruktionspuffer während der Instruktionsausführung
in das I-Register 35 zur nachträglichen Decodierung übertragen wird. Die Reihe der gezeigten Tore 36
braucht man für die im IBM System/360 und im IBM System/370 mögliche unterschiedliche Instruktionslänge,
die zwischen zwei und vier oder mehr, jeweils acht Bit großen Bytes liegen kann. Verschiedene
Torkombinationen werden eingeschaltet Dadurch wird sichergestellt daß für jede zu decodierende Instruktion
die acht Bits des Operationscodes in die Bits 0 bis 7 des I-Registers 35 gesetzt werden. Abhängig vom Format
der jeweils vom I-Register 35 decodierten Instruktion können die Bits 8 bis 15 Maskenbits, codierte Information
über die Länge der variablen Feldoperanden oder Adressen von allgemeinen Registern sein. Die Bits 12
bis 15 und 16 bis 19 können bestimmte allgemeine Register, entsprechend der Adreßbildüiig in den !BM Systemen/360
und /370 sein. Die Bits 20 bis 31 von vier Byte großen Instruktionen sind ein relatives Adreßfeld, das
to für die Erzeugung der Adreßinformation zur Ansteuerung
von Datenoperanden vom Speicher mit berücksichtigt wird.
Die Instruktionsdecodiereinrichtung der IPPF 20 enthält den Decodierer 37, den Matrixdecodierer 38 und
den Steuerspeicheradressenregister (CSA R)-Decodierer 39- Zur Decodierung einer jeden Instruktion im I-Register
35 werden zwei Taktzyklen im System gebraucht. Während des ersten Taktzyklus muß bestimmte
Information über die decodierte Instruktion mögliehst schnell zur Verfugung stehen, und diese wird
durch den Decodierer 37 geliefert. Erst beim zweiten Zyklus einer jeden Instruktionsdecodierung wird bestimmte
andere Information gebraucht, die man vom Matrixdecodierer 38 bekommt, wo die OP-Codebits 0
bis 7 zur Ansteuerung des Prozessorspeichers für mehrere Steuersignalleitungen 40 und 41 benutzt werden.
Die Ergebnisse der gerade beschriebenen Instruktionsdecodierung werden als Steuerinformation für die
Instruktionsausführung in einem der vier Register einer Instruktionswarteschlange 42 gespeichert. Ein Teil der
Ausführungs-Steuerinformation wird auf einer Leitung 43 empfangen, und zwar die acht Bits des OP-Code, der
die von der E-Funktionseinheit auszuführende Grundfunktion angibt In vielen bekannten mikroprogrammierten
Steuersystemen, in denen der Steuerspeicher Mikroprogramme enthält, würden die acht OP-Code-Bits
zur Adressierung der ersten Mikroinstruktion einer Folge von Mikroinstruktionen benutzt, um die Instruktion
auszuführen. Um die Leistung des Mikrosteuersystems zu verbessern, sind zusätzliche binäre Bits für den
ersten Zugriffszyklus zum Steuerspeicher auf der Leitung 44 vorgesehen, die aus dem CSAR-Decodierer 39
entwickelt wurden, der auf in den Bits 8 bis 15 der gerade decodierten Instruktion enthaltene Maskeninformation
und die Steuersignalleitungen 41 vom Matnxdecodierer
38 anspricht. Zusätzliche Ausführungssteuerinformation kommt vom Matrixdecodierer 38 auf der Leitung
40. Die Leitung 45 stellt weiterhin Operanden-Adreßinformation von der Adreßaufstellschaltung dar,
die noch in Verbindung mit F i g. 3B zu beschreiben ist.
Die Ausführungs-Steuerinformation von einem der vier Register der Instruktionswarteschlange 42 wird für jede
Ausführung an die £-Funktion 23 übertragen.
Der Vorabruf von Instruktionen in einer bestimmten Instruktionsreihenfolge A, B oder C in einen bestimmten
!nstruktionspuffer 31 bis 33 läuft parallel mit der Präsentation einer einzelnen Instruktion an das I-Register
35 und der Präsentation von Ausführungssteuerinformation an ein leeres Register der vier Register der
Instruktionswarteschlange 42 weiter. Ein Signal von der E-Funktion 23, das anzeigt daß die £-Funktion 23 eine
Instruktion fertig ausgeführt hat leitet die Ausführungssteuerinformation für die nächste Instruktion der Reihe
von einem der vier Register der Instruktionswarteschlange 42 zur Ausführung in die £-Funktion 23. Solange
ein leeres Register in der Instruktionswarteschlange 42 zur Verfügung steht kann die Decodierung einer
Instruktion und Eingabe von Ausführungssteuerinfor-
mation in die leere Instruktionswarteschlange 42 fortgesetzt werden.
Außer der Tatsache, daß alle vier Register der Instruktionswarteschlange
42 voll sind und somit anzeigen, daß die lnstruktionsdecodierung ausgesetzt werden
sollte, können bestimmte andere, allgemein als Sperren klassifizierte Maschinenbedingungen, die lnstruktionsdecodierung
aussetzen. Ein Teil der Instrucktionsdecodierung ist die Bildung von Prozessorspeicheradressen
aus Kombinationen von in jeder Instruktion enthaltenen Adreßbus und dem Dateninhalt der
durch die Instruktion adressierbaren allgemeinen Register, entsprechend der Architektur der IBM Systeme
360 und 370. Eine, die lnstruktionsdecodierung verhindernde oder aussetzende Sperre würde ausgelöst,
wenn eine in der Warteschlange 42 enthaltene Instruktion nicht ausgeführt wurde, die Information in ein allgemeines
Register laden soll, um eine Adresse einer gegenwärtig im I-Register 35 enthaltenen Instruktion zu
bilden. In diesem Fall muß die Decodierung der im 1-Register 35 enthaltenen Instruktion ausgesetzt werden, bis
die Information von der noch nicht ausgeführten Instruktion zur Verfügung steht.
Die Architektur der IBM Systeme 360 und 370 schreibt der Instruktion adressierbare allgemeine Register
vor. Diese sind normalerweise ebenso, wie in dem vorliegenden System, in der Instruktionsausführungseinheit
23 enthalten und werden dort benutzt. Um die Adreßberechnung jedoch zu beschleunigen, ist eine
zweite Kopie dieser 16 allgemeinen Register in der IPPF 20 enthalten. Diese sind bei 46 gezeigt Der normale
Weg für die Eingabe von Information in die allgemeinen Register 46 läuft über das Arbeitsregister C-REG in
der £-Funktion 23 und dann über eine Leitung 47 in die aligemeinen Register 46. Die Leitungen 48 und 49 empfangen
Adreßinformation für die allgemeinen Register zum I-Register 35. Die Ausgabe des allgemeinen Registers
46 wird zusammen mit den Bits 20 bis 31 der relativen
Adresse vom I-Register 35 über die Leitungen 52 an die im Zusammenhang mit F i g. 3B noch zu beschreibende
Adreßrechenanlage gegeben.
In F i g. 3B ist der größte Teil der Adreßaufstellscha!- tung der IPPF 20 gezeigt. Ein Adreßaddierer 53 empfängt
die relativen Adreßbits 2ö bis 31 auf der Leitung 52, und die Ausgabe der allgemeinen Register 46 auf den
Leitungen 50 und 51 und liefert die Speicheradreßinformation für die IBM Systeme 360 und 370, die eine Summierung
der 12 relativen Adreßbits 20 bis 31 (D 2) von 24, eine Basisadresse darstellenden Adreßbits (B 2) und
von 24 Bits der Indexinformation (X 2) sind
Eine weitere Eingabe zum Adreßaddierer 53 erfolgt Ober eine Leitung 54, die von einer Urngehungsschaitung
55 in F i g. 3A kommt Mit der Umgehungsschaltung 55 werden die Sperrsituationen erkannt, in denen
die im E-Register 35 enthaltene Instruktion Daten von einem allgemeinen Register 46 verlangt, die dort noch
nicht vom Prozessorspeicher aufgrund einer vorher decodierten Instruktion empfangen wurden. Wenn die Daten
vom Prozessorspeicher aufgrund der vorher decodierten Instruktion zurückgegeben werden, werden die
Bits in den Positionen 40 bis 63 auf der Pufferdaten-Ausgangsleitung 34 durch die Umgehungsschaltung 55 an
den richtigen Eingang des Adreßaddieres 53 angelegt Gleichzeitig werden die Daten auf normale Weise an die
allgemeinen Register in der E-Funktion 23 und über das C-Register in die allgemeinen Register 46 über die Leitung
47 zurückgegeben. Dadurch kann die lnstruktionsdecodierung der Instruktion im I-Register 35 wenigstens
einen Zyklus früher wieder aufgenommen werden, als wenn die Umgehungsschaltung 55 nicht vorhanden
wäre.
Fig.3B zeigt eine in Fig. 2 dargestellte Adreßauf-Stellschaltung
29. Ein Längeninkrementierer 56 hat einen Eingang von 24 Bits und einen anderen von
acht Bits und einen Ausgang von 24 Bits. Die 24 Eingangsbits kommen von einer Triggergruppe, dem sogenannten
Prozeßadreßregister (PRAR) 57 und die
ίο acht Eingabebits kommen von einer Triggergruppe mit
der Bezeichnung Längenregister (LR) 58. Die 24 Ausgabebits gehen auf eine Gruppe von Verriegelungen, die
sogenannten Prozeßaddiererverriegelungen (PRAL) 59, die Adreßerhöhungsverriegelungen 60 und verschiedeis
ne, noch näher zu bezeichnende Vergleicherschaltungcn. Die Eingabe zum PRAR 57 kommt von den PRAL
59 und kann von Adreßaddierer 53, einem Adreßinkrementierer 61 oder einer Sammelleitung 62 von der E-Funktion
23 initialisiert werden. Die Eingabe zum LR 58 kommt von der Längenlogik 63 in F i g. 3A über Längenverriegelungsschaltungen
(LL) 64, und sie ist das Ergebnis der notwendigen Decodierung der Instruktionen mit Operanden unterschiedlicher Feldlänge.
Ein weiterer Satz von Verriegelungsschaltungen 65 ist am Ausgang des Adreßaddierers 53 dargestellt. Die Adreßinformation im PRAL 59 wird zum Speicherzugriff auf einer Sammelleitung 66 an die PSCF 21 übertragen. Die Ausgabe der Adreßerhöhungsverriegelungsschaltungen 60 wird auf einer Sammelleitung 67 an ein Arbeitsregister, das C-Register der E-Funktion 23 gegeben. Die auf der Sammelleitung 67 an die E-Funktion 23 übertragene Adreßinformation wird von der E-Funktion 23 gebraucht, wenn sie Adreßinformation an die PSCF 21 senden soll.
Ein weiterer Satz von Verriegelungsschaltungen 65 ist am Ausgang des Adreßaddierers 53 dargestellt. Die Adreßinformation im PRAL 59 wird zum Speicherzugriff auf einer Sammelleitung 66 an die PSCF 21 übertragen. Die Ausgabe der Adreßerhöhungsverriegelungsschaltungen 60 wird auf einer Sammelleitung 67 an ein Arbeitsregister, das C-Register der E-Funktion 23 gegeben. Die auf der Sammelleitung 67 an die E-Funktion 23 übertragene Adreßinformation wird von der E-Funktion 23 gebraucht, wenn sie Adreßinformation an die PSCF 21 senden soll.
InFi g. 3B sind mehrere, jeweils 24 Bit große Adreßregister
gezeigt, die Adreßinformation vom Ausgang der Adreßaddiererverriegelungsschaltungen (AAL) 65
oder von den Adreßerhöhungsverriegelungsschaltungen 60 empfangen und Ausgänge an den Adreßinkrementierer
61 auf einer Sammelleitung 68 zurückgeben. Das Übersetzungsausnahme-Adreßregister (TEA) 69
wird während eines Sysiemsiatus eines virtuellen Speichersystems
benutzt, worin vor den Zugriffsanforderungen zum Speicher, wo Adreßübersetzungen vorher
nicht durchgeführt werden konnten, eine Probesuche für eine Adreßübersetzung versucht werden kann. Das
TEA 69 hält die zu einer Zugriffsaufnahme, die während
der Vorverarbeitung einer Instruktion im I-Register 35 entdeckt wurde, gehörende Adresse, hat jedoch nur im
Versuchsbetrieb Bedeutung. Das Obersetzungsausnahme-Adreßregister 69 kann von den Adreßaddiererverricgclungsschsitungsn
65 oder von den Adreßerhöhungsverriegelungen 60 eingestellt werden.
Ein Quellenadreßregister (SRC) 70 und ein Bestimmungsadreßregister
(DST) 71 haben einen Umfang von jeweils 24 Bytes. Sie enthalten primär die Quellen- und
Bestimmungsadresse für einen Abruf, gemäß der Benutzung von Quellen- und Bestimmungsort in den IBM Systemen
360 und 370. Die Register 70 und 71 können von
eo den Adreßaddiererverriegelungen 65 für von der IPPF 20 erzeugte Anfragen und von der Sammelleitung 62
über die Adreßerhöhungsverriegelungen 60 für von der E-Funktion 23 kommende Anfragen initialisiert werden.
Die Register 70 und 71 können über den Adreßinkrementierer 61 herauf oder heruntergesetzt werden, und
ihr Inhalt kann der E-Funktion 23 auf der Sammelleitung 67 zur Verfügung gestellt werden.
Jeweils 24 Bit große Adreßregister 72 bis 77 mit den
Jeweils 24 Bit große Adreßregister 72 bis 77 mit den
Bezeichnungen OAA bis OAF gehören jeweils einzeln zu sechs Operandenpuffern in der E-Funktion 23. Ein
Paar aus Operandenadreßregister und Operandenpuffer, zusammen mit der zugehörigen Steuerung kann ein
Doppelwort aus der PSCF 21 holen und festhalten. Der Adreßinkrernentierer 61 steht für den Operandenabruf
zur Verfugung. Der Inhalt eines jeden Operandenadreßregisters 72 bis 77 kann in den Adreßinkrementierer 61
geleitet und dort um 0 oder 8 erhöht werden. Die Ausgabe des Adreßinkrementierer 61 kann auf jedes Operandenadreßregister
72 bis 77 zurückgeleitet werden. In der IPPF 20 befinden sich zwei Abrufeinrichtugen, die die
Register 72 bis 77 gemeinsam benutzen, und zwar die Bestimmungsabrufeinrichtung und die Quellenabrufeinrichtung.
Wenn beide Einrichtungen aktiv sind, kann jede drei Operandenadreßregister benutzen. Wenn bei
bestimmten Instruktionen nur die Queiieneinfichiung aktiv ist, kann sie alle verfügbaren Operandenregister
benutzen.
Die übrigen, jeweils 24 Bit großen Adreßregister 78, 79 und 80 mit der Bezeichnung IAA, IAB und MCgehören
zu den Instruktionspuffern 31,32 bzw. 33 und stellen
Instruktionszähler dar. Der Inhalt der aktiven Instruktionsadreßregister 78,79 oder 80, mit dem Instruktionen
von der PSCF 21 auf der Sammelleitung 35 der F i g. 3A abgerufen werden, wird unter Steuerung seiner Reihenfolgeschaltung
zwischen den einzelnen Abrufen um jeweils 8 erhöht. Der Inhalt kann auch um 8 oder 16 im
Adreßinkrementierer 61 erniedrigt werden, wenn die PSCF 21 eine oder mehrere Anforderungen zurückweist
und die Adresse neu erstellt werden muß.
Zur weiteren Beschreibung der Instruktionsadressierung und Manipulation der Adreßinformation in den
Instruktionsadreßregistern 78 bis 80 zeigt F i g. 3C Differenzregister 81, 82 und 83, die zu den Insirukiionsadreßregistem
78 bis 80 gehören. Jedes der Differenzregister 81 bis 83 enthält in fünf Bits den Wert, der vom
Inhalt des zugehörigen Adreßregisters 78, 79 oder 80 subtrahiert werden muß, um den Instruktionszählerwert
der zugehörigen Instruktionsfolge A, B oder C in den I-Puffern 31 bis 33 in Fig.3A zu bekommen. Wenn
eines der Instruktionsadreßregister 78 bis 80 mit einem neuen Wert geladen wird, wird das zugehörige Differenzregister
81, 82 oder 83 auf 0 gesetzt Danach wird das Differenzregister der jeweils aktiven I-Folge A, B
oder C bei jedem Zyklus fortgeschrieben. Wenn der Inhalt des zugehörigen Instruktionsadreßregisters herauf-
oder heruntergesetzt wird, wird das zugehörige Differenzregister 81, 82 oder 83 durch einen zugehörigen
Addierer 84,85 oder 86 um den gleichen Betrag, der +8,-8 oder —16 sein kann, fortgeschrieben. Während
des ersten Ausführungszyklus von der zugehörigen Instruktionsfoige A, B oder C werden die Differenzregister
81, 82 oder 83 um einen Wert heruntergesetzt, der genau so groß ist wie die an das Instruktionsregister 35
der F i g. 3A übertragene Instruktion lang ist Der Wert kann —2, —4 oder —6 sein. Wenn die an die E-Funktion
23 von der Instruktionswarteschlange 42 der F i g. 3A geleitete Instruktion eine Verzweigungs- und Verbindungsinstruktion
im IBM System 360 oder 370 ist, wird das Differenzregister 81 bis 83, das zu der Instruktionsfolge
im I-Puffer 31, 32 oder 33 gehört, von dem die Verzweigungs- und Verbindungsinstruktion kommt, um
einen weiteren Wert heruntergesetzt, der genau so groß
ist wie die Instruktion lang ist Wenn der Instruktionszählerwert für einen bestimmten Instruktionsstrom in
den I-Puffern 31 bis 33 errechnet werden muß, wird der Inhalt des zugehörigen Differenzregisters 81 bis 83 vom
Inhalt des zugehörigen Instruktionsadreßregisters 78 bis 80 im Adreßinkrementierer 61 subtrahiert. Das übrige
Blockdiagramm der F i g. 3C bezieht sich auf bestimmte Verriegelungsschaltungen, die in Fig.2 allgemein
bei 30 dargestellt sind. Eine Anzahl von Vergleicherschaltungen, von denen eine bei 87 dargestellt ist,
erkennt verschiedene Gleichheitsbedingungen zwischen der Adreßinformation auf der Leitung 88 vom
Längeninkrementierer 56 der F i g. 3B und der Adreßinformation auf der Leitung 89 vom PRAR 57 der
F i g. 3B. Zur Architektur des IBM Systems 360 oder 370 gehört auch das sogenannte SS-Instruktionsformat, in
dem zwei Operanden mit jeweils variabler Länge bezeichnet werden. Ein zum Vergleicher 87 gehörender
weiterer Vergleicher 90 erkennt eine Bedingung, die als SS-Wortüberlappung erkannt werden muß. Diese Bedingung
zeigt an, daß Quellen und Besiirnnvdngsoper-
and Felder haben, die sich destruktiv überlappen.
In einer anderen Situation, die erkannt und verarbeitet werden muß, ändert eine Instruktion in der Instruktionswarteschlange
42 der F i g. 3A, die ausgeführt wird oder die Ausführung erwartet, einen Operanden im Prozessorspeicher,
und eine nachfolgende Instruktion muß denselben Operanden von derselben Stelle abrufen. In
diesem Fall dürfen die Daten für die zuletzt genannte Instruktion erst abgerufen werden, nachdem die Daten
aus der früheren Operation gespeichert sind. Die Architektur des Systems 370 verlangt die Erkennung dieser
Operandenspeicher-Vergleichsbedingung auch in Situationen,
wo die beiden Referenzen zu der Stelle mit verschiedenen virtuellen Adressen gemacht werden. Dazu
ignorieren die Schaltungen, die den Operandenspeichervergleich erkennen, die Bits 8 bis 20, so daß einige,
nichtreale Vergleiche abgefühlt werden. Um die Operandenspeicher-Vergleichsbedingung
zu erkennen, gehören zu jeder Registerposition in der Instruktionswarteschlange 42 zwei Adressen, die die Anfangs- und Endadresse
(Modulo 2K) des Speicherfeldes sind, das durch die Instruktion verändert wird.
Die untere Grenzadresse ist die logische Adresse von der Instruktion und die obere Grenzadresse wird im
Längeninkrementierer 56 der Fig.3B erzeugt Zu jedem
Register in der Instruktionswarteschlange 42 gehört auch ein Bit, das angibt, daß die Instruktion den
Speicher ändert. Die Adreßinformation für die untere Grenzadresse (LL) für jedes Instruktionswarteschlangenregister
(0 bis 3) wird in eines der zugehörigen Register 91 bis 94 gesetzt, und die Adreßinformation für die
obere Grenzadresse (UL) wird in eines der zugehörigen Register 95 bis 98 gesetzt. Wenn Operandenadreßinformation
im Längeninkrementierer 56 erzeugt wird, wird das auf den Sammelleitungen 88 und 89 angezeigt Die
Vergleicnerbchäliuugen 99 und 100 erkennen die Situation,
in der eine im I-Register 35 decodierte Instruktion verzögert werden muß, bis eine vorhergehende Speicherung
ausgeführt ist.
Eine andere Verriegelungssituation wird durch die Vergleichsschaltungen 101 und 102 erkannt, in der eine
vom Prozessor-Speicher abgerufene Instruktion dieselbe Adresse hat, die auch auf den Sammelleitungen 88
oder 89 für eine decodierte Instruktion angegeben ist, die Daten in dieselbe Stelle speichert, wie die vorher
abgerufene Instruktion.
F i g. 4 zeigt in Form eines Blockdiagrammes einige
Hauptregister und Hauptdatenbahnen in der £-Funktion 23 der F i g. 2. Die Haupteinheit der Ε-Funktion ist
eine arithmetische und logische Einheit (ALU) 103, die aus einem 64 Bit großen Addierer, einem 8 Bit großen
Addierer, einem 64 Bit großen Verschieber und einer Multipliziereinheit besteht Daten für die ALU 103 werden
von einem Sar; von Arbeitsregistern 104 mit der Beschriftung A, B, C und D angelegt Die Arbeitsregister
104 sind durch programmierte Instruktionen nicht adressierbar, können aber über eine Ausführungsreihenfolge
angesteuert werden. Ein Arbeitsspeicher 105 ist in der £-Funk tion enthalten und besteht aus 16 allgemeinen
Registern und vier Gleitkommaregistern, wie sie in der Architektur der IBM Systeme 360 und 370
vorgeschrieben sind, und ist durch Information in Programminstruktionen adressierbar. Wenn Daten in eines
der Arbeitsspeicherregister 105 vom Hauptspeicher eingegeben werden sollen, werden sie von der PSCF 21
auf einer Leitung 106 empfangen. Die Operandenpuffer A bis F wurden bereits im Zusammenhang mit den zugehörigen
Operandenadreßregistern 72 bis 77 in F i g. 3B erwähnt. Die auf der Leitung 106 empfangenen
Daten werden durch eines der Arbeitsregister 104 und dann über eine Leitung 108 an das adressierte Arbeitsspeicherregister
105 geleitet Die während der Ausführung einer Instruktion zu verändernde Adresse des Arbeitsspeicherregisters
105 wird in die Arbeitsspeicher-Adreßregister 109 eingegeben, die die Adresse wiederum
über die Leitung UO und Ul empfangen, und zwar
als Teil der Ausführungssteuerinformation, die von der Instruktionswarteschiange 42 in Fig.3A übertragen
wird. In Fig. 3A ist bekanntlich ein Satz von adressierbaren
allgemeinen Registern 46 und die Sammelleitung 47 gezeigt, durch die Daten in ein adressiertes Arbeitsspeicherregifter
105 gespeichert werden können. Diese werden ebenfalls über das C-Arbeitsregister in das entsprechende
Register der allgemeinen (IPPF)-Register 46 übertragen.
Andere, von der Instruktionswarteschiange 42 übertragene Ausführungssteuer-Information, wird in ein E-Register
112 eingegeben. Diese Information enthält den acht Bit großen OP-Code der auszuführenden Instruktion
und die nachfolgenden acht Bits der Instruktionsinformation, die entweder Adressen der allgemeinen Register
105 oder eine Längeninformation für die Operanden mit veränderlicher Feldlänge sein können.
Alle, in der ALU 103 zu nutzenden Daten, können von zwei Registern des Arbeitsspeichers 105 über die Arbeitsregister
104, ein Operand vom Arbeitsspeicher 105 und ein anderer Operand vom Operandenpuffer 107
oder auch von der ALU in ein Arbeitsregister gespeicherte Zwischenergebnisse auf einer Sammelleitung 113
kommen. Im Hauptspeicher zu speichernde Daten von der £-Funktion kommen auf einer Sammelleitung 114
am Ausgang der 64 Bitschieber. Die Sammelleitung 62 vom Ausgang des 64 Bitschiebers ist außerdem der Eingang
zu den Adreßerhöhungsverriegelungen 60 in Fig.3B.
Bei der Beschreibung der vorliegenden Erfindung werden der Verzweigungsstatus und Verzweigungsergebnisse
erwännt. In Form eines Blockdiagrammes ist die Verzweigungs-Resultatlogik 115 dargestellt, die als
Teil der Ausführungssteuerinformation von der Instruktionswarteschiange 42 Verzweigungsstatusinformation
auf den Leitungen 116 empfängt. Die Verzweigungsstatussignale auf der Leitung 116 zeigen die Ausführung
einer bestimmten Art von Verzweigungsinstruktionen an und werden logisch mit Ergebnissen von der ALU
103 auf einer Leitung 117 kombiniert, um an die IPPF 20 die Ergebnisse der Datenmanipulationen zurückzumelden,
die den Erfolg bedingter Verzweigungsinstruktionen bestimmen. Auf den Leitungen 118, 119 und 120
werden drei Signale an die IPPF zurückgegeben, um die richtige Reihenfolge der Instruktionsausführung aufgrund
von Verzweigungsinstruktionen zu steuern. Ein Signal auf der Leitung 118, mit der Bezeichnung BC
erfolgreich, zeigt an, ob eine bedingte Verzweigungshistruktion
erfolgreich war. Eine solche Instruktion stellt durch Abfrage eines bestimmten Bedingungscodes fest, ;
ob die Zielinstruktion einer Verzweigungsinstruktion angesteuert werden soll. Ein Signal auf der Leitung 119,
mit der Beschriftung B = 1, zeigt die Ergebnisse einer Verzweigungsinstruktion an, die den Wert 0 im B-Arbeitsregister
sucht Ein Signal auf der Leitung 120, mit der Beschriftung B >
A zeigt an, daß der Inhalt des Arbeitsregisters B größer ist als der Inhalt des Arbeitsregisters
A. Einzelheiten über die Erzeugung der Verzweigungs-Zustandssignale
auf den Leitungen 116 und die Benutzung der Verzweigungsergebnissignale auf
den Leitungen 118, 119 und 120 werden später noch ;<
genauer beschrieben. ϊ
Die Grundreihenfolge für die Ausführung einer In- \ struktion wird durch Mikroprogramme oder Mikroin- ·;
struktionsfolgen von einem Steuerspeicher 121 gesteuert,
/ede aus dem Steuerspeicher 121 ausgelesene Mikroinstruktirn
wird in ein Steuerspeicher-Datenregister 122 eingegeben. Durch Decodierung der verschiedenen
Felder einer Mikroinstruktion im Steuerspeicher-Datenregister 122 wird eine Anzahl von Signalen auf den
Steuerleitungen 123 erzeugt, mit denen die Informationsleitung innerhalb der E-Funktion 23 erregt und der
Reihe nach abgewickelt wird. Über die Leitungen 124 wird Adreßinformation geführt die im Steuerspeicher-Adreßregister
(CSAR) 125 benutzt wird und die Reihenfolge der aus dem Steuerspeicher 121 gelesenen Mikroinstruktionen
steuert.
Wenn eine bestimmte, von der IPPF empfangene Instruktion fertig ausgeführt ist, gibt das Steuerspeicher-Datenregister
ein Signal IPPF END OP über die Leitung 126 an die IPPF 20. Aufgrund dieses Signales auf
der Leitung 126 wird die nächste, in der instruktionswarteschlange
42 der F i g. 3A, gespeicherte Ausführungssteuerinformation in die £-Funktion übertragen.
Die vom Steuerspeicher 121 zu holende erste Mikroinstruktion wird von einem Decodierer 127 angesteuert,
basierend auf den zehn in das Steuerspeicher-Adreßregister 125 von der Instruktionswarteschiange 42 gesetzten
Adreßbits. Die zehn Adreßbits ergeben sich aus der Übertragung der acht Bits des auszuführenden OP-Code
auf den Leitungen 128. Außerdem erhält man die Bits 3 und 4 der Anfangsadresse im Steuerspeicher-Adreßregister
125 von dem vorher erwähnten, in Fig. 3A, gezeigten CS A R-Decodierer 39 auf den Leitungen
129 und 130.
F i g. 5 zeigt verschiedene bedingte Verzweigungsinstruktionen, die in den IBM Systemen 360 und 370 benutzt
werden. Die vier Grundinstruktionen haben die Namen »bedingte Verzweigung«, »Verzweigung bei
Zahl«, »Verzweigung bei Index niedrig/gleich oder hoch« und »Verzweigen und Verbinden«. Die meisten
dieser Instruktionen stehen in zwei verschiedenen Formaten. Als Beispiel sind die bedingte Verzweigungsinstruktion
genannt, in der die Zieladresse für die Verzweigung in einem allgemeinen Register enthalten ist,
das durch vier Bits mit der Bezeichnung R 2 angegeben ist. In dem anderen Format ist die Instruktionszie'adres-
b5 se angegeben durch die Adreßformulierung, die man
durch Addition des Inhaltes des Basisregisters B2, des
Indexregisters X 2 und des relativen Adreßfeldes D 2 der Instruktion erhält. In beiden Formaten geben
vier Bits mit der Bezeichnung M1 eine Maske an, die
die jeweilige Bedingungscodeeinstellung für eine Verzweigung anzeigt Wenn der Bedingungscode so eingestellt ist wie der durch die Maske M1 angegebene Code,
ist die Verzweigung erfolgreich. Wenn die Bedingungscodeeinstellung mit der Ms>ke AfI übereinstimmt,
empfängt die IPPF 20 das Signal BC erfolgreich auf der Leitung 118 der Fig.4. In der Instruktion verzweigen
bei Zahl wird der Inhalt des durch R1 angegebenen
allgemeinen Registers algebraisch um 1 reduziert Wenn
das Ergebnis 0 ist läuft die normale Instruktionsreihenfolge mit der nächsten Instruktion in der Reihe weiter.
Wenn das Ergebnis von 0 verschieden ist wird die nächste auszuführende Instruktion von der Instruktionszieladresse angesteuert Die Ergebnisse der Inhaltserhöhung des durch R1 angegebenen Registers werden in
den ß-Arbeitsregistern festgehalten und auf der Leitung
119 mit der Beschriftung B = 1 signalisiert
Es gibt zwei Instruktionen »Verzweigen auf Index«, und zwar eine »Verzweigen auf Index hoch« und eine
andere »Verzweigen auf Index gleich oder niedrig«. In diesen Instruktionen wird zu dem durch R 1 bezeichneten Operanden ein Wert addiert und die Summe algebraisch mit einem Vergleichswert verglichen. Hinterher
wird die Summe an die Stelle des ersten Operanden gesetzt ohne Rücksicht auf die evt erfolgte Verzweigung. In der Instmktion »Verzweigen bei Index hoch«
wird die Instruktionsadresse durch die Instruktionszieladresse ersetzt wenn die Summe hoch ist Bei der Instruktion »Verzweigen auf Index niedrig oder gleich«,
wird die Instruktionsadresse durch die Instruktionszieladresse ersetzt wenn die Summe niedrig oder gleich ist
Die verlangten Vergleichsergebnisse werden auf die Leitung 120 angegeben, bezeichnet mit B
> A.
In der Instruktion »Verzweigen und Verbinden« wird
der Instruktionszählerwert als Verbindungsinformation in dem durch R 1 bezeichneten allgemeinen Register
gespeichert. Hinterher wird aus der Zielinstruktionsadreß-lnformation die nächste Instruktion genommen.
Diese Instruktion wird dadurch bedingt, daß de. Programmierer die Möglichkeit hat eine Null in das
R 2-FeId der Instmktion BALR zu setzen. In diesem Fall wird die Verbindungsinformation in dem durch R 1 bezeichneten Register gespeichert, jedoch nicht zur Zieladresse verzweigt.
Wenn die bedingten Verzweigungsinstruktionen der IBM Systeme 360 oder 370 benutzt werden, dann werden sie so benutzt, daß man raten kann, ob die Verzweigungsbedingung vorliegt oder nicht, und daß die Zielinstruktion als nächste ausgeführt wird. Außerdem kann
ein Programmierer bestimmte Bitmuster in die Instruktionsfelder mit Maskenbits setzen oder ein allgemeines
Register Null angeben, damit eine Verzweigungsinstruktion immer oder niemals erfolgreich ist.
F i g. 6 zeigt die logische Schaltung zur Vorhersage des Erfolges oder Mißerfolges beim Erkennen einer bestimmten Verzweigungsbedingung. Eine ODER-Schaltung 131 zeigt durch ein Signal auf der Leitung 132 an.
daß die Verzweigung wahrscheinlich erfolgreich ist. Eine ODER-Schaltung 133 liefert ein Signal auf die Leitung 134, das durch seine Codierung anzeigt, daß die
Verzweigung erfolgreich ist und die Zielinstruktionsadresse ber uzt wird. Die ODER-Schaltung 135 liefert
ein Signal auf die Leitung 136, wenn der Programmierer bestimmte informationen in die instruktionsfeider gesetzt hat, die unveränderlich die nächste Instruktion in
der Reihenfolge nach der Verzweigungsinstruktion ausführen lassen. Wie bei der ODER-Schaltung 131 gezeigt
ist wird beim Decodieren einer Instruktion »Verzweigen auf Index« angenommen, daß die Verzweigung erfolgreich ist und daher sollte als nächstes die Zielinstruktion ausgeführt werden. Wenn auf der Leitung 119
andere als die erwarteten Ergebnisse über den Inhalt des ß-Registers angezeigt werden, muß eine Korrektur
vorgenommen werden, die anschließend beschrieben wird.
Es wird ebenfalls angenommen, daß bei der Instruk
tion »Verzweigen auf Zahl« die Zielinstruktion ge
braucht wird. Im Falle der Instruktion »Verzweigen und Verbinden« (BAL) sollte das als erfolgreich eingestuft
werden und wird auch von der ODER-Schaltung 133 tatsächlich so angezeigt daß jetzt die Zielinstruktion
gebraucht und als nächste ausgeführt wird. Wenn der Programmierer jedoch eine Null in das R 2-Feld der
Instruktion BALR gesetzt hat, wird die Verbindungsinformation gespeichert, es folgt jedoch keine Verzweigung. Die UND-Schaltung 137 in Fig. 6 zeigt diese Si-
tuation an und liefert eine Eingabe an die ODER-Schaltung 135, die anzeigt, daß nicht verzweigt wurde. Die
UND-Schaltung 138 fühlt die BALR-Instruktion ab, in der das Feld R 2 einen von Null verschiedenen Inhalt
hat und Hefen ein Ausgangssignal an die ODER-Schal
tung 131 und 133 zur Anzeige dafür, daß es sich um eine
bekannt erfolgreiche Verzweigungsinstruktion handelt. Aus einer Abfrage der bedingten Verzweigungsinstruktion (BC) bestimmen die UND-Schaltungen 139
und 140, ob das Maskenfeld aus lauter Einsen oder lau
ter Nullen besteht. Eine Ausgabe von der UND-Schal
tung 139 führt zu einer Ausgabe von der ODER-Schaltung 133, die eine Situation bezeichnet, in der eine Verzweigung immer erfolgreich ist. Die UND-Schaltung
140, die feststellt, daß das Maskenfeld aus lauter Nullen
besteht bezeichnet durch ihr Ausgangssignal eine Situation, in der der Programmierer in keinem Fall mit dieser
Instruktion verzveigen will und daher zeigt die ODER-Schaltung 135 an, daß keine Verzweigungssituation vorliegt. Die UND-Schaltungen 141 und 142 sowie die
ODER-Schaltung 143 untersuchen die Felder der bedingten Verzweigungsinstruktion (BCR). Ein Maskenfeld aus lauter Einsen oder lauter Nullen und ein von
Null verschiedener Wert oder Null-Wert im Feld R 2 bezeichnen die Situationen, in denen nicht immer ver
zweigt wird, die Verzweigung als erfolgreich bckaimi isi
oder eine vermutete erfolgreiche Bedingung angezeigt wird. Dann muß die eigentliche Ausführung der Instruktion abgewartet werden, um festzustellen, ob die Vermutung richtig war.
so Die UND-Schaltungen 144 und 145 untersuchen die Felder der Instruktion »Verzweigen auf Zahl« (BCTR).
Wenn das Feld R 2 gleich Null ist, wird diese Instruktion nicht als Verzweigungsinstruktion betrachtet. Wenn das
Feld R 2 von Null verschieden ist, zeigt die ODER-
Schaltung 131 an, daß eine wahrscheinlich erfolgreiche
Verzweigung vorliegt.
F i g. 7 zeigt die Codierung der Verzweigungsstatussignale, die in die drei Bitpositionen eines von vier Registern der Instruktionswarteschlange 42 eingegeben
werden. Eine Tabelle 146 zeigt die Codierung der Bits 147,148 und 149, die in die Verzweigungszustandsbits eines jeden Registers der Instruktionswarteschlange 42 entsprechend dem ausgeführten Instruktionstyp
eingegeben werden. Diese Verzweigungsstatusbits wer
den beispielsweise codiert mit 000, wenn das instruk-
tionswarteschlangen-Register keine Instruktion enthält oder die eingesetzte Instruktion nicht als Verzweigungsinstruktion zu betrachten ist. Dazu gehören auch
17 18
die Verzweigungsinstruktionen, bei denen die in F i g. 6 ver oder belegter Instruktionspuffer identifiziert und
gezeigte Logikschahung festgestellt hat, daß sie nicht aktiv und belegt geschaltet und die zugehörigen Hard-
als solche zu betrachten sind. Mit 010 werden die Ver- ware-Trigger und logischen Schaltungen werden akti-
zweigungsstatusbits desjenigen Instruktionswarte- viert, um eine Instruktionsabrufanforderung an die
gungsinstruktion enthält Die Codierung 011 wird einge- dingten Verzweigung auf die Datensammelleitung 34
geben, wenn die ODER-Schaltung 133 der F i g. 6 ein zurückgegeben wird, wird sie in den aktivierten Instruk-
zeigen verschiedene andere bedingte Verzweigungsin- Wenn die Ausführungssteuerinformation der beding-
struktionen ab. io ten Verzweigungsinstruktion im I-Register 35 an die
niert die Verzweigungsstatusinformation auf den Lei- entsprechend der in F i g. 6 dargestellten Logik ge-
tungen 147, 148 und 149, die den Verzweigungsstatus- schätzt, ob die bedingte Verzweigung erfolgreich ist
bits des Instruktionswarteschlangenregisters einer Ver- oder nicht Basierend auf dieser Schätzung wird die
rungsresultatsignalen von der E- Funktion auf den Lei- tion entweder von dem Instruktionspuffer kommen, der
tungen IIS, 119 oder 120, nachdem die zugehörige be- die bedingte Verzweigungsinstruktion enthält oder von
dingte Verzweigungsinstruktion fertig ausgeführt ist dem Instruktiorupuffer, der die Zielinstruktionsfolge
und der fnstruktionsausführung, die von der £-Funktion 20 diert und Ausführungssteuerinformation an die Instruk-
signalisiert werden, und der binäre Zustand der Leitung tionswarteschlange 42 übertragen. Wenn eine zweite
i32 in F i g. 6 zeigen an, ob richtig geraten wurde oder bedingte Instruktion decodiert wird und einer der En-
nicht, und sie geben Informationen an die IPPF 20, um struktionspuffer 31,32 oder 33 nicht aktiv ist, kann ein
sicherzustellen, daß die nächste, von der Instmktions- dritter Instruktionsabruf für eine dritte Instruktionsfol-
warteschlange 42 an die E-Funktion 23, übertragene 25 ge eingeleitet werden und dann wird der Erfolg der
kommt, d. h, es wird entweder die nächste Instruktion so bestimmt.
nach der Verzweigungsinstruktion oder die Zielinstruk- Wenn die Ausführungsergebnissignale für bedingte
tion, die mit der Adreßinformation in der bedingten Verzweigungsinstruktionen an die IPPF 20 von der E-
decodieren 150 gehören auch Anzeigesignale für eine 42, entsprechend der Darstellung in Fig.8, verglichen
erfolgreiche oder erfolglose Verzweigung und für die werden, müssen Einstellungen für die erfolgte falsche
richtige oder falsche Vermutung. Diese verschiedenen Schätzung des Erfolges der bedingten Verzweigungsin-
151 bis 154 angezeigt. dingten Verzweigung ursprünglich richtig geschätzt
den Leitungen 118,119 und 120 sind ebenso dargestellt 40 Instruktionswarteschlange 42 enthaltene Steuerinfor-
wie die Verzweigungsstatusbits auf den Leitungen 147, mation von nachträglich decodierten Instruktionen zer-
148 und 149. Die Signale auf den Leitungen 155,156 und stört und die nächste Instruktion aus der richtigen In-
157 sind der invertierte Binärwert der Signale auf den struktionsfolge in das I-Register 35 zur Decodierung
und gibt die Ausgangssignale auf die Leitungen 151 bis sprüngliche Schätzung des Erfolges einer bedingten
154, die anzeigen, ob die Verzweigung erfolgreich oder Verzweigungsinstruktion anspricht und die Ausfüh-
erfolglos war und die ursprüngliche Annahme richtig rungsergebnissignale zurückgibt, um hinterher sicher-
oder falsch war. zustellen, daß die Ausführungssteuerinformation in der
meines Problem bei der Ausführung bedingter Verzwei- wird. Die Übertragung der lnstruktionsausführungs-
gungsinstruktionen behandelt. Jeder Satz von Regi- Steuerinformation in der richtigen Reihenfolge an die
stern, die die drei Instruktionspuffer 31, 32 und 33 bil- E-Funktion 23 von der Instruktionswarteschlange 42
den, hat eine Anzahl von Eingangs- und Ausgangstoren der IPPF wird durch vier Zeiger kombiniert, von denen
wie bei 36 dargestellt ist. Außerdem hat jedes Register 55 jeder aus zwei binären Triggern besteht. Die Decodie-
einen Satz von Hardware-Triggern und Logikschaltun- rung der Zeiger bezeichnet einen bestimmten lnstruk-
gen, die auf den leeren oder vollen Zustand der Register tionspuffer 31, 32 oder 33, der zu der I nstruktionsfolge
und den gegenwärtigpn Wert in den zugehörigen In- A, ßoderCgehört.
struktionsadreßregistern 78,79 und 80 ansprechen. Die- Die zwei Bit großen Zeiger haben einen Decodierzei-
se Hardware-Folgeschaltungen koordinieren die In- 60 ger 158, der Signale auf einer Leitung 159 an die I-Regi-
struktionsabrufanforderungen an die PSCF 21 für die ster-Eingangstore 36 (F i g. 3A) legt, die zu demjenigen
zugehörigen Instruktionsfolgen A, B und C und die Instruktionspuffer gehören, von dem Instruktionen in
dem richtigen instruktionspufferregister in das I-Regi- Der Ausführungszeiger 160 bezeichnet die Instruk-
ster 35. Ein aktiver Trigger und ein Belegungstrigger 65 tionsfolge A, ßoder C, der die Quelle der Instruktions-
sind ebenfalls mit jedem der Instruktionspuffer 31 bis 33 ausführungs-Steuerinformation ist. die zuletzt an die E-
verbunden. Wenn eine bedingte Verzweigungsinstruk- Funktion 23 übertragen wurde. Mit der Decodierung
tion im I-Register 35 decodiert wird, wird ein nichtakti- dieser Information werden die zugehörigen Differenz-
register 81,92 oder 83 in F i g. 3C über ein Signal auf der
Leitung 61, das sog. Differenzregister-Fortschreibesignal,
eingeschaltet
Der Nächste-Zielfolgezeiger 162 spricht auf die Einstellung der Belegtanzeigeschalter (Aktivitätstrigger)
163,164 und 165 an, die zu den jeweiligen Instruktionsfolgen A, B und C gehören und einen bestimmten Instruktionspuffer
31, 32 oder 33 bezeichnen, der zum Empfang der durch eine bedingte Verzweigungsinstruktion
identifizierten Zielinstruktionen zu aktivieren ist. Abhängig ν im Erfolg der bedingten Verzweigungsinstruktionen
werden die Instruktionspuffer in verschiedener Reihenfolge belegt oder auch nicht, und daher
wird der Ein- oder Ausschaltzustand der Aktivitätstrigger 163 bis 165 decodiert, und ein Signal auf der Leitung is
166 steuert den Schaltzustand des Zeigers 162 für die
nächste Zielfolge.
Ein Zielpufferzeiger 167 ist Teil der Ausführungssteuerinformation,
die in jedes Register der Instruktionswarteschlange 42 gesetzt wird. Wenn eine bedingte Verzweigungsinstruktion
decodiert und die Ausführungssteuerinformation in die Instruktionswarteschlange 42
übertragen wurde, wird die (ndentität des die Zielinstruktionsfolge
empfangenden Instruktionspuffers an den zugehörigen Zielpufferzeiger 167 übertragen.
Die Ausgabe einer UND-Schaltung 168 schaltet den Rest der in Fig.9 gezeigten Logikschaltung ein. Bei
jeder Decodierung einer Verzweigungsinstruktion im I-Register 35 wird ein Signal auf der Leitung 169 eingeschaltet
Eine für die weitere Decodierung einer bedingten Verzweigung im I-Register 35 erforderliche Verriegelung
ist die durch einen Inverter 170 und eine UND-Schaltung 171 vorgenommene Erkennung, daß wenigstens
ein freier Instruktionspuffer vorhanden ist und einen Zielinstruktionsstrom empfangen kann. Die Endein- 3s
gäbe zur UND-Schaltung 168 kommt von einem Inverter 172, der das Signal auf der Leitung 136 von der in
F i g. 6 gezeigten Schaltung empfängt, das anzeigt, daß die bedingte Verzweigungsinstruktion im I-Register 35
nach ihrer Codierung nicht als Verzweigungsinstruktion
anzusehen ist. Die Reihenfolge der Instruktionen sollte daher in derselben Instruktionsfolge weiterlaufen. Es
findet also keine Verzweigung statt.
Wie bereits gesagt, gehört zu jeder der drei Instruktionsfolgen
A. B und Cein aktiver Trigger 173,174 und 175, der im eingeschalteten Zustand die I-Abruffolgeschaltungen
176, 177 und 178 einschaltet. Die I-Abruffolgeschaltungen bestehen aus einem Satz von Triggern
und einer logischen Schaltung, die zusammen überwachen, welcher der zugehörigen Instruktionspuffer 31,32
und 33 aktiv ist und den vollen oder leeren Zustand der Register feststellen, die die Puffer bilden, um Instruktionsabrufe
nach Bedarf einzuleiten. Die Stellung der Abruffolgesteuerungen für jede Instruktionsfolge steuert
die Eingangstore der I-Puffer A, B oder C durch ein Signa» auf der Leitung 179.
Wenn eine bedingte Verzweigungsinstruktion decodiert und die Ausführungssteuerinformation an die Instruktionswarteschlange
42 der F i g. 3A übertragen wurde, überträgt die Ausgabe 180 der UND-Schaltung 168 durch ein Tor 181 den Inhalt des Zeigers 162 für die
nächste Zielfolge an das Register in der Instruktionswarteschlange
42, das die Ausführungssteuerinformation für die bedingte Verzweigungsinstruktion empfängt
und gibt diese Information in den Zielpufferzeiger
167 dieses Registers. Gleichzeitig schaltet der Zeiger 162 für die nächste Zielfolge durch Signale auf den Leitungen
182 und 183 den aktiven Trigger und den Belegungstrigger ein, die zum Instrukticnspuffer 31,32 oder
33 gehören und zur aktivieren sind, um die durch die
Adreßinformation der bedingten Verzweigungsinstruktion bezeichnete Zielinstruktion zu empfangen. Wenn
der Aktivtrigger gesetzt wird, wird dadurch die richtige Instruktionsabruf-Folgesteuerung aktiviert und der Instruktionsabruf
für die Zielinstniktionsfolge eingeleitet. Die neue Schaltstellung der Belegungstrigger 163, 164
und 165 schreibt den Zeiger 162 für die nächste Zielfolge auf den neuen Stand fort
Die Ausgabe 180 der UND-Schaltung 168 wirkt auch den UND-Schaltungen 184 und 185. Wenn die in F i g. 6
dargestellte Logikschaltung anzeigt, daß von der bedingten Verzweigungsinstruktion bekannt ist daß sie
Erfolg hat, wirkt das Signal 134 an der UND-Schaltung 185 so, daß die gegenwärtige Einstellung des Decodierzeigers
158 durch ein Tor 186 den Aktivtrigger der Instruktionspuffer 31, 32 oder 33 abschaltet von dem die
bedingte Verzweigungsinstruktion kam. Das ist möglich, weil bekannt ist daß die nächste auszuführende
Instruktion von der Zielinstruktionsfoige kommen muß.
In den Fällen, in denen die in F i g. 6 gezeigte logische Schaltung ein Signal auf die Leitung 132 gegeben und
damit angezeigt hat, daß die bedingte Verzweigungsinstruktion wahrscheinlich erfolgreich ist (erfolgreiche
Schätzung), gibt die UND-Schaltung 184 ein Ausgangssignal und erregt ein Tor 187, um den Zeiger 162 für die
nächste Zielfolge einzuschalten und durch ein Signal auf der Leitung 182 den Decodierzeiger 158 auf denselben
Wert zu stellen. Das ist für die Anzeige erforderlich, daß die nächste, nach der bedingten Verzweigungsinstruktion,
auszuführende Instruktion wahrscheinlich von der Zielinstruktionsfolge kommen wird und in das I-Register
35 der F i g. 3A übertragen werden sollte und vom I-Register-Eingangssignal 159 gesteuert wird. Wenn die
in F i g. 6 gezeigte logische Schaltung nicht das Signal für die erfolgreiche Schätzung 132 erzeugt hat, bleibt
der Decodierzeiger 158 in seinem gegenwärtigen Zustand und die Instruktionsdecodierung wird in derselben
Instruktionsfolge fortgesetzt, der die bedingte Verzweigungsinstruktion enthielt. Dieses Verfahren basiert auf
der Annahme, daß die Verzweigung nicht erfolgreich ist und die Instruktionsdecodierung in derselben Instruktion
fortgesetzt werden sollte. Wenn die bedingte Verzweigung nicht als erfolgreich bekannt ist, angezeigt
durch ein Signal auf der Leitung 134, dann wird der Aktivtrigger des die bedingte Verzweigungsinstruktion
enthaltenden Instruktionsstromes im aktiven Zustand gelassen, um die Instruktionsabrufanforderungen nach
Bedarf fortzusetzen.
Der Ausführungszeiger 160 bezeichnet die Instruktionsfolge von der die Instruktionen zur Ausführung an
die E-Funktion 23 übertragen werden. Aufgrund der an die logische Schaltung der Fi g. 7 und 8 zuiückübertragenen
Ausführungs-Resultatsignale muß der Ausführungszeiger 160 auf den richtigen Wert eingestellt werden,
der den für die weitere Instruktionsübertragung zu benutzenden Instruktionsstrom angibt. Die Erregung
der Signalleitungen 151 bis 154 von der in F i g. 8 gezeigten logischen Schaltung hat daher großen Einfluß auf
die Einstellung des Ausführungszeigers 160, der diejenige Instruktionsfolge der bedingten Verzweigungsinstruktion
bezeichnet, die die Signale auf den Leitungen 151 bis 154 auslöste. Wenn das Signal für eine erfolgreiche
Schätzung 132 erzeugt wurde, wird der Decodierzeiger 158 so eingestellt, daß er auf die Zielinsiruktionsfolge
zeigt. Wenn die Signalleitung 153 erregt und damit eine erfolglose Verzweigung (falsche Schätzung) ange-
zeigt wurde, wird ein Tor 188 zur Übertragung der Einstellung
des Ausführungszeigers 160 an den Decodierzeiger 158 auf einer Leitung 189 eingeschaltet. Dadurch
wird die Instruktion hinter der bedingten Verzweigungsinstruktion in derselben Instruktionsfolge an das
I-Register 35 übertragen. Die Erregung des Tores 188 hat auch eine Wirkung auf die Leitung 190 und 191 von
anderen Instruktionsfolgen als derjenigen, die die bedingte Verzweigungsinstruktion und die ihr folgende
enthielt.
Wenn angenommen wurde, daß die bedingte Verzweigungsinstruktion erfolglos war, blieb der Decodierzeiger
158 so eingestellt, daß er die, die bedingte Verzweigungsinstruktion enthaltende, Instruktionsfolge bezeichnet.
Wenn sich die Verzweigung als erfolgreich erwies (falsche Schätzung) wäre die Leitung 152 von der
in F i g. 8 gezeigten Logikschaltung erregt worden. Das stellt eine Situation dar, wo die Decodierung von der
Zielinstruktionsfolge weitergelaufen sein sollte und die Ε-Funktion 23 als nächste Instruktion eine Instruktion
aus der Zielinstruktionsfolge hätte ausführen sollen. Die Leitung 152 wirkt daher an einem Tor 192 und läßt den
Inhalt des Zielpufferzeigers 167, dargestellt auf einer Leitung 193, wirken auf den Leitungen 194 und 195 und
den Decodierzeiger 158 sowie den Ausführungszeiger 160, die Zielinstruktionsfolge bezeichnen. Der Decodierzeiger
158 gibt dann an, daß die Zielinstruktion in das Instruktionsregister 35 zur Decodierung übertragen
werden sollte und die nächste an die £-Funktion 23 zu übertragende Instruktion aus der durch den Ausführungszeiger
160 bezeichneten Zielinstruktionsfolge kommen sollte. Durch Einschalten des Tores 192 werden
auch über ein Signal auf der Leitung 191 alle aktiven und Belegungstrigger für alle Instruktionspuffer abgeschaltet,
die die durch den Zielpufferzeiger 167 bezeichneten Zielinstruktionsfolge nicht enthalten.
Wenn die ursprüngliche Schätzung für eine bedingte Verzweigungsinstruktion erfolgreich oder erfolglos lautete
und aus den Ausführungsresultatsignalen festgestellt wird, daß diese Schätzung falsch war, dann wird
ein Signal entweder auf der Leitung 152 oder auf der Leitung 154 eingeschaltet. Dadurch wird mit einem Signal
auf der Leitung 196 die gesamte, in die Instruktionswarteschlange 42 der Fig.3A, übertragene Instruktions-Ausführungssteuerinformation
zurückgestellt, weil die nach der bedingten Verzweigungsinstruktion decodierten Instruktionen, gleichgültig ob sie nun
aus derselben Instruktionsfolge oder der Zielinstruktionsfolge stammen, jetzt nicht von der £-Funktion 23
ausgeführt werden. Basierend auf der falschen Schätzung bezeichnen der Decodierzeiger !58 und der Ausführungszeiger
160 jetzt die richtige Instruktionsfolge, von dem weitere Instruktionen decodiert und ausgeführt
werden können.
Wenn die ausgeführte bedingte Verzweigungsinstruktion erfolglos und somit die Schätzung richtig war,
schaltet ein Signal auf der Leitung 153 von der in F i g. 8 gezeigten Logikschaltung ein Tor 197 ein, wodurch der
Inhalt des Zielpufferzeigers 167, dargestellt in Signalen auf den Leitungen 193, 198 und 199 die aktiven und
Belegungstrigger für die Instruktionspuffer 31,32 oder 33, die zum Empfang der von der Zielinstruktionsfolge
abgerufenen Instruktionen aktiviert wurden, zurückstellt. Obwohl die Instruktionen aus der Zielinstruktionsfoige
in Vorwegnahme ihrer möglichen Benutzung voher abgerufen wurden, werden sie nicht benutzt, und
da die Verzweigung ursprünglich als erfolglos eingeschätzt wurde, wird die Stellung des Decodierzeigers
158 und des Ausführungszeigers 160 nicht geändert und sie werden in ihrem gegenwärtigen Zustand belassen.
Wenn die ausgeführte bedingte Verzweigungsinstruktion erfolgreich und das richtig geschätzt war,
schaltet ein Signal auf der Leitung 151 die Tore 200 und 201 ein und zeigt dadurch an, daß die nächste an die
f-Funktion 23 zur Ausführung zu übertragende Instruktion die Zielinstruktion ist, die durch die Adreßinformation
der bedingten Verzweigungsinstruktion bezeichnet ist. Die Ausführung sollte daher von dem durch den
Zielpufferzeiger 167 bezeichneten Instruktionspuffer fortgesetzt werden, und diese Information wird von der
Leitung 193 durch das Tor 200 auf die Leitung 202 übertragen, um den Ausführungszeiger 160 auf denselben
Wert zu stellen. Bevor der Ausführungszeiger 160 auf denselben Wert wie der Zielpufferzeiger 167 gestellt
wird, schaltet das Tor 201 durch ein Signal auf der Leitung 199 denjenigen aktiven und Belegungstrigger aus,
der zu dem Instruktionspuffer 31,32 oder 33 gehört, der die bedingte Verzweigungsinstruktion enthält. Da die
bedingte Ver2:weigungsinstruktion ursprünglich erfolgreich richtig eingeschätzt wurde, hat die frühere Einschaltung
der UND-Schaltung 184 und des Tores 187 den Decodierzeiger 158 auf den Wert des Zielinstruktionsfolge-Puffers
gestellt. Da die Schätzung richtig war, bleibt der Decodierzeiger 158 für die weitere Decodierung
von Instruktionen auf diesem Wert.
In Anbetracht dessen, daß drei Instruktionspuffer 31,
32 und 33 in der IPPF 20 vorgesehen wurden, kann eine bedingte Verzweigungsinstruktion, beispielsweise vom
Instruktionsstrom A, decodiert werden, den den Instruktionsstroen
B aufruft. Die nachträgliche Decodierung einer bedingten Verzweigungsinstruktion von der
Instruktionsfolge B kann zum Aufruf einer Zielinstruktionsfolge C führen. Alle Zeiger haben binäre Bits, so
daß man einen vierten Satz von Instruktionspuffern hinzufügen kann und dadurch die Möglichkeit hat, drei
bedingte Verzweigungsinstruktionen vorher zu decodieren. Die Logikschaltung der F i g. 9 ist so ausgelegt,
daß die Ausführungs- Resultatsignale bedingter Verzweigungsinstruktionen an die IPPF 20 zurückgegeben
werden und so die richtige Reihenfolge der Ausführungssteuerinformation für die E-Funktion 23 aufrechterhalten
wird.
Fig. 10 zeigt Zeitdiagramme für die Instruktionsabrufanforderungen
der IPPF 20 an die PSCF 21. Das Diagramm bei A zeigt die Zeiteinteilung für die Operationen,
wo bei 203 eine Anforderung erfolgt und die angeforderte Instruktion in einem Hochgeschwindigkeitspuffer
der PSCF steht, so daß die Daten auf der Sammelleitung 205 zur Verfügung stehen. Die abgerufene
Instruktion steht auf der Datensammelleitung 34 der F i g. 3A beim zweiten Zyklus nach dem Abruf zur Verfügung.
Der Wellenzug B zeigt die Zeitfolge für den Fall, daß die PSCF 21 eine Instruktion im zweiten Zyklus nach
der Anforderung nicht zurückgeben kann. Die PSCF gibt ein Signal 206 zurück, das einen verzögerten Abruf
anzeigt und anderthalb Zyklen nach der Abrufanforde-
rung auftritt. Dieses Signal ist einen Zyklus lang eingeschaltet
Wenn die PSCF 21 zur Rückgabe der Daten zu einem späteren Zeitpunkt bereit ist, erzeugt sie das Vorlaufsignal
207 und zeigt damit der IPPF 20 an, daß Daten zweieinhalb Zyklen später auf der Datensammelleitung
34 zur Verfügung stehen.
Der Wellenzug C tritt in Situationen auf, in denen die PSCF 21 den Abruf zurückweisen muß und ein Triggersignal 208 einschaltet, daß die Rückweisung der Abruf-
anforderung anzeigt. Die OPPF 20 muß dann die Operation nach dem verzögerten Abruf erneut einleiten. Die
Stellung eines Triggers »kein verzögerter Abruf« ist so, daß er ausgeschaltet, wie bei 209 dargestellt, anzeigt,
daß die Rückweisung erfolgte, weil ein anderer verzögerter Abruf gerade läuft. Wenn ein Vorlaufsignal bei
210 von der vorhergehenden verzögerten Anforderung empfangen wurde, wird der Trigger »kein verzögerter
Abruf« bei 210 eingeschaltet und der IPPF 20 damit ein Signal zur erneuten Einleitung des Instruktionsabrufes
bei 21 !gegeben.
F i g. 11 zeigt ein Zustandsdiagramm und eine Tabelle
mit den verschiedenen Einstellungen der vier Reihenfolgetrigger, die allgemein bei 212 dargestellt sind. Hierbei
handelt es sich um die I-Abruffolgetrigger 176,177 und
17S der F i g. 9, die zu den einzelnen Insiruktionspuffern
31,32 und 33 gehören. Diese Trigger geben den Zustand einer Instruktionsabrufanforderung für einen bestimmten
Instruktionspuffer an und zeigen an, wenn die Tore zu den Eingängen der Register zum Empfang von Instruktionen
aus der in F i g. 3A gezeigten Datensammelleitung 34 eingeschaltet werden sollten. Für einen Instruktionsabruf
werden die Zyklen C1 und C2 benötigt, wenn sich die Instruktion im Hochgeschwindigkeitspuffer
der PSCF 21 befindet. Der Zyklus Cl stellt die Zeit
dar, zu der die Datensammelleitung 34 abgefragt werden sollte. Die Zyklen D1 und D 2 werden im Zusammenhang
mit Zyklen angezogen, die nach der Rückgabe eines Vorlaufsignales von der PSCF 21 auftreten, wenn
ein verzögerter Instruktionsabruf erfolgte. Bei Bezugnähme auf die Zyklen D\ und D 2 als letzte Zyklen
handelt es sich um verzögerte Abrufanforderungszyklen, die erzeugt wurden, weil eine Instruktionsabrufanforderung
die Übertragung der Instruktionen vom Prozessorspeicher in den Hochgeschwindigkeitspuffer verlangte.
In diesen Fällen werden vier Doppelwörter oder ein Instruktionsblock an die IPPF 20 zurückgegeben.
Das in der Beschriftung aufgeführte Signal E ist die Anzeige von der PSCF 21 dafür, daß das letzte Doppelwort
eines Blockinstruktionsabrufes zurückgegeben wurde. In all den verschiedenen Folgen von Instruktionsabrufen,
verzögerten Abrufen, Rückweisungen usw. erreichen die Reihenfolgetrigger schließlich einen
Zustand, wo der M-Trigger auf binär 1 steht Wenn das der Fall ist und keine Rückweisung oder Verzögerung
vorliegt, steht das Doppelwort auf der Datensammelleitung 34 und sollte in den entsprechenden Instruktionspuffer eingeleitet werden.
Das Zeitdiagramm in Fig. 12 gehört zur Decodierung einer Instruktion im I-Register 35 der in F i g. 3A
gezeigten Schaltung und zur Übertragung der Ausführungssieucririiörmaiiön
an die instraktionswarteschlange
42, gefolgt von der Übertragung dieser Information in das Steuerspeicher-Adreßregister 125 der Fig.4 in
der E-Funktion 23. Die Instruktionswarteschlange 42 hat vier Registerpositionen, in die Information eingeleitet
wird, aufgrund der Stellung eines Eingabezeigers (INPTR), der der Reihe nach von einem Register zum
anderen vorschaltet Die Ausführungsinformation wird aus der Instruktionswarteschlange 42 in das Steuerspeicher-Adreßregister
125 aufgrund der Einstellung eines Ausgabezeigers (OUTPTR) ausgeleitet. Der Eingabezeiger
steht darstellungsgemäß bei 213 auf der Position n. Wenn die Instruktionsdecodierung und Adreßbildung
bei 214 abgeschlossen ist, wird die Ausführungssteuerinformation bei 215 in die Position π der Instruktionswarteschlange
42 übertragen und der Eingabezeiger auf den Wert π + 1 gesetzt Wenn die Instruktionsausführungs-Steuerinformation
in die Position η eingegeben wird, wird bei 216 ein Belegungstrigger eingeschaltet.
Bei 217 wird ein Trigger eingeschaltet, der anzeigt, daß die Instruktion bereitsteht. Wie bei 218 dargestellt ist,
wird der OP-Codeteil der Ausführungssteuerinformation im Register π konstant an den Eingang des Steuerspeicher-Adreßregisters
125 angelegt. Wenn das Signa! AND OP !26 in F i g. 4 bei 219 erzeugt wird, werden
die OP-Code-Bits auf der Leitung 128 und die Adreßbits 3 und 4 auf den Leitungen 129 und 130 in das
Steuerspeicher-Adreßregister 125 geleitet. Durch Setzen eines Triggers wird angezeigt, daß die OP-Code-Verzweigung
im Steuerspeicher 121 erfolgte. Wenn dieses Signal bei 220 abfällt, schaltet der Ausgabezeiger bei
221 um auf η + 1 und zeigt damit an, daß der Inhalt des nächsten Registers der !nstruktionswarteschlange 42 an
die E-Funktion 23 auszuleiten ist.
Wenn die Fig. 13A und 13B, gemäß Fig. 13, nebeneinandergelegt
werden, zeigen sie die zum Instruktionspuffer 31 und der Instruktionsfolge A gehörende Einleitung
und Ausleitung. Die Leitung 179, mit der Beschriftung »Folge A einleiten«, entspricht der Leitung 179 in
Fig.9, die aktiviert wird, wenn Instruktionsabrufe für den Instruktionspuffer 31 erfolgen. Zu jedem Instruktionspuffer
gehört ein 2 Bit großer Eingangszeiger, dessen Bitpositionen 27 und 28 entsprechende Einstellung
des zugehörigen Instruktions-Adreßregisters 78 initialisiert werden. Ihre, durch Signale auf den Leitungen 222
bzw. 223, wiedergegebene Einstellung schaltet bei Decodierung in einem Decodierer 224, beispielsweise die
UND-Schaltungen 225 bis 228 ein, wenn das Doppelwort der auf der Datensammelleitung 34 empfangenen
Instruktionsinformation in den ersten, den Instruktionspuffer bildenden, Registersatz einzugeben sind, d. h„ in
die Bitpositionen 0 bis 63 des in Fig.3A gezeigten Instruktionspuffers
A. Wenn die Instruktionsinformation gemäß den Eingangszeigerbits 27 und 28 in den Instruktionspuffer
31 geleitet und nach Maßgabe der Instruktionen mit unterschiedlicher Länge aus ihm ausgeleitet
wird, werden die vier Doppelwortregister des Instruktionspuffers 31 der Reihe nach gefüllt.
Die Decodierer 229,230 und 231 empfangen die binäre Stellung von vier, einen Ausgangszeiger für den entsprechenden
Instruktionspuffer bilden Triggern. Der Ausgangszeiger wird fortgeschrieben oder modifiziert,
entsprechend der Länge der Instruktionen, die an das in F i g. 3A gezeigte I-Register 35 übertragen werden. Die
Darstellung der Ausgangstore 36 in Fi g. 3A zeigt die
verschiedenen Bitkombinationen, die von einem bestimmten Instruktionspufferregister an das I-Register
35 übertragen werden sollten. Wenn z. B. eine 2 Byte große Instruktion von den Bits 0 bis 16 des ersten Registers
des Instruktionspuffers 31 übertragen wird, beginnt der OP-Code der nächsten zu übertragenden Instruktion
auf der Bitposition 16 desselben Register. Die Bitposition 0 des !-Registers 35, die das erste Bit des
OP-Codes einer Instruktion ist, kann daher von den Positionen 0, 16, 32 oder 48 eines jeden Registers eines
Instruktionspuffers geleitet werden.
Zu jedem Instruktionspuffer 31,32 und 33 gehört ein Satz von ODER-Schaltungen 232 bis 237, die durch eine
Reihe von vier UND-Schaltungen und weiter durch die Stellung des Instruktionsfolge-Ausgabezeigers eingeschaltet
werden und einen Eingang für das I-Register 35, Bitposition 0 oder 16, die beiden in Fig. 13B gezeigten
Bitpositionen des I-Registers 35, bilden. Die ODER-Schaltungen 238 und 239 bilden den letzten Eingang zu
den Positionen 0 oder 16 des I-Registers 35. Die letzte
25 26
Informationseingabe in das 1-Register 35 vom Instruktionspuffer 31, die die Instruktionsfolge A darstellt,
kommt von den UND-Schaltungen 240 und 241.
Wenn eine Instruktion im !-Register 35 fertig decodiert ist, wird ein Signal für die erfolgreiche Decodie-
rung zu dem in F i g. 12 gezeigten Zeitpunkt 215 auf der
Leitung 242 erzeugt. Die bei 243 gezeigte Kombination von UND-Schaltungen und ODER-Schaltungen zeigt
an, daß das I-Register35 keine Information enthält und
für dessen Bitpositionen 0 bis 15 muß angezeigt werden, daß die letzten beiden Bytes einer sechs Byte großen
SS-Instruktion, signalisiert auf der Leitung 244, nicht geleitet werden. Die letzten beiden Bytes einer SS-Instruktion verlangen die Eintragung in die Bitpositionen
!6 bis 31 des I-Registers 35. Die UND-Schaltungen 245
und 246 werden durch Signale auf den Leitungen 247 bzw. 248 eingeschaltet, die der Leitung 159 in der F i g. 9
entsprechen und anzeigen, daß die Decodierung für die Instruktionsfolge A erfolgen soll.
Wenn die Decodierung von Instruktionen nach Decodieren einer bedingten Verzweigungsinstruktion in der
Instruktionsfolge A fortgesetzt wird, ist diese entweder die Originalinstruktionsfolge oder die Zielinstruktionsfolge. Wenn das Ergebnis einer bedingten Verzweigung
darin besteht, daß die ursprüngliche Schätzung richtig war, was durch ein Signal auf den Leitungen 249 und 250
»keine falsche Schätzung« angezeigt wird, werden die UND-Schaltungen 245 und 246 eingeschaltet, um die
nächste Instruktion sofort in das Instruktionsregister 35 zu übertragen. Die UND-Schaltung 251 spricht auf entgegengesetzte Weise an, wenn die ursprüngliche Schätzung, entsprechend der in Fig.6 dargestellten Logik
falsch ist, was durch ein Signal auf der Leitung 252 angezeigt wird. Die Instruktionsfolge A wäre früher als Alternativfolge durch ein Signal auf der Leitung 253 be-
zeichnet und es wäre damit gesagt worden, daß die Instruktionsfolge A die nächste Instruktion in das Instruktionsregister 35 leiten soll und nicht die andere Instruktionsfolge, die ursprünglich als Instruktionsquelle angesehen wurde. »o
Wie schon gesagt wurde, bilden die ODER-Schaltungen 238 und 239 den letzten Eingang zum I-Register 35.
Außerdem ist ein Satz von UND-Schaltungen dargestellt, die zur Instruktionsfolge B und zur Instruktionsfolge C gehören und durch ein Signal auf einer Leitung
eingeschaltet werden, die in F i g. 9 bei 153 dargestellt ist. Dieses Signal besagt, daß diese Instruktionsfolge gegenwärtig decodiert wird.
Es wurde also die Möglichkeit gezeigt. Instruktionen
in einen aktivierten von drei Registersätzen zu übertragen, die Instruktionspuffer bilden. Die Instruktionsübertragung von den Instruktionspuffern in ein Instruktionsdecodierregister entsprechen den Forderungen der von
den verschiedenen Instruktionsfolgen kommenden bedingten Verzweigungsinstruktionen kann gesteuert
werden. Die Übertragungsreihenfolge der Instruktionen für die Ausführung an eine Ε-Funktion wird so
überwacht und gesteuert, daß mehr als eine bedingte Verzweigungsinstruktion vorher decodiert und dann die
Ausführung erwartet werden kann, während die richtige Ausführungsreihenfolge in der Ausführungseinheit eingehalten wird
Claims (7)
1. Einrichtung zur Durchführung von bedingten Verzweigungen mehrerer Befehlsfolgen in einer
elektronischen Datenverarbeitungsanlage mit einer Befehlsinterpretationseinheit (20), einer Befehlsaufführungseinheit
(23), mit mehreren Befehlspuffern, die zwischen einen Befehlsspeicher (22) und ein Befehlsregister
(35) geschaltet sind und von denen jeder von einer Pufferauswahlschaltung ausgewählte
Befehlspuffer mindestens einen Befehl einer unabhängigen Befehlsfolge vom Speicher empfangen und
speichern kann, sowie mit Torschaltungen (36) die zwischen die Befehlspuffer und ein Befehlsregister
(35) mit nachgeschalteten Befehlsdecodierern (37 bis 39) geschähet sind, mit einer Anzahl von Befehlswarieschlangen-Registern
(42), von denen jedes Ausführungssteuerinformation speichert, die von den Befehlsdecodieren
(37 bis 39) für jeden decodierten Befehl empfangen wird, mit Ausführungssteuerschaltungen
in der Befehlsausführungseinheit (23), die auf Ausführungssteuerinformation in einem Befehlswarteschlangenregister
(42) ansprechen und die durch den Befehl geforderte Funktion ausführen und Ergebnissignale
für bestimmte dieser Befehle liefern, und mit einer Befehlsfolgesteuerung, die die in den
Befehlspuffern gespeicherten Befehle so zur Befehlsausführung weiterleitet oder sperrt, daß die
durch einen jeweils aktuellen Programmablauf bestimmte Folge von Befehlen zur Ausführung gelangt,
dadurch gekennzeichnet, daß wenigstens drei Befehlspuffer (31 bis 33) vorgesehen
sind, und daß die Befehlsfolgesteuerung aus der Kombination folgender Vorrichtungen besteht:
— einer Verzweigungssteuerschaltung (162 bis 165,176 bis 178), die auf einen decodierten Verzweigungsbefehl
anspricht, der von einem ersten Befehlspuffer geliefert wird, um einen Zielbefehl
von einer Verzweigungszieladresse im Befehlsspeicher (22) zu einem anderen, noch
nicht belegten Befehlspuffer zu übertragen,
— einer Torsteuerschaltung (158) für die Torschaltungen
(36), welche den nächsten Befehl aus einem der Befehlspuffer über das Befehlsregister
in die Befehlsdecodierer übertragen nach Übertragung der Ausführungssteuerinformation des
Verzweigungsbefehls in eines der Befehlswarteschlangenregister,
— einer Zielpufferanzeigeschaltung (167), die auf die Verzweigungssteuerschaltung, die mit jedem
der Befehlswarteschlangenregister verbunden ist, anspricht, wenn die Ausführungssteuerinformation
eines Verzweigungsbefehls in eines der Befehlswarteschlangenregister gespeichert
wird, um den genannten anderen Befehlspuffer anzuzeigen und
— einer Befehlsauswahlschaltung (160), die auf die Ergebnissignale der Befehlsausführungseinheit,
den Verzweigungsbefehl und die Zielpufferanzeigeschaltung anspricht, um die nächste Ausführungssteuerinformation,
die zur Befehlsausführungseinheit übertragen werden soll, auszuwählen.
b5
2. Einrichtung nach Anspruch 1, dadurch gekennzeichnet, daß die Verzweigungssteuerschaltung aus
der Kombination folgender Vorrichtungen besteht:
— Belegtanzeigeschaltern (163—165) und Befehlsabruffolgesteuerungen
(176—178), die jedem der genannten Befehlspuffer zugeordnet sind,
— einem Nächste-Zielfolge-Zeiger (162), der auf die nächste Zielfolge zeigt und der auf alle Belegtanzeigeschalter
anspricht, um den genannten anderen, nicht belegten Befehlspuffer anzuzeigen
und
— einer Zielbefehizugriffsschaltung zur Erzeugung eines Verzweigungsausführungssignals,
das sowohl mit Verzweigungsbefehlen in den Befehlsdecodierern, als auch mit dem Nächste-Zielstrom-Zeiger
gekoppelt ist und auf diese anspricht, um die Belegtanzeigeschalter (163—165) einzustellen und die Befehlsabruffolgesteuerung
(176—178), die dem genannten anderen, noch nicht belegten Befehlspuffer zugeordnet
ist, zu starten und um die Anzeige des Nächste-Zielfolge-Zeigers (162) in einen Zielpufferzeiger
(167) der Zielpufferanzeigeschaliung zu übertragen, der mit dem Befehlswarteschlangenregister
(42) funktionell verbunden ist, welches die Ausführungssteuerinformation des Verzweigungsbefehls speichert.
3. Einrichtung nach Anspruch 2, dadurch gekennzeichnet, daß eine Schaltung (173—175) vorgesehen
ist, die feststellt, ob alle Belegtanzeigeschalter (163—165) eingeschaltet sind, die auf diesen Zustand
anspricht und die mit der für den Zielbefehizugriffsschaltung gekoppelt ist, um deren Betrieb zu sperren.
4. Einrichtung nach Anspruch 3, dadurch gekennzeichnet, daß die Ausführung eines Zielbefehls, der
abgerufen wurde, in Abhängigkeit von bestimmten Verzweigungsbefehlen beim Auftreten eines Ergebnissignals
von der Befehlsausführungseinheit wirksam wird, wobei die Befehlsauswahlschaltung aus
folgendem besteht:
— einer Verzweigungsergebnis-Logikschaltung (Fig. 7 und 8), die Schaltungen enthält, die auf
den Zustand des Ergebnissignals ansprechen und dann entweder ein Signal erzeugen, das eine
erfolgreiche Verzweigung anzeigt oder ein solches, das eine nicht erfolgreiche Verzweigung
angibt und
— einer Schaltung, die auf die genannten Signale für erfolgreiche oder nicht erfolgreiche Verzweigung
anspricht, um die nächste Ausführungssteuerinformation eines Befehls auszuwählen,
die zur Befehlsausführungseinheit entweder von dem genannten anderen Befehlspuffer
oder dem genannten ersten Befehlspuffer übertragen werden soll.
5. Einrichtung nach Anspruch 4, dadurch gekennzeichnet, daß die Torsteuerschaltung einen Decodierungszeiger
(158) für die Auswahl und Verbindung des genannten anderen Befehlspuffers zu den Befehlsdecodieren
aufweist und ferner die Befehlsauswahlschaltung einen Ausführungszeiger (160) enthält,
der anzeigt, welcher der Befehlspuffer Ursprung der Ausführungssteuerinformation war. die
zur Befehlsausführungseinheit übertragen wurde, daß ferner eine Schaltung vorgesehen ist, die auf das
Signal, das eine erfolgreiche Verzweigung anzeigt,
anspricht und dabei den Inhalt des Zielpufferzeigers (167) zum Decodierungszeiger (158) und dem Ausführungszeiger
(160) überträgt, um den genannten anderen Befehlspuffer anzuzeigen, und welche die
Belegtanzeigeschalter (163—165) und die Befehlsabruffolgesteuerungen
(176—178) aller anderen Befehlspuffer zurückstellt, und daß schließlich eine
Schaltung vorhanden ist, die auf das Signal anspricht,
das eine nicht erfolgreiche Verzweigung angib* und dabei d?n Zielpufferzeiger wirksam hält, um den Belegtanzeigeschalter
und die Befehlsabruffolgesteuerung des genannten anderen Befehlspuffers zurückzustellen.
6. Einrichtung nach Anspruch 3, dadurch gekennzeichnet, daß die Ausführung eines Zielbefehls, der
in Abhängigkeit von den Verzweigungsbefehlen abgerufen wurde, konditioniert und als erfolgreich betrachtet
wird, basierend auf einem bestimmten Zustand eines Ergebnissignals der Befehlsausführungseinheit und wobei die Befehlsdecodierer eine Schaltung
(F i g. 7 und 8) enthalten, die selektiv Decodiersignale erzeugt, einschließlich eines Signals, das eine
geschätzte erfolgreiche Verzweigung für solche Verzweigungsbefehle anzeigt, die normalerweise erfolgreich
sind, ferner eines Signals, das eine bekannte erfolgreiche Verzweigung für einen Verzweigungsbefehl
angibt, der stets erfolgreich ist, weiter eines Signals, das eine nicht erfolgreiche Verzweigung
für solche Verzweigungsbefehle anzeigt, die nicht erfolgreich sein können, und schließlich einer
codierten Verzweigungsstatusinformation, die jedem der Warteschlangenregister (42) zugeordnet ist,
das Ausführungssteuerinformation eines Verzweigungsbefehls enthält, um die Art des Verzweigungsbefehls und den besonderen Zustand des Ergebnissignals
zu identifizieren; daß ferner die Torsteuerschaltung einen Decodierungszeiger (158) Für die
Auswahl und Zusammenschaltung eines Befehlspuffers mit den Befehlsdecodieren enthält: daß ferner
die Verzweigungssteuerschaltung eine Schaltung enthält, die auf das Signal anspricht, welches das
Vorliegen keiner erfolgreichen Verzweigung anzeigt und dabei den Betrieb der Zielbefehlszugriffsschaltung
sperrt; daß ferner die Befehlsauswahlschaltung einen Ausführungszeiger (160) enthält, um
anzugeben, welcher der Befehlspuffer Ursprung der Ausführungssteuerinformationen war, die zur Befehlsausführungseinheit
übertragen wurde; daß ferner eine Schaltung vorgesehen ist, die auf das Verzweigungsausführungssignal,
das Signal, das eine geschätzte erfolgreiche Verzweigung angibt, und den Nächste-Zielfolge-Zeiger (162) anspricht und dabei
den Decodierungszeiger (158) einstellt, um einen anderen Befehlspuffer zu kennzeichnen; daß weiterhin
eine Verzweigungsresultatlogik (Fig. 7 und 8) auf die codierte Verzweigungsstatusinformation und
das Ergebnissignal der Befehlsausführungseinheit anspricht, um erste, zweite, dritte oder vierte Steuersignale
zu erzeugen, die jeweils angeben: »Verzweigung nicht erfolgreich / falscher Schätzwert«. »Verzweigung
nicht erfolgreich / richtiger Schätzwert«, »Verzweigung erfolgreich / falscher Schätzwert«
und »Verzweigung erfolgreich / richtiger Schätzwert«; daß ferner eine Schaltung vorgesehen ist, die
auf da:i genannte erste Steuersignal anspricht und damit alle Befehlswarteschlangenregister (42), die
Belegtiinzeigeschalter (163—165) und die Befehlsabruffolgesteuerungen
(176—173) all derjenigen Befehlspuffer, die nicht von dem Ausführungszeiger
(160) angezeigt wurden, zurückstellt und den Inhalt des Ausführungszeigers (160) zu dem Decodierungszeiger
(158) überträgt; daß ferner eine Schaltung auf das genannte zweite Steuersignal anspricht und dabei
den Belegtanzeigeschalter und die Befehlsabioiffolgesteuerung,
die von dem Zielpufferzeiger (167) angezeigt sind, zurückstellt; daß weiterhin eine
ίο Schaltung, die auf das genannte dritte Steuersignal
anspricht, alle Befehlswarteschlangenregister, die Belegtanzeigeschalter und die Befehlsabruffoigesteuerung
aller Befehlspuffer, die nicht von dem Zielpufferzeiger (167) angezeigt wurden, zurücksteilt
und die Anzeige in dem Zielpufferzeiger zum Decodierungszeiger (158) und zum Ausführungszeiger
(160) überträgt; und daß schließlich eine weitere Schaltung vorgesehen ist, die auf das genannte vierte
Steuersignal anspricht und dabei den Belegtanzeigeschalter und die Befehlsabruffolgesteuerung für
denjenigen Befehlspuffer zurückstellt, der von dem Ausführungszeiger (160) angezeigt wurde und die
Anzeige in dem Zielpufferzeiger (167) zu dem Ausführungszeiger (160) überträgt
7. Einrichtung nach Anspruch 6, dadurch gekennzeichnet, daß die Befehlsauswahlschaltung eine
Schaltung enthält, die auf Decodierungssignale, die bekannte erfolgreiche Verzweigungen anzeigen, anspricht
und dabei den Belegtanzeigeschalter und die Befehlsabruffolgesteuerung des durch den Decodierungszeiger
(158) angezeigten Befehlspuffers zurückstellt.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US05/866,686 US4200927A (en) | 1978-01-03 | 1978-01-03 | Multi-instruction stream branch processing mechanism |
Publications (2)
Publication Number | Publication Date |
---|---|
DE2855106A1 DE2855106A1 (de) | 1979-07-05 |
DE2855106C2 true DE2855106C2 (de) | 1985-05-23 |
Family
ID=25348169
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE2855106A Expired DE2855106C2 (de) | 1978-01-03 | 1978-12-20 | Einrichtung zur Durchführung von bedingten Verzweigungen |
Country Status (8)
Country | Link |
---|---|
US (1) | US4200927A (de) |
JP (1) | JPS5495139A (de) |
AU (1) | AU519335B2 (de) |
CA (1) | CA1103369A (de) |
DE (1) | DE2855106C2 (de) |
FR (1) | FR2413716B1 (de) |
GB (1) | GB2011673B (de) |
IT (1) | IT1160347B (de) |
Families Citing this family (162)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4616331A (en) * | 1980-02-25 | 1986-10-07 | Tsuneo Kinoshita | Information processing system consisting of an arithmetic control unit formed into a one-chip typed by application of a highly-integrated semiconductor device |
JPS5927935B2 (ja) * | 1980-02-29 | 1984-07-09 | 株式会社日立製作所 | 情報処理装置 |
JPS56149646A (en) * | 1980-04-21 | 1981-11-19 | Toshiba Corp | Operation controller |
USRE32493E (en) * | 1980-05-19 | 1987-09-01 | Hitachi, Ltd. | Data processing unit with pipelined operands |
CA1174370A (en) * | 1980-05-19 | 1984-09-11 | Hidekazu Matsumoto | Data processing unit with pipelined operands |
US4373180A (en) * | 1980-07-09 | 1983-02-08 | Sperry Corporation | Microprogrammed control system capable of pipelining even when executing a conditional branch instruction |
JPS5742099A (en) * | 1980-08-27 | 1982-03-09 | Sharp Kk | Voice informing device |
US4437149A (en) | 1980-11-17 | 1984-03-13 | International Business Machines Corporation | Cache memory architecture with decoding |
US4574349A (en) * | 1981-03-30 | 1986-03-04 | International Business Machines Corp. | Apparatus for addressing a larger number of instruction addressable central processor registers than can be identified by a program instruction |
US4441153A (en) * | 1981-04-03 | 1984-04-03 | International Business Machines Corp. | Instruction register content modification using plural input gates and a data flow register |
US4532586A (en) * | 1981-05-22 | 1985-07-30 | Data General Corporation | Digital data processing system with tripartite description-based addressing multi-level microcode control, and multi-level stacks |
US4439828A (en) * | 1981-07-27 | 1984-03-27 | International Business Machines Corp. | Instruction substitution mechanism in an instruction handling unit of a data processing system |
JPS5848146A (ja) * | 1981-09-18 | 1983-03-22 | Toshiba Corp | 命令先取り方式 |
US4532589A (en) * | 1981-12-02 | 1985-07-30 | Hitachi, Ltd. | Digital data processor with two operation units |
US4439827A (en) * | 1981-12-28 | 1984-03-27 | Raytheon Company | Dual fetch microsequencer |
US4477872A (en) * | 1982-01-15 | 1984-10-16 | International Business Machines Corporation | Decode history table for conditional branch instructions |
JPS59501426A (ja) * | 1982-08-23 | 1984-08-09 | ウエスタ−ン エレクトリツク カムパニ−,インコ−ポレ−テツド | 次段アドレスの計算を前もつて実行する機構 |
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 |
JPS5998312A (ja) * | 1982-11-29 | 1984-06-06 | Sankyo Seiki Mfg Co Ltd | 読み取りエラ−検出方式 |
WO1985000453A1 (en) * | 1983-07-11 | 1985-01-31 | Prime Computer, Inc. | Data processing system |
US4578750A (en) * | 1983-08-24 | 1986-03-25 | Amdahl Corporation | Code determination using half-adder based operand comparator |
JPS6079431A (ja) * | 1983-10-06 | 1985-05-07 | Hitachi Ltd | プログラマブルコントローラのパイプライン処理方法 |
US4791555A (en) * | 1983-10-24 | 1988-12-13 | International Business Machines Corporation | Vector processing unit |
JPS6095734A (ja) * | 1983-10-28 | 1985-05-29 | Matsushita Electric Ind Co Ltd | 情報読出装置 |
EP0163740B1 (de) * | 1983-11-11 | 1989-05-10 | Fujitsu Limited | Anordnung zur Steuerung von Fliessbandverarbeitung |
US4764861A (en) * | 1984-02-08 | 1988-08-16 | Nec Corporation | Instruction fpefetching device with prediction of a branch destination for each branch count instruction |
JPS60202501A (ja) * | 1984-03-27 | 1985-10-14 | Comput Services Corp | 磁気カ−ドのデ−タ記録状態測定方法 |
US4742451A (en) * | 1984-05-21 | 1988-05-03 | Digital Equipment Corporation | Instruction prefetch system for conditional branch instruction for central processor unit |
JPS60258770A (ja) * | 1984-06-04 | 1985-12-20 | Toppan Printing Co Ltd | 磁気カ−ドのデ−タ記録状態測定方法 |
JPS60258767A (ja) * | 1984-06-04 | 1985-12-20 | Toppan Printing Co Ltd | 磁気カ−ドのデ−タ記録状態測定方法 |
JPS61105958U (de) * | 1984-12-13 | 1986-07-05 | ||
US4633333A (en) * | 1985-06-24 | 1986-12-30 | International Business Machines Corporation | Detection of instantaneous speed variations in a tape drive |
JPS6225302A (ja) * | 1985-07-25 | 1987-02-03 | Fanuc Ltd | 数値制御装置 |
US4791557A (en) * | 1985-07-31 | 1988-12-13 | Wang Laboratories, Inc. | Apparatus and method for monitoring and controlling the prefetching of instructions by an information processing system |
JPS6341932A (ja) * | 1985-08-22 | 1988-02-23 | Nec Corp | 分岐命令処理装置 |
DE3752100T2 (de) * | 1986-01-07 | 1997-12-11 | Nec Corp | Befehlsvorabrufgerät mit einer Schaltung zum Prüfen der Vorhersage eines Verzweigungsbefehls vor seiner Ausführung |
US4755935A (en) * | 1986-01-27 | 1988-07-05 | Schlumberger Technology Corporation | Prefetch memory system having next-instruction buffer which stores target tracks of jumps prior to CPU access of instruction |
CA1285657C (en) * | 1986-01-29 | 1991-07-02 | Douglas W. Clark | Apparatus and method for execution of branch instructions |
DE3785897T2 (de) * | 1986-02-28 | 1993-09-30 | Nec Corp | Steuervorrichtung zum vorabruf von befehlen. |
JPH06100968B2 (ja) * | 1986-03-25 | 1994-12-12 | 日本電気株式会社 | 情報処理装置 |
GB2188759B (en) * | 1986-04-05 | 1990-09-05 | Burr Brown Ltd | Data processing with op code early comparison |
JPS6393038A (ja) * | 1986-10-07 | 1988-04-23 | Mitsubishi Electric Corp | 計算機 |
US4967351A (en) * | 1986-10-17 | 1990-10-30 | Amdahl Corporation | Central processor architecture implementing deterministic early condition code analysis using digit based, subterm computation and selective subterm combination |
US4888689A (en) * | 1986-10-17 | 1989-12-19 | Amdahl Corporation | Apparatus and method for improving cache access throughput in pipelined processors |
JPH0772863B2 (ja) * | 1986-10-30 | 1995-08-02 | 日本電気株式会社 | プログラムカウンタ相対アドレス計算方式 |
JP2603626B2 (ja) * | 1987-01-16 | 1997-04-23 | 三菱電機株式会社 | データ処理装置 |
US5235686A (en) * | 1987-02-24 | 1993-08-10 | Texas Instruments Incorporated | Computer system having mixed macrocode and microcode |
EP0279953B1 (de) * | 1987-02-24 | 1994-11-02 | Texas Instruments Incorporated | Computersystem mit Durchführung von vermischten Makro- und Mikrocodebefehlen |
US4991090A (en) * | 1987-05-18 | 1991-02-05 | International Business Machines Corporation | Posting out-of-sequence fetches |
JPS63317828A (ja) * | 1987-06-19 | 1988-12-26 | Fujitsu Ltd | マイクロコ−ド読み出し制御方式 |
US5134561A (en) * | 1987-07-20 | 1992-07-28 | International Business Machines Corporation | Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries |
US4860197A (en) * | 1987-07-31 | 1989-08-22 | Prime Computer, Inc. | Branch cache system with instruction boundary determination independent of parcel boundary |
US4942520A (en) * | 1987-07-31 | 1990-07-17 | Prime Computer, Inc. | Method and apparatus for indexing, accessing and updating a memory |
US4894772A (en) * | 1987-07-31 | 1990-01-16 | Prime Computer, Inc. | Method and apparatus for qualifying branch cache entries |
US4991078A (en) * | 1987-09-29 | 1991-02-05 | Digital Equipment Corporation | Apparatus and method for a pipelined central processing unit in a data processing system |
JPH0646382B2 (ja) * | 1987-10-05 | 1994-06-15 | 日本電気株式会社 | プリフェッチキュー制御方式 |
US4933847A (en) * | 1987-11-17 | 1990-06-12 | International Business Machines Corporation | Microcode branch based upon operand length and alignment |
US5247628A (en) * | 1987-11-30 | 1993-09-21 | International Business Machines Corporation | Parallel processor instruction dispatch apparatus with interrupt handler |
US4943908A (en) * | 1987-12-02 | 1990-07-24 | International Business Machines Corporation | Multiple branch analyzer for prefetching cache lines |
GB8728493D0 (en) * | 1987-12-05 | 1988-01-13 | Int Computers Ltd | Jump prediction |
US4914579A (en) * | 1988-02-17 | 1990-04-03 | International Business Machines Corporation | Apparatus for branch prediction for computer instructions |
US5522053A (en) * | 1988-02-23 | 1996-05-28 | Mitsubishi Denki Kabushiki Kaisha | Branch target and next instruction address calculation in a pipeline processor |
US5136696A (en) * | 1988-06-27 | 1992-08-04 | Prime Computer, Inc. | High-performance pipelined central processor for predicting the occurrence of executing single-cycle instructions and multicycle instructions |
GB8817912D0 (en) * | 1988-07-27 | 1988-09-01 | Int Computers Ltd | Data processing apparatus |
US5101341A (en) * | 1988-08-25 | 1992-03-31 | Edgcore Technology, Inc. | Pipelined system for reducing instruction access time by accumulating predecoded instruction bits a FIFO |
JPH0774994B2 (ja) * | 1988-09-21 | 1995-08-09 | 株式会社日立製作所 | バッファ記憶制御装置のosc検出方式 |
US5050068A (en) * | 1988-10-03 | 1991-09-17 | Duke University | Method and apparatus for using extracted program flow information to prepare for execution multiple instruction streams |
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 |
US5034880A (en) * | 1988-12-22 | 1991-07-23 | Wang Laboratories, Inc. | Apparatus and method for executing a conditional branch instruction |
KR920006770B1 (ko) * | 1988-12-27 | 1992-08-17 | 후지쓰 가부시끼가이샤 | 명령을 페치(fetch)하기 위한 제어 시스템 |
US5142634A (en) * | 1989-02-03 | 1992-08-25 | Digital Equipment Corporation | Branch prediction |
JPH02306341A (ja) * | 1989-02-03 | 1990-12-19 | Nec Corp | マイクロプロセッサ |
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 |
US5136697A (en) * | 1989-06-06 | 1992-08-04 | Advanced Micro Devices, Inc. | System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache |
EP0404068A3 (de) * | 1989-06-20 | 1991-12-27 | Fujitsu Limited | Vorrichtung zur Ausführung eines Verzweigungsbefehls |
US5150468A (en) * | 1989-06-30 | 1992-09-22 | Bull Hn Information Systems Inc. | State controlled instruction logic management apparatus included in a pipelined processing unit |
US5440749A (en) * | 1989-08-03 | 1995-08-08 | Nanotronics Corporation | High performance, low cost microprocessor architecture |
JPH03139726A (ja) * | 1989-10-26 | 1991-06-13 | Hitachi Ltd | 命令読出し制御方式 |
US5471593A (en) * | 1989-12-11 | 1995-11-28 | Branigin; Michael H. | Computer processor with an efficient means of executing many instructions simultaneously |
DE69030648T2 (de) * | 1990-01-02 | 1997-11-13 | Motorola Inc | Verfahren zum sequentiellen Vorabruf von 1-Wort-, 2-Wort oder 3-Wort-Befehlen |
US5185868A (en) * | 1990-01-16 | 1993-02-09 | Advanced Micro Devices, Inc. | Apparatus having hierarchically arranged decoders concurrently decoding instructions and shifting instructions not ready for execution to vacant decoders higher in the hierarchy |
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 |
US5303377A (en) * | 1990-03-27 | 1994-04-12 | North American Philips Corporation | Method for compiling computer instructions for increasing instruction cache efficiency |
US5163139A (en) * | 1990-08-29 | 1992-11-10 | Hitachi America, Ltd. | Instruction preprocessor for conditionally combining short memory instructions into virtual long instructions |
EP0547240B1 (de) * | 1991-07-08 | 2000-01-12 | Seiko Epson Corporation | Risc-mikroprozessorarchitektur mit schnellem unterbrechungs- und ausnahmemodus |
US5539911A (en) * | 1991-07-08 | 1996-07-23 | Seiko Epson Corporation | High-performance, superscalar-based computer system with out-of-order instruction execution |
ATE291755T1 (de) | 1991-07-08 | 2005-04-15 | Seiko Epson Corp | Risc-prozessor mit erweiterbarer architektur |
US5493687A (en) | 1991-07-08 | 1996-02-20 | Seiko Epson Corporation | RISC microprocessor architecture implementing multiple typed register sets |
US5961629A (en) * | 1991-07-08 | 1999-10-05 | Seiko Epson Corporation | High performance, superscalar-based computer system with out-of-order instruction execution |
US5323489A (en) * | 1991-11-14 | 1994-06-21 | Bird Peter L | Method and apparatus employing lookahead to reduce memory bank contention for decoupled operand references |
US5438668A (en) | 1992-03-31 | 1995-08-01 | Seiko Epson Corporation | System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer |
JP3730252B2 (ja) * | 1992-03-31 | 2005-12-21 | トランスメタ コーポレイション | レジスタ名称変更方法及び名称変更システム |
WO1993022722A1 (en) | 1992-05-01 | 1993-11-11 | Seiko Epson Corporation | A system and method for retiring instructions in a superscalar microprocessor |
JP3644959B2 (ja) * | 1992-09-29 | 2005-05-11 | セイコーエプソン株式会社 | マイクロプロセッサシステム |
US6735685B1 (en) | 1992-09-29 | 2004-05-11 | Seiko Epson Corporation | System and method for handling load and/or store operations in a superscalar microprocessor |
US5784604A (en) * | 1992-10-09 | 1998-07-21 | International Business Machines Corporation | Method and system for reduced run-time delay during conditional branch execution in pipelined processor systems utilizing selectively delayed sequential instruction purging |
US5581719A (en) * | 1992-11-12 | 1996-12-03 | Digital Equipment Corporation | Multiple block line prediction |
US5628021A (en) * | 1992-12-31 | 1997-05-06 | Seiko Epson Corporation | System and method for assigning tags to control instruction processing in a superscalar processor |
EP1107111A3 (de) | 1992-12-31 | 2002-02-06 | Seiko Epson Corporation | System und Verfahren zur Änderung der Namen von Registern |
JP2596712B2 (ja) * | 1993-07-01 | 1997-04-02 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 近接した分岐命令を含む命令の実行を管理するシステム及び方法 |
US5748976A (en) * | 1993-10-18 | 1998-05-05 | Amdahl Corporation | Mechanism for maintaining data coherency in a branch history instruction cache |
JP2801135B2 (ja) * | 1993-11-26 | 1998-09-21 | 富士通株式会社 | パイプラインプロセッサの命令読み出し方法及び命令読み出し装置 |
US6079014A (en) * | 1993-12-02 | 2000-06-20 | Intel Corporation | Processor that redirects an instruction fetch pipeline immediately upon detection of a mispredicted branch while committing prior instructions to an architectural state |
US5590351A (en) * | 1994-01-21 | 1996-12-31 | Advanced Micro Devices, Inc. | Superscalar execution unit for sequential instruction pointer updates and segment limit checks |
TW234175B (en) * | 1994-02-08 | 1994-11-11 | Meridian Semiconductor Inc | Randomly-accessible instruction buffer for microprocessor |
GB9412487D0 (en) * | 1994-06-22 | 1994-08-10 | Inmos Ltd | A computer system for executing branch instructions |
US5734881A (en) * | 1995-12-15 | 1998-03-31 | Cyrix Corporation | Detecting short branches in a prefetch buffer using target location information in a branch target cache |
US6309482B1 (en) | 1996-01-31 | 2001-10-30 | Jonathan Dorricott | Steckel mill/on-line controlled cooling combination |
US5794024A (en) * | 1996-03-25 | 1998-08-11 | International Business Machines Corporation | Method and system for dynamically recovering a register-address-table upon occurrence of an interrupt or branch misprediction |
US5809566A (en) * | 1996-08-14 | 1998-09-15 | International Business Machines Corporation | Automatic cache prefetch timing with dynamic trigger migration |
US5805877A (en) * | 1996-09-23 | 1998-09-08 | Motorola, Inc. | Data processor with branch target address cache and method of operation |
US5796998A (en) * | 1996-11-21 | 1998-08-18 | International Business Machines Corporation | Apparatus and method for performing branch target address calculation and branch prediciton in parallel in an information handling system |
JPH1124929A (ja) * | 1997-06-30 | 1999-01-29 | Sony Corp | 演算処理装置およびその方法 |
US6157998A (en) | 1998-04-03 | 2000-12-05 | Motorola Inc. | Method for performing branch prediction and resolution of two or more branch instructions within two or more branch prediction buffers |
US6389449B1 (en) | 1998-12-16 | 2002-05-14 | Clearwater Networks, Inc. | Interstream control and communications for multi-streaming digital processors |
US7529907B2 (en) | 1998-12-16 | 2009-05-05 | Mips Technologies, Inc. | Method and apparatus for improved computer load and store operations |
US7237093B1 (en) | 1998-12-16 | 2007-06-26 | Mips Technologies, Inc. | Instruction fetching system in a multithreaded processor utilizing cache miss predictions to fetch instructions from multiple hardware streams |
US7035997B1 (en) | 1998-12-16 | 2006-04-25 | Mips Technologies, Inc. | Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors |
US7257814B1 (en) | 1998-12-16 | 2007-08-14 | Mips Technologies, Inc. | Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors |
US7020879B1 (en) | 1998-12-16 | 2006-03-28 | Mips Technologies, Inc. | Interrupt and exception handling for multi-streaming digital processors |
US7165257B2 (en) * | 2000-02-08 | 2007-01-16 | Mips Technologies, Inc. | Context selection and activation mechanism for activating one of a group of inactive contexts in a processor core for servicing interrupts |
US7139901B2 (en) * | 2000-02-08 | 2006-11-21 | Mips Technologies, Inc. | Extended instruction set for packet processing applications |
US7065096B2 (en) * | 2000-06-23 | 2006-06-20 | Mips Technologies, Inc. | Method for allocating memory space for limited packet head and/or tail growth |
US7076630B2 (en) * | 2000-02-08 | 2006-07-11 | Mips Tech Inc | Method and apparatus for allocating and de-allocating consecutive blocks of memory in background memo management |
US7058064B2 (en) * | 2000-02-08 | 2006-06-06 | Mips Technologies, Inc. | Queueing system for processors in packet routing operations |
US7082552B2 (en) * | 2000-02-08 | 2006-07-25 | Mips Tech Inc | Functional validation of a packet management unit |
US7058065B2 (en) | 2000-02-08 | 2006-06-06 | Mips Tech Inc | Method and apparatus for preventing undesirable packet download with pending read/write operations in data packet processing |
US7649901B2 (en) * | 2000-02-08 | 2010-01-19 | Mips Technologies, Inc. | Method and apparatus for optimizing selection of available contexts for packet processing in multi-stream packet processing |
US7032226B1 (en) | 2000-06-30 | 2006-04-18 | Mips Technologies, Inc. | Methods and apparatus for managing a buffer of events in the background |
US7042887B2 (en) | 2000-02-08 | 2006-05-09 | Mips Technologies, Inc. | Method and apparatus for non-speculative pre-fetch operation in data packet processing |
US7155516B2 (en) * | 2000-02-08 | 2006-12-26 | Mips Technologies, Inc. | Method and apparatus for overflowing data packets to a software-controlled memory when they do not fit into a hardware-controlled memory |
US7502876B1 (en) | 2000-06-23 | 2009-03-10 | Mips Technologies, Inc. | Background memory manager that determines if data structures fits in memory with memory state transactions map |
WO2001097055A1 (en) * | 2000-06-13 | 2001-12-20 | Nobel Ltd Liability Company | Synergic computation system |
EP1311947B1 (de) | 2000-07-14 | 2011-01-19 | MIPS Technologies, Inc. | Anweisungsabruf und -absendung in einem multi-thread-system |
AUPQ950400A0 (en) * | 2000-08-17 | 2000-09-07 | Peruch, Stephen Sebastian | Computer implemented system and method of transforming a source file into transformed file using a set of trigger instructions |
US7069420B1 (en) * | 2000-09-28 | 2006-06-27 | Intel Corporation | Decode and dispatch of multi-issue and multiple width instructions |
US7707397B2 (en) * | 2001-05-04 | 2010-04-27 | Via Technologies, Inc. | Variable group associativity branch target address cache delivering multiple target addresses per cache line |
US6886093B2 (en) * | 2001-05-04 | 2005-04-26 | Ip-First, Llc | Speculative hybrid branch direction predictor |
US20020194461A1 (en) * | 2001-05-04 | 2002-12-19 | Ip First Llc | Speculative branch target address cache |
US7200740B2 (en) * | 2001-05-04 | 2007-04-03 | Ip-First, Llc | Apparatus and method for speculatively performing a return instruction in a microprocessor |
US7134005B2 (en) * | 2001-05-04 | 2006-11-07 | Ip-First, Llc | Microprocessor that detects erroneous speculative prediction of branch instruction opcode byte |
US7165168B2 (en) * | 2003-01-14 | 2007-01-16 | Ip-First, Llc | Microprocessor with branch target address cache update queue |
US6895498B2 (en) * | 2001-05-04 | 2005-05-17 | Ip-First, Llc | Apparatus and method for target address replacement in speculative branch target address cache |
US7165169B2 (en) * | 2001-05-04 | 2007-01-16 | Ip-First, Llc | Speculative branch target address cache with selective override by secondary predictor based on branch instruction type |
US7162619B2 (en) * | 2001-07-03 | 2007-01-09 | Ip-First, Llc | Apparatus and method for densely packing a branch instruction predicted by a branch target address cache and associated target instructions into a byte-wide instruction buffer |
US6823444B1 (en) * | 2001-07-03 | 2004-11-23 | Ip-First, Llc | Apparatus and method for selectively accessing disparate instruction buffer stages based on branch target address cache hit and instruction stage wrap |
US7203824B2 (en) * | 2001-07-03 | 2007-04-10 | Ip-First, Llc | Apparatus and method for handling BTAC branches that wrap across instruction cache lines |
US7234045B2 (en) * | 2001-07-03 | 2007-06-19 | Ip-First, Llc | Apparatus and method for handling BTAC branches that wrap across instruction cache lines |
US7003649B2 (en) * | 2002-03-08 | 2006-02-21 | Hitachi, Ltd. | Control forwarding in a pipeline digital processor |
US7159097B2 (en) * | 2002-04-26 | 2007-01-02 | Ip-First, Llc | Apparatus and method for buffering instructions and late-generated related information using history of previous load/shifts |
JP3845043B2 (ja) * | 2002-06-28 | 2006-11-15 | 富士通株式会社 | 命令フェッチ制御装置 |
US9207958B1 (en) * | 2002-08-12 | 2015-12-08 | Arm Finance Overseas Limited | Virtual machine coprocessor for accelerating software execution |
US7185186B2 (en) | 2003-01-14 | 2007-02-27 | Ip-First, Llc | Apparatus and method for resolving deadlock fetch conditions involving branch target address cache |
US7143269B2 (en) * | 2003-01-14 | 2006-11-28 | Ip-First, Llc | Apparatus and method for killing an instruction after loading the instruction into an instruction queue in a pipelined microprocessor |
US7152154B2 (en) * | 2003-01-16 | 2006-12-19 | Ip-First, Llc. | Apparatus and method for invalidation of redundant branch target address cache entries |
US7178010B2 (en) * | 2003-01-16 | 2007-02-13 | Ip-First, Llc | Method and apparatus for correcting an internal call/return stack in a microprocessor that detects from multiple pipeline stages incorrect speculative update of the call/return stack |
US7917734B2 (en) | 2003-06-30 | 2011-03-29 | Intel Corporation | Determining length of instruction with multiple byte escape code based on information from other than opcode byte |
US7237098B2 (en) * | 2003-09-08 | 2007-06-26 | Ip-First, Llc | Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence |
KR101574603B1 (ko) | 2008-10-31 | 2015-12-04 | 삼성전자주식회사 | 컨디셔널 프로세싱 방법 및 장치 |
CN104156196B (zh) * | 2014-06-12 | 2017-10-27 | 龚伟峰 | 重命名预处理方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR1536616A (fr) * | 1966-09-21 | Ibm | Système de traitement d'instructions avec des perfectionnements pour le branchementet les boucles du programme | |
US3551895A (en) * | 1968-01-15 | 1970-12-29 | Ibm | Look-ahead branch detection system |
US3699526A (en) * | 1971-03-26 | 1972-10-17 | Ibm | Program selection based upon intrinsic characteristics of an instruction stream |
US3771138A (en) * | 1971-08-31 | 1973-11-06 | Ibm | Apparatus and method for serializing instructions from two independent instruction streams |
US3728692A (en) * | 1971-08-31 | 1973-04-17 | Ibm | Instruction selection in a two-program counter instruction unit |
JPS549456B2 (de) * | 1972-07-05 | 1979-04-24 | ||
JPS49121449A (de) * | 1973-03-19 | 1974-11-20 | ||
JPS5326954B2 (de) * | 1973-03-30 | 1978-08-04 | ||
JPS5039437A (de) * | 1973-08-10 | 1975-04-11 |
-
1978
- 1978-01-03 US US05/866,686 patent/US4200927A/en not_active Expired - Lifetime
- 1978-10-27 CA CA314,524A patent/CA1103369A/en not_active Expired
- 1978-12-11 GB GB7847969A patent/GB2011673B/en not_active Expired
- 1978-12-12 JP JP15276278A patent/JPS5495139A/ja active Granted
- 1978-12-15 IT IT30875/78A patent/IT1160347B/it active
- 1978-12-20 FR FR7836587A patent/FR2413716B1/fr not_active Expired
- 1978-12-20 DE DE2855106A patent/DE2855106C2/de not_active Expired
-
1979
- 1979-01-02 AU AU43063/79A patent/AU519335B2/en not_active Ceased
Also Published As
Publication number | Publication date |
---|---|
GB2011673B (en) | 1982-02-24 |
IT1160347B (it) | 1987-03-11 |
IT7830875A0 (it) | 1978-12-15 |
FR2413716A1 (fr) | 1979-07-27 |
FR2413716B1 (fr) | 1986-02-21 |
DE2855106A1 (de) | 1979-07-05 |
AU4306379A (en) | 1979-07-12 |
CA1103369A (en) | 1981-06-16 |
AU519335B2 (en) | 1981-11-26 |
US4200927A (en) | 1980-04-29 |
JPS5495139A (en) | 1979-07-27 |
JPS5715421B2 (de) | 1982-03-30 |
GB2011673A (en) | 1979-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE2855106C2 (de) | Einrichtung zur Durchführung von bedingten Verzweigungen | |
DE69433621T2 (de) | Geraet zur verarbeitung von befehlen in einem rechnersystem | |
DE1524103C3 (de) | Datenverarbeitungsgerät | |
DE69433339T2 (de) | Lade-/Speicherfunktionseinheiten und Datencachespeicher für Mikroprozessoren | |
DE60010907T2 (de) | Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter | |
DE69631778T2 (de) | Flexible implementierung eines systemverwaltungsmodus in einem prozessor | |
DE3716229C2 (de) | Mikroprozessorchip mit einem Stapelrahmen-Cache | |
DE2224537C2 (de) | Einrichtung und Verfahren zur Instruktionsauswahl in einem Fließbandprozessor | |
DE69929936T2 (de) | Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem | |
DE3424962C2 (de) | ||
DE4206062C2 (de) | Pipelineverarbeitung von Instruktionen | |
DE2846495C2 (de) | Zentraleinheit | |
DE69814268T2 (de) | Verfahren zur Anbindung eines Prozessors an einen Koprozessor | |
DE2903349C2 (de) | Prozessor und Verfahren zur Datenverarbeitung | |
DE69636416T2 (de) | Mikroprozessor ausgelegt zum erkennen eines unterprogramm-aufrufs einer dsp-routine und zum ansteuern eines dsp, diese routine auszuführen | |
DE1449531C3 (de) | Prozessor, vorzugsweise für ein modul ares Mehrprozessorsystem | |
DE2317870C2 (de) | Schaltungsanordnung zur Steuerung der Datenübertragung zwischen dem Hauptspeicher und mindestens einem E/A-Gerät in einer digitalen Datenverarbeitungsanlage | |
DE69133571T2 (de) | Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen | |
DE2837872A1 (de) | Digitalrechner mit ueberlappender betriebsweise unter verwendung einer bedingten steuerung zur minimierung von zeitverlusten | |
DE2630323B2 (de) | Datenspeichereinrichtung mit einem Hauptspeicher, einem Hilfsspeicher und einer Vorausschaulogik | |
DE2847934A1 (de) | Datenverarbeitungseinrichtung mit einem mikrobefehlsspeicher | |
DE2612139A1 (de) | Ein/ausgang-steuerungssystem | |
DE1285220B (de) | Datenverarbeitungssystem mit mehreren selbstaendigen Recheneinheiten | |
DE2715073A1 (de) | Mikroprogrammierte rechner-steuervorrichtung | |
DE3106881A1 (de) | Informationsverarbeitungssystem |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OAP | Request for examination filed | ||
OD | Request for examination | ||
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |