-
Diese
Erfindung bezieht sich auf ein Verfahren zum Verarbeiten von Befehlen
in einem superskalaren Prozessor mit einer Verarbeitungspipeline sowie
auf einen Prozessor-Pipeline in einem solchen Prozessor.
-
Computer
und viele andere Maschinentypen werden um einen "Prozessor" herum konstruiert, der programmierte
Befehle ausführt,
die in einem Speicher der Maschine gespeichert sind. Man kann Computer
und Prozessoren nach der Komplexität ihrer Befehlssätze einteilen,
wie beispielsweise Computer mit reduziertem Befehlssatz (RISC) und
Computer mit komplexem Befehlssatz (CISC). Eine Architektur ist
eine Klassifizierung, die die Schnittstelle zwischen der Hardware
des Prozessors und dem Befehlssatz des Prozessors definiert.
-
Ein
erster Aspekt der Architektur des Prozessors besteht darin, ob sie
Befehle sequentiell oder außer
der Reihe ausführt.
Historisch führten
Prozessoren jeweils einen Befehl bzw. die Befehle in der gleichen
sequentiellen Reihenfolge aus, in der der Code für die Befehle dem Prozessor
präsentiert
wurde. Diese Architektur ist das "sequentielle Programmiermodell". Eine Außer-der-Reihe-Architektur
führt Befehle
in einer Reihenfolge aus, die von der Reihenfolge abweicht, in welcher
der Code dem Prozessor präsentiert
wird, das heißt,
nicht sequentiell.
-
Ein
Prozessor, der eine Außer-der-Reihe-Ausführung aus
einer Befehls-Warteschlange ausführt,
ist in dem US-Patent 5,784,587 beschrieben. Die Befehle werden „außer der
Reihe" dann abgefertigt,
wenn einschätzt
wird, daß nachfolgende Logikeinheiten
dazu bereit sind.
-
Die
sequentielle Natur des Softwarecodes erzeugt "Datenabhängigkeiten" und "Steuerungsabhängigkeiten". Eine Datenabhängigkeit tritt auf, wenn ein
späterer
Befehl einen Operanden x bearbeitet und die Daten von x ein Ergebnis
eines früheren
Befehls sind. Der spätere
Befehl weist eine Datenabhängigkeit
von dem Operanden des früheren
Befehls auf. Eine Steuerungsabhängigkeit
tritt auf, wenn ein Befehl zwei alternative Zweige von Befehlen
erzeugen kann, von denen nur einer ausgeführt wird. Typischerweise hängt die
Zweigauswahl von einer Bedingung ab. Die verschiedenen Architekturen
respektieren diese Daten- und Steuerungsabhängigkeiten.
-
Ein
zweiter Aspekt der Architektur eines Prozessors besteht darin, ob
die Befehlsverarbeitung "pipeline-verschachtelt" ist. Bei der Pipeline-Verarbeitung
ruft der Prozessor Befehle aus dem Speicher ab und speist sie in
ein Ende der Pipeline ein. Die Pipeline hat verschiedene "Stufen", wobei jede Stufe irgendeine
Funktion ausführt,
die notwendig oder wünschenswert
ist, um den Befehl zu verarbeiten, bevor der Befehl zur nächsten Stufe
weitergeleitet wird. Beispielsweise könnte eine Stufe einen Befehl abrufen,
die nächste
Stufe könnte
den Befehl decodieren, und die nächste
Stufe könnte
den decodierten Befehl ausführen.
Jede Stufe bringt typischerweise den Befehl näher zu seinem Abschluß. Ein Prozessor mit
einer Pipeline ist aus dem US-Patent 5,012,403 bekannt. Dort wird
u. a. vorgeschlagen, die aus einer Dekodierstufe austretenden Mikrobefehle
einerseits direkt in eine Ausführungslogik
als auch parallel in einen FIFO dekodierter Mikrobefehle einzuspeisen.
-
Eine
Pipeline kann deshalb einen Vorteil bieten, weil ein Teil der Pipeline
an einem ersten Befehl arbeitet, während ein zweiter Teil der
Pipeline an einem zweiten Befehl arbeitet. Somit kann zu jedem Zeitpunkt
mehr als ein Befehl verarbeitet werden, was potentiell die effektive
Rate erhöht,
bei welcher Befehle verarbeitet werden.
-
Einige
Pipelines verarbeiten Befehle "spekulativ". Eine spekulative
Ausführung
bedeutet, daß Befehle
abgerufen und ausgeführt
werden, bevor zugehörige
Steuer- und/oder Datenabhängigkeiten
aufgelöst
worden sind. Eine spekulative Ausführung sagt vorher, wie Daten-
und/oder Steuerungsabhängigkeiten
aufgelöst
werden, führt
Befehle auf der Grundlage der Vorhersagen aus und überprüft dann,
ob die Vorhersagen richtig waren, bevor der Befehl und seine Ergebnisse
festgeschrieben werden (retiring).
-
Der Überprüfungsschritt
kann eine Herausforderung an die Pipelinegestaltung sein. Am Ende der
Pipeline werden die Ergebnisse aus ausgeführten Befehlen vorübergehend
in einem Register gespeichert, bis sämtliche Daten- und Steuerungsabhängigkeiten
tatsächlich
aufgelöst
worden sind. Die Pipeline überprüft dann,
ob irgendwelche Fehlvorhersagen oder andere Probleme aufgetreten
sind, wobei beide allgemein als Ausnahmen bezeichnet werden. Bei
Fehlen eines Ausführungsproblems
werden die ausgeführten
Probleme "retired" und die Ergebnisse werden
in Architekturregistern gespeichert, was eine Operation ist, die
als "Festschreiben
in einen Architekturzustand" bezeichnet
wird. Wenn Ausführungsprobleme
auftreten, führt
der Prozessor eine Korrekturroutine durch.
-
Ausführungsprobleme
sind Probleme, die dazu führen
können,
daß:
- (1) ein Befehl ausgeführt wird, der nicht hätte ausgeführt werden
sollen;
- (2) ein Befehl nicht ausgeführt
wird, der hätte
ausgeführt
werden sollen; oder
- (3) ein Befehl mit unrichtigen Daten ausgeführt wird. Um den Befehlsstrom
richtig zu verarbeiten, müssen
die Auswirkungen der Ausführungsprobleme
auf die nachfolgende Ausführung
von Befehlen ebenfalls korrigiert werden.
-
Viele
bekannte Pipeline-Prozessoren "halten" die Pipeline an,
wenn eine Ausnahme erfaßt wird.
Bei anhaltbaren Befehlspipelines lenken eine Reihe von Latch-Speichern
oder Registern das Voranschreiten durch die Stufen der Pipeline.
Eine Pipeline-Steuereinrichtung erzeugt ein Signal, um die Latch-Speicher
oder Register freizugeben oder zu sperren. Während eines Anhaltens (stall)
werden die Latch-Speicher oder Register gesperrt, so daß die Befehle
nicht zu der nächsten
Stufe übertragen
werden. Nachdem eine Ausnahme, die das Anhalten und seine Auswirkungen
bewirkt hat, repariert ist, gibt die Pipeline-Steuereinrichtung
die Latch-Speicher oder Register wieder frei und die Übertragungen
zwischen den Pipeline-Stufen werden wieder aufgenommen.
-
Um
eine anhaltbare Pipeline zu betreiben, muß die Pipeline-Steuereinrichtung
Statussignale aus den Stufen der Pipeline empfangen, aus den empfangenen
Signalen bestimmen, ob angehalten werden muß, und dann ein Signal zum
Anhalten oder zum Fortfahren aussenden. Da jeder dieser Schritte Zeit
benötigt,
begrenzt die Implementierung der Fähigkeit zum Anhalten die Betriebsfrequenz
der Pipeline.
-
Einige
Prozessorpipelines führen
zusätzlich zum
Anhalten ein "Wiederholen" (replay) aus. Die Wiederholung
ist die erneute Ausführung
eines Befehls bei Erfassung einer Ausnahme. Wenn eine Ausnahme erfaßt wird,
werden spekulative Ergebnisse ignoriert, beispielsweise der Architekturzustand
nicht aktualisiert und die Befehle nicht ausgeschieden (retired).
Der Prozessor korrigiert das Problem und führt die Befehle erneut aus.
-
Ein
die Wiederholung benutzender Prozessor ist der Alpha-21164-Mikroprozessor,
der von der Digital Equipment Corporation kommerziell erhältlich ist.
Der Alpha 21164 hält
nur die ersten drei Stufen der Pipeline an. Wenn ein Problem nach
der dritten Stufe auftritt, wiederholt der Alpha 21164 die gesamte
Pipeline nach dem reparierenden Problem. Der Alpha 21164 kombiniert
folglich ein aufwendiges Anhalten mit einer komplexen Entscheidungen
treffenden Schaltung, die erforderlich ist, um zu bestimmen, wann
wiederholt werden soll. Der Alpha 21164 wiederholt die gesamte Pipeline-Zeile,
selbst wenn das Problem lokalisiert werden kann. Das Wiederholen der
gesamten Pipeline kann ineffizient sein, wenn es verschiedene parallele
Ausführungseinheiten
gibt, z. B. bei einem superskalaren Prozessor, und das Problem bei
einer der parallelen Ausführungseinheiten lokalisiert
wurde.
-
Die
Forderung nach schnelleren Prozessoren überholt kontinuierlich die
gegenwärtige
Technologie. Die Forderung übt
Druck auf sämtliche
Aspekte der Prozessorarchitektur aus, schneller zu werden im Sinne
eines höheren
Befehlsdurchsatzes. Die aktuellen Techniken zum Behandeln von Ausnahmen
bei der Pipelineverarbeitung können
den Befehlsdurchsatz substantiell verringern.
-
Aufgabe
der Erfindung ist es, die Verarbeitung der Befehle in einem superskalaren
Prozessor zu beschleunigen.
-
Diese
Aufgabe wird findungsgemäß durch ein
Verfahren mit den Merkmalen des Anspruchs 1 bzw. durch eine Prozessor-Pipeline mit den
Merkmalen des Anspruchs 8 gelöst.
-
Das
Verfahren umfaßt
die Abfertigung oder Verteilung (dispatching) und die Ausführung einer ersten
und einer zweiten Mehrzahl von Befehlen in einem Abschnitt einer
Pipeline ohne zunächst
festzustellen, ob Stufen des Abschnitts der Pipeline dazu bereit
sind. Das Verfahren umfaßt
ferner das Bestimmen, ob ein Ausführungsproblem auftrat, und
das Wiederholen der ersten Mehrzahl von Befehlen, wenn festgestellt
wird, daß bei
der ersten Mehrzahl von Befehlen ein Ausführungsproblem auftrat.
-
Die
Prozessor-Pipeline umfaßt
ein Front-End zum Abrufen einer Mehrzahl von Befehlen zur Ausführung und
ein Back-End zum Ausführen
der Mehrzahl von Befehlen, die von dem Front-End abgerufen worden sind. Das Back-End
enthält
eine Retirement-Stufe, die feststellt, ob bei einem Befehl ein Ausführungsproblem
auftrat. Das Back-End ist nicht-anhaltbar (nonstallable). Die Prozessor-Pipeline
enthält
darüber
hinaus einen Kanal zum Senden einer Anzeige, daß bei dem Befehl ein Ausführungsproblem
auftrat, von der Retirement-Stufe zu einem Wiederholungspunkt der
Pipeline, von welchem aus der Befehl erneut ausgeführt werden
kann.
-
Vorteilhafte
und/oder bevorzugte Weiterbildungen der Erfindung sind in den Unteransprüchen gekennzeichnet.
-
Weitere
Aufgaben und Vorteile der Erfindung werden beim Lesen der folgenden
detaillierten Beschreibung und bei Bezugnahme auf die Zeichnungen
klar, in welchen:
-
1 schematisch
ein Ausführungsbeispiel einer
Pipeline veranschaulicht, die in Übereinstimmung mit der vorliegenden
Erfindung konstruiert ist und betrieben wird;
-
2A ein
erstes Ausführungsbeispiel
einer Warteschlange zwischen dem Front- und dem Back-End der in 1 veranschaulichten
Pipeline zeigt;
-
2B ein
zweites Ausführungsbeispiel
einer Warteschlange zwischen dem Front- und dem Back-End der in 1 veranschaulichten
Pipeline zeigt; und
-
3A schematisch
ein spezielles Ausführungsbeispiel
der Pipeline gemäß 1 veranschaulicht;
-
3B ein
Ausführungsbeispiel
der Retirement-Stufe der Pipeline gemäß 3A veranschaulicht;
-
4A ein
Ausführungsbeispiel
für ein
Verfahren der spekulativen Ausführung
und der Rückwandlung
(retiring) von Befehlen gemäß der vorliegenden
Erfindung veranschaulicht; und
-
4B ein
weiteres Ausführungsbeispiel
eines Verfahrens zum Ausführen
und Rückwandeln (retiring)
von Befehlen gemäß der vorliegenden
Erfindung veranschaulicht.
-
1 veranschaulicht
schematisch ein Ausführungsbeispiel
einer nicht-anhaltbaren Prozessor-Pipeline 10, die gemäß der vorliegenden
Erfindung konstruiert ist und betrieben wird. Die Pipeline 10 umfaßt allgemein
ein Front-End 12, ein Back-End 14 und eine zwischen
dem Front-End 12 und dem Back-End 14 angeordnete Warteschlange 15.
Die Warteschlange ist in der Lage, einen Zwischenzustand der Prozessor-Pipeline
zu speichern, aus welchem das Back-End 14 in Erwiderung
einer über
einen Kanal 17 übermittelten
Wiederholungsanforderung wiederholt (replayed) werden kann.
-
Gemäß 1 könnte die
Warteschlange 15 einiger Ausführungsbeispiele ein Teil des
Back-End 14 sein, statt von dem Back-End 14 getrennt
zu sein. Aus Gründen
der Klarheit und im weiteren Verlauf dieser Offenbarung der Erfindung,
die unten beansprucht wird, sollen die Warteschlange 15 und
das Back-End 14 als separate Teile der Pipeline 10 diskutiert
werden. Dennoch ist die Erfindung nicht darauf beschränkt, und
das Back-End 14 kann die Warteschlange 15 bei
irgendwelchen alternativen Ausführungsbeispielen
enthalten.
-
Es
wird noch auf 1 Bezug genommen; das Front-End 12 ruft
Makrobefehle ab und erzeugt bei diesen speziellen Ausführungsbeispielen
daraus "micro-ops" (Mikrobefehle).
Ein Mikrobefehl ist grundsätzlich
ein Befehl, der durch eine einzige (nicht gezeigte) Ausführungseinheit
des Prozessors in einem oder mehreren Taktzyklen ausgeführt werden kann.
-
Einige
Makrobefehle können
verschiedene Mikrobefehle umfassen. Somit kann es sein, daß es keine
Eins-zu-Eins-Entsprechung zwischen Makrobefehlen und Mikrobefehlen
gibt.
-
Es
wird noch auf 1 Bezug genommen; das Front-End 12 decodiert
die Makrobefehle in Mikrobefehle und speichert sie in die Warteschlange 15.
Das Back-End 14 führt
die Befehle aus, wie sie von dem Front-End 12 vorbereitet
und in der Warteschlange 15 gespeichert worden sind. Im
folgenden sollen sich Befehle auf Mikrobefehle oder Befehle beziehen,
die auf einer der im Back-End 14 angeordneten Ausführungseinheiten
ausführbar
sind.
-
Es
wird noch auf 1 Bezug genommen; eine Ausgabegruppe
ist ein Satz von Befehlen oder Mikrobefehlen, der aus der Warteschlange 15 zur
parallelen Ausführung
verteilt oder abgefertigt (dispatched) wird. Die Ausgabegruppe kann
einen oder mehrere Mikrobefehle aufweisen. Bei einigen Ausführungsbeispielen
werden die Mikrobefehle einer Ausgabegruppe in die Warteschlange 15 während eines
Taktzyklus geschrieben. Die in der Warteschlange 15 gespeicherten
Mikrobefehle definieren einen Zwischenzustand der Pipeline 10,
der wiederholt werden kann, wie vollständiger unten erörtert wird.
-
2A veranschaulicht
ein spezielles Ausführungsbeispiel 35 der
Warteschlange 15 gemäß 1.
Die Warteschlange 35 weist genug Spalten 33 auf,
um verschiedene parallele Ausführungsports oder
Einheiten (die beide nicht gezeigt sind) des Back-End 14 zu
speisen. Der Prozessor 10 gemäß 1 verteilt
den Mikrobefehl jeder Spalte 33 der Warteschlange 35 auf
eine getrennte Ausführungseinheit.
Bei einigen Ausführungsbeispielen
ist die Anzahl der Spalten 33 gleich der Anzahl der parallelen Ausführungseinheiten
in der Prozessor-Pipeline 10. Bei anderen Ausführungsbeispielen
speist die Warteschlange 35 nur einen Abschnitt der Ausführungseinheiten.
Beispielsweise enthält
ein Ausführungsbeispiel
N parallele arithmetisch-logische Einheiten (ALUs), und die Warteschlange 35 weist
N Spalten 33 auf, wobei jede Spalte eine separate ALU speist.
-
Gemäß 2A enthält die Warteschlange 35 eine
Spalte pro paralleler Ausführungseinheit, aber
es können
auch andere geeignete Strukturen benutzt werden. Einige Ausführungsbeispiele
benutzen N Warteschlangen 35, wobei jede Mikrobefehle zu
einer Ausführungseinheit
abfertigt bzw. verteilt. Die Warteschlange 35 gemäß 2A ist
eine Master-Warteschlange, welche die Mikrobefehle für jede Ausführungseinheit
in dem Back-End 14 speichert.
-
Es
wird noch auf 2A Bezug genommen; die Warteschlange 35 weist
ausreichend Zeilen auf, um die Mikrobefehle jedes nicht-abgeschlossenen (unretired)
Befehls in dem Back-End 14 zu speichern. Jede Zeile der
Warteschlange 35 speichert eine Ausgabegruppe von Mikrobefehlen.
In der Warteschlange 35 werden die Mikrobefehle nicht überschrieben, bis
für die
Makrobefehle, aus welchen sie herrühren, entschieden wird, daß sie abgeschlossen
(retired) werden. Somit speichert die Warteschlange 35 einen Zwischenzustand
des Back-End 14 der Pipeline 10. Der Zwischenzustand
repräsentiert
die Mikrobefehle zwischen der Abfertigungsstufe (Dispatch-Stufe)
und dem abschließenden
oder abgeschlossenen (retired) Zustand. Das Back-End 14 kann
aus dem Zwischenzustand, der in der Warteschlange 35 gespeichert
ist, wiederholt werden, ohne daß die
gesamte Pipeline 10 wiederholt werden muß.
-
Es
wird noch auf 2A Bezug genommen; die Warteschlange 35 ist
zirkular und enthält
einen Kopfzeiger 34, einen Endzeiger 36 und einen
Wiederholzeiger 38. Der Kopfzeiger 34 zeigt auf
den "Kopf" der Warteschlange 35 oder
diejenige Zeile, in die neue Mikrobefehle in die Warteschlange 35 geschrieben
werden. Der Endzeiger 36 zeigt auf die als nächstes an
das Back-End 14 zur Ausführung zu verteilende Zeile
oder Ausgabegruppe von Mikrobefehlen. Der Wiederholzeiger 38 zeigt
auf die Zeile, die die erste Ausgabegruppe von Mikrobefehlen enthält, die
in Erwiderung einer Wiederholanforderung abzufertigen oder zu verteilen
ist, welche bei diesem speziellen Ausführungsbeispiel die älteste nicht
ausgeschiedene (unretired) Ausgabegruppe der Warteschlange 35 ist.
Um eine Back-End-Wiederholung zu starten, kopiert die Pipeline 10 den
Wiederholzeiger 38 in den Endzeiger 36. Dies positioniert
den Endzeiger 36 so, daß die Mikrobefehle der ältesten
nicht ausgeschiedenen Ausgabegruppe zu der als nächstes aus der Warteschlange 35 verteilten
Ausgabegruppe werden.
-
In 2A wird
der Kopfzeiger 34 inkrementiert, wenn neue Mikrobefehle
in die Warteschlange 35 geschrieben werden. In ähnlicher
Weise wird der Endzeiger 36 inkrementiert, wenn Mikrobefehle
aus der Warteschlange 35 gelesen werden. Schließlich wird
der Wiederholzeiger 38 inkrementiert, wenn jeweils Mikrobefehle
ausgeschieden (retired) werden. Mikrobefehle aus ausgeschiedenen
oder abgeschlossenen Befehlen werden überschrieben, wenn der Zeiger 34 inkrementiert
wird, so daß die
Zeilen der Warteschlange 35 neu verwendet werden. Wenn einer
der Zeiger 34, 36 oder 38 den letzten
Eintrag in der Warteschlange erreicht, wird der Zeiger so inkrementiert,
daß er
zu dem ersten Eintrag in der Warteschlange 35 umläuft, wodurch
die Warteschlange 35 zu einem zirkularen Puffer gemacht
wird. Bei dem Ausführungsbeispiel
gemäß 2A läuft der
Endzeiger 36 typischerweise dem Kopfzeiger 34 hinterher, und
der Wiederholzeiger 38 läuft dem Endzeiger 36 hinterher.
-
Es
wird noch auf 2A Bezug genommen; die Warteschlange 35 ist
leer, wenn der Kopfzeiger 34 gleich dem Endzeiger 36 ist.
Bei einigen Ausführungsbeispielen
weisen der Kopfzeiger 34 und der Endzeiger 38 jeweils
ein zusätzliches
Bit auf. Wenn der Kopfzeiger 34 und der Wiederholzeiger 38 gleich sind
und die zusätzlichen
Bits verschieden sind, ist die Warteschlange 35 voll. Wenn
der Kopfzeiger 34 und der Wiederholzeiger 38 gleich
sind und die zusätzlichen
Bits ebenfalls gleich, ist die Warteschlange 35 leer. Bei
einem alternativen Ausführungsbeispiel ist
eine leere Zeile zum Erfassen eines Zustands der vollen Warteschlange
reserviert, und der Kopfzeiger 34 ist um Eins geringer
als der Wieder holzeiger 38, wenn die Warteschlange 35 voll
ist. Bei einigen Ausführungsbeispielen
wird die vollständige
Pipeline 10 wiederholt, wenn die Warteschlange 35 voll
wird.
-
2B veranschaulicht
ein zweites Ausführungsbeispiel 35' der Warteschlange 15 gemäß 1.
Jede Spalte 33' der
Warteschlange 35' ist
ein Schieberegister. Die Warteschlange 35' verwendet nur Kopf- und Endzeiger 34', 36' und schiebt
jede Zeile von Mikrobefehlen, das heißt jede Ausgabegruppe, in Erwiderung
des Abschließens
(retiring) einer Zeile von Mikrobefehlen physikalisch nach unten. Die älteste nicht-abgeschlossene
Ausgabegruppe von Mikrobefehlen befindet sich folglich in der Bodenzeile 39 der
Warteschlange 35'.
Somit ist der Wiederholzeiger 38 des Ausführungsbeispiels
gemäß 2A im
Endeffekt die Bodenzeile 39 der Warteschlange 35'. Im übrigen funktioniert
die Warteschlange 35' gemäß 2B ähnlich der
Warteschlange 35 gemäß 2A.
-
Wenden
wir uns 3A zu; das Front-End 12 der
nicht-anhaltbaren
Pipeline 10 gemäß 1 enthält zumindest
Abruf- und Decodierstufen 16, 18. Das Front-End 12 kann
ein beliebiges geeignetes Design aufweisen, das im Stand der Technik
bekannt ist, solange das Front-End 12 Makrobefehle aus
dem Speicher abruft und Mikrobefehle in die Warteschlange 15 einschreibt.
Bei den verschiedenen Ausführungsbeispielen
kann das Front-End 12 weitere Stufen und/oder Merkmale
enthalten.
-
Es
wird noch auf 3A Bezug genommen; das Back-End 14 enthält ebenfalls
mehrere Stufen 30, 32 der Verarbeitung. Das Back-End 14 enthält eine
Ausführungsstufe 30 und
eine Abschluß-
oder Retirementstufe 32. Das Back-End 14 empfängt die aus
der Warteschlange 15 abgefertigten oder verteilten Mikrobefehle,
führt die
verteilten Mikrobefehle aus und schließt die ausgeführten Befehle
ab. Die Retirement-Stufe 32 überprüft und erfaßt Ausführungsprobleme, das heißt Ausnahmen.
Alternative Ausführungsbeispiele
können
zusätzliche
Stufen und Merkmale enthalten, was von der speziellen Implementierung
abhängig
ist.
-
Es
wird noch auf 3A Bezug genommen; die Stufen 16, 18, 30 und 32 der
obigen Pipeline 10 sind bloß repräsentativer Natur und sind weder
abschließend
noch erschöpfend
für Stufen,
die bei verschiedenen alternativen Ausführungsbeispielen vorhanden
sein könnten.
Darüber
hinaus sind, wie es Fachleuten klar ist, die Abgrenzungen der Stufen 16, 18, 30 und 32 und
die Funktionen in der Prozessor-Pipeline 10 nicht notwendigerweise
so scharf oder ausgeprägt,
wie es aus 3 erscheinen könnte. Die
Pipeline 10 in 1 ist aus Gründen der Klarheit beim Erläutern der
vorliegenden Erfindung konzeptioniert. So ist die genaue Struktur
des Front-End 12 und
des Back-End 14 bezüglich
der Stufen für
die Ausführung
der Erfindung nicht wesentlich.
-
Es
wird noch auf 3A Bezug genommen; das Back-End 14 der
Pipeline ist nicht-anhaltbar. Das Voranschreiten durch das Back-End 14 wird
durch Flip-Flops und/oder gestufte Dominoschaltungen (die beide
nicht gezeigt sind) gesteuert, die frei laufen. Dadurch, daß das Back-End 14 nicht-anhaltbar
gemacht worden ist, werden Zeitverzögerungen beseitigt, die dem
Betreiben eines Anhalte-Steuernetzwerks zugeordnet sind. Durch Beseitigen
des Anhalte-Steuernetzwerks (stall control networks), können einige
Ausführungsbeispiele
die Betriebsfrequenz der Pipeline 10 substantiell erhöhen. Der
Begriff "nicht-anhaltbar", so wie er hier
verwendet wird, bezieht sich auf eine Pipeline oder einen Teil davon,
der bzw. die in Erwiderung eines Ausführungsproblems einer Flush-Operation
unterzogen (freigespült)
und wiederholt wird, statt ihn bzw. sie anzuhalten. Bei einigen
Ausführungsbeispielen
ist die gesamte Pipeline 10 nicht-anhaltbar.
-
Es
wird noch auf 3A Bezug genommen; das Back-End 14 macht
Vorhersagen, die spekulative Daten- und Steuerungsabhängigkeiten
auflösen, die
zum Ausführen
der Mikrobefehle benötigt
werden. Nach der Ausführung
werden die Mikrobefehle und die sich daraus ergebenden Resultate
vorübergehend
gespeichert, um das Festschreiben (commitment) in einen Architekturzustand
abzuwarten. Das Festschreiben in den Architek turzustand umfaßt das Überprüfen, ob
Probleme auftraten und ob die Vorhersagen korrekt waren. Die Problemüberprüfung kann
in irgendeiner im Stand der Technik bekannten geeigneten Weise ausgeführt werden
und kann implementierungsspezifisch sein. Die genaue Art und Weise,
auf welche Probleme überprüft werden,
ist nicht Gegenstand der vorliegenden Erfindung. Wenn ein Problem
oder eine unrichtige Vorhersage entdeckt wird, werden die spekulativen
Ausführungsergebnisse
vernichtet oder ignoriert. Dann wird das Back-End 14 der
Pipeline 10 leergespült
oder entleert, das heißt
die Pipeline 10 wird entweder zurückgesetzt oder es wird sämtlichen
Befehlen in dem Back-End 14 ermöglicht, die Ausführung abzuschließen, und
die Register werden zurückgesetzt.
-
Beispielhafte
Probleme bei einem speziellen Ausführungsbeispiel umfassen:
- (1) einen Cache-Fehlversuch;
- (2) eine Verzweigungs- oder Prädikat-Fehlvorhersage;
- (3) eine Ausnahme, wie beispielsweise ein Seitenfehler oder
ein illegaler Befehl;
- (4) einen Fehlversuch im Übersetzungsnachschlageregister
(TLB); und
- (5) bestimmte Datenabhängigkeiten,
wie beispielsweise Lade/Speichere-Konflikte.
-
Darüber hinaus
können
bei einigen Ausführungsbeispielen
einige Probleme ohne eine Wiederholung im Back-End behandelt werden.
Diese Variationen sind sämtlich
implementierungsspezifisch und für
die vorliegende Erfindung nicht wesentlich.
-
Sobald
ein Problem erfaßt
wird, werden das Problem und seine Auswirkungen repariert. Wiederum
kann die Reparatur implementierungsspezifisch sein. Beispielhafte
Probleme und Reparaturaktivitäten
umfassen:
- (a) eine Prädikatfehlvorhersage, wobei
das richtige Prädikat
für die
Wiederholung eingesetzt werden muß; oder
- (b) einen Lade-Speichere-Konflikt, wobei das Speichern abgeschlossen,
der Cache aktualisiert und dann der richtige Wert geladen werden
muß.
-
Eine
Problemreparatur kann schnell ausgeführt werden, da die Warteschlange 15 gemäß 1 den
Zwischenzustand der Pipeline 10 gemäß 1 speichert.
So kann das Problem identifiziert und in der Warteschlange 15 korrigiert
werden, und der Befehlsstrom wird wiederholt. Die Auswirkungen des Problems
werden bei der Wiederholung korrigiert.
-
Es
wird jetzt auf 3A Bezug genommen; das Back-End 14 wird
aus den Mikrobefehlen der Warteschlange 15 wiederholt (replayed).
Die Erfassung eines Ausführungsproblems
durch die Retirement-Stufe 32 erzeugt die Wiederholanforderung. Die
Retirement-Stufe 32 führt über den
Kanal 17 eine Wiederholanforderung an die Warteschlange
aus. Bei dem Ausführungsbeispiel
gemäß 2A kopiert die
Pipeline 10 den Wiederholzeiger 38 in den Endzeiger 36,
um das Wiederholen zu starten. Dann wird die Ausführung der
Mikrobefehle aus der Warteschlange 15 in der oben beschriebenen
Weise wieder aufgenommen. Das Erfassen eines Ausführungsproblems
bewirkt darüber
hinaus ein Leerspülen
des Back-End 14 und der darin gespeicherten spekulativen
Ausführungsergebnisse.
Ergebnisse aus den Befehlen, die zwischen dem Befehl mit einem Ausführungsproblem
und den wiederholten Befehlen angeordnet sind, werden nicht in den
Architekturzustand festgeschrieben.
-
Es
wird auf 3A Bezug genommen; die Ergebnisse
der Neuausführung
werden spekulativ gespeichert und nach Ausführungsproblemen überprüft. Wenn
auch das Problem, das die Wiederholung verursachte, nicht erneut
auftreten sollte, könnten andere
Ausführungsprobleme
auftreten. Wenn ein neues Problem erfaßt wird, wird eine weitere
Wiederholung angefordert, wie oben ausgeführt wurde. Die Pipeline 10 erzeugt
schließlich
problemfreie Ergebnisse, die in einen Architekturzustand festgeschrieben
werden können.
Jede Iteration der Wiederholung des Back-End 14 rückt die
betrachtete Ausgabegruppe in Richtung des Abschlusses der darin
enthaltenen Befehle.
-
3B veranschaulicht
ein Ausführungsbeispiel
der Retirement-Hardware 31 für die Retirement-Stufe 32 gemäß 3A. Die
Retirement-Hardware 31 enthält eine Retirement-Logik 20,
einen spekulativen Registersatz 22, einen Architekturregistersatz 24 und
kann außerdem
eine Maske 25 enthalten. Die Ergebnisse aus ausgeführten Befehlen
werden vorübergehend
in dem spekulativen Registersatz 22 gespeichert. Die Retirement-Logik 20 bestimmt,
ob irgendwelche Ausführungsprobleme
während
der Ausführung
der Befehle auftraten, die den Ausführungsergebnissen entsprechen,
die in dem spekulativen Registersatz 22 gespeichert sind.
Wenn die Retirement-Logik 20 feststellt, daß keine
Ausführungsprobleme
auftraten, schreibt die Retirement-Logik 20 die Ausführungsergebnisse
aus dem spekulativen Registersatz 22 in den Architekturregistersatz 24 und
schließt
den Befehl ab (retires). Wenn die Retirement-Logik 20 feststellt,
daß ein
Problem auftrat, veranlaßt
die Retirement-Logik 20 eine Back-End-Wiederholung, statt
die Ergebnisse in den Architekturregistersatz 22 einzuschreiben.
-
Es
wird noch auf 3B Bezug genommen; einige Ausführungsbeispiele
benutzen eine Maske 25 derart, daß "partielle" Pipeline-Wiederholungen in Erwiderung
von Ausführungsproblemen
durchgeführt werden
können.
Eine partielle Wiederholung führt
Mikrobefehle eines Abschnitts der Spalten der Warteschlange 35 gemäß 2A oder
der Warteschlange 35' gemäß 2B neu
aus. Partielle Wiederholungen werden in Erwiderung eines Ausführungsproblems
an einem Mikrobefehl durchgeführt,
der zu dem Abschnitt der Spalten gehört, die neu ausgeführt werden
sollen. Die Zeilen 27 der Maske 25 zeigen Spalten
von Mikrobefehlen an, die Ausführungsprobleme
antrafen oder die möglicherweise
von Mikrobefehlen abhängigen,
bei denen Ausführungsprobleme
auftraten. Beispielsweise kann die Maske 25 ein Wiederholen
oder erneutes Ausführen
derjenigen Spalte von Mikrobefehlen ermöglichen, die zu der einzelnen
Ausführungseinheit
gesendet wurden, die das Problem registrierte. Spalten von Befehlen,
die von den Spalten, bei denen ein Ausführungsproblem auftrat, nicht
abhän gig
sind, können
normal abgeschlossen werden und könnten bei einer "partiellen" Wiederholung nicht
neu ausgeführt
werden.
-
Es
wird noch auf 3B Bezug genommen; die Retirement-Logik 20 hält eine
Maske 25 aufrecht, um anzuzeigen, welche Befehle ein Ausführungsproblem
antrafen. Die Maske 25 enthält eine Serie von Einsen und
Nullen zum Anzeigen derjenigen speziellen Befehle, die auf Ausführungsprobleme
stießen. Nach
dem Lesen der Maske 25 ordnet die Retirement-Logik 20 Wiederholungen
der Befehle aus einer Untermenge der Spalten 33 gemäß den 2A oder 2B an.
Die Untermenge der erneut auszuführenden
Spalten kann eine echte Untermenge sein, das heißt weniger als sämtliche
Spalten 33. Bei einem Ausführungsbeispiel weist die Warteschlange 15 N
Spalten 33 auf, die N parallelen Ausführungsports oder -Einheiten
(die nicht gezeigt sind) entsprechen. Bei diesem Ausführungsbeispiel
enthält
die Maske 25 N binäre
Stellen, das heißt
jeweils ein Bit für
jede parallele Ausführungseinheit.
Die Maskendaten sind ein Index, der die Spalten der Warteschlange 15 anzeigt
und diejenigen Ausführungsports,
bei denen ein Problem auftrat.
-
Gemäß den 3B und 2A sendet
die Retirement-Logik 20 eines Ausführungsbeispiels die Maskendaten
und eine Wiederholanforderung an die Warteschlange 35 in
Erwiderung des Erfassens eines Ausführungsproblems. In Erwiderung
des Empfangs der Wiederholanforderung wird der Endzeiger 36 der
Warteschlange 35 neu positioniert, wie es oben erörtert worden
ist. Dann findet eine Wiederholung selektiv für diejenigen Spalten 33 der
Warteschlange 35 statt, für welche die Maskendaten anzeigen,
daß Ausführungsprobleme
auftraten. Befehle aus anderen Spalten werden nicht erneut ausgeführt.
-
4A veranschaulicht
ein Verfahren 40 des Ausführens von Befehlen in einem
Back-End-Abschnitt einer Pipeline, beispielsweise in dem die Ausführungsstufen
des Back-End 14 gemäß den 3A und/oder 3B enthaltenden
Abschnitt. Bei einem Ausführungsbeispiel
ist der Back-End-Abschnitt der Pipeline nicht-anhaltbar. Am Block 41 verteilt
die Pipeline 10 eine Mehrzahl von Befehlen in der Back-End-Pipeline,
ohne zu bestimmen, ob die Stufen der Pipeline zum Empfangen der
Befehle bereit sind, und führt
sie aus. Als Beispiel für
den Block 41 gibt die Pipeline 10 gemäß 3A eine
Mehrzahl von Ausgabegruppen sequentiell aus der Warteschlange 15 zu
dem Back-End 14 aus. Die Warteschlange 15 verteilt
Befehle, und die Befehle werden in der Ausführungsstufe 30 ausgeführt, ohne
daß überprüft wird,
ob die verschiedenen Stufen darin bereit sind. Am Block 42 bestimmt
die Retirement-Stufe 32, ob bei den ausgeführten Befehlen
ein Ausführungsproblem
auftrat. Beispielsweise kann dieser Schritt umfassen, daß bestimmt
wird, ob ein Ausführungsproblem
bei Befehlen einer Ausführungsgruppe auftrat.
Am Block 44 wiederholt die Warteschlange 15 einen
Teil der ausgeführten
Befehle, wenn bestimmt wird, daß bei
dem Teil ein Ausführungsproblem
auftrat. Bei einigen Ausführungsbeispielen
ist dieser Teil eine gesamte Ausgabegruppe. Bei anderen Ausführungsbeispielen
ist der Teil eine echte Teilmenge der gesamten Ausgabegruppen. Bei
dem letztgenannten Ausführungsbeispiel
behält
die Retirement-Stufe 32 die Ergebnisse aus denjenigen Befehlen
ein, bei denen keine Probleme auftraten, wobei die Ausführungsergebnisse
daraus in einen Architekturzustand festgeschrieben werden. Bei einem Ausführungsbeispiel
umfaßt
das Festschreiben das Schreiben der Ergebnisse in den Architekturregistersatz 24 gemäß 3B.
-
Gemäß den 3B und 4A ist
das Verfahren Veränderungen
zugänglich.
Die Ergebnisse aus den problemlos ausgeführten Befehlen können bei
verschiedenen alternativen Ausführungsbeispielen
beibehalten werden, indem die Ergebnisse in einen Architekturregistersatz 24 festgeschrieben
oder die Ergebnisse in dem spekulativen Registersatz 22 gehalten
werden. In dem letztgenannten Fall werden die Inhalte des spekulativen
Registersatzes 22 in den Architekturregistersatz 24 festgeschrieben,
wenn mehrere Befehle problemlos ausgeführt worden sind.
-
4B veranschaulicht
ein weiteres Verfahren 45 zum Ausführen von Befehlen in einer
nicht-anhaltbaren Pipeline, beispielsweise der Pipeline 10 gemäß 3A.
Am Block 46 führt
die Pipeline 10 spekulativ eine Ausgabegruppe von Befehlen
aus. Am Block 47 bestimmt die Retirement-Stufe 32,
ob bei irgendeinem Befehl der Ausgabegruppe ein Ausführungsproblem
auftrat. Am Block 48 sendet die Retirement-Logik 20 eine
Anzeige darüber,
bei welchen der spekulativ ausgeführten Befehlen Ausführungsprobleme
auftraten, an einen vorgegebenen Wiederholungspunkt der Pipeline 10,
beispielsweise, indem Daten aus der Maske 25 gesendet werden.
Der Wiederholungspunkt kann die Warteschlange 15 gemäß den 1 und 3A sein.
Am Block 49 wiederholt die Pipeline 10 diejenigen
Befehle, bei denen Ausführungsprobleme
auftraten, indem beispielsweise die relevanten Befehle aus der Warteschlange 15 an
die Ausführungseinheiten
(die nicht gezeigt sind) verteilt werden. Am Block 50 schreibt
die Retirement-Logik 20 gemäß 3B Ergebnisse
aus den Befehlen, bei denen keine Ausführungsprobleme auftraten, in
den Architekturregistersatz 35 gemäß 3B fest
und bringt diese Befehle zum Abschluß.
-
Das
Verfahren gemäß 4B kann
darüber hinaus
ein Einreihen der Befehle in Warteschlangen an verschiedenen Punkten
in der Pipeline 10 umfassen. Beispielsweise können die
Befehle nach dem Decodieren in eine Warteschlange eingereiht werden.
Darüber
hinaus kann das Wiederholen derjenigen Befehle, bei denen ein Ausführungsproblem
auftrat, das Wiederholen eines Abschnitts einer Prozessor-Pipeline,
beispielsweise eines Back-End, umfassen.
-
Es
wird wieder auf 3A Bezug genommen; der Befehlsdurchsatz
der Prozessor-Pipeline 10 kann erhöht werden, indem anstelle der
vollständigen
Pipeline 10 das Back-End wiederholt wird. Bei einigen Ausführungsbeispielen
kann das Wiederholen der vollständigen
Prozessor-Pipeline 10 zweimal soviele Taktzyklen benötigen, wie
eine Back-End-Wiederholung, da das Front-End 12 der Prozessor-Pipeline 10 eine große Anzahl
von Stufen aufweist. Unter diesen Umständen kann das Praktizieren
der Erfindung die benötigte
Zeit halbieren, indem Ausführungsprobleme
durch eine Back-End-Wiederholung korrigiert werden.
-
Die
oben offenbarten speziellen Ausführungsbeispiele
dienen nur der Veranschaulichung, da die Erfindung modifiziert und
auf verschiedene, aber äquivalente
Weisen ausgeführt
werden kann, die Fachleuten auf dem Gebiet klar werden, sofern sie den
Vorteil der hier gegebenen Lehren haben. Darüber hinaus sind keine Einschränkungen
auf solche Details der Konstruktion und der Gestaltung beabsichtigt,
wie sie hier gezeigt sind, mit Ausnahme solcher, die in den anhängigen Ansprüchen beschrieben sind.
Es ist folglich klar, daß die
oben offenbarten speziellen Ausführungsbeispiele
geändert
oder modifiziert werden können,
und daß sämtliche
derartige Variationen als innerhalb des Umfangs und Geistes der
Erfindung liegend angesehen werden. Demzufolge ergibt sich der gewünschte Schutz
aus den unten angegebenen Ansprüchen.