DE3751503T2 - Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen. - Google Patents

Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen.

Info

Publication number
DE3751503T2
DE3751503T2 DE3751503T DE3751503T DE3751503T2 DE 3751503 T2 DE3751503 T2 DE 3751503T2 DE 3751503 T DE3751503 T DE 3751503T DE 3751503 T DE3751503 T DE 3751503T DE 3751503 T2 DE3751503 T2 DE 3751503T2
Authority
DE
Germany
Prior art keywords
instruction
address
buffer
instructions
signal line
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
DE3751503T
Other languages
English (en)
Other versions
DE3751503D1 (de
Inventor
Kiyoshi Inoue
Eiki Hitachi Koyasudai Kamada
Kazunori Hitachi Dai- Kuriyama
Yooichi Hitachi Tenno Shintani
Tohru Shonai
Akira Hitachi Koyasuda Yamaoka
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 DE3751503D1 publication Critical patent/DE3751503D1/de
Application granted granted Critical
Publication of DE3751503T2 publication Critical patent/DE3751503T2/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/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • 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/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute

Landscapes

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

Description

    HINTERGRUND DER ERFINDUNG
  • Die Erfindung betrifft einen Datenprozessor zum Ausführen von Befehlen auf Pipeline- und parallele Weise, und spezieller betrifft sie einen Datenprozessor, der gleichzeitig zwei Befehle decodiert und sie parallel auf Pipelineweise ausführt.
  • Bei einem bekannten Universal-Großcomputer werden Befehle auf Pipelineweise ausgeführt, um verschiedene Befehle auf überlappte Weise auszuführen, so daß die Ausführungsgeschwindigkeit einer Befehlsfolge wirkungsvoll erhöht ist. Um dies zu verbessern, wurden verschiedene Techniken vorgeschlagen. Z.B. werden gemäß JP-A-60-17538 zum Ausführen eines Befehls, der Operationen hinsichtlich zweier Speicheroperanden erfordert, zwei Adressenaddierer bereitgestellt, damit die Adressen für die zwei Speicheroperanden gleichzeitig berechnet werden. Gemäß JP-A-58-176751 decodieren zwei auf Pipelineweise arbeitende Befehlsausführungseinheiten gleichzeitig (oder parallel) zwei Befehle innerhalb einer Befehlsfolge, um sie parallel auszuführen. Gemäß JP-A-59- 32045 (entsprechend dein US-Patent 4,626,989) wird zum Verbessern der oben genannten parallelen Decodiertechnik dann, wenn zwei Befehle nicht parallel ausgeführt werden können, da das Ergebnis der Ausführung eines ersten Befehls, der als erster auszuführen ist, von einem zweiten Befehl, der später auszuführen ist, verwendet wird, der zweite Befehl folgend auf den ersten Befehl in derselben auf Pipelineweise arbeitenden Befehlsausführungseinheit wie der erste Befehl ausgeführt.
  • Bei der bekannten parallelen Decodiertechnik benötigt jede der beiden auf Pipelineweise arbeitenden Befehlsausführungseinheiten einen Adressengenerator, einen Operandenlesespeicher und eine Operationseinheit. Wenn ein Datenprozessor aufgebaut ist, sind die Operationseinheiten und andere Einheiten doppelt vorhanden. So ist die Investition in Hardware groß und die Steuerkonfiguration ist kompliziert. Da eine Operationseinheit mehrere Einheiten umfaßt, die verschiedene Operationen ausführen, ist ihr Schaltungsumfang groß.
  • IBM Technical Disclosure Bulletin, Vol. 23, No. 1, Juni 1980, Seiten 409 - 412: "Floating-duplex decode and execution of information" offenbart einen Datenprozessor mit Pipelinestruktur, der nur eine Operationseinheit aufweist und zwei aufeinanderfolgende Befehle parallel ausführt, vorausgesetzt, daß sie datenunabhängig sind, wobei der erste kein Verzweigungsbefehl ist und nur einer eine Operation benötigt.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Es ist eine Aufgabe der Erfindung, einen Datenprozessor zu schaffen, dessen Hardwareumfang im Vergleich mit demjenigen einer auf Pipelineweise arbeitenden Befehlsausführungseinheit in einem bekannten Datenprozessor nicht groß ist, und der mehrere Befehle parallel decodieren kann.
  • Die obige Aufgabe ist durch die Maßnahmen gelöst, wie sie im Anspruch 1 dargelegt sind.
  • Zu den auszuführenden Befehlen gehört ein solcher Befehl, der die Operationseinheit verwendet, wie auch ein solcher, der eine andere Betriebsmitteleinrichtung als die Operationseinheit verwendet. Wenn die Erkennungseinrichtung erkennt, daß diese zwei Befehle in das Paar Register entnommen wurden, werden diese zwei Befehle durch die Befehlsausführungseinrichtung parallel ausgeführt. Im Ergebnis werden solche zwei Befehle, die die Operationseinheit und eine andere Betriebsmitteleinrichtung verwenden, parallel ausgeführt. So können zwei Befehle parallel ausgeführt werden, ohne zwei Operationseinheiten bereitzustellen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Fig. 1 zeigt die Gesamtkonfiguration eines die Erfindung verkörpernden Prozessors;
  • Fig. 2a und 2b zeigen eine Einzelheit einer Befehlsentnahmeschaltung 3 in Fig. 1;
  • Fig. 3a, 3b und 3c zeigen verschiedene Befehlsformate;
  • Fig. 4 zeigt ein Detail einer Wähleinrichtung 4 in Fig. 1 zum Auswählen einer Registernummer, wie sie dazu verwendet wird, eine Adresse zu erzeugen;
  • Fig. 5 zeigt eine Schaltung zum Erzeugen eines Auswählsignals und einer Speicherleseanforderung einer Decodiersteuerschaltung 6 in Fig. 1;
  • Fig. 6 zeigt eine Einzelheit eines Befehlsleseaddierers der Decodiersteuerschaltung 6 in Fig. 1;
  • Fig. 7 zeigt eine Einzelheit einer Konflikterkennungsschaltung 5 in Fig. 1;
  • Fig. 8a, 8b, 8c und 8d veranschaulichen einen bei der Erfindung ausgeführten Befehlsausführungsablauf;
  • Fig. 9 zeigt die Gesamtkonfiguration eines anderen die Erfindung verkörpernden Prozessors; und
  • Fig. 10 zeigt eine Einzelheit einer Auswähleinrichtung 800 in Fig. 9.
  • Fig. 11 zeigt eine Einzelheit einer Decodiersteuerschaltung 803 in Fig. 9.
  • BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSBEISPIELE
  • Unter Bezugnahme auf die Zeichnungen werden nun Ausführungsbeispiele der Erfindung erläutert.
  • Fig. 1 zeigt die Gesamtkonfiguration eines Datenprozessors mit Pipelinestruktur, der die Erfindung nutzt. Der Datenprozessor umfaßt zwei Befehlsregister 1 und 2, eine Befehlsentnahmeschaltung 3 zum gleichzeitigen Entnehmen zweier Befehle in einem Befehlspuffer 99 in diese Befehlsregister 1 und 2, eine Wähleinrichtung 4 zum Auswählen einer Universalregisternummer in einer Gruppe von Befehlsregistern, zum Zuführen derselben an eine Gruppe von Universalregistern 7, zwei Adressenerzeugungsschaltungen 8 und 9 zum Erzeugen von Speicherdatenadressen auf Grundlage der aus der Gruppe von Universalregistern ausgelesenen Daten, einen Hauptspeicher 13, einen Operandenpufferspeicher 10 und einen Befehlspufferspeicher 11, auf die mit den Adressen zugegriffen wird, wie sie von den Adressenerzeugungsschaltungen 8 und 9 erzeugt werden, eine Operationseinheit 12 zum Bearbeiten eines aus dem Pufferspeicher 10 ausgelesenen Operanden und zum Einspeichern des Ergebnisses in den Pufferspeicher 10 oder das Universalregister 7, eine Decodiersteuerschaltung 6 zum Decodieren von Befehlen in den Befehlsregistern 1 und 2 zum Steuern der Ausführung derselben, und eine Konflikterkennungsschaltung 5, eine Wähleinrichtung 90 zum Auswählen eines Befehlscodes und einer Registernummer eines Registeroperanden aus Befehlsregistern, die die Operationseinheit 12 nutzende Befehle enthalten, unter den entnommenen und in die Befehlsregister 1 und 2 eingeschriebenen Befehlen, und Register 89 zum Einspeichern des ausgewählten Befehlscodes und der ausgewählten Registernummer bis zum Beginn einer Operation in zeitlicher Abstimmung mit jeder Pipelinestufe. Die Operationseinheit 12 umfaßt mehrere Operationsschaltungen zum Ausführen arithmetischer oder logischer Operationen, wie für die vom Prozessor ausgeführten Befehle erforderlich. Die Operationssteuerung wird dadurch ausgeführt, daß der Operationseinheit 12 über eine Leitung 181 ein in den Registern 89 abgespeicherter Befehlscode in zeitlicher Beziehung für jede Pipelinestufe zugeführt wird.
  • Der vorliegende Prozessor führt Befehle seguentiell auf Pipelineweise aus. Der Befehlspufferspeicher 11 ist getrennt vom Operandenpufferspeicher 10 vorhanden, so daß dann, wenn der Speicher 10 zum Ausführen eines Befehls verwendet wird, der anschließende Befehl parallel abgerufen wird.
  • Die Länge von Befehlen, wie sie durch den vorliegenden Prozessor ausführbar sind, beträgt 2, 4 oder 6 Bytes.
  • Fig. 3a zeigt ein Befehlsformat eines 4-Bytes-Ladebefehls. Der Ladebefehl liest einen Operandendatenwert aus dem Speicher aus und speichert ihn in das Universalregister ein. In Fig. 3a repräsentiert OP einen Operationscode, RF1 repräsentiert die Nummer des Universalregisters, in das der aus dem Speicher gelesene Datenwert einzuspeichern ist, X und B repräsentieren zwei Universalregister(Indexregister und Basisregister)-Nummern zum Berechnen einer Operandenadresse im Speicher, und D repräsentiert einen Versatz. Die Operandenadresse wird dadurch berechnet, daß der Inhalt des Indexregisters (X), der Inhalt des Basisregisters (B) und der Versatz D aufsummiert werden.
  • Fig. 3b zeigt ein Befehlsformat eines 4-Bytes-Verzweigungsbefehls. Der Verzweigungsbefehl vergleicht einen Maskierungswert (M1) des Verzweigungsbefehls und einen Bedingungscode, um zu bestimmen, ob verzweigt werden soll oder nicht. Eine Zielbefehlsadresse wird durch X, B und D des Befehls bestimmt. Die Bedeutungen der Befehlsbits sind identisch mit denen des Ladebefehls, mit Ausnahme des Maskierungswerts (M1).
  • Fig. 3c zeigt einen 6-Bytes-Befehl. Er enthält zwei Operanden, die im Speicher zu bearbeiten sind. Um die Operation zu starten, wird die Adresse des ersten Operanden auf Grundlage von B1 und D1 berechnet, und dann wird die Adresse des zweiten Operanden auf Grundlage von B2 und D2 berechnet, um die Operanden zu lesen.
  • Zur Vereinfachung ist kein Beispiel eines 2-Bytes-Befehls dargestellt.
  • Spezielle Spezifikationen zu Einzelheiten der Befehle sind im HITAC-Handbuch "M Series Processor (M/EA mode)" (Nr. 8080-2-083 (1984), S. 12 - 14, 94, 179 und 195 - 198 beschrieben).
  • Es wird nun die Funktion des vorliegenden Prozessors skizzenhaft erläutert.
  • Die Befehlsregister 1 und 2 verfügen über eine Länge von 6 Bytes bzw. 4 Bytes. Befehle (mit einer Länge von 8 Bytes) werden sequentiell über eine Signalleitung 132 aus dem Befehlspufferspeicher 11 abgerufen und in den Befehlspuffer 99 eingespeichert. Die Befehlsentnahmeschaltung 3 entnimmt Befehle (mit einer Länge von 8 Bytes) einschließlich dem als nächsten auszuführenden Befehl aus den im Befehlspuffer 99 abgespeicherten Befehlen. Wenn der als nächster auszuführende Befehl eine Länge von 2 Bytes oder 4 Bytes hat, sind zwei Befehle in den entnommenen Befehlen enthalten, und die Befehlsentnahmeschaltung 3 schreibt den als nächsten auszuführenden Befehl (erster Befehl) und den folgenden Befehl (zweiter Befehl) in die Befehlsregister 1 bzw. 2 ein. Wenn der als nächster auszuführende Befehl eine Länge von 6 Bytes hat, wird nur der erste Befehl in das Befehlsregister 1 eingeschrieben.
  • Es wird nun der Vorgang erläutert, wenn der erste und zweite Befehl in das erste und zweite Befehlsregister eingeschrieben sind.
  • Bei der Erfindung werden beide Befehle gleichzeitig ausgeführt, wenn kein Registerkonflikt hinsichtlich des ersten und zweiten Befehls oder ein Konflikt zwischen Betriebsmitteleinrichtungen (Adressenerzeugungsschaltungen 8, 9 und Pufferspeichern 10, 11) besteht, und wenn irgendein Konflikt besteht, wird nur der erste Befehl bevorzugt ausgeführt. Die dazu erforderliche Verarbeitung wird von der Konflikterkennungsschaltung 5 und einer Befehlskombination-Erkennungs- schaltung 96 ausgeführt. Die erstere erkennt einen Konflikt dadurch, daß ein Universalregister, in das das Ausführungsergebnis des ersten Befehls einzuschreiben ist, vom zweiten Befehl als Index- oder Basisregister spezifiziert ist. Die letztere erkennt einen Konflikt dadurch, daß der erste und der zweite Befehl dieselbe Adressenerzeugungsschaltung 8 oder 9 verwenden.
  • Wenn der erste Befehl das Abrufen des Speicheroperanden und die Verwendung der Operationseinheit erfordert, und der zweite Befehl das Abrufen eines Befehls erfordert, und wenn kein Registerkonflikt zwischen diesen Befehlen besteht, können diese Befehle beim vorliegenden Ausführungsbeispiel parallel ausgeführt werden, da der Operandenpuffer 10 und der Befehlspuffer 11 getrennt vorhanden sind. Die Wähleinrichtung 4 wählt eine Indexregisternummer, eine Basisregisternummer und einen Versatz aus, wie durch den ersten Befehl spezifiziert, und sie liest den Inhalt der diesen Registernummern entsprechenden Universalregister. Die Adressenerzeugungseinheit 8 (die ein Addierer mit drei Eingängen ist) addiert die Inhalte der Register und des Versatzes, um eine Adresse für den Speicherzugriff zu erzeugen. Die erzeugte Adresse wird an den Pufferspeicher 10 geliefert und dazu verwendet, den durch den ersten Befehl spezifizierten Operanden abzurufen.
  • Die Wähleinrichtung 4 wählt eine Indexregisternummer, eine Basisregisternummer und einen Versatz, wie durch den zweiten Befehl spezifiziert, aus und liest den Inhalt der diesen Registernummern entsprechenden Universalregister 7. Die Adressenerzeugungsschaltung 9 (die ebenfalls ein Addierer mit drei Eingängen ist) addiert den Inhalt der Universalregister und den Versatz, um eine Adresse für den Speicherzugriff zu erzeugen. Die erzeugte Adresse wird an einen Pufferspeicher 11 geliefert und dazu verwendet, den durch den zweiten Befehl spezifizierten Befehl abzurufen.
  • Wenn der erste Befehl das Abrufen eines Befehls erfordert und der zweite Befehl das Abrufen eines Speicheroperanden und die Verwendung der Operationseinheit erfordert, werden diese Befehle parallel ausgeführt. Die Adressenerzeugungsschaltung 8 und der Pufferspeicher 10 werden für den Befehl 2 verwendet, und die Adressenerzeugungsschaltung 9 und der Pufferspeicher 11 werden für den Befehl 1 verwendet.
  • Wenn sowohl der erste als auch der zweite Befehl das Abrufen von Speicheroperanden erfordern, können die zwei Befehle nicht parallel ausgeführt werden, da beim vorliegenden Ausführungsbeispiel nur ein Operandenpuffer 10 und nur eine Operationseinheit 12 vorhanden sind, und es wird nur der erste Befehl ausgeführt. Es werden die Adressenerzeugungsschaltung 8 und der Pufferspeicher 10 verwendet.
  • Wenn sowohl der erste als auch der zweite Befehl das Abrufen von Befehlen erfordern, wird nur der erste Befehl ausgeführt. Für den Befehl 1 werden die Adressenerzeugungsschaltung 9 und der Pufferspeicher 11 verwendet.
  • Wenn nur der Befehl 1 ausgeführt wird, entnimmt die Befehlsentnahmeschaltung 3 eine Gruppe von Befehlen (mit einer Länge von 8 Bytes), die den Befehl 2 als als nächsten auszuführenden Befehl beinhaltet, aus dem Befehlspuffer 99, und der Befehl 2 wird in das Befehlsregister 1 eingeschrieben, und der als nächster auszuführende Befehl wird in das Befehlsregister 2 eingeschrieben. So wird der Befehl 2 nur einen Zyklus nach dem Befehl 1 ausgeführt.
  • Der Befehlscode und die Registernummer eines Befehls, der ausgeführt werden darf, werden durch die Wähleinrichtung 30 ausgewählt und an die Register 89 gegeben. Die Register 89 umfassen mehrere in Reihe geschaltete Register. Der Inhalt jedes Registers wird aufeinanderfolgend an das nächste Register geliefert. Ein Befehl wird in mehreren Pipelinestufen ausgeführt, wobei jede Stufe jedem der Register entspricht. Der Inhalt jedes Registers wird dazu verwendet, die zugehörige Stufe zu steuern. Wenn ein Befehl, der zur Ausführung freigegeben ist, Daten in den Universalregistern 7 als Operationsoperand verwendet, werden die durch den Befehl spezifizierten Registernummern R1 und R2 über eine Leitung 180 an die Universalregister 7 geliefert. Auf einer Leitung 182 wird ein Operand ausgelesen und an die Operationseinheit 12 geliefert.
  • Die Decodiersteuereinheit 6 beinhaltet eine Wähleinrichtung- Steuerschaltung 94, die die Wähleinrichtung 4 steuert, eine Anforderungserzeugungsschaltung 94, die eine Abrufanforderung für den Pufferspeicher 10 oder 11 ausgibt, und eine Decodierende-Erkennungsschaltung 99, die die gesamte Schaltungsanordnung steuert.
  • Es werden nun Einzelheiten des Prozessors von Fig. 1 erläutert. Einzelheiten der Befehlsentnahmeschaltung 3 sind in den Fig. 2a und 2b dargestellt, wobei Fig. 2a eine Hardwarekonfiguration zeigt und Fig. 2b den Betrieb derselben veranschaulicht. Eine Signalleitung 199 gibt aus dem Befehlspuffer 99 abgerufene 8-Bytes-Befehle an, und eine Signalleitung 150 bezeichnet die ersten zwei Bits unter diesen acht Bytes. Die im vorliegenden Prozessor gehandhabten Befehle weisen das Befehlsformat eines Computers der HITAC-M-Reihe auf, und die Befehlslänge ist durch die ersten zwei Bits eines Befehls spezifiziert. Wenn die ersten zwei Bits eines Befehls "00" sind, hat der Befehl eine Länge von zwei Bytes, wenn sie "11", hat er eine Länge von sechs Bytes, und wenn sie weder "00" noch "11" sind, hat er eine Länge von vier Bytes. (Einzelheiten zur Befehlsspezifikation für die M-Reihe sind im HITAC-Handbuch "M Series Processor (M/EA mode)" (Nr. 8080-2-083 (1984), S. 63 - 64) beschrieben). Der Decodierer 158 decodiert die ersten zwei Bits zum Steuern der Wähleinrichtung 159 und er erzeugt ein erstes und ein zweites Gültigkeitssignal V1 und V2, die anzeigen, ob gültige Befehle an das erste und zweite Befehlsregister 1 und 2 geliefert wurden. Wenn z.B. die ersten zwei Bits des Befehls "00" sind, hat der Befehl eine Länge von zwei Bytes und die Wähleinrichtung 159 entnimmt das erste und zweite Byte der acht Bytes auf der Signalleitung 199 in die Signalleitung 101 und liefert sie an das erste Befehlsregister. Andererseits entnimmt die Wähleinrichtung 159 zum Entnehmen des Befehls, der an den auf die Signalleitung 101 entnommenen Befehl anschließt, aus den acht Bytes auf der Signalleitung 199, das dritte bis sechste (vier) Bytes auf die Signalleitung 102 und liefert sie an das zweite Befehlsregister. Wenn die ersten zwei Bits des Befehls eine Befehlslänge von vier Bytes anzeigen, werden die Bytes 1 - 4 auf der Signalleitung 199 in das erste Befehlsregister 1 entnommen, und der nächste Befehl, d.h. die Bytes 5 - 8 werden von der Signalleitung 199 in das zweite Befehlsregister 2 entnommen. Wenn der erste Befehl eine Länge von sechs Bytes hat, werden die Bytes 1 - 6 auf der Signalleitung 199 entnommen und an das erste Befehlsregister 1 geliefert, und nichts wird an das zweite Befehlsregister 2 geliefert. D.h., daß dann, wenn ein Befehl mit einer Länge von sechs Bytes in das erste Befehlsregister entnommen wird, der unmittelbar folgende Befehl nicht parallel ausgeführt wird.
  • Der Decodierer erzeugt "1" für V1 und V2, wenn die ersten zwei Bits auf der Leitung 199 "00", "01" oder "10" sind, und er erzeugt "0" für V2, wenn die ersten zwei Bits "11" sind, um anzuzeigen, daß kein gültiger Befehl in das zweite Befehlsregister 2 geliefert wurde. Es ist zu beachten, daß dann, wenn der in das zweite Befehlsregister 2 eingeschriebene Befehl eine Länge von sechs Bytes hat, selbst dann keine Ausrichtung für alle Bytes erfolgt, wenn das Signal V2 auf die Leitung 154 gegeben ist.
  • Die aus dem Befehlspuffer 99 abgerufenen Befehle werden durch die Befehlsentnahmeschaltung 3 als erster und zweiter Befehl in die Befehlsregister 1 und 2 entnommen. Es sei angenommen, daß ein Lesebefehl in das erste Befehlsregister 1 entnommen ist und ein Verzweigungsbefehl in das Befehlsregister 2 entnommen ist.
  • Wenn der Ladebefehl und der Verzweigungsbefehl in die Befehlsregister 1 bzw. 2 entnommen sind, nimmt der Ladebefehl auf den Operandenpufferspeicher 10 Bezug, um den Operanden abzurufen, und der Verzweigungsbefehl nimmt auf den Befehlspufferspeicher 11 Bezug, um einen Verzweigen-zu-Befehl abzurufen. Dieser Vorgang wird nachfolgend erläutert.
  • Wenn die Befehle in die Befehlsregister 1 und 2 entnommen sind, werden die Operationscodes für den ersten und zweiten Befehl durch den Decodierer 98 in der Decodiersteuerschaltung 6 decodiert, die Möglichkeit einer parallelen Ausführung der zwei Befehle wird durch die Befehlskombination-Erkennungsschaltung 96 überprüft, durch die Anforderungserzeugungsschaltung 94 wird ein Anforderungssignal für den Speicher erzeugt, und durch die Wähleinrichtung-Steuerschaltung 95 wird ein Steuersignal für die Wähleinrichtung 4 erzeugt. Wenn das Ende der Befehlsdecodierung von der Decodierende- Erkennungsschaltung 97 erkannt wird, wird die Adresse in der Befehlsabruf-Adressenerzeugungsschaltung 93 entsprechend der Befehlslänge inkrementiert, um den nächsten Befehl abzurufen.
  • Einzelheiten der Wähleinrichtung 4 sind in Fig. 4 dargestellt. Die Zahlen 190, 193 - 195 bezeichnen Wähleinrichtungen mit zwei Eingängen und einem Ausgang, und die Zahlen 191 und 192 bezeichnen Wähleinrichtungen mit drei Eingängen und einem Ausgang. Die Wähleinrichtungen 190 - 195 wählen die Registernummern des Indexregisters und des Basisregisters oder die Versätze aus und liefern sie an das Universalregister 7 und die Adressenerzeugungsschaltungen 8 und 9. Der Auswählvorgang wird wie folgt über die Signalleitung 117 gesteuert. Z.B. werden die Indexregisternummern gemäß dem ersten Befehl und dem zweiten Befehl der Wähleinrichtung 190 zugeführt. Wenn die Steuerleitung 269 nicht gesetzt ist, wird die Indexregisternummer 106 entsprechend dem ersten Befehl ausgewählt und der Signalleitung 119 zugeführt. Der Datenwert, der unter Verwendung dieser Registernummer gelesen wird, wird der Adressenerzeugungsschaltung 8 über die Signalleitung 124 zugeführt. Wenn die Decodiersteuerschaltung 6 bestimmt, daß die Adressenberechnung für den zweiten Befehl durch die Adressenerzeugungsschaltung 8 ausgeführt wird, wird die Signalleitung 269 gesetzt und die Indexregisternummer 112 für den zweiten Befehl wird ausgewählt und der Signalleitung 119 zugeführt.
  • In der Wähleinrichtung 119 wird dann, wenn die Steuersignale 270 und 265 nicht gesetzt sind, die Basisregisternummer 107 für den ersten Befehl ausgewählt und der Signalleitung 120 zugeführt, und wenn die Decodiersteuerschaltung 6 bestimmt, daß die Adressenberechnung für den zweiten Befehl durch die Adressenerzeugungsschaltung 8 ausgeführt wird, wird die Steuerleitung 270 gesetzt und die Basisregisternummer 113 für den zweiten Befehl wird ausgewählt. Wenn die Decodiersteuerschaltung 6 bestimmt, daß die Adressenberechnung für den zweiten Befehl mit einer Länge von sechs Bytes (Format SS) ausgeführt wird, wird die Signalleitung 109 ausgewählt. Da ein Befehl von sechs Bytes zwei Speicheroperanden enthält, ist beim vorliegenden Prozessor eine zweimalige Speicherbezugnahme erforderlich, und die Signalleitung 109 wird zur Speicherbezugnahme für den zweiten Operanden ausgewählt. Andere Wähleinrichtungen steuern auf ähnliche Weise. Die Wähleinrichtung 192 wählt den Versatz 114 aus, wenn die Signalleitung 271 gesetzt ist, und sie wählt den Versatz 110 aus, wenn die Signalleitung 265 gesetzt ist. Die Wähleinrichtung 193 wählt die Indexregisternummer 112 aus, wenn die Signalleitung 266 gesetzt ist, die Wähleinrichtung 194 wählt die Basisregisternummer 113 aus, wenn die Signalleitung 267 gesetzt ist, und die Wähleinrichtung 195 wählt den Versatz 114 aus, wenn die Signalleitung 268 gesetzt ist.
  • Die Registernummern auf den Signal leitungen 119 - 122 der Ausgangssignale der Wähleinrichtung 4 werden dem Universalregister 7 zugeführt und zum Datenabruf verwendet. Der Inhalt des Registers, wie durch die Signalleitung 119 spezifiziert, wird auf die Signalleitung 124 ausgelesen. Auf ähnliche Weise werden die Inhalte der durch die Signalleitungen 120, 121 und 122 spezifizierten Register auf die Signalleitungen 125, 126 bzw. 127 ausgelesen. Nun sei angenommen, daß ein Ladebefehl in das Befehlsregister 1 eingeschrieben ist und ein Verzweigungsbefehl in das Befehlsregister 2 eingeschrieben ist. So wird der Inhalt des durch den Ladebefehl spezifizierten Indexregisters auf die Signalleitung 124 ausgelesen, der Inhalt des durch den Ladebefehl spezifizierten Basisregisters wird auf die Signalleitung 126 ausgelesen, der Inhalt des durch den Verzweigungsbefehl spezifizierten Indexregisters wird auf die Signalleitung 126 ausgelesen, und der Inhalt des durch den Verzweigungsbefehl spezifizierten Basisregisters wird auf die Signalleitung 127 ausgelesen, was über die Wähleinrichtung 4 und das Universalregister 7 erfolgt. Keine der Signal leitungen 117 ist zu diesem Zeitpunkt gesetzt. Die Adressenerzeugungsschaltung 8 empfängt die Daten auf den Signal leitungen 124 und 125 sowie den Versatz auf der Signalleitung 118, und sie addiert sie und überträgt die sich ergebende Adresse über die Signalleitung 128 an den Operandenpufferspeicher 10, und sie überträgt den daraus abgerufenen Operandendatenwert an die Signalleitung 129 und die Operationseinheit 12 sowie das Universalregister 7, was über die Signalleitung 130 erfolgt, ohne jede Operation in der Operationseinheit 12, und sie speichert ihn in das durch den ersten Befehl spezifizierte Universalregister ein. Andererseits empfängt die Adressenerzeugungsschaltung 9 den Datenwert auf den Signal leitungen 126 und 127 sowie den Versatz auf der Signalleitung 123, und sie addiert sie, um eine Verzweigen-zu-Adresse des Verzweigungsbefehls zu berechnen. Die Summe wird über die Signalleitung 131 an den Befehlspufferspeicher 11 übertragen, um den Verzweigen-zu-Befehl abzurufen. Dieser Verzweigen-zu-Befehl ist erforderlich, wenn ein Verzweigungsbefehl auf eine Verzweigung folgt. In diesem Fall wird der aus dem Pufferspeicher 11 abgerufene Verzweigen-zu-Befehl dem Befehlspuffer 99 über die Signalleitung 132 zugeführt und in die Befehlsregister 1 und 2 entnommen.
  • Die Decodiersteuerschaltung 6 umfaßt die Befehlskombination- Erkennungsschaltung 96, die die Wähleinrichtung 4 abhängig von der Kombination der in die Befehlsregister 1 und 2 entnommenen Befehle steuert, die Wähleinrichtung-Steuerschaltung 95, die Anforderungserzeugungsschaltung 94 zum Ausgeben einer Speicherbezugsanforderung an den Pufferspeicher 10 oder 11, die Decodierende-Erkennungsschaltung 97 zum Erkennen des Decodierendes eines Befehls sowie die Befehlsabruf- Adressenerzeugungsschaltung zum Aktualisieren der Befehlsabrufsadresse.
  • Die Fig. 5 und 6 zeigen Einzelheiten der Decodiersteuerschaltung 6. In Fig. 5 bezeichnet die Zahl 98 einen Decodierer, der die Operationscodes OP1 und OP2 des ersten und zweiten Befehls decodiert und die Ergebnisse an die Signalleitungen 254 - 263 weitergibt. Die Zahl 203 bezeichnet ein Flipflop mit der Funktion des Verzögerns der Eingangssignale um einen Zyklus. Die Zahlen 200 und 209 bezeichnen invertierende Gatter, die die Eingangssignal logisch invertieren. Im übrigen sind UND- oder ODER-Gatter vorhanden.
  • Ein Signal DS auf einer Signalleitung 251 kennzeichnet das Decodierungsende eines Befehls. Es wird gesetzt, wenn das Signal V1, das anzeigt, daß der erste Befehl gültig ist, auf der Signalleitung 153 gesetzt ist, oder wenn das Signal V2, das anzeigt, daß der zweite Befehl gültig ist, auf der Signalleitung 154 gesetzt ist und kein Konfliktsignal CONF auf der Signalleitung 115 gesetzt ist. Diese Schaltung verwendet die Tatsache, daß dann, wenn der zweite Befehl gültig ist, der erste Befehl immer gültig ist. Wenn die Codierung des ersten und des zweiten Befehls durch die Signalleitung 251 abgeschlossen wird, wird die Befehlsabrufadresse durch eine Befehlsabruf-Adressenerzeugungsschaltung 93 (Fig. 6) inkrementiert, so daß die folgenden Befehle in die Befehlsregister 1 und 2 entnommen werden. In Fig. 6 bezeichnet eine Signalleitung 133 die Abrufadresse des Befehls, der aus dem Befehlspufferspeicher 11 abzurufen ist. Wenn die Decodierung des Befehls abgeschlossen ist, wird die Adresse für den vorigen Befehl im Register 232 durch den Addierer 231 um die Befehlslänge 284 des decodierten Befehls erhöht und das Ergebnis wird im Register 232 zur Verwendung beim Abrufen des nächsten Befehls aus dem Pufferspeicher 11 gehalten. Die Signalleitung 251 in Fig. 5 für das Befehlsdecodierende wird dazu verwendet, das Register 232 zu setzen.
  • Die Befehlslänge des decodierten Befehls wird der Signalleitung 284 zugeführt. Die Signalleitung 259 wird gesetzt, wenn der erste Befehl die Adressenerzeugungsschaltung 8 verwendet, und die Signalleitung 260 wird gesetzt, wenn der zweite Befehl die Adressenerzeugungsschaltung 8 verwendet. Die Signalleitung 255 wird gesetzt, wenn der erste Befehl die Adressenerzeugungsschaltung 9 verwendet, und die Signalleitung 274 wird gesetzt, wenn der zweite Befehl die Adressenerzeugungsschaltung 9 verwendet. Die Signal leitungen 153 und 154 zeigen die Gültigkeit des ersten bzw. zweiten Befehls an. Die Signalleitung 281 wird gesetzt, wenn der erste und der zweite Befehl wegen eines Konflikts der Adressenerzeugungsschaltungen 8 und 9 nicht gleichzeitig decodiert werden können. Die Signalleitung 254 wird gesetzt, wenn der erste Befehl eine Länge von sechs Bytes hat und die Signalleitung 280 wird gesetzt, wenn der zweite Befehl eine Länge von sechs Bytes hat. Wie oben beschrieben, wird dann, wenn der erste Befehl eine Länge von sechs Bytes hat, der zweite Befehl nicht decodiert, und wenn der zweite Befehl eine Länge von sechs Bytes hat, wird der zweite Befehl nicht parallel decodiert. Im Ergebnis wird die Signalleitung 296 nur dann gesetzt, wenn die Decodierung nur des ersten Befehls abgeschlossen ist und der nächste Befehl im nächsten Decodierzyklus zu decodieren ist. So wird in diesem Fall die Befehlsabrufadresse um die Befehlslänge IL1 des ersten Befehls inkrementiert. Wenn die Signalleitung 286 nicht gesetzt ist, können der erste und der zweite Befehl parallel decodiert werden. In diesem Fall wird die Adresse um die Summe aus der Befehlslänge des ersten Befehls und der Befehlslänge des zweiten Befehls (IL1 + IL2) inkrementiert. So wird die Befehlslänge IL1 des ersten Befehls auf die Signalleitung 282 geschrieben, und die Summe IL1 + IL2 aus der Befehlslänge IL1 des ersten Befehls und der Befehlslänge IL2 des zweiten Befehls wird auf die Signalleitung 283 geschrieben, so daß die Befehlslänge des decodierten Befehls auf die Signalleitung 284 geschrieben wird und die nächste Befehlsabrufsadresse auf der Leitung 285 dadurch erzeugt wird, daß die ursprüngliche Befehlsadresse im Register 32 und die Befehlslänge auf der Leitung 284 durch den Addierer 231 addiert werden. Die nächste Befehlsabrufsadresse wird in das Register 232 eingeschrieben.
  • Wenn der decodierte Befehl ein Verzweigungsbefehl ist, wird nicht die ursprüngliche Befehlsadresse im Register 232 sondern die Verzweigen-zu-Befehlsadresse 131, wie von der Adressenerzeugungsschaltung 9 in Fig. 1 erzeugt, von der Wähleinrichtung 290 ausgewählt und zur Befehlslänge auf der Leitung 284 addiert.
  • In Fig. 5 wird die Signalleitung 265 gesetzt, wenn der erste Befehl eine Länge von sechs Bytes hat und der zweite Operand des Befehls abzurufen ist. Sie wird im zweiten Zyklus der Entnahme des Befehls von sechs Bytes in das Befehlsregister 1 gesetzt. Die Signalleitung 253 zeigt eine Verzögerung um einen Zyklus beim Decodierendesignal an und die Signalleitung 254 wird gesetzt, wenn der erste Befehl eine Länge von sechs Bytes hat und der Bedingung für die Signalleitung 265 genügt.
  • Die Signalleitung SEL1XAA9 266 wird gesetzt, wenn der erste Befehl die Adressenerzeugungsschaltung 9 verwendet und es erforderlich ist, das Indexregister zu lesen. Die Signalleitung 255 wird gesetzt, wenn der erste Befehl die Adressenerzeugungsschaltung 9 verwendet, und die Signalleitung 256 wird gesetzt, wenn der erste Befehl ein Lesen des Indexregisters erforderlich macht. Da die Signalleitung 257 gesetzt wird, wenn der erste Befehl ein Lesen des Basisregisters erforderlich macht, wird die Signalleitung SEL1BAA9 267 gesetzt, wenn der erste Befehl die Adressenerzeugungsschaltung 9 verwendet und es erforderlich ist, das Basisregister zu lesen. Auf ähnliche Weise wird die Signalleitung SEL1DAA9 268 gesetzt, wenn der erste Befehl die Adressenerzeugungsschaltung 9 verwendet und die Addition des Versatzes erforderlich macht.
  • Da die Signalleitung 261 gesetzt wird, wenn es der zweite Befehl erforderlich macht, das Indexregister zu lesen, wird die Signalleitung SEL2XAA8 269 gesetzt, wenn der zweite befehl die Adressenerzeugungsschaltung 8 verwendet und es erforderlich macht, das Indexregister zu lesen. Auf ähnliche Weise wird, da die Signalleitung 262 gesetzt wird, wenn es der zweite Befehl erforderlich macht, das Basisregister zu lesen, die Signalleitung SEL2BAA8 270 gesetzt, wenn der zweite Befehl die Adressenerzeugungsschaltung 8 verwendet und es erforderlich macht, das Basisregister zu lesen. Da die Signalleitung 263 gesetzt wird, wenn der zweite Befehl die Addition des Versatzes erforderlich macht, wird die Signalleitung SEL2DAA8 271 gesetzt, wenn der zweite Befehl die Adressenerzeugungsschaltung 8 verwendet und die Addition des Versatzes erforderlich macht. Die Adressenberechnung durch den zweiten Befehl kann nicht immer ausgeführt werden, und die Möglichkeit einer Ausführung wird durch die Befehlskombination-Erkennungsschaltung 96 untersucht. In dieser Schaltung wird die Signalleitung 259 gesetzt, wenn der erste Befehl die Adressenerzeugungsschaltung 8 verwendet, und die Signalleitung 260 wird gesetzt, wenn der erste Befehl die Adressenerzeugungsschaltung 8 verwendet. So zeigt das Signal 264 den Zustand an, daß die Verwendung der Adressenerzeugungsschaltung 8 durch den zweiten Befehl zulässig ist. Die Signalleitungen 265 - 271 wurden in Verbindung mit Fig. 4 erläutert.
  • Wie es aus der vorstehenden Beschreibung erkennbar ist, wird die Signalleitung 259 gesetzt, wenn der erste Befehl die Adressenerzeugungsschaltung 8 verwendet, die Signalleitung 264 wird gesetzt, wenn der zweite Befehl die Adressenerzeugungsschaltung 8 verwendet, und die Signalleitung 265 wird gesetzt, wenn der erste Befehl eine Länge von sechs Bytes hat und die Adressenberechnung für den zweiten Operanden des Befehls durch die Adressenerzeugungsschaltung 8 auszuführen ist. Die Operandenabrufanforderung REQ 10 auf der Leitung 272 für den Operandenspeicher 10 kann auf einen der obigen drei Fälle gesetzt werden. Andererseits kann, da die Signalleitung 255 gesetzt wird, wenn der erste Befehl die Adressenerzeugungsschaltung 9 verwendet, und die Signalleitung 274 gesetzt wird, wenn der zweite Befehl die Adressenerzeugungsschaltung 9 verwendet, die Befehlsabrufsanforderung 11 für den Befehlspufferspeicher 11 in den obigen zwei Fällen gesetzt werden.
  • Auf diese Weise decodiert die Decodiersteuerschaltung 9 die Operationscodes des ersten und des zweiten Befehls, um eine Steuerung auszuführen, wie sie für die Speicherbezugnahme des ersten Befehls (Ladebefehl) erforderlich ist, d.h., daß sie eine Eingangsdaten-Auswahlsteuerung für die Adressenerzeugungsschaltung 8 und eine Speicherleseanforderung für den Pufferspeicher 10 ausgibt und eine Steuerung ausführt, wie sie für eine Speicherbezugnahme durch den zweiten Befehl (Verzweigungsbefehl) erforderlich ist, d.h., daß sie eine Eingangsdaten-Auswahlsteuerung für die Adressenerzeugungsschaltung 9 und eine Speicherleseanforderung an den Pufferspeicher 11 ausgibt. Sie erkennt auch das Decodierungsende des ersten und zweiten Befehls, um die Adressen der Befehle genau zu berechnen, die als nächste in die Befehlsregister 1 und 2 zu entnehmen sind, was unter Verwendung des Befehlsadressenaddierers 231 erfolgt, so daß die Befehle sequentiell abgerufen werden.
  • In der obigen Beschreibung ist angenommen, daß ein Lesebefehl und ein Verzweigungsbefehl, wie sie in die Befehlsregister 1 und 2 entnommen wurden, parallel auf den Speicher Bezug nehmen können und parallel decodiert werden können. Jedoch kann der zweite Befehl (Verzweigungsbefehl) im folgenden Fall nicht parallel mit dem Ladebefehl auf den Speicher Bezug nehmen. D.h., daß dann, wenn die durch das Indexregister oder das Basisregister des Verzweigungsbefehls spezifizierte Registernummer durch einen Teil R1 des ersten Befehis (Ladebefehls) spezifiziert wird, um dessen Inhalt zu aktualisieren, ist es erforderlich, die Verzweigen-zu-Befehlsadresse für den zweiten Befehl (Verzweigungsbefehl) zu erzeugen, nachdem der Operand durch den ersten Befehl (Ladebefehl) aus dem Pufferspeicher 10 abgerufen wurde.
  • In Fig. 7 sind Einzelheiten der Konflikterkennungsschaltung 5 dargestellt, die erkennt, ob der erste Befehl das Register ändert, wie es bei der Adressenerzeugung für den zweiten Befehl verwendet wird, wenn die Befehle in die Befehlsregister 1 und 2 entnommen werden. Die Signalleitung 105 gibt eine Registernummer GR1 an, wie durch den ersten Befehl zu aktualisieren, und die Signalleitungen 112 und 113 geben die Indexregisternummer 2X und die Basisregisternummer 2B an, wie bei der Adressenerzeugung durch den zweiten Befehl verwendet. Sie werden durch Komparatoren 300 und 301 verglichen, und wenn sie übereinstimmen, werden die Signal leitungen 213 und 214 gesetzt. Diese Signale werden durch Gatter 302 und 303 mit dem Inhalt der Signalleitung CHG1 310, die anzeigt, daß der erste Befehl den Inhalt des durch R1 spezifizierten Universalregisters ändert, und dem Inhalt der Signalleitung NEED2X 312, die anzeigt, daß der zweite Befehl ein Auslesen des Indexregisters erfordert, oder dem Inhalt der Signalleitung NEED2B, die anzeigt, daß der zweite Befehl das Auslesen des Basisregisters erfordert, logisch UND-verknüpft. Wenn die vom ersten Befehl zu ändernde Registernummer mit der Registernummer übereinstimmt, wie sie vom zweiten Befehl zu lesen ist, wird die Signalleitung CONF 115 gesetzt.
  • Die Signalleitung 115 ist mit der Decodiersteuerschaltung 6 verbunden. Wenn in Fig. 5 die Signalleitung 115 gesetzt ist, ist die Bedingung des UND-Gatters 201 nicht erfüllt, und auch die Bedingungen der UND-Gatter 210 und 217, die das Ausgangssignal 250 des UND-Gatters 201 verwenden, sind nicht erfüllt, so daß die Leseanforderung an den Speicher durch den zweiten Befehl unterdrückt wird. Wenn in Fig. 6 die Signalleitung 115 gesetzt ist, ist der Ausgang 286 des ODER- Gatters 226 gesetzt und es wird die Befehlslänge 282 des ersten Befehls ausgewählt und als Inkrement über die Signalleitung 284 an den Berechnungsaddierer 231 für die nächste Befehlsabrufadresse geliefert.
  • Wenn die Konflikterkennungsschaltung 5 erkennt, daß das vom ersten Befehl zu aktualisierende Register als Index- oder Basisregisters des zweiten Befehls zu lesen ist, steuert die Decodierende-Erkennungsschaltung 99 nur die Ausführung des ersten Befehls, und der zweite Befehl wird erneut durch die Befehlsabrufadresse-Erzeugungsschaltung in das Befehlsregister 1 entnommen, nachdem der erste Befehl decodiert wurde. Es ist erforderlich, das Decodieren des Verzweigungsbefehls zu unterdrücken, bis der vorangehende Ladebefehloperand abgerufen ist. Dies kann mittels einer herkömmlichen Logik erfolgen und wird hier nicht erläutert.
  • Es wird nun der Vorgang erläutert, wie er ausgeführt wird, wenn ein Verzweigungsbefehl und ein Ladebefehl in das Befehlsregister 1 bzw. das Befehlsregister 2 entnommen werden. In Fig. 5 ist, da der erste Befehl die Adressenerzeugungsschaltung 9 verwendet, die Signalleitung 255 gesetzt und die Auswahlleitungen 266 - 268 sind gesetzt. Da der zweite Befehl die Adressenerzeugungsschaltung 8 verwendet, ist die Signalleitung 260 gesetzt und die Signalleitung 259 ist nicht gesetzt. Demgemäß ist die Signalleitung 264 gesetzt und die Auswahlleitungen 269 - 271 sind gesetzt. Im Ergebnis werden die Daten 112 - 114 des zweiten Befehls (Ladebefehls) von den Wähleinrichtungen 190 - 192 in Fig. 4 ausgewählt und den Signalleitungen 118 - 120 zugeführt. Andererseits werden die Daten 106 - 108 des ersten Befehls (Verzweigungsbefehls) durch die Wähleinrichtungen 193 - 195 ausgewählt und den Signalleitungen 121 - 123 zugeführt. Auf diese Weise berechnet die Adressenerzeugungsschaltung 8 die Operandenadresse des zweiten Befehls (Ladebefehls), und die Adressenerzeugungsschaltung 9 berechnet die Verzweigen-zu-Adresse des ersten Befehls (Verzweigungsbefehls).
  • Eine Leseanforderung 272 an den Pufferspeicher 10 sowie eine Leseanforderung an den Pufferspeicher 11 werden gesetzt, und auf die Speicher wird unter Verwendung der wie oben genannt berechneten Adressen Bezug genommen.
  • In Fig. 6 ist, da keine der Signalleitungen 115, 254, 255, 259, 260, 274 und 280 gesetzt ist, der Ausgang des ODER-Gatters 226 nicht gesetzt, und die Summe (IL1 + IL2) aus der ersten Befehlslänge IL1 und der zweiten Befehlslänge IL2 wird durch das UND-Gatter 228 ausgewählt und dem Addierer 231 zugeführt. Im Ergebnis wird die Befehlszugriffsadresse durch die Länge der zwei Befehle inkrementiert, also des Verzweigungsbefehls und des Ladebefehls.
  • Auf diese Weise wird unabhängig davon, in welches der Befehlsregister 1 und 2 der Befehl eingegeben wird, der die Adressenerzeugungsschaltung 8 oder 9 verwendet, die genau entsprechende Adreßerzeugungsschaltung ausgewählt und die Adreßberechnung und die Speicherbezugnahme werden ausgeführt.
  • Wie oben beschrieben, muß dann, wenn zwei Befehle, die zu keinem Konflikt zwischen den Adreßerzeugungsschaltungen 8 und 9 führen, in die Befehlsregister 1 und 2 entnommen werden, nur ein Konflikt zwischen den Registern untersucht werden. Jedoch ist es abhängig von der Kombination der zwei Befehle erforderlich, eine parallele Decodierung der zwei Befehle in der Adressenerzeugungsstufe zu unterdrücken. Dies ist ein Merkmal der Erfindung und wird nachfolgend speziell beschrieben.
  • Zunächst wird ein Vorgang erläutert, wie er ausgeführt wird, wenn Ladebefehle in beide Befehlsregister 1 und 2 entnommen werden, und dann wird ein Vorgang erläutert, wie er ausgeführt wird, wenn Verzweigungsbefehle in beide Befehlsregister 1 und 2 entnommen werden.
  • Wenn Ladebefehle in die Befehlsregister 1 und 2 entnommen werden, setzt die Befehlskombination-Erkennungsschaltung 96 von Fig. 5 die Signalleitung 259, um anzuzeigen, daß der erste Befehl die Adressenerzeugungsschaltung 8 verwendet, und das Ausgangssignal des invertierenden Gatters 209 nimmt den Wert logisch "0" an. Demgemäß ist selbst dann, wenn das Signal 260 gesetzt ist, um anzuzeigen, daß der zweite Befehl die Adressenerzeugungsschaltung 8 setzt, die Bedingung des UND-Gatters 210 nicht erfüllt und ein Benutzungserlaubnissignal 264 für die Verwendung des Adressenaddierers 8 durch den zweiten Befehl wird nicht gesetzt. Demgemäß werden die Ausgangssignale der UND-Gatter 211 - 213 nicht gesetzt. Daher werden in den Wähleinrichtungen 190 - 192 in Fig. 4 die Datenleitungen 106 - 108 für den ersten Befehl ausgewählt und ihr Inhalt wird an die Signal leitungen 118 - 120 gegeben. Im Ergebnis kann die Adressenerzeugungsschaltung 8 die Operandenadresse des Ladebefehls im Befehlsregister 1 berechnen. Wenn in Fig. 5 die Signalleitung 259 gesetzt wird, wird das Operandenabrufanforderungssignal 272 an den Pufferspeicher 10 gesetzt und der Operand wird aus dem Pufferspeicher 10 abgerufen. Andererseits werden, da weder der erste noch der zweite Befehl die Adressenerzeugungsschaltung 9 verwendet, die Signal leitungen 255 und 274 nicht gesetzt und die Signalleitung 273 wird nicht gesetzt. Im Ergebnis erfolgt kein Auslesen aus dem Pufferspeicher 11. In der Befehlskombination-Erkennungsschaltung 96II in Fig. 6 wird, da die Signalleitungen 259 und 260, die anzeigen, daß der erste und der zweite Befehl die Adressenerzeugungsschaltung 8 verwenden, gesetzt sind, der Ausgang des UND-Gatters 220 gesetzt und die Signalleitung 286 wird über die Signalleitung 281 gesetzt. Im Ergebnis wird die Befehlslänge IL1 282 des ersten Befehls ausgewählt und dem Addierer 231 zugeführt. Die Befehlsabrufadresse wird um die Länge des Ladebefehls im Befehlsregister 1 inkrementiert, und der Ladebefehl im zweiten Befehlsregister 2 wird in das Befehlsregister 1 entnommen.
  • Auf diese Weise nehmen die Befehlskombination-Erkennungsschaltungen 96I und 96II dann, wenn Ladebefehle in die Befehlsregister 1 und 2 entnommen werden, eine solche Steuerung vor, daß nur der Ladebefehl im Befehlsregister 1 ausgeführt wird und der Ladebefehl im Befehlsregister 2 einen Zyklus später ausgeführt wird.
  • Nun wird der Vorgang erläutert, wie er ausgeführt wird, wenn Verzweigungsbefehle in die Befehlsregister 1 und 2 entnommen werden. Da sowohl der erste als auch der zweite Befehl die Adressenerzeugungsschaltung 9 verwenden, sind die Decodiersignale 255 und 274 in Fig. 5 gesetzt. Da ein Verzweigungsbefehl nicht die Adressenerzeugungsschaltung 8 verwendet, wird die Befehlskombination-Erkennungsschaltung 96I nicht aktiviert. Im Ergebnis werden die Auswahlsignale266 - 268 und die Leseanforderung 273 an den Pufferspeicher 11 gesetzt. In den Wähleinrichtungen 193 - 195 vonFig. 4 werden die Daten 106 - 108 für den ersten Befehl (Verzweigungsbefehl) ausgewählt und den Signal leitungen 121 - 123 zugeführt. So wird die Verzweigen-zu-Befehlsadresse des ersten Befehls in der Adressenerzeugungsschaltung 9 berechnet. Da die Signalleitung 273 gesetzt ist, kann der Verzweigungsbefehl aus dem Pufferspeicher 11 abgerufen werden. Da weder der erste noch der zweite Befehl die Adressenerzeugungsschaltung 8 verwendet, ist die Leseanforderung 272 an den Pufferspeicher 10 nicht gesetzt. In der Befehlskombination- Erkennungsschaltung 96II in Fig. 6 wird, da die Bedingung des UND-Gatters 221 erfüllt ist, die Befehlslänge 282 des ersten Befehls ausgewählt und an den Addierer 231 geliefert. Die Befehlsabrufadresse wird um die Länge des Verzweigungsbefehls im Befehlsregister 1 inkrementiert, und der Verzweigungsbefehl im Befehlsregister 2 wird erneut in das Befehlsregister 1 entnommen.
  • Wie vorstehend erläutert, werden beim in Fig. 1 dargestellten Prozessor zwei Befehle, die im Hauptspeicher 13 aufeinander folgen, parallel aus dem Pufferspeicher 11 abgerufen und in die Befehlsregister 1 und 2 entnommen. Die Konflikterkennungsschaltung 5 erkennt einen Konflikt zwischen den Registern dahingehend, daß das durch den ersten Befehl zu aktualisierende Universalregister während der Adreßerzeugung vom zweiten Befehl zu lesen ist, und die Befehlskombination- Erkennungsschaltung 96 erkennt einen Konflikt dahingehend, daß der erste und der zweite Befehl dieselben Adressenerzeugungsschaltung oder denselben Pufferspeicher verwenden. Auf diese Weise ist eine parallele Ausführung des ersten und des zweiten Befehls möglich und die Ausführungszeit ist verkürzt.
  • Unter Bezugnahme auf Fig. 8, in der D, A, L, E und P Befehlsausführungszyklen in einem Pipelinesystem bezeichnen, wird die Wirkung einer Hochgeschwindigkeitsoperation im vorliegenden Prozessor erläutert. Im Zyklus D wird ein Befehl decodiert und eine Adresse wird erzeugt; im Zyklus A wird auf den Pufferspeicher Bezug genommen; im Zyklus L wird der aus dem Speicher gelesene Datenwert übertragen; im Zyklus E erfährt der Datenwert eine Operation; und im Zyklus P wird das Ergebnis eingespeichert. Ein Verzweigungsbefehl benötigt die Operation im Zyklus E und das Abspeichern im Zyklus P nicht.
  • In den Fig. 8a und 8b ist (i) ein Ladebefehl, (ii) ist ein Verzweigungsbefehl und (iii) ist ein Verzweigen-zu-Befehl des Verzweigungsbefehls. Bei einem bekannten Prozessor, bei dem mehrere Befehle nicht parallel decodiert werden, werden ein Ladebefehl und ein Verzweigungsbefehl seriell in jedem Zyklus decodiert, wie in Fig. 8a dargestellt. So kann das Decodieren eines Verzweigen-zu-Befehls zwei Zyklen nach dem Ende des Decodierens (Zyklus D) des Verzweigungsbefehls (ii) gestartet werden. Andererseits kann bei der Erfindung, da ein Ladebefehl und ein Verzweigungsbefehl parallel decodiert werden können, der Verzweigungsbefehl (ii) parallel mit dem Ladebefehl (i) decodiert werden, wie in Fig. 8b dargestellt, und der Operandenzugriff hinsichtlich des Ladebefehls sowie der Zugriff hinsichtlich des Verzweigen-zu-Befehls des Verzweigungsbefehls können parallel ausgeführt werden. So erfolgt das Decodieren des Verzweigen-zu-Befehls einen Zyklus früher als in Fig. 8a. In Fig. 8b sind die Ausführungszyklen für einen Verzweigungsbefehl (ii) mit D', A', L', E' und P' bezeichnet. In Fig. 8b werden der Operationszyklus E für den Ladebefehl sowie der Operationszyklus E' für den Verzweigungsbefehl parallel ausgeführt, jedoch ist nur eine Operationseinheit erforderlich, da der Verzweigungsbefehl keine Operation benötigt.
  • In den Fig. 8c und 8d ist (i) ein Verzweigungsbefehl, (ii) ist ein Additionsbefehl und (iii) ist ein Befehl, der bei der Adreßberechnung ein durch den Addierbefehl modifiziertes Universalregister verwendet. Das Befehlsformat des Addierbefehls ist dasselbe wie es in Fig. 3a dargestellt ist. Es sei angenommen, daß der Verzweigungsbefehl (i) keine Verzweigung vornimmt. Im bekannten Prozessor, in dem mehrere Befehle nicht parallel decodiert werden, wird das Decodieren des Befehls (iii) gestartet, nachdem der Operand des Addierbefehls (ii) aus dem Pufferspeicher 10 abgerufen wurde und das Operationsergebnis eingespeichert wurde, wie es in Fig. 8c dargestellt ist. So besteht ein Überhang von vier Zyklen. Andererseits kann bei der Erfindung, da der Verzweigungsbefehl (i) und der Addierbefehl (ii) parallel decodiert werden können, wie in Fig. 8d dargestellt, der Überhang hinsichtlich des Befehls (iii) auf drei Zyklen verkürzt werden.
  • Wie es aus den Fig. 8a - 8d erkennbar ist, wird die Befehlsausführungsgeschwindigkeit nur abhängig von der Kombination von Befehlen erhöht, wie sie parallel in die Befehlsregister 1 und 2 entnommen werden, ohne Rücksicht auf die Folge der zwei Befehle. Außerdem besteht kein Erfordernis, die Hardware der Operationseinheit zu erweitern.
  • Um Befehle nur mittels Befehlskombinationen parallel zu decodieren, ist es erforderlich, daß die Befehlsregister 1 und 2 sowie die Adressenerzeugungsschaltungen 8 und 9 oder die Pufferspeicher 10 und 11 auf beliebige Weise wechselseitig verbunden werden können. Im in Fig. 1 dargestellten Prozessor erreicht die Wähleinrichtung 4 diese Funktion. Die Adressenerzeugungsschaltung 8 und 9 sowie die Pufferspeicher 10 und 11 werden jeweils miteinander korreliert, das Ausgangssignal der Adressenerzeugungsschaltung 8 wird nur an den Pufferspeicher 10 geliefert, und das Ausgangssignal der Adressenerzeugungsschaltung 9 wird nur an den Pufferspeicher 11 geliefert. Wenn der in das Befehlsregister 1 entnommene Befehl auf den Pufferspeicher 10 Bezug nimmt, nimmt die Wähleinrichtung 4 eine solche Steuerung vor, daß die Adresse durch die Adressenerzeugungsschaltung 8 berechnet wird, und wenn der Befehl auf den Pufferspeicher 11 Bezug nimmt, nimmt die Wähleinrichtung 4 eine solche Steuerung vor, daß die Adresse von der Adressenerzeugungsschaltung 9 berechnet wird. Dasselbe gilt für einen Befehl, wie er in das Befehlsregister 2 entnommen wurde. Ein anderer Prozessor zum Erzielen der vorstehend genannten Funktion ist in Fig. 9 dargestellt, bei dem die Befehlsregister 1 und 2 dauerhaft mit den Adressenerzeugungsschaltungen 8 bzw. 9 in Zuordnung stehen. Die Adresse des in das Befehlsregister 1 entnommenen Befehls wird dauernd durch die Adressenerzeugungsschaltung 8 berechnet, und die Adresse des in das Befehlsregister 2 entnommenen Befehls wird dauernd durch die Adressenerzeugungsschaltung 9 berechnet. Wenn mittels der durch die Adressenerzeugungsschaltung 8 berechneten Adresse auf den Pufferspeicher 11 Bezug zu nehmen ist, wird die Signalleitung 128 durchdie Wähleinrichtung 802 ausgewählt und der Befehl wird abgerufen. Wenn mittels der durch die Adressenerzeugungsschaltung 9 berechneten Adresse auf den Pufferspeicher 10 Bezug zu nehmen ist, wird die Signalleitung 131 durch die Wähleinrichtung 801 ausgewählt und der Operand wird abgerufen. Die Gesamtkonfiguration des Prozessors ist im wesentlichen dieselbe wie die in Fig. 1, und nachfolgend werden nur unterschiedliche Funktionen erläutert.
  • Wenn ein Befehl mit einer Länge von sechs Bytes in das Befehlsregister 1 entnommen wird, schaltet die Wähleinrichtung 800 die Adressenberechnung für den ersten Operanden und die Adressenberechnung für den zweiten Operanden um. Einzelheiten der Wähleinrichtung 800 sind in Fig. 10 dargestellt. Die Eingangssignalleitung 265 ist dieselbe wie die in Fig. 5. Wenn die Signalleitung 265 gesetzt wird, werden die Signalleitungen 109 und 110 dazu ausgewählt, die Adresse für den zweiten Operanden zu berechnen. Die Signalleitung 265 wird nur dann gesetzt, wenn der zweite Operand des Befehls mit einer Länge von sechs Bytes anzuwenden ist. Wenn die Signalleitung 265 nicht gesetzt ist, sind die Signalleitungen 107 und 108 ausgewählt. Die Wähleinrichtungen 801 und 802 wählen die für die Speicher zu verwendenden Adressen aus. Wenn der Befehl im Befehlsregister 2 auf den Pufferspeicher 10 Bezug nimmt, wird die Signalleitung 264 gesetzt und die Signalleitung 131 wird von der Wähleinrichtung 801 ausgewählt. Wenn der Befehl im Befehlsregister 1 auf den Pufferspeicher 11 Bezug nimmt, wird die Signalleitung 804 ausgewählt und die Signalleitung 128 wird durch die Wähleinrichtung 802 gesetzt. Wenn die Signalleitungen 264 und 804 nicht gesetzt sind, wählt die Wähleinrichtung 801 die Signalleitung 128 aus und die Wähleinrichtung 802 wählt die Signalleitung 131 aus. Wie in Fig. 5 dargestellt, wird die Signalleitung 264 gesetzt, wenn der erste Befehl nicht auf den Pufferspeicher 10 Bezug nimmt und der zweite Befehl auf den Pufferspeicher 10 Bezug nimmt und er gültig ist (die Signalleitung 250 ist gesetzt). Wie in Fig. 11 dargestellt, ist die Signalleitung 804 gesetzt, wenn der erste Befehl auf den Pufferspeicher 11 Bezug nimmt und er gültig ist (die Signalleitung 153 ist gesetzt).
  • Wie es aus der vorstehenden Beschreibung ersichtlich ist, kann der in Fig. 9 dargestellte Prozessor Befehle abhängig von der Kombination von Befehlen decodieren, wie sie in die Befehlsregister 1 und 2 entnommen wurden, und er kann parallel auf die Pufferspeicher 10 und 11 Bezug nehmen. Im Ergebnis wird dieselbe Wirkung erzielt, wie sie in Fig. 8 veranschaulicht ist.
  • Gemäß der Erfindung können zwei Befehle parallel entnommen werden und sie können parallel abhängig von der Befehlskombination decodiert werden. Der Abruf des Operanden des Folgebefehls sowie der Abruf des Verzweigen-zu-Befehls eines Verzweigungsbefehls können einen Zyklus schneller ausgeführt werden, als dann, wenn keine Paralleldecodierung ausgeführt wird. Im Ergebnis verkürzt sich die Befehlsausführungszeit um einen Zyklus und die Ausführungszeit für den anschließenden Befehl, der das Ergebnis des vorangehenden Befehls verwendet sowie die Ausführungszeit eines Verzweigen-zu-Befehls sind verkürzt.

Claims (3)

1. Datenprozessor mit Pipeline-Struktur zur parallelen Ausführung mehrerer Befehle, umfassend
einen Hauptspeicher (13),
eine mit dem Hauptspeicher (13) verbundene Puffereinrichtung (10, 11) zur Aufnahme von Operanden und Befehlen,
eine mit dem Hauptspeicher (13) verbundene Operationseinrichtung (12) zur Durchführung von Operationen entsprechend mehreren Befehlen, die keine Verzweigungsbefehle sind,
eine auf einen Verzweigungsbefehl ansprechende Betriebsmitteleinrichtung zum Abholen eines Befehls, der eine Verzweigung zu einem bestimmten Ziel angibt, aus dem Hauptspeicher (13),
ein Paar von Befehlsregistern (1, 2),
eine Eingabeeinrichtung (3) zum Abholen eines als nächsten auszuführenden ersten Befehls und eines im Anschluß an diesen auszuführenden zweiten Befehls aus dem Hauptspeicher (13) und zum Eingeben dieser beiden Befehle in das Befehlsregisterpaar (1, 2),
einen ersten und einen zweiten Adressengenerator (8, 9), die mit den Befehlsregistern (1, 2) verbunden sind, zur Berechnung von Adressen entsprechend dem ersten und dem zweiten Befehl,
eine Konflikt-Erkennungseinrichtung (5) zur Erkennung, ob der erste Befehl das bei der Adressenerzeugung des zweiten Befehls verwendete Register ändert, und
eine Erkennungseinrichtung (6; 803) zur Erkennung, ob der erste Befehl in dem Befehlsregisterpaar (1, 2) ein von einem Verzweigungsbefehl verschiedener Befehl und der zweite Befehl ein Verzweigungsbefehl ist, dadurch gekennzeichnet,
daß die Puffereinrichtung einen ersten Puffer (10) zur Aufnahme eines Operanden und einen zweiten Puffer (11) zur Aufnahme eines Befehls aufweist, und
daß eine Wähleinrichtung (4; 801, 802) vorgesehen ist, die so gesteuert ist, daß dann, wenn das Erkennungsergebnis der Erkennungseinrichtung (6; 803) positiv ist, bewirkt, daß die auf den zweiten Befehl bezogene Adresse berechnet und dem zweiten Puffer (11) zugeführt und gleichzeitig die auf den Operanden des ersten Befehls bezogene Adresse berechnet und dem ersten Puffer (10) zugeführt wird, während sie sonst bewirkt, daß nur die auf den ersten Befehl bezogene Adresse berechnet und in Abhängigkeit davon, ob dieser ein Verzweigungsbefehl ist oder nicht, dem zweiten Puffer (11) bzw. dem ersten Puffer zuführt wird.
2. Datenprozessor nach Anspruch 1,
wobei der erste Adressengenerator (8) mit dem ersten Puffer (10) und der zweite Adressengenerator (9) mit dem zweiten Puffer (11) fest verbunden ist, und
wobei die Wähleinrichtung einen gemeinsamen Wähler (4) zum selektiven Verbinden des Befehlsregisterpaars (1, 2) mit dem ersten und zweiten Adressengenerator (8, 9) aufweist.
3. Datenprozessor nach Anspruch 1, wobei die Wähleinrichtung einen ersten Wähler (801) zum selektiven Verbinden des ersten und des zweiten Adressengenerators (8, 9) mit dem ersten Puffer (10) und einen zweiten Wähler (802) zur selektiven Verbinden des ersten und des zweiten Adressengenerators (8, 9) mit dem zweiten Puffer (11) aufweist.
DE3751503T 1986-03-26 1987-03-24 Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen. Expired - Fee Related DE3751503T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6565186 1986-03-26

Publications (2)

Publication Number Publication Date
DE3751503D1 DE3751503D1 (de) 1995-10-12
DE3751503T2 true DE3751503T2 (de) 1996-05-09

Family

ID=13293121

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3751503T Expired - Fee Related DE3751503T2 (de) 1986-03-26 1987-03-24 Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen.

Country Status (4)

Country Link
US (1) US4858105A (de)
EP (1) EP0239081B1 (de)
JP (1) JP2559399B2 (de)
DE (1) DE3751503T2 (de)

Families Citing this family (250)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63131230A (ja) * 1986-11-21 1988-06-03 Hitachi Ltd 情報処理装置
JP2902402B2 (ja) * 1987-09-30 1999-06-07 三菱電機株式会社 データ処理装置
JPH0766324B2 (ja) * 1988-03-18 1995-07-19 三菱電機株式会社 データ処理装置
US5202967A (en) * 1988-08-09 1993-04-13 Matsushita Electric Industrial Co., Ltd. Data processing apparatus for performing parallel decoding and parallel execution of a variable word length instruction
EP0354740B1 (de) * 1988-08-09 1996-06-19 Matsushita Electric Industrial Co., Ltd. Datenverarbeitungsgerät zur parallelen Dekodierung und parallelen Ausführung von Befehlen mit variabler Wortlänge
US5131086A (en) * 1988-08-25 1992-07-14 Edgcore Technology, Inc. Method and system for executing pipelined three operand construct
JP2810068B2 (ja) 1988-11-11 1998-10-15 株式会社日立製作所 プロセッサシステム、コンピュータシステム及び命令処理方法
JP2504156B2 (ja) * 1989-01-25 1996-06-05 日本電気株式会社 情報処理装置
US5148528A (en) * 1989-02-03 1992-09-15 Digital Equipment Corporation Method and apparatus for simultaneously decoding three operands in a variable length instruction when one of the operands is also of variable length
KR0163179B1 (ko) * 1989-03-31 1999-01-15 미다 가쓰시게 데이타 프로세서
US5179691A (en) * 1989-04-12 1993-01-12 Unisys Corporation N-byte stack-oriented CPU using a byte-selecting control for enhancing a dual-operation with an M-byte instruction word user program where M<N<2M
US6253307B1 (en) * 1989-05-04 2001-06-26 Texas Instruments Incorporated Data processing device with mask and status bits for selecting a set of status conditions
US5072364A (en) * 1989-05-24 1991-12-10 Tandem Computers Incorporated Method and apparatus for recovering from an incorrect branch prediction in a processor that executes a family of instructions in parallel
CA2016068C (en) * 1989-05-24 2000-04-04 Robert W. Horst Multiple instruction issue computer architecture
WO1990014629A2 (en) * 1989-05-26 1990-11-29 Massachusetts Institute Of Technology Parallel multithreaded data processing system
US5353418A (en) * 1989-05-26 1994-10-04 Massachusetts Institute Of Technology System storing thread descriptor identifying one of plural threads of computation in storage only when all data for operating on thread is ready and independently of resultant imperative processing of thread
JPH0328911A (ja) * 1989-06-26 1991-02-07 Mitsubishi Electric Corp マイクロプロセッサ
JP2550213B2 (ja) * 1989-07-07 1996-11-06 株式会社日立製作所 並列処理装置および並列処理方法
JP2710994B2 (ja) * 1989-08-29 1998-02-10 三菱電機株式会社 データ処理装置
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
JPH07120284B2 (ja) * 1989-09-04 1995-12-20 三菱電機株式会社 データ処理装置
JP2816248B2 (ja) * 1989-11-08 1998-10-27 株式会社日立製作所 データプロセッサ
JP2507638B2 (ja) * 1989-12-01 1996-06-12 三菱電機株式会社 デ―タ処理装置
US5226131A (en) * 1989-12-27 1993-07-06 The United States Of America As Represented By The United States Department Of Energy Sequencing and fan-out mechanism for causing a set of at least two sequential instructions to be performed in a dataflow processing computer
JP2818249B2 (ja) * 1990-03-30 1998-10-30 株式会社東芝 電子計算機
CA2037708C (en) * 1990-05-04 1998-01-20 Richard J. Eickemeyer General purpose compound apparatus for instruction-level parallel processors
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
HU216990B (hu) * 1990-05-04 1999-10-28 International Business Machines Corp. Eljárás és számítógépes rendszer utasítások feldolgozására
US5197135A (en) * 1990-06-26 1993-03-23 International Business Machines Corporation Memory management for scalable compound instruction set machines with in-memory compounding
EP0454985B1 (de) * 1990-05-04 1996-12-18 International Business Machines Corporation Maschinenarchitektur für skalaren Verbundbefehlssatz
JPH0778737B2 (ja) * 1990-05-10 1995-08-23 インターナショナル・ビジネス・マシーンズ・コーポレイション キャッシュに対する複合化プリプロセッサ方式
EP0459232B1 (de) * 1990-05-29 1998-12-09 National Semiconductor Corporation Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür
CA2045705A1 (en) * 1990-06-29 1991-12-30 Richard Lee Sites In-register data manipulation in reduced instruction set processor
JP2834292B2 (ja) * 1990-08-15 1998-12-09 株式会社日立製作所 データ・プロセッサ
US5163139A (en) * 1990-08-29 1992-11-10 Hitachi America, Ltd. Instruction preprocessor for conditionally combining short memory instructions into virtual long instructions
US5655096A (en) * 1990-10-12 1997-08-05 Branigin; Michael H. Method and apparatus for dynamic scheduling of instructions to ensure sequentially coherent data in a processor employing out-of-order execution
JP2532300B2 (ja) * 1990-10-17 1996-09-11 三菱電機株式会社 並列処理装置における命令供給装置
JP2682232B2 (ja) * 1990-11-21 1997-11-26 松下電器産業株式会社 浮動小数点演算処理装置
JP2911278B2 (ja) * 1990-11-30 1999-06-23 松下電器産業株式会社 プロセッサ
US5261063A (en) * 1990-12-07 1993-11-09 Ibm Corp. Pipeline apparatus having pipeline mode eecuting instructions from plural programs and parallel mode executing instructions from one of the plural programs
EP0498067A2 (de) * 1991-02-08 1992-08-12 International Business Machines Corporation Mikrokodeerzeugung für eine Maschine mit skalierbarem Verbundbefehlssatz
US5488729A (en) * 1991-05-15 1996-01-30 Ross Technology, Inc. Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution
US5630157A (en) * 1991-06-13 1997-05-13 International Business Machines Corporation Computer organization for multiple and out-of-order execution of condition code testing and setting instructions
JP3105197B2 (ja) 1991-06-24 2000-10-30 株式会社日立製作所 除算回路及び除算方法
JP2984463B2 (ja) * 1991-06-24 1999-11-29 株式会社日立製作所 マイクロコンピュータ
US5539911A (en) 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
US5961629A (en) * 1991-07-08 1999-10-05 Seiko Epson Corporation High performance, superscalar-based computer system with out-of-order instruction execution
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 三菱電機株式会社 並列演算処理装置
JP2875909B2 (ja) * 1991-07-12 1999-03-31 三菱電機株式会社 並列演算処理装置
US5430850A (en) * 1991-07-22 1995-07-04 Massachusetts Institute Of Technology Data processing system with synchronization coprocessor for multiple threads
US5363495A (en) * 1991-08-26 1994-11-08 International Business Machines Corporation Data processing system with multiple execution units capable of executing instructions out of sequence
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
JP3369204B2 (ja) * 1991-10-25 2003-01-20 株式会社東芝 プログラマブルコントローラ
EP0544083A3 (en) * 1991-11-26 1994-09-14 Ibm Interleaved risc-type parallel processor and processing methods
GB2263565B (en) * 1992-01-23 1995-08-30 Intel Corp Microprocessor with apparatus for parallel execution of instructions
GB2263986B (en) * 1992-02-06 1996-03-13 Intel Corp Rotators in machine instruction length calculation
US5438668A (en) * 1992-03-31 1995-08-01 Seiko Epson Corporation System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer
JP3730252B2 (ja) 1992-03-31 2005-12-21 トランスメタ コーポレイション レジスタ名称変更方法及び名称変更システム
JP3637920B2 (ja) 1992-05-01 2005-04-13 セイコーエプソン株式会社 スーパースケーラマイクロプロセサに於て命令をリタイアさせるシステム及び方法
US5416913A (en) * 1992-07-27 1995-05-16 Intel Corporation Method and apparatus for dependency checking in a multi-pipelined microprocessor
US6735685B1 (en) 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
DE69329778T2 (de) * 1992-09-29 2001-04-26 Seiko Epson Corp., Tokio/Tokyo System und verfahren zur handhabung von laden und/oder speichern in einem superskalar mikroprozessor
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
DE69330889T2 (de) 1992-12-31 2002-03-28 Seiko Epson Corp., Tokio/Tokyo System und Verfahren zur Änderung der Namen von Registern
EP0625746A1 (de) * 1993-05-19 1994-11-23 Siemens Nixdorf Informationssysteme Aktiengesellschaft Befehlsaufbereitungseinheit für Verarbeitungsprozessoren in Datenverarbeitungsanlagen
US5740393A (en) * 1993-10-15 1998-04-14 Intel Corporation Instruction pointer limits in processor that performs speculative out-of-order instruction execution
US5689672A (en) * 1993-10-29 1997-11-18 Advanced Micro Devices, Inc. Pre-decoded instruction cache and method therefor particularly suitable for variable byte-length instructions
US5630082A (en) * 1993-10-29 1997-05-13 Advanced Micro Devices, Inc. Apparatus and method for instruction queue scanning
DE69427265T2 (de) * 1993-10-29 2002-05-02 Advanced Micro Devices, Inc. Superskalarbefehlsdekoder
EP0651324B1 (de) * 1993-10-29 2006-03-22 Advanced Micro Devices, Inc. Spekulative Befehlswarteschlange für Befehle mit variabler Byteslänge
US5590351A (en) * 1994-01-21 1996-12-31 Advanced Micro Devices, Inc. Superscalar execution unit for sequential instruction pointer updates and segment limit checks
US5418736A (en) * 1994-03-11 1995-05-23 Nexgen, Inc. Optimized binary adders and comparators for inputs having different widths
US5696955A (en) * 1994-06-01 1997-12-09 Advanced Micro Devices, Inc. Floating point stack and exchange instruction
US5649225A (en) * 1994-06-01 1997-07-15 Advanced Micro Devices, Inc. Resynchronization of a superscalar processor
EP0685794A1 (de) * 1994-06-01 1995-12-06 Advanced Micro Devices, Inc. System zum Erzeugen von Fliesskomma-Prüfvektoren
US5878244A (en) * 1995-01-25 1999-03-02 Advanced Micro Devices, Inc. Reorder buffer configured to allocate storage capable of storing results corresponding to a maximum number of concurrently receivable instructions regardless of a number of instructions received
US5819057A (en) * 1995-01-25 1998-10-06 Advanced Micro Devices, Inc. Superscalar microprocessor including an instruction alignment unit with limited dispatch to decode units
US5832249A (en) * 1995-01-25 1998-11-03 Advanced Micro Devices, Inc. High performance superscalar alignment unit
US5903741A (en) * 1995-01-25 1999-05-11 Advanced Micro Devices, Inc. Method of allocating a fixed reorder buffer storage line for execution results regardless of a number of concurrently dispatched instructions
US6237082B1 (en) 1995-01-25 2001-05-22 Advanced Micro Devices, Inc. Reorder buffer configured to allocate storage for instruction results corresponding to predefined maximum number of concurrently receivable instructions independent of a number of instructions received
US6006324A (en) 1995-01-25 1999-12-21 Advanced Micro Devices, Inc. High performance superscalar alignment unit
US5901302A (en) * 1995-01-25 1999-05-04 Advanced Micro Devices, Inc. Superscalar microprocessor having symmetrical, fixed issue positions each configured to execute a particular subset of instructions
US5737550A (en) * 1995-03-28 1998-04-07 Advanced Micro Devices, Inc. Cache memory to processor bus interface and method thereof
US5822574A (en) * 1995-04-12 1998-10-13 Advanced Micro Devices, Inc. Functional unit with a pointer for mispredicted resolution, and a superscalar microprocessor employing the same
US5991869A (en) * 1995-04-12 1999-11-23 Advanced Micro Devices, Inc. Superscalar microprocessor including a high speed instruction alignment unit
US5764946A (en) * 1995-04-12 1998-06-09 Advanced Micro Devices Superscalar microprocessor employing a way prediction unit to predict the way of an instruction fetch address and to concurrently provide a branch prediction address corresponding to the fetch address
US5835753A (en) * 1995-04-12 1998-11-10 Advanced Micro Devices, Inc. Microprocessor with dynamically extendable pipeline stages and a classifying circuit
US5822558A (en) * 1995-04-12 1998-10-13 Advanced Micro Devices, Inc. Method and apparatus for predecoding variable byte-length instructions within a superscalar microprocessor
US5802588A (en) * 1995-04-12 1998-09-01 Advanced Micro Devices, Inc. Load/store unit implementing non-blocking loads for a superscalar microprocessor and method of selecting loads in a non-blocking fashion from a load/store buffer
US5758114A (en) * 1995-04-12 1998-05-26 Advanced Micro Devices, Inc. High speed instruction alignment unit for aligning variable byte-length instructions according to predecode information in a superscalar microprocessor
US5887152A (en) * 1995-04-12 1999-03-23 Advanced Micro Devices, Inc. Load/store unit with multiple oldest outstanding instruction pointers for completing store and load/store miss instructions
US5819059A (en) * 1995-04-12 1998-10-06 Advanced Micro Devices, Inc. Predecode unit adapted for variable byte-length instruction set processors and method of operating the same
US5832297A (en) * 1995-04-12 1998-11-03 Advanced Micro Devices, Inc. Superscalar microprocessor load/store unit employing a unified buffer and separate pointers for load and store operations
US5900012A (en) * 1995-05-10 1999-05-04 Advanced Micro Devices, Inc. Storage device having varying access times and a superscalar microprocessor employing the same
US5875315A (en) * 1995-06-07 1999-02-23 Advanced Micro Devices, Inc. Parallel and scalable instruction scanning unit
US6604190B1 (en) 1995-06-07 2003-08-05 Advanced Micro Devices, Inc. Data address prediction structure and a method for operating the same
US5859991A (en) * 1995-06-07 1999-01-12 Advanced Micro Devices, Inc. Parallel and scalable method for identifying valid instructions and a superscalar microprocessor including an instruction scanning unit employing the method
US5875324A (en) * 1995-06-07 1999-02-23 Advanced Micro Devices, Inc. Superscalar microprocessor which delays update of branch prediction information in response to branch misprediction until a subsequent idle clock
US5768574A (en) * 1995-06-07 1998-06-16 Advanced Micro Devices, Inc. Microprocessor using an instruction field to expand the condition flags and a computer system employing the microprocessor
US5768610A (en) * 1995-06-07 1998-06-16 Advanced Micro Devices, Inc. Lookahead register value generator and a superscalar microprocessor employing same
US5822778A (en) * 1995-06-07 1998-10-13 Advanced Micro Devices, Inc. Microprocessor and method of using a segment override prefix instruction field to expand the register file
US5680578A (en) * 1995-06-07 1997-10-21 Advanced Micro Devices, Inc. Microprocessor using an instruction field to specify expanded functionality and a computer system employing same
US5761712A (en) * 1995-06-07 1998-06-02 Advanced Micro Devices Data memory unit and method for storing data into a lockable cache in one clock cycle by previewing the tag array
US5878255A (en) * 1995-06-07 1999-03-02 Advanced Micro Devices, Inc. Update unit for providing a delayed update to a branch prediction array
US5854921A (en) * 1995-08-31 1998-12-29 Advanced Micro Devices, Inc. Stride-based data address prediction structure
US5781789A (en) * 1995-08-31 1998-07-14 Advanced Micro Devices, Inc. Superscaler microprocessor employing a parallel mask decoder
US5845323A (en) * 1995-08-31 1998-12-01 Advanced Micro Devices, Inc. Way prediction structure for predicting the way of a cache in which an access hits, thereby speeding cache access time
US5860104A (en) * 1995-08-31 1999-01-12 Advanced Micro Devices, Inc. Data cache which speculatively updates a predicted data cache storage location with store data and subsequently corrects mispredicted updates
US5752069A (en) * 1995-08-31 1998-05-12 Advanced Micro Devices, Inc. Superscalar microprocessor employing away prediction structure
US5893146A (en) * 1995-08-31 1999-04-06 Advanced Micro Design, Inc. Cache structure having a reduced tag comparison to enable data transfer from said cache
US5826071A (en) * 1995-08-31 1998-10-20 Advanced Micro Devices, Inc. Parallel mask decoder and method for generating said mask
US5987561A (en) 1995-08-31 1999-11-16 Advanced Micro Devices, Inc. Superscalar microprocessor employing a data cache capable of performing store accesses in a single clock cycle
US5745724A (en) * 1996-01-26 1998-04-28 Advanced Micro Devices, Inc. Scan chain for rapidly identifying first or second objects of selected types in a sequential list
US5872947A (en) * 1995-10-24 1999-02-16 Advanced Micro Devices, Inc. Instruction classification circuit configured to classify instructions into a plurality of instruction types prior to decoding said instructions
US5933618A (en) * 1995-10-30 1999-08-03 Advanced Micro Devices, Inc. Speculative register storage for storing speculative results corresponding to register updated by a plurality of concurrently recorded instruction
US5881278A (en) * 1995-10-30 1999-03-09 Advanced Micro Devices, Inc. Return address prediction system which adjusts the contents of return stack storage to enable continued prediction after a mispredicted branch
US5892936A (en) * 1995-10-30 1999-04-06 Advanced Micro Devices, Inc. Speculative register file for storing speculative register states and removing dependencies between instructions utilizing the register
US5796974A (en) * 1995-11-07 1998-08-18 Advanced Micro Devices, Inc. Microcode patching apparatus and method
US5835744A (en) * 1995-11-20 1998-11-10 Advanced Micro Devices, Inc. Microprocessor configured to swap operands in order to minimize dependency checking logic
US5903910A (en) * 1995-11-20 1999-05-11 Advanced Micro Devices, Inc. Method for transferring data between a pair of caches configured to be accessed from different stages of an instruction processing pipeline
US5787474A (en) * 1995-11-20 1998-07-28 Advanced Micro Devices, Inc. Dependency checking structure for a pair of caches which are accessed from different pipeline stages of an instruction processing pipeline
US5765035A (en) * 1995-11-20 1998-06-09 Advanced Micro Devices, Inc. Recorder buffer capable of detecting dependencies between accesses to a pair of caches
US5864707A (en) 1995-12-11 1999-01-26 Advanced Micro Devices, Inc. Superscalar microprocessor configured to predict return addresses from a return stack storage
US5819080A (en) * 1996-01-02 1998-10-06 Advanced Micro Devices, Inc. Microprocessor using an instruction field to specify condition flags for use with branch instructions and a computer system employing the microprocessor
US5822559A (en) * 1996-01-02 1998-10-13 Advanced Micro Devices, Inc. Apparatus and method for aligning variable byte-length instructions to a plurality of issue positions
US5742791A (en) * 1996-02-14 1998-04-21 Advanced Micro Devices, Inc. Apparatus for detecting updates to instructions which are within an instruction processing pipeline of a microprocessor
US5787266A (en) * 1996-02-20 1998-07-28 Advanced Micro Devices, Inc. Apparatus and method for accessing special registers without serialization
US5848287A (en) 1996-02-20 1998-12-08 Advanced Micro Devices, Inc. Superscalar microprocessor including a reorder buffer which detects dependencies between accesses to a pair of caches
US5961580A (en) * 1996-02-20 1999-10-05 Advanced Micro Devices, Inc. Apparatus and method for efficiently calculating a linear address in a microprocessor
US5687110A (en) * 1996-02-20 1997-11-11 Advanced Micro Devices, Inc. Array having an update circuit for updating a storage location with a value stored in another storage location
US5813033A (en) * 1996-03-08 1998-09-22 Advanced Micro Devices, Inc. Superscalar microprocessor including a cache configured to detect dependencies between accesses to the cache and another cache
US5790821A (en) * 1996-03-08 1998-08-04 Advanced Micro Devices, Inc. Control bit vector storage for storing control vectors corresponding to instruction operations in a microprocessor
US5892969A (en) * 1996-03-15 1999-04-06 Adaptec, Inc. Method for concurrently executing a configured string of concurrent I/O command blocks within a chain to perform a raid 5 I/O operation
US5850567A (en) * 1996-03-15 1998-12-15 Adaptec, Inc. Method for specifying concurrent execution of a string of I/O command blocks in a chain structure
US5923896A (en) * 1996-03-15 1999-07-13 Adaptec, Inc. Method for sequencing execution of I/O command blocks in a chain structure by setting hold-off flags and configuring a counter in each I/O command block
US5797034A (en) * 1996-03-15 1998-08-18 Adaptec, Inc. Method for specifying execution of only one of a pair of I/O command blocks in a chain structure
US5758187A (en) * 1996-03-15 1998-05-26 Adaptec, Inc. Method for enhancing performance of a RAID 1 read operation using a pair of I/O command blocks in a chain structure
US5768621A (en) * 1996-03-15 1998-06-16 Adaptec, Inc. Chain manager for use in executing a chain of I/O command blocks
US5812877A (en) * 1996-03-15 1998-09-22 Adaptec, Inc. I/O command block chain structure in a memory
US5838943A (en) * 1996-03-26 1998-11-17 Advanced Micro Devices, Inc. Apparatus for speculatively storing and restoring data to a cache memory
US5752259A (en) * 1996-03-26 1998-05-12 Advanced Micro Devices, Inc. Instruction cache configured to provide instructions to a microprocessor having a clock cycle time less than a cache access time of said instruction cache
US5835968A (en) * 1996-04-17 1998-11-10 Advanced Micro Devices, Inc. Apparatus for providing memory and register operands concurrently to functional units
US6085302A (en) * 1996-04-17 2000-07-04 Advanced Micro Devices, Inc. Microprocessor having address generation units for efficient generation of memory operation addresses
SE509499C2 (sv) * 1996-05-03 1999-02-01 Ericsson Telefon Ab L M Metod och anordning för hantering av villkorliga hopp vid instruktionsbehandling i en pipeline-arkitektur
US5796997A (en) * 1996-05-15 1998-08-18 Hewlett-Packard Company Fast nullify system and method for transforming a nullify function into a select function
US5835511A (en) * 1996-05-17 1998-11-10 Advanced Micro Devices, Inc. Method and mechanism for checking integrity of byte enable signals
US5748978A (en) * 1996-05-17 1998-05-05 Advanced Micro Devices, Inc. Byte queue divided into multiple subqueues for optimizing instruction selection logic
US6108769A (en) * 1996-05-17 2000-08-22 Advanced Micro Devices, Inc. Dependency table for reducing dependency checking hardware
US5918056A (en) * 1996-05-17 1999-06-29 Advanced Micro Devices, Inc. Segmentation suspend mode for real-time interrupt support
US5822560A (en) * 1996-05-23 1998-10-13 Advanced Micro Devices, Inc. Apparatus for efficient instruction execution via variable issue and variable control vectors per issue
US6049863A (en) * 1996-07-24 2000-04-11 Advanced Micro Devices, Inc. Predecoding technique for indicating locations of opcode bytes in variable byte-length instructions within a superscalar microprocessor
US5867680A (en) * 1996-07-24 1999-02-02 Advanced Micro Devices, Inc. Microprocessor configured to simultaneously dispatch microcode and directly-decoded instructions
US5813045A (en) * 1996-07-24 1998-09-22 Advanced Micro Devices, Inc. Conditional early data address generation mechanism for a microprocessor
US5903740A (en) * 1996-07-24 1999-05-11 Advanced Micro Devices, Inc. Apparatus and method for retiring instructions in excess of the number of accessible write ports
US5872951A (en) * 1996-07-26 1999-02-16 Advanced Micro Design, Inc. Reorder buffer having a future file for storing speculative instruction execution results
US5872943A (en) * 1996-07-26 1999-02-16 Advanced Micro Devices, Inc. Apparatus for aligning instructions using predecoded shift amounts
US5915110A (en) * 1996-07-26 1999-06-22 Advanced Micro Devices, Inc. Branch misprediction recovery in a reorder buffer having a future file
US5900013A (en) * 1996-07-26 1999-05-04 Advanced Micro Devices, Inc. Dual comparator scheme for detecting a wrap-around condition and generating a cancel signal for removing wrap-around buffer entries
US5946468A (en) * 1996-07-26 1999-08-31 Advanced Micro Devices, Inc. Reorder buffer having an improved future file for storing speculative instruction execution results
US5822575A (en) * 1996-09-12 1998-10-13 Advanced Micro Devices, Inc. Branch prediction storage for storing branch prediction information such that a corresponding tag may be routed with the branch instruction
US5765016A (en) * 1996-09-12 1998-06-09 Advanced Micro Devices, Inc. Reorder buffer configured to store both speculative and committed register states
US5794028A (en) * 1996-10-17 1998-08-11 Advanced Micro Devices, Inc. Shared branch prediction structure
US5870579A (en) * 1996-11-18 1999-02-09 Advanced Micro Devices, Inc. Reorder buffer including a circuit for selecting a designated mask corresponding to an instruction that results in an exception
US5920710A (en) * 1996-11-18 1999-07-06 Advanced Micro Devices, Inc. Apparatus and method for modifying status bits in a reorder buffer with a large speculative state
US5995749A (en) * 1996-11-19 1999-11-30 Advanced Micro Devices, Inc. Branch prediction mechanism employing branch selectors to select a branch prediction
US5954816A (en) * 1996-11-19 1999-09-21 Advanced Micro Devices, Inc. Branch selector prediction
US5978906A (en) * 1996-11-19 1999-11-02 Advanced Micro Devices, Inc. Branch selectors associated with byte ranges within an instruction cache for rapidly identifying branch predictions
US6175906B1 (en) 1996-12-06 2001-01-16 Advanced Micro Devices, Inc. Mechanism for fast revalidation of virtual tags
US5870580A (en) * 1996-12-13 1999-02-09 Advanced Micro Devices, Inc. Decoupled forwarding reorder buffer configured to allocate storage in chunks for instructions having unresolved dependencies
US5881305A (en) * 1996-12-13 1999-03-09 Advanced Micro Devices, Inc. Register rename stack for a microprocessor
US5983321A (en) * 1997-03-12 1999-11-09 Advanced Micro Devices, Inc. Cache holding register for receiving instruction packets and for providing the instruction packets to a predecode unit and instruction cache
US5862065A (en) * 1997-02-13 1999-01-19 Advanced Micro Devices, Inc. Method and circuit for fast generation of zero flag condition code in a microprocessor-based computer
US5768555A (en) * 1997-02-20 1998-06-16 Advanced Micro Devices, Inc. Reorder buffer employing last in buffer and last in line bits
US6141740A (en) * 1997-03-03 2000-10-31 Advanced Micro Devices, Inc. Apparatus and method for microcode patching for generating a next address
US6233672B1 (en) 1997-03-06 2001-05-15 Advanced Micro Devices, Inc. Piping rounding mode bits with floating point instructions to eliminate serialization
US5852727A (en) * 1997-03-10 1998-12-22 Advanced Micro Devices, Inc. Instruction scanning unit for locating instructions via parallel scanning of start and end byte information
US5850532A (en) * 1997-03-10 1998-12-15 Advanced Micro Devices, Inc. Invalid instruction scan unit for detecting invalid predecode data corresponding to instructions being fetched
US5968163A (en) * 1997-03-10 1999-10-19 Advanced Micro Devices, Inc. Microcode scan unit for scanning microcode instructions using predecode data
US5859992A (en) * 1997-03-12 1999-01-12 Advanced Micro Devices, Inc. Instruction alignment using a dispatch list and a latch list
US5828873A (en) * 1997-03-19 1998-10-27 Advanced Micro Devices, Inc. Assembly queue for a floating point unit
US5930492A (en) * 1997-03-19 1999-07-27 Advanced Micro Devices, Inc. Rapid pipeline control using a control word and a steering word
US5887185A (en) * 1997-03-19 1999-03-23 Advanced Micro Devices, Inc. Interface for coupling a floating point unit to a reorder buffer
US5859998A (en) * 1997-03-19 1999-01-12 Advanced Micro Devices, Inc. Hierarchical microcode implementation of floating point instructions for a microprocessor
US5987235A (en) * 1997-04-04 1999-11-16 Advanced Micro Devices, Inc. Method and apparatus for predecoding variable byte length instructions for fast scanning of instructions
US5901076A (en) * 1997-04-16 1999-05-04 Advanced Micro Designs, Inc. Ripple carry shifter in a floating point arithmetic unit of a microprocessor
US6003128A (en) * 1997-05-01 1999-12-14 Advanced Micro Devices, Inc. Number of pipeline stages and loop length related counter differential based end-loop prediction
US5845101A (en) * 1997-05-13 1998-12-01 Advanced Micro Devices, Inc. Prefetch buffer for storing instructions prior to placing the instructions in an instruction cache
US6122729A (en) * 1997-05-13 2000-09-19 Advanced Micro Devices, Inc. Prefetch buffer which stores a pointer indicating an initial predecode position
US6009511A (en) * 1997-06-11 1999-12-28 Advanced Micro Devices, Inc. Apparatus and method for tagging floating point operands and results for rapid detection of special floating point numbers
US5872946A (en) * 1997-06-11 1999-02-16 Advanced Micro Devices, Inc. Instruction alignment unit employing dual instruction queues for high frequency instruction dispatch
US6073230A (en) * 1997-06-11 2000-06-06 Advanced Micro Devices, Inc. Instruction fetch unit configured to provide sequential way prediction for sequential instruction fetches
US5940602A (en) * 1997-06-11 1999-08-17 Advanced Micro Devices, Inc. Method and apparatus for predecoding variable byte length instructions for scanning of a number of RISC operations
US5933629A (en) 1997-06-12 1999-08-03 Advanced Micro Devices, Inc. Apparatus and method for detecting microbranches early
US5898865A (en) * 1997-06-12 1999-04-27 Advanced Micro Devices, Inc. Apparatus and method for predicting an end of loop for string instructions
US5983337A (en) * 1997-06-12 1999-11-09 Advanced Micro Devices, Inc. Apparatus and method for patching an instruction by providing a substitute instruction or instructions from an external memory responsive to detecting an opcode of the instruction
US5933626A (en) * 1997-06-12 1999-08-03 Advanced Micro Devices, Inc. Apparatus and method for tracing microprocessor instructions
US6012125A (en) * 1997-06-20 2000-01-04 Advanced Micro Devices, Inc. Superscalar microprocessor including a decoded instruction cache configured to receive partially decoded instructions
US5978901A (en) * 1997-08-21 1999-11-02 Advanced Micro Devices, Inc. Floating point and multimedia unit with data type reclassification capability
US6101577A (en) * 1997-09-15 2000-08-08 Advanced Micro Devices, Inc. Pipelined instruction cache and branch prediction mechanism therefor
US5931943A (en) * 1997-10-21 1999-08-03 Advanced Micro Devices, Inc. Floating point NaN comparison
US6032252A (en) * 1997-10-28 2000-02-29 Advanced Micro Devices, Inc. Apparatus and method for efficient loop control in a superscalar microprocessor
US5974542A (en) * 1997-10-30 1999-10-26 Advanced Micro Devices, Inc. Branch prediction unit which approximates a larger number of branch predictions using a smaller number of branch predictions and an alternate target indication
US6230259B1 (en) 1997-10-31 2001-05-08 Advanced Micro Devices, Inc. Transparent extended state save
US6157996A (en) * 1997-11-13 2000-12-05 Advanced Micro Devices, Inc. Processor programably configurable to execute enhanced variable byte length instructions including predicated execution, three operand addressing, and increased register space
US6199154B1 (en) 1997-11-17 2001-03-06 Advanced Micro Devices, Inc. Selecting cache to fetch in multi-level cache system based on fetch address source and pre-fetching additional data to the cache for future access
US6079003A (en) * 1997-11-20 2000-06-20 Advanced Micro Devices, Inc. Reverse TLB for providing branch target address in a microprocessor having a physically-tagged cache
US6079005A (en) * 1997-11-20 2000-06-20 Advanced Micro Devices, Inc. Microprocessor including virtual address branch prediction and current page register to provide page portion of virtual and physical fetch address
US6516395B1 (en) 1997-11-20 2003-02-04 Advanced Micro Devices, Inc. System and method for controlling access to a privilege-partitioned address space with a fixed set of attributes
US6154818A (en) * 1997-11-20 2000-11-28 Advanced Micro Devices, Inc. System and method of controlling access to privilege partitioned address space for a model specific register file
US5974432A (en) * 1997-12-05 1999-10-26 Advanced Micro Devices, Inc. On-the-fly one-hot encoding of leading zero count
US5870578A (en) * 1997-12-09 1999-02-09 Advanced Micro Devices, Inc. Workload balancing in a microprocessor for reduced instruction dispatch stalling
US6157986A (en) * 1997-12-16 2000-12-05 Advanced Micro Devices, Inc. Fast linear tag validation unit for use in microprocessor
US6016545A (en) * 1997-12-16 2000-01-18 Advanced Micro Devices, Inc. Reduced size storage apparatus for storing cache-line-related data in a high frequency microprocessor
US6016533A (en) * 1997-12-16 2000-01-18 Advanced Micro Devices, Inc. Way prediction logic for cache array
US6112018A (en) 1997-12-18 2000-08-29 Advanced Micro Devices, Inc. Apparatus for exchanging two stack registers
US6018798A (en) * 1997-12-18 2000-01-25 Advanced Micro Devices, Inc. Floating point unit using a central window for storing instructions capable of executing multiple instructions in a single clock cycle
US6112296A (en) * 1997-12-18 2000-08-29 Advanced Micro Devices, Inc. Floating point stack manipulation using a register map and speculative top of stack values
US6324639B1 (en) * 1998-03-30 2001-11-27 Matsushita Electric Industrial Co., Ltd. Instruction converting apparatus using parallel execution code
US6304954B1 (en) * 1998-04-20 2001-10-16 Rise Technology Company Executing multiple instructions in multi-pipelined processor by dynamically switching memory ports of fewer number than the pipeline
US6141745A (en) * 1998-04-30 2000-10-31 Advanced Micro Devices, Inc. Functional bit identifying a prefix byte via a particular state regardless of type of instruction
US6175908B1 (en) 1998-04-30 2001-01-16 Advanced Micro Devices, Inc. Variable byte-length instructions using state of function bit of second byte of plurality of instructions bytes as indicative of whether first byte is a prefix byte
US6119223A (en) * 1998-07-31 2000-09-12 Advanced Micro Devices, Inc. Map unit having rapid misprediction recovery
US6122656A (en) 1998-07-31 2000-09-19 Advanced Micro Devices, Inc. Processor configured to map logical register numbers to physical register numbers using virtual register numbers
US6230262B1 (en) 1998-07-31 2001-05-08 Advanced Micro Devices, Inc. Processor configured to selectively free physical registers upon retirement of instructions
US6742110B2 (en) 1998-10-06 2004-05-25 Texas Instruments Incorporated Preventing the execution of a set of instructions in parallel based on an indication that the instructions were erroneously pre-coded for parallel execution
DE69840406D1 (de) 1998-10-06 2009-02-12 Texas Instruments Inc Überprüfung von Befehlsparallelismus
US6330657B1 (en) * 1999-05-18 2001-12-11 Ip-First, L.L.C. Pairing of micro instructions in the instruction queue
US6438664B1 (en) 1999-10-27 2002-08-20 Advanced Micro Devices, Inc. Microcode patch device and method for patching microcode using match registers and patch routines
US6442707B1 (en) 1999-10-29 2002-08-27 Advanced Micro Devices, Inc. Alternate fault handler
US7418580B1 (en) * 1999-12-02 2008-08-26 International Business Machines Corporation Dynamic object-level code transaction for improved performance of a computer
US6732234B1 (en) 2000-08-07 2004-05-04 Broadcom Corporation Direct access mode for a cache
US6848024B1 (en) 2000-08-07 2005-01-25 Broadcom Corporation Programmably disabling one or more cache entries
US6748492B1 (en) 2000-08-07 2004-06-08 Broadcom Corporation Deterministic setting of replacement policy in a cache through way selection
US6981132B2 (en) 2000-08-09 2005-12-27 Advanced Micro Devices, Inc. Uniform register addressing using prefix byte
US6877084B1 (en) 2000-08-09 2005-04-05 Advanced Micro Devices, Inc. Central processing unit (CPU) accessing an extended register set in an extended register mode
US7366876B1 (en) 2000-10-31 2008-04-29 Analog Devices, Inc. Efficient emulation instruction dispatch based on instruction width
US6738792B1 (en) 2001-03-09 2004-05-18 Advanced Micro Devices, Inc. Parallel mask generator
US7711926B2 (en) 2001-04-18 2010-05-04 Mips Technologies, Inc. Mapping system and method for instruction set processing
US6748495B2 (en) 2001-05-15 2004-06-08 Broadcom Corporation Random generator
US6826681B2 (en) 2001-06-18 2004-11-30 Mips Technologies, Inc. Instruction specified register value saving in allocated caller stack or not yet allocated callee stack
US7266587B2 (en) * 2002-05-15 2007-09-04 Broadcom Corporation System having interfaces, switch, and memory bridge for CC-NUMA operation
US7398372B2 (en) * 2002-06-25 2008-07-08 Intel Corporation Fusing load and alu operations
US7051190B2 (en) * 2002-06-25 2006-05-23 Intel Corporation Intra-instruction fusion
US7117290B2 (en) * 2003-09-03 2006-10-03 Advanced Micro Devices, Inc. MicroTLB and micro tag for reducing power in a processor
US20050050278A1 (en) * 2003-09-03 2005-03-03 Advanced Micro Devices, Inc. Low power way-predicted cache
US20100037020A1 (en) * 2008-08-07 2010-02-11 Seagate Technology Llc Pipelined memory access method and architecture therefore
EP2539808A4 (de) * 2010-02-22 2015-10-14 Analog Devices Inc Superskalare steuerung für einen wahrscheinlichkeitsberechner
US10311191B2 (en) 2017-01-26 2019-06-04 Advanced Micro Devices, Inc. Memory including side-car arrays with irregular sized entries

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3771138A (en) * 1971-08-31 1973-11-06 Ibm Apparatus and method for serializing instructions from two independent instruction streams
JPS5744173B2 (de) * 1975-02-27 1982-09-20
US4295193A (en) * 1979-06-29 1981-10-13 International Business Machines Corporation Machine for multiple instruction execution
CA1174370A (en) * 1980-05-19 1984-09-11 Hidekazu Matsumoto Data processing unit with pipelined operands
JPS5729152A (en) * 1980-07-28 1982-02-17 Fujitsu Ltd Information processor prefetching instruction
US4430706A (en) * 1980-10-27 1984-02-07 Burroughs Corporation Branch prediction apparatus and method for a data processing system
JPS57137944A (en) * 1981-02-20 1982-08-25 Fujitsu Ltd General register advance control system
US4399507A (en) * 1981-06-30 1983-08-16 Ibm Corporation Instruction address stack in the data memory of an instruction-pipelined processor
US4532589A (en) * 1981-12-02 1985-07-30 Hitachi, Ltd. Digital data processor with two operation units
JPS58151655A (ja) * 1982-03-03 1983-09-08 Fujitsu Ltd 情報処理装置
JPS58189738A (ja) * 1982-04-30 1983-11-05 Hitachi Ltd デ−タ処理システム
JPS5932045A (ja) * 1982-08-16 1984-02-21 Hitachi Ltd 情報処理装置
US4594659A (en) * 1982-10-13 1986-06-10 Honeywell Information Systems Inc. Method and apparatus for prefetching instructions for a central execution pipeline unit
US4613935A (en) * 1983-02-02 1986-09-23 Couleur John F Method and apparatus for pipe line processing with a single arithmetic logic unit
US4594655A (en) * 1983-03-14 1986-06-10 International Business Machines Corporation (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions
US4635188A (en) * 1983-07-29 1987-01-06 Hewlett-Packard Company Means for fast instruction decoding for a computer
US4685058A (en) * 1983-08-29 1987-08-04 Amdahl Corporation Two-stage pipelined execution unit and control stores
JPS60140435A (ja) * 1983-12-28 1985-07-25 Hitachi Ltd 命令処理装置
US4764861A (en) * 1984-02-08 1988-08-16 Nec Corporation Instruction fpefetching device with prediction of a branch destination for each branch count instruction
JPH0769818B2 (ja) * 1984-10-31 1995-07-31 株式会社日立製作所 デ−タ処理装置
US4775927A (en) * 1984-10-31 1988-10-04 International Business Machines Corporation Processor including fetch operation for branch instruction with control tag
US4794517A (en) * 1985-04-15 1988-12-27 International Business Machines Corporation Three phased pipelined signal processor

Also Published As

Publication number Publication date
DE3751503D1 (de) 1995-10-12
EP0239081A3 (en) 1990-11-14
JP2559399B2 (ja) 1996-12-04
JPS6312029A (ja) 1988-01-19
US4858105A (en) 1989-08-15
EP0239081B1 (de) 1995-09-06
EP0239081A2 (de) 1987-09-30

Similar Documents

Publication Publication Date Title
DE3751503T2 (de) Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen.
DE69031899T2 (de) Befehlsmethode und Ausführungssystem
DE69115344T2 (de) Vorverarbeitungsprozessor zur Verbindung von Befehlen für einen Cache-Speicher
DE2934971C2 (de) Nach dem Fließbandprinzip arbeitender Zentralprozessor
DE19914210B4 (de) Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung
DE69809450T2 (de) Datenverarbeitungsvorrichtung
DE3789345T2 (de) Erweiterte Gleitkommaoperationen zur Unterstützung der Emulation von Quellbefehlsausführungen.
DE3686991T2 (de) Mechanismus fuer parallele speicherdatenabholung und befehlsausfuehrung in einem prozessor mit reduziertem befehlssatz.
DE3789604T2 (de) Datenprozessor zur parallelen Ausführung von miteinander im Konflikt stehenden Befehlen.
DE1931966C3 (de) Datenverarbeitungsanlage mit Assoziativspeichern
DE2847934A1 (de) Datenverarbeitungseinrichtung mit einem mikrobefehlsspeicher
DE69133571T2 (de) Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen
DE69027932T2 (de) Cpu-pipeline mit registerfile-bypass durch adressvergleich bei aktualisierungen/zugriffen
DE3689389T2 (de) Datenverarbeitungsprozessor.
DE3338345A1 (de) Vektor prozessor
DE1178623B (de) Programmgesteuerte datenverarbeitende Maschine
DE2758830A1 (de) Rechenvorrichtung
DE3750028T2 (de) Pipelineprozessor mit schwacher Kopplung.
DE3424962A1 (de) Datenverarbeitungsverfahren und vorrichtung zur durchfuehrung desselben
DE4334294C1 (de) Prozessor für Zeichenketten variabler Länge
EP0010185A1 (de) Virtuell-Adressiervorrichtung für einen Computer
CH644461A5 (de) Digitale multipliziereinrichtung.
DE69322566T2 (de) Datenprozessor
DE2401364A1 (de) Datenverarbeitungssystem
DE2617485C3 (de) Schaltungsanordnung für Datenverarbeitungsanlagen zur Abarbeitung von Mikrobefehlsfolgen

Legal Events

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