DE69032174T2 - Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen - Google Patents

Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen

Info

Publication number
DE69032174T2
DE69032174T2 DE69032174T DE69032174T DE69032174T2 DE 69032174 T2 DE69032174 T2 DE 69032174T2 DE 69032174 T DE69032174 T DE 69032174T DE 69032174 T DE69032174 T DE 69032174T DE 69032174 T2 DE69032174 T2 DE 69032174T2
Authority
DE
Germany
Prior art keywords
instruction
register
data
immediate
shifter
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
DE69032174T
Other languages
English (en)
Other versions
DE69032174D1 (de
Inventor
Makoto Kokubunji-Shi Hanawa
Tadahiko Sagamihara-shi Nishimukai
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
Publication of DE69032174D1 publication Critical patent/DE69032174D1/de
Application granted granted Critical
Publication of DE69032174T2 publication Critical patent/DE69032174T2/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
    • 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/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing

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 Bereich der Erfindung
  • Die vorliegende Erfindung betrifft einen Datenprozessor, wie einen Mikroprozessor (MPU), und insbesondere ein Verfahren zur gleichzeitigen Verarbeitung zweier Befehle in emem Prozessor eines Rechners mit reduziertem Befehlssatz von 32 Bit (32-Bit-RISC-Prozessor).
  • Beschreibung der verwandten Technik
  • Mit der vorliegenden Erfindung in Zusammenhang stehende bekannte Beispiele wurden auf Seiten A-39 und A-58 von "MIPS RISC Architecture", Prentice-Hall Ltd. (1988), auf Seiten 54 bis 55 von "Digest of Technical Papers" der 1989 IEEE International Solid-State Circuit Conference und auf Seiten 199 bis 209 einer Abhandlung mit dem Titel "Microprocessor 80860 Induding One Million Transistors Integrated Therein For Scientific Computations And Visualization", Nikkei Electronics, 3. April 1989 (Nr. 470), beschrieben.
  • Vor kurzem wurde die Architektur des Rechners mit reduziertem Befehlssatz (RISC-Architektur) bei einem Prozessorsystem mit hoher Leistung verwendet. Bei einem solchen RISC-Prozessor-System ist die Befehlscodelänge auf 32 Bit festgelegt. Folglich muß, wenn 32-Bit-Direktdaten zu verarbeiten sind, deren Verarbeitung mit zwei Befehlen erreicht werden, wie zum Beispiel:
  • LUI rt, < obere 16 Bit>
  • ORI rt,rt < untere 16 Bit>
  • Der erste Befehl ist ein Hochlade-Direktbefehl, welcher darin bestimmte 16-Bit-Direktdaten um 16 Bit nach links verschiebt, um 32-Bit-Daten zu erhalten, wobei die 32-Bit- Daten in einem t-ten Register rt gespeichert werden.
  • Der zweite Befehl ist ein Oder-Direktbefehl, welcher 16-Bit-Os zu dem oberen Abschnitt der darin bestimmten 16-Bit-Direktdaten hinzufügt, um eine ODER-Operation zwischen den resultierenden Daten und dem Inhalt des t-ten Registers rt zu berechnen, wobei ein Ergebnis der ODER-Operation im Register rt gespeichert wird.
  • Werden diese beiden Befehle ausgeführt, so wird das Register rt mit den 32-Bit-Direktdaten geladen.
  • Spezifikationen eines Prozessors dieser Art wurden im Architekturhandbuch des 32- Bit-Mikroprozessors R2000, veröffentlicht von MIPS Computer Systems Inc., beschrieben.
  • Wie oben beschrieben, wird beim herkömmlichen RISC-Prozessor, wenn 32-Bit-Direktdaten verarbeitet werden, die Verarbeitung auf der Grundlage zweier Befehle ausgeführt, das heißt, für eine Ausführung sind zwei Zyklen erforderlich.
  • Vor kurzem wurde jedoch ein Prozessor vorgeschlagen, bei welchem die Bus-Datenbreite auf 64 Bit erweitert ist, um die Verarbeitungsleistung durch eine Erweiterung der Busbreite zu verbessern. In 1989 IEEE International Solid-State Circuits Conference (ISSCC) wurde von Intel Corp. beispielsweise ein Mikroprozessor mit einem 64-Bit-Datenbus vorgeschlagen.
  • Das Befehlsformat ist jedoch auch bei dem oben genannten Mikroprozessor unter Berücksichtigung des Code-Ausnutzungsgrads und ahnlichem auf 32 Bit festgelegt. Folglich werden 32-Bit-Direktdaten, obwohl ein 64-Bit-Befehl möglicherweise auf einmal abgerufen werden kann, in zwei 16-Bit-Daten unterteilt, welche auf der Grundlage zweier unter Verwendung zweier Zyklen ausgeführter Befehle verarbeitet werden.
  • Ferner ist der Mikroprozessor der Intel Corp. derart gestaltet, daß er mit einem Verarbeitungsverfahren arbeitet, bei welchem zwei Befehle unter Verwendung des 64-Bit-Busses in einem Zyklus abgerufen werden, so daß dann, wenn die abgerufenen Befehle eine Kombination aus einem Ganzzahl-Befehl und einem Gleitkomma-Befehl enthalten, diese Befehle aus dem nachfolgend genannten Grund gleichzeitig ausgeführt werden. Der Ganzzahl- Befehl und der Gleitkomma-Befehl benötigen jeweils Mehrzweckregister für Ganzzahlen und Gleitkommaregister für Gleitkommawerte. Folglich sind diese Befehle im Hinblick auf deren Ausführungen voneinander unabhängig. Dieses Verarbeitungsverfahren ist jedoch nicht auf eine Verarbeitungsprozedur anwendbar, bei welcher zwei Ganzzahl-Befehle gleichzeitig auszuführen sind.
  • EP-A-0 269 980 offenbart ferner einen Datenprozessor mit einer Befehlsabrufeinheit zum Abrufen eines ersten und eines zweiten Befehls aus einem Speicher, die jeweils eine vorbestimmte Bitlänge aufweisen, und zum parallelen Ausgeben des ersten und zweiten Befehls, einem ersten und einem zweiten Befehlsdekodierer, welche Operationscodes des ersten und des zweiten Befehls als Eingaben empfangen, wobei die genannten Befehle von der Befehlsabrufeinheit geliefert werden, eine Befehlsausführeinheit mit mindestens einer Registerdatei mit einer Vielzahl von Registern und einer Arithmetik-Logik-Einheit, die mindestens entweder durch ein Dekodierergebnis vom ersten Befehlsdekodierer oder durch ein Dekodierergebnis vom zweiten Befehlsdekodierer gesteuert wird, und einem Vergleicher zum Vergleichen von Information eines Bestimmungsfelds des ersten Befehls mit Information eines ersten Ursprungsfelds des zweiten Befehls, wobei die Direktdaten des ersten Befehls der Arithmetik-Logik-Einheit unter Umgehung der Registerdaten zugeführt werden, wenn die Eingaben in den Vergleicher gleich sind, wodurch der erste und der zweite Befehl gleichzeitig innerhalb eines Taklzyklus ausgeführt werden.
  • Ferner sind aus EP-A-0 260 409 Verschieber bekannt, welche parallel zu einer Arithmetik-Logik-Einheit für eine RISC-Verarbeitung verwendet werden.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Es ist eine Aufgabe der vorliegenden Erfindung, einen RISC-Prozessor zu schaffen, bei welchem zwei Befehle mit Hochgeschwindigkeits-Leistung unter Berücksichtigung dieser Abhängigkeitsbeziehung gleichzeitig ausführbar sind.
  • Diese Aufgabe ist durch einen Datenprozessor gemäß Anspruch 1 gelöst. Bevorzugte Ausführungsbeispiele sind in den Unteransprüchen offenbart.
  • Der Mikroprozessor bei einem repräsentativen, erfindungsgemäßen Ausführungsbeispiel umfaßt:
  • (1) eine Befehlsabrufeinheit (640) zum Abrufen eines ersten und eines zweiten Be fehls aus einem Speicher, welche jeweils eine vorbestimmte Befehlslänge in Bit (32 Bit) aufweisen, und zum parallelen Ausgeben des ersten und des zweiten Befehls;
  • (2) einen ersten Befehlsdekodierer (644), welcher als Eingabe einen Operationscode des von der Befehlsabrufeinheit (640) gelieferten, ersten Befehls empfängt;
  • (3) einen zweiten Befehlsdekodierer (645), welcher als Eingabe einen Operationscode des von der Befehlsabrufeinheit (640) gelieferten, zweiten Befehls empfängt;
  • (4) eine Befehlsausführeinheit, welche mindestens eine Registerdatei (650), eine Arithmetik-Logik-Einheit (651) und einen Verschieber (652), um in Übereinstimmung mit mindestens einem der Dekodierergebnisse vom ersten Befehlsdekodierer (644) und vom zweiten Befehlsdekodierer (645) gesteuert zu werden, umfaßt;
  • (5) einen ersten Vergleicher (132) zum Vergleichen von Information eines Bestimmungsfelds (112) des von der Befehlsabrufeinheit (640) ausgegebenen ersten Befehls mit Information eines ersten Ursprungsfelds des von der Befehlsabrufeinheit (640) augegebenen zweiten Befehls; und
  • (6) einen zweiten Vergleicher (131) zum Vergleichen von Information eines Bestimmungsfelds (112) des von der Befehlsabrufeinheit (640) ausgegebenen ersten Befehls mit Information eines Bestimmungsfelds (122) des von der Befehlsabrufeinheit (640) ausgegebenen zweiten Befehls,
  • wobei die Registerdatei (650) eine Vielzahl von Registern (R0, R1, R2, R3, ..., R31) enthält,
  • wobei der genannte Mikroprozessor ferner einen Signalübertragungspfad zum Liefern der Ausgabe vom Verschieber (652), welcher mit den Direktdaten (114) des ersten Befehls in Zusammenhang steht, an einen Eingang (656) der Arithmetik-Logik-Einheit (651) unter Umgehung der Registerdatei (650) umfaßt, wobei das genannte Liefern der Ausgabe unabhängig von einer mit einer Ausgabe vom ersten Vergleicher (132) und einer Ausgabe vom zweiten Vergleicher (131) verknüpften Steuerbedingung erfolgt. Hierzu sei auf Fig. 1A verwiesen.
  • Die Befehlsabrufeinheit (640) ruft in einem Zyklus den ersten und zweiten Befehl aus dem Speicher (620) ab, so daß der abgerufene erste und der abgerufene zweite Befehl jeweils durch den ersten und zweiten Dekodierer (644, 645) dekodiert werden.
  • Die Befehlsausführeinheit (650, 651, 652) wird in Abhängigkeit von den Dekodierergehnissen vom ersten und zweiten Dekodierer (644, 645) gesteuert.
  • Die Bedingung, unter welcher die Registerdatei (650) umgangen wird, wenn die Ausgabe vom Verschieber (652) über den Signalübertragungspfad dem Eingang (656) der Arithmetik-Logik-Einheit (651) zugeführt wird, lautet wie folgt: Die Bedingung umfaßt eine Bedingung, daß der von der Befehlsabrufeinheit (640) ausgegebene erste Befehl ein (LUI)- Befehl ist, welcher von Natur aus bzw. gewöhnlich eine mit den Direktdaten (114) des ersten Befehls in Zusammenhang stehende Ausgabe vom Verschieber (652) unabhängig von der Arithmetik-Logik-Einheit (651) in ein aus der Registerdatei (650), welche durch die Information des Bestirnmungsfelds (112) des ersten Befehls bestimmt ist, ausgewähltes Register (R3) setzt; eine Bedingung, daß der von der Befehlsabrufeinheit (640) zugeführte zweite Befehl ein Befehl ist, welcher gewöhnlich eine Information eines aus der Registerdatei (650), die durch die Information des ersten Ursprungsfelds (123) des zweiten Befehls bestimmt ist, ausgewählten Registers (R3) und eine mit dem zweiten Ursprungsfeld (124) des zweiten Befehls in Zusammenhang stehende Information unabhängig vom Verschieber (652) verarbeitet, um ein Ergebnis der Verarbeitung in ein Register (R3) zu setzen, welches aus der durch die Information des Bestimmungsfelds (122) des zweiten Befehls bestimmten Registerdatei ausgewählt ist; und eine Bedingung, daß die Eingaben (i 12, 123) in den ersten Vergleicher (132) gleich sind.
  • Unter der obigen Bedingung können der erste und der zweite Befehl grundsätzlich gleichzeitig ausgeführt werden. Ferner liefert das System unter Umgehung der Registerdatei (650) die mit den Direktdaten (114) vom ersten Befehl in Zusammenhang stehende Ausgabe vom Verschieber (652) zum Eingang (656) der Arithmetik-Logik-Einheit (651) mit hoher Geschwindigkeit, wobei die Ausgabe eine Information des ersten Ursprungsfelds (123) des zweiten Befehls darstellt.
  • Wird das obige Verfahren zur Umgehung der Registerdatei (650) nicht in einer Situation einer großen Anzahl von Registern (R0 bis R31), welche die Registerdatei (650) bilden, angewandt, so kommt es zu sehr langen Verzögerungszeiten, wenn die Ausgabe vom Verschieber (652) über die Registerdatei (650) zum Eingang (656) der Arithmetik-Logik- Einheit (651) übertragen wird. In dieser Hinsicht ist das repräsentative, ertindungsgemäße Ausführungsbeispiel zur Verkürzung der Verzögerungszeit sehr geeignet.
  • Es sei angenommen, daß bei der obigen Situation, zusätzlich zu der Bedingung, daß die Eingaben (112 und 123) des ersten Vergleichers (132) gleich sind, die Bedingung gilt, daß der zweite Vergleicher (131) einen gleichen Wert für die Eingaben (112, 122) empfängt, das heißt, daß die Bestimmungsfelder (112, 122) des ersten und des zweiten Befehls und das erste Ursprungsfeld (123) des zweiten Befehls die gleiche Information darstellen. In diesem Fall werden selbst dann, wenn der erste Befehl (LUI-Befehl) gewöhniich Daten des Verschiebers (652) in das Register R3 setzt, die Daten des Registers R3 anschließend unter Verwendung von Daten eines aus dem anschließenden zweiten, durch die Arithmetik-Logik-Einheit (651) verarbeiteten Befehl (ORI-Befehl) erhaltenen Ergebnisses aktualisiert. Die Operation des vorhergehenden ersten (LUI)-Befehls zum Setzen der Daten des Verschiebers (652) in das Register R3 wird bedeutungslos; ferner ist die zur Aktualisierung der Daten verstreichende Zeit unbedeutend.
  • Im Gegensatz hierzu gilt gemäß dem typischen Ausführungsbeispiel der vorliegenden Erfindung, zusätzlich zu der Bedingung; daß die Eingaben (112 und 123) des ersten Vergleichers (132) gleich sind, die Bedingung, daß der zweite Vergleicher (131) einen gleichen Wert für die Eingaben (112, 122) empfängt, wobei das Verschiebungsergebnis des Trommelverschiebers (652), ausgeführt durch den ersten Befehl (LUI), nicht in die Registerdatei (650), sondern direkt über den Signalübertragungspfad mit hoher Geschwindigkeit dem Eingang (656) der Eingänge der Arithmetik-Logik-Einheit (651) zugeführt wird. Dem anderen Eingang (655) der Arithmetik-Logik-Einheit (651) hingegen werden die erweiterten 32-Bit-Daten der Direktdaten (124) des zweiten Befehls zugeführt. Hierdurch können der erste Befehl (LUI) und der zweite Befehl (ORI) in einem Zyklus mit hoher Geschwindigkeit ausgeführt werden.
  • Die oben genannten und weitere Aufgaben, Vorteile, Betriebsweisen und neuartige Merktnale der vorliegenden Erfindung ergeben sich aus der nachfolgenden genauen Beschreibung in Verbindung mit den beiliegenden Zeichnungen.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Fign. 1A und 1B sind schematische Blockdiagramme, die jeweils Ausführungsbeispiele eines erfindungsgemäßen Datenprozessors mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen, darstellen;
  • Fign. 2A und 2B sind Diagramme, die jeweils Befehlsformate für die Ausführungsbeispiele des erfindungsgemäßen Datenprozessors darstellen;
  • Fign. 3A bis 3D sind Blockdiagramme, die Operationen, bei welchen der Datenprozessor zwei Befehle nacheinander ausführt, erläuternd darstellen;
  • Fign. 4A bis 4C sind Diagramme, welche durch den Datenprozessor ausgeführte Operationen einer Pipeline-Verarbeitung darstellen;
  • Fig. 5 ist eine Tabelle, welche eine Bitzuordnung für den Befehls-Operationscode im Datenprozessor darstellt; und
  • Fig. 6 ist ein Blockdiagramm, welches die Grundsystemkonfiguration des Datenprozessors von Fig. 1 darstellt.
  • BESCHREIBUNG DER BEVORZUGTEN AUSFUHRUNGSBEISPIELE
  • Nachfolgend wird unter Bezugnahme auf die Zeichnungen ein erfindungsgemäßes Ausführungsbeispiel beschrieben.
  • Grundstruktur des Datenprozessors
  • Fig. 6 ist ein Blockdiagramm, welches einen Datenprozessor als erfindungsgemäßes Ausführungsbeispiel darstellt. Der Datenprozessor umfaßt grundsätzlich eine Prozessoreinheit 610, einen Programmspeicher 620 und einen Datenspeicher 630.
  • Der Programmspeicher 620 ist mittels eines Befehls-Adreßbusses 621 und eines Befehls-Datenbusses 622 mit dem Prozessor 610 verbunden. Der Befehls-Adreßbus 621 weist eine Breite von 32 Bit zur Adressierung von bis zu vier Giga-Byte (GByte) auf Der Befehls-Datenbus 622 weist eine Breite von 64 Bit auf Hierdurch sind zwei durch eine Übertragungsoperation aus dem Programmspeicher 620 abgerufene Befehle gleichzeitig ausführbar.
  • Der Datenspeicher 630 ist über einen Operanden-Adreßbus 631 und einen Operanden-Datenbus 632 mit dem Prozessor 610 verbunden. Der Operanden-Adreßbus 631 weist eine Breite von 32 Bit zur Adressierung von bis zu vier Giga-Byte (Gbyte) auf Der Operanden-Datenbus 632 weist eine Breite von 32 Bit auf Hierdurch können Daten eines Wortes durch eine Übertragungsoperation aus dem Datenspeicher 630 abgerufen oder in diesem gespeichert werden.
  • Der Programmspeicher 620 und der Datenspeicher 630 dienen jeweils als Befehls- Cachespeicher und schneller Daten-Cachespeicher, die jeweils Kopien von Abschnitten und Daten des (nicht dargestellten) Hauptspeichers speichern.
  • Innere Prozessorstruktur
  • Der Prozessor 610 umfaßt einen Prograninizähler 643 zum Berechnen einer Adresse eines Befehls, einen Vor-Abruf-Puffer 640 zum Halten eines vorher abgerufenen Befehls, ein erstes Befehlsregister 641, ein zweites Befehlsregister 642, einen ersten Befehlsdekodierer 644, einen zweiten Befehlsdekodierer 645, eine Registerdatei 650, eine Arithmetik-Logik-Einheit 651, einen Trommelverschieber 652, ein Speicher-Adreßregister (MAR) 653 und ein Speicher-Datenregister (MDR) 654.
  • Vor-Abruf-Einheit
  • Der als Vor-Abruf-Einheit verwendete Vor-Abruf-Puffer 640 weist eine Breite von 64 Bit auf und hält zwei auf einmal aus dem Programmspeicher 620 vorher abgerufene Befehle. Der Vor-Abruf-Puffer 640 überträgt dessen Inhalt zum ersten Register 641 und zweiten Register 642, wenn diese Register für eine Datenempfangsoperation bereit sind. Dies bedeutet, daß die Befehle links und rechts im Puffer 640 jeweils in das erste Register 641 und zweite Register 642 bewegt werden.
  • Bei diesem Ausführungsbeispiel wird eine am höchsten Ende beginnende Adressierung verwendet, so daß der linke und der rechte Befehl, die im Vor-Abruf-Puffer 640 gehalten sind, in dieser Reihenfolge ausgeführt werden.
  • Registerdatei
  • Die Registerdatei 650 umfaßt 32 Register R0 bis R31, die jeweils eine Breite von 32 Bit aufweisen. An der Registerdatei 650 lassen sich gleichzeitig eine 3-Port-Leseoperation und eine 3-Port-Schreiboperation ausführen.
  • Befehlsausführeinheit
  • Die Befehlsausführeinheit umfaßt eine Arithmetik-Logik-Einheit (651) und einen Trommelverschieber 652. Die Arithmetik-Logik-Einheit (651) umfaßt eine Arithmetik-Logik-Einheit (ALU) mit einem 32-Bit-Eingang 655 auf Seite A und einem 32-Bit-Eingang 656 auf Seite B, um Arithmetik-Logik-Operationen mit zwei Eingaben auszuführen. Der Trommelverschieber 652 dient zum Verschieben der Eingabe auf Seite B um die durch die Eingabe von Seite A bestimmte Bitanzahl.
  • Befehlsformat
  • Fign. 2A und 2B stellen Befehlsformate für die Ausführungsbeispiele des Datenprozessors von Fig. 1 dar. Wie in diesen Figuren dargestellt, ist ein Befehl auf eine Länge von 32 Bit festgelegt und besteht aus einem 6-Bit-Feld 210, einem 5-Bit-Feld 220, einem 5-Bit- Feld 230 und einem 16-Bit-Feld 240. Das am weitesten links befindliche 6-Bit-Feld 210 enthält einen Operationscode (OP), welcher einen Befehlstyp bezeichnet. Das darauffolgende 5-Bit-Feld 220 ist ein Bestimmungsfeld, welches ein Register bestimmt, in dem ein Ergebnis einer Befehlsausführung gespeichert wird. Das nächste 5-Bit-Feld 230 ist ein erstes Ursprungsfeld, welches eines der Eingaberegister des Befehls bestimmt. Das am weitesten rechts befindliche 16-Bit-Feld 240 ist ein zweites Ursprungsfeld, welches die andere der Eingaben des Befehls angibt.
  • Dieses Feld 240 wird, wie in Fig. 2A dargestellt, dazu verwendet, 16-Bit-Direktdaten zu speichern oder, wie in Fig. 2B dargestellt, ein Register durch fünf niederwertige Bits davon zu bestimmen, wobei die jeweilige Verwendung davon abhängig ist, ob das am weitesten links stehende Bit des Operationscodes 210 auf 0 oder 1 gesetzt ist. Die Befehle der Formate von Fign. 2A und 2B werden jeweils Direkt- und Registerbefehle genannt.
  • Bei diesem Ausführungsbeispiel umfaßt die Registerdatei 650 32 Register, so daß zur Bestimmung dieser Register, wie oben erwähnt, fünf Bit efforderlich sind.
  • Fig. 5 stellt eine Bitzuordnung des Befehlscodes 210 dar.
  • Ein Hochlade-Direktbefehl (LUI-Befehl) 510 verkettet 16-Bit-0s auf der rechten Seite als 16-Bit-Direktdaten des zweiten Ursprungsfelds 240, um 32-Bit-Direktdaten zu erzeugen und die resultierenden Daten in einem durch das Bestimmungsfeld 220 bezeichneten Register zu speichern.
  • Ein Addier-Direktbefehl (ADDI-Befehl) 512 verkettet 16 Bit, die jeweils mit dem obersten Bit des Inhalts des zweiten Ursprungsfelds 240 auf der linken Seite von 16-Bit-Direktdaten des zweiten Ursprungsfelds 240 identisch sind, um eine Vorzeichenerweiterung zur Bildung von 32-Bit-Direktdaten zu erreichen. Die resultierenden Daten werden anschließend zu dem Inhalt eines durch das erste Ursprungsfeld 230 bezeichneten Registers addiert, um die erhaltenen Daten in einem durch das Bestimmungsfeld 220 bestimmten Register zu speichern.
  • Ein Subtrahier-Direktbefehl (SUBI-Befehl) 514 erreicht, wie im Falle des ADDI-Befehls 512, eine Vorzeichenerweiterung des zweiten Ursprungsfelds 240, um 32-Bit-Direktdaten zu erhalten. Die Daten werden anschließend vom Inhalt eines durch das erste Ursprungsfeld 230 bezeichneten Registers subtrahiert, um die erhaltenen Daten in einem durch das Bestimmungsfeld 220 bestimmten Register zu speichern.
  • Ein UND-Direktbefehl (UNDI-Befehl) 516 verkettet 16-Bit-0s mit 16-Bit-Direktdaten des zweiten Ursprungsfelds 240 auf der rechten Seite, um 32-Bit-Direktdaten in einer Nullerweiterungsweise zu erzeugen, um eine UND-Operation zwischen den Daten und dem Inhalt eines durch das erste Ursprungsfeld 230 angezeigten Registers in einer Bit-für-Bit- Weise durchzuführen. Anschließend werden die resultierenden Daten in einem durch den Inhalt des Bestimmungsfelds 220 bezeichneten Register gespeichert.
  • Ein ODER-Direktbefehl (ORI-Befehl) 518 und ein EXKLUSIV-ODER-Direktbefehl (EORI-Befehl) 520 führen jeweils eine ODER- und eine Exklusiv-ODER-Operation in einer ähnlichen Weise wie bei dem ANDI-Befehl 516 aus.
  • Ein Linksschiebe-Logik-Direktbefehl (SLLI-Befehl) 522 verschiebt den Inhalt eines durch den Inhalt des ersten Ursprungsfelds 230 bezeichneten Registers um einen durch 16- Bit-Direktdaten des zweiten Ursprungsfelds 240 bestimmten Wert nach links, um die resultierenden Daten in einem durch den Inhalt des Bestimmungsfelds 220 bestimmten Register zu speichern. Bei dieser Operation wird ein Wert von 0 sequentiell an die am weitesten rechts stehende Bitposition angehängt.
  • Ein Rechtsschiebe-Logik-Direktbefehl (SRLI-Befehl) 524 führt m emer ahnlichen Weise wie bei dem SLLI-Befehl 522 eine Verschiebeoperation von Daten nach rechts aus. Bei dieser Operation wird ein Wert von 0 sequentiell an die am weitesten links stehende Bitposition angehängt.
  • Der Rechtsschiebe-Arithmetik-Direktbefehl (SRAI-Befehl) 526 führt wie der SLLI- Befehl 522 eine Verschiebeoperation von Daten nach rechts aus. Bei dieser Operation wird jedoch ein Wert, der gleich dem am weitesten rechts stehenden Bit eines durch den Inhalt des ersten Ursprungsfelds angezeigten Registers ist, sequentiell an die am weitesten links stehende Bitposition ein Bit angehängt.
  • Ein Ladebefehl (LD-Befehl) 530 führt wie der ADDI-Befehl 512 eine Vorzeichenerweiterung am zweiten Ursprungsfeld 240 durch, um 32-Bit-Direktdaten zu erhalten, um die resultierenden Daten zum Inhalt eines durch den Inhalt des ersten Ursprungsfelds 230 bezeichneten Registers zu addieren. Unter Verwendung des Ergebnisses der Addition als Adresse wird der Inhalt des Datenspeichers an der Adresse in einem durch den Inhalt des Bestimmungsfelds 220 angezeigten Register gespeichert.
  • Ein Speicherbefehl (ST-Befehl) 532 erhält wie der LD-Befehl 530 eine Adresse zum Speichern des Inhalts eines durch den Inhalt des Bestimmungsfelds 220 bestimmten Registers in einer Speicherzelle des Datenspeichers an der Adresse.
  • Ein Sprungbefehl (JUMP-Befehl) 534 ist ein unbedingter Sprungbefehl, welcher wie der LD-Befehl 530 eine Adresse zum Ubergeben der Steuerung eines Programms an die Adresse bestimmt.
  • Ein Sprungbefehl (Bcc-Befehl) 536 ist ein bedingter Sprungbefehl. Ist eine Sprungbedingung erfüllt, so werden 16 Bit, die alle gleich dem Wert des obersten Bits des Inhalts des zweiten Ursprungsfelds 240 sind, mit 16-Bit-Direktdaten des zweiten Ursprungsfelds 240 auf der linken Seite verkettet, um 32-Bit-Direktdaten in einer Vorzeichenerweiterungsweise zu erhalten. Die Daten werden zu einem eine Adresse des laufenden Befehls anzeigenden Wert des Programmzählers (PC) addiert. Die Steuerung des Programms geht anschließend auf eine durch das Ergebnis der Addition bestimmte Adresse über. Nebenbei sei erwähnt, daß die Sprungbedingung durch fünf Bit des Bestimmungsfelds 220 bestimmt ist.
  • Vom ADD-Befehl 522 bis zum SRA-Befehl 566 reichende Befehle stehen jeweils mit vom ADDI-Befehl 512 bis zum SRAI-Befehl reichenden Befehlen in Beziehung. Bei der Ausführung jedes der Befehle ausgehend vom ADD-Befehl 522 bis hin zum SRA-Befehl 566 wird jedoch ein Inhalt eines Registers als zweiter Ursprungsoperand verwendet.
  • Architektur zur gleichzeitigen Ausführung zweier Befehle
  • Fign. 1A und 1B sind Diagramme, die in Verbindung mit Fig. 6 kennzeichnende Strukturen und Operationen zur gleichzeitigen Ausführung zweier Befehle gemäß der vorliegenden Erfindung darstellen.
  • Fig. 1A stellt eine Konfiguration zur gleichzeitigen Ausführung eines LUI-Befehls und eines weiteren Befehls als Merkmal des erfindungsgemäßen Ausführungsbeispiels dar. Bei der Ausführung des LUI-Befehls wird die Arithmetik-Logik-Einheit 651 nicht verwendet, so daß ein Ergebnis der Verschiebeoperation, welche von dem Trommelverschieber 652 ausgeführt wird, gewöhnlich in einem Register der Registerdatei 650 gespeichert wird. Bei der Ausführung des anderen Befehls wird der Trommelverschieber 652 nicht verwendet, das heißt, es werden die Arithmetik-Logik-Einheit 651 und das zum LUI-Befehl gehörende Register der Registerdatei 650 verwendet.
  • Es sei angenommen, daß der LUI-Befehl auf der linken Seite des Puffers 640 über den 64-Bit-Befehlsdatenbus 622 abgerufen wird, wälirend der ORI-Befehl aüf der rechten Seite des Puffers 640 abgerufen wird.
  • In dem Fall werden herkömmlicherweise bei der Ausführung des LUI-Befehls die Direktdaten 114 durch den Trommelverschieber 652 nach links verschoben, um die verschobenen Daten in das Register R3 der Registerdatei 650 zu setzen. Durch den nächsten ORI-Befehl werden die durch den vorherigen LUI-Befehl nach links verschobenen Direktdaten 114 mit auf 32 Bit erweiterten Direktdaten 124 ODER-verknüpft, um das ODER- verknüpfte Ergebnis im Register R3 zu speichern.
  • Selbst wenn der vorhergehende LUI-Befehl gewöhnlich die nach links verschobenen Daten im Register R3 setzt, werden jedoch die im Register R3 gesetzten Daten anschließend durch ODER-verknüpfte Daten durch den nachfolgenden ORI-Befehl aktualisiert. Dies bedeutet, daß die Operation des vorhergehenden LUI-Befehls bedeutungslos wird. Im Gegensatz hierzu wird gemäß dem Ausführungsbeispiel von Fig. 1A das Ergebnis der zum LUI-Befehl gehörenden Verschiebeoperation des Trommelverschiebers 652 nicht in der Registerdatei 650 gespeichert, sondern dem Eingang 656 der Arithmetik-Logik- Einheit 651 zur Ausführung des ORI-Befehls zugeführt. Dem anderen Eingang 655 davon werden die erweiterten 32-Bit-Direktdaten 124 zugeführt. So sind gemäß dem Ausführungsbeispiel von Fig. 1A die beiden Befehle, das heißt der LUI- und der ORI-Befehl, in einem Zyklus ausführbar.
  • Es sei darauf hingewiesen, daß die 32-Bit-Direktdaten im Register R3 als 32-Bit- Konstante bei der Ausführung von Arithmetikbefehlen (ADD, SUB etc.) und von Logikbefehlen (UND, ODER, EODER etc.) verwendet werden. Alternativ hierzu können die Daten ferner als 32-Bit-Adresse bei der Ausführung von Speicherbefehlen (LD und ST) und eines Sprungbefehls (JUMP) verwendet werden.
  • Nachfolgend wird die gleichzeitige Ausführung dieser beiden Befehle genau beschrieben.
  • Der auf der linken Seite des Puffers 640 über den 64-Bit-Befehlsdatenbus 622 vorabgerufene LUI-Befehl wird in das erste Befehlsregister 641 gesetzt. Gleichzeitig wird der durch die rechte Seite davon vor-abgerufene ORI-Befehl in das zweite Befehlsregister 642 gesetzt.
  • Der erste Befehlsdekodierer 644 dekodiert den Operationscode im Feld 111 des ersten Befehlsregisters 641. Wird erfaßt, daß der Befehl ein LUI-Befehl ist, so aktiviert der erste Befehlsdekodierer 644 den zweiten Befehlsdekodierer 645, so daß der darin gesetzte Befehl dekodiert wird, wodurch eine parallele Ausführung des LUI- und des ORI-Befehls eingeleitet wird.
  • Dies bedeutet, daß bei der LUI-Befehls-Operation 16-Bit-0s auf der rechten Seite als 16-Bit-Direktdaten im zweiten Ursprungsfeld 114 des ersten Befehlsregisters 641 verkettet werden, um erweiterte 32-Bit-Daten durch den Verschieber 652 zu erhalten. Der Verschieber 652 wird durch den ersten Dekodierer 644 gesteuert, welcher den Operationscode 111 im ersten Befehlsregister 641 dekodiert.
  • Ferner vergleicht der zweite Vergleicher 131 den Inhalt des Bestimmungsfelds 112 des ersten Befehlsregisters 641 mit dem Inhalt des Bestimmungsfelds 122 des zweiten Befehlsregisters 642. Wenn die beiden Inhalte der Felder 112 und 122 nicht übereinstimmen, so wird das Verschiebungsergebnis vom Verschieber 652 in das durch den Inhalt des Bestimmungsfelds 112 des ersten Befehlsregisters 641 bestimmte Register R3 geladen. Stimmen die beiden Inhalte dieser Felder überein, so wird das Ergebnis nicht in das Register R3 geladen.
  • Gleichzeitig werden bei der ORI-Befehls-Operation die 16-Bit-Direktdaten im zweiten Ursprungsfeld 124 zu 32-Bit-Daten erweitert. Ferner vergleicht der erste Vergleicher 132 den Inhalt des Bestimmungsfelds 112 des ersten Befehlsregisters 641 mit dem Inhalt des ersten Ursprungsfelds 123 des zweiten Befehlsregisters 642. Stimmen die beiden Inhalte der Felder 112 und 123 überein (das heißt, der Inhalt des Bestimmungsregisters des LUI-Befehls ist gleich dem Inhalt des Ursprungsregisters des ORI-Befehls), so wird die Lese-Operation aus dem durch den Inhalt des ersten Ursprungsfelds bestimmten Register R3 unterdrückt. Anstelle der Lese-Operation wird das Verschiebungsergebnis vom Verschieber 652 mittels der Arithmetik-Logik-Einheit 651 mit den erweiterten 32-Bit-Direktdaten 124 ODER-verknüpft, um das Ergebnis der ODER-Verknüpfüng in dem durch den Inhalt des Bestimmungsfelds 122 bestimmten Register R3 zu speichern. Die Arithmetik-Logik-Einheit 651 arbeitet unter Steuerung des zweiten Dekodierers 645, welcher den Operationscode 121 des Inhalts des zweiten Befehlsregisters dekodiert. Ferner wird auch die Erweiterung der Direktdaten des zweiten Ursprungsfelds 124 durch den zweiten Dekodierer 645 gesteuert.
  • Der nächste auszuführende Befehl wurde im Vor-Abruf-Puffer 640 gehalten. Dieser Befehl wird daher zum ersten und zweiten Befehlsregister 641 und 642 übertragen, um die Ausführungen dieser Befehle in ähnlicher Weise wie oben beschrieben vorzunehmen.
  • Fig. 1B stellt eine weitere Operation zum gleichzeitigen Ausführen eines LUI-Befehls und eines weiteren Befehls als Merkmal der vorliegenden Erfindung dar. Bei der Ausführung des LUI-Befehls wird die Arithmetik-Logik-Einheit 651 nicht verwendet, so daß das Verschiebungsergebnis vom Trommelverschieber 652 gewöhnlich in ein Register der Registerdatei 650 gesetzt wird. Bei der Ausführung des anderen Befehls wird nicht der Trommelverschieber, sondern die Arithmetik-Logik-Einheit 651 verwendet, und die Setz- Operation wird an einem anderen Register der Registerdatei 650 als dem beim LUI-Befehl verwendeten Register ausgeführt.
  • Es sei angenommen, daß der ADD-Befehl im linken Abschnitt des Puffers 640 über den 64-Bit-Befehlsdatenbus 622 abgerufen wird, während der LUI-Befehl im rechten Abschnitt davon abgerufen wird. Gemäß dem ADD-Befehl werden die Inhalte der Register R1 und R2 addiert, um das Ergebnis im Register R3 zu speichern, und der LUI-Befehl setzt Direktdaten in einen oberen Abschnitt des Registers R4. Da diese Operation keinen Konflikt zwischen den Registern in der Registerdatei 650 hervorruft, sind der ADD- und der LUI- Befehl in einem Zyklus ausführbar.
  • Nachfolgend wird die Operation von Fig. 1B genau beschrieben.
  • Zuerst wird der auf der linken Seite des Puffers 640 über den 64-Bit-Befehlsdatenbus 622 abgerufene ADD-Befehl im ersten Befehlsregister 641 gespeichert, wohingegen der auf der rechten Seite davon abgerufene LUI-Befehl in das zweite Befehlsregister 642 gesetzt wird. Der zweite Befehlsdekodierer 645 dekodiert den Operationscode im Feld 151 des zweiten Befehlsregisters 642, um zu erfassen, daß es sich bei dem Befehl um den LUI- Befehl handelt, um das Ergebnis des zweiten Befehlsdekodierers 645 zu aktivieren, wodurch die gleichzeitigen Ausführungen des ADD- und des LUI-Befehls in einem gleichen Zyklus eingeleitet werden.
  • Bei der ADD-Befehls-Operation wird der Inhalt des Registers R1 in Übereinstimmung mit dem Inhalt des ersten Ursprungsfelds 143 des ersten Befehlsregisters 641 gelesen. Ferner wird der Inhalt des Registers R2 daraus in Übereinstimmung mit dem Inhalt des zweiten Ursprungsfelds 144 des Registers 641 gelesen. Die Arithmetik-Logik-Einheit 651 bereichnet eine Summe zwischen diesen Inhalten, um das Ergebnis in dem durch den Inhalt des Bestimmungsfelds 142 bestimmten Register R3 zu speichern. Die Einheit 651 arbeitet unter Steuerung des ersten Dekodierers 644, welcher den Operationscode 141 des ersten Befehlsregisters 641 dekodiert. Ferner vergleicht der Vergleicher 131 den Inhalt des Bestimmungsfelds 142 des ersten Befehlsregisters 641 mit dem Inhalt des Bestirnrnungsfelds 152 des zweiten Befehlsregisters 642. Sind diese Felder gleich, das heißt, daß der Inhalt des Bestimmungsfelds des ADD-Befehls mit dem des LUI-Befehls übereinstimmt, so wird die Operation zum Speichern des Ergebnisses des ADD-Befehls im Register R3 unterdrückt. Anstefle dieser Operation wird das Ausführungsergebnis des LUI-Befehls im Register R3 gespeichert.
  • Gleichzeitig werden bei der LUI-Befehls-Operation 16-Bit-0s auf der rechten Seite als 16-Bit-Direktdaten im zweiten Ursprungsfeld 154 des zweiten Befehlsregisters 642 durch den Verschieber 652 verkettet, um erweiterte 32-Bit-Daten zu erhalten, und die resultierenden Daten werden in dem durch den Inhalt des Bestimmungsfelds 152 bezeichneten Register R4 gespeichert. Der Verschieber 652 arbeitet unter Steuerung des zweiten Dekodierers 645, welcher den Operationscode 151 des zweiten Befehlsregisters 642 dekodiert.
  • Der als nächstes auszuführende Befehl wurde im Vor-Abruf-Puffer 640 gehalten. Der Befehl wird zum ersten und zweiten Befehlsregister 641 und 642 übertragen, um in der gleichen Weise wie oben beschrieben ausgeführt zu werden.
  • Verzögerungsverzweigung und Verzögerungsschlitz
  • Bei einem Verzweigungsbefehl wurde häufig eine Verzögerungsverzweigungstechnik angewandt. Bei dieser Technik wird ein auf einen Verzweigungsbefehl folgender Zyklus Verzögerungsschlitz genannt, welcher dazu verwendet wird, einen unmittelbar auf den Verzweigungsbefehl in einem für den RISC-Prozessor kompilierten Programm folgenden Befehl auszuführen. Folgend auf die Ausführung des unmittelbar auf den Verzweigungsbefehl folgenden Befehls, wird der Verzweigungsbefehl tatsächlich ausgeführt.
  • Der Befehl unmittelbar nach dem Verzweigungsbefehl in einem für den RISC-Prozessor kompilierten Programm entspricht einem einem Verzweigungsbefehl eines für einen gewöhnlichen Datenprozessor, wie einen Rechner mit komplexem Befehlssatz (CISC), kompilierten Programms unmittelbar vorangehenden Befehl.
  • Bei dem RISC-Prozessor-System wird jedoch, wie oben beschrieben, ein unmittelbar auf einen Verzweigungsbefehl folgender Befehl (welcher im Falle des CISC-Prozessors einem einem Verzweigungsbefehl unmittelbar vorangehenden Befehl entspricht) zuerst ausgeführt, und anschließend wird der Verzweigungsbefehl ausgeführt.
  • Zu Einzelheiten über die verzögerte Verzweigung und den Verzögerungsschlitz sei auf Seiten 1-9 und 1-10 von "mips RISC ARCHITECTURE", von Gerry Kane, (1988), verwiesen.
  • Zusammengefaßt werden bei einem gewöhnlichen Prozessor ein Befehlsabrufschritt, ein Befehlsdekodierschritt und ein Befehlsausführschritt in einer Mehrstufen-Pipeline-Weise für eine Parallelverarbeitung von Befehlen ausgeführt. Bei der Pipeline-Parallelverarbeitung ruft die Befehlsabrufeinheit, während eine Verzweigungsadresse für einen Verzweigungsbefehl berechnet wird, kontinuierlich auf den Verzweigungsbefehl folgende Befehle ab.
  • Beim herkömmlichen CISC-Prozessor wird bei Ausführung einer Verzweigung ein auf den Verzweigungbefehl folgender Befehl, welcher zuvor abgerufen ist, ungültig gemacht, so daß der Verzweigungsbestimmungsbefehl abgerufen wird, und anschließend werden der Dekodierschritt und der Ausführungsschritt für den Verzweigungsbestimmungsbefehl ausgeführt. Folglich tritt bei dem CISC-Prozessor nach Ablauf zweier Zyklen für die Ausführung des Verzweigungsbefehls ein Zyklus auf, in welchem keine Operation ausgeführt wird, das heißt, es tritt ein Keine-Operation-Zyklus auf.
  • Beim RISC-Prozessor hingegen wird bei Ausführung eines Verzweigungsbefehls ohne Ungültigmachen eines unmittelbar auf den Verzweigungsbefehl folgenden Befehls, welcher zuvor abgerufen ist (entsprechend einem dem Verzweigungsbefehl unmittelbar vorangehenden Befehl im Falle des CISC-Prozessors), der Befehl zuerst ausgeführt, und anschließend wird der Verzweigungsbefehl ausgeführt, wodurch ein Abrufschritt des Verzweigungsbestimmungsbefehls erreicht wird.
  • Wie oben beschrieben, ist ein Verzweigungsbefehl in einem Programm von einem wichtigen, nicht aufzuhebenden Befehl gefolgt; folglich kann der Zyklus wirksam verwendet werden. Diese Verweigungsoperation wird verzögerte Verzweigung, der Zyklus nach dem Verzweigungsbefehl Verzögerungsschlitz genannt.
  • Verzögerungsschlitz und LUI-Befehls-Verarbeitung
  • Nachfolgend wird ein Verfahren zur Ausführung des LUI-Befehls in Verbindung mit einem Verzögerungsschlitz der verzögerten Verzweigung beim RISC-Prozessor des erfindungsgemäßen Ausführungsbeispiels beschrieben.
  • Handelt es sich beim ersten und zweiten Befehl jeweils um einen Verzweigungs- und einen LUI-Befehl, so ist ein erstes Verfahren anwendbar, bei welchem der LUI- und der Verzweigungsbefehl gleichzeitig ausgeführt werden, so daß der Verzögerungsschlitz der verzögerten Verzweigung der Ausführung eines dritten Befehls zugewiesen wird. Als zweites Veffahren kann, wenn es sich bei dem dritten Befehl ebenfalls um einen LUI-Befehl handelt, ferner ein vierter Befehl im Verzögerungsschlitz zusätzlich zur Operation des ersten Verfahrens ausgeführt werden. Umgekehrt, wenn es sich bei dem dritten Befehl um einen gewöhnlichen Befehl und bei dem vierten Befehl um einen LUI-Befehl handelt, können der dritte und der vierte Befehl gleichzeitig im Verzögerungsschlitz ausgeführt werden. Bei einem dritten Verfahren kann es, wenn sich der LUI-Befehl im Verzögerungsschlitz der verzögerten Verzweigung befindet, möglich sein, daß die vorhergehenden oben erwähnten Verfahren unterdrückt werden, so daß, ohne Vornehmen der gleichzeitigen Verarbeitung des LUI- und des Verzweigungsbefehls, der LUI-Befehl im Verzögerungsschlitz ausgeführt wird.
  • Ferner kann, wenn es sich bei demm ersten Befehl um einen LUI-Befehl handelt, welcher unmittelbar auf einen Verzweigungsbefehl folgt, ein viertes Verfahren angewandt werden, um den ersten LUI-Befehl und einen zweiten gewöhnlichen Befehl unmittelbar nach dem Verzweigungsbefehl im Verzögerungsschlitz gleichzeitig auszuführen. Bei einem fünf ten Verfahren wird, wie beim dritten Verfahren, der LUI-Befehl im Verzögerungsschlitz unabhangig ausgeführt, während die gleichzeitige Ausführung des LUI-Befehls und des auf den LUI-Befehl folgenden Befehls unterdrückt wird.
  • Wie oben erwähnt, muß aufgrund der Tatsache, daß verschiedene Verfahren für den LUI-Befehl in Verbindung mit dem Verzögerungsschlitz anwendbar sind, das Verfahren zur Ausführung des LUI-Befehls im voraus in bezug auf die Software (insbesondere in Verbindung mit dem Kompilierer) definiert sein.
  • Bei der obigen Beschreibung von Fig. 1A handelt es sich bei dem dem LUI-Befehl unmittelbar vorangehenden Befehl nicht um einen Verzweigungsbefehl. Ist bei dem Ausführungsbeispiel von Fig. 1A der Befehl ein Verzweigungsbefehl, so wird der LUI-Befehl im Verzögerungsschlitz des Verzweigungsbefehls ausgeführt; ferner werden der OPI- und der LUI-Befehl nicht gleichzeitig ausgeführt.
  • Bei der Erläuterung von Fig. 1B handelt es sich bei dem dem LUI-Befehl unmittelbar vorangehenden Befehl nicht um einen Verzweigungsbefehl, sondern um einen ADD-Befehl. Ist der dem LUI-Befehl unmittelbar vorangehende Befehl ein Verzweigungsbefehl, wo wird beim Ausführungsbeispiel von Fig. 1B der LUI-Befehl im Verzögerungsschlitz des Verzweigungsbefehls ausgeführt. Dies bedeutet, daß der LUI-Befehl und der Befehl auf der linken Seite, das heißt der Verzweigungsbefehl, nicht gleichzeitig ausgeführt werden.
  • Serielle Ausführung zweier Befehle
  • Nachfolgend wird unter Bezugnahme auf Fign. 3A bis 3D ein Fall beschrieben, bei welchem der Datenprozessor von Fign. 1A und 1B und Fig. 6 nicht gleichzeitig zwei Befehle ausführen kann, das heißt, zwei Befehle werden seriell ausgeführt.
  • Fig. 3A stellt eine Operation dar, bei welcher die Inhalte der Register R1 und R2 in Übereinstimmung mit einem ADD-Befehl addiert werden, um die resultierenden Daten im Register R3 zu speichern. Es sei angenommen, daß der ADD-Befehl im linken Abschnitt des Puffers 640 über den 64-Bit-Befehlsdatenbus 622 abgerufen wird.
  • Die Inhalte der Register R1 und R2 werden daraus in Übereinstimmung mit den Inhalten des ersten und des zweiten Ursprungsfelds 311 und 312 des ersten Befehlsregisters 641 gelesen, um in der Arithmetik-Logik-Einheit 651 addiert zu werden, wobei das Ergebnis in dem durch den Inhalt des Bestimmungsfelds 313 bestimmten Register R3 gespeichert wird.
  • Hierbei arbeitet die Einheit 651 unter Steuerung des ersten Dekodierers 644, welcher den Operationscode 314 des ersten Befehlsregisters 641 dekodiert.
  • Der nächste auszuführende Befehl wurde im zweiten Befehlsregister 642 gehalten. Der Befehl wird anschließend zum ersten Befehlsregister 641 übertragen, um die Verarbeitung wie oben beschrieben auszuführen.
  • Fig. 3B stellt die Operation eines ADDI-Befehls dar, bei welchem der Inhalt des Registers R1 zu den Direktdaten addiert wird, um das Ergebnis der Addition im Register R3 zu speichern. Es sei hierbei angenommen, daß der Befehl im linken Abschnitt des Puffers 640 über den 64-Bit-Befehlsdatenbus 622 abgerufen wurde. Der Inhalt des Registers R1 wird daraus in Übereinstimmung mit dem Inhalt des ersten Ursprungsfelds 321 des ersten Befehlsregisters 641 gelesen, und die 16-Bit-Direktdaten des zweiten Ursprungsfelds 322 werden zu 32-Bit-Daten erweitert. Diese Daten werden in der Einheit 651 zueinander addiert, welche das Ergebnis in dem durch den Inhalt des Bestimmungsfelds 323 bestimmten Register R3 speichert. Die Einheit 651 arbeitet unter Steuerung des ersten Dekodierers 644, welcher den Operationscode 324 des ersten Befehlsregisters 641 dekodiert. Ferner ist auch die Vorzeichenerweiterung der Direktdaten des zweiten Ursprungsfelds 322 durch den ersten Dekodierer 644 gesteuert. Der nächste auszuführende Befehl ist zuvor im zweiten Befehlsregister 642 gehalten. Das System überträgt den Befehl an das erste Befehlsregister 641, um den Befehl wie oben beschrieben auszuführen.
  • Fig. 3C stellt die Wirkungsweise des LD-Befehls dar, bei welchem der Inhalt des Registers R1 zu den Direktdaten addiert wird, um das Register R3 mit Daten des Datenspeichers 630 an einer durch das Ergebnis der Addition bestimmten Adresse zu laden. Es sei angenommen, daß der Befehl im linken Abschnitt des Puffers 640 über den 64-Bit-Befehlsdatenbus 622 abgerufen wurde. Der Inhalt des Registers R1 wird daraus in Übereinstimmung mit dem Inhalt des ersten Ursprungsfelds 331 des ersten Befehlsregisters 641 gelesen, und die 16-Bit-Direktdaten des zweiten Ursprungsfelds 332 werden zu 32-Bit-Daten erweitert. Diese Daten werden in der Einheit 651 zueinander addiert, welche das Ergebnis an das MAR 653 zum Zugriff auf den Datenspeicher 630 überträgt.
  • Die aus dem Datenspeicher 630 ausgelesenen Daten werden über das MDR 654 übertragen, um in dem durch den Inhalt des Bestimmungsfelds 313 bestimmten Register R3 gespeichert zu werden. Der nächste auszuführende Befehl wurde im zweiten Befehlsregister 642 gehalten. Das System überträgt den Befehl zum ersten Befehlsregister 641, um die Verarbeitung in ähnlicher Weise wie oben beschrieben auszuführen.
  • Fig. 3D stellt die Wirkungsweise des ST-Befehls dar, bei welchem der Inhalt des Registers R1 zu den Direktdaten addiert wird, wodurch der Inhalt des Registers R3 im Datenspeicher 630 an einer durch das Ergebnis der Addition bestimmten Adresse gespeichert wird. Hierbei sei angenommen, daß der Befehl im linken Abschnitt des Puffers 640 über den 64-Bit-Befehlsdatenbus 622 abgerufen wurde. Der Inhalt des Registers R1 wird daraus in Übereinstimmung mit dem Inhalt des ersten Ursprungsfelds 341 des ersten Befehlsregisters 641 gelesen, und die 16-Bit-Direktdaten des zweiten Ursprungsfelds 342 werden zu 32-Bit- Daten erweitert. Diese Daten werden durch die Einheit 651 zueinander addiert, welche das Ergebnis an das MAR 653 zum Zugriff auf den Datenspeicher 630 überträgt. Die Schreibdaten werden hingegen aus dem durch den Inhalt des Bestimmungsfelds 3443 bestimmten Register R3 gelesen, um über das MDR 654 zum Datenspeicher 630 übertragen zu werden, welcher die Daten speichert. Der nächste auszuführende Befehl wurde im zweiten Befehlsregister 642 gehalten. Das System überträgt den Befehl zum ersten Befehlsregister 641, um die Verarbeitung in einer ähnlichen Weise wie oben beschrieben auszuführen.
  • Pipeline-Verarbeitung
  • Nachfolgend wird die von dem Datenprozessor durchgeführte Pipeline-Verarbeitung in Verbindung mit den Ausführungsbeispielen von Fign. 1A, 1B und 6 genau beschrieben.
  • Fig. 4A stellt die Pipeline-Verarbeitung dar, bei welcher zwei Befehle beim Ausführungsbeispiel des Prozessors seriell ausgeführt werden. Wie in Fig. 4C dargestellt, sei angenommen, daß die Befehle A bis F zuvor im Programmspeicher 620 gespeichert sind.
  • In Fig. 4A entspricht ein Kästchen bzw. Rahmen einer Operation in einem Taktzyklus jeder Pipeline-Stufe. Dieses System umfaßt vier Pipeline-Stufen, wie eine Befehlsabrufstufe (IF-Stufe), eine Befehlsdekodierstufe (ID-Stufe), eine Ausführstufe (EX-Stufe) und eine Ergebnisschreibstufe (W-Stufe). Nachfolgend werden die Operationen des jeweiligen Taktzyklus beschrieben.
  • [1. Taktzyklus]
  • Es werden 64-Bit-Daten von zwei Befehlen (A und B) aus dem Programmspeicher 620 abgerufen, um diese in den Vor-Abruf-Puffer 640 zu setzen.
  • [2. Taktzyklus]
  • Die Befehle (A und B) werden jeweils in das erste und zweite Befehlsregister 641 und 642 gesetzt. Der erste und zweite Dekodierer 644 und 645 dekodieren jeweils die Befehle. In diesem Fall werden, wenn eine Registerlese-Operation und eine Direktdatenerweiterung erforderlich sind, die Operationen in diesem Zyklus durchgeführt.
  • Ferner werden 64-Bit-Daten der nächsten beiden Befehle (C und D) aus dem Programmspeicher 620 abgerufen, um diese in den Vor-Abruf-Puffer 640 zu setzen.
  • [3. Taktzyklus]
  • Der dekodierte Befehl A wird ausgeführt; anschließend wird der Befehl B im zweiten Befehlsregister 642 in das erste Befehlsregister 641 gesetzt, um durch den ersten Befehlsdekodierer 644 dekodiert zu werden. Bei dieser Operation werden, wenn eine Registerlese-Operation und eine Direktdatenerweiterung erforderlich sind, die Operationen in diesem Zyklus durchgeführt.
  • [4. Taktzyklus]
  • Das Ausführungsergebnis des Befehls A wird in einem Register gespeichert und anschließend der dekodierte Befehl B ausgeführt. Gleichzeitig werden zwei im Vor-Abruf- Puffer 640 gehaltene Befehle (C und D) jeweils in das erste und das zweite Befehlsregister 641 und 642 gesetzt, um durch den ersten bzw. zweiten Befehlsdekodierer 644 bzw. 645 dekodiert zu werden. In diesem Fall werden, wenn eme Registerlese-Operation und die Direktdatenerweiterung erforderlich sind, die Operationen in diesem Zyklus durchgeführt.
  • Ferner werden 64-Bit-Daten der nächsten beiden Befehle (E und F) aus dem Programmspeicher 620 abgerufen, um in den Vor-Abruf-Puffer 640 gesetzt zu werden.
  • Das System führt die nachfolgenden Operationen kontinuierlich in ähnlicher Weise aus.
  • Fig. 4B stellt die Pipeline-Verarbeitung beim Ausführungsbeispiel des auf den Merkmalen der vorliegenden Erfindung beruhenden Prozessors dar, bei welcher die Befehle gleichzeitig ausgeführt werden. Wie in Fig. 4C dargestellt, sei angenommen, daß die Befehle A bis F zuvor im Programmspeicher 620 gespeichert sind. Unter der Annahme, daß es sich beim Befehl A um einen LUI-Befehl handelt, werden nachfolgend die jeweiligen Taktzyklen beschrieben.
  • [1. Taktzyklus]
  • 64-Bit-Daten zweier Befehle (A und B) werden aus dem Programmspeicher 620 abgerufen, um diese in den Vor-Abruf-Puffer 640 zu setzen.
  • [2. Taktzyklus]
  • Die Befehle (A und B) werden jeweils in das erste und zweite Befehlsregister 641 und 642 gesetzt, um durch den ersten bzw. zweiten Befehlsdekodierer 644 bzw. 645 dekodiert zu werden. Folglich wird erfaßt, daß es sich beim Befehl A um einen LUI-Befehl handelt, so daß das System Vorbereitungen für eine gleichzeitige Verarbeitungen dieser beiden Befehle trifft. Sind hierbei eine Registerlese-Operation und eine Direktdatenerweiterung erforderlich, so werden diese Operationen in diesem Zyklus ausgeführt. Ferner werden 64- Bit-Daten der nächsten beiden Befehle (C und D) aus dem Programmspeicher 620 abgerufen, um in den Vor-Abruf-Puffer 640 gesetzt zu werden.
  • [3. Taktzyklus]
  • Der Befehl A (LUI) und der Befehl B werden jeweils durch den ersten und zweiten Befehlsdekodierer 644 und 645 dekodiert, und sie werden gleichzeitig ausgeführt. Die in den Vor-Abruf-Puffer 640 geladenen Befehle (C und D) werden jeweils in das erste und zweite Befehlsregister 641 und 642 gesetzt, um durch den ersten und zweiten Befehlsdekodierer 644 und 645 dekodiert zu werden. Bei dieser Operation werden, wenn eine Registerlese-Operation und eine Direktdatenerweiterung erforderlich sind, die Operationen in diesem Zyklus ausgeführt.
  • Ferner werden 64-Bit-Daten der nächsten beiden Befehle (E und F) aus dem Programmspeicher 620 abgerufen, um in den Vor-Abruf-Puffer 640 geladen zu werden.
  • [4. Taktzyklus]
  • Ausführungsergebnisse der Befehle A (LUI) und B werden in einem Register gespeichert, und anschließend wird der Befehl C durch den ersten Befehlsdekodierer 644 dekodiert, und er wird ausgeführt. Der Befehl D wird aus dem zweiten Befehlsregister 642 in das erste Befehlsregister 641 gesetzt, um durch den ersten Befehlsdekodierer 644 dekodiert zu werden. In diesem Fall werden, wenn eme Registerlese-Operation und eine Direktdatenerweiterung erforderlich sind, die Operationen in diesem Zyklus ausgeführt.
  • Anschließend fahrt das System mit der Verarbeitung in ähnlicher Weise wie oben beschrieben fort.
  • Bei der Beschreibung von Fig. 4B handelt es sich bei dem Befehl A um einen LUI- Befehl; selbstverständlich können jedoch, wie in Verbindung mit Fig. 1B erläutert, selbst dann, wenn der Befehl A ein anderer als der LUI-Befehl und der Befehl B ein LUI-Befehl ist, diese beiden Befehle gleichzeitig ausgeführt werden.
  • Bei den oben beschriebenen Ausführungsbeispielen kann aufgrund der Tatsache, daß das Format jedes Befehls begrenzt definiert ist, die Befehlsdekodier-Operation in einfacher Weise durchgeführt werden. Folglich nimmt die Größe der Schaltung selbst dann nicht in unerwünschtem Maße zu, wenn zwei Befehlsdekodierer vorgesehen sind.
  • Ferner unterscheidet sich bei den Ausführungsbeispielen der Operationscode eines auf die Direktdaten einwirkenden Befehls von dem eines Befehls, welcher Register lediglich in dem am weitesten links befindlichen Bit davon bedient. Folglich kann die Befehlsdekodier-Operation beispielsweise zum Erzeugen eines Steuersignals für die Arithmetik-Logik- Einheit 651 und ähnlichem eine für die obigen Befehle gemeinsame Operation sein, was vorteilhafterweise die Konfiguration der Befehlsdekodierer vereinfacht.
  • Ferner laßt sich in Abhängigkeit lediglich von dem am weitesten links befindlichen Bit des Operationscodes bestimmen, ob die Direktdaten zu verarbeiten sind oder nicht. Dies vereinfacht folglich den Aufbau der Befehlsdekodierer zum Erzeugen von Signalen, wie eines Steuersignals für die Direktgeneratorschaltung.
  • Folglich lassen sich gemaß den Ausführungsbeispielen zwei in einem Zyklus über einen Bus mit großer Datenbreite abgerufene Befehle gleichzeitig ausführen, so daß das Laden für jede Pipeline-Stufe einheitlich sein kann, was den Ausnutzungsgrad der Hardware- Schaltungen erhöht.
  • Insbesondere lassen sich gemaß den Ausführungsbeispielen ohne Andern des herkömmlichen Befehlsformats 32-Bit-Direktdaten in einem Zyklus verarbeiten, was zu einer Verbesserung der Systemleistung führt, wobei die Kompatibilität des Systems beibehalten wird.
  • Ferner wird gemaß den Ausführungsbeispielen dann, wenn sich ein LUI-Befehl in einem Verzögerungsschlitz eines Verzweigungsbefehls befindet, die gleichzeitige Ausführung des LUI-Befehls und eines weiteren Befehls unterdrückt. Folglich treten selbst dann, wenn das herkömmliche Programm ohne irgendeine Änderung ausgeführt wird, keine Nachteile in Erscheinung, und die Kompatibilität des Systems ist gewährleistet.
  • Wie oben beschrieben, ist erfindungsgemäß ein Befehlssteuersystem problemlos realisierbar, bei welchem zwei Befehle unter Berücksichtigung einer Abhängigkeitsbeziehung von Befehlen vor und nach einem der beiden Befehle gleichzeitig ausgeführt werden.
  • Folglich läßt sich ein Datenprozessor erhalten, dessen Verarbeitungsleistung zweimal so hoch ist wie die des herkömmlichen Prozessors bei Spitzenbelastung.
  • Obwohl besondere Ausführungsbeispiele der Erfindung dargestellt und beschrieben wurden, ist dem Fachmann klar, daß sich verschiedene Änderungen und Modifikationen vornehmen lassen, ohne von der vorliegenden Erfindung im allgemeinen abzuweichen.
  • Fign. 1A, 1B, 3A, 3B, 3C, 3D, 6
  • 620 PROGRAMMSPEICHER
  • 640 VOR-ABRUF-PUFFER 644, 645
  • DEKODIERER
  • 650 REGISTERDATEI
  • DATENSPEICHER
  • Fign. 4A, 4B, 4C
  • CLOCK CYCLE T TAKTZYKLUS
  • PROGRAMM MEMORYT PROGRAMMSPEICHER
  • Fig. 5
  • OPCODE T OP-CODE
  • INSTRUCTION MNEMONIC
  • T BEFEHL, MNEMONISCH

Claims (5)

1. Datenprozessor, der mit einer Computerarchitektur mit reduziertem Befehlssatz eingesetzt wird und
eine Befehlsabrufeinheit (640) zum Abrufen eines ersten und eines zweiten Befehls mit derselben vorbestimmten Bit-Länge aus einem Speicher (620) und zum parallelen Ausgeben des ersten und des zweiten Befehls;
einen ersten Befehlsdekodierer (644) zum Dekodieren des von der Befehlsabrufeinheit (640) empfangenen ersten Befehls;
einen zweiten Befehlsdekodierer (645) zum Dekodieren des von der Befehlsabrufeinheit (640) empfangenen zweiten Befehls;
eine Befehlsausführeinheit mit wenigstens einer Arithmetik-Logik-Einheit (651), einem Verschieber (652) und einer Registerdatei (650) mit einer Vielzahl von Registern, die entweder von dem dekodierten Ergebnis des ersten Befehlsdekodierers (644) oder dem dekodierten Ergebnis des zweiten Befehlsdekodierers (645) gesteuert werden;
einen ersten Vergleicher (132) zum Vergleichen erster Eingaben, die ein Bestimmungsfeld (112) des von der Befehlsabrufeinheit (640) ausgegebenen ersten Befehls und ein Ursprungsfeld (123) des von der Befehlsabrufeinheit ausgegebenen zweiten Befehls enthalten; und
einen Signalübertragungsweg zum Liefern einer Ausgabe des Verschiebers (652) direkt an einen Eingang (656) der Arithmetik-Logik-Einheit (651) unter Umgehung der Registerdatei (650), wenn der von der Befehlsabrufeinheit (640) ausgegebene erste Befehl ein erster Direktbefehl ist, der den Verschieber instruiert, erste Direktdaten zu verarbeiten, wenn der von der Befehlsabrufeinheit ausgegebene zweite Befehl ein Befehl ist, der die Arithmetik-Logik-Einheit instruiert, zu arbeiten, und wenn der erste Vergleicher (123) anzeigt, daß die ersten Eingaben gleich sind, aufweist,
wobei die Ausgabe des Verschiebers (652), die auf dem Signalübertragungsweg an den Eingang (656) der Arithmetik-Logik-Einheit (651) geliefert wird, das Verschiebergebnis der ersten Direktdaten des ersten Direktbefehls ist, wobei das Verschiebergebnis anstelle der Information des ersten Ursprungsfeldes (123) des zweiten Befehls verwendet wird, wodurch der erste und der zweite Befehle gleichzeitig durch die Ausführeinheit in einem Taktzyklus ausgeführt werden können.
2. Datenprozessor gemäß Anspruch 1, wobei die Ausgabe des Verschiebers (652) direkt auf dem Signalübertragungsweg an den Eingang (656) der Arithmetik-Logik-Einheit (651) unter Umgehung der Registerdatei (650) geliefert wird, wenn der von der Befehlsabrufeinheit (640) ausgegebene erste Befehl ein erster Direktbefehl ist, der normalerweise die Ausgabe vom Verschieber (652), die zu den ersten Direktdaten (114) des ersten Direktbefehls gehört, unbeachtlich der Arithmetik-Logikeinheit (651), in einem Register (R3) der Registerdatei (650), die durch die Information des Bestimmungsfeldes (112) des ersten Direktbefehls gekennzeichnet ist, setzt, wenn der von der Befehlsabrufeinheit (650) ausgegebene zweite Befehl ein Befehl ist, der normalerweise, unbeachtlich des Verschiebers (652), die Information des Registers (R3) der Registerdatei (650), die durch die Information des ersten Ursprungsfeldes (123) des zweiten Befehls und die Information, die zum Ursprungsfeld (124) des zweiten Befehls gehört, gekennziechnet ist, mittels der Arithmetik-Logik-Einheit (651) verarbeitet, um ein Verarbeitungsergebnis in einem Register (R3) der Registerdatei (650), die durch die Information des Bestimmungsfeldes (122) des zweiten Befehls gekennzeichnet ist, zu setzen, und wenn die Eingaben (112, 123) des ersten Vergleichers (132) gleich sind.
3. Datenprozessor gemäß Anspruch 2, weiter aufweisend einen zweiten Vergleicher (131) zum Vergleichen der zweiten Eingaben, die das Bestimmungsfeld (112) des von der Befehlsabrufeinheit (640) ausgegebenen ersten Befehls und das Bestimmungsfeld (122) des von der Befehlsabrufeinheit ausgegebenen zweiten Befehls aufweisen, wobei das Verschiebergebnis des Verschiebers (652), das zu den Direktdaten des ersten Direktbefehls gehört, nicht in dem festgelegten Register (R3) der Registerdatei (650) gesetzt wird, wenn die zweiten Eingaben (112, 122) des zweiten Vergleichers (131) gleich sind.
4. Datenprozessor gemäß einem der Anspruche 1 bis 3, wobei der erste Direktbefehl ein Hochlade-Direktbefehl ist, der die ersten Direktdaten um eine vorbestimmte Bitnummer unter Verwendung des Verschiebers (652) nach links verschiebt, und
wobei der zweite Befehl ein Direktbefehl ist, der auf der Grundlage von Information, die aus einem Register in der Registerdatei (650), das durch das erste Ursprungsfeld (123) des ersten Direktbefehls festgelegt ist, ausgelesen wird, und auf der Grundlage der zweiten Direktdaten mittels der Arithmetik-Logik-Einheit (651) arbeitet und das Ergebnis der Verarbeitung in dem bestimmten Register der Registerdatei speichert.
5. Datenprozessor gemaß Anspruch 4, wobei der zweite Direktbefehl ein ODER-Direktbefehl ist, der eine ODER-Operation zwischen der Information, die aus dem Register der Registerdatei (650) ausgelesen wird, und den zweiten Direktdaten berechnet.
DE69032174T 1989-11-08 1990-11-07 Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen Expired - Fee Related DE69032174T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP28887489 1989-11-08

Publications (2)

Publication Number Publication Date
DE69032174D1 DE69032174D1 (de) 1998-04-30
DE69032174T2 true DE69032174T2 (de) 1998-12-03

Family

ID=17735881

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69032174T Expired - Fee Related DE69032174T2 (de) 1989-11-08 1990-11-07 Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen

Country Status (5)

Country Link
US (1) US5269007A (de)
EP (1) EP0427245B1 (de)
JP (1) JP2816248B2 (de)
KR (1) KR0178078B1 (de)
DE (1) DE69032174T2 (de)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2834292B2 (ja) * 1990-08-15 1998-12-09 株式会社日立製作所 データ・プロセッサ
JP3105197B2 (ja) 1991-06-24 2000-10-30 株式会社日立製作所 除算回路及び除算方法
JP2984463B2 (ja) * 1991-06-24 1999-11-29 株式会社日立製作所 マイクロコンピュータ
JP2539974B2 (ja) * 1991-11-20 1996-10-02 富士通株式会社 情報処理装置におけるレジスタの読出制御方式
CA2123442A1 (en) * 1993-09-20 1995-03-21 David S. Ray Multiple execution unit dispatch with instruction dependency
EP0650116B1 (de) * 1993-10-21 1998-12-09 Sun Microsystems, Inc. Gegenflusspipelineprozessor
US5481684A (en) * 1994-01-11 1996-01-02 Exponential Technology, Inc. Emulating operating system calls in an alternate instruction set using a modified code segment descriptor
US5542059A (en) * 1994-01-11 1996-07-30 Exponential Technology, Inc. Dual instruction set processor having a pipeline with a pipestage functional unit that is relocatable in time and sequence order
JPH07219769A (ja) * 1994-02-07 1995-08-18 Mitsubishi Electric Corp マイクロプロセッサ
WO1995022102A1 (en) * 1994-02-08 1995-08-17 Meridian Semiconductor, Inc. Method and apparatus for simultaneously executing instructions in a pipelined microprocessor
US5481693A (en) * 1994-07-20 1996-01-02 Exponential Technology, Inc. Shared register architecture for a dual-instruction-set CPU
US5685009A (en) * 1994-07-20 1997-11-04 Exponential Technology, Inc. Shared floating-point registers and register port-pairing in a dual-architecture CPU
US5619663A (en) * 1994-09-16 1997-04-08 Philips Electronics North America Corp. Computer instruction prefetch system
JP3543181B2 (ja) * 1994-11-09 2004-07-14 株式会社ルネサステクノロジ データ処理装置
US5649174A (en) * 1994-12-09 1997-07-15 Vlsi Technology Inc. Microprocessor with instruction-cycle versus clock-frequency mode selection
US5659785A (en) * 1995-02-10 1997-08-19 International Business Machines Corporation Array processor communication architecture with broadcast processor instructions
TW448403B (en) * 1995-03-03 2001-08-01 Matsushita Electric Ind Co Ltd Pipeline data processing device and method for executing multiple data processing data dependent relationship
JP2798121B2 (ja) * 1995-08-04 1998-09-17 日本電気株式会社 データ処理装置
JP3658072B2 (ja) * 1996-02-07 2005-06-08 株式会社ルネサステクノロジ データ処理装置およびデータ処理方法
US5790826A (en) * 1996-03-19 1998-08-04 S3 Incorporated Reduced register-dependency checking for paired-instruction dispatch in a superscalar processor with partial register writes
US5870577A (en) * 1996-11-27 1999-02-09 International Business Machines, Corp. System and method for dispatching two instructions to the same execution unit in a single cycle
US5864341A (en) * 1996-12-09 1999-01-26 International Business Machines Corporation Instruction dispatch unit and method for dynamically classifying and issuing instructions to execution units with non-uniform forwarding
JP3670668B2 (ja) 1997-01-24 2005-07-13 株式会社ルネサステクノロジ データ処理装置
US6061780A (en) * 1997-01-24 2000-05-09 Texas Instruments Incorporated Execution unit chaining for single cycle extract instruction having one serial shift left and one serial shift right execution units
US6260137B1 (en) * 1997-09-12 2001-07-10 Siemens Aktiengesellschaft Data processing unit with digital signal processing capabilities
US6366998B1 (en) 1998-10-14 2002-04-02 Conexant Systems, Inc. Reconfigurable functional units for implementing a hybrid VLIW-SIMD programming model
JP3683248B2 (ja) * 2002-10-22 2005-08-17 富士通株式会社 情報処理装置及び情報処理方法
US8135975B2 (en) 2007-03-09 2012-03-13 Analog Devices, Inc. Software programmable timing architecture

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6028015B2 (ja) * 1980-08-28 1985-07-02 日本電気株式会社 情報処理装置
JPS6015746A (ja) * 1983-07-08 1985-01-26 Hitachi Ltd デ−タ処理装置
GB8401807D0 (en) * 1984-01-24 1984-02-29 Int Computers Ltd Pipelined data processing apparatus
US4734852A (en) * 1985-08-30 1988-03-29 Advanced Micro Devices, Inc. Mechanism for performing data references to storage in parallel with instruction execution on a reduced instruction-set processor
DE3751503T2 (de) * 1986-03-26 1996-05-09 Hitachi Ltd Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen.
US4766566A (en) * 1986-08-18 1988-08-23 International Business Machines Corp. Performance enhancement scheme for a RISC type VLSI processor using dual execution units for parallel instruction processing
JPH0810430B2 (ja) * 1986-11-28 1996-01-31 株式会社日立製作所 情報処理装置
CA1327080C (en) * 1987-05-26 1994-02-15 Yoshiko Yamaguchi Reduced instruction set computer (risc) type microprocessor
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

Also Published As

Publication number Publication date
EP0427245A3 (en) 1992-01-29
KR910010304A (ko) 1991-06-29
JP2816248B2 (ja) 1998-10-27
JPH03218523A (ja) 1991-09-26
EP0427245B1 (de) 1998-03-25
KR0178078B1 (ko) 1999-05-15
DE69032174D1 (de) 1998-04-30
EP0427245A2 (de) 1991-05-15
US5269007A (en) 1993-12-07

Similar Documents

Publication Publication Date Title
DE69032174T2 (de) Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen
DE68927855T2 (de) Verfahren und Datenverarbeitungseinheit zur Vorverarbeitung von implizierten Spezifizierern in einem Pipeline-Prozessor
DE3750935T2 (de) Verfahren und System zum Erleichtern der Befehlsausführung in einem digitalen Rechner.
DE69024068T2 (de) Verfahren und Datenverarbeitungseinheit zur Pipeline- Verarbeitung von Register- und Registeränderungs- Spezifizierern in dem gleichen Befehl
DE69534113T2 (de) Kompression der Befehlswörter eines Rechners
DE69627807T2 (de) Datenprozessor zum gleichzeitigen Dataladen und Durchführung einer multiplizier-addier Operation
DE68928340T2 (de) Fliessband-Datenprozessor
DE68927415T2 (de) Kontextumschaltungsverfahren und -anordnung zur Verwendung in einem Vektorverarbeitungssystem
DE3650232T2 (de) Rechnersteuerung mit Verzweigung in einem einzigen Zyklus.
DE2903349C2 (de) Prozessor und Verfahren zur Datenverarbeitung
DE69127242T2 (de) Sicherung der Datenintegrität in einem Multipipelineprozessorsystem
DE69123629T2 (de) Maschinenarchitektur für skalaren Verbundbefehlssatz
DE69031991T2 (de) Verfahren und Gerät zur Beschleunigung von Verzweigungsbefehlen
DE69932066T2 (de) Mechanismus zur &#34;store-to-load forwarding&#34;
DE4206062C2 (de) Pipelineverarbeitung von Instruktionen
DE69311330T2 (de) Befehlsablauffolgeplanung von einem risc-superskalarprozessor
DE69308548T2 (de) Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor.
DE69028138T2 (de) Mechanismus zur präzisen Behandlung von Ausnahmebedingungen in einem Prozessor mit gepaarten Befehlen
DE69027932T2 (de) Cpu-pipeline mit registerfile-bypass durch adressvergleich bei aktualisierungen/zugriffen
DE3587591T2 (de) Mikroprozessor für Forth-ähnliche Sprache.
DE69636861T2 (de) Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern
DE69434669T2 (de) Spekulative Befehlswarteschlange für Befehle mit variabler Byteslänge
DE3688824T2 (de) Datenverarbeitungssystem.
DE2715073C3 (de) Mikroprogrammierte Rechner-Steuervorrichtung
DE69133571T2 (de) Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen

Legal Events

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