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
Links
- 230000015654 memory Effects 0.000 claims description 84
- 238000001514 detection method Methods 0.000 claims description 23
- 238000000605 extraction Methods 0.000 description 7
- 230000000875 corresponding effect Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000000034 method Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3816—Instruction alignment, e.g. cache line crossing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
- 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.
- 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.
- 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.
- 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.
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)
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)
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 |
-
1987
- 1987-03-24 EP EP87104345A patent/EP0239081B1/de not_active Expired - Lifetime
- 1987-03-24 DE DE3751503T patent/DE3751503T2/de not_active Expired - Fee Related
- 1987-03-25 JP JP62068831A patent/JP2559399B2/ja not_active Expired - Lifetime
- 1987-03-26 US US07/030,434 patent/US4858105A/en not_active Expired - Lifetime
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 |