DE4216905C2 - Superskalarprozessor - Google Patents
SuperskalarprozessorInfo
- 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
Links
- 238000012545 processing Methods 0.000 claims description 75
- 230000004044 response Effects 0.000 claims description 3
- 238000001514 detection method Methods 0.000 claims 9
- 238000010586 diagram Methods 0.000 description 8
- 238000000034 method Methods 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 239000002041 carbon nanotube Substances 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012827 research and development Methods 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/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- 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
-
- 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
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.
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.
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.
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.
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.
(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.
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.
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.
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.
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.
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.
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 = 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.
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.
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.
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.
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.
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).
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.
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.
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.
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.
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.
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)
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)
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 |
-
1991
- 1991-06-24 JP JP3151867A patent/JPH052484A/ja active Pending
-
1992
- 1992-05-21 DE DE4216905A patent/DE4216905C2/de not_active Expired - Fee Related
-
1994
- 1994-07-28 US US08/281,128 patent/US5497496A/en not_active Expired - Fee Related
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 |