DE68927029T2 - Pipelineprozessor - Google Patents
PipelineprozessorInfo
- Publication number
- DE68927029T2 DE68927029T2 DE68927029T DE68927029T DE68927029T2 DE 68927029 T2 DE68927029 T2 DE 68927029T2 DE 68927029 T DE68927029 T DE 68927029T DE 68927029 T DE68927029 T DE 68927029T DE 68927029 T2 DE68927029 T2 DE 68927029T2
- Authority
- DE
- Germany
- Prior art keywords
- pipeline
- instruction
- stream
- instructions
- units
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 230000015654 memory Effects 0.000 claims description 53
- 230000000977 initiatory effect Effects 0.000 claims description 8
- 230000006870 function Effects 0.000 description 8
- 230000014509 gene expression Effects 0.000 description 7
- 238000006073 displacement reaction Methods 0.000 description 3
- 238000000034 method Methods 0.000 description 3
- 230000003750 conditioning effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000003550 marker Substances 0.000 description 2
- 238000010586 diagram Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3865—Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3875—Pipelining a single stage, e.g. superpipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
- Die Erfindung betrifif Daenverarbeitungseinrichtungen mit einer Reihe von Stufen, die aufeinanderfolgende Instruktionen in überlappender Form ausfi;hren. Eine derartige Einrichtung wird üblicherweise als Pipeline-Prozessor bezeichnet.
- US-Patent Nr.41 12 489 beschreibt einen Pipeline-Datenprozessor mit einer Mehrzahl von Pipeline-Einheiten (PU1 - PU4), und eine Mehrzahl von Sätzen (BU1 - 8U4) von Registern zum Hindurchführen von Parametern zwischen den Pipeline-Einheiten. Die erste der Pipeline-Einheiten weist einen Instruktionsdisponenten (PU1) zum Einleiten von Instruktionen auf. Instruktionen werden von jeder der Pipeline-Einheiten der Reihe nach verarbeitet und werden schließlich an der letzten der Pipeline-Einheiten (PU4) beendet.
- US-Patent Nr.37 28 692 beschreibt einen Pipeline-Datenprozessor, der Instruktionen aus zwei unabhängigen Instruktionsströmen verarbeitet. Es wird eine Analyse durchgeführt, um festzustellen, ob der eine oder der andere der beiden Instruktionsströme vor seiner Durchführung wegen einer Abhängigkeit von einer vorausgehenden Instruktion im gleichen Strom zu warten hat. Wenn einer der Instruktionsströme nicht ausgeführt werden kann, wird eine Instruktion aus dem anderen Strom in die Pipeline-Schaltung für eine nachfolgende Verarbeitung geschaltet. Auf diese Weise wird die Effektivität der Pipeline erhöht.
- Aufgabe der Erfindung ist es, eine verbesserte, wirksamere Möglichkeit der Kommunikation von Parametern zwischen den Stufen eines Pipeline-Prozessors zu erreichen.
- Vorliegende Erfindung betrifft eine Datenverarbeitungseinrichtung mit einer Vielzahl von Pipeline-Einheiten (10-13) und einer Vielzahl von Sätzen (IPF, APF, OPF) von Registern, um Parameter zwischen den Pipeline-Einheiten hindurchzuführen, wobei die erste der Pipeline-Einheiten einen Instruktionsdisponenten zum Einleiten von Instruktionen aufweist, und wobei Instruktionen durch jede der Pipeline-Einheiten nacheinander verarbeitet werden und schließlich an der letzten der Pipeline-Einheiten (13) beendet werden, die dadurch gekennzeichnet ist, daß
- a) die Einrichtung eine Vorrichtung (50) aufweist, die jeder Instruktion eine Slot- Zahl zuweist, wenn diese Instruktion in der ersten der Pipeline-Einheiten (10) eingeleitet wird,
- b) jede der Pipeline-Einheiten (10-13) eine Vorrichtung aufweist, die die Slot-Zahl benutzt, die der gerade durch die Pipeline-Einheit verarbeiteten Instruktion zugewiesen worden ist, um ein individuelles Register innerhalb eines der Sätze von Registern zu adressieren, wodurch dieser Instruktion zugeordnete Parameter in die Lage versetzt werden, daß sie aus dem individuellen Register ausgelesen oder in das individuelle Register eingeschrieben werden, und
- c) die Einrichtung ferner eine Vorrichtung (54) zum Zurücknehmen der Zuweisung einer Slot-Zahi aufweist, wenn die Instruktion, der diese Slot-Zahl gerade zugeordnet wird, an der letzten Pipeline-Einheit (13) beendet wird, wodurch diese Slot-Zah für eine Zuweisung zu einer nachfolgenden Instruktion verfügbar gemacht wird.
- Ein Pipeline-Datenprozessor nach der Erfindung wird nachstehend in Verbindung mit der Zeichnung anhand eines Ausführungsbeispieles erläutert.
- Kurzbeschreibung der Zeichnungen
- Fig. 1 zeigt ein Gesamtschaltbild der Einrichtung nach der Erfindung.
- Fig. 2 zeigt eine obere Pipeline-Einheit im Detail.
- Fig. 3 zeigt einen schnellen Datennebenspeicher im Detail.
- Fig. 4 zeigt eine untere Pipeline-Einheit im Detail.
- Fig. 5 zeigt Slot-Marken zur Steuerung des Flusses von Instruktionen durch die Pipeline- Einheiten.
- Figuren 6 - 8 zeigen eine Steuerlogik zur Steuerung der Einleitung von Instruktionen in der oberen Pipeline.
- Fig. 9 zeigt eine Vorausschaubetrieb-Steuerlogik.
- Figuren 10 und 11 zeigen eine Steuerlogik zur Steuerung der Einleitung von Instruktionen in der unteren Pipeline.
- Nach Fig. 1 weist die Datenverarbeitungseinrichtung eine Reihe von Pipeline-Einheiten auf, nämlich einen Instruktionsdisponenten 10, eine obere Pipeline-Einheit 11, einen schnellen Datennebenspeicher 1 2 und eine untere Pipeline-Einheit 13.
- Die Pipeline-Einheiten 10 - 13 sind miteinander durch Parameterdateien verbunden, nämlich ei ne Instruktions-Parameterdatai IPF, ei ne Adressen-Parameterdatei APF und eine Operanden-Parameterdatei OPF. Sie ermöglichen, daß Instruktionsparameter zwischen den Pipeline-Einheiten hindurchgeführt werden.
- Der Disponent 10 weist einen schnellen Codenebenspeicher 14 auf, der ihm zugeordnet ist, um Kopien von Instruktionen für den Zugriff durch den Disponeneten zu speichern.
- Das System weist ferner einen Hauptspeicher 1 5 auf, der größer ist, jedoch eine niedrigere Zugriffsgeschwindigkeit als die Nebenspeicher (kopierten Speicher) 12,14 hat, ferner einen langsamen Nebenspeicher (kopierten Speicher) 16, dessen Größe und Geschwindigkeit zwischen denen des Hauptspeichers und der schnellen Nebenspeicher liegt. Die schnellen Nebenspeicher, der langsame Nebenspeicher und der Hauptspeicher bilden eine Dreiebenen-Speicherhierarchie.
- Der Disponent 10 weist zwei Disponenten-Einheiten 10A und 10B auf, um zwei getrennte Ströme von Instruktionen, die als Strom A und Strom B bezeichnet sind, zu disponieren. Der Strom A ist der Hauptverarbeitungsbelastung des Systems zugeordnet. Der Strom IB handhabt Ereignisse, die unabhängig von dieser Hauptverarbeitungsbelastung sind, z.B. das Managen der Eingangs/Ausgangs-Aktivität und das Kommunizieren mit anderen Prozessoren. Die Anwendung der beiden unabhängigen Ströme ermöglicht einen effektiveren Einsatz der Hardware des Systems. Zum Beispiel kann, wenn ein Strom aus irgendwelchen Gründen aufgehalten worden ist, der andere Strom mit der Verarbeitung fortfahren, so daß die Hardware nicht leerläuft.
- jede der Disponenten-Einheiten 10A, 10B erzeugt eine Folge von Instruktionsadressen, um Instruktionen aus dem Codenebenspeicher 14 wiederaufzufinden. Wenn die gewünschte Instruktion nicht im Codenebenspeicher vorhanden ist, wird sie aus dem langsamen Nebenspeicher 16 oder aus dem Hauptspeicher 1 5 wiederaufgefunden. Die wiederaufgefundenen Instruktionen werden in die IPF eingeschrieben.. Jede Instruktion wird von einem Programmzählerwert PC begleitet, der ebenfalls in einen Teil der IPF eingeschrieben wird, welcher als IPF.pc bezeichnet wird. Die IPF weist Doppelkanäle auf, sodaß die Disponenten-Einheiten 10A, 10B die IPF gleichzeitig laden können.
- Jede der Parameterdateien IPF, APF und OPF (wie auch eine andere Parameterdatei TPF, die weiter unten beschrieben wird) umfaßt sechzehn Register und kann deshalb Parameter für bis zu sechzehn unterschiedliche Instruktionen in verschiedenen Stufen der Durchführung halten. Der Satz von Registern, der sich auf eine bestimmte Instruktion bezieht, wird als "Slot" bezeichnet, d.h. daß jeder Slot ein entsprechendes Register aus jeder der Registerdateien aufweist. Zehn Slots werden dem Strom A und sechs dem Strom B zugeordnet.
- Wenn eine Instruktion zu Beginn aus dem Disponenten in die IPF eingeführt wird, wird sie einem Slot zugeordnet, d.h. sie wird einem Register in der IPF und einem entsprechenden Register in jeder der anderen Parameterdateien zugeordnet. Die Instruktion behält dann diesen Slot, bis sie erfolgreich durch alle Stufen einer jeden Pipeline-Einheit ausgeführt worden ist, worauf dann der Slot freigegeben wird, so daß er für eine andere Instruktion aus dem Disponenten zur Verfügung steht. Wenn eine Instruktion die Pipeline nach abwärts geführt wird, wird die Slot-Zahl, die dieser Instruktion zugeordnet ist, zusammen mit ihr die Pipeline nach abwärts geführt, so daß bei jeder Pipeline-Stufe das entsprechende Register in der Parameterdatei zugegriffen werden kann.
- Die obere Pipeline 11 liest Instruktionen aus der IPF und verarbeitet sie, so daß die Adresse des gewünschten Operanden für die Instruktion berechnet wird. Dies kann beispielsweise das Hinzufügen eines Verschiebewertes zu einer Basisadresse einschließen, die in einem internen Register, z.B. einem lokalen Namensbasisregister gehalten wird. Andererseits kann die Adresse ein in der Instruktion gehaltener literaler Wert sein. Die Operandenadresse wird in der APF im Schlitz entsprechend der in Frage kommenden Instruktion plaziert.
- Der Datennebenspeicher 12 liest, wenn er frei ist, eine Adresse aus der APF ab und findet den gewünschten Operanden, falls er im Datennebenspeicher vorhanden ist, auf oder leitet andernfalls das Abrufen des Operanden aus dem langsamen Nebenspeicher oder dem Hauptspeicher ein. Der wiederaufgefundene Operand wird in die OPF in dem der in Frage kommenden Instruktion entsprechenden Slot eingeführt. Zusätzlich können Daten aus dem Nebenspeicher in die obere Pipeline zurückgeführt werden, so daß eines der internen Register in dieser Einheit fortgeschaltet wird.
- Die untere Pipeline 13 liest den Operanden aus der OPF aus und führt die gewünschte Operation, wie sie durch die Instruktion spezifiziert wird, an ihm aus. Dies kann beispielsweise einschließen, daß der Operand den Inhalten eines Akkumulator-Registers hinzugefügt wird.
- Fig. 2 zeigt die obere Pipeline-Einheit detaillierter
- Die obere Pipeline-Einheit weist fünf Pipeline-Stufen auf, die als UPO - UP4 bezeichnet sind.
- Die erste Stufe UPO enthält eine nachstehend beschriebene Logik zum Auswählen eines Slots aus der IPF, damit die Verarbeitung der Instruktion in diesem Slot eingeleitet wird.
- Normalerweise werden Instruktionen in jedem Strom in der oberen Pipeline in chronologischer Reihenfolge gestartet. Des weiteren erhält normalerweise der Strom A Priorität gegenüber dem Strom B, so daß eine Instruktion des B-Stromes nur dann gestartet wird, wenn keine Instruktionen des A-Stroms in der IPF vorhanden sind. Der Strom B kann jedoch in bestimmten Fällen Priorität erhalten.
- Nachdem eine Instruktion gestartet worden ist, kann die obere Pipeline detektieren, daß die Instruktion dennoch nicht erfolgreich abgeschlossen werden kann, weil eine Abhängigkeit von einer früheren Instruktion besteht. In diesem Fall wird die Instruktion fallengelassen. Instruktionen, die sich an die fallengelassene Instruktion anschließen, können jedoch weiterhin in einer Spezialbetriebsart ablaufen, die Vorausschau-Betrieb genannt wird; der Zweck dieses Vorausschau-Betriebes ist, Operanden zu ermöglichen, daß die Instruktion, falls erforderlich, in den schnellen Datennebenspeicher vorabgerufen wird. Derartige Vorausschauen werden nur zugelassen, wenn sie keine weiteren Abhängigkeiten erzeugen. Der Vorausschau-Betrieb kann für die Ströme A und B unabhängig eingeleitet werden. Wenn der Strom A im Vorausschau-Betrieb arbeitet, nicht aber der Strom B, erhält der Strom B Priorität. Wenn die Abhängigkeit aufgelöst worden ist, wird der Strom in einen normalen Nicht-Vorausschau-Betrieb zurückgeführt, und die fallengelassene Instruktion wird erneut in der oberen Pipeline gestartet.
- UP1 weist einen Decodierer 20 auf, der die Instruktion aus dem ausgewählten Schlitz decodiert, um Steuersignale für UP2 zu erzeugen, die in einem Pipeline-Register 21 gespeichert sind. Der Decodierer 20 erzeugt ferner ein Ausgangssignal, das zum weiteren Decodieren über ein Register 23 an UP2 weitergegeben wird
- UP2 enthält einen Satz von Registern 24, die lokale Kopien der Register repräsentieren, welche durch den Instruktionssatz des Systems spezifiziert sind. Die definitiven Kopien dieser Register sind effektiv in der unteren Pipeline vorhanden. UP2 enthält ferner eine Multiplexer-Schaltung 25, die durch den Wert im Register 21 gesteuert wird und die Eingangsdaten aus den Registern 24 aus einer der folgenden Quellen auswählt:
- (a) Ein Ausgangsdatensignal V aus der unteren Pipeline.
- (b) Einen korrigierten Registerwert UP.CORR aus der unteren Pipeline.
- (c) Ein Datensignal RD aus dem Datennebenspeicher.
- UP2 enthält ferner einen Decodierer 26, der die Inhalte des Registers 23 weiter decodiert, um einen Satz von Steuersignalen aus UP3 zu erzeugen, die in einem Register 27 gespeichert werden. Der Decodierer erzeugt ferner einen Funktionscode F, der in einem Register 28 gespeichert wird.
- UP3 weist eine Multiplexerschaltung 29 auf, die Eingabedaten für einen Satz von arithmetischen Registern 210 unter Steuerung des Wertes im Register 27 auswählt. Die Eingabedaten werden aus den folgenden Quellen ausgewählt:
- (a) Ein literaler Wert N, der aus dem Decodierer 20 in UPI über Pipelin-Register 211, 212 erhalten wird.
- (b) Ein Programmzählerwert PC, der aus IPF.pc über Pipeline-Register 213, 214 und 217 erhalten wird.
- (c) Die Register 24.
- UP3 enthält ferner ein Register 215, das den Funktionscode F nach UP4 gibt. Der Funktionscode F wird ferner aus UP3 an die Parameterdateien APF und OPF gegeben, wo sie in dem entsprechenden Slot gespeichert werden. Die Teile dieser Parameterdateien, die den Funktionscode steuern, werden als APF.F und OPF.F bezeichnet.
- UP4 enthält eine Rechen- und Logik-Einheit (ALU) 216, die eine Operation an den Inhalten der Register 210 unter Steuerung des Funktionscodes F im Register 215 durchführt. Das Resultat dieser Operation wird an die APF weitergeleitet, wo sie in den entsprechenden Slot eingeschrieben wird.
- In einer weiteren Stufe UPS (nicht dargestellt) kann die in UP4 erzeugte Adresse auf architektonische Gültigkeit geprüft werden. Ein Fehler bewirkt eine spätere nicht erfolgreiche Beendigung dieses Slots.
- Fig. 3 zeigt den schnellen Daten-Nebenspeicher detaillierter
- Der Daten-Nebenspeicher weist fünf Pipeline-Stufen DS0 - DS4 auf.
- Die erste Stufe DS0 umfaßt eine logische Prioritätsschaltung zum Auswählen des nächsten Slots aus der APF, die durch den Daten-Nebenspeicher verarbeitet wird.
- DSI enthält einen Decodierer 30, der die aus der APF ausgewählte Adresse decodiert, um einen Byte-Verschiebewert zu erzeugen, der die Ausrichtung des gewünschten Datenausdrucks innerhalb eines 32-Bytes umfassenden Blocks anzeigt. Die Adresse und der Byte-Verschiebewert werden über Register 31 und 32 an DS2 geleitet.
- DS2 weist einen inhaltsadressierbaren Speicher (CAM) 33 auf, der die Adressen von Datenausdrücken, die im Daten-Nebenspeicher gerade vorhanden sind, speichert. Der CAM 33 nimmt die Operandenadresse aus DS1 auf und vergleicht sie mit allen Adressen, die im CAM enthalten sind. Wenn dort eine Anpassung vorliegt, erzeugt der CAM ein Signal VHIT, und gibt gleichzeitig einen Markierwert ab, der anzeigt, in welchem 32-Bytes umfassenden Block des Daten-Nebenspeichers der gewünschte Ausdruck gespeichert ist. Der Markierwert wird über ein Register 34 an DS3 geleitet.
- Wenn der gewünschte Datenausdruck nicht im Daten-Nebenspeicher vorhanden ist (VHIT ist falsch), löst der Daten-Nebenspeicher einen Zugriff zum langsamen Nebenspeicher aus, der veranlaßt, daß die Daten entweder aus dem langsamen Nebenspeicher oder dem Hauptspeicher abgerufen und in den Daten-Nebenspeicher geladen werden.
- Der DS2 weist ferner eine Byte-Ausrichtschaltung 35 auf, die einen Datenausdruck W aus der unteren Pipeline empfängt und ihn entsprechend dem im Register 32 gehaltenen Byte-Verschiebewert ausrichtet. Der ausgerichtete Datenausdruck wird in einem Register 36 gespeichert. DS2 enthält ferner Register 37 und 38, die Datenausdrücke aufnehmen, die in den Daten-Nebenspeicher aus dem Hauptspeicher und langsamen Nebenspeicher zurückgeführt werden.
- DS3 weist einen Speicher mit willkürlichern Zugriff (RAM) 39 auf, der eine Anzahl von individuell adressierbaren, 32-Byte umfassenden Datenblöcken hält. Der RAM wird durch den Markierwert aus dem Register 34 adressiert. Daten können in den RAM über einen Multiplexer 310 aus einem der Register 36, 37 und 38 eingeschrieben werden. Alternativ kann ein Block von Daten aus dem RAM ausgelesen und über ein Register 311 an DS4 geleitet werden.
- DS4 enthält eine Byte-Ausricht-Schaltung 312. Diese wird durch einen Byte-Verschiebewert gesteuert, der aus dem Decodierer 40 über Pipeline-Register 32, 313 und 314 empfangen wird. Die Ausrichtschaltung 312 wählt den erforderlichen Datenausdruck aus dem Block aus, der im Register 311 gehalten wird, und führt ihn der OPF zu. Der ausgewählte Datenausdruck wird auch in die oberen und unteren Pipelines als Datensignal RD eingespeist.
- Fig. 3 zeigt die untere Pipeline 13 in detaillierterer Ansicht. Die untere Pipeline weist vier Pipeline-Stufen LP0 - LP3 auf.
- Die erste Stufe LP0 enthält eine Prioritätslogik, die noch beschrieben wird, um den nächsten Slot aus OPF auszuwählen, damit er durch die untere Pipeline behandelt wird.
- Innerhalb eines jeden Stromes werden Instruktionen in exakter chronologischer Reihenfolge, beginnend mit der ältesten Instruktion, gestartet (und damit beendet).
- Die Durchführung einer Instruktion in der unteren Pipeline kann gestartet werden, sobald feststeht, daß der Operand hierfür aus dem Datennebenspeicher zur richtigen Zeit für die Verwendung an der Stufe LP2 der unteren Pipeline zur Verfügung steht. Somit kann eine Instruktion in der unteren Pipeline gestartet werden, während der Datenausdruck aktuell aus dem Datennebenspeicher wiederaufgefunden wird. Im Grenzfall wird das Datensignal RD aus dem Datennebenspeicher direkt in LP1 unter Umgehung der OPF verwendet. Somit können sich Operationen der Pipeline-Stufen des Datennebenspeichers und der unteren Pipeline überlappen. Dies ist von Bedeutung, da dadurch die gesamte Durchgangszeit von Instruktionen durch die gesamte Pipeline reduziert wird.
- LP1 weist einen Steuerspeicher 40 mit einem Adresseneingang auf, der den Funktionscode F aus dem ausgewählten Slot von OPF.f über einen Multiplexer 41 empfängt. Der Ausgang des Steuerspeichers 40 weist einen Steuercode und einen Wert für die nächste Adresse auf. Der Steuercode wird über ein Register 42 an LP2 gegeben. Der nächste Adressenwert wird in ein Register 43 in LP0 rückgekoppelt und kann durch den Multiplexer 41 ausgewählt werden, so daß er eine andere Speicherstelle im Steuerspeicher 40 adressiert. Daraus ergibt sich, daß für jeden Funktionscode F der Steuerspeicher 40 eine Folge von Steuercodes für die untere Pipeline erzeugen kann. Am Ende der Folge von Steuercodes erzeugt der Steuerspeicher ein Ende des Folgesignales, das der Prioritätslogik in der Stufe LP0 mitteilt, daß ein neuer Slot ausgewählt werden soll, und schaltet den Multiplexer 41 so, daß der nächste Funktionscode aus OPF.f ausgewählt wird, wodurch eine neue Folge eingeleitet wird.
- LP1 weist ferner einen Satz von arithmetischen Registern 44 auf. In diese Register können Daten mit Hilfe einer Multiplexerschaltung 45 aus einer der folgenden Quellen eingeladen werden:
- (a) Der Operand, der in dem jeweiligen ausgewählten Slot der OPF gehalten wird.
- (b) Daten aus den Registern in LP3.
- (c) Nebendaten RD direkt aus dem Datennebenspeicher (OPF-Bypass).
- Der Multiplexer 45 kann ferner Bypass-Daten aus den Registern 47 oder der ALU 46 entnehmen, soweit diese Daten noch nicht in das gewünschte Register 411 eingeschrieben worden sind.
- LP2 weist eine Rechen- und Logikeinheit (ALU) 46 auf, die eine Operation an den Inhalten der Register 44 durchführt, wie sie durch die Steuerung im Register 42 spezifiziert sind. Das Resultat dieser Operation wird über Register 47 und 48 an LP3 weitergegeben.
- LP2 enthält eine weitere Parameterdatei, die als die Beendigungsparameterdatei TPF bezeichnet wird. Wie die anderen Parameterdateien weist TPF sechzehn Register auf, und zwar jeweils eines für jeden Slot. Wann immer eine Instruktion ein Problem bei der Ausführung in einer der Pipeline-Einheiten detektiert, wird ein Indikator im Slot von PTF entsprechend dieser Instruktion gesetzt.
- LP3 weist eine logische Konditionierschaltung 412 auf, die den Ausgang des Registers 48 und ein Steuersignal aus dem Steuerspeicher 40 über Register 42 und 410 empfängt.
- Die Schaltung 412 führt Tests durch, um festzustellen, ob eine Sprungbedienung, die durch die Instruktion spezifiziert ist, erfüllt ist, z.B. ob ein Akkumulator-Register Null ist. Wenn die Sprungbedingung erfüllt ist, erzeugt die Schaltung 412 ein Sprungsignal JCON für den Disponenten 10.
- LP3 enthält eine Finish-Logik 49, die ein Steuersignal aus der Konditionier-Logik 412 empfängt, um anzuzeigen, ob irgendwelche Probleme während der Durchführung in LP2 detektiert worden sind. Die Logik 49 prüft das Signal und die Inhalte von TPF entsprechend der Instruktion und bestimmt, ob diese Instruktion irgendwelche Probleme während der Ausführung angetroffen hat. Wenn eine erfolgreiche Beendigung detektiert worden ist, erzeugt die Schaltung eines von zwei Signalen AFinOK oder BFinOK, je nachdem, in welchem Strom die Instruktion sich befindet. Der an die Instruktion abgerufene Slot wird dann zur erneuten Benutzung freigegeben.
- LP3 weist ferner einen Satz von Registern 411 auf, der die definitiven Kopien der Register repräsentiert, die durch den Instruktionssatz des Systems spezifiziert sind. Diese Register nehmen Daten aus dem Register 47 auf. Die Register 411 werden aus dem Register 47 nur geladen, wenn die Finish-Logik 49 anzeigt, daß dieser Slot erfolgreich abschließt. Auf diese Weise wird der laufende Prozeßzustand, wie er in den Registern 411 definiert wird, nicht durch irgendwelche Fehler bei der Ausführung einer Instruktion verfälscht. Der Ausgang der Register 411 ergibt das Korrektursignal UP.CORR, das erforderlichenfalls in die obere Pipeline zurückgeführt werden kann, um die lokalen Kopien der dort gehaltenen Register zu korrigieren.
- Der Ausgang des Registers 47 ergibt auch das Signal W an den Datennebenspeicher, und das Signal V an die obere Pipeline.
- Nach Fig. 5 wird der Fluß der A-Strom-Instruktionen durch die Pipeline durch einen Satz von Zählern 50 - 54 gesteuert. Ein ähnlicher Satz von Zählern (nicht dargestellt) ist für den B-Strom vorgesehen.
- Der Zähler 50 erzeugt ein Signal ALdSlt, das anzeigt, daß der nächste Slot in der IPF durch eine A-Strom-Instruktion aus dem Disponenten geladen werden soll. Der Zähler 50 wird durch ein Signal APiLd jedesmal dann weitergeschaltet, wenn eine A-Strom- Instruktion in die IPF geladen werden soll. Somit werden die Slots in der IPF sequentiell zu aufeinanderfolgenden Instruktionen aufgerufen.
- Der Zähler 51 erzeugt ein Signal AUStSlt, das angibt, daß der nächste A-Strom-Slot in der oberen Pipeline UP im Normalbetrieb (d.h. im Nicht-Vorausschau-Betrieb) gestartet werden soll. In ähnlicher Weise erzeugt der Zähler 52 ein Signal AULaStSlt, das angibt, daß der nächste A-Strom-Slot in der oberen Pipeline im Vorausschau-Betrieb gestartet werden soll.
- Zu Beginn sind die Inhalte der beiden Zähler 51, 52 gleich; dieser Zustand wird durch ein Äquivalenz-Gatter 55 detektiert.
- Im Normalbetrieb ist ein Vorausschau-Signal Alabetrieb falsch. Jedesmal, wenn eine A- Strom-Instruktion in der oberen Pipeline gestartet wird, geht ein Signal UPAStart nach echt. Dies macht ein UND-Gatter 56 wirksam, das den Zähler 51 weiterschaltet. Somit wählt im Normalbetrieb der Zähler 51 A-Strom-Instruktionen aus aufeinanderfolgenden Slots der IPF aus, damit eine Verarbeitung dieser Instruktionen in der oberen Pipeline eingeleitet wird. Gleichzeitig werden ein UND-Gatter 57 und ein ODER-Gatter 58 wirksam gemacht, wodurch der Zähler 52 weitergeschaltet wird. Während das System im Normalbetrieb bleibt, werden die beiden Zähler 51, 52 im Gleichtakt miteinander weitergeschaltet.
- Im Vorausschau-Betrieb ist Alabetrieb echt, und damit wird das UND-Gatter 56 unwirksam, wodurch verhindert wird, daß der Zähler 51 weiterschaltet. Jedesmal, wenn eine neue A-Strom-Instruktion im Vorausschau-Betrieb gestartet wird, wird das UND- Gatter 59 wirksam, und damit wird der Zähler 52 weitergeschaltet. Somit fährt im Vorausschau-Betrieb der Zähler 52 mit dem Zählen fort, so daß er fortgesetzt aufeinanderfolgende Instruktionen aus der IPF zum starten in die obere Pipeline auswählt. Der Zähler 51 andererseits hält die Schlitzzahl der Instruktion bei, die fallen gelassen worden ist.
- Wenn das System in den Normal betrieb zurückkehrt, geht Alabetrieb wieder nach falsch. Damit wird jedesmal dann, wenn eine neue Instruktion in der oberen Pipeline gestartet wird, das UND-Gatter 56 wirksam, und der Zähler 51 wird weitergeschaltet. Während die Inhalte der Zähler ungleich sind, bleibt das UND-Gatter 57 gesperrt, und damit wird verhindert, daß der Zähler 52 weitergeschaltet wird. Wenn der Zähler 51 schließlich zum Zähler 52 aufschließt, werden beide Zähler wieder im Gleichtakt miteinander weitergeschaltet. Wenn eine andere Vorausschau eingeleitet wird, bevor der Zähler 51 aufgeschlossen hat, trifft das für die Instruktionen, die bereits im Vorausschau-Betrieb gelaufen sind, nicht zu, da die Vorausschau von dem jeweiligen Wert des Zählers 52 startet.
- Der Zähler 53 erzeugt ein Signal ALStSlt, das anzeigt, daß der nächste A-Strom-Slot in der unteren Pipeline LP gestartet wird. Dieser Zähler 53 wird durch ein Signal LPAStart weitergeschaltet, wenn eine A-Strom-Instruktion in der unteren Pipeline gestartet wird. Somit werden die Instruktionen sequentiell in der unteren Pipeline gestartet.
- Der Zähler 54 erzeugt ein Signal AEldSlt, das anzeigt, daß der Schlitz die älteste A- Strom-Instruktion jeweils in der Pipeline hält. Instruktionen werden in exakt chronologischer Reihenfolge abgeschlossen, und damit zeigt dieses Signal die nächste A-Strom- Instruktion an, die fällig wird, um die Ausführung in der unteren Pipeline abzuschliessen. Der Zähler 54 wird durch ein Signal AFinOK weitergeschaltet, das anzeigt, daß eine A-Strom-Instruktion ihre Ausführung in der unteren Pipeline erfolgreich abgeschlossen hat. Dies gibt den Slot frei.
- Die Inhalte der Zähler 50 und 51 werden miteinander verglichen, um ein Signal AUAllSt zu erzeugen, das angibt, daß alle A-Strom-Instruktionen, die jeweils in der IPF vorhanden sind, nunmehr im Normalbetrieb gestartet worden sind. Entsprechend werden die Inhalte der Zähler 50 und 52 miteinander verglichen, um ein Signal AULaAllSt zu erzeugen, das angibt, daß alle A-Strom-Instruktionen, die gerade in der IPF vorhanden sind, möglicherweise einige von ihnen im Vorausschau-Betrieb, gestartet worden sind.
- Die Inhalte der Zähler 50 und 54 werden miteinander verglichen, um ein Signal Aipffuli zu erzeugen, das angibt, daß alle A-Strom-Slots in der IPF nunmehr voll sind. Dies verhindert, daß weitere A-Strom-Instruktionen in die IPF geladen werden.
- Die Figuren 6 - 8 zeigen die Steuerlogik für Start-Instruktionen in der oberen Pipeline.
- Nach Fig. 6 wählt ein Multiplexer 60 entweder AUAllSt oder AULaAllSt aus, je nach dem, ob das Signal ALAmode falsch oder echt ist. Der inverse Wert des Ausgangs des Multiplexers 6 ergibt ein Signal AlpfRdy, das angibt, daß mindestens eine A-Strom- Instruktion in der IPF vorhanden ist, die für einen start in der oberen Pipeline bereit ist. Ein ähnliches Signal BlpfRdy wird für den B-Strom erzeugt.
- Das Signal AlpfRdy wird einem Eingang eines UND-Gatters 61 zugeführt, das ein Signal UPAStart erzeugt, um eine A-Strom-Instruktion in der oberen Pipeline einzuleiten. Der andere Eingang dieses UND-Gatters nimmt den Ausgang eines ODER-Gatters 82 auf, das den inversen Wert von BlpfRdy und den inversen Wert eines Prioritätssignales UPBStPrefd aufnimmt.
- Entsprechend wird ElpfRdy einem Eingang eines UND-Gatters 63 zugeführt, das ein Signal UPBStart erzeugt, um eine B-Strom-Instruktion in der oberen Pipeline einzuleiten.
- Der andere Eingang dieses UND-Gatters nimmt den Ausgang eines ODER-Gatters 64 auf, das UPBStPrefd und den inversen Wert AlpfRdy empfängt.
- Daraus ergibt sich, daß dann, wenn UPBStPrefd falsch ist, A-Strom-Instruktionen bevorzugt gegenüber B-Strom-Instruktionen eingeleitet werden. Eine B-Strom-Instruktion kann nur dann eingeleitet werden, wenn keine A-Strom-Instruktionen bereit sind. Wenn umgekehrt UPBStPrefd echt ist, werden B-Strom-Instruktionen bevorzugt in Hinblick auf A-Strom-Instruktionen eingeleitet.
- Nach Fig. 7 wählt ein Multiplexer 70 entweder AUStSlt oder AULaStSlt aus, je nach dem, ob ein ALAmode falsch oder echt ist. Der Ausgang dieses Multiplexers zeigt deshalb die Slot-Zahl der nächsten A-Strom-Instruktion an, die in der oberen Pipeline gestartet werden soll, und zwar, je nachdem, im normalen oder Vorausschau-Betrieb. Ein ähnlicher Multiplexer 71 ist für den B-Strom vorgesehen.
- Die Ausgänge der Multiplexer werden mit Hilfe von UND-Gattern 72, 73 an ein ODER- Gatter 74 gegattert, dessen Ausgang ein Signal IpfRdSlt ergibt. Dieses Signal wird zum Adressieren der IPF verwendet, um die nächste Instruktion zum starten in der oberen Pipeline auszulesen.
- Die UND-Gatter 72, 73 werden durch Signale UPAStart und UPBStart in der dargestellten Weise gesteuert, so daß die Slot-Zahl für den A-Strom oder B-Strom in der gewünschten Weise ausgewählt wird.
- Fig. 8 zeigt die Logik zur Erzeugung des Signales UPBStPrefd, das angibt, daß der B- Strom zum starten in der oberen Pipeline bevorzugt wird.
- UPBSPrefd wird aus einem ODER-Gatter 80 abgeleitet, das den Ausgang der beiden UND-Gatter 81 und 82 aufnimmt. Das UND-Gatter 81 nimmt das Signal ALAmode und den inversen Wert des entsprechenden Signales BLAmode für den B-Strom auf. Das Gatter 82 nimmt ein Signal UPBPri und den Ausgang eines Äquivalenz-Gatters 83 auf, das ALAmode und BLAmode miteinander kombiniert.
- Daraus ergibt sich, daß dann, wenn einer der beiden Ströme im Vorausschau-Betrieb und der andere im Normal-Betrieb arbeitet, das Signal UPBStPrefd dem Strom Präferenz gibt, der im Normal-Betrieb arbeitet. Wenn andererseits beide Ströme im gleichen Betrieb arbeiten, wird dem A-Strom oder dem B-Strom Präferenz erteilt, je nach dem, ob UPBPri falsch oder echt ist.
- Das Signal UPBPri wird wie folgt erzeugt.
- Ein Zähler 84 wird mit einem voreingestellten Wert USPlim geladen, wenn eine B- Strom-Instruktion in der oberen Pipeline gestartet wird, wie durch UPBStart angezeigt. Der Zähler wird dann nach abwärts geschaltet, wenn eine A-Strom-Instruktion gestartet wird, wie durch UPAStart angezeigt. Wenn der Zählwert Null erreicht, wird ein UND- Gatter 85 wirksam gemacht, das seinerseits ein ODER-Gatter 87 wirksam macht, so daß UPBPri echt gemacht wird. Daraus ergibt sich, daß der A-Strom normalerweise Priorität erhält, daß jedoch dem B-Strom Priorität gegeben wird, wenn eine vorbestimmte Anzahl von A-Strom-Instruktionen gestartet werden, ohne daß ein entsprechender B-Strom Startet. Die Werte von USPlim können auf einen Wert voreingestellt werden, damit ein gewünschter Abgleich zwischen den beiden Strömen erzielt wird.
- Das ODER-Gatter 87 nimmt auch ein Signal Bürgent auf, das dem B-Strom Priorität erteilt, wenn eine wartende Eingab/Ausgabe-Aktivität oder eine Zwischenprozessor- Verbindung kritisch geworden ist und den Einfluß des Zählers 84 übersteuert.
- Wie vorstehend erwähnt, wird eine Anzeige darüber, daß eine Instruktion noch nicht abgeschlossen werden kann, weil eine Abhängigkeit von einer früheren Instruktion besteht, fallen gelassen, und es wird ein Vorausschau-Betrieb eingeleitet.
- Fig. 9 zeigt die Logik zur Steuerung des Vorausschau-Betriebes.
- Wenn die fallen zu lassende Instruktion im A-Strom vorhanden ist, werden Signale Aabndep und Adepwait erzeugt. Aabndep setzt einen Flip-Flop 90. Der Ausgang dieses Flip-Flop macht zusammen mit Adepwait ein UND-Gatter 91 wirksam, um das Signal ALAmode zu erzeugen, das den A-Strom in den Vorausschau-Betrieb bringt.
- Wie vorstehend beschrieben, werden unter Steuerung des Zählers 52 (Fig. 5) im Vorausschau-Betrieb Instruktionen weiter eingeleitet. Damit werden Instruktionen, die auf die fallengelassene Instruktion folgen, weiter am Laufen gehalten, so daß erforderlichenfalls Operanden vorabgerufen werden. Diese Instruktionen haben jedoch nicht die Möglichkeit, erfolgreich abzuschließen oder die definitiven Kopien des Registers in der unteren Pipeline zu aktualisieren.
- Das Signal Adepwait geht wieder nach falsch, wenn detektiert wird, daß die Abhängigkeit nunmehr aufgelöst worden ist oder in Kürze aufgelöst werden soll. Dies macht das UND-Gatter 91 unwirksam, macht ALAmode falsch, und macht zur gleichen Zeit ein UND-Gatter 92 wirksam, wobei ein Signal ARestRdy erzeugt wird.
- Da nunmehr ALAmode falsch ist, wird die nächste A-Strom-Instruktion, die eingeleitet werden soll, die Instruktion im Slot, die mit AUStSlt bezeichnet ist. Mit anderen Worten heißt dies, daß die Instruktion, die aufgrund der Abhängigkeit fallen gelassen worden ist, nunmehr wieder gestartet wird.
- Wird die Instruktion erneut gestartet, machen die Signale UPAStart und ARestRdy ein UND-Gatter 93 wirksam, wobei ein Signal AReStarted wirksam gemacht wird, das den Flip-Flop 90 rücksetzt.
- Eine ähnliche Logik (nicht dargestellt) ist zum Erzeugen des Signals BLAmode für den B- Strom vorhanden.
- Es sei bemerkt, daß eine fallengelassene Instruktion erneut gestartet werden kann, bevor die Abhängigkeit tatsächlich aufgelöst worden ist. Beispielsweise wird der Fall betrachtet, bei dem eine Instruktion fallen gelassen worden ist, weil es erforderlich ist, Daten aus einem Register auszulesen, die aus dem Nebenausgangsspeicher RD einer früheren Instruktion noch nicht eingeschrieben sind. In diesem Fall geht das Signal ADepWait nach falsch, sobald ein Zugriff in den Datenspeicher eingeleitet worden ist, um die gewünschten Daten wiederaufzufinden. Somit beginnt die neu gestartete Instruktion in der oberen Pipeline parallel zum Zugriff zum Datennebenspeicher durch die frühere Instruktion zu laufen. Zu dem Zeitpunkt, zu dem die neu gestartete Instruktion die Daten auslesen soll, ist es wahrscheinlich, daß die Daten aus dem Datennebenspeicher bereits zugegriffen worden sind, so daß die Ausführung normal weiter geht. Wenn die gewünschten Daten jedoch nicht im Daten nebenspeicher vorhanden sind, wird die neu gestartete Instruktion erneut fallen gelassen, und der Vorausschau-Betrieb wird reaktiviert.
- Die Figuren 10 und 11 zeigen die Steuerlogik zum starten von Instruktionen in der unteren Pipeline LP.
- Wenn nach Fig. 10 die erste Stufe LPO der unteren Pipeline zur Verfügung steht, um die Durchführung einer Instruktion zu starten, wird ein Signal LPipeAv erzeugt.
- Es wird ein Signal ADsDone erzeugt, um anzugeben, daß der Zugriff zu dem gewünschten Datennebenspeicher (falls vorhanden) für den A-Strom vervollständigt worden ist oder in Kürze vervollständigt wird. Dieses Signal besteht aus zehn Bits, nämlich einem Bit für jeden A-Strom-Slot. Diese zehn Bits werden einem Multiplexer 100 aufgegeben, der das Bit entsprechend der nächsten A-Strom-Instruktion, die in der unteren Pipeline gestartet werden soll, auswählt, wie durch ALStSlt angezeigt.
- Das Signal LPipeAv und der Ausgang des Multiplexers 100 werden in einem UND- Gatter 101 kombiniert, um ein Signal LPAStartPoss zu erzeugen, das anzeigt, daß es nunmehr möglich ist, eine neue A-Strom-Instruktion in der unteren Pipeline zu starten.
- Eine ähnliche Logik existiert, wie gezeigt, um ein entsprechendes Signal LPBStartPoss für einen B-Strom zu erzeugen.
- Das Signal LPAStartPoss wird einem Eingang eines UND-Gatters 102 aufgegeben, das ein Signal LPAStart erzeugt, welches anzeigt, daß eine A-Strom-Instruktion in der unteren Pipeline gestartet werden soll. Der andere Eingang dieses UND-Gatters nimmt den Ausgang eines ODER-Gatters 103 auf, dessen Eingänge den inversen Wert von LPBStartPoss und den inversen Wert eines Prioritätssteuersignals LPBPri aufnehmen.
- Entsprechend wird das Signal LPBStartPoss an einen Eingang eines UND-Gatters 104 gelegt, das ein Signal LPBStart erzeugt, das anzeigt, daß eine B-Strom-Instruktion in der unteren Pipeline gestartet werden soll. Der andere Eingang dieses UND-Gatters nimmt den Ausgang eines ODER-Gatters 105 auf, dessen Eingänge das Signal LPBPri und den inversen Wert von LPAStartPoss aufnehmen.
- Daraus ergibt sich, daß dann, wenn LPBPri falsch ist, eine A-Strom-Instruktion gestartet wird, wann dies immer möglich ist, und zwar bevorzugt gegenüber einer B-Strom- Instruktion. Wenn LPBPri echt ist, wird den B-Strom-Instruktionen der Vorzug gegeben.
- Das Prioritätssignal LPBPri wird durch eine logische Schaltung :hnl ich der Schaltung nach Fig. 8 erzeugt, um UPBPri zu erzeugen. In diesem Fall wird der Zähler durch Signale LPAStart und LPBStart gesteuert, und der voreingestellte Zählwert ist LSPLim, der verschieden von USPLim sein kann.
- Es ist darauf hinzuweisen, daß die Signale Adsdone und Bdsdone erzeugt werden können, sobald der Daten nebenspeicher weiß, daß er in der Lage ist, den gewünschten Datenausdruck ohne Rückbeziehung auf den langsamen Hilfsspeicher oder Hauptspeicher zu liefern. In der Praxis werden die Signale zur gleichen Zeit erzeugt wie der Datennebenspeicher zugegriffen wird. Dies bedeutet, daß die Betriebsweise der unteren Pipeline sich mit der Betriebsweise des Nebenspeichers überlappen kann, wenn eine Erzeugung von ADsDone oder BDsDone einen unmittelbaren LPAStart oder LPBStart für den gleichen Slot ergibt.
- Fig. 11 zeigt die Logik zur Auswahl des Slots, der in der unteren Pipeline eingeleitet werden soll.
- Das Signal ALStSlt, das anzeigt, daß der nächste A-Strom-Slot in der unteren Pipeline gestartet werden soll, wird mit LPAStart in einem Satz von UND-Gattern 110 gegattert. In ähnlicher Weise wird BLStSlt mit LPBStart in einem Satz von UND-Gattern 111 gegattert.
- Die Ausgänge der Gatter 110 und 111 werden in einem Satz von ODER-Gattern 112 kombiniert, um ein Signal LPOSlt zu erzeugen, das die Slot-Zahl der nächsten Instruktion im A-Strom oder B-Strom anzeigt, die in der unteren Pipeline gestartet werden soll. LPOSlt wird verwendet, um die Parameterdatai OPF zuzugreifen, damit die gewünschte Instruktion und der Operand für die untere Pipeline ausgelesen werden kann.
- Das Signal LP0SIT wird in einem Register 11 3 gespeichert, wenn die Instruktion in die Stufe LP1 der unteren Pipeline eintritt, um ein Signal LPlSlt zu erzeugen. Dieses Signal wird in die ODER-Gatter 112 über einen Satz von UND-Gattern 114 zurückgegattert, wenn LPipeAv falsch ist. Wenn die untere Pipeline somit nicht verfiigbar ist, um eine neue Instruktion aufzunehmen (weil sie eine Mehrtakt-Instruktion ausführt), wird die laufende Slot-Zahl aufrecht erhalten.
- Für jede Instruktion werden alle Änderungen an dem Verfahrenszustand gleichzeitig bei erfolgreicher Beendigung im Zustand LP3 vorgenommen. Somit können Instruktionen als atomar betrachtet werden, die entweder vollständig oder überhaupt nicht ausgeführt wer en. Dies vereinfacht die Steuerung und das Rückgewinnen der Pipeline bei Sprüngen und Fehlern.
Claims (10)
1. Datenverarbeitungseinrichtung mit einer Vielzahl von Pipeline-Einheiten (10 - 1 3)
und einer Vielzahl von Sätzen (IPF, APF, OPF) von Registern, um Parameter
zwischen den Pipeline-Einheiten hindurchzuführen, wobei die erste der Pipeline-
Einheiten (10) einen Instruktionsdisponenten zum Einleiten von Instruktionen
aufweist, und bei dem Instruktionen durch jede der Pipeline-Einheiten nacheinander
verarbeitet werden und schließlich an der letzten der Pipeline-Einheiten (13)
beendet werden, dadurch gekennzeichnet, daß
a) die Einrichtung eine Vorrichtung (50) aufweist, die jeder Instruktion eine Slot-
Zahl zuweist, wenn diese Instruktion in der ersten der Pipeline-Einheiten (10)
eingeleitet wird,
b) jede der Pipeline-Einheiten (10 - 13) eine Vorrichtung aufweist, die die Slot-Zahl
benutzt, die der gerade durch die Pipeline-Einheit verarbeiteten Instruktion
zugewiesen worden ist, um ein individuelles Register innerhalb eines der Sätze
von Registern zu adressieren, wodurch dieser Instruktion zu geordnete
Parameter in die Lage versetzt werden, daß sie aus dem individuellen
Register ausgelesen oder in das individuelle Register eingeschrieben werden,
und
c) die Einrichtung ferner eine Vorrichtung (54) zum Zurücknehmenen der Zuwei
sung einer Slot-Zahl aufweist, wenn die Instruktion, der diese Slot-Zah gerade
zu geordnet wird, an der letzten Pipeline-Einheit (13) beendet wird, wo
durch diese Slot-Zahl für eine Zuweisung zu einer nachfolgenden Instruktion
verfügbar gemacht wird.
2. Einrichtung nach Anspruch 1, dadurch gekennzeichnet, daß die erste Pipeline-
Einheit (10) eine Vorrichtung (60 - 64) zum Einleiten von Instruktionen aus ersten
und zweiten unabhängigen Instruktionsströmen aufweist, wobei eine erste Vielzahl
der Slot-Zahlen für den ersten Strom und eine zweite Vielzahl der Slot-Zahlen für
den zweiten Strom reserviert wird.
3. Einrichtung nach Anspruch 2, dadurch gekennzeichnet, daß die letzte Pipeline-
Einheit (13) eine Vorrichtung (49) aufweist, die Instruktionen innerhalb eines jeden
dieser Ströme in der gleichen Reihenfolge wie in der, in der sie eingeleitet worden
sind, beendet.
4. Einrichtung nach Anspruch 2 oder 3, dadurch gekennzeichnet, daß mindestens eine
der Pipeline-Einheiten (11) eine Prioritätsvorrichtung (80 - 87) aufweist, die einem
der beiden Ströme Priorität in dieser Einheit zutei lt, und die vorzugsweise
Instruktionen aus diesem Strom zur Ausführung durch diese Einheit auswählt.
5. Einrichtung nach Anspruch 4, dadurch gekennzeichnet, daß die
Prioritätsvorrichtung eine Vorrichtung aufweist, die dem ersten Strom Priorität zuteilt, wenn nicht
eine vorbestimmte Anzahl von Instruktionen aus dem ersten Strom ausgewählt
worden ist, ohne daß Instruktionen aus dem zweiten Strom ausgewählt werden,
wobei in diesem Fall dem zweiten Strom Priorität zugeteilt wird.
6. Einrichtung nach Anspruch 2 oder 3, dadurch gekennzeichnet, daß jede einer
Vielzahl von Pipeline-Einheiten eine Vorrichtung (60 - 64; 100 - 105) aufweist, die
Instruktionen aus den beiden Strömen für eine Verarbeitung unabhängig von den
anderen Pipel ne-Einheiten auswählt.
7. Einrichtung nach einem der vorausgehenden Ansprüche, dadurch gekennzeichnet,
daß die Sätze von Registern einen Satz von Registern (TPF) enthalten, um
Informationen betreffend Fehler zu speichern, die während der Verarbeitung von
Instruktionen durch eine der Pipeline-Einheiten angezeigt worden sind.
8. Einrichtung nach einem der vorausgehenden Ansprüche, dadurch gekenzeichnet,
daß jede von mindestens einigen der Pipeline-Einheiten eine Vielzahl von Pipeline-
Teileinheiten aufweist, die miteinander in Serie geschaltet sind und überlappend
bedienbar sind.
9. Einrichtung nach einem der vorausgehenden Ansprüche, dadurch gekennzeichnet,
daß eine der Pipeline-Einheiten (113) eine Vorrichtung (100 - 105) aufweist, um
eine Verarbeitung einer Instruktion bei einer Anzeige eines Zustandes einzuleiten,
daß eine Instruktion ihre Verarbeitung in einer vorausgehenden der Pipeline-
Einheiten (12) erfolgreich abgeschlossen hat, jedoch bevor die Instruktion die
Ausführung in der vorausgehenden Pipeline-Einheit (12) abgeschlossen hat, wobei
die Vorgänge dieser beiden Pipeline-Einheiten (12, 13) sich überlappen.
10. Einrichtung nach Anspruch 9, dadurch gekennzeichnet, daß eine vorausgehende
Pipeline-Einheit (12) eine Nebenspeichereinheit aufweist, und daß die eine
Pipeline-Einheit (13) eine Ausführungseinheit besitzt, um einen Arbeitsvorgang an
einem Operanden durchzuführen, der aus dem Nebenspeicher aufgefunden wird,
wobei die Bedingung ist, daß der Operand im Nebenspeicher vorhanden ist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB888817911A GB8817911D0 (en) | 1988-07-27 | 1988-07-27 | Data processing apparatus |
Publications (2)
Publication Number | Publication Date |
---|---|
DE68927029D1 DE68927029D1 (de) | 1996-10-02 |
DE68927029T2 true DE68927029T2 (de) | 1997-04-03 |
Family
ID=10641211
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE68927029T Expired - Fee Related DE68927029T2 (de) | 1988-07-27 | 1989-07-12 | Pipelineprozessor |
Country Status (8)
Country | Link |
---|---|
US (1) | US5117490A (de) |
EP (1) | EP0352935B1 (de) |
JP (1) | JP2810896B2 (de) |
AU (1) | AU613217B2 (de) |
DE (1) | DE68927029T2 (de) |
GB (1) | GB8817911D0 (de) |
IE (1) | IE74215B1 (de) |
ZA (1) | ZA895349B (de) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5280597A (en) * | 1990-03-30 | 1994-01-18 | Mitsubishi Denki Kabushiki Kaisha | Pipeline processor with self timed data transfer |
US5261063A (en) * | 1990-12-07 | 1993-11-09 | Ibm Corp. | Pipeline apparatus having pipeline mode eecuting instructions from plural programs and parallel mode executing instructions from one of the plural programs |
EP0498067A2 (de) * | 1991-02-08 | 1992-08-12 | International Business Machines Corporation | Mikrokodeerzeugung für eine Maschine mit skalierbarem Verbundbefehlssatz |
GB9123271D0 (en) * | 1991-11-02 | 1991-12-18 | Int Computers Ltd | Data processing system |
US6043401A (en) * | 1992-05-26 | 2000-03-28 | Bp Amoco Corporation | Reactive, low molecular weight, viscous poly(1-olefins) and copoly(1-olefins) and their method of manufacture |
US5688887A (en) * | 1992-05-26 | 1997-11-18 | Amoco Corporation | Reactive, low molecular weight, viscous poly(1-olefins) and copoly(1-olefins) and their method of manufacture |
DE69415126T2 (de) * | 1993-10-21 | 1999-07-08 | Sun Microsystems Inc., Mountain View, Calif. | Gegenflusspipelineprozessor |
US5694565A (en) * | 1995-09-11 | 1997-12-02 | International Business Machines Corporation | Method and device for early deallocation of resources during load/store multiple operations to allow simultaneous dispatch/execution of subsequent instructions |
US5850563A (en) * | 1995-09-11 | 1998-12-15 | International Business Machines Corporation | Processor and method for out-of-order completion of floating-point operations during load/store multiple operations |
US5812086A (en) * | 1996-06-27 | 1998-09-22 | Motorola, Inc. | Method and apparatus for providing duplex communication service in geographical areas where conventional services are obstructed |
US5784028A (en) * | 1996-06-27 | 1998-07-21 | Motorola, Inc. | Method and apparatus for simplex delivery of signals to obstructed geographical areas |
US6119203A (en) * | 1998-08-03 | 2000-09-12 | Motorola, Inc. | Mechanism for sharing data cache resources between data prefetch operations and normal load/store operations in a data processing system |
US6535905B1 (en) | 1999-04-29 | 2003-03-18 | Intel Corporation | Method and apparatus for thread switching within a multithreaded processor |
US6542921B1 (en) | 1999-07-08 | 2003-04-01 | Intel Corporation | Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor |
US6643770B1 (en) * | 1999-09-16 | 2003-11-04 | Intel Corporation | Branch misprediction recovery using a side memory |
US6357016B1 (en) | 1999-12-09 | 2002-03-12 | Intel Corporation | Method and apparatus for disabling a clock signal within a multithreaded processor |
US6496925B1 (en) | 1999-12-09 | 2002-12-17 | Intel Corporation | Method and apparatus for processing an event occurrence within a multithreaded processor |
US6889319B1 (en) | 1999-12-09 | 2005-05-03 | Intel Corporation | Method and apparatus for entering and exiting multiple threads within a multithreaded processor |
US7051329B1 (en) * | 1999-12-28 | 2006-05-23 | Intel Corporation | Method and apparatus for managing resources in a multithreaded processor |
US7856633B1 (en) | 2000-03-24 | 2010-12-21 | Intel Corporation | LRU cache replacement for a partitioned set associative cache |
GB0019341D0 (en) * | 2000-08-08 | 2000-09-27 | Easics Nv | System-on-chip solutions |
US7017064B2 (en) * | 2001-05-09 | 2006-03-21 | Mosaid Technologies, Inc. | Calculating apparatus having a plurality of stages |
US7363474B2 (en) | 2001-12-31 | 2008-04-22 | Intel Corporation | Method and apparatus for suspending execution of a thread until a specified memory access occurs |
US7127561B2 (en) | 2001-12-31 | 2006-10-24 | Intel Corporation | Coherency techniques for suspending execution of a thread until a specified memory access occurs |
US8284844B2 (en) | 2002-04-01 | 2012-10-09 | Broadcom Corporation | Video decoding system supporting multiple standards |
US8024735B2 (en) | 2002-06-14 | 2011-09-20 | Intel Corporation | Method and apparatus for ensuring fairness and forward progress when executing multiple threads of execution |
EP1615123B1 (de) * | 2004-07-09 | 2010-04-07 | Michael Colin George Chapman | Hochleistungsfähiger benutzer-konfigurierbarer Prozessor |
US20090313455A1 (en) * | 2005-12-15 | 2009-12-17 | David Hennah Mansell | Instruction issue control wtihin a multithreaded processor |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3611307A (en) * | 1969-04-03 | 1971-10-05 | Ibm | Execution unit shared by plurality of arrays of virtual processors |
US3728692A (en) * | 1971-08-31 | 1973-04-17 | Ibm | Instruction selection in a two-program counter instruction unit |
GB1443777A (en) * | 1973-07-19 | 1976-07-28 | Int Computers Ltd | Data processing apparatus |
US4025771A (en) * | 1974-03-25 | 1977-05-24 | Hughes Aircraft Company | Pipe line high speed signal processor |
GB1506972A (en) * | 1976-02-06 | 1978-04-12 | Int Computers Ltd | Data processing systems |
GB1527289A (en) * | 1976-08-17 | 1978-10-04 | Int Computers Ltd | Data processing systems |
JPS5621240A (en) * | 1979-07-27 | 1981-02-27 | Hitachi Ltd | Information processor |
JPS5687282A (en) * | 1979-12-14 | 1981-07-15 | Nec Corp | Data processor |
US4390946A (en) * | 1980-10-20 | 1983-06-28 | Control Data Corporation | Lookahead addressing in a pipeline computer control store with separate memory segments for single and multiple microcode instruction sequences |
JPS57155666A (en) * | 1981-03-20 | 1982-09-25 | Fujitsu Ltd | Instruction controlling system of vector processor |
US4399507A (en) * | 1981-06-30 | 1983-08-16 | Ibm Corporation | Instruction address stack in the data memory of an instruction-pipelined processor |
JPS58129550A (ja) * | 1982-01-27 | 1983-08-02 | Toshiba Corp | 演算制御装置 |
US4519033A (en) * | 1982-08-02 | 1985-05-21 | Motorola, Inc. | Control state sequencer |
JPS5932045A (ja) * | 1982-08-16 | 1984-02-21 | Hitachi Ltd | 情報処理装置 |
US4594655A (en) * | 1983-03-14 | 1986-06-10 | International Business Machines Corporation | (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions |
JPS60123936A (ja) * | 1983-12-07 | 1985-07-02 | Fujitsu Ltd | バッフア記憶制御方式 |
US4701844A (en) * | 1984-03-30 | 1987-10-20 | Motorola Computer Systems, Inc. | Dual cache for independent prefetch and execution units |
JPH0769818B2 (ja) * | 1984-10-31 | 1995-07-31 | 株式会社日立製作所 | デ−タ処理装置 |
JPS63123130A (ja) * | 1986-11-12 | 1988-05-26 | Fanuc Ltd | パイプライン制御方式 |
US4811215A (en) * | 1986-12-12 | 1989-03-07 | Intergraph Corporation | Instruction execution accelerator for a pipelined digital machine with virtual memory |
US4893233A (en) * | 1988-04-18 | 1990-01-09 | Motorola, Inc. | Method and apparatus for dynamically controlling each stage of a multi-stage pipelined data unit |
GB8817912D0 (en) * | 1988-07-27 | 1988-09-01 | Int Computers Ltd | Data processing apparatus |
-
1988
- 1988-07-27 GB GB888817911A patent/GB8817911D0/en active Pending
-
1989
- 1989-07-12 DE DE68927029T patent/DE68927029T2/de not_active Expired - Fee Related
- 1989-07-12 EP EP89307058A patent/EP0352935B1/de not_active Expired - Lifetime
- 1989-07-12 IE IE225589A patent/IE74215B1/en not_active IP Right Cessation
- 1989-07-13 ZA ZA895349A patent/ZA895349B/xx unknown
- 1989-07-13 US US07/379,057 patent/US5117490A/en not_active Expired - Lifetime
- 1989-07-25 AU AU38901/89A patent/AU613217B2/en not_active Ceased
- 1989-07-27 JP JP1192821A patent/JP2810896B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
AU613217B2 (en) | 1991-07-25 |
ZA895349B (en) | 1990-04-25 |
IE74215B1 (en) | 1997-07-16 |
EP0352935A2 (de) | 1990-01-31 |
JPH02140831A (ja) | 1990-05-30 |
EP0352935A3 (de) | 1992-06-10 |
DE68927029D1 (de) | 1996-10-02 |
JP2810896B2 (ja) | 1998-10-15 |
IE892255L (en) | 1990-01-27 |
AU3890189A (en) | 1990-02-01 |
EP0352935B1 (de) | 1996-08-28 |
GB8817911D0 (en) | 1988-09-01 |
US5117490A (en) | 1992-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE68927029T2 (de) | Pipelineprozessor | |
DE68925397T2 (de) | Pipelineprozessor | |
DE3853529T2 (de) | Dynamische Mehrbefehle-Mehrdaten-Mehrpipeline-Gleitpunkteinheit. | |
DE3210816C2 (de) | ||
DE2846495C2 (de) | Zentraleinheit | |
DE68924400T2 (de) | Fliessbanddatenverarbeitungsvorrichtung. | |
DE2714805C2 (de) | ||
DE69635881T2 (de) | VLIW-Befehlsprozessor mit variabler Wortlänge | |
DE68921906T2 (de) | Verfahren für ein Multiprozessorsystem mit sich selbst zuordnenden Prozessoren. | |
EP1146432B1 (de) | Umkonfigurierungs-Verfahren für programmierbare Bausteine während der Laufzeit | |
DE69622219T2 (de) | Optimierungsgerät zum Entfernen von Gefahren durch Arrangierung der Befehlsreihenfolge | |
DE68928340T2 (de) | Fliessband-Datenprozessor | |
DE3638572C2 (de) | ||
DE19527031C2 (de) | Verzweigungsprozessor für ein Datenverarbeitungssystem und Verfahren zum Betreiben eines Datenverarbeitungssystems | |
DE3851488T2 (de) | Registerverwaltungssystem mit Ausführung von Befehlen in Unordnung in einem Computerprozessor. | |
DE69024068T2 (de) | Verfahren und Datenverarbeitungseinheit zur Pipeline- Verarbeitung von Register- und Registeränderungs- Spezifizierern in dem gleichen Befehl | |
DE68927492T2 (de) | Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten | |
DE69228360T2 (de) | Registerlesekontrolle | |
DE69623146T2 (de) | Verfahren und Vorrichtung zum Koordinieren der Benutzung von physikalischen Registern in einem Mikroprozessor | |
DE69415126T2 (de) | Gegenflusspipelineprozessor | |
DE3116100A1 (de) | Sprungabschaetz-zentraleinheit | |
DE4211245B4 (de) | Prozessorsystem in Parallelverarbeitungsbauart und Verfahren zu dessen Steuerung | |
DE4447238A1 (de) | Einrichung und Verfahren zum Vorhersagen von Verzweigungsinstruktionen | |
DE2715073A1 (de) | Mikroprogrammierte rechner-steuervorrichtung | |
EP0134831B1 (de) | Einrichtung im Befehlswerk eines Fliessbandprozessors zur Befehlsunterbrechung und -wiederholung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |