-
HINTERGRUND
DER ERFINDUNG
-
Die
vorliegende Erfindung betrifft einen Befehlsausgabe-Schaltkreis, und
insbesondere einen Befehlsausgabe-Schaltkreis, welcher eine Out-Of-Order-Befehlsausführung steuert.
-
Ein
beliebtes Verfahren für
das Erhöhen
der Geschwindigkeit eines Pipeline-Computers ist das Erhöhen der
Taktgeschwindigkeit und das Verringern der Zeitdauer, die für das Ausführen eines
Befehls erforderlich ist. In vielen Fällen wird zur Erhöhung der Geschwindigkeit
eines Pipeline-Computers die Taktgeschwindigkeit erhöht, und
gleichzeitig ist die Festkomma-Operationseinheit
derart konstruiert, dass sie eine Operationseinheit innerhalb eines
Taktzyklus beendet. Wenn die Taktgeschwindigkeit jedoch auf der
Operationszeit der Festkomma-Operationseinheit basiert, dann ist
es manchmal schwierig, andere Befehlsteuerungsoperationen auszuführen. Insbesondere
erfreut sich der Out-Of-Order-Befehlsausführungsmodus, bei dem ein Befehl
einem anderen Befehl zuvorkommen kann, heutzutage zunehmender Beliebtheit.
Diese Steuerung erfordert allerdings mehr Zeit.
-
Beispielsweise
muss, wenn ein Einzyklus-Operationsbefehl ausgegeben wird und dann
ein nachfolgender Befehl, der sich auf das Ergebnis des vorhergehenden
Einzyklus-Operationsbefehl bezieht, ausgegeben wird, die gesamten
nachfolgend aufgelisteten Steueroperationen in einem Zyklus beendet
werden.
- (1) aus einem Out-Of-Order-Befehlspuffer
(z.B. einer Reservierungsstation), Selektieren eines entsprechend
einer gewissen Priorität
auszugebenden Befehls. Dieser Befehl ist einer von den Befehlen,
deren Operanden bereit sind und welche die erforderlichen Betriebsmittel
erhalten können.
- (2) Durchsuchen des Out-Of-Order-Befehlspuffers, um die nachfolgenden
Befehle zu finden, die sich auf das Ergebnis des ausgewählten Befehls beziehen
und Setzen der Bereitzustandsflags für die Operanden derjenigen
nachfolgenden Befehle.
-
Für gewöhnlich wird
zur Überprüfung, ob
die Operanden bereit sind oder nicht, die an dem auszugebenden Befehl
angehängte
Tag-Nummer mit der eines nachfolgenden Befehls verglichen, und bei Übereinstimmung
wird bestimmt, dass die Operanden des nachfolgenden Befehls bereit
sind.
-
Zur
Implementierung einer Ausführung
eines Out-Of-Order-Befehls in der vorstehend beschriebenen herkömmlichen
Technik wird eine Überprüfung vorgenommen,
um zu bestimmen, ob ein Befehl für seine
Ausgabe bereit ist oder nicht, und, falls er bereit ist, muss die
Information über
den bereiten Operanden an die nachfolgenden Befehle weitergegeben werden.
Jedoch kann in dem herkömmlichen
System die Anzahl an für
diese Bearbeitung erforderlichen Logikschaltkreisstufen nicht mehr
weiter verringert werden, und der LSI-Herstellungsvorgang verhindert eine
Zunahme der Taktgeschwindigkeit.
-
D2
=
US 5,812,812 offenbart
ein Verfahren und ein System zur Implementierung eines von Frühdaten abhängigen Auflösungsme chanismus
durch Bereitstellung eines registerabhängigen Cache-Speichers, der hinter
einem Befehls-Cache-Speicher gespiegelt oder mit demselben Hinweiszeichen
wie der Befehls-Cache-Speicher versehen ist. Alle Astbefehle, d.h.
alle "atomaren" Befehle, welche
keine Sendedaten-Abhängigkeit
von unvollständigen
oder verzögerten
Befehlen aufweisen, werden von einer Befehlsabwicklungseinheit aussortiert.
Nach Identifzierung der Astbefehle werden die in der Gegenstück-Cache-Leitung
in dem Befehls-Cache-Speicher gespeicherten entsprechenden Befehlswörter zur
umgehenden Ausführung
versandt, falls die relevante Funktionseinheit zur Verfügung steht.
-
Mit
diesem System sind jedoch Datenabhängigkeit und Datenübereinstimmung
nur schwierig zu gewährleisten.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Die
vorliegende Erfindung hat zur Aufgabe, die mit dem vorstehend beschriebenen
Stand der Technik verbundenen Probleme zu lösen. Es ist eine Aufgabe der
vorliegenden Erfindung, einen Befehlsausgabe-Schaltkreis sowie ein
Verfahren zur Verwendung in demselben zu schaffen, wodurch die Ausführung eines
Out-Of-Order-Befehls
beschleunigt und der Durchsatz eines Pipeline-Computers erhöht werden.
-
Diese
Aufgabe wird durch Anspruch 1 bzw. Anspruch 11 gelöst.
-
In
einer bevorzugten Ausführungsform
weist jeder auf seine Ausgabe wartende Befehl eine Kennung eines
nachfolgenden Befehls, der sich auf ein Ausführungsergebnis des Befehls
bezieht, auf, und wenn der vorhergehende Befehl ausgegeben worden ist,
wird ein Ausgabezustand für
den nachfolgenden Befehl, der sich auf das Ausführungsergebnis des vorhergehenden
Befehls bezieht, basierend auf dieser Kennung aktualisiert.
-
Weitere
Merkmale und vorteilhafte Ausgestaltungen ergeben sich aus den abhängigen Ansprüchen.
-
KURZBESCHREIBUNG
DER ZEICHNUNGEN
-
Weitere
Merkmale und Vorteile der Erfindung ergeben sich deutlicher aus
der nachfolgenden ausführlichen
Beschreibung in Verbindung mit den anliegenden Zeichnungen. Es zeigen:
-
1 ein
Blockdiagramm, das ein Beispiel für einen Pipeline-Computer zeigt, bei
welchem ein erfindungsgemäßer Befehlsausgabeschaltkreis
eingesetzt wird;
-
2 ein
Blockdiagramm, das die Konfiguration einer Ausführungsform des erfindungsgemäßen Befehlsausgabe-Schaltkreises
zeigt;
-
3 ein
Blockdiagramm, das die Konfiguration eines Referenzrelations-Einstellschaltkreises, welcher
in der erfindungsgemäßen Ausführungsform verwendet
wird, zeigt;
-
4 ein
Blockdiagramm, das die Konfiguration eines Bereitzustandsflag-Einstellschaltkreises zeigt,
der in der erfindungsgemäßen Ausführungsform
eingesetzt wird;
-
5 ein
Diagramm, das eine geordnete Folge von Befehlen zeigt, die zur Erklärung des
Betriebs der erfindungsgemäßen Ausführungsform
verwendet wird; und
-
6 ein
Steuerungsdiagramm, das zur Erklärung
des Betriebs der erfindungsgemäßen Ausführungsform
verwendet wird.
-
BESCHREIBUNG
DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
-
Die
vorliegende Erfindung wird ausführlich mit
Bezug auf die anliegenden Zeichnungen beschrieben.
-
Mit
Bezug auf 1 weist die Ausführung eines
Befehls in einem Pipeline-Computer, der in einer erfindungsgemäßen Ausführungsform
verwendet wird, Folgendes auf: einen Abrufabschnitt, einen Decodierabschnitt,
einen Ausgabeabschnitt, einen Leseabschnitt, einen Ausführungsabschnitt
und einen Zurückschreibabschnitt.
In dem Abrufabschnitt wird ein gewünschter Befehl von einem Speicher
(in der Figur nicht gezeigt) oder einem Befehlspuffer 100 abgerufen
und wird in einem Speicherschaltkreis 200 des Abschnitts
D gespeichert. In dem Decodierabschnitt wird der in dem Speicherschaltkreis 200 des Abschnitts
D gespeicherte Befehl decodiert und in einem Out-Of-Order-Befehlspuffer
(z.B. einer Reservierungsstation) in einem Befehlsausgabe-Schaltkreis 300,
welcher sich aus einer Vielzahl von Eingängen zusammensetzt, gespeichert.
In dem Ausgabeabschnitt wird ein Befehl, der ausgegeben werden kann,
aus den in dem Out-Of-Order-Puffer in dem Befehlsausgabe-Schaltkreis 300 gespeicherten
Befehlen ausgewählt
und in einem Speicherschaltkreis 400 des Abschnitts R gespeichert.
Im Leseabschnitt werden die Operanden, die für den im Speicherschaltkreis 400 des
Abschnitts R gespeicherten Befehl erforderlich sind, aus einem Register 500 ausgelesen
und die ausgelesenen Operanden sowie der Befehl werden in einem
Speicherschaltkreis 600 des Abschnitts X gespeichert. In
dem Ausführungsabschnitt
wird der erteilte Befehl von einer Operationseinheit 700 und
anderen Einheiten ausgeführt
und das Ausführungsergebnis
wird in einem Speicherschaltkreis 800 des Abschnitts W
gespeichert. Im Falle eines Ladebefehls werden Daten aus einem Cache-Speicher
oder einem Speicher ausgelesen und in dem W-Abschnitts-Speicherschaltkreis 800 gespeichert.
In dem Rückschreibabschnitt
wird das in dem W-Abschnitts-Speicherschaltkreis 800 gespeicherte
Ausführungsergebnis
beispielsweise in das Register 500 ge schrieben.
-
Die
in dem Out-Of-Order-Befehlspuffer gespeicherten Befehle werden in
der Reihenfolge ausgeführt,
in der Ausführungsbedingungen
erfüllt
werden. Zu diesem Zeitpunkt kann ein Befehl, dessen Ausführungsbedingung
nicht erfüllt
wird, von einem nachfolgenden Befehl, dessen Ausführungsbedingung
erfüllt
ist, eingeholt werden. Ein in dem Out-Of-Order-Befehlspuffer in
dem Befehlsausgabe-Schaltkreis 300 gespeicherter Befehl
wird gelöscht,
sobald er ausgeführt
worden ist.
-
Aus
dem Cache-Speicher ausgelesene Daten und/oder durch die Befehlsausführung erzeugte Ergebnisse
werden nicht nur in das Register geschrieben, sondern auch direkt
zu dem Speicherschaltkreis 600 des Abschnitts X oder zu
der Operationseinheit 700 weitergeleitet. Dies bezeichnet
man als Operanden-Umgehung. Diese Operanden-Umgehung verringert
die Anzahl an Taktzyklen, die benötigt wird, damit Daten an einen
nachfolgenden Befehl, der sich auf Ausführungsergebnis eines vorhergehenden
Befehls bezieht, weitergeleitet werden.
-
Mit
Bezug auf 2 weist der in dem Ausgabeabschnitt
verwendete Befehlsausgabeschaltkreis 300 einen Eintragsverwaltungs-Schaltkreis 310,
einen Referenzrelations-Einstellschaltkreis 320, einen Out-Of-Order-Befehlspuffer 330 und
einen Bereitzustandsflag-Einstellschaltkreis 340 auf.
-
Ein
in deM Speicherschaltkreis 200 des Abschnitts D (z.B. einem
Befehls-Zwischenspeicher) gespeicherter Befehl weist ein Feld 201 für einen
Befehlscode, ein Feld 202 für einen X-Operanden, ein Feld 203 für einen
Y-Operanden und ein Feld 204 für einen Z-Operanden auf. Das
Befehlscodefeld 201 weist einen Befehlscode (welcher einen
Befehlstyp einschließt)
auf. Im Normalfall weist das X-Operandenfeld 202 die Schreibregisternummer
auf, das Y-Operandenfeld 203 weist die erste Leseregisternummer
auf, und das Z-Operandenfeld 204 weist die zweite Leseregisternummer
auf.
-
Der
Out-Of-Order-Befehlspuffer 330 weist eine Vielzahl von
Einträgen
auf, wobei jeder davon ein Gültigkeits-Flag 331,
ein Schreibzielregister-Nummernfeld 332, ein Bereitzustands-Flag 333 für den Y-Operanden,
ein Bereitzustands-Flag 334 für den Z-Operanden, ein sich
auf einen Y-Operanden beziehendes Informationsfeld 335 eines
nachfolgenden Eintrags und ein sich auf einen Z-Operanden beziehendes
Informationsfeld 336 eines nachfolgenden Eintrags. Das
Gültigkeits-Flag 331 zeigt
an, ob der Eintrag "gültig" oder "ungültig" gesetzt ist. Das Schreibzielregister-Nummernfeld 332 weist
die Nummer eines Registers auf, in welches der Befehl das Ergebnis
schreibt. Das Y-Operand-Bereitzustandsflag 333 und das
Z-Operand-Bereitzustandsflag 334 zeigen an, ob auf den
Y-Operanden bzw. den Z-Operanden Bezug genommen werden kann oder
nicht (ob diese bereit sind). Das Y-Operand-Bereitzustandsflag 333 und
das Z-Operand-Bereitzustandsflag 334 werden
vom Bereitschaftsmerker-Einstellschaltkreis 340 aktualisiert.
-
Der
Y-Operand, der sich auf das Informationsfeld 335 des nachfolgenden
Eintrags bezieht, und der Z-Operand, der sich auf das Informationsfeld 336 eines
nachfolgenden Eintrags bezieht, weisen Informationen über die
Position (d.h. Nummer) eines Eintrags auf, der einen nachfolgenden
Befehl enthält, der
sich auf das Ergebnis des Befehls dieses Eintrags als Y-Operand
bzw. als Z-Operand bezieht. Der Y-Operand, der sich auf das Informationsfeld 335 des nachfolgenden
Eintrags bezieht, und der Z-Operand, der sich auf das Informationsfeld 336 des
nachfolgenden Eintrags bezieht, setzen sich jeweils aus Bits in
ihrer Breite zusammen (Zahl der Einträge des Out-Of-Order-Befehlspuffers 330-1).
Ein Bit in jedem dieser Felder entspricht einem Eintrag, mit Ausnahme
dieses einen Eintrags des Out-Of-Order-Befehlspuffers 330.
Der Y-Operand, der sich auf ein Informationsfeld 335 des
nachfolgenden Eintrags bezieht und der Z-Operand, der sich auf ein
Informationsfeld 336 des nachfol genden Eintrags bezieht,
werden von dem Referenzrelations-Einstellschaltkreis 320 eingestellt.
-
Der
Eintrags-Verwaltungsschaltkreis 310 überwacht den Benutzungsstatus
der Einträge
des Out-Of-Order-Befehlspuffers 330. Dies bedeutet, dass
von den Einträgen,
deren Gültigkeits-Flag 331 "ungültig" gesetzt ist, der
Schaltkreis einen Eintrag auswählt,
in welchem ein neuer Befehl gespeichert werden soll. Damit dies
erfolgen kann, wählt
der Schaltkreis beispielsweise aus den "ungültigen" Einträgen einen
Eintrag mit der kleinsten Eintragsnummer aus. Ein Beispiel für einen
derartigen Schaltkreis ist eine Prioritätscodierer. Sobald ein neuer
Befehl in einem Eintrag gespeichert wird, wird das Gültigkeits-Flag 331 des
Eintrags "gültig" gesetzt. Wenn andererseits
ein Befehl vom Out-Of-Order-Befehlspuffer 330 ausgegeben
wird, dann wird das Gültigkeits-Flag 331 des
Eintrags, von welchem der Befehl ausgegeben wird, "ungültig" gesetzt.
-
Mit
Bezug auf 3 weist der Referenzrelations-Einstellschaltkreis 320 einen
Decoder 321 sowie Vergleicher 322 und logische
Produktschaltkreise 323 auf, die jeweils für einen
Eintrag des Out-Of-Order-Befehlspuffers 330 bereitgestellt
werden. Der Decoder 321 decodiert eine Ausgabe einer Eintragsnummer
aus dem Eintrags-Verwaltungsschaltkreis 310, welche den
Eintrag anzeigt, in welchem ein neuer Befehl gespeichert werden
soll. Aus praktischen Gründen
wird davon ausgegangen, dass der Out-Of-Order-Befehlspuffer 330 acht
Einträge
#1 bis #8 aufweist. Natürlich
kann die Anzahl an Einträgen
entsprechend den Systemanforderungen verändert werden. In diesem Fall
weist der Decoder 321 acht Decodier-Signalleitungen auf,
welche jeweils einem Eintrag entsprechen.
-
Der
in dem Speicherschaltkreis 200 des Abschnitts D gespeicherte
Befehl wird in einem der Einträge
des Out-Of-Order-Befehlspuffers 330 entsprechend der Ausgabe
aus dem Decoder 321 gespeichert. Gleichzeitig vergleicht
der Vergleicher 322 aller anderen Einträge die Registernummer in dem
Y-Operandenfeld 203 und die Registernummer in dem Z-Operandenfeld 204 des
Speicherschaltkreises 200 des Abschnitts D mit der Registernummer
in dem Schreibzielregister-Nummernfeld 332 dieses Eintrags.
Bei Übereinstimmung
bestätigt
der Vergleicher 322 dessen Ausgabe. Der Logik-Produktschaltkreis 232 erzeugt
das logische Produkt aus der Ausgabe aus dem Vergleicher 322 und
der Ausgabe aus dem Decoder 321.
-
Es
versteht sich, dass jeder Eintrag des Out-Of-Order-Befehlspuffers 330 den
Logik-Produktschaltkreis 323 für jeden der anderen Einträge des Out-Of-Order-Befehlspuffers 330 aufweist.
Beispielsweise weist Eintrag #3 des Out-Of-Order-Befehlspuffers 330 sieben
logische Produktschaltkreise 323-3 auf, d.h. einen für jeden
der Einträge
#1, #2, #4 bis #8. Ähnlich
weist der Eintrag #8 sieben Logik-Produktschaltkreise 323-8 auf,
d.h. einen für
jeden der Einträge
#1 bis #7. Die Ausgabe aus dem Logikprodukt-Schaltkreis 323 wird
in dem Y-Operanden, der sich auf das Informationsfeld 335 des
nachfolgenden Eintrags bezieht, und in dem Z-Operanden, der sich auf
das Informationsfeld 336 des nachfolgenden Eintrags bezieht,
gespeichert.
-
Wie
vorstehend beschrieben worden ist, stellt der Referenzrelations-Einstellschaltkreis 320 jedesmal
dann, wenn ein nachfolgender Befehl als ein Eintrag des Out-Of-Order-Befehlspuffers 330 hinzugefügt wird,
die Referenzrelationsinformationen in dem Y-Operanden, der sich
auf das Informationsfeld 335 des nachfolgenden Eintrags
bezieht, und in dem Z-Operanden, der sich auf das Informationsfeld 336 des
nachfolgenden Eintrags eines jeden vorherigen Befehls bezieht, ein.
Auf diese Weise werden diese Referenzrelationsinformationen später dazu
verwendet, schnell zu bestimmen, ob ein nachfolgender Befehl ausgegeben
werden kann.
-
Mit
Bezug auf 4 umfasst der Bereitzustandsflag-Einstell schaltkreis 340 einen
Ausgabebefehl-Steuerschaltkreis 341 und einen Selektor 342.
-
Der
Ausgabebefehl-Steuerschaltkreis 341 sucht den Out-Of-Order-Befehlspuffer 330 nach
einem Eintrag ab, dessen Gültigkeits-Flag 331"gültig" gesetzt ist und
dessen Y-Operand-Bereitzustandsflag 333 und Z-Operand-Bereitzustandsflag 334" gültig" gesetzt sind. Falls
ein solcher Eintrag gefunden wird, wählt der Schaltkreis den Befehl
als einen Befehl aus, der ausgegeben werden kann. Die ausgewählte Eintragsnummer
wird über
eine Signalleitung 349 zur Verwendung als das Steuersignal
an den Selektor 342 gesendet.
-
Der
Selektor 342 gibt den Y-Operanden, der sich auf das Informationsfeld 335 des
nachfolgenden Eintrags bezieht, und den Z-Operanden, der sich auf das Informationsfeld 336 des
nachfolgenden Eintrags bezieht, aus, wobei beide in dem vom Ausgabebefehl-Steuerschaltkreis 341 spezifizierten
Eintrag enthalten sind. Es versteht sich, dass der Selektor 342,
obwohl der Y-Operand,
der der sich auf das Informationsfeld 335 des nachfolgenden
Eintrags bezieht, und der Z-Operand, der sich auf das Informationsfeld 336 des
nachfolgenden Eintrags bezieht, beide 7 Bits lang sind, nur ein
zusätzliches
Bit für
den Eintrag selbst addiert und acht Bits ausgibt. In diesem Fall
wird das addierte Bit niemals gültig
gesetzt. Die Bits des ausgewählten
Y-Operanden, der sich auf das Informationsfeld 335 des
nachfolgenden Eintrags bezieht, und des Z-Operanden, der sich auf
das Informationsfeld 336 des nachfolgenden Eintrags bezieht,
werden in dem Y-Operand-Bereitzustandsflag 333 bzw. dem
Z-Operand-Bereitzustandsflag 334 gesetzt. Beispielsweise
wird, wenn der Eintrag #8 ausgewählt
wird, das erste Bit der sieben Bits, die in dem Y-Operanden enthalten
sind, der sich auf das Informationsfeld 335-8 des nachfolgenden
Eintrags von Eintrag #8 bezieht, in dem Y-Operand-Bereitzustandsflag 333-1 gesetzt,
das zweite Bit wird in dem Y-Operand-Bereitzustandsflag 333-2 gesetzt,
usw., und das siebte Bit wird in dem Y-Operand-Be reitzustandsflag 333-7 gesetzt.
Und das logische Signal mit niedrigem Pegel wird an das Y-Operand-Bereitzustandsflag 333-8 gesendet. Ähnlich werden
die Inhalte des Z-Operanden, der sich auf das Informationsfeld 336 des
nachfolgenden Eintrags bezieht, in dem Z-Operanden-Bereitzustandsflag 334 gesetzt.
-
Auf
diese Weise kann unmittelbar nach Erteilung eines Befehls das Y-Operand-Bereitzustandsflag
oder das Z-Operand-Bereitzustandsflag des nachfolgenden Befehls,
das sich jeweils auf das Schreibzielregister des erteilten Befehls
bezieht, gesetzt werden.
-
Als
Nächstes
wird der Betrieb der erfindungsgemäßen Ausführungsform mit Bezug auf die anliegenden
Zeichnungen beschrieben.
-
Mit
Bezug auf 5 setzt sich die geordnete Befehlsfolge,
die für
die Beschreibung der Operation verwendet wird, aus zwei Befehlen
zusammen: Befehl 1 und Befehl 2. Befehl 1 ist ein Zusatzbefehl,
der die Inhalte des Registers S2 und die des Registers S3 addiert
und das Ergebnis im Register S7 speichert. Befehl 2 ist ein Subtraktionsbefehl,
der die Inhalte des Registers S10 von den Inhalten des Register
S7 subtrahiert und das Ergebnis im Register S5 speichert. Dies bedeutet,
dass der von Befehl 1 erzeugte Wert im Register S7 gespeichert wird
und als Y-Operand des Befehls 2 bezeichnet wird. Wie diese Operation
ausgeführt
wird, wird später
mit Bezug auf die in 5 gezeigte geordnete Befehlsfolge
beschrieben.
-
Mit
Bezug auf die 1 bis 4 und 6 wird
Befehl 1 zuerst aus dem Befehlspuffer 100 in den Speicherschaltkreis 200 des
Abschnitts D zum Zeitpunkt T1 ausgelesen. Zum Zeitpunkt T2 wird
der Befehl 1 decodiert und im Out-Of-Order-Befehlspuffer 330 des
Befehlsausgabe-Schaltkreises 300 gespeichert. Es wird davon
ausgegangen, dass Befehl 1 in Eintrag #3 des Out-Of-Order-Befehlspuffers 330 des
Befehlsausgabe-Schaltkreises 300 gespeichert wird. Zur
selben Zeit wird Befehl 2 aus dem Befehlspuffer 100 in
den Speicherschaltkreis 200 des Abschnitts D ausgelesen.
-
Zum
Zeitpunkt T3 wird der Befehl 2 decodiert und dem Out-Of-Order-Befehlspuffer 330 gespeichert.
Es wird davon ausgegangen, dass Befehl 2 im Eintrag #8 des Out-Of-Order-Befehlspuffers 330 des Befehlsausgabe-Schaltkreises 300 gespeichert
wird. Zu diesem Zeitpunkt setzt der Decoder 321 nur die dem
Eintrag #8 entsprechende Signalleitung gültig. Daher werden die Inhalte
des X-Operandenfelds 202 des Speicherschaltkreises 200 des
Abschnitts D in dem Schreibzielregister-Nummernfeld 332-8 von Eintrag
#8 des Out-Of-Order-Befehlspuffers 330 gespeichert. Zur
selben Zeit stimmt die in dem Schreibzielregister-Nummernfeld 332-3 des
Eintrags #3 des Out-Of-Order-Befehlspuffers 330 gespeicherte
Registernummer mit der in dem Y-Operandenfeld 203 des
Speicherschaltkreises 200 des Abschnitts D gespeicherten
Registernummer überein.
Dies bedeutet, dass sie beide S7 sind. So wird der Wert des Vergleichers 322-3 gültig gesetzt,
indem einer der Einträge eines
jeden Logik-Produkschaltkreises 323-3 hoch gesetzt
wird. Da der Decoder 321 nur die dem Eintrag #8 entsprechende
Signalleitung gültig
setzt, nimmt das Bit, das dem Eintrag #8 des Y-Operanden entspricht,
welcher sich auf das Informationsfeld 335-3 des nachfolgenden
Eintrags bezieht, einen hohen Wert an. Andererseits wird davon ausgegangen, dass
Befehl 1 in dem Puffer als Eintrag #3 verbleibt, da die Ausgabebedingungen
aus dem einen oder anderen Grund nicht erfüllt sind. Darüber hinaus
wird davon ausgegangen, dass Befehl 1 nicht von T4 bis T8 ausgegeben
wird. In diesem Fall kann Befehl 2, der auf das Ergebnis von Befehl
1 wartet, ebenfalls nicht ausgegeben werden und verbleibt in dem
Puffer als #8.
-
Wenn
die Ausgabebedingungen für
Befehl 1 zum Zeitpunkt T8 erfüllt
sind, erfasst der Ausgabebefehl-Steuerschaltkreis 341 diese
Bedingung und sendet die Ausgabeanfrage an den Selektor 342.
Der Selektor 342 wählt
den Y-Operanden, der sich auf das Informationsfeld 335-3 des
nachfolgenden Eintrags bezieht und den Z-Operanden, der sich auf
das Informationsfeld 336-3 des nachfolgenden Eintrags von
Eintrag #3 bezieht, aus und setzt diese in dem Y-Operand-Bereitzustandsflag 333 und
dem Z-Operand-Bereitzustandsflag 334. Da nur das dem Eintrag #8
des Y-Operanden,
der sich auf das Informationsfeld 335-3 des nachfolgenden
Eintrags bezieht, entsprechende Bit einen logischen hohen Pegel
aufweist, wird das Y-Operand-Bereitzustandsflag 333-8 entsprechend
dem Eintrag #8 gesetzt.
-
Zum
Zeitpunkt T9 werden die Operanden des Befehls 1, der zum Zeitpunkt
T8 ausgegeben wurde, ausgelesen. Zudem wird zum Zeitpunkt T9 die
Ausgabebedingung für
Befehl 2 erfüllt,
da das Y-Operand-Bereitzustandsflag 333-8 des Eintrags
#8 zum Zeitpunkt T8 gesetzt wurde. Der Ausgabebefehl-Steuerschaltkreis 341 erfasst
diese Bedingung und sendet die Ausgabeanfrage für Eintrag #8 an den Selektor 342.
-
Zum
Zeitpunkt T10 wird Befehl 1 mit Hilfe der Operationseinheit 700 ausgeführt und
das Ergebnis wird in dem Speicherschaltkreis 800 des Abschnitts W
gespeichert. Darüber
hinaus wird zum Zeitpunkt T10 der Z-Operand von Befehl 2 aus dem
Register 500 ausgelesen.
-
Zum
Zeitpunkt T11 wird das Operationsergebnis von Befehl 1, welches
im Speicherschaltkreis 800 des Abschnitts W gespeichert
ist, in das Register 500 geschrieben. Zur selben Zeit wird
das Operationsergebnis von Befehl 1, das in dem Speicherabschnitt 800 des
Abschnitts W gespeichert ist, als erste Eingabe in die Operationseinheit 700 verwendet, d.h.
als Eingabe in den Y-Operanden von Befehl 2, und zwar mit Hilfe
der oben beschriebenen Operanden-Umgehung. Dies ermöglicht die
Ausführung
von Befehl 2 in der Operationseinheit 700 zum Zeitpunkt T11
mit dem im Speicherschaltkreis 800 des Abschnitts W gespeicherten
Ergebnisses. Zum Zeitpunkt T12 wird das in dem Speicherschaltkreis 800 des
Abschnitts W gespeicherte Operationsergebnis von Befehl 2 dann in
das Register 500 geschrieben.
-
Wie
vorstehend beschrieben worden ist, werden in der Ausführungform
der vorliegenden Erfindung der Y-Operand, der sich auf das Informationsfeld 335 des
nachfolgenden Eintrags bezieht und der Z-Operand, der sich auf das
Informationsfeld 336 des nachfolgenden Eintrags bezieht,
in dem Out-Of-Order-Befehlspuffer 330 bereitgestellt, und die
Eintragsnummern, welche sich jeweils auf das Ausführungsergebnis
des Befehls als Y-Operand oder Z-Operand beziehen, werden im Voraus
in diesen Feldern gesetzt. Sobald der Befehl ausgegeben ist, kann
der Bereitzustandsflag-Einstellschaltkreis 340 den Bereitstatus
des Y-Operanden und des Z-Operanden in dem Y-Operand-Bereitzustandsflag bzw.
in dem Z-Operand-Bereitzustandsflag 334 unmittelbar setzen.
-
Aus
der vorstehenden Beschreibung ist offensichtlich, dass der erfindungsgemäße Befehlsausgabe-Schaltkreis
im Voraus die Informationen über einen
nachfolgenden Befehl, der sich auf das Ausführungsergebnis eines vorhergehenden
Befehls bezieht, setzt. Aus disem Grund ist es möglich, wenn der vorhergehende
Befehl ausgegeben worden ist, unmittelbar zu bestimmen, ob der nachfolgende
Befehl ausgegeben werden kann.