DE3789604T2 - Datenprozessor zur parallelen Ausführung von miteinander im Konflikt stehenden Befehlen. - Google Patents

Datenprozessor zur parallelen Ausführung von miteinander im Konflikt stehenden Befehlen.

Info

Publication number
DE3789604T2
DE3789604T2 DE3789604T DE3789604T DE3789604T2 DE 3789604 T2 DE3789604 T2 DE 3789604T2 DE 3789604 T DE3789604 T DE 3789604T DE 3789604 T DE3789604 T DE 3789604T DE 3789604 T2 DE3789604 T2 DE 3789604T2
Authority
DE
Germany
Prior art keywords
instruction
operand
register
following
arithmetic
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
DE3789604T
Other languages
English (en)
Other versions
DE3789604D1 (de
Inventor
Kiyoshi Inoue
Eiki Kamada
Kazunori Kuriyama
Yooichi Shintani
Tohru Shonai
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Application granted granted Critical
Publication of DE3789604D1 publication Critical patent/DE3789604D1/de
Publication of DE3789604T2 publication Critical patent/DE3789604T2/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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution

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

    HINTERGRUND DER ERFINDUNG
  • Die Erfindung betrifft einen Datenprozessor zum parallelen Verarbeiten mehrerer Befehle, und spezieller betrifft sie einen Datenprozessor, der dazu geeignet ist, mehrere Befehle in einem Pipelineverarbeitungssystem (fortschrittliches Steuerungssystem) auszuführen
  • Bei einem Datenprozessor, der dafür vorgesehen ist, die Verarbeitung durch Verwendung eines Systems, z. B. eines Pipelineverarbeitungssystems, zum parallelen Verarbeiten mehrerer Befehle zu beschleunigen (wozu ein System zum Verarbeiten von Befehlen teilweise in überlappender Weise gehört) kann, wenn ein vorangehender Befehl ein Operationsergebnis in ein Register einschreibt und ein folgender Befehl den Inhalt desselben Registers zum Berechnen einer Adresse verwendet, der folgende Befehl die Berechnung der Startadresse nicht beginnen, bevor nicht der vorangehende Befehl das Operationsergebnis in das Register eingeschrieben hat, was eine Verzögerung bei der Verarbeitung hervorruft. Eine derartige Konkurrenzsituation von Daten, die beim Berechnen einer Adresse zu verwendet sind, wird "Adressenkonflikt" genannt.
  • Für den Fall, daß ein vorangehender Befehl ein sogenannter Ladebefehl ist, der einen ausgelesenen Operanden in ein Register einschreibt, ohne ihn einer arithmetischen oder logischen Operation zu unterziehen, und der folgende Befehl in Adressenkonflikt mit dem vorangehenden Befehl kommt, wurde ein Verfahren zum Verringern einer Verzögerung bei der Verarbeitung vorgeschlagen, wie in JP-A-56-46170.
  • Wenn ein vorangehender Befehl ein Operationsergebnis in ein Register einschreibt und der folgende Befehl einen Operanden vom selben Register liest, kann der folgende Befehl den Operanden nicht aus dem Register auslesen, bevor nicht der vorangehende Befehl das Operationsergebnis in das Register eingeschrieben hat, was eine Verzögerung bei der Verarbeitung hervorruft. Eine derartige Operanden-Konkurrenzsituation an einem Registers wird "Register-Operandenkonflikt" oder einfach "Operandenkonflikt" genannt.
  • Gemäß einem bekannten herkömmlichen Verfahren zum Ausschließen einer Verzögerung bei der Verarbeitung, wie sie durch einen Operandenkonflikt verursacht wird, wird ein Abkürzungspfad zum Liefern des Operationsergebnisses eines vorangehenden Befehls an den Eingang einer arithmetischen oder logischen Einheit (ALU) in einem Zwischenbereich eines Schreibpfades von der ALU zu einem Universalregister bereitgestellt, wodurch die arithmetische oder logische Operation des folgenden Befehls, der das Operationsergebnis des vorangehenden Befehls benötigt, ausgeführt wird, ohne den Zeitpunkt abzuwarten, zu dem das Operationsergebnis in ein spezifiziertes Universalregister eingeschrieben wurde. Dieses Verfahren wird "Register-Operandenherumführung (register operand wrap-around") oder einfach "Operandenherumführung" genannt.
  • Gemäß diesem Verfahren kann dann, wenn ein vorangehender Befehl ein Befehl wie der Befehl LOAD (laden) ist, der keine Operation durch eine ALU benötigt, die Operation des folgenden Befehls nicht beginnen, bevor nicht der Operationszustand des Befehls LOAD abgeschlossen wurde.
  • Ein Beispiel für eine Registerumgehung, die Operationsausführungszeit für einen auf einen "Ladeadressenbefehl" folgenden Befehl einspart, ist in IBM TDB, Vol. 23, No. 6, November 1980, S. 2401-2403, beschrieben. Der "Ladeadressenbefehl" erfordert Berechnungen durch einen Adressenaddierer.
  • Dieses Dokument lehrt nicht, wie Operationsausführungszeit dann eingespart werden könnte, wenn der vorangehende Befehl ein Befehl ist, der keine Operation durch eine ALU erfordert.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Es ist daher eine Aufgabe der Erfindung, einen Datenprozessor anzugeben, der dazu in der Lage ist, einen vorangehenden Befehl, der keine Operation durch eine ALU erfordert, sowie einen folgenden Befehl gleichzeitig selbst im Fall eines Operandenkonflikts zwischen diesen Befehlen auszuführen.
  • Diese Aufgabe wird durch den im Anspruch 1 definierten Datenprozessor gelöst.
  • Wenn die Befehlserkennungseinrichtung erkennt, daß ein vorangehender Befehl einen Operanden in die Universalregistergruppe einschreibt, ohne ihn einer arithmetischen oder logischen Operation zu unterziehen, führt die Ausführungseinrichtung abhängig von Befehlsdecodierinformationen zumindest arithmetische oder logische Operationen des vorangehenden und folgenden Befehls gleichzeitig aus.
  • Gemäß Anspruch 2 liefert die Operandenauswahleinrichtung dann, wenn die Konflikterkennungseinrichtung einen Konfliktzustand erkennt, bei dem der vorangehende Befehl eine Schreiboperation in ein Universalregister der Universalregistergruppe ausführt und der folgende Befehl einen Operanden aus demselben Universalregister liest, gemäß Befehlsdecodierinformationen den Operanden für den vorangehenden Befehl an die mindestens eine arithmetische oder logische Einrichtung, die die arithmetische oder logische Operation des vorangehenden Befehls ausführt, und diese mindestens eine arithmetische oder logische Einrichtung führt gleichzeitig die arithmetischen oder logischen Operationen des vorangehenden und des folgenden Befehls aus.
  • Gemäß Anspruch 3 sperrt die Konkurrenzsituation-Erkennungseinrichtung dann, wenn sie einen Konkurrenzzustand erkennt, bei dem der vorangehende Befehl eine Schreiboperation in ein Universalregister der Universalregistergruppe ausführt und auch der folgende Befehl eine Schreiboperation in dasselbe Universalregister ausführt, abhängig von Befehlsdecodierinformationen, die Schreiboperation durch den vorangehenden Befehl in dasselbe Universalregister.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Fig. 1 ist ein Blockdiagramm, das die Gesamtstruktur eines Ausführungsbeispiels eines erfindungsgemäßen Datenprozessors zeigt;
  • Fig. 2A ist ein Zeitsteuerdiagramm, das den Fluß von Ausführungsbefehlen bei einem herkömmlichen Pipelineverarbeitungssystem zeigt;
  • Fig. 2B ist ein Zeitsteuerdiagramm, das den Fluß von Ausführungsbefehlen bei einem anderen herkömmlichen parallelen Pipelineverarbeitungssystem zeigt;
  • Fig. 3 zeigt Anweisungsformate, wie sie bei dem in Fig. 1 dargestellten Prozessor verwendet werden;
  • Fig. 4 zeigt ein Beispiel einer Reihe von Befehlen;
  • Fig. 5A ist ein Zeitsteuerdiagramm, das einen Fluß der Ausführung der in Fig. 4 dargestellten Reihe von Befehlen gemäß einer bekannten Lehre zeigt;
  • Fig. 5B ist ein anderes Zeitsteuerdiagramm, das einen Fluß zum Ausführen der in Fig. 4 dargestellten Reihe von Befehlen gemäß der bekannten Lehre zeigt;
  • Fig. 5C ist ein Zeitsteuerdiagramm, das einen Fluß zum Ausführen der in Fig. 4 dargestellten Reihe von Befehlen gemäß einer anderen bekannten Lehre zeigt;
  • Fig. 5D ist ein Zeitsteuerdiagramm, das einen Fluß zum Ausführen der in Fig. 4 dargestellten Reihe von Befehlen gemäß der Erfindung zeigt;
  • Fig. 6 ist ein detailliertes Blockdiagramm der Herumführ- Steuerschaltung 90 des in Fig. 1 dargestellten Ausführungsbeispiels;
  • Fig. 7 ist ein detailliertes Blockdiagramm der ALU-Steuerschaltung 95 des in Fig. 1 dargestellten Ausführungsbeispiels;
  • Fig. 8 ist ein Blockdiagramm, das die Gesamtstruktur eines anderen Ausführungsbeispiels eines erfindungsgemäßen Datenprozessors zeigt;
  • Fig. 9 ist ein detailliertes Blockdiagramm der Herumführ- Steuerschaltung 92 des in Fig. 8 dargestellten Ausführungsbeispiels; und
  • Fig. 10 ist ein detailliertes Blockdiagramm der ALU-Steuerschaltung 97 des in Fig. 8 dargestellten Ausführungsbeispiels.
  • BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSBEISPIELE
  • Es wird nun ein Pipelineverarbeitungssystem beschrieben, auf das die Erfindung angewandt ist.
  • Fig. 1 ist ein Blockdiagramm, das die Gesamtstruktur eines Ausführungsbeispiels eines erfindungsgemäßen Datenprozessors zeigt. Bei diesem Ausführungsbeispiel führt das Pipelineverarbeitungssystem zwei Befehle parallel aus. Eine bekannte Lehre zum Einschreiben zweier Befehle in zwei Befehlsregister eines Pipelineverarbeitungssystems ist z. B. in JP-A-58- 176751 offenbart.
  • Gemäß Fig. 1 liest eine Befehlsausleseschaltung 8 zwei zu verarbeitende Befehle und schreibt sie in Befehlsregister 10 und 11 ein. Das Befehlsregister 10 hält einen vorangehenden Befehl, während das Befehlsregister 11 einen folgenden Befehl hält. Ein Befehlsdecodierer 20 (21) decodiert einen vorangehenden (folgenden) Befehl, um Befehlsdecodierinformation zu erzeugen, die zum Steuern der Verschaltung des Datenprozessors verwendet wird. Eine Befehlsschlange 30 hält von den Befehlsdecodierern 20 und 21 erzeugte Befehlsdecodierinformationen der Reihe nach, bis damit begonnen wird, einen entsprechenden Befehl einer arithmetischen oder logischen Operation zu unterziehen. Ein Adressenaddierer 40 (41) berechnet die logische Adresse des Speicheroperanden für einen vorangehenden (folgenden) Befehl, der aus einem Pufferspeicher 50 (51) auszulesen ist. Die Pufferspeicher 50 und 51 halten Befehle und zu verarbeitende Daten. Ein Operandenpuffer 60 hält der Reihe nach aus den Pufferspeichern 50 und 51 ausgelesene Speicheroperanden, bis damit begonnen wird, einen entsprechenden Befehl einer arithmetischen oder logischen Operation zu unterziehen. Eine Universalregistergruppe 70 ist aus einer Gruppe von Registern aufgebaut und hält hauptsächlich häufig verwendete Daten (wie Registeroperanden-, Adressenmodifizierdaten und dergleichen). Eine ALU 80 (81) führt eine arithmetische oder logische Operation aus, wie sie durch einen vorangehenden (folgenden) Befehl spezifiziert wird. Eine Herumführ-Steuerschaltung 90 und eine ALU-Steuerschaltung 95 sind dazu erforderlich, die Erfindung zu realisieren, und sie werden später im einzelnen beschrieben.
  • Die Fig. 2A und 2B sind Zeitsteuerdiagramme, die den Standardflußablauf zum Ausführen von Befehlen in einem Pipelineverarbeitungssystem veranschaulichen, wobei die Abszisse die Zeit repräsentiert. Die Zeit ist der Einheit von Zyklen nach unterteilt, wobei jeder Zyklus mit C0, C1, C2, . . . in dieser Reihenfolge bezeichnet wird, ausgehend von einem Anfangszyklus (am linken Ende im Diagramm).
  • Fig. 2A zeigt den Fluß beim Ausführen von Befehlen, wobei ein Befehl der Reihe nach nach einem anderen bearbeitet wird, wohingegen Fig. 2B den Fluß zum Ausführen von Befehlen zeigt, bei dem zwei Befehle der Reihe nach parallel verarbeitet werden. Die Befehlsverarbeitung ist in mehrere Prozeßstadien unterteilt, wobei jedes Prozeßstadium der Reihe nach mehreren Befehlen dargeboten wird und parallel zu anderen Betrieben wird. Gemäß Fig. 2B unterliegen ein Befehl n und ein Befehl n+1 im Zyklus C0 einem Stadium D. Dann gehen die Befehle n und n+1 zum Zyklus C1 zum Stadium A weiter, wohingegen damit begonnen wird, zwei direkt auf die zwei Befehle n und n+1 folgende Befehle im Stadium D zu verarbeiten. Danach gehen bei Zyklus C2 die Befehle n und n+1 zu einem Stadium L weiter, die nächsten zwei Befehle gehen zum Stadium A weiter und es wird damit begonnen, die übernächsten zwei Befehle im Stadium D zu verarbeiten. Auf diese Weise werden mehrere aufeinanderfolgende Befehle in jedem Prozeßstadium parallel verarbeitet. Daher werden mehrere Befehle für eine bestimmte Zykluszeit in jeweiligen Prozeßstadien parallel und in überlappender Weise zur selben Zeit verarbeitet, wodurch die Gesamtverarbeitungszeit verringert wird.
  • Ein Befehl wird in jedem Stadium, die als Stadium D, A, L, E und P bezeichnet werden, in dieser Reihenfolge für eine Einheitszykluszeit verarbeitet. Speziell werden, wie aus erneuter Bezugnahme auf Fig. 1 erkennbar, im Stadium D in den Befehlsregistern, 10 und 11 gehaltene Befehle durch die Befehlsdecodierer 20 und 21 decodiert und sie erfahren durch die Adressenaddierer 40 und 41 eine Adressenberechnung, um die logischen Adressen der entsprechenden Speicheroperanden zu erhalten. Im nächsten Stadium A wird eine Übersetzung von logischen Adressen in physikalische Adressen ausgeführt und in den Pufferspeichern 50 und 51 wird ein Auslesen der Speicheroperanden vorgenommen. Im folgenden Stadium L werden die aus den Pufferspeichern 50 und 51 ausgelesenen Speicheroperanden an den Operandenpuffer 60 und dann an die ALUs 80 und 81 übertragen. Registeroperanden werden auch aus der Universalregistergruppe 70 ausgelesen und an die ALUs 80 und 81 übertragen. Die vorstehend genannten Operationen sorgen für eine Vorbereitung zum Starten arithmetischer oder logischer Operationen, wie sie durch Befehle spezifiziert werden, die von den ALUs 80 und 81 auszuführen sind. Im Stadium E wird die arithmetische Operation durch die ALUs 80 und 81 ausgeführt. Im Stadium P werden die Operationsergebnisse aus den ALUs 80 und 81 in die Universalregister 70 eingeschrieben.
  • Es werden nun Befehlsformate beschrieben, wie sie in der folgenden Beschreibung von Ausführungsbeispielen verwendet werden. Fig. 3 zeigt Befehlsformate, die als Typ RR und als Typ RX bezeichnet werden. Ein Befehl vom Typ RR besteht aus einem Feld OP, einem Feld R1 und einem Feld R2. Ein Befehl vom Typ RX besteht aus einem Feld OP, einem Feld R1, einem Feld X2, einem Feld B2 und einem Feld D2. Das Feld OP zeigt den Typ der von der ALU 80 oder 81 auszuführenden arithmetischen oder logischen Operation an. Die Felder R1, R2, X2 und B2 zeigen jeweils ein Register in der Universalregistergruppe 70 an. Die Felder R1 und R2 zeigen die Register an, in denen der erste bzw. zweite Operand abgespeichert werden. Die Inhalte der durch die Felder X2 und B2 spezifizierten Register werden durch den Adressenaddierer 40 oder 41 zum Inhalt des Felds D2 addiert, um die logische Adresse eines zweiten Operanden zu erzeugen, der im Pufferspeicher 50 oder 51 abgespeichert ist. Im allgemeinen werden im Fall eines Befehls vom Typ RR und eines Befehls vom Typ RX ein erster und zweiter Operand gelesen und arithmetischen oder logischen Operationen unterzogen, um danach das Operationsergebnis in dasjenige Register einzuschreiben, das den ersten Operanden speicherte. Jedoch wird im Fall des Befehls LOAD ein zweiter Operand gelesen und direkt in das durch den ersten Operanden spezifizierte Register eingeschrieben, ohne eine arithmetische oder logische Operation auszuführen.
  • Fig. 4 zeigt ein Beispiel für eine Reihe von Befehlen, die einen sogenannten Befehl LOAD als vorangehenden Befehl verwenden. Für den Befehl LOAD kann die logische Adresse Sb des im Speicher abgespeicherten zweiten Operanden (Sb) dadurch erhalten werden, daß die Inhalte (Xb) und (Bb) der mit Xb und Bb spezifizierten Register zum Wert Db selbst hinzugezählt werden. Der vorangehende Befehl L schreibt den von der logischen Adresse Sb spezifizierten zweiten Operanden (Sb) in ein Register Ra ein. Der folgende Befehl AR, wie er hier als Beispiel verwendet wird, ist ein Befehl für eine Addition zwischen zwei Registern. In diesem Fall ist der erste Operand der Inhalt (Rc) des durch Rc spezifizierten Registers, während der zweite Operand der Inhalt (Rd) eines durch Rd spezifizierten Registers ist. Der folgende Befehl AR addiert (Rc) zu (Rd), um das Ergebnis in das Register Rc einzuschreiben. Es wird jedoch darauf hingewiesen, daß im Fall von Rc = Ra oder Rd = Ra der folgende Befehl AR mit dem Lesen eines Operanden aus einem Register nicht beginnen kann, bevor nicht der vorangehende Befehl den Operanden in das Register eingeschrieben hat. Dieser Zustand wird als Register-Operanden-Konflikt oder einfach als Operandenkonflikt bezeichnet.
  • Die Fig. 5A bis 5D sind Zeitsteuerdiagramme, die den Flußablauf zum parallelen Ausführen zweier Befehle mit der in Fig. 4 dargestellten Reihe von Befehlen zeigen.
  • Das in Fig. 5A dargestellte Zeitsteuerdiagramm veranschaulicht den Fall, daß kein Operandenkonflikt (Rc = Ra und Rd = Ra) zwischen dem vorangehenden Befehl L und dem folgenden Befehl AR, wie in Fig. 4 dargestellt, auftritt. In diesem Fall ist der Fluß zum Ausführen der Befehle derselbe wie der Standardfluß bei der in Fig. 2B dargestellten Pipelineverarbeitung, was demgemäß keine Verzögerung bei der Verarbeitung hervorruft.
  • Das in Fig. 5B dargestellte Zeitsteuerdiagramm veranschaulicht den Fall, daß ein Operandenkonflikt (Rc = Ra oder Rd = Ra) zwischen dem vorangehenden Befehl L und dem folgenden Befehl AR auftritt, wie in Fig. 4 dargestellt. In diesem Fall ist mindestens einer der Operanden [(Rc) und (Rd)], die vom folgenden Befehl AR zu lesen sind, der durch den vorangehenden Befehl L in das Register Ra eingeschriebene Inhalt. Das Stadium P, bei dem der vorangehende Befehl eine Schreiboperation in das Register Ra ausführt, wird während des Zyklus C4 ausgeführt. Daher kann das Stadium L, zu dem der folgende Befehl AR die Operanden aus den Registern Rc und Rd ausliest, nicht vor dem Zyklus C4 starten. Es sei nun das Stadium E betrachtet, bei dem eine arithmetische oder logische Operation ausgeführt wird. Bei der Verarbeitung von AR und darauffolgender Befehle entsteht eine Verzögerung von zwei Zyklen verglichen zum Fall, bei dem kein Operandenkonflikt auftritt.
  • Das in Fig. 5C dargestellte Zeitsteuerdiagramm veranschaulicht den Fall, daß ein Operandenkonflikt (Rc = Ra oder Rd = Ra) zwischen dem vorangehenden Befehl L und dem folgenden Befehl AR, wie in Fig. 4 dargestellt, auftritt, wobei eine herkömmlich bekannte Operandenherumführung verwendet wird. Auch in diesem Fall ist mindestens einer der Operanden [(Rc) oder (Rd)), die vom folgenden Befehl AR zu lesen sind, der durch den vorangehenden Befehl L in das Register Ra eingeschriebene Inhalt. Jedoch ermöglicht es die Verwendung der Operandenherumführung, den Operanden nicht aus dem Register sondern im Stadium L des vorangehenden Befehls AR über den Abkürzungspfad zu lesen. Der aus dem Abkürzungspfad auszulesende Operand kann spätestens identifiziert werden, bevor das Stadium E während des Zyklus C3 voll abgeschlossen wurde. Daher kann das Stadium L des folgenden Befehls AR durch den Zyklus C3 abgeschlossen werden. Es sei nun das Stadium E betrachtet, in dem eine arithmetische oder logische Operation ausgeführt wird. Beim Verarbeitung von AR und folgender Befehle entsteht eine Verzögerung um einen Zyklus verglichen zum Fall, in dem kein Operandenkonflikt auftritt.
  • Bei der Verarbeitung der in Fig. 4 dargestellten Reihe von Befehlen wird der zweite Operand (Sb) des vorangehenden Befehls L, wie er aus dem Pufferspeicher ausgelesen und in den Operandenpuffer eingeschrieben wurde, direkt in das Register Ra eingeschrieben, ohne daß er einer arithmetischen oder logischen Operation durch die ALU unterzogen wird. Daher ist im Fall eines Operandenkonflikts zwischen dem vorangehenden Befehl L und dem folgenden Befehl AR der aus dem Register Ra durch den folgenden Befehl AR ausgelesene Operand (Ra) mit dem Operanden (Sb) identisch, der durch den vorangehenden Befehl L aus dem Pufferspeicher ausgelesen und in den Operandenpuffer eingeschrieben wurde. Erfindungsgemäß kann der folgende Befehl AR den Operanden nicht aus dem Register der Universalregistergruppe, in die der vorangehende Befehl L das Operationsergebnis einschreibt, sondern aus demjenigen Betriebsmittel (in diesem Fall dem Operandenpuffer) auslesen, aus dem der vorangehende Befehl den Operanden liest.
  • Das in Fig. 5D dargestellte Zeitsteuerdiagramm veranschaulicht den Fall) daß ein Operandenkonflikt (Rc = Ra oder Rd = Ra) zwischen dem vorangehenden Befehl L und dem folgenden Befehl AR, wie in Fig. 4 dargestellt, auftritt, wobei die Erfindung angewandt ist. Erfindungsgemäß kann der folgende Befehl AR im Stadium L den Operanden nicht aus der Universalregistergruppe sondern aus dem Operandenpuffer auslesen. Der aus dem Operandenpuffer auszulesende Operand kann spätestens identifiziert werden, bevor das Stadium L des vorangehenden Befehls L während des Zyklus C2 abgeschlossen wurde. Daher kann das Stadium L des vorangehenden Befehls AR durch den Zyklus C2 abgeschlossen werden. Nun sei das Stadium E betrachtet, in dem eine arithmetische oder logische Operation ausgeführt wird. Es ist möglich, AR und die folgenden Befehle mit denselben Zyklen zu verarbeiten wie im Fall ohne Operandenkonflikt.
  • Unter erneuter Bezugnahme auf Fig. 1 wird der Betrieb des erfindungsgemäß aufgebauten Datenprozessors beschrieben. In der folgenden Beschreibung sind Signale, die einem vorangehenden Befehl zugeordnet sind, durch ein Symbol mit dem Suffix p repräsentiert, und diejenigen, die einem folgenden Befehl zugeordnet sind, sind durch ein Symbol mit dem Suffix s repräsentiert, um sie voneinander unterscheiden zu können.
  • Ein vorangehender Befehl INSp (folgender Befehl INSs), der durch die Befehlsausleseschaltung 8 in das Befehlsregister 10 (11) eingeschrieben wurde, wird decodiert und einer Adreßberechnung unterzogen. Genauer gesagt, wird das OP-Feld OPp (OPs) eines Befehls durch den Befehlsdecodierer 20 (21) decodiert, um Befehlsdecodierinformation DECp (DECs) zu erzeugen, die dazu verwendet wird, zugeordnete Elemente im Prozessor zu steuern. Im folgenden sind Befehlsdecodierinformationen DECp (DECs) dargestellt, die für die Erfindung relevant sind:
  • - OPp (OPs): bezeichnet den Typ der arithmetischen oder logischen Operation, die von der Alu 80 oder 81 auszuführen ist.
  • - N1p (N1s): zeigt an, daß ein erster Operand aus der Universalregistergruppe 70 ausgelesen wird.
  • - N2p (N2s): zeigt an, daß ein zweiter Operand aus der Universalregistergruppe 70 ausgelesen wird.
  • - CHp (CHs): zeigt an, daß ein Operationsergebnis in die Universalregistergruppe 70 eingeschrieben wird.
  • - LDp (LDs): kennzeichnet einen Befehl LOAD (zum Übertragen eines zweiten Operanden im Speicher oder in einem Register an ein anderes Register).
  • - BPp (BPs): kennzeichnet den Eintrag des Operandenpuffers 60, wo ein aus dem Pufferspeicher 50 (51) gelesener Operand gehalten wird.
  • Die Befehlsdecodierinformationen DECp (DECs) beinhalten ferner die folgenden Informationen: das R1-Feld R1p (R1s) eines Befehls spezifiziert ein Register der Universalregistergruppe 70, aus dem ein erster Operand gelesen wird und in das ein Operationsergebnis eingeschrieben wird. Im Fall eines Befehls vom Typ RR spezifiziert dessen R2-Feld R2p (R2s) ein Register der Universalregistergruppe 70, aus dem ein zweiter Operand zu lesen ist. Alternativ spezifizieren im Fall eines Befehls vom Typ RX dessen X2-Feld X2p (X2s) und dessen B2- Feld B2p (B2s) Register der Universalregistergruppe 70, die dazu verwendet werden, die logische Adresse S2p (S2s) eines aus dem Pufferspeicher 50 (51) zu lesenden Operanden zu berechnen. Die vorstehend beschriebenen Befehlsdecodierinformationen DECp (DECs) werden der Reihe nach in der Befehlsschlange 30 abgespeichert.
  • Im Fall eines Befehls vom Typ RX wird gleichzeitig mit dem Decodieren eines Befehls durch den Befehlsdecodierer 20 (21) die logische Adresse S2p (S2s) des aus dem Pufferspeicher 50 (51) auszulesenden Operanden durch den Adressenaddierer 40 (41) berechnet. Insbesondere werden die Inhalte X2pC und B2pC (X2sC und B2sC) der Register der Universalregistergruppe 70, wie sie jeweils durch das X2-Feld X2p (X2s) und das B2-Feld B2p (B2s) des Befehls spezifiziert werden, durch den Adressenaddierer 40 (41) zum D2-Feld D2p (D2s) addiert und das Ergebnis wird an den Pufferspeicher 50 (51) geliefert. Zu diesem Zeitpunkt wird an den Pufferspeicher 50 (51) auch die Befehlsdecodierinformation BPp (BPs) geliefert, die den Eintrag des Operandenpuffers 60 identifiziert, unter dem ein ausgelesener Operand gehalten wird.
  • Wenn der Pufferspeicher 50 (51) die logische Adresse S2p (S2s) des zu lesenden Operanden erhält, übersetzt er die logische Adresse im Stadium A in eine physikalische Adresse und liest den Operanden S2pC (S2sC), der zusammen mit der empfangenen Befehlsdecodierinformation BPp (BPs) an den Operandenpuffer 60 geliefert wird. Der Pufferspeicher 50 (51) ist allgemein ein solcher hoher Geschwindigkeit und kleinen Speichervermögens, und er wird in Kombination mit einem Hauptspeicher 52 geringer Geschwindigkeit und großen Speichervermögens verwendet. Wenn ein zu lesender Operand im Pufferspeicher 50 (51) vorhanden ist, ist es möglich, den Operanden in einem Zyklus zu lesen. Wenn der zu lesende Operand jedoch nicht im Pufferspeicher 50 (51) vorhanden ist, benötigt dies einige Zyklen, da der zugehörige Operand aus dem Hauptspeicher 52 gelesen werden muß, was zu einer Verzögerung der Verarbeitungszeit im Stadium A führt.
  • Im Stadium L empfängt der Operandenpuffer 60 den vom Pufferspeicher 50 (51) gelieferten Operanden S2pC (S2sC) sowie die Befehlsdecodierinformation BPp (BPs). Der empfangene Operand S2pC (S2sC) wird an der Eintragsstelle des Operandenpuffers 60 gehalten, die von der Instruktionsdecodierinformation BPp (BPs) spezifiziert wird.
  • Von den ALUs 80 und 81 wird ein Befehl unter der Bedingung ausgeführt, daß die Befehlsdecodierinformationen DECp (DECs) in der Befehlsschlange 30 enthalten sind, ein aus dem Pufferspeicher 50 (51) zu lesender Operand S2pC (S2sC), falls der Befehl vom Typ RX ist, im Operandenpuffer 60 enthalten ist und die ALUs 80 und 81 arithmetische oder logische Operationen für den vorangehenden Befehl abgeschlossen haben. Wenn diese Bedingungen erfüllt sind, werden verschiedene Steuersignale der Befehlsdecodierinformationen DECp (DECs) von der Befehlsschlange 30 der zugeordneten Elemente des Informationsprozessors geliefert. So ist es möglich, einen Speicheroperanden S2pC (S2sC) zu lesen, wie er unter dem Eintrag gehalten wird, der durch die Befehlsdecodierinformation BPp (BPs) spezifiziert wird, die von der Befehlsschlange 30 an den Operandenpuffer 60 geliefert wurde. Auch werden Registeroperanden R1pC und R2pC (R1sC und R2sC) gelesen, die jeweils durch die von der Befehlsschlange 30 an die Universalregistergruppe 70 gelieferten Befehlsdecodierinformationen R1p (R1s) und R2p (R2s) spezifiziert werden. Einer der aus dem Operandenpuffer 60 ausgelesenen Operanden S2pC (S2sC) und der aus der Universalregistergruppe 70 ausgelesene Operand R2pC (R2sC) wird von einem Selektor 84 (85) ausgewählt, der durch die von der Befehlsschlange 30 gelieferte Befehlsdecodierinformation N2p (N2s) gesteuert wird, wobei der ausgewählte als zweiter Operand OP2p (OP2s) dient. In diesem Fall wird die den Typ der arithmetischen oder logischen Operation repräsentierende Befehlsdecodierinformation OPp (OPs) über die ALU-Steuerschaltung 95 an die ALU 80 (81) geliefert. Der Operand des folgenden Befehls wird über Selektoren 87 und 89, die von der Herumführsteuerschaltung 90 gesteuert werden, zur ALU 81 geliefert. Die Erfindung wird hauptsächlich durch die Herumführsteuerschaltung 90, die ALU-Steuerschaltung 95 und die Selektoren 87 und 89 realisiert, zu denen Details später beschrieben werden.
  • Die ALU 80 (81) führt im Stadium E die arithmetische oder logische Operation aus, wie sie von der Befehlsdecodierinformation OPp (OPs) spezifiziert wird, wobei sie den ersten Operanden R1pC (WO1s) und den zweiten Operanden OP2p (WO2s) verwendet, um ein Operationsergebnis zu erhalten. Eine einfache arithmetische oder logische Operation kann im allgemeinen in einem Zyklus ausgeführt werden. Jedoch erfordert eine komplizierte arithmetische oder logische Operation mehrere Zyklen, was zu einer Verzögerung im Stadium E führt.
  • Wenn von der ALU 80 (81) ein Operationsergebnis RSTp (RSTs) erhalten wird und von der ALU-Steuerschaltung 95 ein Schreibfreigabesignal WPp (WPs) ausgegeben wird, wird das Operationsergebnis RSTp (RSTs) im Stadium p in dasjenige Register der Universalgruppe 70 eingeschrieben, das von der Befehlsdecodierinformation R1p (R1s) spezifiziert wird.
  • Die Befehlsschlange 30 ist bereitgestellt, um die Befehlsdecodierinformationen ab dem Zeitpunkt, zu dem ein Befehl vom Befehlsdecodierer 20 oder 21 decodiert wurde, bis zu dem Zeitpunkt zu halten, zu dem eine arithmetische oder logische Operation in der ALU 80 oder 81 beginnt. Der Betrieb der Befehlsschlange 30 wird nachfolgend im Detail beschrieben.
  • Die Befehlsschlange 30 erfährt eine Zuerst-Ein-Zuerst-Aus (FIFO)-Steuerung durch Eingangszeiger und Ausgangszeiger. Bei diesem Ausführungsbeispiel ist die Befehlsschlange 30 mit zwei Eingangszeigern 32 und 33 sowie zwei Ausgangszeigern 36 und 37 versehen. QIPp (QIPs) des Eingangszeigers 32 (33) zeigt den Eintrag an, unter dem die vom Befehlsdecodierer 20 (21) gelieferte Befehlsdecodierinformation gehalten wird. QOPp (QOPs) des Ausgabezeigers 36 (37) zeigen den Eintrag an, unter dem die an die zugeordneten Elemente im Datenprozessor zu lieferende Befehlsdecodierinformation, wenn eine Arithmetikoperation durch die ALU 80 (81) beginnt, gehalten wird. QIPs des Eingangszeigers 33 und QOPs des Ausgangszeigers 37 werden so gesteuert, daß sie jeweils diejenigen Einträge anzeigen, die den Einträgen folgen, die durch QIPp vom Eingangszeiger 33 bzw. QOPp vom Ausgangszeiger 36 spezifiziert werden. In diesem Zusammenhang ist es möglich, die zwei Eingangszeiger und die zwei Ausgangszeiger zu einem einzigen Eingangszeiger bzw. einem einzigen Ausgangszeiger zu vereinigen. Nachdem die Befehlsdecodierer 20 und 21 die in den Befehlsregistern 10 und 11 gehaltenen Befehle decodiert haben, senden sie die Befehlsdecodierinformationen DECp und DECs an die Befehlsschlange 30 und decodieren Endesignale DSp und DSs für die Eingangszeiger 32 und 33. Wenn beide Befehlsdecodierer 20 und 21 die Decodierendesignale DSp und DSs ausgeben, werden die Eingangszeiger 32 und 33 um zwei erhöht. Wenn der Befehlsdecodierer 20 alleine das Decodierendesignal DSp ausgibt, werden die Eingangszeiger 32 und 33 um eins erhöht. Wenn der Befehlsdecodierer 20 kein Decodierendesignal DSp ausgibt, wird das vom Befehlsdecodierer 21 gelieferte Decodierendesignal DSs gesperrt und die Eingangszeiger 32 und 33 werden nicht inkrementiert. Wenn arithmetische oder logische Operationen für Befehle durch die ALUs 80 und 81 abgeschlossen sind, liefert die ALU-Steuerschaltung 95 die Schreibfreigabesignale WPp und WPs an die Universalregistergruppe 70, um in diese die Operationsergebnisse RSTp und RSTs einzuschreiben, und sie liefert arithmetische oder logische Operationsendesignale EOPp und EOPs für die ALUs 80 und 81 an die Ausgangszeiger 36 und 37. Wenn die ALU-Steuerschaltung 95 beide Operationsendesignale EOPp und EOPs für die ALUs 80 und 81 ausgibt, werden die Ausgangszeiger 36 und 37 um zwei erhöht. Wenn die ALU-Steuerschaltung 95 nur das Operationsendesignal EOPp für die ALU 80 ausgibt, werden die Ausgangszeiger 36 und 37 um eins erhöht.
  • Bei der Erfindung, die darauf hinzielt, eine Verzögerung bei der Verarbeitung zu umgehen, die durch einen Operandenkonflikt hervorgerufen wird, wenn ein vorangehender Befehl in Konflikt mit einem folgenden Befehl ein sogenannter LOAD-Befehl ist, wird der beim vorangehenden Befehl gelesene Operand dem folgenden Befehl als Operand zugeführt, der durch den folgenden Befehl zu lesen ist. Bei diesem Ausführungsbeispiel steuert die Herumführsteuerschaltung 90 die Erkennung des Operandenkonflikts und sie beseitigt eine Verzögerung in der Verarbeitung, wie sie durch den Operandenkonflikt hervorgerufen würde.
  • Fig. 6 ist ein Blockdiagramm, das die interne Struktur der Herumführsteuerschaltung 90 zeigt. Befehlsdecodierinformationen für vorangehende und folgende Befehle zur Verwendung beim Ausführen einer arithmetischen oder logischen Operation im nächsten Zyklus werden von der Befehlsschlange 30 an die Herumführsteuerschaltung 90 geliefert. Die Befehlsdecodierinformationen für den vorangehenden Befehl wurden in der Befehlsschlange 30 unter dem Eintrag gehalten, wie er durch QOPp vom Ausgangszeiger 36 spezifiziert wurde. Andererseits wurden die Befehlsdecodierinformationen für den folgenden Befehl in der Befehlsschlange 30 unter dem Eintrag gehalten, der durch QOPs vom Ausgangszeiger 37 spezifiziert wurde.
  • An die Herumführsteuerschaltung 90 werden von der Befehlsschlange 30 unter dem durch QOPp des Ausgangszeigers 36 spezifizierten Eintrag die Befehlsdecodierinformation LDp, die anzeigt, daß der vorangehende Befehl ein LOAD-Befehl ist, die Befehlsdecodierinformation CHp, die anzeigt, daß der vorangehende Befehl das Operationsergebnis in die Universalregistergruppe 70 einträgt, und die Befehlsdecodierinformation R1p, die das Register anzeigt, in das das Operationsergebnis eingeschrieben wird, geliefert. An die Herumführsteuerschaltung 90 werden von der Befehlsschlange 90 unter dem von QOPs des Ausgangszeigers 37 spezifizierten Eintrag auch die Befehlsdecodierinformation N1s, die anzeigt, daß der folgende Befehl einen ersten Operanden aus der Universalregistergruppe 70 ausliest, die Befehlsdecodierinformation CHs, die anzeigt, daß der folgende Befehl ein Operationsergebnis in die Universalregistergruppe 70 einschreibt die Befehlsdecodierinformation R1s, die das Register anzeigt, in das das Operationsergebnis eingeschrieben wird, die Befehlsdecodierinformation N2s, die anzeigt, daß der folgende Befehl einen zweiten Operanden aus der Universalregistergruppe 70 ausliest, und die Befehlsdecodierinformation R2s, die das Register anzeigt, aus dem der zweite Operand ausgelesen wird, geliefert. Unter Verwendung der vorstehend angegebenen Befehlsdecodierinformationen erzeugt die Herumführsteuerschaltung 90 ein Operandenkonflikt-Erkennungssignal QC, Operandenherumführ-Anzeigesignale LW1 und LW2 im Fall, daß der vorangehende Befehl der Befehl LOAD ist, sowie ein Sperrsignal WC zum Sperren einer Schreiboperation für das Operationsergebnis durch den vorangehenden Befehl.
  • In der in Fig. 6 dargestellten Herumführsteuerschaltung werden der Wert R1p, der das Register anzeigt, in das der vorangehende Befehl das Operationsergebnis einschreibt, und Wert R1s und R2s, die die Register anzeigen, aus denen der folgende Befehl die Operanden ausliest, durch Komparatoren 901 und 902 verglichen. Von UND-Gattern 911 und 912 wird die Bedingung erkannt, daß der vorangehende Befehl ein Operationsergebnis in ein erstes Register einschreibt, der folgende Befehl einen Operanden aus einem zweiten Register liest und das erste und zweite Register übereinstimmen. Anders gesagt, erkennen die UND-Gatter 911 und 912 einen Operandenkonflikt aufgrund des Status des ersten und zweiten Operanden des folgenden Befehls. Daß der vorangehende Befehl kein sogenannter Befehl LOAD ist, wird durch das Ausgangssignal eines Inverters 920 angezeigt. Im Ergebnis zeigen, wenn der erste und zweite Operand vom folgenden Befehl gelesen werden, die Ausgangssignale von UND-Gattern 931 und 932 an, ob ein Operandenkonflikt zwischen dem folgenden Befehl und dem vorangehenden Befehl auftrat, der kein Befehl LOAD ist. Wenn eines der UND-Gatter 931 und 932 einen Operandenkonflikt erkennt, gibt ein ODER-Gatter 940 ein Operandenkonflikt-Erkennungssignal OC aus. Jedoch sperren die UND-Gatter 931 und 932 die Ausgabe des Operandenkonflikt-Erkennungssignals OC, wenn der vorangehenden Befehl ein sogenannter Befehl LOAD ist, wenn die UND-Gatter 911 und 912 einen Operandenkonflikt erkennen. In diesem Fall geben UND-Gatter 951 und 952 Ausgangsoperandenherumführ-Anzeigesignale LW1 und LW2 für den zugehörigen Operanden unter dem ersten und zweiten Operanden des folgenden Befehls aus. Die Bedingung, daß der vorangehende und der folgende Befehl eine Schreiboperation in Register ausführen und die Register miteinander übereinstimmen, wird durch ein UND-Gatter 913 festgestellt. In diesem Fall sollte nicht das Operationsergebnis vom vorangehenden Befehl sondern das Operationsergebnis vom folgenden Befehl in das Register eingeschrieben werden, so daß ein Schreibsperrsignal WC für den vorangehenden Befehl vom UND- Gatter 913 ausgegeben wird.
  • Gemäß Fig. 1 führt der Selektor 87 einen üblichen Vorgang aus, um als ersten Operanden WO1s, der an die ALU 81 zu liefern ist, die die arithmetische oder logische Operation des folgenden Befehls ausführt, den ersten Operanden R1sC des folgenden Befehls auszuwählen, wenn das Operandenherumführ- Anzeigesignal LW1 nicht ausgegeben wird, führt er einen Vorgang aus, um den zweiten Operanden OP2p des vorangehenden Befehls als ersten Operanden WO1s auszuwählen. Dagegen führt der Selektor 89 einen gewöhnlichen Vorgang aus, um als zweiten Operanden WO2s, der an die ALU 81 zu liefern ist, den zweiten Operanden R2sC des folgenden Befehls auszuwählen, wenn das Operandenherumführ-Anzeigesignal LW2 nicht ausgegeben wird, und wenn es ausgegeben wird, führt er einen Vorgang aus, um den zweiten Operanden OP2p des vorangehenden Befehls als zweiten Operanden WO2s auszuwählen.
  • Fig. 7 ist ein Blockdiagramm, das die interne Struktur der ALU-Steuerschaltung 95 zeigt. An die ALU-Steuerschaltung 95 werden von der Befehlsschlange 30 unter dem durch QOPp des Ausgabezeigers 36 spezifizierten Eintrag die Befehlsdecodierinformation OPp, die den Typ der durch den vorangehenden Befehl auszuführenden arithmetischen oder logischen Operationen anzeigt, die Befehlsdecodierinformation CHp, die anzeigt, daß der vorangehende Befehl ein Operationsergebnis in die Universalregistergruppe 70 einschreibt, und die Befehlsdecodierinformation R1p, die das Register anzeigt, in das das Operationsergebnis eingeschrieben wird, geliefert. Zur ALU-Steuerschaltung 95 werden von der Befehlsschlange 30 unter dem durch QOPs des Ausgangszeigers 37 spezifizierten Eintrag auch die Befehlsdecodierinformation OPs, die den Typ der vom folgenden Befehl auszuführenden arithmetischen oder logischen Operationen anzeigt, die Befehlsdecodierinformation CHs, die anzeigt, daß der folgende Befehl ein Operationsergebnis in die Universalregistergruppe 70 einträgt, und die Befehlsdecodierinformation R1s, die das Register anzeigt, in das das Operationsergebnis eingeschrieben wird, geliefert. An die ALU-Steuerschaltung 95 werden von der Herumführsteuerschaltung 90 auch das Operandenkonflikt(zwischen dem vorangehenden und dem folgenden Befehl)-Erkennungssignal OC und das Schreibsperrsignal WC zum Sperren des Schreibvorgangs für das Operationsergebnis durch den vorangehenden Befehl geliefert.
  • In der in Fig. 7 dargestellten ALU-Steuerschaltung erzeugt eine ALU-Steuerlogik 800 (805) verschiedene Steuersignale, die für eine arithmetische oder logische Operation erforderlich sind, und zwar auf Grundlage der Befehlsdecodierinformation OPp (OPs), die den Typ der arithmetischen oder logischen Operationen des vorangehenden (folgenden) Befehls anzeigt. Die ALU-Steuerlogiken 800 und 805 können aus verdrahteten Logiken aufgebaut sein, oder sie können durch Mikroprogramme realisiert sein. Die für die Erfindung relevanten Steuersignale werden nachfolgend beschrieben:
  • - OPCp (OPCs): steuert die arithmetische oder logische Operation des vorangehenden (folgenden) Befehls durch die ALU.
  • - WTp (WTs): zeigt die zeitliche Schreibsteuerung für ein Operationsergebnis durch den vorangehenden (folgenden) Befehl an.
  • - ENDp (ENDs): zeigt das Ende der arithmetischen oder logischen Operation durch den vorangehenden (folgenden) Befehl an.
  • Das ALU-Steuersignal OPcp (OPCs) wird an die ALU 80 (81) geliefert, die eine arithmetische oder logische Operation für den vorangehenden (folgenden) Befehl ausführt. Die Befehlsdecodierinformation R1p (R1s), die das Register anzeigt, in das das Operationsergebnis durch den vorangehenden (folgenden) Befehl eingeschrieben wird, wird direkt an die Universalregistergruppe 70 geliefert. Die Befehlsdecodierinformation CHp (CHs), die anzeigt, daß der vorangehende (folgende) Befehl ein Operationsergebnis in die Universalregistergruppe 70 einschreibt, wird an einem UND-Gatter 810 (815) mit dem Schreibzeitsteuersignal WTp (WTs) synchronisiert.
  • Das Ausgangssignal eines Inverters 820 zeigt an, daß es nicht erforderlich ist, einen Schreibvorgang für das Operationsergebnis durch den vorangehenden Befehl zu sperren. Das Ausgangssignal eines Inverters 830 zeigt an, daß kein Operandenkonflikt zwischen dem vorangehenden und folgenden Befehl festgestellt wurde. Demgemäß erlaubt das Ausgangssignal eines UND-Gatters 860 einen Schreibvorgang für das Operationsergebnis durch den vorangehenden Befehl in die Universalregistergruppe 70, wenn es nicht erforderlich ist, den Schreibvorgang des Operationsergebnisses durch den vorangehenden Befehl zu sperren und kein Operandenkonflikt zwischen dem vorangehenden und folgenden Befehl festgestellt wurde. Ferner erlaubt das Ausgangssignal eines UND-Gatters 861 einen Schreibvorgang für das Operationsergebnis durch den vorangehenden Befehl in die Universalregistergruppe 70, wenn ein Operandenkonflikt zwischen dem vorangehenden und folgenden Befehl erkannt wird. Wenn eines der UND-Gatter 860 und 861 einen Schreibvorgang für das Operationsergebnis zuläßt, gibt ein ODER-Gatter 882 ein Schreibfreigabesignal WPp aus. Ferner erlaubt ein UND-Gatter 862 einen Schreibvorgang des Operationsergebnisses durch den folgenden Befehl in die Universalregistergruppe 70, um ein Schreibfreigabesignal WPp für den folgenden Befehl auszugeben, wenn kein Operandenkonflikt zwischen dem vorangehenden und folgenden Befehl erkannt wird. Die Schreibfreigabesignale WPp und WPs werden an die Universalregistergruppe 70 geliefert.
  • Das Ausgangssignal eines UND-Gatters 870 zeigt an, daß die arithmetischen oder logischen Operationen sowohl für den vorangehenden als auch den folgenden Befehl abgeschlossen wurden, wenn kein Operandenkonflikt zwischen dem vorangehenden und folgenden Befehl festgestellt wurde. Das Ausgangssignal eines UND-Gatters 871 zeigt an, daß die arithmetische oder logische Operation durch den vorangehenden Befehl abgeschlossen wurde, wenn ein Operandenkonflikt zwischen dem vorangehenden und folgenden Befehl erkannt wurde. Wenn eines der UND-Gatter 870 und 871 den Abschluß einer arithmetischen oder logischen Operation anzeigt, gibt ein ODER-Gatter 883 ein Operationsendesignal EOPp für den vorangehenden Befehl aus. Alternativ wird ein Operationsendesignal EOPs für den folgenden Befehl vom UND-Gatter 870 ausgegeben, wenn der Abschluß einer arithmetischen oder logischen Operation durch den folgenden Befehl angezeigt wird, wenn kein Operandenkonflikt zwischen dem vorangehenden und folgenden Befehl erkannt wurde. Anders gesagt, werden, wenn ein Operandenkonflikt zwischen dem vorangehenden und dem folgenden Befehl erkannt wird und ein Operandenkonflikt-Erkennungssignal OC von der Herumführsteuerschaltung 90 ausgegeben wird, das Schreibfreigabesignal WPs und das Operationsendesignal EOPs für den folgenden Befehl gesperrt, um dementsprechend eine arithmetische oder logische Operation durch den folgenden Befehl aufzuheben. Die Operationsendesignale EOPp und EOPs werden an die Ausgangszeiger 36 und 37 geliefert, um sie zu inkrementieren.
  • Durch die vorstehend genannte Steuerfolge kann der in Fig. 1 dargestellte Datenprozessor die in Fig. 4 dargestellte Reihe von Befehlen gemäß dem in Fig. 5D dargestellten Zeitsteuerdiagramm verarbeiten.
  • Fig. 8 zeigt ein Blockdiagramm, das die Gesamtstruktur eines anderen Ausführungsbeispiels eines erfindungsgemäßen Datenprozessors andeutet. Bei diesem Ausführungsbeispiel sind zwei ALUs durch eine ALU ersetzt, wobei eine Leerlauf-ALU, die während eines LOAD-Prozesses keine arithmetische oder logische Operation ausführen muß, für die arithmetische oder logische Operation durch den folgenden Befehl verwendet wird. Gemäß der Erfindung, die darauf hinzielt, eine Verzögerung bei der Verarbeitung zu überwinden, wie sie durch einen Operandenkonflikt hervorgerufen wird, wird, wenn ein vorangehender Befehl, der in Konflikt mit einem folgenden Befehl steht, ein sogenannter LOAD-Befehl ist, der keine Operation durch eine ALU erfordert, der vom vorangehenden Befehl gelesene Operand dem folgenden Befehl als Operand zugeführt, der vom folgenden Befehl zu lesen ist.
  • Bei dem in Fig. 8 dargestellten zweiten Ausführungsbeispiel sind die zwei ALUs 80 und 81 des ersten Ausführungsbeispiels von Fig. 1 durch eine ALU 82 ersetzt. Daher liegen auch andere unterschiedliche Schaltungsabschnitte im Datenprozessor vor. Die folgende Beschreibung ist nur auf diejenigen Elemente gerichtet, die von denen des in Fig. 1 dargestellten ersten Ausführungsbeispiels verschieden sind.
  • Zwei Ausgangszeiger 38 und 39 werden nur dann um zwei erhöht, wenn ein Befehl LOAD als vorangehender Befehl verwendet wird und beide Operationsendesignale EOPp für einen Selektor 84 und EOP für die ALU 82 von einer ALU-Steuerschaltung 97 ausgegeben werden. Die zwei Ausgangszeiger 38 und 39 werden um eins erhöht, wenn die ALU-Steuerschaltung nur das Operationsendesignal EOP für die ALU 82 ausgibt.
  • Bei dem in Fig. 8 dargestellten Ausführungsbeispiel kann die Erfindung hauptsächlich durch eine Herumführsteuerschaltung 92, die ALU-Steuerschaltung 97 und Selektoren 86 und 88 realisiert werden.
  • Fig. 9 ist ein Blockdiagramm, das die interne Struktur der Herumführsteuerschaltung 92 veranschaulicht. Bei diesem Ausführungsbeispiel ist es, da eine arithmetische oder logische Operation durch einen folgenden Befehl nur ausgeführt werden kann, wenn der vorangehende Befehl ein LOAD-Befehl ist, nicht erforderlich, daß die Herumführsteuerschaltung 90 ein Operandenkonflikt-Erkennungssignal OC erzeugt, das einen Operandenkonflikt zwischen dem vorangehenden und folgenden Befehl anzeigt. Statt dessen gibt die Herumführsteuerschaltung 92 eine Befehlsdecodierinformation LDp, das anzeigt, daß der vorangehende Befehl ein Befehl LOAD ist, direkt an die ALU-Steuerschaltung 97 aus. Insbesondere bewirkt ein Operandenkonflikt zwischen einem vorangehenden und folgenden Befehl ein Sperren der arithmetischen oder logischen Operation durch den folgenden Befehl beim Ausführungsbeispiel von Fig. 1, wohingegen beim Ausführungsbeispiel von Fig. 8 die Tatsache, daß der vorangehende Befehl kein Befehl LOAD ist, ein Sperren der arithmetischen oder logischen Operation durch den folgenden Befehl bewirkt. Demgemäß ist die Herumführsteuerschaltung 92 dadurch aufgebaut, daß aus der in Fig. 6 dargestellten Herumführsteuerschaltung 90 der Inverter 920, die UND-Gatter 931 und 932 sowie das ODER-Gatter 940 beseitigt sind.
  • Gemäß Fig. 8 führt der Selektor 86 einen Vorgang aus, um als ersten Operanden WO1, der an die ALU 82 zu liefern ist, die die arithmetische oder logische Operation des vorangehenden Befehls oder des folgenden Befehls ausführt, den ersten Operanden R1pC des vorangehenden Befehls auszuwählen, wenn die Befehlsdecodierinformation LDp, die anzeigt, daß der vorangehende Befehl ein LOAD-Befehl ist, nicht ausgegeben wird, und die, wenn eine solche Ausgabe nicht vorliegt und gleichzeitig kein Operandenherum-Anzeigesignal LW1 ausgegeben wird, einen Vorgang zum Auswählen des ersten Operanden R1sC des folgenden Befehls ausführt, oder alternativ, wenn das Operandenherumführ-Anzeigesignal LW1 ausgegeben wird, eine Operation zum Auswählen des zweiten Operanden OP2p des vorangehenden Befehls ausführt. Andererseits führt der Selektor 82 eine Operation aus, um als zweiten Operanden WO2s, wie er an die ALU 82 zu liefern ist, den zweiten Operanden OP2p des vorangehenden Befehls auszuwählen, wenn die Befehlsdecodierinformation LDp nicht geliefert wird, und falls sie geliefert wird und gleichzeitig das Operandenherumführ-Anzeigesignal LW2 nicht ausgegeben wird, eine Operation ausführt, um den zweiten Operanden OP2s des folgenden Befehls aus zuwählen, oder alternativ, wenn das Operandenherumführ-Anzeigesignal LW2 ausgegeben wird, einen Vorgang zum Auswählen des zweiten Operanden OP2p des vorangehenden Befehls ausführt.
  • Fig. 10 ist ein Blockdiagramm, das die interne Struktur der ALU-Steuerschaltung 97 zeigt. Die Hauptdifferenz gegenüber der in Fig. 7 dargestellten ALU-Steuerschaltung 95 ist, daß statt des Operandenkonflikt-Erfassungssignals OC, das einen Operandenkonflikt zwischen einem vorangehenden und einem folgenden Befehl zeigt, die Befehlsdecodierinformation LDp verwendet wird, die anzeigt, daß der vorangehende Befehl ein LOAD-Befehl ist. Die Befehlsdecodierinformation LDp, die anzeigt, daß der vorangehende Befehl ein LOAD-Befehl ist, und ein Schreibsperrsignal WC zum Sperren einer Schreiboperation für das Operationsergebnis durch den vorangehenden Befehl werden von der Herumführsteuerschaltung 92 an die ALU-Steuerschaltung 97 geliefert.
  • In der in Fig. 10 dargestellten ALU-Steuerschaltung erzeugt, wie zuvor beschrieben, die ALU-Steuerlogik 800 (805) das Signal OPCp (OPCs) zum Steuern des Betriebs der ALU, den Wert WTp (WTs), der den Schreibzeitpunkt für ein Operationsergebnis zeigt, und einen Wert ENDp (ENDs), der das Ende einer arithmetischen oder logischen Operation anzeigt, und zwar auf Grundlage der Befehlsdecodierinformation OPp (OPs), die den Operationstyp des vorangehenden (folgenden) Befehls anzeigt. Eine Befehlsdecodierinformation CHp (CHs), die anzeigt, daß der vorangehende (folgende) Befehl ein Operationsergebnis in die Universalregistergruppe 70 einschreibt, wird an einem UND-Gatter 810 (815) mit dem Schreibzeitpunktsignal WTp (WTs) synchronisiert.
  • Das Ausgangssignal eines Inverters 820 zeigt an, daß es nicht erforderlich ist, den Schreibvorgang für das Operationsergebnis durch den vorangehenden Befehl zu sperren. Das Ausgangssignal eines Inverters 835 zeigt an, daß der vorangehende Befehl kein LOAD-Befehl ist. Demgemäß bewirkt das Ausgangssignal eines UND-Gatters 845 die Ausgabe eines Operationssteuersignals für den vorangehenden Befehl an die ALU, wenn der vorangehende Befehl kein LOAD-Befehl ist. Alternativ bewirkt das Ausgangssignal eines UND-Gatters 846 die Ausgabe eines Operationssteuersignals für den folgenden Befehl an die ALU, wenn der vorangehende Befehl ein LOAD-Befehl ist. Ein ODER-Gatter 885 gibt das von den UND-Gattern 845 und 846 ausgewählte Operationssteuersignal OPC aus.
  • Der Wert R1p, der das Register der Universalregistergruppe 70 anzeigt, in das das Ausgangssignal OP2pf von einem Selektor 84 durch den vorangehenden Befehl eingeschrieben wird, wird direkt an das Universalregister 70 geliefert. Das Ausgangssignal eines UND-Gatters 855 spezifiziert das Register der Universalregistergruppe 70, in die das Operationsergebnis der ALU 82 durch den vorangehenden Befehl eingeschrieben wird, wenn der vorangehende Befehl kein LOAD-Befehl ist. Alternativ spezifiziert das Ausgangssignal eines UND-Gatters 856 das Register der Universalregistergruppe 70, in die das Operationsergebnis der ALU 82 durch den folgenden Befehl eingeschrieben wird, wenn der vorangehende Befehl ein LOAD- Befehl ist. Das Ausgangssignal eines ODER-Gatters 886 spezifiziert das von den UND-Gattern 855 und 856 ausgewählte Register, in das das von der ALU 82 ausgegebene Operationsergebnis eingeschrieben wird.
  • Wenn es nicht erforderlich ist, den Schreibvorgang für das Operationsergebnis durch den vorangehenden Befehl zu sperren und wenn der vorangehende Befehl ein LOAD-Befehl ist, gibt ein UND-Gatter 865 ein Schreibfreigabesignal WPp aus, um einen Schreibvorgang für das Ausgangssignal OP2p aus dem Selektor 84 in die Universalregistergruppe 70 durch den vorangehenden Befehl freizugeben. Wenn der vorangehende Befehl kein LOAD-Befehl ist, erlaubt es das Ausgangssignal von einem UND-Gatter 866 dem vorangehenden Befehl, das Operationsergebnis durch die ALU 82 in die Universalregistergruppe 70 einzuschreiben. Auch wenn der vorangehende Befehl ein LOAD- Befehl ist, erlaubt es das Ausgangssignal eines UND-Gatters 867 dem folgenden Befehl, das Operationsergebnis durch die ALU 82 in die Universalregistergruppe 70 einzuschreiben. Wenn eines der, UND-Gatter 866 und 867 einen Schreibvorgang für das Operationsergebnis durch die ALU 82 erlaubt, gibt ein ODER-Gatter 887 ein Schreibfreigabesignal WP aus. Die Schreibfreigabesignale WPp und WP werden an die Universalregistergruppe 70 geliefert.
  • Ein Operationsendesignal EOPp wird von einem UND-Gatter 875 ausgegeben, wenn der vorangehende Befehl ein LOAD-Befehl ist, der vorangehende Befehl seine arithmetische oder logische Operation durch Einschreiben des Ausgangssignals OP2p aus dem Selektor 84 in die Universalregistergruppe 70 abgeschlossen hat und der folgende Befehl ebenfalls eine Operation in der ALU 82 abgeschlossen hat. Das Ausgangssignal eines UND-Gatters 867 zeigt an, daß der vorangehende Befehl seine arithmetische oder logische Operation in der ALU 82 abgeschlossen hat, wenn der vorangehende Befehl kein LOAD- Befehl ist. Ein ODER-Gatter 888 gibt ein Operationsendesignal EOP aus, wenn eines der UND-Gatter 875 und 876 das Ende der arithmetischen oder logischen Operation des vorangehenden Befehls anzeigt. Anders gesagt, werden, wenn der vorangehende Befehl kein LOAD-Befehl ist und die Befehlsdecodierinformation LDp für den vorangehenden Befehl nicht von der Herumführsteuerschaltung 92 geliefert wird, das Schreibfreigabesignal WPp und das Operationsendesignal EOPp gesperrt, um demgemäß eine Operation durch den folgenden Befehl auf zuheben. Die Operationsendesignale EOPp und EOP werden an die Ausgangszeiger 38 und 39 geliefert, um sie zu inkrementieren.
  • Durch die obige Steuerfolge kann der in Fig. 8 dargestellte Datenprozessor die in Fig. 4 dargestellte Reihe von Befehlen gemäß dem in Fig. 5D dargestellten Zeitsteuerdiagramm verarbeiten.
  • Erfindungsgemäß können dann, wenn ein vorangehender Befehl ein LOAD-Befehl ist und ein Operandenkonflikt zwischen dem vorangehenden und folgenden Befehl besteht, die Operationen sowohl für den vorangehenden als auch den folgenden Befehl gleichzeitig ausgeführt werden. Daher ist sie dahingehend von Vorteil, daß das Problem einer Verarbeitungsverzögerung, wie sie durch einen Operandenkonflikt hervorgerufen wird, überwunden werden kann und die Verarbeitungsverzögerung verringert werden kann, wie sie durch andere Faktoren wie eine komplizierte arithmetische oder logische Operation hervorgerufen wird.

Claims (4)

1. Datenprozessor zur parallelen Verarbeitung einer Vielzahl von Befehlen, umfassend:
(a) eine Speichereinrichtung (50, 51, 52, 60) zur Speicherung von Operanden;
(b) eine Gruppe von jeweils zur Speicherung eines Operanden vorgesehenen Registern (70)
(c) eine Einrichtung (20, 21, 30) zur Decodierung von auszuführenden Befehlen und zur Lieferung von Decodierinformation mindestens zweier Befehle; gekennzeichnet durch:
(d) eine Befehlserkennungseinrichtung (90, 92), um auf der Grundlage der Befehls-Decodierinformation zu erkennen, daß unter den genannten mindestens zwei Befehlen ein früherer Befehl das Lesen eines Operanden (OP2P) von der Speichereinrichtung (50, 51, 52, 60) oder von einem ersten Register der Registergruppe (70) und das Schreiben des Operanden in ein zweites Register der Registergruppe (70) ohne die Durchführung einer arithmetischen oder logischen Operation mit dem genannten Operanden (OP2P) verlangt und daß unter den genannten mindestens zwei Befehlen ein folgender Befehl das Lesen des genannten Operanden von dem zweiten Register und die Durchführung einer arithmetischen oder logischen Operation mit dem Operanden verlangt; und
(e) eine Ausführungseinrichtung (81, 82, 86, 87, 88, 89, 95, 97), um aufgrund der Erkenntnis der Befehlserkennungseinrichtung (90, 92) entsprechend dem folgenden Befehl eine arithmetische oder logische Operation mit dem von dem früheren Befehl gelesenen Operanden (OP2P) durchzuführen, bevor der genannte Operand in das genannte zweite Register geschrieben wird und um so Operationen des früheren und des folgenden Befehls gleichzeitig auszuführen.
2. Datenprozessor nach Anspruch 1, wobei die Ausführungseinrichtung umfaßt
(e1) mindestens eine Durchführungseinrichtung (81, 82) zur Durchführung einer arithmetischen oder logischen Operation;
(e2) eine Einrichtung (86, 87, 88, 89) zur Lieferung des von dem früheren Befehl von der Speichereinrichtung (50, 51, 52, 60) oder von dem ersten Register der Registergruppe (70) verlangten Operanden an die mindestens eine Durchführungseinrichtung (81, 82); und
(e3) eine Einrichtung (95, 97), um zu veranlassen, daß die mindestens eine Durchführungseinrichtung (81, 82) die von dem genannten folgenden Befehl verlangte arithmetische oder logische Operation mit dem gelieferten Operanden durchführt.
3. Datenprozessor nach Anspruch 2, wobei die Ausführungseinrichtung eine Einrichtung (95, 97) beinhaltet, die es erlaubt, das Ausführungsergebnis des genannten folgenden Befehls, das von der mindestens einen Durchführungseinrichtung (81, 82) ausgegeben ist, in das zweite Register der Registergruppe (70) zu speichern, ohne den gelieferten Operanden des früheren Befehls zu schreiben, wenn der folgende Befehl verlangt, daß das Ausführungsergebnis in das genannte zweite Register der Registergruppe (70) geschrieben wird.
4. Datenprozessor nach Anspruch 2 oder 3, wobei die Ausführungseinrichtung eine Einrichtung (95, 97) beinhaltet, die es erlaubt, sowohl den gelieferten Operanden des früheren Befehls als auch das Ausführungsergebnis des folgenden Befehls, das von der mindestens einen Durchführungseinrichtung (81, 82) ausgegeben ist, zu speichern, wenn der folgende Befehl verlangt, daß das Ausführungsergebnis in ein anderes Register als das genannte zweite Register der allgemeinen Registergruppe (70) geschrieben wird.
DE3789604T 1986-11-28 1987-11-24 Datenprozessor zur parallelen Ausführung von miteinander im Konflikt stehenden Befehlen. Expired - Fee Related DE3789604T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP61281720A JPH0810430B2 (ja) 1986-11-28 1986-11-28 情報処理装置

Publications (2)

Publication Number Publication Date
DE3789604D1 DE3789604D1 (de) 1994-05-19
DE3789604T2 true DE3789604T2 (de) 1994-07-21

Family

ID=17643043

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3789604T Expired - Fee Related DE3789604T2 (de) 1986-11-28 1987-11-24 Datenprozessor zur parallelen Ausführung von miteinander im Konflikt stehenden Befehlen.

Country Status (4)

Country Link
US (1) US4928226A (de)
EP (1) EP0269980B1 (de)
JP (1) JPH0810430B2 (de)
DE (1) DE3789604T2 (de)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2783285B2 (ja) * 1988-08-10 1998-08-06 株式会社日立製作所 情報処理装置
JP2810068B2 (ja) * 1988-11-11 1998-10-15 株式会社日立製作所 プロセッサシステム、コンピュータシステム及び命令処理方法
US5167026A (en) * 1989-02-03 1992-11-24 Digital Equipment Corporation Simultaneously or sequentially decoding multiple specifiers of a variable length pipeline instruction based on detection of modified value of specifier registers
US5073855A (en) * 1989-06-30 1991-12-17 Bull Hn Information Systems Inc. Resource conflict detection method and apparatus included in a pipelined processing unit
JPH07120284B2 (ja) * 1989-09-04 1995-12-20 三菱電機株式会社 データ処理装置
US5745723A (en) * 1989-09-04 1998-04-28 Mitsubishi Denki Kabushiki Kaisha Data processing system capable of execution of plural instructions in parallel
US5615349A (en) * 1990-09-04 1997-03-25 Mitsubishi Denki Kabushiki Kaisha Data processing system capable of execution of plural instructions in parallel
US5123108A (en) * 1989-09-11 1992-06-16 Wang Laboratories, Inc. Improved cpu pipeline having register file bypass and working register bypass on update/access address compare
JP2816248B2 (ja) * 1989-11-08 1998-10-27 株式会社日立製作所 データプロセッサ
JPH03154947A (ja) * 1989-11-13 1991-07-02 Nec Corp 情報処理装置
US5295249A (en) * 1990-05-04 1994-03-15 International Business Machines Corporation Compounding preprocessor for cache for identifying multiple instructions which may be executed in parallel
US5432918A (en) * 1990-06-29 1995-07-11 Digital Equipment Corporation Method and apparatus for ordering read and write operations using conflict bits in a write queue
US5471591A (en) * 1990-06-29 1995-11-28 Digital Equipment Corporation Combined write-operand queue and read-after-write dependency scoreboard
DE69130138T2 (de) * 1990-06-29 1999-05-06 Digital Equipment Corp., Maynard, Mass. Sprungvorhersageeinheit für hochleistungsfähigen Prozessor
US5450555A (en) * 1990-06-29 1995-09-12 Digital Equipment Corporation Register logging in pipelined computer using register log queue of register content changes and base queue of register log queue pointers for respective instructions
JP2834292B2 (ja) * 1990-08-15 1998-12-09 株式会社日立製作所 データ・プロセッサ
JP2642529B2 (ja) * 1991-04-30 1997-08-20 株式会社東芝 並列プロセッサーの命令分配処理装置
US5539911A (en) 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
ATE200357T1 (de) 1991-07-08 2001-04-15 Seiko Epson Corp Risc-prozessor mit dehnbarer architektur
US5493687A (en) 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
JP2779557B2 (ja) * 1991-07-09 1998-07-23 三菱電機株式会社 並列演算処理装置
JP2685999B2 (ja) * 1991-07-15 1997-12-08 株式会社ピーエフユー 並列実行方式
US5283874A (en) * 1991-10-21 1994-02-01 Intel Corporation Cross coupling mechanisms for simultaneously completing consecutive pipeline instructions even if they begin to process at the same microprocessor of the issue fee
EP0544083A3 (en) * 1991-11-26 1994-09-14 Ibm Interleaved risc-type parallel processor and processing methods
JP3730252B2 (ja) 1992-03-31 2005-12-21 トランスメタ コーポレイション レジスタ名称変更方法及び名称変更システム
JP3637920B2 (ja) 1992-05-01 2005-04-13 セイコーエプソン株式会社 スーパースケーラマイクロプロセサに於て命令をリタイアさせるシステム及び方法
DE69330889T2 (de) 1992-12-31 2002-03-28 Seiko Epson Corp., Tokio/Tokyo System und Verfahren zur Änderung der Namen von Registern
US5628021A (en) 1992-12-31 1997-05-06 Seiko Epson Corporation System and method for assigning tags to control instruction processing in a superscalar processor
CA2123442A1 (en) * 1993-09-20 1995-03-21 David S. Ray Multiple execution unit dispatch with instruction dependency
JPH07200289A (ja) * 1993-12-28 1995-08-04 Fujitsu Ltd 情報処理装置
US20050071830A1 (en) * 2003-09-30 2005-03-31 Starcore, Llc Method and system for processing a sequence of instructions

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5621240A (en) * 1979-07-27 1981-02-27 Hitachi Ltd Information processor
JPS5928793B2 (ja) 1979-09-06 1984-07-16 ロス・オペレ−テイング・バルブ・カンパニ− 複式安全弁
JPS57155666A (en) * 1981-03-20 1982-09-25 Fujitsu Ltd Instruction controlling system of vector processor
US4532589A (en) * 1981-12-02 1985-07-30 Hitachi, Ltd. Digital data processor with two operation units
JPS58176151A (ja) * 1982-04-06 1983-10-15 石川島播磨重工業株式会社 セメント焼成設備のクリンカ品質制御方法
JPS58176751A (ja) 1982-04-09 1983-10-17 Hitachi Ltd 命令語解読ユニツト
JPS58189739A (ja) * 1982-04-30 1983-11-05 Hitachi Ltd デ−タ処理システム
JPS58189738A (ja) * 1982-04-30 1983-11-05 Hitachi Ltd デ−タ処理システム
JPS592143A (ja) * 1982-06-29 1984-01-07 Hitachi Ltd 情報処理装置
JPS5932045A (ja) * 1982-08-16 1984-02-21 Hitachi Ltd 情報処理装置
JPH0658631B2 (ja) * 1983-12-19 1994-08-03 株式会社日立製作所 デ−タ処理装置
JPH063584B2 (ja) * 1983-12-19 1994-01-12 株式会社日立製作所 情報処理装置
JPS61160142A (ja) * 1984-12-29 1986-07-19 Hitachi Ltd デ−タ処理装置
JPH0762823B2 (ja) * 1985-05-22 1995-07-05 株式会社日立製作所 デ−タ処理装置

Also Published As

Publication number Publication date
EP0269980A3 (en) 1990-04-04
DE3789604D1 (de) 1994-05-19
EP0269980A2 (de) 1988-06-08
JPS63136138A (ja) 1988-06-08
US4928226A (en) 1990-05-22
JPH0810430B2 (ja) 1996-01-31
EP0269980B1 (de) 1994-04-13

Similar Documents

Publication Publication Date Title
DE3789604T2 (de) Datenprozessor zur parallelen Ausführung von miteinander im Konflikt stehenden Befehlen.
DE69932066T2 (de) Mechanismus zur "store-to-load forwarding"
DE68927911T2 (de) Datenverarbeitungssystem
DE3751503T2 (de) Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen.
DE69028138T2 (de) Mechanismus zur präzisen Behandlung von Ausnahmebedingungen in einem Prozessor mit gepaarten Befehlen
DE69115344T2 (de) Vorverarbeitungsprozessor zur Verbindung von Befehlen für einen Cache-Speicher
DE68929215T2 (de) Datenprozessor
DE4206062C2 (de) Pipelineverarbeitung von Instruktionen
DE68927492T2 (de) Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten
DE3587277T2 (de) System fuer die umgehungssteuerung beim pipelinebetrieb eines computers.
DE69033398T2 (de) Rechnerarchitektur mit Mehrfachbefehlsausgabe
DE2714805C2 (de)
DE3686991T2 (de) Mechanismus fuer parallele speicherdatenabholung und befehlsausfuehrung in einem prozessor mit reduziertem befehlssatz.
DE4222776C2 (de) Parallelverarbeitungseinheit und Verfahren zum Ausführen von Befehlen
DE3116100C2 (de) Datenverarbeitungseinheit
DE3685913T2 (de) Vektorenverarbeitung.
DE68924546T2 (de) Verfahren und Vorrichtung zur Ausführung von Befehlen für ein Vektorverarbeitungssystem.
DE3424962C2 (de)
DE69030931T2 (de) Mehrfachsequenzprozessorsystem
DE2715073C3 (de) Mikroprogrammierte Rechner-Steuervorrichtung
DE69130757T2 (de) Ausführungsvorrichtung für bedingte Verzweigungsbefehle
DE19506435C2 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE4207148A1 (de) Superscalar-prozessor
DE69414592T2 (de) Ausführung von datenverarbeitungsbefehlen
DE2036729A1 (de) Digital Datenverarbeiter

Legal Events

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