DE10083848B4 - Eine Prozessorpipline mit einer Befehlswiederholung - Google Patents

Eine Prozessorpipline mit einer Befehlswiederholung Download PDF

Info

Publication number
DE10083848B4
DE10083848B4 DE10083848T DE10083848T DE10083848B4 DE 10083848 B4 DE10083848 B4 DE 10083848B4 DE 10083848 T DE10083848 T DE 10083848T DE 10083848 T DE10083848 T DE 10083848T DE 10083848 B4 DE10083848 B4 DE 10083848B4
Authority
DE
Germany
Prior art keywords
execution
commands
pipeline
queue
instructions
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE10083848T
Other languages
English (en)
Other versions
DE10083848T1 (de
Inventor
Edward T. San Jose Grochowski
Derrick C. Foster City Lin
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 DE10083848T1 publication Critical patent/DE10083848T1/de
Application granted granted Critical
Publication of DE10083848B4 publication Critical patent/DE10083848B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative 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/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/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

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)

Abstract

Verfahren zum Verarbeiten von Befehlen in einem superskalaren Prozessor mit einer Verarbeitungspipeline,
wobei mehrere Befehle parallel an einen nicht-anhaltbaren Pipelineabschnitt, der mehrere parallele Ausführungseinheiten aufweist, verteilt werden, ohne vorab zu bestimmen, ob der nicht-anhaltbare Pipelineabschnitt zum erfolgreichen Abschluss der Ausführung bereit ist,
wobei die mehreren Befehle in dem nicht-anhaltbaren Pipelineabschnitt ausgeführt werden und danach bestimmt wird, ob bei der Ausführung Ausführungsprobleme auftraten, wobei festgestellt wird, bei welchen der parallel verteilten Befehle Ausführungsprobleme auftraten, und
wobei dann, wenn festgestellt wird, dass Ausführungsprobleme auftraten, nur diejenigen Befehle der parallel verteilten Befehle parallel wiederholt werden, bei denen Ausführungsprobleme auftraten.

Description

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

Claims (12)

  1. Verfahren zum Verarbeiten von Befehlen in einem superskalaren Prozessor mit einer Verarbeitungspipeline, wobei mehrere Befehle parallel an einen nicht-anhaltbaren Pipelineabschnitt, der mehrere parallele Ausführungseinheiten aufweist, verteilt werden, ohne vorab zu bestimmen, ob der nicht-anhaltbare Pipelineabschnitt zum erfolgreichen Abschluss der Ausführung bereit ist, wobei die mehreren Befehle in dem nicht-anhaltbaren Pipelineabschnitt ausgeführt werden und danach bestimmt wird, ob bei der Ausführung Ausführungsprobleme auftraten, wobei festgestellt wird, bei welchen der parallel verteilten Befehle Ausführungsprobleme auftraten, und wobei dann, wenn festgestellt wird, dass Ausführungsprobleme auftraten, nur diejenigen Befehle der parallel verteilten Befehle parallel wiederholt werden, bei denen Ausführungsprobleme auftraten.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass die Ergebnisse der nicht wiederholten Befehle beibehalten und die Ergebnisse der wiederholten Befehle einem flushing unterzogen werden.
  3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass die mehreren, parallelen an den nicht-anhaltbaren Pipelineabschnitt verteilten Befehle eine Ausgabegruppe von Befehlen sind, wobei an jeweils einer Ausgabegruppe bestimmt wird, ob Ausführungsprobleme auftraten.
  4. Verfahren nach einem der Ansprüche 1 bis 2, dadurch gekennzeichnet, dass die Ergebnisse aus der Ausführung der nicht wiederholten Befehle aus spekulativen Registern in Architekturregister geschrieben werden, sobald bestimmt wurde, dass bei diesen Befehlen kein Ausführungsproblem auftrat.
  5. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass der nicht-anhaltbare Pipelineabschnitt eine Back-End-Pipeline ist, wobei einem Wiederholungspunkt in der Pipeline angezeigt wird, bei welchen der ausgeführten Befehle ein Ausführungsproblem auftrat; und die angezeigten Befehle aus dem Wiederholungspunkt für eine erneute Ausführung neu verteilt werden.
  6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, dass aufeinander folgender Ausgabegruppen von Befehlen in Zeilen einer Warteschlange gespeichert werden.
  7. Verfahren nach Anspruch 5, dadurch gekennzeichnet, dass die von den Ausführungsproblemen betroffenen Befehle dem Wiederholungspunkt angezeigt werden, indem Maskendaten aus einer Retirement-Stufe zu einer Warteschlange gesendet werden, wobei die Maskendaten Befehle anzeigen, bei denen ein Ausführungsproblem auftrat.
  8. Prozessor-Pipeline (10) zum Verarbeiten von Befehlen in einem superskalaren Prozessor, aufweisend: ein Front-End (12), das eine Mehrzahl von Befehlen abrufen und zur Ausführung vorbereiten kann, ein Back-End (14) mit einer Mehrzahl paralleler Ausführungseinheiten, wobei das Back-End (14) nicht-anhaltbar ist, eine zwischen dem Front-End und dem Back-End angeordnete Warteschlange (15, 35), die aus dem Front-End (12) Befehle empfängt und an das Back-End (14) weitergibt und in Form eines Zwischenzustands zum Zwecke der Möglichkeit einer Wiederholung durch das Back-End (14) speichert, wobei jeweils eine Mehrzahl von Befehlen parallel an das Back-End (14) ausgegeben wird; und einen Kanal (17) zum Senden eines Anforderungssignals zum Anfordern einer Wiederholung an die Warteschlange (15, 35) derart, dass das Signal eine partielle Wiederholung ei nes Teils der parallel ausgegebenen Befehle anzeigt, wobei dieser Teil diejenigen Befehle umfasst, bei denen ein Ausführungsproblem aufgetreten ist.
  9. Die Prozessor-Pipeline nach Anspruch 8, dadurch gekennzeichnet, dass das die partielle Wiederholung anzeigende Signal eine Maske zum Anzeigen derjenigen Befehle umfasst, bei denen ein Ausführungsproblem auftrat.
  10. Die Prozessor-Pipeline nach Anspruch 8 oder 9, dadurch gekennzeichnet, dass die Warteschlange enthält: eine Mehrzahl von Zeilen, wobei jede Zeile eine Ausgabegruppe von Befehlen aus dem Front-End speichert; einen ersten Zeiger auf eine der Zeilen zum Speichern der nächsten Ausgabegruppe von Befehlen, die in der Warteschlange gespeichert werden sollen; und einen zweiten Zeiger auf die nächste Zeile von Befehlen, die aus der Warteschlange verteilt werden sollen.
  11. Prozessor-Pipeline nach Anspruch 10, dadurch gekennzeichnet, dass das Back-End eine Ausführungsstufe aufweist, die eine Mehrzahl von parallelen Ausführungsports aufweist, und wobei die Warteschlange jeweils eine Spalte für jeden parallelen Ausführungsport aufweist, wobei jeder Ausführungsport Befehle aus einer der Spalten empfangen soll.
  12. Prozessor-Pipeline nach Anspruch 11, gekennzeichnet durch eine Retirement-Stufe zum Senden einer Maske an die Warteschlange, wenn ein Ausführungsproblem gefunden wird, wobei die Maske dazu dient zu bestimmen, welche der Spalten wiederholt werden sollen.
DE10083848T 1999-01-14 2000-01-05 Eine Prozessorpipline mit einer Befehlswiederholung Expired - Fee Related DE10083848B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/231,426 1999-01-14
US09/231,426 US6205542B1 (en) 1997-12-24 1999-01-14 Processor pipeline including replay
PCT/US2000/000222 WO2000042503A1 (en) 1999-01-14 2000-01-05 A processor pipeline including instruction replay

Publications (2)

Publication Number Publication Date
DE10083848T1 DE10083848T1 (de) 2002-03-07
DE10083848B4 true DE10083848B4 (de) 2007-12-06

Family

ID=22869201

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10083848T Expired - Fee Related DE10083848B4 (de) 1999-01-14 2000-01-05 Eine Prozessorpipline mit einer Befehlswiederholung

Country Status (7)

Country Link
US (1) US6205542B1 (de)
KR (1) KR100472346B1 (de)
CN (1) CN1137435C (de)
AU (1) AU2406300A (de)
DE (1) DE10083848B4 (de)
GB (1) GB2361564B (de)
WO (1) WO2000042503A1 (de)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6625756B1 (en) * 1997-12-19 2003-09-23 Intel Corporation Replay mechanism for soft error recovery
US6047370A (en) * 1997-12-19 2000-04-04 Intel Corporation Control of processor pipeline movement through replay queue and pointer backup
IL125273A (en) * 1998-07-08 2006-08-20 Marvell Israel Misl Ltd Communication architecture
US6412067B1 (en) 1998-08-11 2002-06-25 Intel Corporation Backing out of a processor architectural state
US6282636B1 (en) * 1998-12-23 2001-08-28 Intel Corporation Decentralized exception processing system
US6643767B1 (en) * 2000-01-27 2003-11-04 Kabushiki Kaisha Toshiba Instruction scheduling system of a processor
US6877086B1 (en) * 2000-11-02 2005-04-05 Intel Corporation Method and apparatus for rescheduling multiple micro-operations in a processor using a replay queue and a counter
SE0004913D0 (sv) * 2000-12-29 2000-12-29 Ericsson Telefon Ab L M Processor
US6938126B2 (en) * 2002-04-12 2005-08-30 Intel Corporation Cache-line reuse-buffer
US6950925B1 (en) 2002-08-28 2005-09-27 Advanced Micro Devices, Inc. Scheduler for use in a microprocessor that supports data-speculative execution
US7080209B2 (en) * 2002-12-24 2006-07-18 Intel Corporation Method and apparatus for processing a load-lock instruction using a relaxed lock protocol
US20040123078A1 (en) * 2002-12-24 2004-06-24 Hum Herbert H Method and apparatus for processing a load-lock instruction using a scoreboard mechanism
DE102004051967A1 (de) * 2004-10-25 2006-04-27 Robert Bosch Gmbh Verfahren, Betriebssystem und Rechengerät zum Abarbeiten eines Computerprogramms
DE102004051966A1 (de) * 2004-10-25 2006-05-04 Robert Bosch Gmbh Verfahren, Betriebssystem und Rechengerät zum Abarbeiten eines Computerprogramms
US7152155B2 (en) * 2005-02-18 2006-12-19 Qualcomm Incorporated System and method of correcting a branch misprediction
US20070028078A1 (en) * 2005-07-26 2007-02-01 Arm Limited Instruction queues in pipelined processors
US7721067B2 (en) * 2006-01-20 2010-05-18 Qualcomm Incorporated Translation lookaside buffer manipulation
US8977837B2 (en) * 2009-05-27 2015-03-10 Arm Limited Apparatus and method for early issue and recovery for a conditional load instruction having multiple outcomes
US10678542B2 (en) * 2015-07-24 2020-06-09 Apple Inc. Non-shifting reservation station
US10452434B1 (en) 2017-09-11 2019-10-22 Apple Inc. Hierarchical reservation station
US20210119812A1 (en) * 2020-12-23 2021-04-22 Intel Corporation Time-based multi-dimensional key recreation mechanism using puf technologies

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5012403A (en) * 1988-04-01 1991-04-30 Digital Equipment Corporation Apparatus and method for replaying decoded instructions
EP0654737A1 (de) * 1993-11-19 1995-05-24 Fujitsu Limited Verfahren und Vorrichtung zur Steuerung der Befehlswiederholung
US5784587A (en) * 1996-06-13 1998-07-21 Hewlett-Packard Company Method and system for recovering from cache misses

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4920477A (en) * 1987-04-20 1990-04-24 Multiflow Computer, Inc. Virtual address table look aside buffer miss recovery method and apparatus
US5297263A (en) * 1987-07-17 1994-03-22 Mitsubishi Denki Kabushiki Kaisha Microprocessor with pipeline system having exception processing features
US5307477A (en) * 1989-12-01 1994-04-26 Mips Computer Systems, Inc. Two-level cache memory system
US5428807A (en) 1993-06-17 1995-06-27 Digital Equipment Corporation Method and apparatus for propagating exception conditions of a computer system
US5421022A (en) 1993-06-17 1995-05-30 Digital Equipment Corporation Apparatus and method for speculatively executing instructions in a computer system
US5584037A (en) 1994-03-01 1996-12-10 Intel Corporation Entry allocation in a circular buffer
US5673408A (en) 1995-02-14 1997-09-30 Hal Computer Systems, Inc. Processor structure and method for renamable trap-stack
US5822574A (en) 1995-04-12 1998-10-13 Advanced Micro Devices, Inc. Functional unit with a pointer for mispredicted resolution, and a superscalar microprocessor employing the same
US5822558A (en) 1995-04-12 1998-10-13 Advanced Micro Devices, Inc. Method and apparatus for predecoding variable byte-length instructions within a superscalar microprocessor
US5765208A (en) 1995-09-29 1998-06-09 Motorola, Inc. Method of speculatively executing store instructions prior to performing snoop operations
US5933618A (en) 1995-10-30 1999-08-03 Advanced Micro Devices, Inc. Speculative register storage for storing speculative results corresponding to register updated by a plurality of concurrently recorded instruction
US5787474A (en) 1995-11-20 1998-07-28 Advanced Micro Devices, Inc. Dependency checking structure for a pair of caches which are accessed from different pipeline stages of an instruction processing pipeline
US5901308A (en) 1996-03-18 1999-05-04 Digital Equipment Corporation Software mechanism for reducing exceptions generated by speculatively scheduled instructions
US5966544A (en) * 1996-11-13 1999-10-12 Intel Corporation Data speculatable processor having reply architecture
US5870579A (en) 1996-11-18 1999-02-09 Advanced Micro Devices, Inc. Reorder buffer including a circuit for selecting a designated mask corresponding to an instruction that results in an exception
US5764971A (en) 1996-12-11 1998-06-09 Industrial Technology Research Institute Method and apparatus for implementing precise interrupts in a pipelined data processing system
US5983321A (en) 1997-03-12 1999-11-09 Advanced Micro Devices, Inc. Cache holding register for receiving instruction packets and for providing the instruction packets to a predecode unit and instruction cache
WO1998033116A2 (en) 1997-01-29 1998-07-30 Advanced Micro Devices, Inc. A line-oriented reorder buffer for a superscalar microprocessor
US5987594A (en) * 1997-06-25 1999-11-16 Sun Microsystems, Inc. Apparatus for executing coded dependent instructions having variable latencies
US6079002A (en) * 1997-09-23 2000-06-20 International Business Machines Corporation Dynamic expansion of execution pipeline stages
US6047370A (en) 1997-12-19 2000-04-04 Intel Corporation Control of processor pipeline movement through replay queue and pointer backup
US6076153A (en) 1997-12-24 2000-06-13 Intel Corporation Processor pipeline including partial replay
US6081887A (en) * 1998-05-13 2000-06-27 Compaq Computer Corporation System for passing an index value with each prediction in forward direction to enable truth predictor to associate truth value with particular branch instruction

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5012403A (en) * 1988-04-01 1991-04-30 Digital Equipment Corporation Apparatus and method for replaying decoded instructions
EP0654737A1 (de) * 1993-11-19 1995-05-24 Fujitsu Limited Verfahren und Vorrichtung zur Steuerung der Befehlswiederholung
US5784587A (en) * 1996-06-13 1998-07-21 Hewlett-Packard Company Method and system for recovering from cache misses

Also Published As

Publication number Publication date
CN1137435C (zh) 2004-02-04
GB0116269D0 (en) 2001-08-29
WO2000042503A1 (en) 2000-07-20
KR20010089588A (ko) 2001-10-06
GB2361564A (en) 2001-10-24
KR100472346B1 (ko) 2005-03-08
CN1337021A (zh) 2002-02-20
GB2361564B (en) 2003-11-26
AU2406300A (en) 2000-08-01
US6205542B1 (en) 2001-03-20
DE10083848T1 (de) 2002-03-07

Similar Documents

Publication Publication Date Title
DE10083848B4 (de) Eine Prozessorpipline mit einer Befehlswiederholung
DE69932066T2 (de) Mechanismus zur "store-to-load forwarding"
DE60109748T2 (de) Verfahren und gerät zur ausführungsunterbrechung in einem prozessor
DE2714805C2 (de)
DE2234867C2 (de) Anordnung in einer Datenverarbeitungsanlage zum Steuern der Verarbeitung zweier voneinander unabhängiger Befehlsfolgen
DE60029619T2 (de) Verfahren, vorrichtung, medium und programm zur aufnahme und zum verlassen von mehreren fäden in einem vielfadenprozessor
DE10084556B4 (de) Optimierte Ausführung von statisch sehr wahrscheinlich vorhergesagten Verzweigungsbefehlen
DE19781850B4 (de) Mikroprozessor zum spekulativen Ausführen von Befehlen aus mehreren von einem Verzweigungsbefehl angezeigten Befehlsströmen, Verfahren und Computersystem mit Mikroprozessor
DE19781995C2 (de) Prozessor mit einer Wiederhol-Architektur
DE69628480T2 (de) Ausnahmebehandlung in einem Datenprozessor
DE10085375B4 (de) Verfahren und Einrichtung für einen pipeline-verschachtelten Multi-Thread-Befehlsdecodierer
DE19983589B4 (de) Hochfrequenz-Pipeline-Entkopplungswarteschlangengestaltung
DE60036016T2 (de) Schnell multithreading für eng gekoppelte multiprozessoren
DE112018006124B4 (de) ZUSAMMENFÜHREN VON EINTRÄGEN GLOBALER ABSCHLUSSTABELLEN IN EINEM OoO-PROZESSOR
DE102014000382A1 (de) Vorhersage indirekter Abzweigungen
DE60005860T2 (de) Ablaufsteuerung zum ausgeben und wiederausgeben von ketten abhängiger befehle
DE19506435C2 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE4429921A1 (de) Verfahren und Einrichtung zur Prozessorordnung für einen Befehle ausserhalb der Reihe ausführenden Prozessor
DE112018006127B4 (de) Abschliessen von verbundenen einträgen einer globalen abschlusstabelle in einem out-of-order-prozessor
DE112010004322T5 (de) Vorhersagen und Vermeiden von Operand-Speichervorgang-Vergleich-Gefahren in Mikroprozessoren mit abweichender Reihenfolge
DE19506734A1 (de) Computersystem und Verfahren zum Aufrechterhalten der Speicherkonsistenz in einer Busanforderungswarteschlange
DE102014003799A1 (de) Systeme und Verfahren zur Übertragungseliminierung mit Bypass-Mehrfachinstanziierungstabelle
DE102013206501A1 (de) Kontroll-Punkt-versehener Puffer für Wiedereintreten aus Vorauslaufen
DE19983098B4 (de) Mehrfach-Bitanzeige zur Behandlung von Schreib-nach-Schreib-Fehlern und zur Eliminierung von Bypass-Komparatoren
DE112020005987T5 (de) Setzen von prüfpunkten in akkumulatorregister-ergebnissen in einem mikroprozessor

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20130801