DE19506435C2 - Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten - Google Patents

Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten

Info

Publication number
DE19506435C2
DE19506435C2 DE19506435A DE19506435A DE19506435C2 DE 19506435 C2 DE19506435 C2 DE 19506435C2 DE 19506435 A DE19506435 A DE 19506435A DE 19506435 A DE19506435 A DE 19506435A DE 19506435 C2 DE19506435 C2 DE 19506435C2
Authority
DE
Germany
Prior art keywords
execution unit
pipeline
write
execution
unit
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 - Lifetime
Application number
DE19506435A
Other languages
English (en)
Other versions
DE19506435A1 (de
Inventor
Robert P Colwell
Michael Alan Fetterman
Andrew F Glew
Glenn J Hinton
Robert W Martell
David B Papworth
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of DE19506435A1 publication Critical patent/DE19506435A1/de
Application granted granted Critical
Publication of DE19506435C2 publication Critical patent/DE19506435C2/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3873Variable length pipelines, e.g. elastic pipeline
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

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 vorliegende Erfindung betrifft eine Einrichtung zum Verlängern einer Pipeline einer ersten Ausführungseinheit, die sich mit einer zweiten Ausführungseinheit einem Rückschreibpfad teilt, nach dem Oberbegriff des Patentanspruchs 1, ein Verfah­ ren zum Vermeiden von Rückschreibkonflikten nach dem Oberbe­ griff des Patentanspruchs 9 bzw. ein Computersystem nach dem Oberbegriff des Patentanspruchs 16.
Mit fortschreitender Computerentwicklung streben die Mikroprozessorentwickler nach der Entwicklung von Chips, die eine höhere Leistung und eine schnellere Verarbeitung aufwei­ sen. Die anfänglichen Fortschritte waren im wesentlichen darauf konzentriert, die Anzahl der Transistoren einer einen einzigen Mikroprozessor enthaltenden integrierten Schaltung zu erhöhen. Diese Entwicklung geht bei den heutigen Mikroprozessoren wei­ ter, bei denen nun buchstäblich Millionen von Transistoren auf einem einzigen Chip angeordnet sind. Die weitere Integration hat es ermöglicht, daß die Prozessortaktraten mit der erhöhten Transistordichte stark erhöht wurden.
Durch das Überwinden von physikalischen Grenzen wird das Letzte an Leistungsfähigkeit herausgeholt. Mikroprozessoren sind in einzelne Funktionsblöcke aufgeteilt, durch welche Instruktionen jeweils eine Stufe pro Zeiteinheit weitergegeben werden. Dies ermöglicht eine Pipelineverarbeitung von Instruk­ tionen, so daß eine zweite Instruktion an der ersten Stufe starten kann, wenn eine Instruktion die erste Verarbeitungs­ stufe beendet hat und zu der zweiten Stufe übertragen wird. Auf diese Weise sorgt die Pipelineverarbeitung selbst in den Fäl­ len, wo jede Instruktion eine Anzahl von Taktzyklen zur Beendi­ gung aller Verarbeitungsstufen benötigt, dafür, daß Instruk­ tionen in jedem Taktzyklus beendet werden. Dieser Ein-Zyklus- Durchsatz eines Pipeline-Mikroprozessors erhöht die Gesamt­ leistung von Computersystemen stark.
Andere Verbesserungen des Mikroprozessor-Designs sind die Entwicklung von superskalaren Mikroprozessoren, die in der Lage sind, mehr als eine Instruktion pro Taktzyklus an der Anfangs­ stufe der Pipeline starten zu lassen. Ebenso werden in einem superskalaren Mikroprozessor oft mehr als eine Instruktion in jedem Taktzyklus beendet. Andere Entwicklungsfortschritte sind die Vereinfachung der Instruktionssätze eines Mikroprozessors, wobei Mikroprozessoren mit reduziertem Instruktionssatz (RISC) entwickelt wurden. Diese Mikroprozessoren nutzen die Tatsache, daß viele einfache Instruktionen häufiger ausgeführt werden als einige komplizierte Instruktionen. Durch das Eliminieren der komplizierten Instruktionen aus dem Instruktionssatz wird eine schnellere Ausführungspipeline geschaffen. Komplizierte Instruktionen werden durch Kombinationen der einfacheren Instruktionen ausgeführt.
Damit Mikroprozessoren mit Pipelineverarbeitung effizien­ ter arbeiten, muß eine Instruktions-Heranholeinheit am Kopf der Pipeline die Pipeline kontinuierlich mit einem Instruktions­ strom versorgen. Jedoch hindern bedingte Verzweigungsinstruk­ tionen innerhalb eines Instruktionsstroms eine Instruktions- Heranholeinheit an dem Kopf einer Pipeline solange daran, die richtige Instruktion heranzuholen, bis die Bedingung gelöst ist. Da diese Bedingung erst weiter unten in der Pipeline gelöst wird, ist die Instruktions-Heranholeinheit nicht in der Lage, richtige Instruktionen heranzuholen.
Zur Lösung dieses Problems verwenden viele Mikroprozesso­ ren mit Pipelineverarbeitung Verzweigungsvorhersagemechanismen, die das Ergebnis von Verzweigungen vorhersagen und dann nach­ folgende Instruktionen entsprechend der Verzweigungsvorhersage heranholen. Die Verzweigungsvorhersage geschieht unter Verwen­ dung eines Verzweigungsziel-Puffers, der die Geschichte einer Verzweigungsinstruktion auf der Basis des Instruktionszeigers oder der Instruktionsadresse dieser Instruktion speichert. Jedesmal, wenn eine Verzweigungsinstruktion herangeholt wird, sagt der Verzweigungszielpuffer unter Verwendung der Verzwei­ gungsgeschichte die Zieladresse der Verzweigung vorher. Die Verwendung der Verzweigungsvorhersage in einer Architektur mit pipeline-verarbeiteten Instruktionen wird oft als spekulative Ausführung bezeichnet.
Neben der spekulativen Ausführung sind durch die Implemen­ tierung einer Außer-der-Reihe-Abfertigung (out-of-order dispatch) von Instruktionen zu den Ausführungseinheiten beträchtliche Anstiege des Instruktionsdurchsatzes erzielbar. Viele Experimente haben bestätigt, daß ein typischer Von- Neumann-Befehlscode durch Verwendung der ungeordneten Ausfüh­ rung beträchtliche Parallelität und damit eine potentielle Lei­ stungsverstärkung schafft. Ungeordnete Ausführung ist möglich, wenn eine bestimmte Instruktion nicht von vorangehenden Instruktionen abhängt, indem sie ein Ergebnis vor der Ausfüh­ rung benötigt. Mit der Außer-der-Reihe-Ausführung kann sich eine beliebige, bis zu der Anzahl der Pipelinestufen aller Funktionseinheiten gehende Anzahl von Instruktionen in den Aus­ führungseinheiten in der Ausführung befinden.
In einem eine Außer-der-Reihe-Ausführung verwendenden Pro­ zessor wird die Instruktionsausgabe abgebrochen, wenn es einen Konflikt bei einer Funktionseinheit gibt oder wenn eine ausge­ gebene Instruktion von einem Ergebnis einer Instruktion abhängt, das noch nicht berechnet wurde. Um Abbrüche zu verhin­ dern oder ihre Auswirkungen zu mildern, wurde in früheren Tex­ ten die Schaffung eines als Reservierungsstation (RS) bekannten Puffers zwischen der Decodier- und der Ausführungsstufe beschrieben. Der Prozessor dekodiert Instruktionen und gibt sie in die Reservierungsstation ein, solange dort Platz in dem Puf­ fer ist, und er untersucht gleichzeitig die Instruktionen in der Reservierungsstation, um diejenigen Instruktionen zu fin­ den, die den Ausführungseinheiten zugeteilt werden können (d. h. Instruktionen, für die Quelloperanden und Ausführungseinheiten verfügbar sind). Instruktionen mit bereitgestellten Daten wer­ den von der Reservierungsstation mit wenig Rücksicht auf ihre ursprüngliche Programmreihenfolge ausgegeben. Für weitere Informationen über die Verwendung einer Reservierungsstation und die Ausführung außer der Reihe sei auf Mike Johnson, Super­ scalar Microprocessor Design, Prentice-Hall, Inc., 1991, Kapi­ tel 3 und 7 verwiesen.
Ein superskalarer Prozessor mit mehreren Ausführungsein­ heiten, denen jeweils eine Rückschreibstufe zugeordnet ist, ist aus DE 42 07 148 A1 bekannt.
In Mikroprozessoren mit Reservierungsstationen, ein­ schließlich superskalaren Prozessoren stellt die Reservierungs­ station im allgemeinen fertige Instruktionen direkt einer geeigneten Ausführungseinheit zur Verfügung. In vielen Fällen können die Ausführungseinheiten in Gruppen zusammengefaßt wer­ den, die mit einem einzigen Abfertigungs- bzw. Dispatch-Port der Reservierungsstation gekoppelt sind. Bei einem Ausführungs­ beispiel können beispielsweise eine Gleitkommaadditions- und eine Gleitkommamultiplikations-Ausführungseinheit mit demselben Abfertigungs-Port gekoppelt sein. Die Gleitkommadditions- und die Gleitkommamultiplikations-Ausführungseinheiten können unterschiedlich lange interne Pipelines aufweisen. Ein Problem entsteht dadurch, daß diese üblicherweise gruppierten Ausfüh­ rungseinheiten sich möglicherweise einen einzigen Rückschreib­ pfad aus den Ausführungseinheiten teilen. Wenn die Reservie­ rungsstation eine erste Instruktion an eine Ausführungseinheit, wie bspw. die Gleitkommamultiplikationseinheit, und dann nach­ folgend eine Instruktion an die Gleitkommaadditions-Ausfüh­ rungseinheit in der gleichen Gruppe von Ausführungseinheiten abfertigt, ist es möglich, daß mehrere Ausführungseinheiten gleichzeitig bereit sind, ein Ergebnis zurückzuschreiben. Da sich die Ausführungseinheiten einem gemeinsamen Rückschreib- Port teilen, entsteht eine Zugriffskonkurrenz.
Aus dem US-Patent 5,222,240 ist es bekannt, das Rück­ schreiben in einer Pipeline zu verzögern. Aus US 5,073,855 A ist ebenfalls eine Pipeline-Verarbeitungseinheit bekannt.
Es ist Aufgabe der Erfindung, Zugriffskonflikte der Aus­ führungseinheiten, die sich einen gemeinsamen Rückschreib-Port teilen, zu reduzieren.
Diese Aufgabe wird erfindungsgemäß gelöst durch eine Ein­ richtung mit den Merkmalen des Anspruchs 1 bzw. ein Computer­ system mit den Merkmalen des Anspruchs 16. Verfahrensmäßig wird diese Aufgabe gelöst durch ein Verfahren mit den Merkmalen des Anspruchs 9. Außerdem wird die Aufgabe gelöst durch einen Mikroprozessor mit den Merkmalen des Anspruchs 21.
Die Erfindung geht von der Grundüberlegung aus, daß durch das Verlängern der Pipeline der von einem Rückschreibkonflikt betroffenen Funktionseinheiten der Rückschreibkonflikt gelöst werden kann. Es wird eine Logikschaltung zur Verfügung gestellt, um die Tiefe von zwei gleichzeitig ausführenden Aus­ führungspipelines zu vergleichen, um zu bestimmen, ob ein Kon­ flikt entstehen wird. Wenn es sich herausstellt, daß zwei Aus­ führungseinheiten versuchen werden, gleichzeitig zurückzu­ schreiben, wird die Ausführungseinheit mit der kürzeren Pipe­ line angewiesen, eine Stufe zu ihrer Pipeline hinzuzufügen. Dies geschieht, indem sie ihr Ergebnis in einem zusätzlichen Register für einen Taktzyklus speichert. Nachdem der Konflikt gelöst worden ist, wird die Instruktion zum Verlängern der Pipeline einer gegebenen Funktionseinheit zurückgenommen.
Die Erfindung trägt dazu bei, die Zugriffskonkurrenz zwi­ schen Ausführungseinheiten zu überwinden, welche sich einen gemeinsamen Rückschreibpfad teilen und welche möglicherweise einen gleichzeitigen Zugriff zu dem Rückschreibpfad erfordern.
Es ist ein Vorteil der Erfindung, daß sie potentielle Kon­ flikte an einem mehreren Funktionseinheiten gemeinsamen Rück­ schreib-Port erfassen kann.
Außerdem stellt die Erfindung ein Mittel zur Verfügung, um eine Reservierungsstation daran zu hindern, Instruktionen zuzu­ teilen, die zu Rückschreibkonflikten führen könnten oder um dieses Zuteilen zu verzögern.
Die vorliegende Erfindung stellt außerdem ein Mittel und ein Verfahren für mehrstufige Ausführungseinheiten zur Verfü­ gung, um der Reservierungsstation zu signalisieren, daß sie die Abfertigung verschiedener Instruktionen zur Vermeidung von Kon­ flikten zwischen diesen Ausführungseinheiten verzögern soll. Beispielsweise wird eine Ausführungseinheit mit einer dreistu­ figen Pipeline der Reservierungsstation signalisieren, daß sie keine 1-Zyklus-Instruktionen abfertigen soll, die gleichzeitig über einen gemeinsamen Rückschreib-Port zurückgeschrieben wer­ den müßten. Ebenfalls sind Ausführungseinheiten, die eine unbe­ stimmte Anzahl von Pipelinestufen erfordern, mit einer Einrich­ tung ausgerüstet, um der Reservierungsstation zu melden, daß sie die Abfertigung von Instruktionen an die einen gemeinsamen Rückschreib-Port verwendenden Ausführungseinheiten eine bekann­ te Anzahl von Zyklen im voraus verhindern soll, um Zugriffskon­ kurrenzen zu vermeiden.
Im folgenden wird die Erfindung anhand eines in der Zei­ chung beschriebenen Ausführungsbeispiels näher erläutert. In der Zeichnung zeigen:
Fig. 1 eine schematische Darstellung einer Computerarchi­ tektur, die die Erfindung enthalten kann
Fig. 2 ein Blockschaltbild eines Teils eines die Erfindung implementieren den Mikroprozessors;
Fig. 3 eine detailliertere Darstellung der Pipeline von zwei Ausführungseinheiten, die sich einen gemeinsa­ men Rückschreib-Port teilen und der Einrichtung zum Vermeiden einer kollidierenden Verwendung des Rück­ schreib-Ports;
Fig. 4 ein Blockschaltbild der Ausführungseinheiten, die einer Reservierungsstation Signale senden, um die Reservierungsstation an der Abfertigung von Instruk­ tionen zu hindern, welche in Konflikt mit dem Bedarf eines gemeinsamen Rückschreibpfades geraten würde.
Die vorliegende Erfindung stellt ein Verfahren und eine Einrichtung zur Verfügung, um Rückschreibkonflikte zwischen einem gemeinsamen Rückschreib-Port verwendenden Ausführungsein­ heiten zu vermeiden. In der folgenden Beschreibung sind zahl­ reiche spezielle Details angegeben, beispielsweise bestimmte Pipelinelängen von Ausführungseinheiten und bestimmte Instruk­ tionscodes, um ein besseres Verständnis der Erfindung zu ermöglichen. Für den Fachmann ist es jedoch klar, daß die vorliegende Erfindung ohne diese speziellen Details ausgeführt werden kann. In anderen Fällen sind bekannte Steuerstrukturen und Schaltungen auf Gatterebene nicht detailliert dargestellt, um das Verständnis der Erfindung nicht zu erschweren. Insbe­ sondere werden viele Funktionen beschrieben, die von verschie­ denen Logikschaltungen ausgeführt werden. Die Beschreibung der verschiedenen Funktionen versetzt den Fachmann in die Lage, die notwendigen Logikschaltungen ohne übermäßigen Aufwand zu implementieren.
In Fig. 1 ist ein typisches Computersystem dargestellt, das einen die Erfindung implementierenden Mikroprozessor verwendet. Ein Computer 100 weist drei Hauptkomponenten auf. Die erste dieser Hauptkomponenten ist die Eingabe/Ausgabe(I/O)- Schaltung 101, die zum Austausch von geeignet strukturierten Informationen mit anderen Teilen des Computers 100 sowie mit externen Geräten verwendet wird. Als Teil des Computers 100 sind eine Verarbeitungseinheit (CPU) 102 und ein Speicher 103 dargestellt. Diese beiden letztgenannten Elemente sind in den meisten Universalrechnern und in fast allen Spezialrechnern zu finden. Viele kommerziell erhältliche Computer mit unter­ schiedlichen Fähigkeiten können mit einem die Erfindung imple­ mentierenden Prozessor verwendet werden.
In Fig. 1 ist außerdem ein in der typischen Ausführungs­ form als Tastatur dargestelltes Eingabegerät 105 gezeigt. Außerdem ist als Eingabegerät ein Grafiktableau 107 darge­ stellt. Es ist jedoch klar, daß das Eingabegerät auch jede andere Art von bekannten Eingabegeräten (natürlich einschließ­ lich eines anderen Computers) sein kann. Eine Massenspeicher­ einrichtung 104 ist mit der I/O-Schaltung 101 gekoppelt und stellt zusätzliche Speichermöglichkeiten für den Rechner 100 zur Verfügung. Der Massenspeicher kann andere Programme, Schriftarten für verschiedene Zeichen und dergleichen enthalten und kann die Form eines magnetischen oder optischen Platten­ laufwerks haben. Es ist klar, daß die in dem Massenspeicher 104 gespeicherten Daten in bestimmten Fällen in üblicher Weise in den Rechnern 100 als Teil des Speichers 103 integriert werden können.
Außerdem sind drei typische Computeranzeigegeräte darge­ stellt, ein Anzeigebildschirm 108, ein Plotter 109 und ein Laserdrucker 110. Jedes Anzeigegerät kann zum Anzeigen von Bildern oder Dokumenten oder anderen von dem Computer 100 verwendeten Daten eingesetzt werden. Ein Cursor-Steuergerät 106, beispielsweise eine Maus, ein Trackball oder ein Stift sind auch mit der I/O-Schaltung 101 gekoppelt. Andere geeignete Zeigergeräte können verwendet werden.
Das bevorzugte Ausführungsbeispiel der vorliegenden Erfin­ dung ist dafür vorgesehen, in einem Mikroprozessor implementiert zu werden, der den Instruktionssatz des bekannten Intel-Archi­ tektur-Mikroprozessors ausführt. Die Erfindung kann jedoch in jedem Mikroprozessor implementiert werden, der eine Mikroar­ chitektur aufweist, in der sich mehrere Funktionseinheiten einen gemeinsamen Rückschreibpfad teilen und die von der Zugriffskonkurrenz mehrerer Funktionseinheiten betroffen sein kann, die gleichzeitig über den gemeinsamen Rückschreibpfad zurückschreiben müssen.
Der erfindungsgemäße Mikroprozessor dekodiert vor dem Aus­ führen der Intel-Architektur-Mikroprozessorinstruktionen diese in eine einfachere, stilisierte Sequenz von "Mikrobefehlen". Die Mikrobefehle werden dann analysiert und ihr Ablauf wird erneut geplant entsprechend den aufgelösten Abhängigkeiten, wobei die Außer-der-Reihe-Ausführung implementiert wird. Die unten gezeigte Sequenz zeigt das Abbilden von sechs Instruktio­ nen des Dhrystone-Testprogramms in ihre Mikrobefehle ("Gn" heißt allgemeines Register n (general register)):
Intel-Architektur-Instruktionen
Mikrobefehle
000014e8: PUSHw BP <TOS fbfffc3c< STw IN (G5, G4) OUT (Memfbfffc3c) SUB IN (SPO, CO) OUT (SPO)
000014e9: MOVw EA, R ESP EBP MVw IN (G4) OUT (G5)
000014eb: LEAVE <TOS fbfffc3c< ADD IN (G5, CO) OUT (G4)
LDw IN G5, Memfbfffc3c) OUT (G5)@ 000014ec: RETn LDw IN (G4, Memfbfffc40) OUT (TO) ADD IN (SPO, CO) OUT (SPO)
JMP IN (TO) OUT ( )@ 00001625: XORw EA, R EDI EDI XOR IN (G7, G7) OUT (G7)
00001625: ADDw Ib, EA ESP <IMM 18< ADD IN (G4) OUT (G4, flags 0)
Wie zu sehen ist, wird die PUSH-Instruktion des BP-Regi­ sters in zwei Mikrobefehle konvertiert. Der erste Mikrobefehl führt das Speichern des Registers aus und der zweite paßt den Stapelspeicherzeiger an. Diese beiden Mikrobefehle hängen nicht voneinander ab. Der der PUSH-Instruktion entsprechende "Mikrobefehl" wurde explizit geschrieben, um, wo möglich, eine maximale Parallelität zu ermöglichen. Wie zu sehen ist, werden einige komplexe Instruktionen in mehrere Mikrobefehle über­ setzt, die untereinander einen Bezug haben können, oder nicht, und einfache Instruktionen (wie beispielsweise XOR oder ADD) werden direkt in einen einzigen Mikrobefehl abgebildet.
In Fig. 2 ist ein Teil des die Erfindung implementierenden Mikroprozessors dargestellt. Bei dem bevorzugten Ausfüh­ rungsbeispiel implementiert der Mikroprozessor die Außer-der- Reihe-Ausführung. Der in Fig. 2 dargestellte Teil des Mikro­ prozessors kann als der außer der Reihe ausführende Kern des Mikroprozessors betrachtet werden. Das erste Element des in Fig. 2 dargestellten Kerns ist die Reservierungsstation 20. Die Reservierungsstation ist ein, den Funktionseinheiten vorge­ schalteter Puffer, der die Mikrobefehle hält, die zur Ausfüh­ rung auf benötigte Ressourcen warten. Diese benötigten Ressour­ cen enthalten Quelldatenoperanden (die vorangegangene Mikro­ befehle möglicherweise noch nicht erzeugt haben) und eine zum Ausführen des Mikrobefehls verfügbare Funktionseinheit.
Die Reservierungsstation führt verschiedene Funktionen aus. Sie dient als Puffer für Instruktionen und für bereits verfügbare Quelldaten. Die Quelldaten können bereits in der Reservierungsstation gespeichert sein und auf eine entspre­ chende Instruktion warten. In anderen Fällen hält die Reservie­ rungsstation dekodierte Instruktionen und "überwacht" "auf der Suche" nach Quelldaten, die sie für ihre Mikrobefehle benötigt, alle Ergebnis/Rückschreib-Busse von allen anderen Ausführungs­ einheits-Schnittstellen. Wenn die gesuchten Daten auf dem Ergebnisbus 120 ankommen, greift die Reservierungsstation diese und schreibt diese in das geeignete Quelldatenfeld.
Sobald alle Quelloperanden für einen Mikrobefehl in der Reservierungsstation sind, bestimmt die Reservierungsstation, wann eine geeignete Ausführungseinheit verfügbar ist, und plant den mit bereitgestellten Daten versehenen Mikrobefehl zur Abfertigung zu einer verfügbaren Ausführungseinheit ein. Die Reservierungsstation 20 der Fig. 2 ist mit fünf Abfertigungs- Ports dargestellt. In erster Linie werden bei dem dargestellten Ausführungsbeispiel Mikrobefehle über entweder den Abferti­ gungs-Port 0 oder den Abfertigungs-Port 1 abgefertigt.
Bei dem bevorzugten Ausführungsbeispiel sind fünf Ausfüh­ rungseinheiten mit dem Abfertigungs-Port 0 der Reservierungs­ station 20 gekoppelt. Das sind die Gleitkommaadditionseinheit (Fadd) 31, die Gleitkomma- und Integer-Multiplikationseinheit (I/F Mult) 32, die Gleitkommadivisionseinheit (Fdiv/Idiv) 33, die Integer-Ausführungseinheit (IEU[0]) 34 und eine fest verdrahtete Logikeinheit (Wire) 35. Der komplexe Instruktions­ satz der Intel-Mikroprozessorarchitektur wird, wie bereits be­ schrieben wurde, auf einen einfacheren Mikrobefehlsstrom redu­ ziert. Diese Mikrobefehle werden von den verschiedenen Ausfüh­ rungseinheiten abgearbeitet, wenn sie mit bereitgestellten Daten versehen sind. Viele Anwendungsprogramme verwenden die Integer-Ausführungseinheit häufig. Die Integer-Ausführungsein­ heit 34 ist so konzipiert, daß sie in der Lage ist, Mikrobe­ fehle mit bereitgestellten Daten in einem Taktzyklus zu verar­ beiten. Sie wird deshalb als eine 1-Zyklus-Funktionseinheit bezeichnet. Die Integer-Ausführungseinheit 34 empfängt eine Instruktionscodesequenz und Quelloperandendaten mit einer Breite von 32 Bits pro Operand. Die Gleitkomma-Ausführungs­ einheiten 31, 32 und 33 führen kompliziertere Tasks aus, wenn sie Mikrobefehle mit bereitgestellten Daten empfangen. Diese Funktionseinheiten empfangen Quelldatenoperanden mit einer Breite von 86 Bits.
Bei dem bevorzugten Ausführungsbeispiel erfordert eine Gleitkommaadditionsinstruktion drei Taktzyklen, eine Integer- Multiplikationsinstruktion vier Taktzyklen und eine Gleitkomma­ multiplikationsinstruktion fünf Taktzyklen zur Ausführung. Gleitkommadivisionen und Quadratwurzeln, die beide von der Gleitkommadivisionseinheit 33 ausgeführt werden, haben in Abhängigkeit von der für ihr Ergebnis benötigten Genauigkeit Latenzzeiten variabler Länge. Die festverdrahtete Logikeinheit 35 ist eine Hybrid-Ausführungseinheit, die in dem bevorzugten Ausführungsbeispiel für verschiedene "Catch-All"-Instruktionen implementiert ist. Sie ähnelt einer Gleitkommaeinheit dadurch, daß der Eingangsstrom 86-Bit-Operanden enthält, aber sie ähnelt der Integer-Ausführungseinheit mehr darin, daß sie ihre Operationen in einem einzigen Taktzyklus ausführt.
Der Abfertigungs-Port 1 der Reservierungsstation 20 ist auch mit zwei Ausführungseinheiten gekoppelt, und zwar einer Integer-Ausführungseinheit (IEU[1]) 36 und einer Sprung-Einheit (Jump) 37. Die Integer-Ausführungseinheit 36 kann identisch zu der Ausführungseinheit 34 sein, oder sie kann zusätzliche und/oder unterschiedliche Funktionen aufweisen. Zwei Integer- Ausführungseinheiten sind aufgrund des zumeist üblichen hohen Anteils der Integer-Mikrobefehle vorgesehen, wodurch die Leistung des gesamten Systems verbessert wird. Natürlich können in alternativen Architekturen zusätzliche Integer- Ausführungseinheiten vorgesehen werden.
Nachdem eine Ausführungseinheit einen Mikrobefehl ausgeführt hat, wird das Ergebnis über einen Rückschreibbus 120 zu dem Umordnungspuffer (ROB - reorder buffer) 40 gesendet und zurück zu der Reservierungsstation 20. Der Umordnungspuffer 40 dient als die Stelle, an der die Ergebnisse der außer der Reihe ausgeführten Mikrobefehle derart gesammelt werden, daß sie später in der richtigen Von-Neumann-Programmreihenfolge in dem Maschinenstatus festgeschrieben (committed) werden können. Auf diese Weise reassembliert der außer der Reihe ausführende Kern den Instruktionsstrom in dem Umordnungspuffer in dessen ursprüngliche Programmreihenfolge. Zur gleichen Zeit, zu der die Ausführungseinheiten zu dem Umordnungspuffer 40 zurückschreiben, schreiben sie zu der Reservierungsstation 20 zurück, da das Ergebnis eines Befehls einer Ausführungseinheit einen Quelloperanden zur Verfügung stellen kann, der für die Ausführung eines in der Reservierungsstation wartenden anderen Mikrobefehls benötigt wird.
Wie Fig. 2 zeigt, verwenden die fünf Ausführungseinheiten von dem Abfertigungs-Port 0 alle denselben Rückschreibpfad 120 zu dem Umordnungspuffer und zu der Reservierungsstation 20. Das ist der Grund, weshalb bestimmte Konflikte entstehen können, und es ist der Ausgangspunkt für die vorliegende Erfindung. Ein Konflikt entsteht, wenn beispielsweise eine Integer- Multiplikationsinstruktion und eine Gleitkommaadditionsinstruktion bei aufeinanderfolgenden Taktzyklen von der Reservierungsstation ausgegeben werden. Da die Integer-Multiplikationseinheit Multiplikationen mit einer Vier-Zyklus- Pipeline ausführt und die Gleitkommaadditionseinheit eine Drei- Zyklus-Pipeline aufweist, führen nacheinander an diese beiden Einheiten ausgegebene Instruktionen zu einer Situation, in der beide Einheiten dem Rückschreibbus 120 gleichzeitig Ergebnisdaten zur Verfügung stellen wollen. Dies darf nicht geschehen. Wenn eine Integer-Instruktion der Integer- Ausführungseinheit 34 zwei Takte nach der Abfertigung einer Gleitkomma-Instruktion oder drei Takte nach einer Integer- Multiplikationsinstruktion abgefertigt worden ist, werden die Integer-Ausführungseinheit und die Multiplikationseinheit in ähnlicher Weise in dem gleichen Taktzyklus zurückschreiben müssen. Das darf ebenfalls nicht geschehen.
Fig. 3 zeigt eine detailliertere Ansicht von zwei Ausführungseinheiten, die gekoppelt sind, um zu dem Umordnungspuffer 40 und der Reservierungsstation 20 über den Rückschreibbus 120 zurückzuschreiben. Die Gleitkomma- Additionseinheit 31 und die -Multiplikationseinheit 32 empfangen beispielsweise Mikrobefehle mit bereitgestellten Daten von der Reservierungsstation. Die Gleitkommaadditionseinheit 31 weist eine Drei-Stufen- Ausführungspipeline auf. Daher kann sie mit jedem Taktzyklus einen Mikrobefehl empfangen und ein Ergebnis zur Verfügung stellen, obwohl sie drei Taktzyklen zur Beendigung eines Mikrobefehls benötigt. Die drei Stufen der Pipeline sind in Fig. 3 dargestellt mit einem Funktionsschaltungsblock 41 als erste Stufe, einem Funktionsschaltungsblock 42 als zweite Stufe und einem Funktionsschaltungsblock 43 als dritte Stufe. Vor jeder Stufe der Ausführungseinheits-Pipeline sind Latch- Schaltungen oder Register zum Puffern des Datenstroms in jeder Funktionsstufe vorgesehen. Diese sind als Latch-Schaltungen 44, 45 bzw. 46 dargestellt, die der ersten, zweiten und dritten Pipelinestufe der Gleitkommaadditionseinheit vorgeschaltet sind.
In ähnlicher Weise empfängt der Integer-Teil der Multiplikationsfunktionseinheit 32 seine Mikrobefehle von der Reservierungsstation. Er weist allerdings eine Ausführungspipeline mit vier Stufen auf, nämlich einer ersten Stufe 47, einer zweiten Stufe 49, einer dritten Stufe 50 und einer vierten Stufe 51. Jeder dieser Stufen sind Latch- Schaltungen oder Puffer 52, 53, 55 bzw. 56 vorgeschaltet.
Wenn auf eine abgefertigte Integer- Multiplikationsinstruktion einen Takt später eine abgefertigte Gleitkommaadditionsinstruktion folgt, sind beide Funktionseinheiten, wie oben beschrieben, gleichzeitig bereit, um Ergebnisdaten über den gleichen Rückschreibbus 120 zurückzuschreiben. Eine Zugriffskonkurrenz liegt vor. Um dies zu vermeiden, wird die Pipeline der Gleitkommaadditions- Funktionseinheit 31 gegebenenfalls um einen Taktzyklus erweitert. Eine vierte Latch-Schaltung oder ein Pipeline- Erweiterungspuffer 60 empfängt das Ausgangssignal von der dritten Pipelinestufe 43 der Einheit. Das Puffern des Ergebnisses der Funktionseinheit über einen vierten Puffer verzögert die Ausgabe der Einheit um einen Taktzyklus. Wenn eine Gleitkommaadditionsinstruktion einen Taktzyklus nach einer Gleitkommamultiplikationsinstruktion abgefertigt worden ist, ist es erforderlich, das Ergebnis einen Taktzyklus nach dem Ergebnis der Gleitkommamultiplikationseinheit zurückzuschreiben, indem das Pipeline-Erweiterungsregister verwendet wird. Alternativ zu dem Pipeline-Erweiterungspuffer 60 können andere 1-Zyklus-Puffertechniken implementiert werden, beispielsweise eine 1-Zyklus-Verzögerungsleitung.
Zur Steuerung der Pipelinelänge der Gleitkommaadditionseinheit 31 ist eine Multiplexerschaltung 61 vorgesehen. Die Multiplexerschaltung 61 empfängt als Eingangssignale ein Ergebnis direkt von der dritten Pipelinestufe 43 der Gleitkommaadditionseinheit und ein von dem vorhergehenden Taktzyklus gepuffertes Ergebnis von dem Pipeline-Erweiterungspuffer 60. Der Multiplexer 61 wird von einer Steuerlogik 62 gesteuert, die bestimmt, wenn die Pipelinelänge der Gleitkommaadditionseinheit erweitert werden soll. Wenn die Steurlogik 62 bestimmt, daß ein Rückschreibkonflikt vorliegen wird, instruiert sie den Multiplexer 61, daß durch den Pipelineerweiterungspuffer 60 laufende Signal als das Signal auszuwählen, das von der Funktionseinheit zurückgeschrieben wird. Wenn kein Rückschreibkonflikt vorliegt und kein Rückschreibergebnis in dem Erweiterungspuffer 60 anhängig ist, instruiert die Steuerlogik den Multiplexer 61, den Ausgang direkt von der dritten Pipelinestufe 43 der Gleitkommaadditionseinheit auszuwählen.
Bei der Bestimmung, ob die Gleitkommaadditionseinheit die Pipelinelänge der Funktionseinheit erweitern soll, mißt die Steuerlogik 62 die auf den verschiedenen Pipelinestufen der Gleitkommaadditions- und Integer-Multiplikations- Funktionseinheiten auftretende Aktivität. Die Steuerlogik 62 kann eine Vergleichsschaltung implementieren, die bestimmt, daß es einen Rückschreibkonflikt gibt und daß die Gleitkommaadditionseinheit ihre Pipelinelänge um einen Taktzyklus erweitern muß, wenn eine Multiplikationsinstruktion in der Multiplikations-Pipelinestufe 4 zu der gleichen Zeit ist, wie eine Gleitkommaadditionseinheit in der dritten Pipelinestufe dieser Funktionseinheit. Andere Vergleiche können durchgeführt werden, wenn der Vergleich so konzipiert ist, daß er anzeigt, daß ein Rückschreibkonflikt vorhanden sein wird. Der Fachmann ist ohne übermäßiges Herumexperimentieren in der Lage, die Steuerlogik 62 derart zu implementieren, daß sie das Vorhandensein eines Rückschreibkonfliktes feststellen kann.
Wenn nach einem vorangegangenen Rückschreibkonflikt kein Rückschreibkonflikt mehr vorliegt, setzt die Steuerlogik 62 der Gleitkommaadditionseinheit 31 die Länge der Gleitkommaadditionspipeline auf drei Taktzyklen zurück. Wenn in den Pufferbauelementen Gültig-Bits implementiert sind, dann setzt der Pipelineerweiterungspuffer 60 sein Gültig-Bit zurück, womit eine 3-Taktzyklus-Pipeline angezeigt wird.
Die obige Beschreibung der Verlängerung der Pipeline einer Funktionseinheit betraf den Fall eines Rückschreibkonfliktes, in dem zwei Funktionseinheiten eine Pipelinelängendifferenz von einer Pipelinestufen haben. Selbstverständlich können zwei Funktionseinheiten auch eine Pipelinelängendifferenz von mehr als einer Stufe haben. Zur optimalen Implementierung der Erfindung in solchen Fällen muß der Pipelineerweiterungspuffer 60 eine Puffermöglichkeit für Einträge mit einer Tiefe von N bieten, wobei N die Differenz der Pipelinestufen, der kollidierenden Funktionseinheiten ist.
Ein weiterer Aspekt der Erfindung wird unter gleichzeitiger Bezugnahme auf die Fig. 2, 3 und 4 beschrieben. Andere Rückschreibkonflikte können im Zusammenhang mit denjenigen Ausführungseinheiten entstehen, die ihre Eingangssignale von dem Abfertigungs-Port 0 der Reservierungsstation 20 empfangen. Es gibt zwei 1-Zyklus- Ausführungseinheiten, die Integer-Ausführungseinheit 34 und die festverdrahtete Logikeinheit 35 (Fig. 2). Wenn ein Mikrobefehl zu einer dieser Ausführungseinheiten abgefertigt wird und sich eine Gleitkommaeinheit in der letzten Stufe ihrer Pipeline befindet, müssen sowohl die 1-Zyklus-Einheit als auch die Gleitkommaeinheit ihre Ergebnisdaten gleichzeitig zurückschreiben. Deshalb muß die Reservierungsstation 20 daran gehindert werden, 1-Zyklus-Mikrobefehle abzufertigen, bevor eine Gleitkommaeinheit ihre Ergebnisdaten zurückschreiben will. Die Gleitkommaeinheiten sind deshalb mit einem Signalpfad zu der Reservierungsstation 20 versehen, um zu melden, daß bestimmte Befehlsarten für einen Taktzyklus nicht abgefertigt werden sollen. Die Logik in der Reservierungsstation empfängt diese Signale und berücksichtigt sie bei der Ausführung ihres Einplan-Algorithmus. Da die Reservierungsstation bei dem bevorzugten Ausführungsbeispiel eine 2-Takt-Zyklus-Pipeline zum Einplanen der Mikrobefehle benötigt, muß die Reservierungsstation das Unterdrückungssignal wenigstens zwei Taktzyklen vor der Abfertigung von irgendwelchen zu verhindernden Mikrobefehlen empfangen.
Die erste Stufe 41 der Gleitkommaadditions- Funktionseinheit 31 meldet beim Empfang einer Gleitkommaadditionsinstruktion der Reservierungsstation, daß diese keine 1-Zyklus-Mikrobefehle ausgeben soll. Das hindert die Reservierungsstation daran, zwei Zyklen später einen 1- Zyklus-Mikrobefehl entweder zu der Integer-Ausführungseinheit 34 oder zu der festverdrahteten Logikeinheit 35 auszugeben, die dann versuchen würden, Ergebnisdaten zu der gleichen Zeit zurückzuschreiben, wenn das Gleitkommaadditionsergebnis zurückgeschrieben wird. Ebenso meldet die zweite Pipelinestufe 49 der Multiplikations-Funktionseinheit 32 der Reservierungsstation 20, daß sie zwei Taktzyklen später keine 1-Zyklus-Mikrooperationen ausgeben sollen, die zu dem gleichen Rückschreibkonflikt mit dieser Einheit führen würden.
Im folgenden wird eine weitere Gleitkommaeinheit der von dem Abfertigungs-Port 0 Mikrobefehle empfangenden Gruppe berücksichtigt. Die Gleitkommadivisionseinheit führt sowohl Gleitkommadivisionen als auch Quadratwurzelfunktionen aus. Die Funktionseinheit bei dem bevorzugten Ausführungsbeispiel arbeitet nicht mit Pipelineverarbeitung. Gleitkommadivisionen und Quadratwurzeln können sehr lange Latenzzeiten bis zu 60 Taktzyklen haben. Während ein Befehl darin ausgeführt wird, können keine anderen Mikrobefehle zu dieser Funktionseinheit 33 abgefertigt werden. Entsprechend meldet die Gleitkommadivisionseinheit beim Empfang eines Mikrobefehls der Reservierungsstation 20, daß sie die Abfertigung von nachfolgenden Mikrobefehlen zu dieser verhindern soll, bis die Gleitkommadivisionseinheit 33 das Rückschreiben ihres Ergebnisses ausgeführt hat. Alternativ kann die Reservierungsstationslogik so konzipiert sein, daß sie selbsthemmende Back-to-back-Divisionen verhindert. Außerdem ist die Gleitkommadivisionseinheit in der Lage, die Anzahl der Taktzyklen zu bestimmen, die sie zur Ausführung eines empfangenen Mikrobefehls benötigt. Mit dieser Information meldet die Gleitkommadivisionseinheit 33 drei Taktzyklen vor dem Rückschreiben, daß keine 1-Zyklus-Mikrobefehle von der Reservierungsstation ausgegeben werden sollen. Ebenso meldet die Gleitkommadivisionseinheit 33 5, 6 und 7 Taktzyklen vor dem Rückschreiben, daß keine 3-Zyklus-, 4- bzw. 5-Zyklus- Mikrobefehle von der Reservierungsstation 20 abgefertigt werden sollen. Wenn die Reservierungsstation nur daran gehindert wird, eine Klasse von Mikrobefehlen abzufertigen (d. h. eine 3-Zyklus- Gleitkommaaddition) können andere Mikrobefehle weiter abgefertigt werden (d. h. 1-Zyklus-Befehle oder längere Multiplikationsbefehle).
Die Implementierung sowohl der Pipelineverlängerung der Gleitkommaadditionseinheit als auch des Hinderns der Reservierungsstation daran, bestimmte kollidierende Mikrobefehle auszugeben, behebt das potentielle Problem eines Rückschreibkonfliktes von Ausführungseinheiten, die sich einen gemeinsamen Rückschreibpfad teilen. Das bevorzugte Ausführungsbeispiel wurde als in einem außer der Reihe ausführenden Mikroprozessor implementiert beschrieben. Die vorliegende Erfindung kann jedoch in jedem Prozessor implementiert werden, in dem die oben beschriebenen Rückschreibkonflikte existieren.

Claims (21)

1. Einrichtung zum Verlängern einer Pipeline einer ersten Ausführungseinheit (31), die sich mit einer zweiten Ausfüh­ rungseinheit (32) einen Rückschreibpfad (120) teilt, wobei die erste Ausführungseinheit wenigstens eine Pipelinestufe (43) aufweist, und wobei die zweite Ausführungseinheit eine Pipeline mit wenigstens einer Stufe mehr als die erste Ausführungsein­ heit aufweist, gekennzeichnet durch
einen mit der letzten Pipelinestufe (43) der ersten Ausfüh­ rungseinheit (31) gekoppelten Pipeline-Erweiterungspuffer (60) zum Verzögern des Rückschreibens eines Ergebnisses der ersten Ausführungseinheit;
eine mit dem Pipeline-Erweiterungspuffer (60) und der letzten Pipelinestufe (43) der ersten Ausführungseinheit (31) gekoppelte Multiplexerschaltung (61), die ein erstes Eingangs­ signal von dem Pipeline-Erweiterungspuffer (60) und ein zweites Eingangssignal von der letzten Pipelinestufe (43) der ersten Ausführungseinheit (31) empfängt und die ein Ausgangssignal an den Rückschreibpfad (120) anlegt; und
eine mit der ersten und der zweiten Ausführungseinheit (31, 32) gekoppelte Steuerlogik (62) zum Erfassen, ob die Ausfüh­ rungseinheiten einem Rückschreibkonflikt begegnen werden, wobei die Steuerlogik (62) der Multiplexerschaltung (61) ein Steuer­ signal zum Auswählen des ersten oder des zweiten Eingangs­ signals als das an den Rückschreibpfad anzulegende Ausgangs­ signal zur Verfügung stellt.
2. Einrichtung nach Anspruch 1, dadurch gekennzeichnet, daß der Pipeline-Erweiterungspuffer (60) ein das Ausgangssignal der letzten Pipelinestufe der ersten Ausführungseinheit (31) empfangendes Register aufweist.
3. Einrichtung nach Anspruch 2, dadurch gekennzeichnet, daß die Multiplexerschaltung (61) eine Multiplexerlogik aufweist, die als Eingangssignale den Inhalt des Registers und das Aus­ gangssignal der letzten Pipelinestufe (43) der ersten Ausfüh­ rungseinheit (31) empfängt.
4. Einrichtung nach Anspruch 3, dadurch gekennzeichnet, daß die Steuerlogik (62) eine mit der ersten und der zweiten Aus­ führungseinheit (31, 32) gekoppelte Vergleichslogik zum Ver­ gleichen der Pipeline-Aktivität der Ausführungseinheiten auf­ weist, um festzustellen, ob die Ausführungseinheiten gleich­ zeitig zu dem Rückschreibpfad 120 schreiben werden, wobei die Vergleichslogik der Multiplexerschaltung (61) zur Vermeidung eines erfaßten Rückschreibkonfliktes ein das Eingangssignal von dem Register auswählendes Steuersignal zur Verfügung stellt.
5. Einrichtung nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet,
daß eine eine n-Zyklus-Einplanungs-Pipeline aufweisende Reservierungsstation (20) mit der ersten und der zweiten Aus­ führungseinheit (31, 32) und mit wenigstens einer dritten Ausführungseinheit (34, 35) gekoppelt ist, wobei die dritte Ausführungseinheit nur einen einzigen Zyklus zur Ausführung abgefertigter Instruktionen benötigt und sich einen gemeinsamen Rückschreibpfad (120) mit der ersten und/oder zweiten Ausfüh­ rungseinheit (31, 32) teilt und
daß die erste und/oder die zweite Ausführungseinheit (31, 32) eine m-Zyklus-Pipeline sowie eine Einrichtung zum Signali­ sieren aufweist, wobei die Einrichtung zum Signalisieren der Reservierungsstation signalisiert, daß sie das Einplanen von Instruktionen zur Abfertigung zu der dritten Ausführungseinheit verzögern soll, um einen Rückschreibkonflikt zwischen der ersten bzw. der zweiten und der dritten Ausführungseinheit zu vermeiden.
6. Einrichtung nach Anspruch 5, dadurch gekennzeichnet, daß die erste bzw. die zweite Ausführungseinheit (31, 32) der Reservierungsstation an der (m - n)ten Stufe der Pipeline das Signal sendet.
7. Einrichtung nach einem der Ansprüche 1 bis 6, dadurch gekennzeichnet, daß die erste Ausführungseinheit (31) eine Pipelinelänge von N Pipelinestufen und die zweite Ausführungs­ einheit (32) eine Pipelinelänge von M Pipelinestufen aufweist, wobei M größer ist als N und daß der Pipeline-Erweiterungs­ puffer (60) eine Puffertiefe von M - N aufweist.
8. Einrichtung nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, daß die erste Ausführungseinheit (31) eine Gleitkommaadditionseinheit mit einer 3-Zyklus-Pipeline und die zweite Ausführungseinheit (32) eine Integer-Multiplikations­ einheit mit einer 4-Zyklus-Pipeline aufweist.
9. Verfahren zum Vermeiden von Rückschreibkonflikten zwi­ schen einer ersten und einer zweiten Ausführungseinheit eines Mikroprozessors, die sich einen gemeinsamen Rückschreibpfad teilen, wobei die erste Ausführungseinheit wenigstens eine Pipelinestufe und die zweite Ausführungseinheit eine Pipeline mit wenigstens einer Stufe mehr als die Pipeline der ersten Ausführungseinheit aufweist, dadurch gekennzeichnet daß das Ausgangssignal der ersten Ausführungseinheit gepuf­ fert wird, wenn die erste und die zweite Ausführungseinheit andernfalls versuchen würden, gleichzeitig zurückzuschreiben.
10. Verfahren nach Anspruch 9, dadurch gekennzeichnet, daß das Ausgangssignal für einen zusätzlichen Taktzyklus gepuffert wird.
11. Verfahren nach Anspruch 9 oder 10, dadurch gekennzeich­ net,
daß die erste Ausführungseinheit mit einem zusätzlichen Puffer versehen wird, der das Ausgangssignal der ersten Ausfüh­ rungseinheit verzögert, wobei der zusätzliche Puffer das Aus­ gangssignal von der letzten Pipelinestufe der ersten Ausfüh­ rungseinheit empfängt;
daß die Pipelineaktivitäten der ersten und der zweiten Aus­ führungseinheit verglichen werden, um zu bestimmen, ob beide versuchen, den gemeinsamen Rückschreibpfad gleichzeitig zu ver­ wenden; und
daß das Ausgangssignal der ersten Ausführungseinheit mit Hilfe des zusätzlichen Puffers zwischengespeichert wird, wenn andernfalls ein Rückschreibkonflikt zwischen der ersten und der zweiten Ausführungseinheit auftreten würde.
12. Verfahren nach Anspruch 11, dadurch gekennzeichnet, daß einem Multiplexer das Ausgangssignal der letzten Pipelinestufe der ersten Ausführungseinheit zur Verfügung gestellt wird,
daß dem Multiplexer gleichzeitig das im Puffer zwischen­ gespeicherte Ausgangssignal zur Verfügung gestellt wird; und
daß zur Vermeidung eines Rückschreibkonfliktes das geeig­ nete Ausgangssignal von dem Multiplexer ausgewählt wird, um es über den gemeinsamen Rückschreibpfad zurückzuschreiben.
13. Verfahren nach einem der Ansprüche 9 bis 12, dadurch gekennzeichnet, daß die erste Ausführungseinheit eine Pipeline­ länge von N Pipelinestufen und die zweite Ausführungseinheit eine Pipelinelänge von M Pipelinestufen aufweist, wobei M grö­ ßer ist als N, und daß das Ausgangssignal für (M - N) Pipeline­ stufen gepuffert wird.
14. Verfahren nach einem der Ansprüche 9 bis 13, dadurch gekennzeichnet,
daß die erste und die zweite Ausführungseinheit Instruk­ tionen von einer eine n-Zyklus-Einplanungs-Pipeline aufweisende Reservierungsstation empfangen, wobei die Reservierungsstation mit einer dritten Ausführungseinheit gekoppelt ist, die nur einen einzigen Taktzyklus zur Ausführung von Instruktionen benötigt und
daß von der ersten eine m-Zyklus-Ausführungs-Pipeline auf­ weisenden Ausführungseinheit, während der (m - n)ten Stufe ihrer Pipeline der Reservierungsstation gemeldet wird, daß von dieser keine 1-Zyklus-Instruktionen zugeteilt werden soll.
15. Verfahren nach einem der Ansprüche 9 bis 14, wobei der Mikroprozessor eine vierte Ausführungseinheit aufweist, die mit der Reservierungsstation und dem gemeinsamen Rückschreibpfad gekoppelt ist, und keine Pipelineverarbeitung durchführt, dadurch gekennzeichnet,
daß von der vierten Ausführungseinheit der Reservierungs­ station signalisiert wird, daß diese keine Instruktionen zu der vierten Ausführungseinheit abfertigen soll, bis die vierte Aus­ führungseinheit ein Ergebnis über den Rückschreibpfad geschrie­ ben hat;
daß die Anzahl von Taktzyklen (X) bestimmt wird, die die vierte Ausführungseinheit zur Ausführung einer Instruktion benötigt;
daß von der vierten Ausführungseinheit während des (X - n)ten Ausführungszyklus der Reservierungsstation signalisiert wird, daß von ihr keine 1-Zyklus-Instruktionen abgefertigt werden sollen; und
daß von der vierten Ausführungseinheit während des (X - (m + n))ten Ausführungszyklus der Reservierungsstation signali­ siert wird, daß von ihr keine m-Zyklus-Instruktionen abgefer­ tigt werden sollen.
16. Computersystem mit einer Eingabe/Ausgabe(I/O)-Schaltung (101) als Kommunikationsschnittstelle, einem mit der I/O-Schal­ tung (101) gekoppelten Speicher (104) zum Speichern von Instruktionen und Computerdaten einer mit der I/O-Schaltung (101) gekoppelten Dateneingabeeinrichtung (105-107) zur Kom­ munikation mit einem Computerbenutzer und einem mit der I/O- Einrichtung gekoppelten Mikroprozessor (CPU, 102) zum Ausführen von Befehlen und zum Verarbeiten von Computerdaten mit einer Einrichtung zum Verlängern einer Pipeline einer ersten Ausfüh­ rungseinheit (31), die sich mit einer zweiten Ausführungseiheit (32) einen Rückschreibpfad (120) teilt, wobei die erste Ausfüh­ rungseinheit wenigstens eine Pipelinestufe (43) aufweist, und wobei die zweite Ausführungseinheit eine Pipeline mit wenig­ stens einer Stufe mehr als die erste Ausführungseinheit auf­ weist, gekennzeichnet durch
eine mit der letzten Pipelinestufe (43) der ersten Ausfüh­ rungseinheit (31) gekoppelten Pipeline-Erweiterungspuffer (60) zum Verzögern des Rückschreibens eines Ergebnisses der ersten Ausführungseinheit;
eine mit dem Pipeline-Erweiterungspuffer (60) und der letzten Pipelinestufe (43) der ersten Ausführungseinheit (31) gekoppelten Multiplexerschaltung (61), die ein erstes Eingangs­ signal von dem Pipeline-Erweiterungspuffer und ein zweites Ein­ gangssignal von der letzten Pipelinestufe der ersten Ausfüh­ rungseinheit empfängt und die ein Ausgangssignal an den Rück­ schreibpfad (120) anlegt; und
eine mit der ersten und der zweiten Ausführungseinheit (31, 32) gekoppelten Steuerlogik (62) zum Erfassen, ob die Ausfüh­ rungseinheiten einem Rückschreibkonflikt begegnen werden, wobei die Steuerlogik (62) der Multiplexerschaltung (61) ein Steuer­ signal zum Auswählen des ersten oder des zweiten Eingangs­ signals als das an den Rückschreibpfad anzulegende Ausgangs­ signal zur Verfügung stellt.
17. Computersystem nach Anspruch 16, dadurch gekennzeich­ net,
daß eine eine n-Zyklus-Einplanungs-Pipeline aufweisende Reservierungsstation (20) mit der ersten und der zweiten Ausführungseinheit (31, 32) und mit wenigstens einer dritten Ausführungseinheit (34, 35) gekoppelt ist, wobei die dritte Ausführungseinheit nur einen einzigen Zyklus zur Ausführung abgefertigter Instruktionen benötigt und sich einen gemeinsamen Rückschreibpfad (120) mit der ersten und/oder zweiten Ausfüh­ rungseinheit (31) teilt und
daß die erste und/oder die zweite Ausführungseinheit (31) eine m-Zyklus-Pipeline sowie eine Einrichtung zum Signalisieren aufweist, wobei die Einrichtung zum Signalisieren der Reser­ vierungsstation signalisiert, daß sie das Einplanen von Instruktionen zur Abfertigung zu der dritten Ausführungseinheit verzögern soll, um einen Rückschreibkonflikt zwischen der ersten bzw. der zweiten und der dritten Ausführungseinheit zu vermeiden.
18. Computersystem nach Anspruch 17, dadurch gekennzeich­ net, daß die erste bzw. die zweite Ausführungseinheit (31, 32) der Reservierungsstation an der (m - n)ten Stufe der Pipeline das Signal sendet.
19. Computersystem nach einem der Ansprüche 16 bis 18, dadurch gekennzeichnet, daß die erste Ausführungseinheit (31) eine Pipelinelänge von N Pipelinestufen und die zweite Ausfüh­ rungseinheit (32) eine Pipelinelänge von M Pipelinestufen auf­ weist, wobei M größer ist als N und daß der Pipeline-Erwei­ terungspuffer (60) eine Puffertiefe von M - N aufweist.
20. Computersystem nach einem der Ansprüche 16 bis 19, dadurch gekennzeichnet, daß die erste Ausführungseinheit (31) eine Gleitkommaadditionseinheit mit einer 3-Zyklus-Pipeline und die zweite Ausführungseinheit (32) eine Integer-Multiplika­ tionseinheit mit einer 4-Zyklus-Pipeline aufweist.
21. Mikroprozessor mit einer ersten und einer zweiten mit Pipelineverarbeitung arbeitenden Ausführungseinheit (31, 32), die ihre zugehörigen Ergebnisse während eines gemeinsamen Taktzyklusses oder während verschiedener Taktzyklen ausgeben können, dadurch gekennzeichnet, daß er eine der mit den Ansprüche 1 bis 8 genannten Ein­ richtungen aufweist.
DE19506435A 1994-02-28 1995-02-24 Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten Expired - Lifetime DE19506435C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US20294594A 1994-02-28 1994-02-28

Publications (2)

Publication Number Publication Date
DE19506435A1 DE19506435A1 (de) 1995-09-14
DE19506435C2 true DE19506435C2 (de) 2000-05-18

Family

ID=22751847

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19506435A Expired - Lifetime DE19506435C2 (de) 1994-02-28 1995-02-24 Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten

Country Status (4)

Country Link
US (1) US5604878A (de)
DE (1) DE19506435C2 (de)
GB (1) GB2287108B (de)
SG (1) SG75756A1 (de)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5555432A (en) * 1994-08-19 1996-09-10 Intel Corporation Circuit and method for scheduling instructions by predicting future availability of resources required for execution
US5905881A (en) * 1995-11-30 1999-05-18 Unisys Corporation Delayed state writes for an instruction processor
EP0798633B1 (de) * 1996-03-29 2005-06-08 Matsushita Electric Industrial Co., Ltd. Datenprozessor mit variabler Anzahl von Pipelinestufen
US5996059A (en) * 1997-07-01 1999-11-30 National Semiconductor Corporation System for monitoring an execution pipeline utilizing an address pipeline in parallel with the execution pipeline
GB2382422A (en) * 2001-11-26 2003-05-28 Infineon Technologies Ag Switching delay stages into and out of a pipeline to increase or decrease its effective length
US7039736B2 (en) * 2003-01-15 2006-05-02 Hewlett-Packard Development Company, L.P. Systems and methods for accessing bus-mastered system resources
US7159101B1 (en) * 2003-05-28 2007-01-02 Mips Technologies, Inc. System and method to trace high performance multi-issue processors
DE602005021070D1 (de) * 2004-03-10 2010-06-17 Nxp Bv Pipeline-schaltung
CN100472432C (zh) * 2004-03-10 2009-03-25 Nxp股份有限公司 电子电路
US7478225B1 (en) * 2004-06-30 2009-01-13 Sun Microsystems, Inc. Apparatus and method to support pipelining of differing-latency instructions in a multithreaded processor
US7339592B2 (en) * 2004-07-13 2008-03-04 Nvidia Corporation Simulating multiported memories using lower port count memories
GB2458487B (en) * 2008-03-19 2011-01-19 Imagination Tech Ltd Pipeline processors
WO2010021119A1 (ja) * 2008-08-21 2010-02-25 パナソニック株式会社 命令制御装置
JP5491071B2 (ja) * 2009-05-20 2014-05-14 エヌイーシーコンピュータテクノ株式会社 命令融合演算装置および命令融合演算方法
KR101711388B1 (ko) * 2013-01-28 2017-03-02 삼성전자주식회사 파이프라인에서 블럭을 스케줄하는 컴파일 방법 및 장치
GB2516864A (en) * 2013-08-02 2015-02-11 Ibm Increased instruction issue rate and latency reduction for out-of-order processing by instruction chaining and collision avoidance
JP6225554B2 (ja) * 2013-08-14 2017-11-08 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US20150261542A1 (en) * 2014-03-14 2015-09-17 Arm Limited Data processing apparatus and method for performing data processing operation with a conditional processing step
GB2537523B (en) * 2014-09-30 2017-09-27 Imagination Tech Ltd Multimode variable length execution pipeline
US9558002B2 (en) 2014-09-30 2017-01-31 Imagination Techologies Limited Variable length execution pipeline
US10846098B2 (en) * 2018-05-29 2020-11-24 Arm Limited Execution pipeline adaptation
US11561798B2 (en) * 2020-07-30 2023-01-24 International Business Machines Corporation On-the-fly adjustment of issue-write back latency to avoid write back collisions using a result buffer
CN112581351B (zh) * 2020-12-05 2024-08-16 西安翔腾微电子科技有限公司 一种双发射simt染色处理单元写回单元结构及写回通路冲突检测方法
US11755331B2 (en) 2021-07-11 2023-09-12 Apple Inc. Writeback hazard elimination using a plurality of temporary result-storage elements
US20240078035A1 (en) * 2022-09-01 2024-03-07 Arm Limited Write-back rescheduling

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5073855A (en) * 1989-06-30 1991-12-17 Bull Hn Information Systems Inc. Resource conflict detection method and apparatus included in a pipelined processing unit
DE4207148A1 (de) * 1991-06-17 1992-12-24 Mitsubishi Electric Corp Superscalar-prozessor
US5222240A (en) * 1990-02-14 1993-06-22 Intel Corporation Method and apparatus for delaying writing back the results of instructions to a processor

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS56129950A (en) * 1980-03-07 1981-10-12 Hitachi Ltd Information processor
EP0136218A3 (de) * 1983-08-29 1988-04-20 FAIRCHILD CAMERA &amp; INSTRUMENT CORPORATION Pipeline-Mehrtorprozessor
JPH0658631B2 (ja) * 1983-12-19 1994-08-03 株式会社日立製作所 デ−タ処理装置
US4875161A (en) * 1985-07-31 1989-10-17 Unisys Corporation Scientific processor vector file organization
US5081575A (en) * 1987-11-06 1992-01-14 Oryx Corporation Highly parallel computer architecture employing crossbar switch with selectable pipeline delay
US5222223A (en) * 1989-02-03 1993-06-22 Digital Equipment Corporation Method and apparatus for ordering and queueing multiple memory requests
US5067069A (en) * 1989-02-03 1991-11-19 Digital Equipment Corporation Control of multiple functional units with parallel operation in a microcoded execution unit
US5165038A (en) * 1989-12-29 1992-11-17 Supercomputer Systems Limited Partnership Global registers for a multiprocessor system
JPH05265746A (ja) * 1992-02-18 1993-10-15 Nec Corp マイクロプロセッサ

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5073855A (en) * 1989-06-30 1991-12-17 Bull Hn Information Systems Inc. Resource conflict detection method and apparatus included in a pipelined processing unit
US5222240A (en) * 1990-02-14 1993-06-22 Intel Corporation Method and apparatus for delaying writing back the results of instructions to a processor
DE4207148A1 (de) * 1991-06-17 1992-12-24 Mitsubishi Electric Corp Superscalar-prozessor

Also Published As

Publication number Publication date
GB2287108B (en) 1998-05-13
US5604878A (en) 1997-02-18
DE19506435A1 (de) 1995-09-14
GB2287108A (en) 1995-09-06
GB9416585D0 (en) 1994-10-12
SG75756A1 (en) 2000-10-24

Similar Documents

Publication Publication Date Title
DE19506435C2 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE69308548T2 (de) Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor.
DE69719235T2 (de) Prozessor und Verfahren zur spekulativen Ausführung von bedingten Verzweigungsbefehlen unter Verwendung einer von mehreren Verzweigungsvorhersageverfahren
DE102014011332B4 (de) Priorisieren von anweisungen basierend auf typ
DE69311330T2 (de) Befehlsablauffolgeplanung von einem risc-superskalarprozessor
DE69636861T2 (de) Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern
DE69429061T2 (de) Superskalarmikroprozessoren
DE69607760T2 (de) Ungeordnete lade-/speicher-ausführungssteuerung
DE3750306T2 (de) System zum Gewährleisten der logischen Unversehrtheit von Daten.
DE69033398T2 (de) Rechnerarchitektur mit Mehrfachbefehlsausgabe
DE69028138T2 (de) Mechanismus zur präzisen Behandlung von Ausnahmebedingungen in einem Prozessor mit gepaarten Befehlen
DE19506990A1 (de) Einrichtung zur Datenumleitung in einem Prozessor mit mehreren Ausführungseinheiten
DE69032635T2 (de) Verfahren und Vorrichtung zur Erkennung von Betriebsmittelkonflikten in einer Pipeline-Verarbeitungseinheit
DE69904189T2 (de) Konfigurierter prozessor zur abbildung von logischen registernummern auf physikalische registernummern unter verwendung von virtuellen registernummern
DE69033065T2 (de) Mehrfachbefehlsdecoder
DE69612991T2 (de) System zur bearbeitung von selbstmodifizierendem kode
DE60010907T2 (de) Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter
DE60038693T2 (de) Verfahren und vorrichtung zur ausschaltung eines taktsignals in einem vielfadenprozessor
DE69325086T2 (de) Verfahren und System für spekulative Befehlsausführung
DE69209888T2 (de) Befehlablaufsteuerung für einen Rechner
DE69017178T2 (de) Datenverarbeitungssystem mit Vorrichtung zur Befehlskennzeichnung.
DE68927911T2 (de) Datenverarbeitungssystem
DE69737423T2 (de) Verfahren und gerät zum replizieren von datenspeicherung in einem fortgeschrittenen mikroprozessor
DE60115982T2 (de) Verfahren und Vorrichtung zum Zuordnen funktioneller Einheiten in einem Mehrfachthread-VLIM-Prozessor
DE69904083T2 (de) Anordnung und verfahren zum etikettieren und ungültig-erklären von spekulativ ausgeführten befehlen

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
D2 Grant after examination
8364 No opposition during term of opposition
R071 Expiry of right
R071 Expiry of right