DE4216905C2 - Superskalarprozessor - Google Patents

Superskalarprozessor

Info

Publication number
DE4216905C2
DE4216905C2 DE4216905A DE4216905A DE4216905C2 DE 4216905 C2 DE4216905 C2 DE 4216905C2 DE 4216905 A DE4216905 A DE 4216905A DE 4216905 A DE4216905 A DE 4216905A DE 4216905 C2 DE4216905 C2 DE 4216905C2
Authority
DE
Germany
Prior art keywords
command
instruction
empty
cycle
commands
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE4216905A
Other languages
English (en)
Other versions
DE4216905A1 (de
Inventor
Hideki Ando
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of DE4216905A1 publication Critical patent/DE4216905A1/de
Application granted granted Critical
Publication of DE4216905C2 publication Critical patent/DE4216905C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

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

Description

Die Erfindung bezieht sich auf einen Superskalarprozessor (Super­ scalar processor) nach dem Oberbegriff des Patentanspruchs 1.
Ein Superskalarprozessor ist ein Hochleistungsmikroprozessor mit einer Parallelverarbeitungseinrichtung vom sogenannten "superskalaren Typ", der beispielsweise in S. Mc Geady, "The i960CA Superscalar Implementation of the 80960 Architecture, COMPCON 1990, IEEE Seiten 232-240, oder Randy D. Groves "An IBM Second Generation RISC Processor Architecture", COMPCON 1990 IEEE Seiten 166-172, beschrieben ist. Beim superskalaren Typ führt eine Mehrzahl von parallel vorgesehenen Verarbei­ tungseinheiten (Prozessoreinheiten) eine Mehrzahl von Befehlen auf parallele Weise durch. Der superskalare Prozessor holt gleichzeitig eine Mehrzahl von Befehlen aus einem Befehls­ speicher und dekodiert diese. Es wählt diejenigen Befehle aus den dekodierten Befehlen aus, die auf parallele Weise verar­ beitet werden können, und legt diese an die Verarbeitungsein­ heiten an.
Ein obiger superskalarer Prozessor soll für eine Vielzahl von Zwecken anwendbar sein, da die Verarbeitungsleistung verglichen mit der eines herkömmlichen normalen Mikroprozessors deutlich erhöht ist.
Die Fig. 4 zeigt den allgemeinen Aufbau eines herkömmlichen superskalaren Prozessors. In der Figur ist eine Mehrzahl von zu verarbeitenden Befehlen in einem Befehlsspeicher 1 gespeichert. Eine Befehls-Holschaltung 2 liest eine Mehrzahl von Befehlen aus dem Befehlsspeicher 1 gleichzeitig aus (beispielsweise 4 Befehle) und holt diese. Ein Befehlsdekoder 3 dekodiert die Mehrzahl der von der Befehls-Holschaltung 2 angelegten Befehle, wählt Befehle aus, die auf eine parallele Weise verarbeitet werden können, und legt diese an Verarbeitungseinheiten 4 bis 7 an. Die Verarbeitungseinheiten 4 bis 7 weisen beispielsweise eine Pipelinestruktur auf, und jede dieser Einheiten führt unabhängig einen angelegten Befehl aus. Obwohl der in den Ver­ arbeitungseinheiten 4 bis 7 zu verarbeitende Inhalt unbestimmt sein kann, sind die Verarbeitungseinheiten 4 und 5 in Fig. 4 als Ganzzahl-Arithmetikeinheiten gebildet, die Verarbeitungs­ einheit 6 als Einheit zum Schreiben oder Lesen in einen Daten­ speicher 8 gebildet und die Verarbeitungseinheit 7 als Fließ- Arithmetikeinheit gebildet. Der Datenspeicher 8 ist ein Spei­ cher zum Speichern von Daten.
Da der in Fig. 4 gezeigte Superskalarprozessor eine Mehrzahl von Befehlen gleichzeitig auf parallele Weise ausführen kann, kann die Verarbeitungsgeschwindigkeit verglichen mit der eines normalen Mikroprozessors erhöht werden. Der in Fig. 4 gezeigte Superskalarprozessor arbeitet in jedem Zyklus eines Taktsigna­ les (nicht gezeigt), wobei er mit dem Taktsignal synchron läuft. Die Fig. 5 ist ein Diagramm mit einem Beispiel eines Befehls-Holvorganges und einer Befehlsausgabe des Superskalar­ prozessors nach Fig. 4 für vier aufeinanderfolgende Zyklen. Nachfolgend wird eine Beschreibung eines Beispieles des Betrie­ bes des in Fig. 4 gezeigten Superskalarprozessors vorgenommen, wobei auf Fig. 5 bezug genommen wird.
1) Zyklus 1
Im ersten Zyklus liest das Befehls-Holregister 2 vier Befehle 1 bis 4 aus dem Befehlsspeicher 1 in dieser Reihenfolge. Die vier von der Befehls-Holschaltung 2 geholten Befehle 1 bis 4 werden durch den Befehlsdekoder 3 dekodiert. Wenn keine weiteren Befehle existieren, die auf parallele Weise mit dem Befehl 1 verarbeitet werden können, nimmt der Befehlsdekoder 3 nur den Befehl 1, der zuerst von der Befehls-Holschaltung geholt wurde, und legt diesen an eine der Verarbeitungseinheiten 4 bis 7 an. Die Nummern der vom Befehlsdekoder 3 angelegten Befehle sind unterstrichen.
2) Zyklus 2
Im zweiten Zyklus entscheidet der Befehlsdekoder 3, daß die Be­ fehle 2 und 3 auf parallele Weise verarbeitet werden können. Der Befehlsdekoder 3 holt dann die Befehle 2 und 3 aus der Be­ fehlsholschaltung 2 und legt jeden von diesen an beliebige der Verarbeitungseinheiten 4 bis 7 an.
3) Zyklus 3
Da der Befehl 4 der einzig verbleibende in der Befehlsholschal­ tung 2 ist, nimmt im dritten Zyklus der Befehlsdekoder 3 den Befehl 4 aus dem Befehls-Holkreis 2 und legt diesen an die Ver­ arbeitungseinheit 7 an.
4) Zyklus 4
Im vierten Zyklus liest die Befehls-Holschaltung 2 sequentiell vier neue Befehle 5 bis 8 aus dem Befehlsspeicher 1 aus. Zu diesem Zeitpunkt bestimmt der Befehlsdekoder 3, daß die Befehle 5 und 6 aus den von der Befehls-Holschaltung 2 geholten Befeh­ len auf parallele Weise verarbeitet werden können und legt die Befehle 5 und 6 an beliebige der Verarbeitungseinheiten 4 bis 7 an.
Bei dem in Fig. 4 gezeigten superskalaren Prozessor kann die Befehls-Holschaltung 2 keinen neuen Befehl aus dem Befehlsspei­ cher 1 holen, bis alle dort gehaltenen Befehle an die Verarbei­ tungseinheiten durch den Befehlsdekoder 3 weitergeleitet wurden. Folglich bestimmt der Befehlsdekoder 3 den Zusammenhang zwischen den Befehlen auf einer 4-Befehlsbasis. Selbst wenn beispielsweise der Befehl 4 und die Befehle 5 und 6 auf paral­ lele Weise ausgeführt werden könnten, werden Befehl 4 und Be­ fehle 5 und 6 an die Verarbeitungseinheiten in verschiedenen Zyklen angelegt. Daher können die Parallelverarbeitungsfähig­ keiten der Verarbeitungseinheiten 4 bis 7 nicht völlig genutzt werden, und eine potentielle Steigerung der Verarbeitungsge­ schwindigkeit bleibt ungenutzt.
Aus IBM Journal of Research and Development, Vol. 34, No. 1, Januar 1990, S. 37 bis 58 ist ein Superskalarprozessor nach dem Oberbegriff des Patentanspruchs 1 bekannt.
Aufgabe der Erfindung ist es, einen Superskalarprozessor nach dem Oberbegriff des Patentanspruchs 1 zu schaffen, der eine erhöhte Verarbeitungsgeschwindigkeit ermöglicht.
Die Aufgabe wird durch den Superskalarprozessor nach dem Patentanspruch 1 gelöst.
Vorteilhafte Weiterbildungen sind in den Unteransprüchen be­ schrieben.
Die Anzahl der leeren Register in der Holvorrichtung wird in jedem Zyklus festgestellt, und die Anzahl der Befehle, die die Holvorrichtung aus der Befehlsspeichervorrichtung holt, wird für jeden Zyklus entsprechend der erkannten Anzahl gesteuert. Folglich kann die Holvorrichtung den nächsten Befehl aus der Befehlsspeichervorrichtung holen, ohne daß sie warten muß, bis alle eingelesenen Befehle an die Verarbeitungseinheiten ange­ legt (weitergeleitet) worden sind. Als Ergebnis wird die Anzahl von Befehlen, die von der Dekodervorrichtung während jedes Zyklus dekodiert werden, erhöht, und die Anzahl von parallel anzulegenden Befehlen kann erhöht werden. Folglich kann die Mehrzahl von Verarbeitungseinheiten effizienter arbeiten, und es wird ein Anstieg in der Verarbeitungsgeschwindigkeit erreicht.
Es folgt die Beschreibung von Ausführungsbeispielen anhand der Figuren.
Von den Figuren zeigt
Fig. 1 ein Blockschaltbild mit dem Aufbau einer Ausfüh­ rungsform;
Fig. 2 ein Diagramm mit einem Betriebsbeispiel der in Fig. 1 gezeigten Ausführungsform;
Fig. 3 ein Diagramm mit dem Zusammenhang zwischen den Werten eines NUM-Signales aus Fig. 1 und den Auswahlzuständen jedes der Selektoren 100 bis 103, 200 bis 203;
Fig. 4 ein Blockschaltbild mit einem allgemeinen Aufbau eines herkömmlichen Superskalarprozessors; und
Fig. 5 ein Diagramm mit dem Betrieb des in Fig. 4 ge­ zeigten Superskalarprozessors.
Die Fig. 1 zeigt ein Blockschaltbild mit dem Aufbau entspre­ chend einer Ausführungsform. In der Figur umfaßt ein Superska­ larprozessor in dieser Ausführungsform einen Befehlscachel 1, einen Programmzähler 9, ein erstes Schieberegister SR1, ein zweites Schieberegister SR2, Selektoren 100 bis 103 zum Auswäh­ len von Befehlen, Selektoren 200 bis 203 zum Auswählen von Flags, Befehlsregister IR0 bis IR3, Flagregister FR0 bis FR3, einen Befehlsdekoder 3, Verarbeitungseinheiten 4 bis 7, einen Selektor 300, einen Addierer 10, ein Leerzahlregister 11 und eine Selektorsteuerschaltung 12.
Der Befehlscache 1 als Befehlsspeicher speichert eine Mehrzahl von Befehlen. Der Programmzähler 9 hält eine erste Adresse von vier Befehlen, die aus dem Befehlscache 1 während eines Zyklus geholt werden. Der Programmzähler 9 legt die Adressen von vier Befehlen an den Befehlscache 1 an, indem er während eines Zyklus viermal zählt. Als Ergebnis werden vier Befehle aus dem Befehlscache 1 während jeden Zyklus ausgelesen. Der Inhalt der im Programmzähler 9 gehaltenen Adresse wird entsprechend der Anforderung des superskalaren Prozessorsystems geändert. Wenn innerhalb des Befehlscache 9 kein der vom Programmzähler 9 ,be­ reitgestellten Adresse entsprechender Befehl vorliegt, wird auf einen externen Speicher (nicht gezeigt) zugegriffen. Der aus dem externen Speicher ausgelesene Befehl wird zum Befehlscache 1 übertragen und dort gespeichert. Normalerweise werden mehrere Zyklen benötigt, um den Befehl vom externen Speicher zum Befehlscache 1 zu übertragen. Der Befehlscache 1 stellt keinen Befehl während des Zyklus bereit, in welchem der Befehl über­ tragen wird. Daher kann der Befehl nicht vom Befehlscache 1 während dieser Zeit geholt werden. Der Befehlscache 1 bewirkt, daß ein ICR-Signal auf logisch 1 in einem Zyklus steht, bei welchem der Befehl ausgelesen wird, und bewirkt, daß das ICR- Signal auf logisch 0 in einem Zyklus steht, bei welchem der Be­ fehl nicht ausgelesen wird. Das ICR-Signal wird an jedem An­ schluß b der Selektoren 200 bis 203 angelegt, und wird auch an den Selektor 300 zum selben Zeitpunkt als Steuersignal ange­ legt.
Die vier aus dem Befehlscache 1 ausgelesenen Befehle werden einmal in einem zweiten Schieberegister SR2 gespeichert. Das zweite Schieberegister SR2 umfaßt vier Einheitsregister, die als Kaskade verbunden sind und jeweils einen Befehl speichern können. Das zweite Schieberegister SR2 schiebt die gespeicher­ ten Befehle nach rechts um einen vorbestimmten Betrag und stellt dann den Inhalt aus jedem Einheitsregister parallel bereit. Der Schiebebetrag (Schiebebreite) des zweiten Schiebe­ registers SR2 wird durch ein vom Selektor 300 bereitgestelltes NUM-Signal gesteuert. Diese Schiebeoperation entfernt unnötige Befehle, und es verbleibt die Anzahl von Befehlen, die der Zahl von leeren Schieberegistern der Schieberegister IR0 bis IR3 entsprechen. Der parallele Ausgang jedes Einheitsregisters des zweiten Schieberegisters SR2 wird an jeden Anschluß b der Se­ lektoren 100 bis 103 angelegt.
Ein im ersten Schieberegister SR1 gespeicherter Befehl wird an jeden Anschluß a der Selektoren 100 bis 103 angelegt. Ein im ersten Schieberegister SR1 gespeichertes Flag wird an jeden a- Anschluß der Selektoren 200 bis 203 angelegt. Die Auswahl in jedem der Selektoren 100 bis 103, 200 bis 203 wird durch eine Selektorsteuerschaltung 12 gesteuert. Die Selektorsteuerschal­ tung 12 steuert den Auswahlzustand jedes Selektors auf der Basis des NUM-Signales aus dem Selektor 300.
Die Ausgangssignale der Selektoren 100 bis 103 werden an die Befehlsregister IR0 bis IR3 angelegt. Die Ausgangssignale der Selektoren 200 bis 203 werden an Flagregister FR0 bis FR3 an­ gelegt. Ein Befehlsdekoder 3 wählt Befehle aus, die auf eine parallele Weise verarbeitet werden können, und legt diese an die Verarbeitungseinheiten 4 bis 7 an, indem er die in den Be­ fehlsregister IR0 bis IR3 gespeicherten Befehle dekodiert. Zu diesem Zeitpunkt bezieht sich der Befehlsdekoder 3 auf die in den Flagregistern FR0 bis FR3 gespeicherten Flags und bewirkt, daß nur die bezeichneten Befehle Zielobjekte der Dekodierung werden. Danach überträgt der Befehlsdekoder 3 in den Befehls­ dekodern IR0 bis IR3 und den Flagregistern FR0 bis FR3 ge­ speicherte Daten zu einem ersten Schieberegister SR1 und stellt zum selben Zeitpunkt ein CNT-Signal bereit. Das CNT-Signal ist ein Signal, das die Anzahl von Befehlen darstellt, die an die Verarbeitungseinheiten 4 bis 6 durch den Befehlsdekoder 3 an­ gelegt werden. Der Befehlsdekoder 3 stoppt das Dekodieren als Reaktion auf ein BUSY-Signal der Verarbeitungseinheiten 4 bis 7, wenn eine beliebige der Verarbeitungseinheiten 4 bis 7 nicht arbeitet. Der Grund für den Halt der Operation der Verarbei­ tungseinheit kann beispielsweise darin liegen, daß Daten aus dem Datenspeicher noch nicht rechtzeitig in der Verarbeitungs­ einheit 6 bereitstehen und diese nicht mit dem nächsten Verar­ beitungsschritt fortschreiten kann.
Das vom Befehlsdekoder 3 bereitgestellte CNT-Signal wird an das erste Schieberegister SR1, den Selektor 300 und einen Addierer 10 angelegt. Das erste Schieberegister SR1 schiebt die vom Be­ fehlsregister 3 übertragenen Befehle und Flags nach links, ent­ sprechend der Zahl, die dem CNT-Signal entspricht. Diese Schie­ beoperation schiebt die Befehle, die im vorhergehenden Zyklus nicht an die Verarbeitungseinheiten angelegt wurden, nach links. Nach der Schiebeoperation legt das erste Schieberegister SR1 die darin gespeicherten Befehle und Flags an die Selektoren 100 bis 103 und 200 bis 203.
Der Selektor 300 wählt entweder das CNT-Signal des Befehlsdeko­ ders 3 oder den Ausgang des Addierers 10 und erzeugt ein NUM- Signal als Reaktion auf ein ICR-Signal des Befehlscache 1. Das NUM-Signal stellt die Zahl der leeren der Befehlsregister IR0 bis IR3 dar. Das NUM-Signal wird an das Leerzahlregister 11 so­ wie das zweite Schieberegister SR2 und eine Selektorsteuer­ schaltung 12 angelegt. Das Leerzahlregister 11 speichert das NUM-Signal zeitweise. Das Ausgangssignal REG des Leerzahlregi­ sters 11 wird an den Addierer 10 angelegt. Der Addierer 10 addiert das CNT-Signal des Befehlsdekoders 3 zum Ausgangssi­ gnal REG des Leerzahlregisters 11.
Der Betrieb entsprechend der in Fig. 1 gezeigten Ausführungs­ form wird nachfolgend im Detail beschrieben.
Zuerst wird ein Verfahren beschrieben, bei dem die leeren (= nicht belegten) der Befehlsregister IR0 bis IR3 erkannt werden. Wenn ein neuer Befehl in einen leeren Platz der Befehlsregi­ ster IR0 bis IR3 vom Befehlscache 1 während eines bestimmten Zyklus geholt werden kann, wird die Zahl NUM des Leerzahlregi­ sters im Zyklus gleich der Anzahl CNT von Befehlen, die an die Verarbeitungseinheiten aus den Befehlsregistern durch den Be­ fehlsdekoder 3 während des Zyklus angelegt werden. Das bedeu­ tet, NUM = CNT. Wenn der Befehl aus dem Befehlscache 1 geholt werden kann, erreicht das ICR-Signal logisch 1, so daß der Se­ lektor 300 ein CNT-Signal auswählt (welches die Anzahl von Be­ fehlen darstellt, die zu den Verarbeitungseinheiten aus den Befehlsregistern übertragen wurden), das vom Befehlsdekoder 3 angelegt wurde, und gibt ein NUM-Signal aus. Daher entspricht das NUM-Signal der Anzahl von leeren Befehlsregistern.
Wenn ein Befehl in einem anderen Zyklus nicht vom Befehlscache l ausgelesen werden kann, wird kein neuer Befehl in die Befehlsregister IR0 bis IR3 geholt. Als Ergebnis wird die An­ zahl NUM von leeren Befehlsregistern die Summe der Zahl REG (im Leerzahlregister 11 gespeichert) von leeren Registern des vorhergehenden Zyklus und der Anzahl CNT von an die Verarbei­ tungseinheiten angelegten Befehlen der Befehlsregister durch den Befehlsdekoder 3 im gegenwärtigen Zyklus, das heißt, NUM = REG + CNT. Wenn der Befehl nicht vom Befehlscache 1 geholt werden kann, erreicht das ICR-Signal logisch 0, so daß der Se­ lektor 300 das Ausgangssignal des Addierers 10 auswählt und ein NUM-Signal bereitstellt. Der Addierer 10 addiert das CNT-Signal des Befehlsdekoders 3 zum REG-Signal des Leerzahlregisters 11. Daher entspricht das NUM-Signal des Selektors 300 der Zahl des Leerzahlregisters.
Die Zahl von in den Befehlsregistern IR0 bis IR3 zu speichern­ den Befehlen aus den aus dem Befehlscache 1 ausgelesenen Befeh­ len entspricht der Zahl NUM von leeren Befehlsregistern. Das heißt, leere Befehlsregister werden mit Befehlen aufgefüllt. Die vier im selben Zyklus aus dem Befehlscache 1 ausgelesenen Befehle werden auf die Zahl vermindert, die der Anzahl von leeren Befehlsregistern entspricht, und dann in den Befehlsre­ gistern IR0 bis IR3 über Selektoren 100 bis 103 gespeichert. Die Anzahl von Befehlen wird im zweiten Schieberegister SR2 vermindert. Das heißt, das zweite Schieberegister SR2 schiebt die aus dem Befehlscache 1 ausgelesenen vier Befehle um die An­ zahl, die der Zahl von leeren Befehlsregistern entspricht (durch das NUM-Signal des Selektors 300 angezeigt) und entfernt unnötige Befehle. Der Betrieb des zweiten Schieberegisters SR2 wird an späterer Stelle mehr im Detail beschrieben.
Die vom Befehlscache 1 geholten Befehle müssen in den Verarbei­ tungseinheiten in der Reihenfolge verarbeitet werden, in der sie geholt wurden. Es wird bevorzugt, daß zum Erhalten der Ver­ arbeitungsreihenfolge der geholten Befehle die in den Befehls­ registern IR0 bis IR3 gespeicherten Befehle in der Reihenfolge angeordnet sind, in der sie geholt wurden, da auf diese Weise der Befehlsdekoder 3 leicht bestimmen kann, welches Befehlsre­ gister die zuerst zu verarbeitenden Befehle speichert. Das erste Schieberegister SR1 ändert die in jedem Befehlsregister gespeicherten Befehle für jeden Zyklus, um die Reihenfolge der Befehle in den Befehlsregistern IR0 bis IR3 zu erhalten. Das heißt, das erste Schieberegister SR1 schiebt die vom Befehls­ dekoder 3 empfangenen Befehle und Flags um den Betrag nach links, der dem CNT-Signal des Befehlsdekoders 3 entspricht. Als Ergebnis werden die Position des zuerst geholten Befehles und des entsprechenden Flags zum linken Rand geschoben. Wenn nach dieser Operation das Ausgangssignal des ersten Schieberegisters SR1 auf jedes Befehlsregister und Flagregister übertragen wird, wird der zuerst geholte Befehl und das dementsprechende Flag im Befehlsregister IR0 bzw. im Flagregister FR0 gespeichert. Weitere ältere Befehle und diesen entsprechende Flags werden in der Reihenfolge
(Befehlsregister IR1, Flagregister FR1),
(Befehlsregister IR2, Flagregister FR2),
(Befehlsregister IR3, Flagregister FR3) gespeichert.
Entsprechend bestimmt das Befehlsregister 3 die Möglichkeit einer parallelen Ausführung eines in jedem Befehlsregister ge­ speicherten Befehles, wobei er das Befehlsregister IR0 am linken Rand stets als Startpunkt nimmt. Der Betrieb des ersten Schieberegisters SR1 wird an späterer Stelle im Detail beschrieben.
Die Fig. 2 ist ein Diagramm mit einem Beispiel des Betriebes der in Fig. 1 gezeigten Ausführungsform. Genaue Beispiele des Betriebes gemäß der in Fig. 1 gezeigten Ausführungsform werden nachfolgend für jeden Zyklus beschrieben, unter Bezug auf Fig. 2.
1) Zyklus 1
Da in Zyklus 1 ein Befehl aus dem Befehlscache 1 ausgelesen wird, befindet sich das ICR-Signal auf logisch 1. Zu diesem Zeitpunkt wird nur der im Befehlsregister IR0 gespeicherte Befehl 1 an eine der Verarbeitungseinheiten 4 bis 7 durch den Befehlsdekoder 3 angelegt. Das heißt, es wird bestimmt, daß andere Befehle 2 bis 4 nicht parallel mit dem Befehl 1 verarbeitet werden können, und nur Befehl 1 ist Zielobjekt der Verarbeitung (des Prozesses). Folglich beträgt der Wert des vom Befehlsdekoder 3 bereitgestellten CNT-Signales 1. Da sich das ICR-Signal auf logisch 1 befindet, wählt der Selektor 300 das CNT-signal und erzeugt ein NUM-Signal. Folglich wird der Wert des NUM-Signales zu 1. Das NUM-Signal wird im Leerzahlregister 11 gespeichert.
2) Zyklus 2
Die Anzahl (1) von leeren Befehlsregistern im vorhergehenden Zyklus (1) ist im Leerzahlregister 11 gespeichert. Im Zyklus 2 werden, wie in Fig. 2 gezeigt, Befehle 2, 3, 4, die im vorher­ gehenden Zyklus nicht an die Verarbeitungseinheiten angelegt wurden, durch das Schieberegister NR1 an die Befehlsregister IR0, IR1, IR2 angelegt. Zu diesem Zeitpunkt werden aus dem Be­ fehlscache 1 ausgelesene Befehle 5, 6, 7, 8 im zweiten Schie­ beregister SR2 gespeichert. Das zweite Schieberegister SR2 ent­ fernt die Befehle 6, 7, 8 und beläßt nur den Befehl 5, indem die Schiebeoperation so viele Male ausgeführt wird, wie es das NUM-Signal bestimmt (in diesem Fall 3x). Dieser Befehl 5 wird zum Befehlsregister IR3 über den Selektor 103 übertragen. Wie oben angegeben, da der Befehl vom Befehlscache 1 ausgelesen wird, befindet sich im Zyklus 2 das ICR-Signal auf logisch l. Der Befehlsdekoder 3 bestimmt, daß die in den Befehlsregistern IR0, IR1 gespeicherten Befehle 2, 3 parallel verarbeitet werden können und legt diese Befehle 2, 3 an beliebige der Verarbei­ tungseinheiten 4 bis 7 an. Daher beträgt der Wert des CNT-Si­ gnales 2. Da sich das CR-Signal auf logisch 1 befindet, wählt der Selektor 300 das CNT-Signal und erzeugt so ein NUM-Signal. Folglich wird der Wert des NUM-Signales zu 2. Das NUM-Signal wird im Leerzahlregister 11 gespeichert.
3) Zyklus 3
Die Anzahl (2) von Leerbefehlsregistern im vorhergehenden Zyklus (Zyklus 2) ist im Leerzahlregister 11 gespeichert. Wie in Fig. 2 gezeigt, werden in Zyklus 3 Befehle 4, 5, die während des vorhergehenden Zyklus nicht an die Verarbeitungseinheiten ange­ legt wurden, an die Befehlsregister IR0, IR1 durch das erste Schieberegister IR1 angelegt. Befehle 6, 7, die allein aus der Schiebeoperation der vier aus dem Befehlscache 1 ausgelesenen Befehle 6, 7, 8, 9 übrig bleiben, werden zu den Befehlsregi­ stern IR2, IR3 über Selektoren 102, 103 übertragen. Da ein Be­ fehl auf dem Befehlscache 1 während des Zyklus 3 ausgelesen wurde, befindet sich das ICR-Signal auf logisch 1. Der Befehlsdekoder 3 bestimmt, daß die in den Befehlsregistern IR0, IR1 gespeicherten Befehle 4, 5 parallel verarbeitet werden können und überträgt diese Befehle 4, 5 zu beliebigen der Verarbeitungseinheiten 4 bis 7. Folglich beträgt der Wert des CNT-Signales 2. Da sich das ICR-Signal auf logisch 1 befindet, wählt der Selektor 300 das CNT-Signal und erzeugt ein NUM-Signal. Daher wird der Wert des NUM-Signales zu 2. Das NUM-Signal wird im Leerzahlregister 11 gespeichert.
4) Zyklus 4
Die Anzahl (2) von leeren Befehlsregistern im vorhergehenden Zyklus (Zyklus 3) ist im Leerzahlregister 11 gespeichert. Wie in Fig. 2 gezeigt, werden in Zyklus 4 Befehle 6, 7, die im vorhergehenden Zyklus nicht an die Verarbeitungseinheiten ange­ legt wurden, an Befehlsregister IR0 bzw. IR1 durch das erste Schieberegister SR1 angelegt. Da im Zyklus 4 kein Befehl aus dem Befehlscache 1 ausgelesen wurde (dies kann beispielsweise daran liegen, daß kein Befehl aus dem Befehlscache 1 auszule­ sen ist, und ein Befehl von einem externen Speicher übertragen werden muß), befindet sich das ICR-Signal auf logisch 0. Zu­ sätzlich wird kein Befehl zu Befehlsregistern vom zweiten Schieberegister SR2 übertragen. Daher sind die Befehlsregister IR2, IR3 leer, das heißt es befinden sich unbestimmte Daten darin gespeichert. Der Befehlsdekoder 3 legt den im Befehlsre­ gister IR0 gespeicherten Befehl 6 an beliebige der Verarbei­ tungseinheiten 4 bis 7 selbst an. Das heißt, der Befehlsdekoder 7 bestimmt, daß der im Befehlsregister IR1 gespeicherte Befehl 7 nicht parallel mit Befehl 6 verarbeitet werden kann und stellt nur den Befehl 6 für die Verarbeitungseinheit bereit. Zu diesem Zeitpunkt beträgt der Wert des CNT-Signales 1. Da sich das ICR-Signal auf logisch 0 befindet, wählt der Selektor 300 den Ausgang des Addierers 10 und erzeugt ein NUM-Signal. Zu diesem Zeitpunkt, da der Addierer 10 den Wert (1) des CNT-Si­ gnales zum Wert (2) des Ausgangssignales REG des Leerzahlregi­ sters addiert, wird der Wert des NUM-Signales zu 3. Das NUM- Signal wird im Leerzahlregister 11 gespeichert.
5) Zyklus 5
Die Anzahl (3) von leeren Befehlsregistern im vorhergehenden Zyklus (Zyklus 4) ist im Leerzahlregister gespeichert. Wie in Fig. 2 gezeigt, wird im Zyklus 5 der Befehl 7, der im vorher­ gehenden Zyklus nicht an die Verarbeitungseinheit angelegt wur­ de, in das Befehlsregister IR0 durch das erste Schieberegister SR1 geschoben. Im Zyklus 5 wurde kein Befehl vom Befehlscache 1 ausgelesen, und das ICR-Signal befindet sich auf logisch 0. Zu­ sätzlich wurde kein Befehl zum Befehlsregister durch das zweite Schieberegister SR2 übertragen. Daher sind die Befehlsregister IR1 bis IR3 leer. Der Befehlsdekoder 3 bestimmt, daß die Opera­ tion in einer beliebigen der Verarbeitungseinheiten entspre­ chend eines BUSY-Signales aus der Verarbeitungseinheit angehal­ ten ist und stoppt die Dekodieroperation eines Befehles. Folg­ lich wird kein Befehl zur Verarbeitungseinheit aus dem Befehls­ register übertragen.
Der Wert des CNT-Signales befindet sich dadurch auf 0. Da das ICR-Signal sich auf logisch 0 befindet, wählt der Selektor 300 den Ausgang des Addierers 10 und erzeugt ein NUM-Signal. Da der Addierer 10 den Wert (0) des CNT-Signales zum Wert (3) des Aus­ gangssignales REG des Leerzahlregisters 10 addiert, ist zu diesem Zeitpunkt der Wert des NUM-Signales 3. Das NUM-Signal wird im Leerzahlregister 11 gespeichert.
6) Zyklus 6
Die Anzahl (3) von leeren Befehlsregistern im vorhergehenden Zyklus (Zyklus 6) ist im Leerzahlregister 11 gespeichert. Im Zyklus 6 werden Befehle 8, 9, 10, 11 aus dem Befehlscache 1 ausgelesen und im zweiten Schieberegister SR2 gespeichert. Die Befehle 8, 9, 10 aus diesen Befehlen 8, 9, 10, 11 bleiben durch die Schiebeoperation erhalten und werden zu den Befehlsregi­ stern IR1, IR2, IR3 über Selektoren 101, 102, 103 übertragen. Auf diese Weise ist im Zyklus 6 das ICR-Signal auf logisch 1, da die Befehle aus den Befehlscache 1 ausgelesen werden. Der Befehlsdekoder 3 bestimmt, daß die Befehle 7, 8, 9 aus den in den Befehlsregistern IR0 bis IR3 gespeicherten Befehlen paral­ lel verarbeitet werden können und legt diese Befehle 7, 8, 9 an beliebige der Verarbeitungseinheiten 4 bis 7 an. Der Wert des CNT-Signales wird hierdurch zu 3. Da sich das ICR-Signal auf logisch 1 befindet, wählt der Selektor 300 das CNT-Signal und erzeugt ein NUM-Signal. Folglich wird der Wert des NUM-Signales zu 3. Das NUM-Signal wird im Leerzahlregister 11 gespeichert.
Wie oben beschrieben kann bei der in Fig. 1 gezeigten Ausfüh­ rungsform ein neuer Befehl aus dem Befehlscache 1 ausgelesen werden und in ein leeres der Befehlsregistern geholt werden, ohne zu warten, bis alle durch die Befehlsregister IR0 bis IR3 geholten Befehle an die Verarbeitungseinheiten angelegt worden sind. Folglich werden Zielobjekte, für die die Möglichkeit einer Parallelverarbeitung bestimmt wird, nicht nach einer vor­ bestimmten Anzahl von Befehlen wie in Fig. 5 gezeigt geteilt, und jede Verarbeitungseinheit kann effizient ausgenutzt werden.
Es folgt eine detaillierte Beschreibung des Betriebes jedes Be­ reiches entsprechend der in Fig. 1 gezeigten Ausführungsform.
Zuerst wird der Betrieb des ersten Schieberegisters SR1 beschrieben. Das erste Schieberegister SR1 schiebt vom Befehls­ dekoder 3 angelegte Befehle und Flags nach links. Die Befehle und Flags werden paarweise geschoben, wobei einander jeweils entsprechende ein Paar bilden. Der Schiebebetrag des ersten Schieberegisters SR1 wird durch das CNT-Signal des Befehlsdeko­ ders 3 bestimmt. Das heißt, das erste Schieberegister SR1 führt die Schiebeoperation so viele Male durch, wie Befehle durch den Befehlsdekoder 3 aus den Befehlsregistern an die Verarbeitungs­ einheiten angelegt werden. Das heißt, der Verschiebungsbetrag des ersten Schieberegisters SR1 wird wie folgt gesteuert:
CNT = 0 (Zahl von ausgegebenen Befehlen 0): kein Schieben.
CNT = 1 (Zahl von ausgegebenen Befehlen 1): Verschieben nach links um 1.
CNT = 2 (Zahl von ausgegebenen Befehlen 2): Verschieben nach links um 2.
CNT = 3 (Zahl von ausgegebenen Befehlen 3): Verschieben nach links um 3.
CNT = 4 (Zahl von ausgegebenen Befehlen 4): kein Verschieben.
Beispielsweise sind die Befehle 1, 2, 3, 4 in den Befehlsregi­ stern IR0, IR1, IR2, IR3 gespeichert, und wenn nur der Befehl 1 an die Verarbeitungseinheit angelegt wird, führt dies zu CNT = 1. Das erste Schieberegister SR1 führt dabei die Schiebeopera­ tion nach links 1x aus. Folglich wird die Reihenfolge der Be­ fehle nach der Schiebeoperation zu 2, 3, 4, X, wobei X einen Leerzustand repräsentiert. Entsprechend wird jedes Flag auch mit dem entsprechenden Befehl weitergeschoben. Nach der Schie­ beoperation legt das erste Schieberegister SR1 jeden Befehl und jedes Flag parallel an. Die parallel angelegten Befehle werden durch die Selektoren 100 bis 103 ausgewählt und in Befehlsregi­ stern IR0 bis IR3 eingeschrieben. Entsprechend werden die parallel angelegten Flags durch Selektoren 200 bis 203 ausge­ wählt und in Flagregister FR0 bis FR3 eingeschrieben.
Der Betrieb des zweiten Schieberegisters SR2 wird nachfolgend beschrieben. Das zweite Schieberegister SR2 schiebt vier aus dem Befehlscache 1 ausgelesene Befehle nach rechts. Der Ver­ schiebebetrag des zweiten Schieberegisters SR2 wird durch das NUM-Signal des Selektors 300 bestimmt. Das bedeutet, der Ver­ schiebungsbetrag des zweiten Schieberegisters SR2 wird wie folgt gesteuert:
NUM = 1 (die Zahl von leeren Befehlsregistern ist 0): kein Ver­ schieben
NUM = 1 (die Zahl von leeren Befehlsregistern beträgt 1): Ver­ schieben nach rechts um 3
NUM = 2 (die Zahl von leeren Befehlsregistern beträgt 2): Ver­ schieben nach rechts um 2
NUM = 3 (die Zahl von leeren Befehlsregistern beträgt 3): Ver­ schieben nach rechts um 1
NUM = 4 (die Zahl von leeren Befehlsregistern beträgt 4): kein Verschieben.
Wenn beispielsweise Befehle 1, 2, 3, 4 in den Befehlsregistern IR0, IR1, IR2, IR3 im vorhergehenden Zyklus gespeichert sind und nur der Befehl 1 an die Verarbeitungseinheit angelegt wird, führt dies zu NUM = 1, so daß das zweite Schieberegister SR2 die aus dem Befehlscache 1 ausgelesenen Befehle 5, 6, 7, 8 um 3 nach rechts verschiebt. Folglich wird der Befehl nach dem Ver­ schieben im zweiten Schieberegister SR2 zu X, X, X, 5. Der Befehl 5 wird in das Befehlsregister IR3 über den Selektor 103 eingeschrieben. Währenddessen sind die Befehle 2, 3, 4 in die Befehlsregister IR0, IR1, IR2 durch das erste Schieberegister SR1 eingeschrieben worden.
Der Betrieb der Selektorsteuerschaltung 12 wird nachfolgend be­ schrieben. Es wird angenommen, daß die Befehle 1, 2, 3, 4 im vorhergehenden Zyklus in den Befehlsregistern IR0, IR1, IR2, IR3 gespeichert sind und beispielsweise nur der Befehl 1 aus diesen zu einer Verarbeitungseinheit übertragen wurde. Dieser Fall führt CNT = 1. Wenn ein Befehl aus dem Befehlscache 1 im gegenwärtigen Zyklus ausgelesen wird, erreicht das ICR-Signal logisch 1 und das CNT-Signal wird als NUM-Signal vom Selektor 300 ausgewählt. Als Ergebnis wird der Wert des NUM-Signales zu 1. Da die Befehle 1, 2, 3, 4, die das erste Schieberegister SR1 vom Befehlsdekoder 3 empfangen hat, um 1 nach links verschoben wurden, sind die Befehlsausgangssignale des ersten Schieberegi­ sters SR1 nach der Schiebeoperation 2, 3, 4, X. Da vier aus dem Befehlscache 1 ausgelesenen Befehle 5, 6, 7, 8 im zweiten Schieberegister SR2 um drei nach rechts verschoben wurden, sind die Befehlsausgangssignale des zweiten Schieberegisters SR2 X, X, X, 5. Die Selektoren 100 bis 103 werden durch die Selektor­ steuerschaltung 12 gesteuert, die auf das NUM-Signal reagiert und wie folgt auswählt:
Selektor 100: a
Selektor 101: a
Selektor 102: a
Selektor 103: b.
Als Ergebnis werden die Befehle 2, 3, 4, 5 in den Befehlsregi­ stern IR0, IR1, IR2, IR3 gespeichert.
Bezüglich der in den Flagregistern FR0 bis FR3 gespeicherten Flags werden diese an jeden Anschluß a der Selektoren 200 bis 203 angelegt, nachdem sie durch das erste Schieberegister SR1 verschoben wurden. Das ICR-Signal des Befehlscache 1 wird an jeden Anschluß b des Selektoren 200 bis 203 angelegt. Bei die­ sem Beispiel werden die Selektoren 200 bis 203 durch den Selek­ torsteuerkreis 12 gesteuert, der auf das NUM-Signal reagiert und die folgenden Auswahlen trifft:
Selektor 200: a
Selektor 201: a
Selektor 202: a
Selektor 203: b.
Als Ergebnis werden das Flag von Befehl 2, das Flag von Befehl 3, das Flag von Befehl 4 und der logische Wert des ICR-Signales in den Flagregistern FR0, FR1, FR2 und FR3 gespeichert.
Allgemeine Zusammenhänge zwischen dem NUM-Signal und den Aus­ wahlzuständen der Selektoren 100 bis 103, 200 bis 203 werden in Fig. 3 gezeigt.
Eine Beschreibung wird nachfolgend von den Wirkungen der Flags vorgenommen, die in den Flagregistern FR0 bis FR3 gespeichert sind. Jedes Flag zeigt die Gültigkeit/Ungültigkeit eines in einem entsprechenden Befehlsregister gespeicherten Befehles an. Beispielsweise ist ein Befehl, der einem Flag auf logisch 1 entspricht, gültig, und ein Befehl, der einem Flag auf logisch 0 entspricht, ungültig. Jedes Flag wird abgefragt, wenn der Be­ fehlsdekoder 3 einen Befehl dekodiert. Das heißt, der Befehls­ dekoder 3 behandelt nur Befehle, die einem auf logisch 1 ge­ setzten Flag entsprechen, als gültige Befehle und dekodiert nur diese Befehle. Hierdurch wird verhindert, daß unbestimmte Daten zur Prozessoreinheit gelangen. Die in den Flagregistern FR0 bis FR3 gespeicherten Flags werden zusammen mit entsprechenden Be­ fehlen zum ersten Schieberegister SR3 über den Befehlsdekoder 3 übertragen. Das erste Schieberegister SR1 paart einen Befehl mit einem entsprechenden Flag und führt die Schiebeoperation durch. Die Schiebeoperation im ersten Schieberegister SR1 wird wie oben beschrieben ausgeführt. Folglich werden Befehle durch das erste Schieberegister SR1 verschoben, wobei die Gültigkeit/ Ungültigkeit des in jedem Befehlsregister gespeicherten Befeh­ les erhalten bleibt. Wenn ein neu aus dem Befehlscache 1 aus­ gelesener Befehl in ein Befehlsregister geholt wird, wird das ICR-Signal in ein dem Befehlsregister entsprechendes Flagregi­ ster eingeschrieben. Da das ICR-Signal sich auf logisch 1 in dem Zyklus befindet, bei dem ein Befehl aus dem Befehlscache 1 ausgelesen wird, wird ein neu in das Befehlsregister zu diesem Zeitpunkt geholter Befehl nachfolgend als gültige Daten be­ trachtet. Währenddessen wird das ICR-Signal von logisch 0 in ein Flagregister eingeschrieben, das einem leeren Befehlsregi­ ster entspricht, in einem Zyklus, bei dem ein Befehl zur Ver­ arbeitungseinheit aus dem Befehlsregister angelegt wird, aber kein Befehl aus dem Befehlscache 1 geholt werden kann. Folglich werden in den leeren Befehlsregistern gespeicherte Daten nach­ folgend als ungültig behandelt.
Wie oben beschrieben kann bei der in Fig. 1 gezeigten Ausfüh­ rungsform ein neuer Befehl aus dem Befehlscache ausgelesen werden und an ein leeres Befehlsregister als Ersatz angelegt werden, ohne daß gewartet werden muß, bis die in den Befehlsre­ gistern IR0 bis IR3 gespeicherten Befehle an die Verarbeitungs­ einheiten angelegt worden sind. Ferner kann bei der in Fig. 1 gezeigten Ausführungsform ein Befehl aus dem Befehlscache 1 ausgelesen werden und ein neuer Befehl kann in ein leeres Be­ fehlsregister geholt werden, selbst wenn der Befehlsdekoder 3 durch ein BUSY-Signal der Verarbeitungseinheit nicht dekodiert. Folglich ist es bei der in Fig. 1 gezeigten Ausführungsform möglich, das Auftreten von leeren Befehlsregistern IR0 bis IR3 zu minimieren. Als Ergebnis wird die Anzahl von vom Befehlsde­ koder 3 auf parallele Weise bereitgestellten Befehlen erhöht, wodurch die Effizienz jeder Verarbeitungseinheit erhöht und die Verarbeitungsgeschwindigkeit deutlich beschleunigt wird.
Wie oben beschrieben wird es möglich, die auf parallele Weise vorgesehenen Verarbeitungseinheiten effizient auszunutzen und die Verarbeitungsgeschwindigkeit deutlich zu erhöhen.

Claims (12)

1. Superskalarprozessor, der zyklisch arbeitet, mit einer Mehrzahl von Verarbei­ tungseinheiten (4 bis 7), die in der Lage sind, gleichzeitig angelegte Befehle auf parallele Weise auszuführen,
einer Befehlsspeichervorrichtung (1) zum Speichern einer Mehr­ zahl von zu verarbeitenden Befehlen,
einer Holvorrichtung (IR0 bis IR3, 9) mit einer Mehrzahl von Regi­ stern zum Holen mindestens eines Befehls aus der Befehls­ speichervorrichtung (1) und zum Speichern dieses mindestens einen Befehls in einem Register, und
einem Dekoder (3) zum Dekodieren eines in jedem Register der Holvorrichtung (IR0 bis IR3, 9) gespeicherten Befehles während jedes Zyklus, zum Auswählen von Befehlen, die auf parallele Weise ausgeführt werden können, und zum Anlegen dieser an die Verarbeitungseinheiten (4 bis 7) zur selben Zeit, gekennzeichnet durch eine Leerzahlerkennungsvorrichtung (10, 11, 300) zum Erkennen der Anzahl von leeren Registern in der Holvorrichtung (IR0 bis IR3, 9) während jedes Zyklus, und
eine Steuervorrichtung (12, 100 bis 103, 200 bis 203), die auf das Er­ gebnis der Erkennung durch die Leerzahlerkennungsvorrichtung reagiert, zum Steuern der Anzahl von Befehlen, die die Holvor­ richtung (IR0 bis IR3, 9) aus der Befehlsspeichervorrichtung (1) während jedes Zyklus holt.
2. Superskalarprozessor nach Anspruch 1, dadurch gekenn­ zeichnet, daß
die Leerzahlerkennungsvorrichtung (10, 11, 300) die Anzahl von an die Verarbeitungseinheiten (4 bis 7) von der Holvorrichtung (IR0 bis IR3, 9) ausgegebenen Befehle als Anzahl der leeren Regi­ ster in dem Zyklus erkennt, in welchem die Befehle aus der Be­ fehlsspeichervorrichtung (1) geholt werden können, und
die Leerzahlerkennungsvorrichtung (10, 11, 300) einen Summen­ wert der Anzahl von leeren Registern im vorhergehenden Zyklus und der Anzahl von an die Verarbeitungseinheiten (4 bis 7) von der Holvorrichtung (IR0 bis IR3, 9) im gegenwertigen Zyklus ange­ legten Befehlen als die Anzahl von leeren Registern für den Zyklus erkennt, in welchem die Befehle aus der Befehlsspeicher­ vorrichtung (1) nicht geholt werden können.
3. Superskalarprozessor nach Anspruch 2, dadurch gekenn­ zeichnet, daß die Leerzahlerkennungsvorrichtung
eine Leerzahlspeichervorrichtung (11) zum Speichern der im vor­ hergehenden Zyklus erkannten leeren Register umfaßt,
eine Addiervorrichtung (10) umfaßt, zum Addieren der Anzahl von an die Verarbeitungseinheiten (4 bis 7) von der Holvorrichtung (IR0 bis IR3, 9) über die Dekodervorrichtung (3) angelegten Befehle zur Anzahl von leeren Registern, die in der Leerzahl­ speichervorrichtung (11) gespeichert sind, und
eine Leerzahlauswahlvorrichtung (300) umfaßt, zum Auswählen von entweder der Anzahl von Befehlen, die an die Verarbeitungsein­ heiten (4 bis 7) von der Holvorrichtung (IR0 bis IR3) angelegt worden sind, oder dem Ergebnis der Addierung der Addiervorrich­ tung (10) und zum Anlegen desselben als Anzahl von leeren Regi­ stern in der Holvorrichtung (IR0 bis IR3, 9).
4. Superskalarprozessor nach Anspruch 3, dadurch gekennzeich­ net, daß
die Befehlsspeichervorrichtung (1) in jedem Zyklus ein Identi­ fikationssignal (ICR) ausgibt, das anzeigt, ob daraus ein Befehl geholt worden ist, und
die Leerzahlauswahlvorrichtung (300) eine Auswahloperation als Reaktion auf das Identifikationssignal durchführt.
5. Superskalarprozessor nach einem der Ansprüche 1 bis 4, ge­ kennzeichnet durch eine Speicherpositionsschiebenvorrichtung (SR1) zum Verschieben der Speicherposition jedes Befehles innerhalb der Holvorrich­ tung (IR0 bis IR3, 9) nach der Beendigung der Dekodieroperation der Dekodervorrichtung (3).
6. Superskalarprozessor nach Anspruch 5, dadurch gekennzeich­ net, daß
die Speicherpositionsschiebenvorrichtung eine erste Schiebevor­ richtung (SR1) umfaßt, zum zeitweisen Speichern und Halten der aus der Holvorrichtung (IR0 bis IR3, 9) ausgelesenen Befehle und zum Verschieben dieser, und
die in der ersten Schiebevorrichtung verschobenen Befehle zu­ rück zur Holvorrichtung übertragen werden und dort hineinge­ schrieben werden.
7. Superskalarprozessor nach Anspruch 6, dadurch gekennzeich­ net, daß der Schiebebetrag der ersten Schiebevorrichtung auf der Basis der Anzahl der Befehle gesteuert wird, die an die Verarbei­ tungseinheiten (4 bis 7) aus der Holvorrichtung (IR0 bis IR3, 9) durch die Dekodervorrichtung (3) angelegt werden.
8. Superskalarprozessor nach Anspruch 6 oder 7, dadurch ge­ kennzeichnet, daß die Steuervorrichtung eine zweite Schiebevorrichtung (SR2) um­ faßt, zum zeitweisen Speichern und Halten einer Mehrzahl von aus der Befehlsspeichervorrichtung (1) ausgelesenen Befehle und zum Verschieben dieser während jedes Zyklus.
9. Superskalarprozessor nach Anspruch 8, dadurch gekennzeich­ net, daß
der Verschiebebetrag in der zweiten Schiebevorrichtung auf der Basis des Ergebnisses der Leerzahlerkennungsvorrichtung ge­ steuert wird, und
die in der zweiten Schiebevorrichtung (SR2) verschobenen Befehle zu leeren Registern der Holvorrichtung (IR0 bis IR3, 9) übertragen werden und dort hineingeschrieben werden.
10. Skalarprozessor nach Anspruch 8 oder 9, dadurch gekenn­ zeichnet, daß die Steuervorrichtung
eine Mehrzahl von Befehlsauswahlvorrichtungen (100 bis 103) umfaßt, die jedem Register der Holvorrichtung (IR0 bis IR3 ,9) entsprechen, zum Auswählen entweder eines entsprechenden Aus­ gangssignales der ersten Schiebevorrichtung oder eines ent­ sprechenden Ausgangssignales der zweiten Schiebevorrichtung und zum Anlegen desselben an ein entsprechendes Register, und
eine Auswahlsteuervorrichtung (12) umfaßt, zum Steuern des Aus­ wahlzustandes jeder der Befehlsauswahlvorrichtungen auf der Basis des Ergebnisses der Leerzahlerkennungsvorrichtung.
11. Superskalarprozessor nach einem der Ansprüche 1 bis 10, da­ durch gekennzeichnet, daß die Dekodervorrichtung (3) die die Dekoderoperation eines Be­ fehles anhält, wenn eine der Verarbeitungsvorrichtungen (4 bis 7) angelegte Befehle nicht ausführt.
12. Superskalarprozessor nach Anspruch 11, dadurch gekennzeich­ net, daß die Holvorrichtung (IR0 bis IR3, 9), die Leerzahlerkennungsvor­ richtung und die Steuervorrichtung die jeweiligen Operationen auch in einem Zyklus fortführen, in welchem die Dekodervorrich­ tung (3) nicht im Betrieb ist.
DE4216905A 1991-06-24 1992-05-21 Superskalarprozessor Expired - Fee Related DE4216905C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3151867A JPH052484A (ja) 1991-06-24 1991-06-24 スーパースカラプロセツサ

Publications (2)

Publication Number Publication Date
DE4216905A1 DE4216905A1 (de) 1993-01-07
DE4216905C2 true DE4216905C2 (de) 1996-07-25

Family

ID=15527961

Family Applications (1)

Application Number Title Priority Date Filing Date
DE4216905A Expired - Fee Related DE4216905C2 (de) 1991-06-24 1992-05-21 Superskalarprozessor

Country Status (3)

Country Link
US (1) US5497496A (de)
JP (1) JPH052484A (de)
DE (1) DE4216905C2 (de)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2107046A1 (en) * 1993-01-08 1994-07-09 James Allan Kahle Method and system for increased instruction dispatch efficiency in superscalar processor system
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
EP0651324B1 (de) * 1993-10-29 2006-03-22 Advanced Micro Devices, Inc. Spekulative Befehlswarteschlange für Befehle mit variabler Byteslänge
EP0651320B1 (de) 1993-10-29 2001-05-23 Advanced Micro Devices, Inc. Superskalarbefehlsdekoder
US5604909A (en) 1993-12-15 1997-02-18 Silicon Graphics Computer Systems, Inc. Apparatus for processing instructions in a computing system
JPH10510146A (ja) * 1994-11-21 1998-10-06 ザ ユニバーシティ オブ リーズ 改変されたプロテイナーゼインヒビター
JP3597540B2 (ja) * 1995-06-01 2004-12-08 富士通株式会社 並列データプロセッサにおけるアクティブ命令を回転させる方法および装置
US5619667A (en) * 1996-03-29 1997-04-08 Integrated Device Technology, Inc. Method and apparatus for fast fill of translator instruction queue
US5964863A (en) * 1996-04-15 1999-10-12 Motorola, Inc. Method and apparatus for providing pipe fullness information external to a data processing system
US6115807A (en) * 1997-12-19 2000-09-05 Intel Corporation Static instruction decoder utilizing a circular queue to decode instructions and select instructions to be issued
DE19811201A1 (de) * 1998-03-09 1999-09-16 Gmd Gmbh Schieberegister und Mikroprozessorenanordnung
US6237101B1 (en) * 1998-08-03 2001-05-22 International Business Machines Corporation Microprocessor including controller for reduced power consumption and method therefor
JP3730455B2 (ja) 1999-10-01 2006-01-05 富士通株式会社 情報処理装置及び情報処理方法
US7825935B1 (en) * 2001-11-30 2010-11-02 Nvidia Corporation System, method and computer program product for using textures as instructions for graphics processing
US7593976B1 (en) 2003-01-06 2009-09-22 Marvell Israel (M.I.S.L.) Ltd. Method and apparatus for finding the next free bit in a register
JP5154119B2 (ja) * 2007-03-26 2013-02-27 テレフオンアクチーボラゲット エル エム エリクソン(パブル) プロセッサ
US8176252B1 (en) 2007-11-23 2012-05-08 Pmc-Sierra Us, Inc. DMA address translation scheme and cache with modified scatter gather element including SG list and descriptor tables
US8495301B1 (en) 2007-11-23 2013-07-23 Pmc-Sierra Us, Inc. System and method for scatter gather cache processing
KR102648180B1 (ko) * 2016-07-19 2024-03-18 에스케이하이닉스 주식회사 메모리 시스템 및 그 동작 방법

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5729153A (en) * 1980-07-29 1982-02-17 Fujitsu Ltd Control system for instruction processing order
JPS57152046A (en) * 1981-03-13 1982-09-20 Mitsubishi Electric Corp Instruction buffer controlling method
JPS63131230A (ja) * 1986-11-21 1988-06-03 Hitachi Ltd 情報処理装置
EP0312764A3 (de) * 1987-10-19 1991-04-10 International Business Machines Corporation Datenprozessor mit mehrfachen Ausführungseinheiten zur parallelen Ausführung von mehreren Befehlsklassen
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
JPH03139726A (ja) * 1989-10-26 1991-06-13 Hitachi Ltd 命令読出し制御方式
US5121502A (en) * 1989-12-20 1992-06-09 Hewlett-Packard Company System for selectively communicating instructions from memory locations simultaneously or from the same memory locations sequentially to plurality of processing
US5185868A (en) * 1990-01-16 1993-02-09 Advanced Micro Devices, Inc. Apparatus having hierarchically arranged decoders concurrently decoding instructions and shifting instructions not ready for execution to vacant decoders higher in the hierarchy

Also Published As

Publication number Publication date
DE4216905A1 (de) 1993-01-07
JPH052484A (ja) 1993-01-08
US5497496A (en) 1996-03-05

Similar Documents

Publication Publication Date Title
DE4216905C2 (de) Superskalarprozessor
DE3210816C2 (de)
DE3424962C2 (de)
DE2715073C3 (de) Mikroprogrammierte Rechner-Steuervorrichtung
DE2829668B2 (de) Kanaldatenpufferspeicher
DE2226314A1 (de) Verfahren und steuereinrichtung zur steuerung einer programmfolge
DE1774296B2 (de) Restruktuierbare Steuereinheit für elektronische Digitalrechner
DE2714805A1 (de) Datenverarbeitungssystem
DE2744531A1 (de) Elektronische datenverarbeitungsanlage
DE2457612B2 (de) Mikroprogrammier-Steuereinrichtung
DE2411963B2 (de) Datenverarbeitungsanlage
DE1285220B (de) Datenverarbeitungssystem mit mehreren selbstaendigen Recheneinheiten
DE2036729A1 (de) Digital Datenverarbeiter
DE2339636A1 (de) Programmsteuereinrichtung
DE1929010B2 (de) Modular aufgebaute datenverarbeitungsanlage
DE1774870C3 (de) Einrichtung zur Adressierung einer Speicherzelle eines Speichers in einer Datenverarbeitungsanlage
DE3043653A1 (de) Datenverarbeitungsanlage
DE4134387C2 (de) Vorrichtung und Verfahren zum Befehlszuführen in Geräten mit Parallelverarbeitung
DE2454613C2 (de) Kanaleinheit für die Steuerung der Datenübertragung auf einer Vielzahl von Kanälen zwischen den peripheren Einrichtungen und dem Hauptspeicher einer digitalen Datenverarbeitungsanlage
DE2935101C2 (de)
DE2854400C2 (de) Anordnung zum Wechsel zwischen verzahnt zu verarbeitenden Programmen
DE1499191B2 (de) Elektronische einrichtung fuer eine datenverarbeitungsanlage
EP0130269A2 (de) Speicherprogrammierbare Steuerung
DE2108157A1 (de) Datenverarbeitungsanlage mit über lagertem Speicherverkehr
DE2720842A1 (de) Daten-uebertragungssystem

Legal Events

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