DE4134392C2 - Verfahren und Vorrichtung zum Ungültigmachen von Befehlen in Geräten mit Parallelverarbeitung - Google Patents

Verfahren und Vorrichtung zum Ungültigmachen von Befehlen in Geräten mit Parallelverarbeitung

Info

Publication number
DE4134392C2
DE4134392C2 DE4134392A DE4134392A DE4134392C2 DE 4134392 C2 DE4134392 C2 DE 4134392C2 DE 4134392 A DE4134392 A DE 4134392A DE 4134392 A DE4134392 A DE 4134392A DE 4134392 C2 DE4134392 C2 DE 4134392C2
Authority
DE
Germany
Prior art keywords
command
instruction
jump
execution
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE4134392A
Other languages
English (en)
Other versions
DE4134392A1 (de
Inventor
Hideki Ando
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of DE4134392A1 publication Critical patent/DE4134392A1/de
Application granted granted Critical
Publication of DE4134392C2 publication Critical patent/DE4134392C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards

Landscapes

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

Description

Die Erfindung bezieht sich auf ein parallel verarbeitendes Gerät nach dem Oberbegriff des Patentanspruchs 1 bzw. auf ein Verfahren zum Un­ gültigmachen eines Befehls in einer parallel verarbei­ tenden Einheit nach dem Oberbegriff des Patentanspruchs 16.
Gemäß dem Fortschritt in der Halbleitertechnik der letzten Jahre wurde die Leistungsfähigkeit eines Mikroprozessors immer größer und seine Rechengeschwindigkeit wurde ebenfalls immer größer. Obwohl die Zugriffszeit eines Halbleiterspeichers ebenfalls immer geringer wurde, kann dessen Geschwindigkeitssteigerung nicht der Geschwindigkeitssteigerung eines Mikroprozessors folgen, so daß der Zugriff auf einen Halbleiterspeicher einen Engpaß bei der Geschwindigkeitssteigerung eines Prozessors bildet. Daher wurde die Leistungsfähigkeit von Mikroprozessoren durch das Durchführen der Parallelverarbeitung gesteigert. Der Superskalar- Prozessor ist eines der Systeme, mit denen eine solche Parallelverarbeitung realisierbar ist. Wie in Fig. 1 dargestellt, ist ein Prozessor vom Superskalar-Typ (im weiteren als Superskalar­ prozessor bezeichnet) derart aufgebaut, daß ein Scheduler bzw. eine Steuerung 200 (normalerweise in einem Befehlsdecodierer vorgesehen) Parallelismen im Befehlsfluß erkennt und Befehle, die parallel zu verarbeiten sind, den parallel angeordneten Pipeline-Prozessoren (funktionelle Einheiten) P1, P2 und P3 zuführt. Es kann gesagt werden, daß ein Superskalar-Prozessor ein Computer (oder Prozessor) ist, der Eigenschaften hat, die nachfolgend beschrieben sind.
  • (1) Er ruft gleichzeitig eine Vielzahl von Befehlen ab.
  • (2) Er beinhaltet eine Vielzahl von funktionellen Einheiten (Pipeline-Prozessoren) und ist in der Lage, gleichzeitig eine Vielzahl von Befehlen durchzuführen.
  • (3) Er erkennt unter der Vielzahl der abgerufenen Befehlen diejenigen, die gleichzeitig bearbeitet werden können, um sie den entsprechenden funktionellen Einheiten zuzuführen.
Fig. 2 zeigt ein Blockschaltbild, das eine allgemeine Struktur eines Superskalarprozessors darstellt. Bezugnehmend auf Fig. 2 beinhaltet ein Superskalarprozessor eine Vielzahl funktioneller Einheiten 4, 5, 6 und 7, wobei jede eine vorbestimmte Funktion ausübt, eine Befehlsabruf- Einheit (IF) 2, die gleichzeitig eine Vielzahl von Befehlen aus einem Befehlsspeicher 1 abruft, eine Befehldecodier-Einheit 3, die gleichzeitig die von der Befehlsabruf-Einheit 2 abgerufenen Befehle vom Befehlsspeicher 1 empfängt und die Befehle erkennt, die gleichzeitig bearbeitet werden können, um die erkannten Befehle den entsprechenden funktionellen Einheiten zuzuführen, um Operations- Verarbeitungsergebnisse oder dergleichen zu speichern.
Der Befehlsspeicher 1 beinhaltet allgemein einen Cachespeicher und einen externen Hauptspeicher und speichert die für die Programmausführung notwendigen Befehle.
Die Befehlsabruf-Einheit 2 gibt einen Befehlszeiger IP an den Befehlsspeicher 1 ab und ruft entsprechend dem Befehlszeiger IP des Befehlsspeichers 1 gleichzeitig eine Vielzahl von Befehlen ab.
Die Befehlscodier-Einheit 3 beinhaltet einen Befehlsdecodierer, der ein Pipeline-Prozessor- Folgeregler ist. Der Befehlsdecodierer empfängt und decodiert die Vielzahl von Befehlen, die von der Befehlsabruf-Einheit 2 abgerufen wurden. Der Pipelineprozessor-Folgeregler (ein Befehls- Scheduler) identifiziert den Maschinentyp der decodierten Vielzahl von Befehlen, um gleichzeitig Befehle von unterschiedlichen Maschinentypen an die entsprechenden funktionellen Einheiten abzugeben. Die Maschinentypen bezeichnen, in welcher funktionellen Einheit die Befehle zu bearbeiten sind.
Die funktionellen Einheiten 4-7 sind parallel programmiert und führen die empfangenen Befehle als Antwort auf einen Zeittakt aus. In Fig. 2 sind bezugnehmend beispielhaft 4 funktionelle Einheiten dargestellt und es können maximal 4 Befehle parallel verarbeitet werden.
Die funktionellen Einheiten 4 und 5 sind Einheiten für arithmetische Ganzzahl-Operationen, die die Addition einer ganzen Zahl usw. durchführen und jeweils eine Ausführungs-Einheit (EX) und eine Schreib-Einheit (eine Maschinenzustands-Änderungs- Einheit; WB) beinhalten. Die Schreib-Einheit (WB) schreibt das Verarbeitungsergebnis eines Befehls, der in der Ausführungs-Einheit ausgeführt wurde, in ein Daten-Register (nicht gezeigt).
Die funktionelle Einheit 6 ist eine Einheit, die den Zugriff (Laden und Speichern von Daten) auf den Datenspeicher 8 ausführt und die eine Adressen- Erzeugungs-Einheit (ADR), eine Einheit zum Ausführen des Zugriffes auf den Speicher (MEM), und eine Schreib-Einheit (WB) zum Schreiben von Daten in das Daten-Register (nicht gezeigt) beinhaltet.
In der Schreib-Einheit (WB) der funktionellen Einheit 6 werden die aus dem Datenspeicher 8 geladenen Daten oder die Daten die in dem Datenspeicher 8 gespeichert werden sollen in das Register geschrieben oder aus dem Register gelesen.
Die funktionelle Einheit 7 ist eine Einheit zum Ausführen von arithmetischen Fließkomma- Operationen und beinhaltet drei Ausführungs- Einheiten (EX1, EX2, EX3) und eine Schreib-Einheit (WB) zum Schreiben von Ausführungsergebnissen in ein Datenregister (nicht gezeigt). Eine Fließkomma- Zahl ist eine Zahl, die durch das verwenden eines Exponentens und einer Mantisse dargestellt wird, ohne das die Dezimalkommastelle festgelegt ist. Eine arithmetische Fließkomma-Operation ist eine Operation, die Fließkommazahlen verwendet und bei der im Vergleich zu arithmetischen Operationen mit ganzen Zahlen ein weiter Zahlenbereich zugelassen ist, wogegen diese Operation mehr Verarbeitungszyklen benötigt als die arithmetische Operationen mit ganzen Zahlen.
Die Befehlsabruf-Einheit 2, die Befehlsdecodier- Einheit 3 und die funktionellen Einheiten 4 bis 7 sind ebenfalls in den Superskalar-Prozessor parallel programmiert, wobei diese Einheiten einander überlappend arbeiten. Demgemäß werden im Falle, daß kein Freiraum in den Pipeline- Prozessoren vorhanden ist, die Daten oder Befehle, die in dem vorangegangen Zyklus erzeugt wurden, den entsprechenden Einheiten zugeführt. Ein Befehl, der beispielsweise durch die Befehlsdecodier-Einheit 3 decodiert wurde, ist der in dem vorangegangenen Zyklus abgerufene Befehl.
Fig. 3 zeigt schematisch dargestellt die Aufbaustruktur der Befehlsdecodier-Einheit. Bezugnehmend auf Fig. 3 beinhaltet die Befehlsdecodiereinheit 3 vier parallel liegende Decodier-Schaltkreise D1 bis D4 und eine Pipeline- Ablaufsteuerung SC, die auf die Ergebnisse der Decodier-Schaltkreise D1 bis D4 anspricht, um die Befehle zu erkennen, die parallel verarbeitbar sind und um die Befehle an die entsprechenden funktionellen Einheiten abzugeben.
Die Decodier-Schaltkreise D1 bis D4 sind derart ausgebildet, daß sie entsprechend den Befehlen M1 bis M4, die gleichzeitig aus dem Befehlsspeicher 1 abgerufen wurden, entsprechende Befehle decodieren, um die Decodierergebnisse an die Pipeline- Ablaufsteuerung SC weiterzuleiten. Der Befehl FM, der der Befehlsdecodier-Einheit 3 zugeführt wurde, beinhaltet auch Adressen (logische Adressen im Befehlsspeicher, die der Befehlsabrufeinheit zugeführt wurden) A1 bis A4, die den jeweiligen Befehlen entsprechen.
Wenn in dem abgerufenen Befehl FM ein Sprungbefehl enthalten ist, steuert die Pipeline- Abfolgesteuerung SC eine Erzeugung eines Sprunges gemäß dem Sprungbefehl, in dem in der Befehlsabruf- Einheit eine Sprung-Zieladresse gesetzt wird, und die Verteilung der Befehle, die in der Abfolge dem Sprungbefehl untergeordnet sind, an die funktionellen Einheiten. Nun wird unter Bezugnahme auf die Fig. 2 und 3 die Operation auf einfache Weise beschrieben.
Die Befehlsdecodier-Einheit 3 führt eine Befehlsabrufanfrage an die Befehlsabruf-Einheit 2 zu. Die Befehlsabruf-Einheit 2 führt als Antwort auf die Befehlsabrufanfrage einen Befehlszeiger IP auf den Befehlsspeicher 1 zu, um entsprechend dem Befehlszeiger IP aus dem Befehlsspeicher 1 eine Vielzahl von Befehlen abzurufen. Die abgerufenen Befehle M1 bis M4 werden gleichzeitig den Decodier- Schaltkreisen D1 bis D4 zugeführt, die in der Befehlsdecodiereinheit 3 enthalten sind. Die Decodier-Schaltkreise D1 bis D4 decodieren gleichzeitig die zugeführte Vielzahl von Befehlen.
Die Pipeline-Abfolgesteuerung SC detektiert die Befehle, die ohne Rechenbetriebsmittel parallel verarbeitet werden können und Datenregister, die miteinander in den Befehlen konkurrieren, die in den Decodierkreisen D1 bis D4 decodiert sind, und gibt die Befehle ab, die in den entsprechenden funktionellen Einheiten parallel verarbeitet werden können.
Die funktionellen Einheiten, an die die Befehle abgegeben wurden, arbeiten mit Parallverarbeitung gemäß den abgegebenen Befehlen. Die funktionellen Einheiten 4 bis 7 sind für Parallelrechenbetrieb programmiert und die Verarbeitung wird mittels jeder der Ausführungs-Einheiten und Schreib- Einheiten, die in Fig. 2 dargestellt sind, durchgeführt.
Die Operationen der Befehlsabruf-Einheit 2, der Befehlsdecodier-Einheit 3 und der Befehls- Ausführungs-Einheit (funktionelle Einheiten 4 bis 7) sind ebenfalls für Parallelrechenbetrieb programmiert, so daß sie vorbestimmte Operationen einander überlappend ausführen.
Wie zuvor beschrieben ist es möglich die Befehle durch Parallelrechenbetrieb der Operationen von jeder der Einheiten der funktionellen Einheiten, und durch das Durchführen von Parallelverarbeitung in einer Vielzahl von funktionellen Einheiten mit hoher Geschwindigkeit auszuführen.
Beispiele eines Prozessors vom superskalaren Typ sind (1) S. McGeady, "The i960CA Superscalar Implementation of the 80960 Architecture", Proceedings of 35th COMPCON, IEEE 1990, pp. 232-240 und (2) R.D. Groves et. al., "An IBM second generation RISC Processor Architecture", Proceedings of 35th COMPCON, IEEE, 1990, pp. 166- 172 gezeigt.
Der Stand der Technik gemäß (1) offenbart einen Prozessor mit funktionellen Einheiten, REG, MEM und CTRL, dem es möglich ist drei von vier gleichzeitig abgerufenen Befehlen parallel auszuführen.
Der Stand der Technik gemäß (2) offenbart einen Prozessor, der einen Festkomma-Prozessor, einen Fließkomma-Prozessor, einen Sprungprozessor und eine Steuereinheit enthält und in dem vier Befehle gleichzeitig abgerufen werden und vier Befehle gleichzeitig ausgeführt werden können.
Wie zuvor beschrieben wird in einem Superskalar- Prozessor eine Vielzahl von Befehlen abgerufen und eine Vielzahl von Befehlen gleichzeitig ausgeführt, so daß es möglich ist eine Verarbeitungsgeschwindigkeit zu erreichen, die höher als in üblichen Prozessoren ist.
Wie in der gemäß Fig. 2 dargestellten Anordnungsstruktur ist es in dem Fall, daß vier Befehle (M1 bis M4; siehe Fig. 3), die gleichzeitig abgerufen wurden, parallel in vier funktionellen Einheiten 4 bis 7 ausgeführt werden, beispielsweise möglich, vier Befehle in vier Zeittaktzyklen zu verarbeiten und auszuführen (in dem Fall, in dem die Pipeline-Prozessoren der funktionellen Einheiten 4, 5 und 6 in einem Wartezustand sind, bis die Verarbeitung durch die funktionelle Einheit 7 beendet ist).
Während die Befehlssteuerung (oder die in der Befehlsdecodier-Einheit enthaltene Pipeline- Abfolgesteuerung SC) die Steuerung der Befehle ausführt, werden gleichzeitig abgerufene Befehle nicht immer gleichzeitig in den funktionellen Einheiten verarbeitet, so daß eine parallele Verarbeitung wirkungsvoll ausgeführt wird.
Fig. 4 zeigt in einem Diagramm ein Beispiel für das Abgeben von Befehlen, die von der Befehlsdecodier- Einheit abgegeben wurden. Die Befehlsabgabe der Befehls-Decodiereinheit wird im folgenden unter Bezugnahme auf Fig. 4 beschrieben.
Zuerst werden die vier abgerufenen Befehle in einem Zyklus 1 decodiert. Die Befehle 2 bis 4 können nicht mit Befehl 1 parallel verarbeitet werden, so daß nur Befehl 1 an die funktionelle Einheit abgegeben wird.
Die Befehle 2 und 3 können gleichzeitig verarbeitet werden, während Befehl 4, beispielsweise wegen einer abhängigen Beziehung, durch die er ein Verarbeitungsergebnis des Befehls 2 oder des Befehls 3 verwendet, nicht mit dem Befehl 2 und/oder den Befehl 3 parallel verarbeitet werden kann. In dem Zyklus 2 werden nur der Befehl 2 und der Befehl 3 abgegeben.
In einem Zyklus 3 wird der verbleibende Befehl 4 abgegeben. In einem Zyklus 4 werden ein Befehl 5 und ein Befehl 6 von vier neu abgerufenen Befehlen als Befehle abgegeben, die gleichzeitig verarbeitet werden können.
Nun ist die Reihenfolge der Befehlsabgabe derart, daß in dem Fall, daß Befehle nicht parallel verarbeitet werden können, ein Befehl mit einer niedrigeren Adresse bevorzugt abgegeben wird.
Es gibt einen Fall, bei dem Befehle nicht gleichzeitig abgegeben werden können, auch wenn keine solche abhängige Beziehung von Daten vorliegt. Dies ist der Fall, wenn ein Sprungbefehl in den abgerufenen Befehlen enthalten ist. Ein Befehl, der dem Sprungbefehl folgt, hat seine Gültigkeit, die in Abhängigkeit davon bestimmt wird, ob ein Sprung gemäß dem Sprungbefehl erzeugt wurde, so daß er nicht abgegeben werden kann, bis ein Zustand gemäß dem Sprungbefehl bestimmt ist. Ob ein Sprung gemäß dem Sprungbefehl erzeugt ist, wird in der Befehlsdecodier-Einrichtung bestimmt. Nachfolgend werden die Fälle betrachtet, bei denen nicht bestimmt werden kann, ob in dem Zyklus, in dem der Sprungbefehl der Befehlsdecodiereinrichtung zugeführt wurde, ein Sprung erzeugt wurde. Der Fall eines bedingten Sprungbefehles ist einer dieser Fälle. Im folgenden wird ein spezieller Fall beschrieben.
Der Sprungbefehl ist ein Befehl, bei dem ein Sprung erzeugt wird, falls der Inhalt eines Registers 0 ist, und anderen falls kein Sprung erzeugt wird. Das Register enthält jedoch keinen korrekten Wert, wenn nicht das Schreiben gemäß dem anderen vorangegangenen Befehl beendet ist.
In einem solchen Fall ist es notwendig, das die Ausführung des Sprungbefehls so lange aufzuschieben, bis das Schreiben in das Register gemäß dem vorangegangenen Befehl beendet ist.
Spezielle Befehle, die im folgenden beschrieben sind, sind als solche Befehle zu betrachten.
  • (1) LOAD R1, 50 (R2)
  • (2) BRZ R1, Label
  • (3) ADD R4, R5, R6
  • (4) SUB R7, R8, R9
Der Befehl (1) ist ein Befehl, bei dem im Datenspeicher 8 zu den Daten, deren Adressen Inhalt des Registers R2 sind, 50 addiert wird und in das Register R1 geladen werden.
Der Befehl (2) ist ein Befehl, bei dem ein Sprung zu der Marke bzw. "Label" erzeugt wird, wenn der Inhalt des Registers R1 0 ist.
Der Befehl (3) ist ein Befehl, bei dem der Inhalt eines Registers R6 zu dem Inhalt eines Registers R5 addiert wird und das Ergebnis der Addition in das Register R4 geschrieben wird.
Der Befehl (4) ist ein Befehl, bei dem der Inhalt eines Registers R9 von dem Inhalt eines Registers R8 subtrahiert wird und das Ergebnis der Operation in ein Register R7 geschrieben wird.
In dem Fall, daß diese vier Befehle der Befehls- Decodiereinrichtung zugeführt werden, kann der Sprungbefehl BRZ des Befehls (2), bis dahin, daß die Daten gemäß dem Befehl LOAD des Befehls (1) in das Register R1 geschrieben sind nicht bestimmen, ob ein Sprung erzeugt wird.
Die Gültigkeit der Befehle (3) und (4) wird in Abhängigkeit davon bestimmt, ob ein Sprung gemäß dem Sprungbefehl BRZ des Befehls (2) erzeugt ist. Insbesondere dann, wenn bestimmt ist, daß ein Sprung gemäß Befehl (2) erzeugt wurde, sind die Befehle (3) und (4) nicht auszuführen, jedoch sind sie gültig. Falls andererseits, bestimmt ist, daß kein Sprung gemäß Befehl (2) erzeugt wurde, sind die Befehle (3) und (4) gültig und sind den funktionellen Einheiten zur Ausführung zuzuführen. Ein Befehl-Abgabeverfahren, das in diesem Fall bearbeitet werden kann, ist in Fig. 5 dargestellt.
Fig. 5 zeigt in einem Diagramm Befehlsabgabebedingungen für den Fall, daß in den abgerufenen Befehlen ein Sprungbefehl enthalten ist. Im folgenden wird unter Bezugnahme auf Fig. 5 die Befehlsabgabe für den Fall beschrieben, daß der zuvor beschriebene Sprungbefehl BRZ enthalten ist.
In einem Zyklus 0 werden die Befehle (1) bis (4) zum Zuführen zu der Befehlsdecodier-Einheit 3 abgerufen.
In einem Zyklus 1 werden die Befehle (1) bis (4) decodiert.
In einem Zyklus 2 wird der Befehl (1) an eine funktionelle Einheit (die in Fig. 2 gezeigte funktionelle Einheit 6) abgegeben und ausgeführt.
Insbesondere im Zyklus 2 wird eine Adresse des Inhalts des Registers R2 zuzüglich 50 erzeugt. Zu diesem Zeitpunkt werden die Befehle (2) bis (4) nicht an die funktionellen Einheiten abgegeben und in der Befehlsdecodier-Einheit 3 gehalten. In Fig. 5 bezeichnet ID einen Halte-(Warte-)Zustand eines jeden Befehls in der Befehlsdecodier-Einheit.
In einem Zyklus 3 wird gemäß dem Befehl (1) ein Zugriff auf den Datenspeicher 8 durchgeführt. Der Inhalt des Registers R1 ist zu diesem Zeitpunkt noch nicht bestimmt, so daß die Befehle (2) bis (4) in der Befehlsdecodier-Einheit 3 gehalten werden.
In einem Zyklus 4 wird gemäß dem Befehl (1) das Einschreiben in das Daten-Register R1 durchgeführt und der Inhalt des Registers R1 bestimmt. Ob ein Sprung gemäß dem Befehl (2) erzeugt wird, wird durch dieses Datenschreiben bestimmt und es wird bestimmt, daß kein Sprung zu erzeugen ist.
In einem Zyklus 5 werden die Befehle (3) und (4) an die funktionellen Einheiten (4, 5) abgegeben und ausgeführt.
In einem Zyklus 6 werden die Ergebnisse der Befehle (3) und (4) in das Daten-Register geschrieben. In dem Fall, daß der Inhalt des Datenregisters R1 bestimmt ist und bestimmt ist, daß gemäß Befehl (2) im Zyklus 4 ein Sprung zu erzeugen ist, werden die Befehle (3) und (4) nicht abgegeben, diese Befehle werden ungültig gemacht und eine Operation zum Abrufen eines Sprungziel-Befehles wird im Zyklus 5 ausgeführt.
Aus der Druckschrift US 49 42 525 ist ein parallel verarbei­ tendes Gerät zum gleichzeitigen verarbeiten einer Vielzahl von Befehlen bekannt mit einer Vielzahl funktioneller Einhei­ ten zum Ausführen jeweiliger vorbestimmter Funktionen, einem Befehlsspeicher zum Speichern von Befehlen, einer Befehlsab­ rufeinheit zum Abrufen einer Vielzahl von Befehlen aus dem Befehlsspeicher, einer Dekodier-Einrichtung zum Erkennen gleichzeitig ausführbarer Befehle unter den abgerufenen Be­ fehlen und zum Zuführen dieser Befehle, falls vorhanden, zu den entsprechenden funktionellen Einheiten, wobei die Deko­ dier-Einrichtung eine Einrichtung enthält, mit der bestimmt wird, ob ein Sprungbefehl unter den abgerufenen Befehlen ent­ halten ist, sowie eine Einrichtung zum Zuführen eines eine Sprungausführung anzeigenden Signals, das eine Sprungausfüh­ rung bei erfüllter Sprungbedingung des Sprungbefehls anzeigt, wobei jede der funktionellen Einheiten eine Befehlsausfüh­ rungs-Einheit zum Ausführen eines Befehls aus der Dekodier- Einrichtung und eine Maschinenzustands-Änderungs-Einheit ent­ hält, die den Maschinenzustand gemäß dem Ausführungsergebnis der Befehlsausführungs-Einheit ändert.
Tritt ein bedingter Sprungbefehl auf, so wird mit der Ausfüh­ rung nachfolgender Befehle gewartet, bis alle für die Ent­ scheidung der Sprungbedingung benötigten Operanden verfügbar sind. Die auf einen bedingten Sprungbefehl folgenden Befehle können also erst nach festliegender Sprungentscheidung ausge­ führt werden. Diese Verzögerung bei der Abarbeitung nachfol­ gender Befehle führt zu einem verminderten Befehlsdurchsatz und damit zu einem Geschwindigkeitsverlust bei der Programm­ bearbeitung.
Der Erfindung liegt daher die Aufgabe zugrunde, ein parallel verarbeitendes Gerät sowie ein Verfahren zum Ungültigmachen eines Befehls in einer parallel verarbeitenden Einheit gemäß dem Oberbegriff der Patentansprüche 1 und 16 derart weiterzu­ bilden, daß zur Erhöhung der Verarbeitungsgeschwindigkeit die Befehle unabhängig von der Entscheidung eines vorangegangenen Sprungbefehles sofort an die Ausführungseinheiten weiterge­ leitet und dort bearbeitet werden.
Diese Aufgabe wird entsprechend dem kennzeichnenden Teil des Patentanspruchs 1 gelöst durch eine Einrichtung die einem Be­ fehl, der einer entsprechenden funktionellen Einheit zuge­ führt wird, eine Gültigkeits-Kennung hinzufügt, die die Gül­ tigkeit/Ungültigkeit des Befehls anzeigt, und eine Schreib- Verzögerungs-Kennung hinzufügt, die anzeigt, ob der Befehl auf einen Sprungbefehl folgt, und durch eine Steuerungs-Ein­ richtung, die abhängig von der Gültigkeits-, der Schreibver­ zögerungs-Kennung und dem eine Sprungausführung anzeigenden Signal die Maschinenzustands-Änderungs-Einheit veranlaßt, das Ausführungsergebnis eines auf einen Sprung folgenden Be­ fehls dann beizubehalten ohne den Maschinenzustand zu ändern, wenn die Sprungausführung noch unbestimmt ist, das Ausfüh­ rungsergebnis dann ungültig zu machen, wenn der Sprung bei Erfüllung der Sprungbedingung ausgeführt wird, und den Ma­ schinenzustand dann entsprechend dem Ausführungsergebnis zu ändern, wenn der Sprung bei Nichterfüllung der Sprungbedin­ gung nicht ausgeführt wird.
Weiterhin wird die Aufgabe entsprechend dem kennzeichnenden Teil des Patentanspruchs 16 durch ein Verfahren zum Ungültig­ machen eines Befehls gelöst, bei dem eine Gültigkeits-Ken­ nung, die die Gültigkeit oder Ungültigkeit eines zugeführten Befehls anzeigt, und eine Schreibverzögerungs-Kennung, die anzeigt, ob ein Befehl auf einen Sprungbefehl folgt, gemein­ sam mit dem zugehörigen Befehl der entsprechenden funktionel­ len Einheit zugeführt werden, und abhängig von der Gültig­ keits-, der Schreibverzögerungs-Kennung und dem eine Sprung­ erzeugung anzeigenden Signal die Maschinenzustands-Änderungs- Einheit veranlaßt wird, das Ausführungsergebnis eines auf einen Sprung folgenden Befehls dann beizubehalten ohne den Maschinenzustand zu ändern, wenn die Sprungausführung noch unbestimmt ist, das Ausführungsergebnis dann ungültig zu ma­ chen, wenn der Sprung bei Erfüllung der Sprungbedingung aus­ geführt wird, und den Maschinenzustand dann entsprechend dem Ausführungsergebnis zu ändern, wenn der Sprung bei Nichter­ füllung der Sprungbedingung nicht ausgeführt wird.
Aufgrund dieses Aufbaus kann die Rangfolge eines jeden Be­ fehls bezüglich einem bedingten Sprungbefehl durch die Verzö­ gerungs-Kennung festgelegt werden. Nachfolgende Befehle kön­ nen daher schon vor der Entscheidung eines vorangehenden Sprungbefehls bearbeitet werden, da aufgrund der hinzugefüg­ ten Kennung feststellbar ist, ob der Befehl dem bedingten Sprungbefehl nachgeordnet ist und daher mit der dem Ergebnis des nachfolgenden Befehls entsprechenden Änderung des Maschi­ nenzustands so lange gewartet werden kann, bis feststeht, ob der nachfolgende Befehl tatsächlich ausgeführt werden muß oder nicht.
Der Befehl wird dabei in einen das Ergebnis "haltenden" Zu­ stand versetzt, so daß es sich erübrigt, mit der Ausführung nachfolgender Befehle solange zu warten, bis die Operanden, die für die Sprungentscheidung benötigt werden, gelesen wur­ den, da ja der Maschinenzustand nicht durch durch nachfol­ gende Befehle verändert wird. Es wird also nur die Maschinen­ zustandsänderung, nicht aber die Befehlsausführung verzögert.
Bei auszuführenden Sprüngen werden die durch die Verzöge­ rungs-Kennung gekennzeichneten nachfolgenden Befehle mit Hilfe der Gültigkeits-Kennung ungültig gemacht, wodurch eine Änderung des Maschinenzustands verhindert wird.
Bei nichtauszuführenden Sprüngen muß nach feststehender Sprungentscheidung lediglich noch die Maschinenzustandsände­ rung gemäß dem Ergebnis des nachfolgenden Befehls ausgeführt werden, wodurch sich eine beachtliche Zeitersparnis erzielen läßt.
Nachfolgend wird die Erfindung unter Bezugnahme auf die Zeichnung anhand von Ausführungsbeispielen beschrieben.
Es zeigen
Fig. 1 ein Diagramm, das ein Strukturkonzept eines parallel verarbeitenden Gerätes darstellt,
Fig. 2 ein Diagramm, das die allgemeine Struktur eines Superskalar-Prozessors darstellt,
Fig. 3 ein Diagramm, das die Struktur einer Befehls-Decodiereinheit in einem Superskalar- Prozessor darstellt,
Fig. 4 ein Diagramm, das die Abgabebedingungen von Befehlen der Befehls-Decodiereinheit an die funktionellen Einheiten in einem Superskalar- Prozessor darstellt,
Fig. 5 ein Diagramm, das die Befehls- Abgabe/Ausführungsbedingungen zur Sprungerzeugung in üblichen parallel verarbeitenden Geräten darstellt,
Fig. 6 ein Diagramm, das schematisch ein erfindungsgemäßes Befehls-Ausführungssystem darstellt,
Fig. 7 ein logisches Diagramm, das schematisch die Struktur einer funktionellen Einheit in einem erfindungsgemäßen parallel verarbeitenden Gerät darstellt,
Fig. 8 ein Kurvendiagramm, das ein Zeittaktsignal, das in dem erfindungsgemäßen parallel verarbeitenden Gerät verwendet wird,
Fig. 9 ein logisches Diagramm, das schematisch die Struktur einer Register-Schreib-Einheit (Maschinenzustands-Änderungseinheit) gemäß einem Ausführungsbeispiel des erfindungsgemäßem parallel verarbeitenden Gerätes darstellt,
Fig. 10 ein Diagramm, das tabellarisch die Logik einer in Fig. 9 gezeigten "WB-busy-logic" darstellt,
Fig. 11 ein Diagramm, das tabellarisch eine mittels einer in Fig. 9 gezeigten "in-logic 1" eingeführte Logik darstellt,
Fig. 12 ein Diagramm, das tabellarisch eine mittels einer in Fig. 9 gezeigten "in_logic 2" eingeführte Logik darstellt,
Fig. 13 ein Kurvendiagramm, das eine Funktion der Maschinenzustands-Änderungs-Einheit für den Fall darstellt, daß bestimmt ist, daß in einem erfindungsgemäßen parallel verarbeitenden Gerät gemäß einem Ausführungsbeispiel ein Sprung erzeugt ist,
Fig. 14 ein Signalkurven-Diagramm, das die Funktion der Maschinen-Änderungseinheit für den Fall darstellt, daß bestimmt ist, daß kein Sprung gemäß einem Sprungbefehl in einem erfindungsgemäßen parallel verarbeitenden Gerät gemäß einem Ausführungsbeispiel erzeugt ist,
Fig. 15 ein logisches Diagramm, das schematisch eine Struktur der Befehls-Einheit einer funktionellen Einheit eines erfindungsgemäßen parallel verarbeitenden Gerät gemäß einem Ausführungsbeispiel darstellt,
Fig. 16 ein Diagramm, das tabellarisch die Logik der in Fig. 15 dargestellten "In-logic 3" darstellt, und
Fig. 17 ein Diagramm, das tabellarisch den logischen Betrieb des in Fig. 15 dargestellten L- Signalspeicher-Schaltkreises zum Ausgeben einer Gültigkeits-Kennung darstellt.
Zunächst wird vor der Beschreibung eines Ausführungsbeispiel, eine Befehlsabgabe- und Ausführungsabfolge in erfindungsgemäßen parallel verarbeitenden Geräten beschrieben.
Fig. 6 zeigt ein Diagramm, das die Befehlsabgabe- und Ausführungsabfolge in dem erfindungsgemäßen parallel verarbeitenden Gerät darstellt. Die Befehlsabgabe- und Ausführungsabfolge wird in folgendem unter Bezugnahme auf Fig. 6 beschrieben.
Befehle (1) bis (4) sind, wie in Fig. 6 dargestellt, dieselben wie die in Fig. 5 dargestellten Befehle (1) bis (4).
In einem Zyklus 0 werden die Befehle (1) bis (4) abgerufen.
In einem Zyklus 1 werden die Befehle (1) bis (4) in einer Befehls-Decodier-Einheit decodiert.
In einem Zyklus 2 werden die Befehle (1), (3) und (4) an funktionelle Einheiten abgegeben. Gemäß Befehl (1) wird eine Adresse eines Datenspeichers 8 erzeugt. Andererseits werden die Befehle (3) und (4) in den funktionellen Einheiten 4 und 5 ausgeführt, die beispielsweise Einheiten für Ganzzahloperationen sind. Befehl (2) wird in der Befehls-Decodier-Einheit 3 gehalten und es noch nicht bestimmt ist, ob ein Sprung in der Befehls- Decodier-Einheit ID erzeugt wird.
In einem Zyklus 3 wird ein Zugriff auf den Datenspeicher 8 gemäß Befehl (1) durchgeführt und ein gewünschter Datenwert ausgelesen. Andererseits werden die Ausführungsergebnisse der Befehle (3) und (4) zu einer Maschinenzustands-Änderungs- Einheit (WB) übermittelt, damit sie dort festgehalten werden. Zu diesem Zeitpunkt ist das Schreiben der Ausführungsergebnisse der Befehle (3) und (4) in die Datenregister noch nicht durchgeführt.
In einem Zyklus 4 wird der aus dem Datenspeicher 8 gelesene Datenwert gemäß Befehl (1) in ein Datenregister R1 eingeschrieben und damit der Inhalt des Registers R1 bestimmt. Es wird bestimmt, ob ein Sprung gemäß dem Befehl (2) in der Befehlsdecodier-Einheit gemäß der Bestimmung des Inhaltes des Registers R1 zu erzeugen ist. In dem Fall, daß bestimmt ist, daß kein Sprung erzeugt wird, werden die in der Maschinenzustands- Änderungs-Einheit WB festgehaltenen Aus­ führungsergebnisse der Befehle (3) und (4) gemäß der Bestimmung eines "Nicht-Sprunges" gemäß Befehl (2) in die entsprechende Register R4 und R7 eingeschrieben.
In dem Zyklus 4 werden die in der Maschinenzustands-Änderungs-Einheit WB fest­ gehaltenen Daten der Befehle (3) und (4) für den Fall ungültig gemacht, daß ein Sprung gemäß Befehl (2) bestimmt ist und daß bestimmt ist, daß der Sprung nach "label" erfolgen soll, und die Befehle, die sich in einer Befehls-Ausführungs-Einheit EX befinden, werden ebenfalls ungültig gemacht (was unter Anwendung einer Gültigkeits-Kennung ausgeführt wird). In dem nächsten Zyklus 5 wird mit der Erzeugung eines Sprunges ein Befehl für das Sprungziel "label" abgerufen.
Ein Vergleich zwischen der in Fig. 6 dargestellten Befehls-Abgabe/Ausführungsabfolge und der in Fig. 5 dargestellten Befehls-Abgabe/Ausführungsabfolge zeigt deutlich, daß erfindungsgemäß die Befehle (3) und (4) zwei Zyklen früher in der Befehls- Abgabe/Ausführungsabfolge ausgeführt werden und daß die Befehlsverarbeitung mit höherer Geschwindigkeit ermöglicht ist. Die erfindungsgemäße Befehls- Abgabe/Ausführungsabfolge wird im folgenden zusammenfassend beschrieben.
  • (1) Befehle, denen ein Sprungbefehl nachfolgt, werden an entsprechende funktionelle Einheiten abgegeben und ausgeführt, bevor bestimmt ist, ob gemäß dem Sprungbefehl ein Sprung erzeugt wird.
  • (2) Wenn diese nachfolgenden Befehle in einen Zustand des Neuschreibens des Maschinenzustandes gelangen, wird das Neuschreiben des Maschinenzustandes unterbrochen und in einen Wartezustand gebracht.
  • (3) Falls bestimmt ist, daß ein Sprung gemäß einem Sprungbefehl erzeugt ist, daß heißt, in dem Fall, daß bestimmt ist, daß ein Sprung erzeugt werden soll, werden die nachfolgenden Befehle ungültig. Falls andererseits bestimmt ist, daß kein Sprung gemäß dem Sprungbefehl erzeugt wird, ist das Neuschreiben des Maschinenzustandes gemäß diesen nachfolgenden Befehlen erlaubt.
Das Neuschreiben des Maschinenzustandes zeigt das Ändern des Zustands einer entsprechenden Einheit gemäß der Ausführung von Befehlen wie beispielsweise zum Neuschreiben des Inhalts des Daten-Registers, zum Neuschreiben des Inhalts des Datenspeichers 8 und zum Neuschreiben der Zustands- Kennung, an. Als nächstes wird eine Struktur zur Realisierung der in Fig. 6 dargestellten Befehls- Abruf/Ausführungsabfolge beschrieben.
Fig. 7 zeigt ein Diagramm, das eine Struktur eines Hauptteiles eines erfindungsgemäßen parallel verarbeitenden Gerätes gemäß einen Ausführungsbeispiel darstellt und das schematisch die Struktur eines Teiles der funktionellen Einheit (4 oder 5), zur Durchführung arithmetischer Ganzzahloperationen darstellt.
Gemäß Fig. 7 enthält die funktionelle Einheit (arithmetische Ganzzahloperations-Einheit) eine EX- Einheit, um mit einem Rechen- und Steuerwerk (ALU) 16 eine arithmetische Operation durchzuführen, und eine WB-Einheit zum Einschreiben des Ausführungsergebnisses in eine Register-Datei 9. Die EX-Einheit stellt in der funktionellen Einheit eine Befehls-Ausführungs-Einheit dar und die WB- Einheit stellt in der funktionellen Einheit eine Maschinenzustands-Änderungs-Einheit dar.
Die Befehls-Decodiereinheit (ID-Einheit) enthält einen Befehls-Decodierer 10, der eine Vielzahl aus dem Befehlsspeicher (in Fig. 7 nicht gezeigt) abgerufener Befehle decodiert. Der Befehls- Decodierer 10 enthält einen Decodier-Schaltkreis und eine Pipeline-Abfolgesteuerung, die in Fig. 3 dargestellt ist. Der Befehls-Decodierer 10 decodiert empfangene Befehle, erkennt, ob in diesen empfangenen Befehlen ein Sprungbefehl enthalten ist, und erkennt in dem Fall, daß ein Sprungbefehl enthalten ist, ob die Befehle nach dem Sprungbefehl kommen. Das Erkennen, ob die Befehle nach dem Sprungbefehl kommen oder nicht, wird gemäß den dem Befehls-Decodierer 10 zugeführten Adressen der Befehle ausgeführt, die mit den Befehlen (siehe Fig. 3) verbunden sind.
Der Befehls-Decodierer 10 gibt die decodierten Befehle an die EX-Einheiten der entsprechenden funktionellen Einheiten ab. Zu diesem Zeitpunkt erzeugt der Befehls-Decodierer 10 mit einem Befehl IR eine Kennung inst_avail, die anzeigt, ob der Befehl IR gültig ist, und eine Kennung delay_inst, die anzeigt, ob der Befehl IR sich hinter einem Sprungbefehl befindet. Die Kennung inst_avail ist eine Gültigkeits-Kennung und die Kennung delay_inst ist eine Schreibverzögerungs-Kennung, die anzeigt, ob eine Maschinenzustandsänderung gemäß dem Befehl zu verzögern ist.
Die Register-Datei 9 enthält eine Vielzahl von Registern und in jedem Register ist ein vorbestimmter Datenwert gespeichert. Die Struktur, in der die Register-Datei 9 als Datenregister eingesetzt ist, wird beispielsweise in Computern mit reduziertem Befehlssatz (RISC) verwendet. In einem RISC-Gerät erfolgt der Zugriff auf den Datenspeicher 8 nur durch die Befehle zum Laden (LOAD) und zum Speichern (STORE) und alle anderen Verarbeitungen erfolgen durch die Verwendung der Register-Datei 9. Die in Fig. 7 dargestellte Struktur der Register-Datei 9 ist dieselbe wie in RISC-Geräten.
Das in Fig. 7 dargestellte parallel verarbeitende Gerät arbeitet, wie in Fig. 8 dargestellt, als Antwort auf nicht überlappende zweiphasige Zeittaktsignale T und L. Der Beginn eines jeden Zyklus ist durch das Zeittaktsignal T bestimmt.
Die EX-Einheit enthält einen T-Zwischenspeicher 11, der als Antwort auf das Zeittaktsignal T den Befehl IR aus dem Befehlsdecodierer 10 festhält, einen T- Zwischenspeicher 12, der als Antwort auf das Zeittaktsignal T eine Gültigkeits-Kennung inst_avail aus dem Befehlsdecodierer 10 festhält, einen T-Zwischenspeicher 13, der als Antwort auf das Zeittaktsignal T eine Schreibverzögerungs- Kennung delay_inst aus dem des Befehls-Decodierers 10 zwischenspeichert, und T-Zwischenspeicher 14 und 15, die als Antwort auf das Zeittaktsignal T gleichzeitig zwei aus der Registerdatei 9 ausgelesenen Daten, data 1 und data 2, speichern.
Die entsprechend den arithmetischen Ganzzahl- Recheneinheiten ausgebildete Register-Datei 9 kann in einem Zyklus das Lesen von zwei Daten und das Schreiben von einem Datenwerk durchführen.
Die EX-Einheit enthält weiterhin L-Zwischenspeicher 17, 18 und 19, die Befehle und Kennungen in entsprechenden T-Zwischenspeicher 11 bis 13 als Antwort auf das Zeittaktsignal L halten. Der L- Zwischenspeicher 17 speichert einen Befehl EX_IR als Antwort auf das Zeittaktsignal L. Der L- Zwischenspeicher 18 speichert als Antwort auf das Zeittaktsignal L eine Gültigkeits-Kennung Ex_inst_avail, die in dem T-Zwischenspeicher 12 gespeichert ist. Der L-Zwischenspeicher 19 speichert als Antwort auf das Zeittaktsignal L eine Schreibverzögerungs-Kennung Ex_delay_inst ein, das in dem T-Zwischenspeicher-Schaltkreis 13 gespeichert ist. Das Zeichen "EX", vor den Signalen und Kennungen zeigt an, daß sie an die Ausführungs- Einheit abgegeben wurden.
Die EX-Einheit enthält weiterhin einen L-Zwischen­ speicher 20, der als Antwort auf das Zeittaktsignal L ein Ausgangssignal des Rechen- und Steuerwerkes (ALU) 16 festhält.
Die WB-Einheit enthält einen T-Zwischenspeicher 21, der als Antwort auf das Zeittaktsignal T einen Befehl des L-Zwischenspeicher 17 hält, einen T- Zwischenspeicher-Schaltkreis 22, der als Antwort auf das Zeittaktsignal T die in dem L- Zwischenspeicher 18 gespeicherte Gültigkeits- Kennung Ex_inst_avail L festhält, einen T- Zwischenspeicher 23, der als Antwort auf das Zeittaktsignal T die in dem L-Zwischenspeicher 19 gespeicherte Schreibverzögerungs-Kennung Ex_delay_inst_L festhält, und einen T-Zwischen­ speicher 24, der als Antwort auf das Zeittaktsignal T die Daten Ex_data_L des arithmetischen Rechenergebnisses festhält, die in dem L- Zwischenspeicher 20 gespeichert sind. Ein Register der Register-Datei 9 wird gemäß einem in dem T- Zwischenspeicher 21 gespeicherten Befehl WB_IR ausgewählt und ein Datenwert WB_data, der in dem T- Zwischenspeicher 24 gespeichert ist, wird in das ausgewählte Register eingeschrieben. Das Zeichen "WB", vor den Befehlen, Daten und Kennungen, die in den Zwischenspeichern 21, 22, 23 und 24 gespeichert sind, zeigt an, daß sie sich in einer Rückschreibe-Einheit befinden.
Das parallel verarbeitende Gerät enthält weiterhin einen WB-Steuerkreis 100, der auf ein Anzeigesignal "taken" der Sprungbestimmung, auf ein "Nicht- Sprung"-Bestimmungs-Anzeigesignal "not_taken" und auf ein eine Befehlsungültigkeit anzeigendes Signal "Ex_can" hin, die von dem Befehls-Decodierer 10 erzeugt wurden den Zustand der WB-Einheit in einen der Zustände, Daten-Haltezustand, Daten- Schreibausführungszustand und Daten- Ungültigkeitszustand einstellt. Unter Bezugnahme auf Fig. 7 wird anschließend die Befehlsabgabe/Ausführungs-Abfolge des erfindungsgemäßen parallel verarbeitenden Gerätes beschrieben.
Wenn der Befehlsdecodierer 10 einen Befehl IR an eine entsprechende funktionelle Einheit abgibt, wird von ihm eine Schreibverzögerungs-Kennung delay_inst und eine Gültigkeits-Kennung inst_avail dem Befehl IR angehängt oder hinzugefügt. In jeder funktionellen Einheit werden diese Kennungen delay_inst und inst_avail über den Pipeline- Prozessor (die EX- und die WB-Einheit im Falle einer Ganzzahl-Einheit) zusammen mit dem Befehl IR übertragen und zur Steuerung des Umschreibens des Maschinenzustandes verwendet.
Die Gültigkeits-Kennung inst_avail ist eine Kennung die anzeigt, ob ein vom Befehlsdecodierer 10 abgegebener Befehl ein gültiger Befehl ist, der auszuführen ist. Beispielsweise ist in dem Fall, daß eine Befehlsabruf-Anforderung an den Befehlsspeicher erzeugt wird und kein Befehl von dem Befehlsspeicher zugeführt wird, kein gültiger Befehl dem Befehlsdecodierer 10 zugeführt, so daß in diesem Zyklus kein gültiger Befehl zugeführt wird. Gemäß diesem Fall wird die Gültigkeits- Kennung inst_avail in den OFF-Zustand gebracht. Die Zustandserkennung wird durch die Beobachtung des Bereitschafts-Signals IR_READY durchgeführt, daß von dem Befehlsspeicher mit der Befehlszuführung übergeben wird. Wenn die Gültigkeits-Kennung inst_avail im ON-Zustand ist, wird angezeigt, daß der Befehl gültig ist und daß er in einer funktionellen Einheit ausgeführt wird. Die Gültigkeits-Kennung inst_avail die dem Befehl IR hinzugefügt wird, der von dem Befehlsdecodierer 10 an eine funktionelle Einheit abgegeben wird, wird auf "ON" gesetzt. Wie im folgenden beschrieben, werden die Kennungen delay_inst und inst_avail in jeder Einheit gesteuert.
(1) Die Befehlsdecodier-Einheit (ID-Einheit)
(a) eine Vielzahl von Befehlen, die der Befehls- Decodiereinheit ID zugeführt werden, sind in dem Befehlsdecodierer 10 decodiert. In dem Fall, daß in den zugeführten Befehlen ein Sprungbefehl enthalten ist, und es nicht möglich ist zu entscheiden ob in dem Zyklus ein Sprung entsprechend dem Sprungbefehl erzeugt werden soll, überführt der Befehlsdecodierer 10 die Schreibverzögerungs- Kennung delay_inst der Befehle nach dem Sprungbefehl, die an die funktionellen Einheiten abgegeben wurden, in den ON-Zustand und gibt sie zusammen mit der Gültigkeits-Kennung inst_avail, die in den ON-Zustand gebracht wurde, und den Befehlen IR ab, bis bestimmt ist, ob ein Sprung erzeugt wird.
(b) In dem Fall, daß kein Befehl auf die Bestimmung wartet, ob ein Sprung mit den dem Befehlsdecodierer zugeführten Befehlen erzeugt wird, ist es nicht notwendig, das Schreiben der Befehls-Ausführungsergebnisse zu verschieben. In diesem Fall wird die Schreibverzögerungs-Kennung delay_inst zu "OFF" gemacht und mit den Befehlen IR abgegeben.
(c) In dem Fall, daß ein Sprungbefehl enthalten ist und bestimmt ist, daß ein Sprung demgemäß erzeugt wird, ist es nicht notwendig die Befehle nach dem Sprungbefehl auszuführen, so daß die Gültigkeits-Kennungen inst_avail zu "OFF" gesetzt werden. Dann werden die Befehle IR nicht an die funktionellen Einheiten abgegeben. Die Verzögerungs-Kennungen delay_inst werden ebenfalls in den OFF-Zustand gebracht.
Die Befehle IR und die Kennungen delay_inst und inst_avail werden über die EX-Einheiten der funktionellen Einheiten an die WB-Einheiten übermittelt. In den WB-Einheiten wird die folgende Steuerung durchgeführt.
(2) Die WB-Einheit, in der das Neuschreiben (Wechseln) des Maschinen-Zustandes erfolgt
(a) In dem Fall, daß ein Befehl WB_IR ein Befehl ist, der ein Neuschreiben des Maschinenzustandes durchführt und die Schreibverzögerungs-Kennung delay_inst "ON" ist, befindet sich der Befehl WB_IR zum Bestimmen, ob ein Sprung erzeugt wird, in einem Wartezustand und eine Änderung des Maschinenzustandes hat nicht zu erfolgen. Daher wird das Neuschreiben des Maschinenzustandes offen gelassen und verzögert bis bestimmt ist, ob ein Sprung erzeugt ist.
(b) In dem Fall, daß ein Sprung entsprechend eines Sprungbefehls erzeugt ist, werden ein Sprung anzeigendes Signal "taken" und ein Signal EX_can zum Ungültigmachen eines Befehls, der in der EX- Einheit steht, von dem Befehlsdecodierer 10 erzeugt. Der WB-Steuerkreis 100 setzt die Gültigkeits-Kennung WB_inst_avail eines Befehls WB_IR, der die Kennungen WB_delay_inst und WB_inst_avail hat, die beide "ON" sind, in den OFF- Zustand. Dieses verursacht, daß der Befehl WB_IR in der WB-Einheit ungültig wird und daß die Änderung des Maschinenzustandes durch den Befehl WB_IR (das Datenschreiben in die Register-Datei 9 in der in Fig. 7 dargestellten Struktur) verhindert ist. Dieses verursacht, daß nach dem Sprungbefehl an die funktionellen Einheiten abgegebene Befehle ungültig sind.
(c) In dem Fall, in dem bestimmt ist, daß kein Sprung gemäß dem Sprungbefehl erzeugt ist, wird ein "Nicht-Sprung"-Erkennungs-Signal not_taken von dem Befehlsdecodierer 10 erzeugt. Dann setzt der WB- Steuerkreis 100 die Schreibverzögerungs-Kennung WB_delay_inst in den OFF-Zustand. Dies verursacht gemäß dem Befehl WB_IR eine Änderung des Maschinenzustandes, der sich, für den Fall, daß ein Sprung erzeugt wird, zum Schutz gegen eine sofortige Ausführung in einem schwebenden Zustand befindet. Unter Bezugnahme auf Fig. 7 wird der Betrieb nun genau geschrieben.
Die von den Befehlsspeicher abgerufenen Befehle sind in dem Befehlsdecodierer 10 decodiert. In dem Fall, daß das Decodierergebnis eine arithmetische Ganzzahl-Operation ist, werden von dem Befehlsdecodierer 10 zwei Register- Bezeichnungssignale (Register-Zeiger) zu der Register-Datei 9 erzeugt, und aus dieser werden zwei Daten, data 1 und data 2, gelesen, die Daten für eine arithmetische Operation sind.
Der Befehlsdecodierer 10 gibt als Decodierergebnis einen Befehl IR, eine Gültigkeits-Kennung inst_avail, daß im ON-Zustand anzeigt, daß der Befehl IR gültig ist, und eine Schreibverzögerungs- Kennung delay_inst ab. Die Schreibverzögerungs- Kennung delay_inst ist gemäß dessen gesetzt, ob der Befehl IR ein Befehl nach einem Sprungbefehl ist und ob bestimmt werden kann, ob ein Sprung gemäß dem Sprungbefehl in diesem Zyklus erzeugt wird. Im Fall eines Wartezustandes zur Bestimmung ob ein Sprung gemäß dem Sprungbefehl erzeugt wird, wird die Schreibverzögerungs-Kennung delay_inst in den ON-Zustand (binär "1") gebracht. In dem Fall, daß kein Sprungbefehl enthalten ist oder in dem Fall, daß bestimmt ist, daß ein Sprung gemäß dem Sprungbefehl erzeugt wird, ist die Schreibverzögerungs-Kennung delay_inst in den OFF- Zustand (binär "0") gesetzt. In dem Fall, daß bestimmt ist, daß ein Sprung gemäß einem Sprungbefehl in diesem Zyklus erzeugt ist, und der Befehl IR nicht notwendig ist, wird die Gültigkeits-Kennung inst_avail in den OFF-Zustand gebracht.
Eine Ausgabe des Befehlsdecodierers 10 und eine Ausgabe der Register-Datei 9 werden als Antwort auf das Zeittaktsignal T in den T-Zwischenspeichern 11 bis 15 gehalten. Die in den T-Zwischenspeichern 14 und 15 gehaltenen Daten tmp1 und tmp2 (entsprechend den Daten data 1 und data 2) werden dem Rechen- und Steuerwerk (ALU) 16 zugeführt und eine vorbestimmte vorgeschriebene arithmetische Operation wird durchgeführt.
Die in den T-Zwischenspeichern 11 bis 13 gehaltenen Befehle und Kennungen werden als Antwort auf das Zeittaktsignal L in den entsprechenden L- Zwischenspeichern 17 bis 19 gehalten. Eine Ausgabe des Rechen- und Steuerwerkes (ALU) 16 wird als Antwort auf das Zeittaktsignal L in dem L- Zwischenspeicher 20 gehalten. Dies führt zu einer Vervollständigung der Operation in der EX-Einheit.
In dem Fall, in dem kein Befehl in der WB-Einheit steht, werden als Antwort auf das Zeittaktsignal T die Befehle, Kennungen, und die in den L- Zwischenspeichern 17-20 gehaltenen Daten in den T-Zwischenspeichern 21-24 festgehalten. In dem Fall, in dem ein Befehl (d. h. ein Befehl der auf die Bestimmung wartet, ob ein Sprung erzeugt wird) in der WB-Einheit steht, hält die EX-Einheit, gesteuert von dem WB-Steuerkreis 100, weiterhin die Befehle, die Kennungen, und die Daten fest.
In dem Fall, daß die in dem L-Zwischenspeicher 23 gehaltene Kennung WB_delay_inst in der WB-Einheit im ON-Zustand ist, wird das Datenschreiben in die Register-Datei 9 durch die Kontrolle des WB- Steuerkreises 100 in einem Zustand gebracht, der die Änderung des Maschinenzustandes verzögert, und die zugeführten Daten bleiben darin festgehalten.
Falls bestimmt ist, daß in dem Befehlsdecodierer 10 ein Sprung gemäß dem Sprungbefehl erzeugt ist, wird ein eine Sprungbestimmung anzeigendes Signal taken erzeugt und dem WB-Steuerkreis 100 zugeführt. Der WB-Steuerkreis 100 bringt als Antwort auf das Signal taken die Schreibverzögerungs-Kennung WB_delay_inst in den OFF-Zustand und die Gültigkeits-Kennung WB_inst_avail in den OFF- Zustand. Dies verursacht, daß der in dem T- Zwischenspeicher 21 gehaltene Befehl WB_IR ungültig wird und daß die in dem T-Zwischenspeicher 24 gehaltenen Daten WB_data ungültig werden, und daß das Schreiben in die Register-Datei 9 nicht durchgeführt wird.
Falls andererseits bestimmt ist, daß gemäß dem Sprungbefehl kein Sprung in dem Befehlsdecodierer erzeugt ist, wird ein eine "Nicht-Sprungbestimmung" erkennendes Signal not_taken erzeugt und dem WB- Steuerkreis 100 zugeführt.
Der WB-Steuerkreis 100 bringt die in dem T- Zwischenspeicher festgehaltene Schreibverzögerungs- Kennung WB_delay_inst als Antwort auf das Signal not_taken in den OFF-Zustand. Dann wird gemäß dem in dem T-Zwischenspeicher 21 gehaltenen Befehl WB_IR die Wahl eines Registers der Register-Datei 9 durchgeführt und die Daten WB_data werden in das ausgewählte Register geschrieben.
Wenn ein eine Sprungbestimmung bestimmendes Signal taken in dem Befehlsdecodierer 10 erzeugt ist wird gleichzeitig ein Signal EX_can zum Ungültigmachen des in der EX-Einheit festgehaltenen Befehls EX_IR_L erzeugt. Die in dem L-Zwischenspeicher 18 gehaltene Gültigkeits-Kennung EX_inst_avail_L wird durch die Steuerung des WB-Steuerkreises 100 als Antwort auf das Signal EX_can in den OFF-Zustand gebracht, und das Ungültigmachen des in der EX- Einheit gehaltenen Befehls durchgeführt. Es folgt die Beschreibung einer Struktur, mit der die Vorbereitung eines Sprungverfahrens und das Ungültigmachen eines Befehles bei einer zuvor beschriebenen Sprungbestimmung durchzuführbar ist.
Fig. 9 zeigt ein Diagramm, in dem ein Beispiel einer logischen Struktur in einer Maschinenzustands- Änderungs-Einheit (WB-Einheit) dargestellt ist. Unter Bezugnahme auf Fig. 9 enthält die WB-Einheit einen Logik-Schaltkreis 30, der in der dem T- Zwischenspeicher 21 vorangehenden Einheit enthalten ist, einen Logik-Schaltkreis 31, der in der dem T-Zwischenspeicher 22 vorangehenden Einheit enthalten ist, einen Logik-Schaltkreis 32, der in der dem T-Zwischenspeicher 23 vorangehenden Einheit enthalten ist, und einen Logik-Schaltkreis 33, der in der dem T-Zwischenspeicher 24 vorangehenden Einheit enthalten ist.
Als Antwort auf ein Signal WB_busy, das anzeigt, daß die WB-Einheit sich in einem Maschinenzustands- Änderungsverzögerungs-Zustand befindet, d. h., daß Sprungbestimmungs-Wartezustand, daß der in der WB- Einheit gehaltene Befehl ungültig ist, passiert selektiv entweder ein Befehl EX_IR_L oder ein Befehl WB_IR_L den Logikkreis 30.
Als Antwort auf das Signal WB_busy das Signal WB_can und ein Signal EX_can, das anzeigt, daß der Befehl in der EX-Einheit ungültig ist, läßt der Logik-Schaltkreis 31 selektiv entweder eine Gültigkeits-Kennung EX_inst_avail_L aus der EX- Einheit oder eine Gültigkeits-Kennung WB_inst_avail_L der WB-Einheit passieren.
Als Antwort auf das Signal WB_busy und WB_can läßt der Logik-Schaltkreis 32 entweder eine Schreibverzögerungs-Kennung EX_delay_inst_L aus der EX-Einheit oder eine Schreibverzögerungs-Kennung WB_delay_inst_L der WB-Einheit passieren.
Als Antwort auf das Signal WB_busy und WB_can läßt der Logik-Schaltkreis 33 selektiv entweder einen Datenwert EX_data_L aus der EX-Einheit oder einen Datenwert WB_data_L der WB-Einheit passieren.
Die WB-Einheit enthält weiterhin einen Befehlsdecodierer 34 zum Decodieren des in dem T- Zwischenspeicher 21 festgehaltenen Befehls WB_IR und zum Erzeugen eines Schreibanzeige-Signals w_RF, das anzeigt, ob die Daten in die Register-Datei 9 zu schreiben sind, und einen Register-Zeiger address der Register-Datei 9 und einen Logik- Schaltkreis 29 zum Überwachen des Zustandes der WB- Einheit, um die WB-Einheit in einen der Zustände, den Datenhaltezustand, den Daten- Ungültigkeitszustand und den Daten- Schreibausführungs-Zustand zu setzen.
Der Logik-Schaltkreis 29 erzeugt die Signale WB_busy und WB_can und ein Signal wen, um als Antwort auf ein Registerdatei-Schreibanzeigesignal w_RF des Befehlsdecodierers 34, auf ein Punktbestimmungssignal taken vom Befehlsdecodierers 10, auf ein "Nicht-Sprung"-Bestimmungssignal not_taken, auf eine Gültigkeits-Kennung WB_inst_avail_L und auf eine Schreibverzögerungs- Kennung WB_delay_inst_L die Register-Datei 9 in einen Schreibaktivierungs-Zustand zu setzen.
Der Logik-Schaltkreis 31 führt eine logische Operation aus, die durch "in_logic 1" angezeigt ist. Die Logik-Schaltkreise 30, 32 und 33 führen eine logische Operation durch, die durch "in_logic 2" angezeigt ist. Der Logik-Schaltkreis 29 führt eine logische Operation aus, die durch WB_busy_logic angezeigt ist. Jetzt werden die durch die entsprechenden Logik-Schaltkreise eingeführten logischen Strukturen beschrieben.
Fig. 10 zeigt tabellarisch in einem Diagramm die Logik der WB_busy_logic, die mit dem Logik- Schaltkreis 29 eingeführt ist. Die Logik des Logik- Schaltkreises 29 wird im folgenden beschrieben.
  • (1) Der Fall, daß sich kein gültiger Befehl in der WB-Einheit befindet:
    Bei dieser Bedingung, hält die WB-Einheit keine zu schreibenden Daten fest, so daß sie keine Operation ausführt. Speziell in dem Fall, daß WB_inst_avail_L "off" (0) ist, sind alle Signale "wen", "WB_busy" und "WB_can" "off" (0).
  • (2) Der Fall, daß in der WB-Einheit ein gültiger Befehl festgehalten wird:
    Bei dieser Bedingung befindet sich "WB_inst_avail_L" in einem ON-Zustand (1).
  • (a) In dem Fall, daß das Signal w_RF aus dem Befehlsdecodierer 34 im OFF-Zustand ist, wird das Datenschreiben in die Register-Datei nicht durchgeführt. Solch ein Zustand ergibt sich beispielsweise für den Fall, daß die Bedingung für eine einfache Befehlsausführung bestimmt wird. Insbesondere wird ein solcher Zustand dann erreicht, wenn auf der Grundlage irgendeines Vergleichsergebnisses ein Verfahren bestimmt ist, da es beispielsweise nicht notwendig ist das Vergleichsergebnis in das Register zu schreiben.
In diesem Fall wird das Datenschreiben nicht durchgeführt und es ist möglich einem neuen Befehl in dem nächsten Zyklus abzurufen. Demgemäß sind in dem Fall, in dem "w_-RF" "OFF" ist, alle Signale "wen, WB_busy, und WB_can" in den OFF-Zustand gesetzt.
  • (b) Der Fall, daß das Signal w_RF "ON" ist und das Kennung WB_delay_inst_L "OFF" ist:
    In diesem Fall besteht in der WB-Einheit ein gültiger Befehl und diese befindet sich nicht in einem auf eine Sprungbestimmung wartenden Zustand, so daß das Datenschreiben ausgeführt werden darf. Demgemäß wird in dem Fall, daß "w_RF" "ON" ist und "WB_delay_inst_L" "OFF" ist, das Signal wen zu "ON", und die Signale WB_busy und WB_can werden zu "OFF".
  • (c) Der Fall, daß das Signal w_RF und die Kennung WB_delay_inst_L "ON" sind:
    In diesem Fall ist angezeigt, daß ein Befehl, der ein Datenschreiben ausführen soll, sich in der WB- Einheit befindet und daß der Befehl ein Befehl nach einem Sprungbefehl ist.
  • (1) In dem Fall, in dem nicht entschieden ist, ob in diesem Zustand ein Sprung in dem Befehlsdecodierer erzeugt wird, wird die WB-Einheit in einen Zustand gebracht, der die Maschinen- Zustandsänderung verschiebt. Demgemäß werden in dem Fall, daß sich beide die Signale not_taken und taken im OFF-Zustand befinden, die Signale wen und WB_can zu "OFF", und das Signal WB_busy zu "ON".
  • (2) Der Fall, daß bestimmt ist, daß in einem auf eine Sprungdurchführung wartenden Zustand kein Sprung erzeugt wird:
    In diesem Fall kann der Befehl in der WB-Einheit sofort ausgeführt werden. Demgemäß werden für den Fall, daß das Signal not_taken "ON" ist und das Signal taken "OFF" ist, das Signal wen zu "ON", und WB_busy und WB_can beide zu "OFF".
  • (3) Der Fall, daß bestimmt ist, das in dem Warte- Zustand ein Sprung erzeugt ist:
    In diesem Fall ist der in der WB-Einheit festgehaltene Befehl ungültig. Das Datenschreiben in die Register-Datei wird nicht ausgeführt und in einen Zustand gebracht, um auf einen in einem späteren Zyklus abgegebenen gültigen Befehl zu warten.
Demgemäß werden für den Fall, daß das Signal not_taken "OFF" ist und das Signal taken "ON" ist, die Signale wen und WB_busy zu "OFF" und das Signal WB_can wird zu "ON".
Die spezielle Schaltkreisstruktur, die die Logik der in Fig. 10 gezeigten "WB_busy_logic" ermöglicht ist nicht dargestellt, da sie basierend auf der in Fig. 10 gezeigten Tabelle auf einfache Weise ermöglicht werden kann. Die Logik kann durch die Verwendung von Gatterschaltkreisen, sowohl von UND- Gatter und ODER-Gatter als auch von PLD-Elementen (programmierbare logische Elemente) ermöglicht werden.
Fig. 11 zeigt in einer Tabelle das Diagramm einer Logik der "in_logic 1". Die "in_logic 1" wird durch den logischen. Schaltkreis 31 ausgeführt. Die Logik der "in_logic 1" wird unter Bezugnahme auf Fig. 11 im folgenden beschrieben.
  • (1) Der Fall, daß "WB_can" sich im ON-Zustand befindet:
    Dieser Zustand zeigt an, in welchem Zustand der Wartebefehl zur Sprungbestimmung in der WB-Einheit ungültig gemacht ist. Ob die WB-Einheit im nächsten Zyklus einen gültigen Befehl festhält hängt davon ab, ob die EX-Einheit in Zyklus ungültig ist. Wenn das Signal EX_can "OFF" ist, wird der vorliegende Befehl EX-Einheit in dem nächsten Zyklus der WB- Einheit zugeführt. Die Gültigkeit des Befehles wird gemäß der Kennung EX_inst_avail_L bestimmt. Demgemäß wird in dem Fall, daß das EX_can sich im OFF-Zustand befindet, die Kennung WB_avail gleich "EX_inst_avail_L".
In dem Fall, daß die Kennung EX_can "ON" ist, ist angezeigt, daß der Befehl in der EX-Einheit ungültig ist. Demgemäß wird im nächsten Zyklus von der EX-Einheit kein Befehl in die WB-Einheit zugeführt. Insbesondere in dem Fall, daß EX_can "ON" ist, wird "WB_inst_avail" "OFF".
  • (2) Der Fall, in dem "WB_can" "OFF" ist:
    Dieser Zustand zeigt an, daß die Befehls- Ungültigkeit-Operation in der WB-Einheit nicht ausgeführt wurde.
In Fig. 12 ist in einem Diagramm die mittels der "in_logic 2" eingeführte Logik gezeigt. Die Logik der "in_logic 2" wird unter Bezugnahme auf Fig. 12 nachfolgend beschrieben.
In dem Fall, daß das Signal WB_busy im OFF-Zustand ist wird angezeigt, daß kein Befehl vorliegt, der in dem nächsten Zyklus in der WB-Einheit festzuhalten ist, und daß der Befehl aus der EX- Einheit in die WB-Einheit genommen werden kann. Demgemäß wird, wenn das Signal WB_busy "OFF" ist, die Kennung WB_inst_avail gleich der Kennung EX_inst_avail_L.
In dem Fall, daß das Signal WB_busy sich im ON- Zustand befindet, wird angezeigt, daß die WB- Einheit einen Befehl im Wartezustand festhält, um zu bestimmen, ob ein Sprung erzeugt wird. Demgemäß ist es notwendig die Gültigkeits-Kennung dieses Zyklusses ebenfalls im nächsten Zyklus festzuhalten. Insbesondere wird die Kennung WB_inst_avail gleich der Kennung WB_inst_avail_L.
Das Vorsehen des Logik-Schaltkreises, der die zuvor beschriebene logische Operation in der WB-Einheit ausführt, ermöglicht es, Daten für den Fall mit hoher Geschwindigkeit in das Daten-Register zu schreiben, daß bestimmt ist, daß im Wartezustand auf die Bestimmung, ob ein Sprung gemäß dem Sprungbefehl erzeugt wird, kein Sprung erzeugt wird. Diese Operation wird im folgenden unter Bezugnahme auf ein Operationskurven-Diagrammes beschrieben.
Fig. 13 stellt in einem Diagramm eine Signal- Kurvenform der Operation in der WB-Einheit für den Fall dar, daß im Wartezustand auf die Bestimmung, ob ein Sprung erzeugt wird bestimmt ist, daß ein Sprung erzeugt wird. Die Operation für den Fall, daß bestimmt ist, daß ein Sprung erzeugt ist, wird im folgenden unter Bezugnahme auf Fig. 13 beschrieben.
Zyklus 0
In diesem Zyklus wird der WB-Einheit ein Befehl zugeführt, der ein Befehl nach einem Sprungbefehl ist, und der auf die Bestimmung des Zustandes des Sprungbefehles warten soll. Die Schreibverzögerungs-Kennung WB_delay_inst des Befehles ist im ON-Zustand. Die Gültigkeits-Kennung WB_inst_avail des Befehles ist auch im ON-Zustand. Die Zustände der Ausgaben WB_delay_inst_L und WB_inst_avail_L der Logikschaltkreise 26 und 27 sind als Antwort auf den Zeittakt L festgesetzt. Darauf als Antwort ist das Signal WB_busy des Logikschaltkreises 29 in den ON-Zustand gebracht.
Hierbei wird ein Zustand angenommen, bei dem ein der WB-Einheit zugeführter Befehl ein Befehl zum Datenschreiben in die Register-Datei 9 ist und wobei als Antwort auf das Zeittaktsignal T vom Befehlsdecodierer 34 ein Signal w_RF erzeugt wird. Der logische Schaltkreis 29 erzeugt gemäß dem Wartezustand für die Sprungbestimmung kein Schreib- Aktivierungs-Signal wen (zu "0" gesetzt) und setzt es in den Datenschreibunterbindungs-Zustand.
Normalerweise hat die Registerdatei 9 die Aufgabe als Antwort auf das Signal wen bei dem Zeittaktsignal L die Daten WB_data_L des Zwischenspeichers zu schreiben. Der Registerzeiger address wird jedoch als Antwort auf das Zeittaktsignal T festgesetzt. Das Datenschreiben in die Register-Datei 9 befindet sich in dem Zyklus 0 im unterbundenen Zustand.
Andererseits ändern die Logikschaltkreise 30, 31, 32 und 33 ihre Eingabepfade als Antwort auf das ON- Zustands-Signal WB_busy und wählen die Ausgänge der entsprechenden L-Zwischenspeicher 25, 26, 27 und 28, um sie den entsprechenden T-Zwischenspeichern 21, 22, 23 und 24 entsprechend zu übermitteln.
Der Zyklus 1
In diesem Zyklus befindet sich das Signal WB_busy im ON-Zustand, so daß der Befehl, die Kennung und die der WB-Einheit im Zyklus 0 zugeführten Daten, in den T-Zwischenspeichern 21 bis 24 festgehalten werden.
Der Zyklus 2
In diesem Zyklus wird festgestellt, daß ein Sprung erzeugt ist und es wird festgestellt, daß der Befehl in der WB-Einheit ungültig zu machen ist. In diesem Fall wird das Signal taken in den ON-Zustand gebracht und dem logischen Schaltkreis 29 zugeführt. Dieses verursacht die Unterbindung der Erzeugung eines Schreib-Aktivierungs-Signals wen und die Unterbindung des Datenschreibens in die Register-Datei. Das Signal WB_busy ist in den OFF- Zustand gesetzt und das Signal WB_can ist als Antwort auf das Signal taken in den ON-Zustand gesetzt. Die WB-Einheit wird in einen Zustand gebracht, in dem der Befehl von der EX-Einheit als Antwort auf den OFF-Zustand des Signals WB_busy zu empfangen ist.
In dem Fall, daß der in der EX-Einheit festgehaltene Befehl ein Befehl nach dem Sprungbefehl ist, der sich zu diesem Zeitpunkt nicht auf den Sprungziel-Befehl bezieht, wird ein Signal EX_can zum Ungültigmachen des in der EX- Einheit festgehaltenen Befehls erzeugt. Demgemäß entsprechen die Kennungen WB_ins t_avail und WB_delay_inst des Zyklus 3 den Kennungen des im Zyklus 2 in der EX-Einheit gehaltenen Befehls.
In dem Zyklus 3 sind alle Signale WB_busy, taken und WB_can in den OFF-Zustand gebracht und die WB- Einheit führt den von der EX-Einheit empfangenen Befehl aus.
Die "in_logic 2"-Logik der Logikschaltkreise 30, 32 und 33 empfangen ebenfalls das Signal WB_can an ihrem Eingang, während die Logik nur gemäß dem Signal WB_busy der zuvor beschriebenen logischen Operation gesetzt ist. Es kann eine Struktur eingesetzt werden, in der das Signal WB_can ebenfalls für die logische Operation verwendet wird. In dieser Struktur werden der Befehl, die Kennung und die Daten in der WB-Einheit festgehalten, wenn das Signal WB_busy "ON" ist und das Signal WB_can im OFF-Zustand ist, während der Befehl, die Daten und die Kennung aus der EX- Einheit passieren, ohne den ON/OFF-Zustand des Signals WB_can zu beachten, wenn das Signal WB_busy "OFF" ist. Eine Schaltkreisausführung für den Fall, daß beide der zwei Signale WB_busy und WB_can verwendet werden, ist in der Zeichnung gezeigt.
Obwohl das Signal EX_can immer in dem Fall erzeugt wird, wenn das Signal taken erzeugt ist, gibt es einen möglichen Fall, in dem es notwendig ist, die in der EX-Einheit festgehaltenen Daten ungültig zu machen, auch wenn kein Sprung erzeugt ist. In solch einem Fall ist das Signal EX_can erzeugt und es erfolgt das Ungültigmachen des Befehls in der EX- Einheit. Dies ist auch für das Signal WB_can der Fall.
Bezugnehmend auf die in Fig. 13 dargestellte Signal-Kurvenform weist die Zeitgebung des Ansteigens und Abfallens des Signals wen unterschiedliche Weiten auf und die Zeitgebung des Fallens des Signals taken hat ebenfalls eine verschiedene Weite. Dieses zeigt an, daß jedes Signal innerhalb dieser Zeitbreite mit einer geeigneten Zeitgebung ansteigen oder fallen kann. Insbesondere das Signal wen kann mit der Zeitgebung aktiviert werden, die das Schreiben der Daten WB_data_L in den festgesetzten Zustand aktiviert und der inaktive Zustand des Signals wen kann mit einer Zeitgebung festgesetzt werden, mit der er vor dem Daten-Schreib-Bestimmungszustand in den festgesetzten Zustand kommt.
Während das Signal taken mit der Zeitgebung des Zeittaktsignals L erzeugt wird, kann die Zeitgebung des Falles zum Definieren der Ausführungsoperation des Abrufverfahrens eines Sprungziel-Befehles des nächsten Zyklusses gesetzt werden, wenn bestimmt ist, daß ein Sprung erzeugt wird, und es kann beispielsweise wie zum Beginn des Zyklus 3 in Fig. 13 in dem festgesetzten Zustand gehalten werden. Unter Bezugnahme auf Fig. 14 wird nun die Bestimmungs-Operation eines "Nicht-Sprunges" beschrieben.
Fig. 14 erläutert in einem Kurvenform-Diagramm die Operation in dem Fall, in dem bestimmt ist, daß kein Sprung in dem Wartezustand zur Sprung- Zustands-Bestimmung in der WB-Einheit erzeugt wird.
Der Zyklus 0 und der Zyklus 1 sind die gleichen wie die in Fig. 13 dargestellten Zyklus 0 und Zyklus 1. Falls bestimmt ist, daß kein Sprung in dem Zyklus 2 erzeugt ist, wird das Signal not_taken in den ON- Zustand gebracht. Als Antwort darauf wird das Schreib-Aktivierungs-Signal wen in den ON-Zustand gebracht und das Datenschreiben in die Register- Datei 9 aktiviert. Die Register-Datei 9 schreibt die Daten WB_data_L des L-Zwischenspeichers 28 in ein Register, daß durch den Registerzeiger address vom Befehls-Decodierer 34 als Antwort auf das Signal wen ausgewählt ist.
Zu diesen Zeitpunkt ist der Befehl in der WB- Einheit ausgeführt und die Änderung des Maschinen- Zustands durchgeführt, so daß die WB-Einheit in den Zustand gebracht ist, in dem der nächste Befehl von der EX-Einheit empfangen werden kann. Demgemäß ist das Signal WB_busy in den OFF-Zustand gebracht. Das Signal WB_can bleibt im OFF-Zustand. Dies bringt jeden der Logikschaltkreise 30 bis 33 in einen Zustand, in dem die Ausgabe des entsprechenden L- Zwischenspeichers die EX-Einheit passiert.
In der Operation des 3. Zyklus wird die Ausführung entsprechend dem Befehl aus der EX-Einheit durchgeführt. Insbesondere, falls der von der EX- Einheit zugeführte Befehl ein ungültiger Befehl ist, wird keine Ausführung durchgeführt und falls er ein gültiger Befehl ist, wird die befehlsgemäße Durchführung ausgeführt. Die Logik und die Operation der EX-Einheit wird im folgenden beschrieben.
Fig. 15 zeigt in einem Blockschaltbild die Struktur einer EX-Einheit. In Fig. 15 sind die Teile, die dem Teil der in Fig. 7 dargestellten Struktur entsprechen, mit den selben Bezugszeichen ausgeführt. Unter Bezugnahme auf Fig. 15 enthält die EX-Einheit logische Schaltkreise 41, 42, 43, 44 und 45, die in den vorangehenden Einheiten der T- Zwischenspeichern 11, 12, 13, 14 und 15 vorgesehen sind und halten die L-Zwischenspeicher 35 und 36 die in den T-Zwischenspeichern 14 und 15 festgehaltenen Daten entsprechend als Antwort auf das Zeittaktsignal L fest.
Als Antwort auf das Signal WB_busy, wie in Fig. 9 dargestellt, passiert den logischen Schaltkreis 41 entweder der Befehl IR aus dem Befehlsdecodierer 10 der Decodier-Einheit ID oder der Befehl EX_IR_L des L-Zwischenspeichers 17.
Als Antwort auf das Signal WB_busy passiert den logischen Schaltkreis 42 entweder die Gültigkeits- Kennung inst_avail aus dem Befehlsdecodierer 10 oder die Gültigkeits-Kennung EX_inst_avail_L aus dem L-Zwischenspeicherkreis 18′.
Den logischen Schaltkreis 43 passiert entweder die Schreibverzögerungs-Kennung delay_inst aus dem Befehlsdecodierer 10 oder die Kennung EX_delay_inst_L aus dem L-Zwischenspeicher 19.
Die Logikschaltkreise 44 und 45 werden entweder von den Daten data1 und data2, die aus der Register- Datei gelesen wurden oder entsprechend von den in den L-Zwischenspeichern 35 und 36 gehaltenen Daten tmp1_L und tmp2_L passiert.
Der L-Zwischenspeicher 18′ hat als Antwort auf das Signal EX_can seine festgehaltenen Daten in den OFF-Zustand rückgesetzt und gesetzt. Die Steuerung der festgehaltenen Daten des L-Zwischenspeichers 18′ kann gemäß dem Signal EX_can durch eine Struktur ermöglicht werden, bei der in dem Eingang des L-Zwischenspeichers 18 ein Schaltkreis vorgesehen ist, mit dem der Ausgangswert des Schaltkreises als Antwort auf das Signal EX_can zu "EX_inst_avail" oder "0" gesetzt werden kann, falls das Signal EX_can mit der Erzeugung des Zeittaktsignals L in den festgesetzten Zustand gebracht ist.
Die Logikschaltkreise 41-45 führen dieselbe Logik ein und führen die mit "in_logic 3" bezeichnete Logik aus.
In Fig. 16 ist tabellarisch ein Diagramm gezeigt, daß die Logik der "in_logic 3" in einem Diagramm zeigt. Die Logik der "in_logic 3" wird im folgenden unter Bezugnahme auf Fig. 15 und 16 beschrieben.
In dem Fall, daß die WB-Einheit sich in dem Befehls-Haltezustand befindet, führt der Zustand dazu, daß die EX-Einheit keinen Befehl der WB- Einheit zuführen kann und in den Befehls- Haltezustand gebracht wird. Dieser Zustand ist durch das Signal WB_busy im ON-Zustand (binär 1) angezeigt. Demgemäß passieren in dem Fall, in dem das Signal WB_busy "ON" (binär 1) ist, die Ausgangssignale der L-Zwischenspeicher 17, 18′, 19, 35 und 36 die entsprechenden logischen Schaltkreise 41 bis 45 zu den entsprechenden T-Zwischenspeichern 11 bis 15.
Andererseits in dem Fall, in dem das Signal WB_busy "OFF" (binär 0) ist, kann die WB-Einheit die gehaltenen Befehle der WB-Einheit zuführen und empfängt von dem Befehlsdecodierer 10 einen neuen Befehl. Demgemäß für den Fall, daß das Signal WB_busy "OFF" ist, passieren die Ausgabe des Befehlsdecodierers 10 und die Ausgabe der Register- Datei 9 die logischen Schaltkreise 41 bis 45.
Fig. 17 zeigt tabellarisch in einem Diagramm den Operations-Zustand des L-Zwischenspeichers 18′. Die Operation des L-Zwischenspeichers 18′ wird im folgenden unter Bezugnahme auf Fig. 17 beschrieben. Falls das Signal EX_can in den ON-Zustand (binär 1) gesetzt ist, ist angezeigt, daß der in der EX- Einheit gehaltene Befehl ungültig ist. Demgemäß, falls das Signal EX_can "ON" ist, dreht die Ausgangs-Kennung EX_inst_avail_L des L- Zwischenspeichers 18′ zu "OFF" (binär 0). Andererseits in dem Fall, daß das Signal EX_can im OFF-Zustand (binär 0) ist, ist angezeigt, daß es nicht notwendig ist den in der EX-Einheit gehaltenen Befehl ungültig zu machen. In diesem Fall hält der L-Zwischenspeicher 18′ die Gültigkeits-Kennung EX_inst_avail des T- Zwischenspeichers 12. Insbesondere in dem Fall, in dem das Signal EX_can "OFF" ist, ist die Kennung EX_inst_avail_L die Gültigkeits-Kennung EX_inst_avail des Zyklus.Gemäß der zuvor beschriebenen Struktur ist es möglich gemäß dem Befehlsausführungszustand der WB- Einheit einen Befehl nach dem Sprungbefehl in der EX- Einheit auszuführen und zu halten. Das Signal WB_busy kann ebenfalls dem Befehlsdecodierer 10 zugeführt werden, um ihn zur Steuerung der Einstellung (Verzögerung) der Befehlsabgabe zu benutzen.Während eine Struktur zum Durchführen des Halten/Ungültigmachens des Befehls einer Ganzzahl- Einheit im vorangegangenen Ausführungsbeispiel beschrieben wurde, ist es möglich den selben Effekt in anderen funktionellen Einheiten wie einer Fließkomma-Arithmetik-Bearbeitungseinheit und einer Speicherzugriffs-Einheit durch die Anwendung derselben Struktur auf ihre Maschinenzustands- Änderungszustände zu erhalten. Zusätzlich ist die Anzahl der funktionellen Einheit nicht auf 4 begrenzt.Erfindungsgemäß erfolgt eine Strukturierung wie zuvor beschrieben in der Art, daß für einen Befehl nach einem Sprungbefehl eine Schreibverzögerungs- Kennung anzeigt, daß er einen Befehl nach dem Sprungbefehl ist, der zusammen mit dem Befehl an eine funktionelle Einheit abgegeben wurde, und daß die Maschinenzustandsänderungs-Operation in der funktionellen Einheit gemäß der Schreibverzögerungs-Kennung gesteuert wird. Demgemäß ist auch, falls nicht bestimmt ist ob ein Sprung gemäß dem Sprungbefehl erzeugt ist, es möglich, den Befehl nach dem Sprungbefehl an die funktionelle Einheit abzugeben und wenn bestimmt ist, daß kein Sprung erzeugt ist, ist es möglich die Maschinenzustandsänderung sofort durchzuführen, so daß es möglich ist, ein parallel verarbeitendes Gerät mit wesentlich verbesserter Verarbeitungs­ geschwindigkeit vorzusehen. Obwohl die Erfindung einzelnen beschrieben und dargestellt wurde ist klar verständlich, daß dieses nur der Darstellung und als Beispiel ohne Beschränkung dient und der Umfang und die Sichtweise der Erfindung nur mit dem Wortlaut der beiliegenden Ansprüche beschränkt ist.Ein Prozessor vom Superskalaren-Typ enthält einen Befehlsspeicher, eine Abruf-Einrichtung, die gleichzeitig eine Vielzahl von Befehlen aus dem Befehlsspeicher abruft, funktionelle Einheiten die entsprechende vorbestimmte Funktion ausführen, und eine Decodier-Einrichtung, die die abgerufenen Befehle decodiert und die Befehle an die entsprechende funktionellen Einheiten abgibt, die parallel verarbeitet werden können. Die Decodier­ einrichtung enthält einen Decodierer, der bestimmt, ob ein Sprung in den empfangenen Befehlen enthalten ist und ob ein Sprung gemäß dem Sprungbefehl erzeugt wird. Der Decodierer hängt mit der Befehlsabgabe an die funktionelle Einheit an den Befehl eine Schreibverzögerungs-Kennung, die anzeigt, ob der Befehl nach einem Sprungbefehl kommt und eine Gültigkeits-Kennung an, die anzeigt ob der Befehl gültig ist. Die funktionelle Einheit enthält eine Ausführungs-Einheit, die einen Befehl ausführt und eine Rückschreibe-Einheit die den Maschinenzustand gemäß dem Ausführungsergebnis in der Ausführungs-Einheit ändert. Ein Prozessor vom Superskalaren-Typ enthält einen Steuerschaltkreis der das Ändern des Maschinenzustandes durch die Rückschreib-Einheit unterbindet, wenn ein Sprung gemäß dem Sprungbefehl erzeugt wird. Die Steuerungs-Einrichtung setzt die Rückschreib- Einrichtung in einen Zustand der die Änderung des Maschinenzustandes verzögert, wenn noch nicht be­ stimmt ist, ob ein Sprung gemäß dem Sprungbefehl erzeugt ist und führt die Änderung des Maschinenzustandes mit der Rückschreibe-Einheit aus, wenn bestimmt ist, daß kein Sprung gemäß dem Sprungbefehl erzeugt wird.Ein Prozessor vom Superskalaren-Typ enthält einen Befehlsspeicher, eine Abruf-Einrichtung, die gleichzeitig eine Vielzahl von Befehlen aus dem Befehlsspeicher abruft, funktionelle Einheiten die entsprechende vorbestimmte Funktion ausführen, und eine Decodier-Einrichtung, die die abgerufenen Befehle decodiert und die Befehle an die entsprechenden funktionellen Einheiten abgibt, die parallel verarbeitet werden können. Die Decodier­ einrichtung enthält einen Decodierer, der bestimmt, ob ein Sprung in den empfangenen Befehlen enthalten ist und ob ein Sprung gemäß dem Sprungbefehl erzeugt wird. Der Decodierer hängt mit der Befehlsabgabe an die funktionelle Einheit an den Befehl eine Schreibverzögerungs-Kennung, die anzeigt, ob der Befehl nach einem Sprungbefehl kommt und eine Gültigkeits-Kennung an, die anzeigt ob der Befehl gültig ist. Die funktionelle Einheit enthält eine Ausführungs-Einheit, die einen Befehl ausführt und eine Rückschreibe-Einheit die den Maschinenzustand gemäß dem Ausführungsergebnis in der Ausführungs-Einheit ändert. Ein Prozessor vom Superskalaren-Typ enthält einen Steuerschaltkreis der das Ändern des Maschinenzustandes durch die Rückschreib-Einheit unterbindet, wenn ein Sprung gemäß dem Sprungbefehl erzeugt wird. Die Steuerungs-Einrichtung setzt die Rückschreib- Einrichtung in einen Zustand der die Änderung des Maschinenzustandes verzögert, wenn noch nicht be­ stimmt ist, ob ein Sprung gemäß dem Sprungbefehl erzeugt ist und führt die Änderung des Maschinenzustandes mit der Rückschreibe-Einheit aus, wenn bestimmt ist, daß kein Sprung gemäß dem Sprungbefehl erzeugt wird.

Claims (32)

1. Ein parallel verarbeitendes Gerät zum gleichzeitigen verarbeiten einer Vielzahl von Befehlen mit:
  • a) einer Vielzahl funktioneller Einheiten (4, 5, 6, 7) zum Ausführen jeweiliger vorbestimmter Funktionen,
  • b) einem Befehlsspeicher (1) zum Speichern von Befehlen,
  • c) einer Befehlsabrufeinheit (3) zum Abrufen einer Vielzahl von Befehlen aus dem Befehlsspeicher (1),
  • d) einer Dekodier-Einrichtung (3) zum Erkennen gleichzeitig ausführbarer Befehle unter den abgerufenen Befehlen und zum Zuführen dieser Befehle, falls vorhanden, zu den entsprechenden funktionellen Einheiten (4, 5, 6, 7), wobei die Dekodier-Einrichtung (3) eine Einrichtung (in 10) ent­ hält, mit der bestimmt wird, ob ein Sprungbefehl unter den abgerufenen Befehlen enthalten ist, sowie eine Einrichtung (in 10) zum Zuführen eines eine Sprungausführung bei erfüll­ ter Sprungbedingung des Sprungbefehls anzeigenden Signals (taken, not taken), wobei jede der funktionellen Einheiten (4, 5, 6, 7) eine Befehlsausführungs-Einheit (EX) zum Ausführen eines Befehls aus der Dekodier-Einrichtung (3) und eine Maschinenzustands-Änderungs-Einheit (WB) enthält, die den Maschinenzustand gemäß dem Ausführungsergebnis der Befehlsausführungs-Einheit (EX) ändert,
gekennzeichnet durch
  • e) eine Einrichtung (in 10) die einem Befehl, der einer ent­ sprechenden funktionellen Einheit (4, 5, 6,7) zugeführt wird, eine Gültigkeits-Kennung (inst avail) hinzufügt, die die Gül­ tigkeit/Ungültigkeit des Befehls anzeigt, und eine Schreibverzögerungs-Kennung (delay inst) hinzufügt, die an­ zeigt, ob der Befehl auf einen Sprungbefehl folgt, und durch
  • f) eine Steuerungs-Einrichtung (100), die abhängig von der Gültigkeits-, der Schreibverzögerungs-Kennung und dem eine Sprungausführung anzeigenden Signal die Maschinenzustands-Ände­ rungs-Einheit (WB) veranlaßt, das Ausführungsergebnis eines auf einen Sprung folgenden Befehls dann beizubehalten ohne den Ma­ schinenzustand zu ändern, wenn die Sprungausführung noch unbe­ stimmt ist, das Ausführungsergebnis dann ungültig zu machen, wenn der Sprung bei Erfüllung der Sprungbedingung ausgeführt wird, und den Maschinenzustand dann entsprechend dem Ausfüh­ rungsergebnis zu ändern, wenn der Sprung bei Nichterfülltung der Sprungbedingung nicht ausgeführt wird.
2. Ein parallel verarbeitendes Gerät nach Anspruch 1, dadurch gekennzeichnet, daß die Steuerungs-Einrichtung eine Einrichtung (29) enthält, die als Antwort auf eine Anzeige der Schreibverzöge­ rungs-Kennung, die dem Befehl in der Maschinenzustands-Ände­ rungseinheit zugefügt wird, daß der Befehl auf einen Sprungbe­ fehl folgt, und auf eine Anzeige des eine Sprungausführung an­ zeigenden Signals, daß ein Sprung ausgeführt wird, einen Befehl in der Maschinenzustands-Änderungseinheit ungültig macht, um die Änderung eines Maschinenzustandes gemäß dem Befehl zu un­ terbinden.
3. Ein parallel verarbeitendes Gerät nach Anspruch 1, dadurch gekennzeichnet, daß die Steuerungs-Einrichtung eine Einrichtung (29) enthält, mittels der als Antwort auf eine Anzeige der Schreibverzöge­ rungs-Kennung, die dem Befehl in der Maschinenzustandsände­ rungs-Einheit hinzugefügt wird, daß der Befehl auf einen Sprungbefehl folgt, auf eine Anzeige des eine Sprungausführung anzeigenden Signals, daß kein Sprung ausgeführt wird, und auf eine Anzeige der dem Befehl zugefügten Gültigkeits-Kennung, daß der Befehl gültig ist, eine einem Befehl in der Maschinen­ zustandsänderungs-Einheit entsprechende Maschinenzustandsände­ rung aktiviert wird.
4. Ein parallel verarbeitendes Gerät gemäß Anspruch 1, dadurch gekennzeichnet, daß die Steuerungs-Einrichtung eine Einrichtung (29, 23) enthält, mittels der der Wert der hinzugefügten Schreib­ verzögerungs-Kennung, als Antwort auf eine Anzeige der Schreib­ verzögerungs-Kennung, die dem Befehl in der Maschinenzu­ standsänderungs-Einheit hinzugefügt wurde, daß ein Befehl auf einen Sprungbefehl folgt, und auf eine Anzeige des eine Sprungausführung anzeigenden Signals, daß noch nicht bestimmt ist, ob ein Sprung ausgeführt wird, beibehalten wird.
5. Ein parallel verarbeitendes Gerät nach Anspruch 1, dadurch gekennzeichnet, daß die Steuerungseinrichtung eine Einrichtung (29, 30, 31, 32, 33) enthält, mittels der als Antwort auf die Anzeige der Schreibverzögerungs-Kennung, die dem Befehl in der Maschinen­ zustandsänderungs-Einheit zugefügt wurde, daß der Befehl auf einen Sprungbefehl folgt, und auf die Anzeige des eine Sprungausführung anzeigenden Signals, daß noch nicht bestimmt ist, ob ein Sprung ausgeführt wird, der Befehl und die Schreib­ verzögerungs-Kennung und die dem Befehl hinzugefügte Gültig­ keits-Kennung beibehalten wird.
6. Ein parallel verarbeitendes Gerät nach Anspruch 1, dadurch gekennzeichnet, daß die Steuerungseinrichtung eine Einrichtung (29) enthält, mittels der als Antwort auf die Anzeige der dem Befehl hinzugefügten Gültigkeits-Kennung, daß der Befehl ungültig ist, die Ausführung der Änderung eines Maschinenzustands gemäß einem Befehl in der Maschinenzustandsänderungs-Einrichtung unterbunden wird.
7. Ein parallel verarbeitendes Gerät nach Anspruch 1, dadurch gekennzeichnet, daß die Steuerungs-Einrichtung eine Einrichtung (34) zum Deco­ dieren eines Befehls in der Maschinenzustandsänderungs- Einrichtung und zum Erzeugen eines Maschinenzustandsänderungs- Befehlssignals gemäß dem Ergebnis der Decodierung aufweist, eine Einrichtung (29), durch die als Antwort auf das Maschinen­ zustandsänderungs-Befehlssignal, auf die Gültigkeits-Kennung und die Schreibverzögerungs-Kennung, die dem Befehl in der Ma­ schinenzustandsänderungs-Einheit hinzugefügt werden, und auf das eine Sprungausführung anzeigende Signal ein eine Verzögerung anzeigendes Signal, das den Zustand der Ausführungs­ verzögerung des Befehls in der Maschinenzustandsänderungs- Einheit anzeigt, und ein eine Befehlsungültigkeit anzeigendes Signal, daß die Ungültigkeit des Befehls in der Maschinenzu­ standsänderungs-Einheit anzeigt, erzeugt wird, und eine Einrichtung (30, 32, 33), durch die als Antwort auf das eine Verzögerung anzeigende Signal und das eine Befehlsungültigkeit anzeigende Signal der Befehl und die Schreibverzögerungs-Ken­ nung in der Maschinenzustandsänderungs-Einrichtung durch einen Befehl und eine Schreibverzögerungs-Kennung der Ausführungs- Einheit ersetzt wird.
8. Ein parallel verarbeitende Gerät nach Anspruch 1, dadurch gekennzeichnet, daß die Decodiereinrichtung eine Einrichtung enthält, mit der ein Ausführungs/Befehls-Ungültigkeitssignal erzeugt wird, um einen Befehl und ein Ausführungsergebnis in der Ausführungs- Einheit ungültig zu machen, wenn ein Sprung gemäß einem Sprung­ befehl erzeugt wird, und daß die Steuerungs-Einrichtung eine Einrichtung (31) enthält, mittels der als Antwort auf das Ausführungs/Befehls-Ungültigkeitssignal, auf das eine Verzögerung anzeigende Signal und auf das eine Befehlsungül­ tigkeit anzeigende Signal die Gültigkeits-Kennung in der Maschinenzustandsänderungs-Einheit gegen eine dem Befehl in der Ausführungs-Einheit zugefügte Gültigkeits-Kennung ersetzt wird.
9. Ein parallel verarbeitendes Gerät nach Anspruch 1, dadurch gekennzeichnet, daß die Decodierungseinrichtung eine Einrichtung (in 10) ent­ hält, die ein Ausführungs/Befehls-Ungültigkeitssignal erzeugt, um dadurch als Antwort auf die Erzeugung eines Sprunges gemäß einem Sprungbefehl, einen Befehl in der Ausführungs-Einheit ungültig zu machen, und daß das parallel verarbeitende Gerät weiterhin eine Einrichtung (42) enthält, mittels der als Antwort auf das Ausführungs/Befehls-Ungültigkeitssignal, eine Gültigkeits-Kennung, die dem Befehl in der Ausführungs-Einheit zugefügt wird, in einen Ungültigkeitszustand gesetzt wird.
10. Ein parallel verarbeitendes Gerät nach Anspruch 1, dadurch gekennzeichnet,
daß die Steuerungs-Einrichtung eine Einrichtung (29) enthält, die ein eine Verzögerung anzeigendes Signal erzeugt, daß eine Ausführungsverzögerung eines Befehls in der Maschinenzu­ standsänderungs-Einrichtung gemäß dem eine Sprungausführung anzeigenden Signal, dem Befehl in der Maschinenzustands­ änderungs-Einheit und der dem Befehl zugefügten Gültigkeits- und Schreibverzögerungs-Kennung anzeigt,
und daß das parallel verarbeitende Gerät weiterhin eine Einrichtung (41, 42, 43, 44, 45) enthält, mittels der als Antwort auf das eine Verzögerung anzeigende Signal, ein Befehl, eine Gültigkeits-Kennung und eine Schreibverzögerungs-Kennung in der Ausführungseinheit beibehalten wird.
11. Ein parallel verarbeitendes Gerät nach Anspruch 1, gekennzeichnet durch
einen ersten Zwischenspeicher (11, 12, 13, 14, 15), der in der Ausführungs-Einheit vorgesehen ist, um den Befehl, die Gültig­ keits-Kennung und die Schreibverzögerungs-Kennung, die von der Decodiereinrichtung empfangen werden, als Antwort auf ein er­ stes Zeittaktsignal zwischenzuspeichern,
einen zweiten Zwi­ schenspeicher (17, 18, 19, 20, 35, 36), der in der Ausführungs- Einheit vorgesehen ist, um eine Ausgabe des ersten Zwischen­ speichers als Antwort auf ein zweites Zeittaktsignal (L) zwi­ schenzuspeichern, wobei der zweite Zwischenspeicher eine Aus­ führungsergebnis-Zwischenspeichereinrichtung (20) enthält, mit­ tels der ein Ausführungsergebnis der vorbestimmten Funktion der entsprechenden funktionellen Einheit zwischengespeichert wird,
einen dritten Zwischenspeicher (21, 22, 23, 24), der in der Ma­ schinenzustandsänderungs-Einheit vorgesehen ist, um die Ausgabe des zweiten Zwischenspeichers als Antwort auf das erste Zeit­ taktsignal zwischenzuspeichern,
einen vierten Zwischenspeicher (25, 26, 27, 28), der in der Maschinenzustandsänderungs-Einheit vorgesehen ist, um eine Ausgabe des dritten Zwischenspeichers als Antwort auf das zwei­ te Zeittaktsignal zwischenzuspeichern, und
eine Rückschreibe-Decodiereinrichtung (34), um einen in dem dritten Zwischenspeicher zwischengespeicherten Befehl zu deco­ dieren, wobei mittels der Rückschreibe-Decodiereinrichtung ein Maschinenzustandsänderungs-Befehlssignal (w_RF) erzeugt wird, wenn der decodierte Befehl eine Maschinenzustandsänderung anzeigt, wobei mittels der Steuerungs-Einrichtung (100) durch die Wahl eines der Ausführungszustände des mit der Rückschreibe-Decodiereinrichtung decodierten Befehls die Maschinenzustandsänderungs-Einrichtung in einen der Zustände des Maschinenzustandsänderungs-Ausführens, des Ausführungs­ ungültigmachens und des Ausführungsverzögerns versetzt wird, die Ausführung darin verzögert wird, und als Antwort auf das Maschinenzustandsänderungs-Befehlssignal, auf das eine Sprungausführung anzeigende Signal und auf die Gültigkeits- und die Schreibverzögerungs-Kennung, die in dem vierten Zwischen­ speicher zwischengespeichert sind, der decodierte Befehl un­ gültig gemacht wird.
12. Ein parallel verarbeitendes Gerät nach Anspruch 11, dadurch gekennzeichnet,
daß die Steuerungs-Einrichtung eine Einrichtung (29) zum Erzeu­ gen eines eine Verzögerung anzeigendes Signales (WB_busy), das als Antwort auf das Maschinenzustandsänderungsbefehls-Signal, auf das eine Sprungerzeugung anzeigende Signal und auf die Gül­ tigkeits- und die Schreibverzögerungs-Kennung, die in den vier Zwischenspeichereinrichtungen gespeichert sind, anzeigt, daß die Ausführung der Änderung durch die Maschinenzustandsände­ rungs-Einrichtung sich verzögert, und
eine Einrichtung (30, 32, 33) enthält, mittels der als Antwort auf das eine Verzögerung anzeigende Signal, selektiv entweder der Befehl und die Schreibverzögerungs-Kennung aus der zweiten Zwischenspeichereinrichtung oder der Befehl und die Schreib­ verzögerungs-Kennung aus der vierten Zwischenspeichereinrich­ tung zu der dritten Zwischenspeichereinrichtung übertragen wird.
13. Ein parallel verarbeitendes Gerät nach Anspruch 12, dadurch gekennzeichnet,
daß mittels der Decodiereinrichtung ein Ausführungslöschungs- Signal (EX_can) erzeugt wird, das das Löschen eines Befehls in der Ausführungs-Einheit bei der Erzeugung eines Sprunges gemäß dem Sprungbefehl anzeigt,
und daß die Steuerungs-Einrichtung weiterhin eine Einrichtung (29) aufweist zum Erzeugen eines eine Rückschreibelöschung anzeigenden Signals (WB_can), daß das Löschen der Ausführung eines Befehls in der Maschinenzu­ standsänderungs-Einrichtung als Antwort auf das Maschinenzu­ standsänderungsbefehls-Signal, auf das eine Sprungausführung anzeigende Signal, auf die Gültigkeits- und die Schreibverzöge­ rungs-Kennung, die in der vierten Zwischenspeichereinrichtung gespeichert sind, anzeigt,
und eine Einrichtung (31) beinhal­ tet, mittels der als Antwort auf das eine Ausführungslöschung anzeigende Signal, auf das eine Verzögerung anzeigende Signal und auf das eine Rückschreibelöschung anzeigende Signal selektiv eine der in der zweiten Zwischenspeichereinrichtung gespeicherten Gültigkeits-Kennung, der in der vierten Zwischenspeichereinrichtung gespeicherten Gültigkeits-Kennung, und einer eine Ungültigkeit anzeigenden Kennung mit vorbestimmtem logischen Pegel der dritten Zwischenspeicher­ einrichtung zugeführt wird.
14. Ein parallel verarbeitendes Gerät nach Anspruch 12, dadurch gekennzeichnet, daß weiterhin eine Einrichtung (41, 42, 43, 44, 45) enthalten ist, mittels der als Antwort auf das eine Verzögerung anzei­ gende Signal, entweder ein Befehl, eine Gültigkeits-Kennung und eine Schreibverzögerungs-Kennung aus der Decodier-Einrichtung oder der Befehl, die Gültigkeits-Kennung und die Schreibverzö­ gerungs-Kennung, die in der zweiten Zwischenspeichereinrichtung gespeichert sind, zu der ersten Zwischenspeichereinrichtung weiterleitbar sind.
15. Ein parallel verarbeitendes Gerät nach Anspruch 13, ge­ kennzeichnet durch eine Einrichtung zum Setzen der in der zweiten Zwischenspei­ chereinrichtung gespeicherten Gültigkeits-Kennung als Antwort auf das Ausführungslöschungs-Signal.
16. Ein Verfahren zum Ungültigmachen eines Befehls in einer parallel verarbeitenden Einheit, in der eine Vielzahl von Be­ fehlen aus einem Befehlsspeicher (1) abgerufen werden, um die abgerufenen Befehle durch eine Vielzahl funktioneller Einheiten (4, 5, 6, 7) parallel zu verarbeiten, wobei jede eine entspre­ chend dem empfangenen Befehl vorbestimmte Funktion ausführt und jede eine Befehlsausführungs-Einheit (EX) zum Ausführen eines empfangenen Befehls und eine Maschinenzustands-Änderungs- Einheit (WB) enthält, die den Maschinenzustand gemäß einem Ausführungsergebnis der Befehlsausführungs-Einheit ändert, wobei das Verfahren die Verfahrensschritte umfaßt,
  • a) daß parallel ausführbare Befehle unter den abgerufenen Befehlen erkannt werden,
  • b) daß diese parallel ausführbaren Befehle den jeweiligen funktionellen Einheiten (4, 5, 6, 7) zugeführt werden,
  • c) daß der Erkennungsschritt die Schritte umfaßt, daß erkannt wird, ob ein Sprungbefehl in der abgerufenen Vielzahl von Be­ fehlen enthalten ist und daß ein eine Sprungausführung bei er­ füllter Sprungbedingung des Sprungbefehls anzeigendes Signal (taken, not_taken) erzeugt wird, gekennzeichnet durch die Schritte,
  • d) daß eine Gültigkeits-Kennung (inst_avail), die die Gültig­ keit oder Ungültigkeit eines zugeführten Befehls anzeigt, und eine Schreibverzögerungs-Kennung (delay_inst), die anzeigt, ob ein Befehl auf einen Sprungbefehl folgt, gemeinsam mit dem zu­ gehörigen Befehl der entsprechenden funktionellen Einheit (4, 5, 6, 7) zugeführt werden, und
  • e) daß abhängig von der Gültigkeits-, der Schreibverzöge­ rungs-Kennung und dem eine Sprungerzeugung anzeigenden Signal die Maschinenzustands-Änderungs-Einheit (WB) veranlaßt wird, das Ausführungsergebnis eines auf einen Sprung folgenden Be­ fehls dann beizubehalten ohne den Maschinenzustand zu ändern, wenn die Sprungausführung noch unbestimmt ist, das Ausführungs­ ergebnis dann ungültig zu machen, wenn der Sprung bei Erfüllung der Sprungbedingung ausgeführt wird, und den Maschinenzustand dann entsprechend dem Ausführungsergebnis zu ändern, wenn der Sprung bei Nichterfüllung der Sprungbedingung nicht ausgeführt wird.
17. Verfahren nach Anspruch 16, dadurch gekennzeichnet, daß der Schritt enthalten ist, daß als Antwort auf eine Anzeige der Schreibverzögerungs-Kennung, die dem Befehl in der Maschi­ nenzustandsänderungs-Einrichtung hinzugefügt wird, daß der Be­ fehl nach einem Sprungbefehl kommt und auf eine Anzeige des ei­ ne Sprungausführung anzeigenden Signals, daß ein Sprung ausge­ führt wird, ein Befehl in der Maschinenzustandsänderungs- Einheit ungültig gemacht wird und die Änderung des Maschinenzu­ stands gemäß dem Befehl unterbunden wird.
18. Verfahren gemäß Anspruch 16, dadurch gekennzeichnet, daß der Schritt des Setzens den Schritt enthält, daß als Ant­ wort auf eine Anzeige der Schreibverzögerungs-Kennung, die dem Befehl in der Maschinenzustandsänderungs-Einheit hinzugefügt wird, daß der Befehl nach einem Sprungbefehl kommt, auf eine Anzeige des eine Sprungausführung anzeigenden Signals, daß kein Sprung ausgeführt wird, und auf eine Anzeige der dem Befehl hinzugefügten Gültigkeits-Kennung, daß der Befehl gültig ist, die Änderung des entsprechenden Maschinenzustands gemäß einem Befehl in der Maschinenzustandsänderungs-Einrichtung aktiviert wird.
19. Verfahren nach Anspruch 16, dadurch gekennzeichnet, daß als Antwort auf eine Anzeige der Schreibverzögerungs-Ken­ nung, die dem Befehl in der Maschinenzustandsänderungs-Einheit hinzugefügt wird, daß der Befehl auf einen Sprungbefehl folgt und auf die Anzeige des eine Sprungausführung anzeigenden Si­ gnals, daß noch nicht bestimmt ist ob ein Sprung ausgeführt wird, der Wert der Schreibverzögerungs-Kennung beibehalten wird.
20. Verfahren nach Anspruch 16, dadurch gekennzeichnet, daß als Antwort auf eine Anzeige der Schreibverzögerungs-Ken­ nung, die dem Befehl in der Maschinenzustandsänderungs-Einheit hinzugefügt wird, daß der Befehl auf einen Sprungbefehl folgt und auf eine Anzeige des eine Sprungausführung anzeigenden Si­ gnals, daß noch nicht bestimmt ist, ob ein Sprung ausgeführt wird, ein Befehl und eine dem Befehl hinzugefügte Schreibverzö­ gerungs- und Gültigkeits-Kennung beibehalten werden.
21. Verfahren nach Anspruch 16, dadurch gekennzeichnet, daß als Antwort auf eine Anzeige der Gültigkeits-Kennung, die dem Befehl in der Maschinenzustandsänderungs-Einrichtung hinzu­ gefügt wird, daß der Befehl ungültig ist, die Ausführung der Maschinenzustandsänderung gemäß dem Befehl unterbunden wird.
22. Verfahren nach Anspruch 16, dadurch gekennzeichnet, daß ein Befehl in der Maschinenzustandsänderungs-Einheit deco­ diert wird und ein Maschinenzustandsänderungsbefehls-Signal gemäß dem Ergebnis der Decodierung erzeugt wird, daß als Antwort auf das Maschinenzustandsänderungsbefehls-Signal, auf die Gül­ tigkeits-Kennung und auf die Schreibverzögerungs-Kennung, die dem Befehl in der Maschinenzustandsänderungs-Einheit hinzuge­ fügt wird, und auf das eine Sprungausführung anzeigende Signal, ein eine Verzögerung anzeigendes Signal, daß den Zustand der verzögerten Ausführung des Befehls in der Maschinenzustandsän­ derungs-Einheit anzeigt, und ein eine Befehlsungültigkeit an­ zeigendes Signal, daß die Ungültigkeit des Befehls in der Ma­ schinenzustandsänderungs-Einheit anzeigt, erzeugt werden, und daß ein Befehl und eine Schreibverzögerungs-Kennung der Aus­ führungs-Einheit als Antwort auf das eine Verzögerung anzei­ gende Signal und auf das eine Befehlsungültigkeit anzeigende Signal anstelle des Befehls und der Schreibverzögerungs-Kennung in der Maschinenzustandsänderungs-Einheit eingesetzt werden.
23. Verfahren nach Anspruch 22, dadurch gekennzeichnet daß weiterhin der Schritt enthalten ist, daß ein Ausfüh­ rungs/Befehls-Ungültigkeitssignal erzeugt wird, um einen Befehl und ein Ausführungsergebnis in der Ausführungs-Einheit ungültig zu machen, wenn bei erfüllter Sprungbedingung ein Sprung gemäß dem Sprungbefehl ausgeführt wird, und daß als Antwort auf das Ausführungs/Befehls-Ungültigkeitssignal, auf das eine Verzöge­ rung anzeigende Signal und auf das eine Befehlsungültigkeit anzeigende Signal die Gültigkeits-Kennung, die dem Befehl in der Ausführungs-Einheit hinzugefügt wird, anstelle der Gültigkeits-Kennung in der Maschinenzustandsänderungs-Einheit eingesetzt wird.
24. Verfahren nach Anspruch 16, dadurch gekennzeichnet,
daß weiterhin die Schritte enthalten sind, daß ein Ausfüh­ rungs/Befehls-Ungültigkeitssignal als Antwort auf die Ausfüh­ rung eines Sprunges bei erfüllter Sprungbedingung gemäß dem Sprungbefehl erzeugt wird, um einen Befehl in der Ausführungs- Einheit ungültig zu machen, und
daß eine Gültigkeits-Kennung, die dem Befehl in der Ausfüh­ rungs-Einheit hinzugefügt wird, als Antwort auf das Ausführungs/Befehls-Ungültigkeitssignal in den Ungüligkeitzu­ stand gesetzt wird.
25. Verfahren nach Anspruch 16, dadurch gekennzeichnet,
daß weiterhin die Schritte enthalten sind, daß gemäß dem eine Sprungausführung anzeigenden Signal, dem Befehl in der Maschi­ nenzustandsänderungs-Einheit, der Gültigkeits-Kennung und der Schreibverzögerungs-Kennung, die dem Befehl hinzugefügt sind, ein eine Verzögerung anzeigendes Signal erzeugt wird, um eine Ausführungsverzögerung eines Befehls in der Maschinenzustands­ änderungs-Einheit anzuzeigen, und
daß als Antwort auf das eine Verzögerung anzeigende Signal der Befehl, die Gültigkeits-Kennung und die Schreibverzögerungs- Kennung in der Ausführungs-Einheit beibehalten werden.
26. Ein parallel verarbeitendes Gerät nach Anspruch 1, gekennzeichnet durch eine Daten-Speichereinrichtung (9) zum Speichern von Ergebnis­ sen von ausgeführten Befehlen, wobei jede der funktionellen Einheiten (4, 5, 6, 7) eine Schreibeinrichtung (WB; 28, 19, 94) aufweist, mit der die Ausführungsergebnisse der funktionellen Einheiten in die Daten-Speichereinrichtung (9) geschrieben wer­ den.
27. Verfahren zur Parallelverarbeitung von Befehlen in paral­ lel verarbeitenden Geräten mit einem Verfahren zum Ungültigma­ chen von Befehlen nach Anspruch 16, dadurch gekennzeichnet,
daß das Verfahren die Schritte enthält,
daß eine vorbestimmte Anzahl von Befehlen abgerufen werden, die einen durch die Nichtausführung eines Sprungbefehls bedingten Befehl enthalten,
daß in einen Datenspeicher ein Ergebnis eines ausgeführten Be­ fehls, der nicht durch die Nichtausführung eines Sprungbefehls bedingt ist, geschrieben wird,
daß in den Datenspeicher ein Er­ gebnis des ausgeführten Befehls, der durch die Nichtausführung eine Sprungbefehls bedingt ist, verzögert geschrieben wird, und
daß die durch die Nichtausführung eines Sprungbefehls bedingten Befehle gelöscht werden, ohne das deren Ausführungsergebnisse geschrieben werden, falls ein Sprung bei erfüllter Sprungbe­ dingung ausgeführt wird.
28. Ein parallel verarbeitendes Gerät nach Anspruch 26, dadurch gekennzeichnet, daß die Steuerungs-Einrichtung (100) eine Schreibeinrichtung (29) enthält, die als Antwort auf zumindest eines der Kennungs- Signale, die Ergebnisse der von den funktionellen Einheiten (4-7) ausgeführten Befehlen selektiv in die Daten-Speichereinrich­ tung (9) schreibt.
29. Ein parallel verarbeitendes Gerät nach Anspruch 28, dadurch gekennzeichnet, daß das zumindest eine Kennungs-Signal der Schreibverzögerungs- Kennung entspricht.
30. Ein Verfahren zur parallelen Befehlsverarbeitung nach An­ spruch 27, gekennzeichnet durch die Schritte:
daß zumindest eines der Kennungs-Signale an jeden der abgerufe­ nen Befehle angehängt wird, und daß die ausführbaren Befehle gleichzeitig ausgeführt werden.
31. Verfahren nach Anspruch 30, dadurch gekennzeichnet, daß das zumindest eine Kennungs-Signal der Schreibverzögerungs- Kennung entspricht.
DE4134392A 1990-10-17 1991-10-17 Verfahren und Vorrichtung zum Ungültigmachen von Befehlen in Geräten mit Parallelverarbeitung Expired - Fee Related DE4134392C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2279653A JP2535252B2 (ja) 1990-10-17 1990-10-17 並列処理装置

Publications (2)

Publication Number Publication Date
DE4134392A1 DE4134392A1 (de) 1992-04-23
DE4134392C2 true DE4134392C2 (de) 1996-06-05

Family

ID=17613981

Family Applications (1)

Application Number Title Priority Date Filing Date
DE4134392A Expired - Fee Related DE4134392C2 (de) 1990-10-17 1991-10-17 Verfahren und Vorrichtung zum Ungültigmachen von Befehlen in Geräten mit Parallelverarbeitung

Country Status (3)

Country Link
US (1) US5522084A (de)
JP (1) JP2535252B2 (de)
DE (1) DE4134392C2 (de)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5446849A (en) * 1990-11-30 1995-08-29 Kabushiki Kaisha Toshiba Electronic computer which executes squash branching
JP2760273B2 (ja) * 1993-12-24 1998-05-28 日本電気株式会社 演算装置及びその制御方法
TW353732B (en) * 1994-03-31 1999-03-01 Ibm Processing system and method of operation
GB2296350B (en) * 1994-12-21 1999-10-06 Advanced Risc Mach Ltd Data processing divider
JPH08194679A (ja) * 1995-01-19 1996-07-30 Texas Instr Japan Ltd ディジタル信号処理方法及び装置並びにメモリセル読出し方法
US5905881A (en) * 1995-11-30 1999-05-18 Unisys Corporation Delayed state writes for an instruction processor
US5796997A (en) * 1996-05-15 1998-08-18 Hewlett-Packard Company Fast nullify system and method for transforming a nullify function into a select function
US5958042A (en) 1996-06-11 1999-09-28 Sun Microsystems, Inc. Grouping logic circuit in a pipelined superscalar processor
US5867699A (en) * 1996-07-25 1999-02-02 Unisys Corporation Instruction flow control for an instruction processor
JPH1063500A (ja) * 1996-08-23 1998-03-06 Matsushita Electric Ind Co Ltd 信号処理装置
DE10101949C1 (de) * 2001-01-17 2002-08-08 Infineon Technologies Ag Datenverarbeitungsverfahren
JP2009169767A (ja) 2008-01-17 2009-07-30 Toshiba Corp パイプライン型プロセッサ
US9983990B1 (en) * 2013-11-21 2018-05-29 Altera Corporation Configurable storage circuits with embedded processing and control circuitry
US10552162B2 (en) * 2018-01-22 2020-02-04 International Business Machines Corporation Variable latency flush filtering
CN112559049A (zh) * 2019-09-25 2021-03-26 阿里巴巴集团控股有限公司 用于指令高速缓存的路预测方法、访问控制单元以及指令处理装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4521851A (en) * 1982-10-13 1985-06-04 Honeywell Information Systems Inc. Central processor
US5051940A (en) * 1990-04-04 1991-09-24 International Business Machines Corporation Data dependency collapsing hardware apparatus
US4924525A (en) * 1986-10-20 1990-05-15 Bodigard Technologies, Inc. Multilayer film for chemical protective clothing
JPS63131230A (ja) * 1986-11-21 1988-06-03 Hitachi Ltd 情報処理装置
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
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
US5197135A (en) * 1990-06-26 1993-03-23 International Business Machines Corporation Memory management for scalable compound instruction set machines with in-memory compounding
US5214763A (en) * 1990-05-10 1993-05-25 International Business Machines Corporation Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism

Also Published As

Publication number Publication date
JP2535252B2 (ja) 1996-09-18
US5522084A (en) 1996-05-28
JPH04153734A (ja) 1992-05-27
DE4134392A1 (de) 1992-04-23

Similar Documents

Publication Publication Date Title
DE3116100C2 (de) Datenverarbeitungseinheit
DE4134392C2 (de) Verfahren und Vorrichtung zum Ungültigmachen von Befehlen in Geräten mit Parallelverarbeitung
DE4206062C2 (de) Pipelineverarbeitung von Instruktionen
DE69932066T2 (de) Mechanismus zur "store-to-load forwarding"
DE69809450T2 (de) Datenverarbeitungsvorrichtung
DE69534148T2 (de) Rechnersystem zur Ausführung von Verzweigungsbefehlen
DE68927492T2 (de) Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten
DE3751474T2 (de) Verzweigungsstrom-Koprozessor.
DE68928677T2 (de) Verfahren und digitaler Computer zur Vorverarbeitung mehrerer Befehle
DE3785897T2 (de) Steuervorrichtung zum vorabruf von befehlen.
DE2411963C3 (de) Elektronische Datenverarbeitungsanlage mit einer Prioritätssteuerschaltung mit änderbaren Steuerblöcken
DE2715073C3 (de) Mikroprogrammierte Rechner-Steuervorrichtung
DE3851746T2 (de) Sprungvorhersage.
DE69418146T2 (de) Temporärer Registersatz für einen superpipeline-superskalaren Prozessor
DE19855806A1 (de) Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen
DE69027932T2 (de) Cpu-pipeline mit registerfile-bypass durch adressvergleich bei aktualisierungen/zugriffen
DE19506435C2 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE4211245B4 (de) Prozessorsystem in Parallelverarbeitungsbauart und Verfahren zu dessen Steuerung
DE69130757T2 (de) Ausführungsvorrichtung für bedingte Verzweigungsbefehle
DE68925397T2 (de) Pipelineprozessor
DE69133571T2 (de) Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen
DE2230102A1 (de) Rechenwerk fuer variable wortlaengen
DE4335475A1 (de) Datenverarbeitungseinrichtung mit Cache-Speicher
DE2714805A1 (de) Datenverarbeitungssystem
DE19824289C2 (de) Pipelineverarbeitungsmaschine

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee