DE19506435A1 - 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
DE19506435A1
DE19506435A1 DE19506435A DE19506435A DE19506435A1 DE 19506435 A1 DE19506435 A1 DE 19506435A1 DE 19506435 A DE19506435 A DE 19506435A DE 19506435 A DE19506435 A DE 19506435A DE 19506435 A1 DE19506435 A1 DE 19506435A1
Authority
DE
Germany
Prior art keywords
execution unit
pipeline
execution
write
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.)
Granted
Application number
DE19506435A
Other languages
English (en)
Other versions
DE19506435C2 (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 das Gebiet der Mikro­ prozessorarchitektur. Insbesondere betrifft die vorliegende Erfindung das Gebiet der Mikroprozessorarchitektur, die darauf gerichtet ist, parallel ausgeführte, gemeinsame Ressourcen erfordernde Instruktionen zu koordinieren, indem ein Verfahren und eine Einrichtung zum Erweitern von Ausführungseinheit- Pipelines zur Verfügung gestellt wird.
Mit fortschreitender Computerentwicklung streben die Mi­ kroprozessorentwickler nach der Entwicklung von Chips, die eine höhere Leistung und eine schnellere Verarbeitung aufweisen. Die anfänglichen Fortschritte waren im wesentlichen darauf konzen­ triert, die Anzahl der Transistoren einer einen einzigen Mikro­ prozessor enthaltenden integrierten Schaltung zu erhöhen. Diese Entwicklung geht bei den heutigen Mikroprozessoren weiter, 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 Verarbeitungsstu­ fe 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ß Instruktio­ nen in jedem Taktzyklus beendet werden. Dieser Ein-Zyklus- Durchsatz eines Pipeline-Mikroprozessors erhöht die Gesamtlei­ stung 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 In­ struktionen werden durch Kombinationen der einfacheren Instruk­ tionen ausgeführt.
Damit Mikroprozessoren mit Pipelineverarbeitung effizien­ ter arbeiten, muß eine Instruktions-Heranholeinheit am Kopf der Pipeline die Pipeline kontinuierlich mit einem Instrukti­ onsstrom versorgen. Jedoch hindern bedingte Verzweigungsin­ struktionen innerhalb eines Instruktionsstroms eine Instrukti­ ons-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 nachfolgende Instruktionen entsprechend der Verzweigungsvorher­ sage heranholen. Die Verzweigungsvorhersage geschieht unter Verwendung eines Verzweigungsziel-Puffers, der die Geschichte einer Verzweigungsinstruktion auf der Basis des Instruktions­ zeigers oder der Instruktionsadresse dieser Instruktion spei­ chert. Jedesmal, wenn eine Verzweigungsinstruktion herangeholt wird, sagt der Verzweigungszielpuffer unter Verwendung der Verzweigungsgeschichte die Zieladresse der Verzweigung vorher. Die Verwendung der Verzweigungsvorhersage in einer Architektur mit pipeline-verarbeiteten Instruktionen wird oft als spekula­ tive Ausführung bezeichnet.
Neben der spekulativen Ausführung sind durch die Imple­ mentierung einer Außer-der-Reihe-Abfertigung (out-of-order dispatch) von Instruktionen zu den Ausführungseinheiten be­ trä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 Leistungsverstärkung schafft. Ungeordnete Ausführung ist mög­ lich, 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 Ausführungseinheiten in der Ausführung befinden.
In einem eine Außer-der-Reihe-Ausführung verwendendem Prozessor wird die Instruktionsausgabe abgebrochen, wenn es einen Konflikt bei einer Funktionseinheit gibt oder wenn eine ausgegebene 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 Texten die Schaffung eines als Reservierungsstation (RS) be­ kannten 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 Puffer ist und er untersucht gleichzeitig die Instruktionen in der Reservierungsstation, um diejenigen Instruktionen zu finden, die den Ausführungseinheiten zugeteilt werden können (d. h. Instruktionen, für die Quelloperanden und Ausführungsein­ heiten verfügbar sind). Instruktionen mit bereitgestellten Daten werden von der Reservierungsstation mit wenig Rücksicht auf ihre ursprüngliche Programmreihenfolge ausgegeben. Für weitere Informationen über die Verwendung einer Reservierungs­ station und die Ausführung außer der Reihe sei auf Mike John­ son, Superscalar Microprocessor Design, Prentice-Hall, Inc., 1991, Kapitel 3 und 7 verwiesen.
In Mikroprozessoren mit Reservierungsstationen, ein­ schließlich superskalaren Prozessoren stellt die Reservie­ rungsstation 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 werden, 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 von 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 fertig sind, ein Ergebnis zurückzuschreiben. Da sich die Ausführungseinheiten einem gemeinsamen Rückschreib- Port teilen, entsteht eine Zugriffskonkurrenz.
Es ist Aufgabe der Erfindung, die Zugriffskonkurrenz der Ausführungseinheiten zu überwinden, die sich einen gemeinsamen Rückschreib-Port teilen.
Diese Aufgabe wird erfindungsgemäß gelöst durch eine Ein­ richtung mit den Merkmalen des Anspruchs 1, 16, 22 oder 23. Verfahrensmäßig wird diese Aufgabe gelöst durch die Merkmale des Anspruchs 9. Außerdem wird die Aufgabe gelöst durch einen Mikroprozessor mit den Merkmalen des Anspruchs 18.
Die Erfindung geht dabei von der Erkenntnis aus, daß durch das Verlängern der Pipeline der von einem Rückschreibkonflikt betroffenen Funktionseinheit der Rückschreibkonflikt gelöst werden kann. Es wird eine Logikschaltung zur Verfügung ge­ stellt, um die Tiefe von zwei gleichzeitig ausführenden Ausfüh­ rungspipelines zu vergleichen, um zu bestimmen, ob ein Konflikt entstehen wird. Wenn es sich herausstellt, daß zwei Ausfü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 Konflikte an einem mehreren Funktionseinheiten gemeinsamen Rückschreib-Port erfassen kann.
Außerdem stellt die Erfindung ein Mittel zur Verfügung, um eine Reservierungsstation daran zu hindern, Instruktionen zuzuteilen, 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 Konflikten zwischen diesen Ausführungseinheiten verzögern soll. Beispielsweise wird eine Ausführungseinheit mit einer dreistufigen Pipeline der Reservierungsstation signalisieren, daß sie keine 1-Zyklus-Instruktionen abfertigen soll, die gleichzeitig über einen gemeinsamen Rückschreib-Port zurückge­ schrieben werden müßten. Ebenfalls sind Ausführungseinheiten, die eine unbestimmte Anzahl von Pipelinestufen erfordern, mit einer Einrichtung ausgerüstet, um der Reservierungsstation zu melden, daß sie die Abfertigung von Instruktionen an die einen gemeinsamen Rückschreib-Port verwendenden Ausführungseinheiten eine bekannte Anzahl von Zyklen im voraus verhindern soll, um Zugriffskonkurrenzen 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 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 ausgeführt 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 aus fü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 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 Steuerlogik 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 (23)

1. Einrichtung zum Verlängern einer Pipeline einer ersten Ausführungseinheit (31), die sich mit einer zweiten Ausführungseinheit (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ührungseinheit aufweist, gekennzeichnet durch
eine mit der letzten Pipelinestufe (43) der ersten Ausführungseinheit (31) gekoppelte Puffereinrichtung (60) zum Verzögern des Rückschreibens eines Ergebnisses der ersten Ausführungseinheit;
eine mit der Puffereinrichtung (60) und der letzten Pipelinestufe (43) der ersten Ausführungseinheit (31) gekoppelte Multiplexeinrichtung (61), die ein erstes Eingangssignal von der Puffereinrichtung und ein zweites Eingangssignal von der letzten Pipelinestufe der ersten Ausführungseinheit 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 Rückschreibkonflikt-Erfassungseinrichtung zum Erfassen, ob die Ausführungseinheiten einem Rückschreibkonflikt begegnen werden, wobei die Rückschreibkonflikt- Erfassungseinrichtung der Multiplexeinrichtung (61) ein Steuersignal zum Auswählen des ersten oder des zweiten Eingangssignals als das an den Rückschreibpfad anzulegende Ausgangssignal zur Verfügung stellt.
2. Einrichtung nach Anspruch 1, dadurch gekennzeichnet, daß die Puffereinrichtung (60) ein das Ausgangssignal der letzten Pipelinestufe der ersten Ausführungseinheit (31) empfangendes Register aufweist.
3. Einrichtung nach Anspruch 2, dadurch gekennzeichnet, daß die Multiplexeinrichtung (61) eine Multiplexerlogik aufweist, die als Eingangssignale den Inhalt des Registers und das Ausgangssignal der letzten Pipelinestufe (43) der ersten Ausführungseinheit (31) empfängt.
4. Einrichtung nach Anspruch 3, dadurch gekennzeichnet, daß die Rückschreibkonflikt-Erfassungseinrichtung (62) eine mit der ersten und der zweiten Ausführungseinheit (31, 32) gekoppelte Vergleichslogik zum Vergleichen der Pipeline-Aktivität der Ausführungseinheiten aufweist, um festzustellen, ob die Ausführungseinheiten gleichzeitig zu dem Rückschreibpfad (120) schreiben werden, wobei die Vergleichslogik der Multiplexerlogik 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 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ührungseinheit (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 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ß die Puffereinrichtung (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-Mul­ tiplikationseinheit 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 verwenden; 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 zwischenge­ speicherte 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) Pipe­ linestufen gepuffert wird.
14. Verfahren nach einem der Ansprüche 9 bis 13, dadurch gekennzeichnet,
daß die erste und die zweite Ausführungseinheit Instruktio­ nen 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 Ausführungseinheit ein Ergebnis über den Rückschreibpfad ge­ schrieben 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 wirt, daß von ihr keine m-Zyklus-Instruktionen abgefer­ tigt werden sollen.
16. Computersystem mit einer Eingabe/Ausgabe(I/O)-Einrich­ tung als Kommunikationsschnittstelle, einem mit der I/O-Ein­ richtung gekoppelten Speicher (104) zum Speichern von Instruk­ tionen und Computerdaten, einer mit der I/O-Einrichtung gekop­ pelten Dateneingabeeinrichtung (105-107) zur Kommunikation mit einem Computerbenutzer und einem mit der I/O-Einrichtung gekoppelten Mikroprozessor (102) zum Ausführen von Befehlen und zum Verarbeiten von Computerdaten mit einer Einrichtung zum Verlängern einer Pipeline einer ersten Ausführungseinheit (31), die sich mit einer zweiten Ausführungseinheit (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ührungseinheit aufweist, gekennzeichnet durch
eine mit der letzten Pipelinestufe (43) der ersten Ausführungseinheit (31) gekoppelte Puffereinrichtung (60) zum Verzögern des Rückschreibens eines Ergebnisses der ersten Ausführungseinheit;
eine mit der Puffereinrichtung (60) und der letzten Pipelinestufe (43) der ersten Ausführungseinheit (31) gekoppelte Multiplexeinrichtung (61), die ein erstes Eingangssignal von der Puffereinrichtung und ein zweites Eingangssignal von der letzten Pipelinestufe der ersten Ausführungseinheit 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 Rückschreibkonflikt-Erfassungseinrichtung zum Erfassen, ob die Ausführungseinheiten einem Rückschreibkonflikt begegnen werden, wobei die Rückschreibkonflikt- Erfassungseinrichtung der Multiplexeinrichtung (61) ein Steuersignal zum Auswählen des ersten oder des zweiten Eingangssignals als das an den Rückschreibpfad anzulegende Ausgangssignal 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ührungseinheit (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 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.
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, da­ durch 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 aufweist, wobei M größer ist als N und daß die Puffereinrich­ tung (60) eine Puffertiefe von M-N aufweist.
20. Computersystem nach einem der Ansprüche 16 bis 19, da­ durch gekennzeichnet, daß die erste Ausführungseinheit (31) eine Gleitkommaadditionseinheit mit einer 3-Zyklus-Pipeline und die zweite Ausführungseinheit (32) eine Integer-Mul­ tiplikationseinheit 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 Taktzyklus oder während verschiedener Taktzyklen ausgeben können, dadurch gekennzeichnet, daß mit der ersten und der zweiten Ausführungseinheit Mit­ tel gekoppelt sind, die das Ergebnis der ersten Ausführungsein­ heit um wenigstens einen Taktzyklus verzögern, wenn die Ergeb­ nisse der ersten und der zweiten Ausführungseinheit ansonsten während des gleichen Taktzyklus ausgegeben würden.
22. Einrichtung für einen Prozessor mit einer ersten und einer zweiten Ausführungseinheit (31, 32), die mit einer ge­ meinsamen Einheit (20) gekoppelt sind, um Instruktionen von dieser zu empfangen und Ergebnisse zu dieser zurückzuschreiben, wobei die erste Ausführungseinheit eine letzte Pipelinestufe (43) aufweist, die ein erstes Ergebnis während eines gegebenen Pipelinezyklus zur Verfügung stellt, und wobei die zweite Ausführungseinheit wenigstens eine Pipelinestufe mehr als die erste Ausführungseinheit aufweist, dadurch gekennzeichnet,
daß eine zusätzliche Pipelinestufe (60) derart eingebunden ist, daß sie das erste Ergebnis empfangen und als verzögertes Ergebnis während eines nachfolgenden Pipelinezyklus zur Verfügung stellen kann;
daß ein Multiplexer (61) das erste Ergebnis und das verzö­ gerte Ergebnis empfangen kann, und mit der gemeinsamen Einheit (20) gekoppelt ist; und
daß eine Rückschreibkonflikt-Erfassungslogik (62) mit der ersten und der zweiten Ausführungseinheit und dem Multiplexer gekoppelt ist, um den Multiplexer dazu zu veranlassen, das verzögerte Ergebnis zum Rückschreiben zur gemeinsamen Einheit während des nachfolgenden Pipelinezyklus auszuwählen, wenn in einem bestimmten Pipelinezyklus die letzte Stufe sowohl der ersten als auch der zweiten Ausführungseinheit Ergebnisse ausgeben, und andernfalls das erste Ergebnis während des be­ stimmten Pipelinezyklus an die gemeinsame Einheit zurückzu­ schreiben.
23. Einrichtung aufweisend:
eine Instruktionsausgabeeinheit (20);
eine erste Ausführungseinheit (31), die mit der Instrukti­ onsausgabeeinheit zur Ausführung von Instruktionen und zum Liefern eines ersten Ergebnisses während einer ersten Zeitperi­ ode gekoppelt ist; und
eine mit der Instruktionsausgabeeinheit gekoppelte zweite Ausführungseinheit (32) zur Ausführung von Instruktionen, wobei die zweite Ausführungseinheit eine mit der In­ struktionsausgabeeinheit gekoppelte erste Pipelinestufe (43) zum Liefern eines zweiten Ergebnisses und eine mit der ersten Pipelinestufe (43) gekoppelte zweite Pipelinestufe (60) zur Lieferung des zweiten Ergebnisses als verzögertes Ergebnis während einer zweiten Zeitperiode aufweist,
dadurch gekennzeichnet,
daß die zweite Ausführungseinheit aufweist,
eine mit der ersten Pipelinestufe und der zweiten Ausfüh­ rungseinheit (32) gekoppelte Rückschreibkonflikt-Erfassungslo­ gik (62) zur Erfassung, ob das zweite Ergebnis während der ersten Zeitperiode geliefert wird; und
ein mit der ersten und der zweite Pipelinestufe und der Er­ fassung gekoppelter Multiplexer zum Zurückschreiben des zweiten Ergebnisses zu der Instruktionsausgabeeinheit, wenn das zweite Ergebnis nicht während der ersten Zeitperiode geliefert wird, und andernfalls zum Zurückschreiben des verzögerten Ergebnisses zu der Instruktionsausgabeeinheit während der zweiten Zeitperi­ ode.
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 true DE19506435A1 (de) 1995-09-14
DE19506435C2 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
DE69733444D1 (de) * 1996-03-29 2005-07-14 Matsushita Electric Ind 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
JP2007528549A (ja) * 2004-03-10 2007-10-11 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 電子回路
US20070162768A1 (en) * 2004-03-10 2007-07-12 Koninklijke Philips Electronics, N.V. Electronic circuit
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
JPWO2010021119A1 (ja) * 2008-08-21 2012-01-26 パナソニック株式会社 命令制御装置
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
US9558002B2 (en) 2014-09-30 2017-01-31 Imagination Techologies Limited Variable length execution pipeline
GB2537523B (en) * 2014-09-30 2017-09-27 Imagination Tech Ltd Multimode 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
CN112581351A (zh) * 2020-12-05 2021-03-30 西安翔腾微电子科技有限公司 一种双发射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

Family Cites Families (12)

* 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
US5067069A (en) * 1989-02-03 1991-11-19 Digital Equipment Corporation Control of multiple functional units with parallel operation in a microcoded execution unit
US5222223A (en) * 1989-02-03 1993-06-22 Digital Equipment Corporation Method and apparatus for ordering and queueing multiple memory requests
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
US5165038A (en) * 1989-12-29 1992-11-17 Supercomputer Systems Limited Partnership Global registers for a multiprocessor system
US5222240A (en) * 1990-02-14 1993-06-22 Intel Corporation Method and apparatus for delaying writing back the results of instructions to a processor
JPH04367936A (ja) * 1991-06-17 1992-12-21 Mitsubishi Electric Corp スーパースカラープロセッサ
JPH05265746A (ja) * 1992-02-18 1993-10-15 Nec Corp マイクロプロセッサ

Also Published As

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

Similar Documents

Publication Publication Date Title
DE19506435C2 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE19506990A1 (de) Einrichtung zur Datenumleitung in einem Prozessor mit mehreren Ausführungseinheiten
DE102014011332B4 (de) Priorisieren von anweisungen basierend auf typ
DE69636861T2 (de) Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern
DE69932066T2 (de) Mechanismus zur &#34;store-to-load forwarding&#34;
DE60115982T2 (de) Verfahren und Vorrichtung zum Zuordnen funktioneller Einheiten in einem Mehrfachthread-VLIM-Prozessor
DE69933088T2 (de) Vliw-verarbeiter verarbeitet befehle von verschiedenen breiten
DE69833008T2 (de) Prozessor mit instruktionskodierung mittels eines schablonenfeldes
DE60010907T2 (de) Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter
DE69737423T2 (de) Verfahren und gerät zum replizieren von datenspeicherung in einem fortgeschrittenen mikroprozessor
EP2140347B1 (de) Verarbeitung von instructionen mit langer latenzzeit in einem pipeline-basierten prozessor
DE60038693T2 (de) Verfahren und vorrichtung zur ausschaltung eines taktsignals in einem vielfadenprozessor
DE69433339T2 (de) Lade-/Speicherfunktionseinheiten und Datencachespeicher für Mikroprozessoren
DE4301417C2 (de) Computersystem mit Einrichtung zur parallelen Befehlsausführung
DE60011797T2 (de) Ausführung von mehreren fäden in einem parallelprozessor
DE69724771T2 (de) Zentralprozessoreinheit mit x86 und dsp kern und einem dsp funktions-dekoder zum abbilden von x 86-befehlen auf dsp-befehle
DE69736105T2 (de) Hierarchische durchsuchlogik für ungeordnete lade/speicherausführungssteuerung
DE102018005216A1 (de) Prozessoren, Verfahren und Systeme für einen konfigurierbaren, räumlichen Beschleuniger mit Transaktions- und Wiederholungsmerkmalen
DE19534752A1 (de) Verfahren und System zum Liefern einer Unterstützung für eine spekulative Ausführung
DE102015002383A1 (de) Verfahren und Vorrichtung zum Implementieren einer dynamischen Out-of-order-Prozessorpipeline
DE69831344T2 (de) Effiziente verarbeitung von gebündelten sprungbefehlen
DE60005860T2 (de) Ablaufsteuerung zum ausgeben und wiederausgeben von ketten abhängiger befehle
DE60131214T2 (de) Verfahren und Anordnung zur Freilassung von Funktionseinheiten in einem multithreaded VLIW-Prozessor
DE102014003799A1 (de) Systeme und Verfahren zur Übertragungseliminierung mit Bypass-Mehrfachinstanziierungstabelle
DE60115976T2 (de) Rechnersystem und Interruptvorgang

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