DE69927910T2 - Befehlsausgabe-Schaltkreis und Verfahren zur Out-of- order-Befehlsausführung, wodurch Referenzabhängigkeitsinformationen in einem Befehl gesetzt werden, wenn ein Nachfolgender Befehl in einem Befehlspuffer gespeichert wird d - Google Patents

Befehlsausgabe-Schaltkreis und Verfahren zur Out-of- order-Befehlsausführung, wodurch Referenzabhängigkeitsinformationen in einem Befehl gesetzt werden, wenn ein Nachfolgender Befehl in einem Befehlspuffer gespeichert wird d Download PDF

Info

Publication number
DE69927910T2
DE69927910T2 DE69927910T DE69927910T DE69927910T2 DE 69927910 T2 DE69927910 T2 DE 69927910T2 DE 69927910 T DE69927910 T DE 69927910T DE 69927910 T DE69927910 T DE 69927910T DE 69927910 T2 DE69927910 T2 DE 69927910T2
Authority
DE
Germany
Prior art keywords
instruction
command
input
stored
operand
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
DE69927910T
Other languages
English (en)
Other versions
DE69927910D1 (de
Inventor
Akihiro Sawamura
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Application granted granted Critical
Publication of DE69927910D1 publication Critical patent/DE69927910D1/de
Publication of DE69927910T2 publication Critical patent/DE69927910T2/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/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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

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

  • 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.

Claims (11)

  1. Befehlsausgabe-Schaltkreis, dadurch gekennzeichnet dass: ein auf die Ausgabe wartender Befehl sich auf eine Kennung eines nachfolgenden Befehls bezieht, der sich wiederum auf ein Ausführungsergebnis des Befehls bezieht; und wenn der vorhergehende Befehl ausgegeben wird, eine Ausgabebedingung für den nachfolgenden Befehl, welcher sich auf das Ausführungsergebnis des vorhergehenden Befehls bezieht, basierend auf der Kennung aktualisiert wird.
  2. Befehlsausgabe-Schaltkreis nach Anspruch 1, dadurch gekennzeichnet, dass die Kennung eine Nummer eines Eingangs eines Puffers ist, in welchem jeder Befehl gespeichert wird, der auf seine Ausgabe wartet.
  3. Befehlsausgabe-Schaltkreis nach Anspruch 1, welcher weiter Folgendes aufweist: einen Out-Of-Order-Befehlspuffer (330), welcher eine Vielzahl von Eingängen (331 bis 336) aufweist, und in welchem ein auf seine Ausgabe wartender Befehl in einem beliebigen aus der Vielzahl von Eingängen (331 bis 336) gespeichert wird; einen Eingangs-Verwaltungsschaltkreis (310), der den Befehl ausgibt, in welchem Eingang aus der Vielzahl von. Eingängen (331 bis 336) des Out-Of-Order-Befehlspuffers (330) ein neuer Befehl gespeichert wird, wobei dieser Befehl einen Befehlscode (201), eine Schreibregisternummer (202) und zwei Leseregisternummern (203, 204) aufweist; einen Referenzrelations-Einstellschaltkreis (320), der, wenn der neue Befehl gespeichert wird, bestimmt, ob sich der neue Befehl als Operand auf ein Ausführungsergebnis eines vorhergehenden Befehls, der bereits in dem Out-Of-Order- Befehlspuffer gespeichert ist, bezieht, und wenn bestimmt wird, dass sich der neue Befehl auf das Ausführungsergebnis bezieht, eine Eingangsposition in dem Eingang einstellt, in welchem der vorhergehende Befehl gespeichert wird, wobei die Eingangsposition den Eingang anzeigt, in welchem der neue Befehl gespeichert wird; und einen bereiten Merker-Einstellschaltkreis (340), der, wenn der vorhergegangene Befehl ausgegeben wird, eine Ausgabebedingung für den in dem Out-Of-Order-Befehlspuffer (330) gespeicherten Befehl gemäß der von dem Referenzrelations-Einstellschaltkreis (320) eingestellten Eingangsposition aktualisiert.
  4. Befehlsausgabe-Schaltkreis nach Anspruch 3, dadurch gekennzeichnet, dass jeder Eingang aus der Vielzahl von Eingängen (331 bis 336) des Out-Of-Order-Befehlspuffers (330) eine Nummer eines Schreib-Zielregisters (332), in welchem das Ausführungsergebnis des Befehls gespeichert wird, einen bereiten Merker (333, 334), der anzeigt, ob ein Operand des Befehls gelesen werden kann oder nicht, und einen Operanden aufweist, der sich auf ein Informationsfeld über einen nachfolgenden Eingang (335, 336) bezieht, in welchem die Eingangsposition des nachfolgenden Befehls, der sich auf das Ausführungsergebnis des Befehls bezieht, gespeichert wird, wobei die Eingangsposition einen der Eingänge (331 bis 336) des Out-Of-Order-Befehlspuffers (330) anzeigt.
  5. Befehlsausgabe-Schaltkreis nach Anspruch 4, dadurch gekennzeichnet, dass der sich auf ein Informationsfeld. (335, 336) über einen nachfolgenden Eingang beziehender Operand aus Bits zusammensetzt, die jeweils dem Eingang in den Out-Of-Order-Befehlspuffer (330) entsprechen und wobei sich das dem Eingang des nachfolgenden Befehls entsprechende Bit auf das Ausführungsergebnis des Befehls bezieht, wenn der Operand gültig gesetzt wird.
  6. Befehlsausgabe-Schaltkreis nach Anspruch 5, dadurch gekennzeichnet, dass, wenn der vorhergehende Befehl ausgegeben wird, der bereite Merker-Einstellschaltkreis (340) die Bits des Operanden festlegt, welche sich auf das Informationsfeld (335, 336) über den nachfolgenden Eingang in dem bereiten Merker (333, 334) des entsprechenden Eingangs beziehen, um den bereiten Merker (333, 334) in einen Lese-Bereitzustand zu aktualisieren, falls das entsprechende Bit gültig gesetzt wird.
  7. Befehlsausgabe-Schaltkreis nach Anspruch 6, dadurch gekennzeichnet, dass der sich auf das Informationsfeld (335, 336) über den nachfolgenden Eingang beziehende Operand nicht das Bit für den Eingang selbst aufweist, und dass der bereite Merker-Einstellschaltkreis (340) das Bit, das dem Eingang selbst entspricht, zu dem Operanden hinzufügt, der sich auf das Informationsfeld (335, 336) über den nachfolgenden Eingang bezieht, bevor es in dem bereiten Merker (333, 334) eingestellt wird.
  8. Befehlsausgabe-Schaltkreis nach Anspruch 6, dadurch gekennzeichnet, dass der in jedem aus der Vielzahl von Eingängen (331 bis 336) des Out-Of-Order-Befehlspuffers (330) gespeicherte Befehl eine Vielzahl von Operanden aufweist, und dass der bereite Merker (333, 334) und der sich auf das Informationsfeld (335, 336) über den nachfolgenden Eingang beziehende Operand für jeden aus der Vielzahl von Operanden bereitgestellt werden.
  9. Befehlsausgabe-Schaltkreis nach Anspruch 5, dadurch gekennzeichnet, dass bei Speicherung des neuen Befehls und wenn eine in einem der Eingänge (331 bis 336) des Out-Of-Order-Befehlspuffers (330) gespeicherte Schreib-Zielregisternummer (332) mit der durch den Operanden des neuen Befehls spezifizierten Registernummer übereinstimmt, der Referenzrelations-Einstellschaltkreis (320) das Bit in dem sich auf das Informationsfeld (335, 336) über den nachfolgenden Eingang des übereinstimmenden Eingangs beziehenden Operanden gültig setzt, wobei das Bit dem Eingang entspricht, in welchem der neue Befehl gespeichert wird.
  10. Pipeline-Computer, welcher den Befehlsausgabe-Schaltkreis nach Anspruch 3 verwendet und eine Mehrstufen-Pipeline aufweist, dadurch gekennzeichnet, dass der bereite Merker-Einstellschaltkreis (340), wenn eine Entscheidung getroffen wird, in welchem Eingang des Out-Of-Order-Befehlspuffers (330) der auszugebende Befehl gespeichert wird und der vorhergehende Befehl ausgegeben wird, eine Ausgabebedingung für den in dem Out-Of-Order-Befehlspuffer (330) gespeicherten Befehl gemäß der von dem Referenzrelations-Einstellschaltkreis (320) eingestellten Eingangsposition aktualisiert.
  11. Befehlsausgabe-Verfahren zur Verwendung in einem Out-Of-Order-Befehlspuffer (330) mit einer Vielzahl von Eingängen (331 bis 336), wobei jeder einen auf seine Ausgabe wartenden Befehl aufweist, wobei jeder aus der Vielzahl von Eingängen (331 bis 336) einen bereiten Merker (333, 334), der anzeigt, ob ein Operand des Befehls gelesen werden kann oder nicht, und ein sich auf den Operanden beziehendes Informationsfeld (335, 336) über den nachfolgenden Eingang aufweist, in dem eine Eingangsposition einer sich auf ein Ausführungsergebnis des Befehls beziehender nachfolgender Befehl gespeichert wird, wobei sich der nachfolgende Befehl in dem Out-Of-Order- Befehlspuffer befindet, wobei das Verfahren die folgenden Schritte aufweist: wenn der sich auf das Ausführungsergebnis des vorhergehenden Befehls beziehende nachfolgende Befehl in dem Out-Of-Order-Befehlspuffer (330) gespeichert wird, Einstellen der Eingangsposition des nachfolgenden Befehls in dem Informationsfeld über den nachfolgenden Eingang, das sich auf den Operanden des Eingangs bezieht, in welchem der vorhergehende Befehl gespeichert wird; und wenn der vorhergehende Befehl ausgegeben wird, Aktualisieren des bereiten Merkers (333, 334) in dem Eingang, in welchem der nachfolgende Befehl gespeichert wird, basierend auf den sich auf den Operanden beziehenden im Eingang gespeicherten Informationen über den nachfolgenden Eingang, in welchem der vorhergehende Befehl gespeichert wird.
DE69927910T 1998-11-30 1999-11-29 Befehlsausgabe-Schaltkreis und Verfahren zur Out-of- order-Befehlsausführung, wodurch Referenzabhängigkeitsinformationen in einem Befehl gesetzt werden, wenn ein Nachfolgender Befehl in einem Befehlspuffer gespeichert wird d Expired - Fee Related DE69927910T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP10339366A JP2000163265A (ja) 1998-11-30 1998-11-30 命令発行回路
JP33936698 1998-11-30

Publications (2)

Publication Number Publication Date
DE69927910D1 DE69927910D1 (de) 2005-12-01
DE69927910T2 true DE69927910T2 (de) 2006-07-20

Family

ID=18326797

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69927910T Expired - Fee Related DE69927910T2 (de) 1998-11-30 1999-11-29 Befehlsausgabe-Schaltkreis und Verfahren zur Out-of- order-Befehlsausführung, wodurch Referenzabhängigkeitsinformationen in einem Befehl gesetzt werden, wenn ein Nachfolgender Befehl in einem Befehlspuffer gespeichert wird d

Country Status (4)

Country Link
US (1) US6553484B1 (de)
EP (1) EP1006439B1 (de)
JP (1) JP2000163265A (de)
DE (1) DE69927910T2 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6954848B2 (en) * 2002-01-02 2005-10-11 Intel Corporation Marking in history table instructions slowable/delayable for subsequent executions when result is not used immediately
US6981166B2 (en) * 2002-01-07 2005-12-27 International Business Machines Corporation Method, apparatus, and computer program product for pacing clocked operations
US20080168260A1 (en) * 2007-01-08 2008-07-10 Victor Zyuban Symbolic Execution of Instructions on In-Order Processors
US9110656B2 (en) * 2011-08-16 2015-08-18 Freescale Semiconductor, Inc. Systems and methods for handling instructions of in-order and out-of-order execution queues
US9971600B2 (en) * 2015-06-26 2018-05-15 International Business Machines Corporation Techniques to wake-up dependent instructions for back-to-back issue in a microprocessor
JP7020304B2 (ja) * 2018-06-07 2022-02-16 富士通株式会社 演算処理装置及び演算処理装置の制御方法
CN114816526B (zh) * 2022-04-19 2022-11-11 北京微核芯科技有限公司 基于操作数域复用的多操作数指令的处理方法及其装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5471591A (en) * 1990-06-29 1995-11-28 Digital Equipment Corporation Combined write-operand queue and read-after-write dependency scoreboard
DE69311330T2 (de) * 1992-03-31 1997-09-25 Seiko Epson Corp., Tokio/Tokyo Befehlsablauffolgeplanung von einem risc-superskalarprozessor
JP3531166B2 (ja) * 1992-12-31 2004-05-24 セイコーエプソン株式会社 レジスタ・リネーミングのシステム及び方法
US5761105A (en) * 1995-09-26 1998-06-02 Advanced Micro Devices, Inc. Reservation station including addressable constant store for a floating point processing unit
US5812812A (en) * 1996-11-04 1998-09-22 International Business Machines Corporation Method and system of implementing an early data dependency resolution mechanism in a high-performance data processing system utilizing out-of-order instruction issue
JP2894438B2 (ja) 1996-11-25 1999-05-24 日本電気株式会社 パイプライン処理装置
US5941983A (en) * 1997-06-24 1999-08-24 Hewlett-Packard Company Out-of-order execution using encoded dependencies between instructions in queues to determine stall values that control issurance of instructions from the queues

Also Published As

Publication number Publication date
EP1006439B1 (de) 2005-10-26
JP2000163265A (ja) 2000-06-16
US6553484B1 (en) 2003-04-22
DE69927910D1 (de) 2005-12-01
EP1006439A1 (de) 2000-06-07

Similar Documents

Publication Publication Date Title
DE68928677T2 (de) Verfahren und digitaler Computer zur Vorverarbeitung mehrerer Befehle
DE69719235T2 (de) Prozessor und Verfahren zur spekulativen Ausführung von bedingten Verzweigungsbefehlen unter Verwendung einer von mehreren Verzweigungsvorhersageverfahren
DE2714805C2 (de)
DE69904189T2 (de) Konfigurierter prozessor zur abbildung von logischen registernummern auf physikalische registernummern unter verwendung von virtuellen registernummern
DE69534113T2 (de) Kompression der Befehlswörter eines Rechners
DE69017178T2 (de) Datenverarbeitungssystem mit Vorrichtung zur Befehlskennzeichnung.
DE69308548T2 (de) Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor.
DE602004008711T2 (de) Anordnung, Verfahren und Rechnerdatensignal zur selektiven Annullierung der Vorhersage eines Rücksprungstapelspeichers als Antwort auf die Erkennung einer nicht-standard Rücksprungsbefehlsreihe
DE69033339T2 (de) Mechanismus und Verfahren zur Vorhersage von Unterprogrammrücksprüngen
DE19914210B4 (de) Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung
DE3686991T2 (de) Mechanismus fuer parallele speicherdatenabholung und befehlsausfuehrung in einem prozessor mit reduziertem befehlssatz.
DE69433621T2 (de) Geraet zur verarbeitung von befehlen in einem rechnersystem
DE69932066T2 (de) Mechanismus zur "store-to-load forwarding"
DE69330889T2 (de) System und Verfahren zur Änderung der Namen von Registern
DE69032174T2 (de) Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen
DE69504135T2 (de) Einrichtung zur Aktualisierung von Programmzählern
DE68927855T2 (de) Verfahren und Datenverarbeitungseinheit zur Vorverarbeitung von implizierten Spezifizierern in einem Pipeline-Prozessor
DE69429226T2 (de) Absendung von Befehlen an mehrere Verarbeitungseinheiten
DE2855106A1 (de) Einrichtung zur durchfuehrung von instruktionsverzweigungen
DE69325566T2 (de) Verfahren und System zur Befehlszuteilung in einem superskalaren Prozessorsystem mit unabhängig zugänglichem Zwischenspeicher
DE69418146T2 (de) Temporärer Registersatz für einen superpipeline-superskalaren Prozessor
DE69027932T2 (de) Cpu-pipeline mit registerfile-bypass durch adressvergleich bei aktualisierungen/zugriffen
DE69506606T2 (de) Verarbeitungssystem und -verfahren
DE69419036T2 (de) Datenverarbeitungssystem und betriebsverfahren
DE60216210T2 (de) Binärer Grösse-Vergleicher

Legal Events

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