DE2855106C2 - Einrichtung zur Durchführung von bedingten Verzweigungen - Google Patents

Einrichtung zur Durchführung von bedingten Verzweigungen

Info

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
Application number
DE2855106A
Other languages
English (en)
Other versions
DE2855106A1 (de
Inventor
Jeffrey Francis Ulster Park N.Y. Hughes
John Stephen Rhinebeck N.Y. Liptay
James Walter Rymarczyk
Stanley Edward Poughkeepsie N.Y. Stone
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE2855106A1 publication Critical patent/DE2855106A1/de
Application granted granted Critical
Publication of DE2855106C2 publication Critical patent/DE2855106C2/de
Expired legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3846Speculative instruction execution using static prediction, e.g. branch taken strategy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent 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.
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
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
Schlangenregister codiert, das eine bedingte Verzwei- s F3CF 22 abzugeben. Wenn die Zielinstruktion der be-
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-
Ausgangssignal liefert Die übrigen Codekombinationen tionspuffer geleitet
zeigen verschiedene andere bedingte Verzweigungsin- Wenn die Ausführungssteuerinformation der beding-
struktionen ab. io ten Verzweigungsinstruktion im I-Register 35 an die
Der Verzweigungs-Resultatdecodierer 150 kombi- Instruktionswarteschlange 42 übertragen wird, wird
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
Zweigungsinstruktion enthalten sind, mit den Ausfüh- 15 nächste, in das I-Register 35 zu übertragende Instruk-
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
Die Ergebnisse der Verzweigungsstatusinformation empfangen hat Instruktionen werden dann weiter deco-
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
Instruktion aus der richtigen der drei Instruktionsfolgen bedingten Verzweigungsinstruktion noch einmal genau
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-
Verzweigungsinstruktion abgerufen wurde, übertragen. 30 Funktion 23 zurückgegeben und mit der Verzweigungs- Zu den Ausgangssignalen des Verzweigungs-Resultat- Zustandsinformation in der Instruktionswarteschlange
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-
Bedingungen werden durch Signale auf den Leitungen 35 struktion gemacht werden. Wenn der Erfolg einer be-
151 bis 154 angezeigt. dingten Verzweigung ursprünglich richtig geschätzt
Fig.3 zeigt im einzelnen die logische Schaltung des wurde, wird die Instruktionsdecodierung und -ausfüh- Verzweigungs-Resultatdecodiwers 150 der Fi g. 7. Die rung entsprechend dieser Schätzung fortgesetzt. Wenn Ergebnissignale für die Verzweigungsausführung auf die ursprüngliche Schätzung falsch war, wird die in der
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
Leitungen 118, 119 und 120. Die detaillierte logische übertragen. Schaltung kombiniert alle diese verschiedenen Signale 45 F i g. 9 zeigt die logische Schaltung, die auf die ur-
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
Im Zusammenhang mit Fig.3A wird nun ein allge- 50 richtigen Reihenfolge an die F-Funktion übertragen
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
Übertragung der Instruktionen mit variabler Länge aus das I-Register 35 übertragen werden.
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
Hierzu 12 Blatt Zeichnungen

Claims (7)

Patentansprüche:
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.
DE2855106A 1978-01-03 1978-12-20 Einrichtung zur Durchführung von bedingten Verzweigungen Expired DE2855106C2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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