DE102013224370A1 - Erneute Ausgabe von als Warteschlange aufgereihten Befehlen nach Vorlauf - Google Patents

Erneute Ausgabe von als Warteschlange aufgereihten Befehlen nach Vorlauf Download PDF

Info

Publication number
DE102013224370A1
DE102013224370A1 DE102013224370.7A DE102013224370A DE102013224370A1 DE 102013224370 A1 DE102013224370 A1 DE 102013224370A1 DE 102013224370 A DE102013224370 A DE 102013224370A DE 102013224370 A1 DE102013224370 A1 DE 102013224370A1
Authority
DE
Germany
Prior art keywords
microprocessor
queue
command
logic
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.)
Pending
Application number
DE102013224370.7A
Other languages
English (en)
Inventor
Guillermo J. Rozas
Alexander Klaiber
James Van Zoeren
Paul Serris
Brad Hoyt
Sridharan Ramakrishnan
Hens Vanderschoot
Ross Segelken
Darrell D. Boggs
Magnus Ekman
Aravindh Baktha
David Dunn
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.)
Nvidia Corp
Original Assignee
Nvidia 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 Nvidia Corp filed Critical Nvidia Corp
Publication of DE102013224370A1 publication Critical patent/DE102013224370A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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/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

Es sind hierin diverse Ausführungsformen von Mikroprozessoren und Verfahren zum Betreiben eines Mikroprozessors während eines Vorlaufbetriebs offenbart. Ein anschauliches Verfahren zum Betreiben eines Mikroprozessors umfasst das Erkennen eines Vorlauf auslösenden Ereignisses, das mit einem Vorlauf auslösenden Befehl verknüpft ist, und in Reaktion auf die Erkennung des Vorlauf auslösenden Ereignisses, das Eintreten in einen Vorlaufbetrieb und das Einfügen des Vorlauf auslösenden Befehls zusammen mit einem oder mehreren weiteren Befehlen in eine Warteschlange. Das anschauliche Verfahren umfasst ferner die Wiederaufnahme des Nicht-Vorlaufbetriebs des Mikroprozessors in Reaktion auf die Behandlung des Vorlauf auslösenden Ereignisses und die erneute Ausgabe des Vorlauf auslösenden Befehls zusammen mit dem einen oder den mehreren weiteren Befehlen aus der Warteschlange an die Ausführungslogik.

Description

  • HINTERGRUND
  • Befehle in Mikroprozessoren können zu Stillständen führen, wodurch möglicherweise die Befehlsverarbeitung verzögert wird und Ressourcen des Mikroprozessors gebunden werden. Da Stillstände häufig unvorhersagbar sind, können einige Mikroprozessoren, wenn ein erster Stillstand zu beheben es, spekulativ Befehle ausführen, um andere mögliche Stillstände aufzudecken. Obwohl eine spekulative Ausführung die Ausführung beschleunigen kann, wenn ein möglicher Stillstand erkannt wird, können ein Neustarten des Mikroprozessors nach dem Ende der spekulativen Ausführung und das Zurücksetzen des Mikroprozessors auf einen Zustand vor der spekulativen Ausführung die Ausführung verlangsamen, immer wenn eine spekulative Ausführung ausgeführt wird.
  • ÜBERBLICK
  • Es werden diverse Ausführungsformen bereitgestellt, die den Betrieb eines Mikroprozessors während eines Vorlaufs (runahead) betreffen. In einer Ausführungsform umfasst ein Verfahren zum Betreiben eines Mikroprozessors Erkennen eines einen Vorlauf auslösenden Ereignisses, das mit einem einen Vorlauf auslösenden Befehl verknüpft ist, und in Reaktion auf das Erkennen des den Vorlauf auslösenden Ereignisses, Eintreten in einen Vorlaufbetrieb (runahead Operation) und Einfügen des den Vorlauf auslösenden (runahead triggering) Befehls zusammen mit einem oder mehreren zusätzlichen Befehlen in eine Warteschlange. Das anschauliche Verfahren umfasst ferner Wiederaufnehmen des Nicht-Vorlaufbetriebs des Mikroprozessors in Reaktion auf die Behandlung des den Vorlauf auslösenden Ereignisses und erneutes Ausgeben des den Vorlauf auslösenden Befehls zusammen mit dem einen oder den mehreren zusätzlichen Befehlen aus der Warteschlange an die Ausführungslogik.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 zeigt schematisch einen anschaulichen Mikroprozessor gemäß einer Ausführungsform der vorliegenden Offenbarung.
  • 2 zeigt ein Flussdiagramm, das ein anschauliches Verfahren zum Betreiben eines Mikroprozessors gemäß einer Ausführungsform der vorliegenden Offenbarung darstellt.
  • 3 zeigt ein anschauliches Programm, das verwendet wird, um die in den 4 und 5 gezeigten Verfahren darzustellen.
  • 4 zeigt schematisch ein Verfahren zum Betreiben eines Mikroprozessors in einem Vorlauf gemäß einer Ausführungsform der vorliegenden Offenbarung.
  • 5 zeigt schematisch ein weiteres Verfahren zum Betreiben eines Mikroprozessors in einem Vorlauf gemäß einer Ausführungsform der vorliegenden Offenbarung.
  • 6 zeigt schematisch einen weiteren anschaulichen Mikroprozessor gemäß einer Ausführungsform der vorliegenden Offenbarung.
  • 7 zeigt schematisch einen weiteren anschaulichen Mikroprozessor gemäß einer Ausführungsform der vorliegenden Offenbarung.
  • DETAILLIERTE BESCHREIBUNG
  • In modernen Mikroprozessoren werden Befehle häufig in einer Pipeline ausgeführt. Derartige Befehle können individuell oder als Bündel von Mikro-Operationen an diverse Ausführungsstufen in der Pipeline ausgegeben werden. Unabhängig von der Form des Befehls bei der Ausgabe für die Verarbeitung ist bei der Ausgabe, wenn der Befehl ausgegeben wird, gegebenenfalls nicht bekannt, ob ein Fehltreffer oder eine Ausnahme während der Ausführung des Befehls auftreten wird. Es kann eine gewisse Zeit beanspruchen, um einige Fehltreffer/Ausnahmen zu behandeln, bevor der Mikroprozessor in der Lage ist, zu nachfolgenden Befehlen weiterzugehen. Somit kann der Mikroprozessor einen Stillstand erleiden, während er versucht, den zu Grunde liegenden Grund des Ereignisses mit der langen Verarbeitungszeit zu beheben. Ein nicht beschränkendes Beispiel eines üblichen Pipeline-Stillstands ist eine Ladeoperation, die zu einem Cache-Fehltreffer führt.
  • In einigen Mikroprozessoren kann ein Stillstand den Eintritt in einen Vorlauf-Betriebsmodus auslösen, der so gestaltet ist, dass andere mögliche Stillstände erkannt werden. Anders ausgedrückt, ein Mikroprozessor kann ein Ereignis mit langer Verarbeitungszeit erkennen, das veranlassen könnte, in dem Mikroprozessor einen Stillstand auszulösen. Während versucht wird, dieses Ereignis mit langer Verarbeitungszeit zu behandeln (beispielsweise das den Vorlauf auslösende Ereignis), kann der Mikroprozessor spekulativ weitere Befehle ausführen, um zu versuchen, andere mögliche Stillstände aufzudecken. Durch die Aufdeckung anderer möglicher Stillstände kann der Mikroprozessor damit anfangen, die Ereignisse mit langer Verarbeitungszeit, die diesen möglichen Stillständen zu Grunde liegen, zu behandeln, während er das den Vorlauf auslösenden Ereignis behandelt, wodurch möglicherweise Zeit eingespart wird.
  • Wie hierin verwendet ist, beschreibt ein Vorlaufbetrieb ein beliebiges geeignetes spekulatives Ausführungsschema, das aus einem Ereignis mit langer Verarbeitungszeit herrührt, wobei das Schema ausgebildet ist, ein oder mehrere andere mögliche Ereignisse mit langer Verarbeitungszeit aufzudecken, die zu Stillständen führen können. Zu nicht beschränkenden Beispielen derartiger Ereignisse mit langer Verarbeitungszeit gehören Cache-Fehltreffer (beispielsweise Speicher-Fehltreffer und/oder Lade-Fehltreffer), Fehltreffer in Translations-Nebenschaupuffern (beispielsweise Translations-Nebenschaupuffer für Befehle und/oder Daten), und gewisse Gleitkommaoperationen mit langer Verarbeitungszeit (beispielsweise anormale (denormal) Quadratwurzel-Operationen).
  • Sobald ein Vorlauf auslösendes Ereignis erkannt ist, kann der Zustand des Mikroprozessors (beispielsweise die Registerwerte und andere geeignete Zustände) als Prüfpunkte hinterlegt werden, so dass der Mikroprozessor zu dem Zustand vor dem Vorlauf zurückkehren kann, sobald das den Vorlauf auslösende Ereignis behandelt ist und der Vorlaufbetrieb endet. Die Hinterlegung der Prüfpunkte speichert den aktuellen Zustand des Mikroprozessors, wodurch es möglich ist, dass ein derartiger Zustand später wieder eingenommen wird. Die Hinterlegung der Prüfpunkte kann beispielsweise das Kopieren des Inhalts von Registern in Duplikat-Register beinhalten. Während des Vorlaufbetriebs arbeitet der Mikroprozessor in einem Arbeitszustand, übergibt aber die Ergebnisse der Befehle nicht, um eine Änderung des Zustands des Mikroprozessors zu vermeiden. Die Übergabe aktualisiert den Zustand des Mikroprozessors und kann beispielsweise das Überschreiben von Registern mit Prüfpunkten beinhalten. Nachdem das den Vorlauf auslösende Ereignis behandelt ist, verlässt der Mikroprozessor den Vorlauf und startet erneut. Im hierin verwendeten Sinne bezeichnet erneutes Starten eines Mikroprozessors die Rückkehr zu dem mit Prüfpunkten hinterlegten Zustand vor dem Vorlauf, so dass der normale Nicht-Vorlaufbetrieb wieder aufgenommen wird. Erneutes Starten eines Mikroprozessors nach einem Vorlauf bezeichnet die Wiederaufnahme der Ausführung der Befehle an der Position des Befehlsablaufs vor dem Vorlauf, so dass die Befehlsausführung nach dem erneuten Starten so weitergeht, als ob der Vorlauf nie stattgefunden hat, ungeachtet diverser Aktionen, die durchgeführt werden, um mögliche Ereignisse mit langer Verarbeitungszeit behandeln, die während des Vorlauf aufgedeckt wurden (beispielsweise Vorabholung eines Fehltreffers, usw.).
  • Typischerweise beinhaltet der Wiedereintritt in den Nicht-Vorlaufbetrieb eine erneute Ausgabe des den Vorlauf auslösenden Befehls zur Ausführung, da der frühere Versuch, den Befehl auszuführen, der den Vorlauf auslöste, nicht erfolgreich war. Jedoch kann eine erneute Abholung (re-fetching) eines Befehls aus einem Befehls-Cache-Speicher oder aus einem vereinheitlichten Cache-Speichert die Verarbeitungszeit für den Wiedereintritt in den Nicht-Vorlaufbetrieb vergrößern. Daher sind diverse Ausführungsformen hierin offenbart, die Mikroprozessoren und Verfahren zum Betreiben von Mikroprozessoren betreffen. In einem Beispiel wird ein Vorlauf auslösender Befehl erneut aus einer Warteschlange ausgegeben, nachdem der Vorlaufbetrieb beendet ist. Die erneute Ausgabe eines Vorlauf auslösenden Befehls aus einer Warteschlange anstatt diesen erneut abzuholen, kann Zeit sparen, die ansonsten für die Abholung und in einigen Anordnungen für die Dekodierung des Befehls aufzuwenden wäre.
  • Beispielsweise kann in einigen Ausführungsformen eine Warteschlange (beispielsweise eine Wiederhol-Warteschlange) mit einem ersten Zweck während des normalen Betriebs außerhalb des Vorlaufs während des Vorlaufs für einen weiteren Zweck verwendet werden. Insbesondere kann die Warteschlange wieder verwendet werden, um einen den Vorlauf auslösenden Befehl und einen oder mehrere weitere Befehle während des Vorlaufs zu halten. In einigen Ausführungsformen kann eine Wiederhol-Warteschlange für diesen Zweck während des Vorlaufs verwendet werden. In einem Szenario gemäß einer derartigen Ausführungsform kann eine Wiederhol-Warteschlange verwendet werden, um Befehle außerhalb des Vorlaufs während des normalen Betriebs zu wiederholen. Wenn ein Vorlauf auslösender Befehl angetroffen wird, dann wird dieser Befehl zusammen mit einem oder mehreren zusätzlichen Befehlen der im Zweck veränderten Wiederhol-Warteschlange hinzugefügt. Es sei weiterhin auf dieses Szenario verwiesen; die im Zweck veränderte Wiederhol-Warteschlange wird eingefroren, sobald diese Befehle hinzugefügt sind und der Vorlauf weitergeht. Beim Verlassen des Vorlaufs werden der den Vorlauf auslösende Befehl und die zusätzlichen Befehle aus der im Zweck veränderten Wiederhol-Warteschlange ausgegeben, wodurch möglicherweise die Verarbeitung nach dem Vorlauf beschleunigt wird, wie dies zuvor beschrieben ist.
  • 1 zeigt schematisch eine Ausführungsform eines Mikroprozessors 100, der in Verbindung mit den Systemen und Verfahren, die hierin beschrieben sind, verwendet werden kann. Der Mikroprozessor 100 umfasst ein Speichersystem 102, das ausgebildet ist, Befehle zu speichern, und eine Pipeline 104, die ausgebildet ist, Befehle zu verarbeiten. Weitere Details über das Speichersystem 102 sind in 7 dargestellt und sind in dem dazugehörigen Text beschrieben.
  • Das Speichersystem 102 kann ausgebildet sein, eine beliebige Art an Befehlen zu speichern. Beispielsweise können Befehle in Form von Befehlen einer Befehlssatzarchitektur (ISA), in Form von Mikro-Operationen (in einer geeigneten gebündelten Form oder ungebündelt), als Übersetzungen zugehöriger ISA-Befehle usw. gespeichert werden. In einigen Beispielen kann eine einzelne Mikro-Operation einem oder mehreren Befehlen oder einem Teil eines Befehls entsprechen. Anders ausgedrückt, ein einzelner Befehl kann als ein Bündel aus Mikro-Operationen entsprechend in einem Szenario gespeichert werden, während in einem weiteren Szenario mehrere Befehle als ein Bündel aus Mikro-Operationen gespeichert werden können. Bündel, wie sie hierin bezeichnet sind, bezeichnen eine oder mehrere Mikro-Operationen, die zusammen eine Gruppe bilden.
  • Die Pipeline 104, die in vereinfachter Form in 1 gezeigt ist, verarbeitet einen oder mehrere Befehle, die in dem Speichersystem 102 gespeichert sind, während der Programmausführung. Die Befehlsverarbeitung in Form einer Pipeline kann ermöglichen, dass ein Befehl in unterschiedlichen Stufen der Abrufung und der Ausführung gleichzeitig ist. Anders ausgedrückt, die diversen Stufen, die in der Pipeline 104 enthalten sind, machen es möglich, dass einige Befehle für die Ausführung durch vorgeordnete Stufen bereit gemacht werden, während nachgeordnete Stufen andere Befehle ausführen und noch andere Befehle abschließen.
  • Die anschauliche in 1 gezeigte Pipeline 104 umfasst eine Abhollogik (fetch logic) 106, eine Dekodierlogik 108, eine Schedulerlogik 110, eine Ausführungslogik 112 und eine Rückschreib-Logik 114. Zu beachten ist, dass die Logikbereiche, die in der Ausführungsform der in 1 gezeigten Ausführungsform der Pipeline 104 dargestellt sind, nur für anschauliche Zwecke angegeben sind und dass die Funktion, die nachfolgend detailliert beschrieben ist, auch in einer beliebigen anderen geeigneten Weise bereitgestellt werden kann. Beispielsweise umfassen einige Ausführungsformen der Pipeline 104 individuell als Pipeline betriebene Bereiche in einer oder mehreren der Ausführungseinheiten (beispielsweise in die jeweils einer oder mehreren von der Abhollogik 106, der Dekodierlogik 108 usw., und können einzeln als Pipeline betriebene Bereiche enthalten), während andere Ausführungsformen Teile von zwei oder mehr Logikbereichen innerhalb einer einzelnen Pipeline-Ausführungseinheit kombinieren können.
  • In der in 1 gezeigten Ausführungsform ruft die Abhollogik 106 Befehle aus dem Speichersystem 102 ab, typischerweise von den vereinheitlichten oder speziellen L1-Cache-Speichern, die von L2-L3-Cache-Speichern und dem Hauptspeicher gespeist werden. Die Dekodierlogik 108 dekodiert die Befehle, beispielsweise indem Operatoren/Operations-Codes, Operanden und Adressiermodi analysiert werden. Nach der Analyse werden die Befehle dann von der Schedulerlogik 110 für die Ausführung durch die Ausführungslogik 112 disponiert. Die Ausführungslogik 112 kann eine oder mehrere Ausführungsstufen (beispielsweise sind in 1 Ausführungsstufen 0–4 gezeigt) aufweisen, die ausgebildet sind, Befehle, die von der Schedulerlogik 110 ausgegeben werden, auszuführen. Es können eine beliebige geeignete Anzahl und Art von Ausführungsstufen in der Ausführungslogik 112 enthalten sein. Die Ausführungslogik 112 kann ferner mit dem Speichersystem 102 (beispielsweise über eine oder mehrere Lade/Speichereinheiten, die in der Ausführungslogik 112 enthalten sind) kommunizieren, um Lade- und/oder Speicheroperationen zu handhaben, die während des Betriebs angetroffen werden. Nach der Verarbeitung durch die Ausführungslogik 112 können die fertig gestellten Befehle zur Vorbereitung für Übergabe durch die Rückschreib-Logik 114 gespeichert werden. Die Rückschreib-Logik 114 ändert den Architekturzustand des Mikroprozessors 100, indem die Ergebnisse abgeschlossener Befehle an die Mikroprozessor-Register, Cache-Speicher und/oder an den Speicher übergeben werden. Anders ausgedrückt, die Rückschreib-Logik 114 führt die Übergabefunktion für den Mikroprozessor 100 aus.
  • In der in 1 gezeigten Ausführungsform umfasst der Mikroprozessor 100 eine Vorlauf-Steuerlogik 116. Die Vorlauf-Steuerlogik 116 steuert den Eintritt und den Austritt in bzw. aus dem Vorlaufmodus für den Mikroprozessor 100. In einigen Ausführungsformen kann die Vorlauf-Steuerlogik 116 auch andere Operationen steuern, die mit dem Eintritt und dem Austritt in bzw. aus dem Vorlauf verknüpft sind. Beispielsweise können beim Eintritt in den Vorlauf Teile des Mikroprozessors 100 als Prüfpunkte hinterlegt werden, um den Zustand des Mikroprozessors 100 zu bewahren, während eine nicht hinterlegte Arbeitszustandsversion des Mikroprozessors 100 spekulativ Befehle während des Vorlaufs ausführt. In einigen derartigen Ausführungsformen kann die Vorlauf-Steuerlogik 116 den Mikroprozessor 100 beim Verlassen des Vorlaufs in den mit Prüfpunkten hinterlegten Zustand zurückversetzen.
  • Der Mikroprozessor 100 umfasst ferner eine Warteschlange 118, die ausgebildet ist, einen oder mehrere Befehle zu halten, die von der Schedulerlogik 110 erneut auszugeben (re-dispatched) oder „zu wiederholen” sind. Wie hierin verwendet, bezeichnet eine Befehlswiederholung einen Befehl, der für die Ausführung erneut ausgegeben/abgesetzt wird, ohne dass er erneut abgeholt und/oder erneut dekodiert wird. Beispielsweise kann die Warteschlange 118 verwendet werden, um einen Befehl zu speichern, der für die erneute Ausgabe ausgewählt ist, in Reaktion auf eine Pipeline-Diskontinuität, die bewirkt, dass eine Beendigung des Befehls nach der anfänglichen Ausgabe fehlschlägt. Der Befehl kann ein oder mehrere Male wiederholt werden, bis der Befehl einen abgeschlossenen Zustand annimmt.
  • Während des normalen Nicht-Vorlaufbetriebs können Befehle, die für eine Wiederholung ausgewählt sind, in die Warteschlange 118 aufgenommen oder aus dieser herausgenommen werden, so dass die Warteschlange 118 den zu wiederholenden Befehl der Ausführungslogik 112 wiederholt zuleitet. In einigen Ausführungsformen wird dieser Befehl bei der Ausgabe aus der Warteschlange 118 abgemeldet. Die Ableitung von Befehlen aus der Warteschlange 118, wenn sie ausgegeben werden, kann Platz in der Warteschlange 118 freimachen, so dass neue Befehle, die für die Wiederholung ausgewählt sind, hinzugefügt werden können, und dies kann auch den Befehlsstrom aufrechterhalten. Jedoch kann ein Ereignis, das zu einer Wiederholung führt, auch ein Vorlauf auslösendes Ereignis sein; daher kann die Ableitung aus der Warteschlange 118 vor dem Eintritt in den Vorlauf gegebenenfalls bewirken, dass die Abhollogik 106 diesen Befehl erneut abholt beim erneuten Eintreten in den Nicht-Vorlaufbetrieb. In anderen Ausführungsformen werden Befehle bei der Ausgabe nicht in der Warteschlange 118 abgemeldet. Stattdessen bleiben Befehle gegebenenfalls in der Warteschlange 118, bis die Ausführung des Befehls abgeschlossen ist und eine erneute Ausgabe kann nicht ausgeführt werden. In dieser Ausführungsform müssen die Befehle nicht erneut in die Warteschlange für die Hinterlegung von Prüfpunkten oder für den Vorlauf eingefügt werden.
  • Folglich kann in einigen Ausführungsformen die Warteschlange 118 mit einem Befehl gefüllt werden, der bei Erkennung des den Vorlauf auslösenden Ereignisses den Vorlauf ausgelöst hat. Durch Einfügen des den Vorlauf auslösenden Befehls in die Warteschlange 118 ist dieser Befehl für die erneute Ausgabe nach dem Ende des Vorlaufs verfügbar. Die Warteschlange 118 kann eingefroren werden, wenn in den Vorlauf eingetreten wird, so dass der den Vorlauf auslösende Befehl für die Ausgabe nach dem Verlassen des Vorlaufs verfügbar sein wird, unabhängig davon, was während des Vorlaufs geschieht. Zu beachten ist, dass das Einführen der Warteschlange 118 bei der Hinterlegung der Prüfpunkte des Mikroprozessors 100 für die Vorbereitung auf den Eintritt in den Vorlauf in einigen Ausführungsformen eingeschlossen sein kann, während in einigen anderen Ausführungsformen dies ein separater Prozess sein kann oder gar nicht ausgeführt wird.
  • Zusätzlich können ein oder mehrere zusätzliche Befehle in die Warteschlange 118 zusammen mit dem den Vorlauf auslösenden Befehl eingefügt werden. Die Einfügung weiterer Befehle in die Warteschlange 118 kann Zeit sparen, die ansonsten durch die Abholung und die Dekodierung dieser Befehle aufzubringen wäre, wenn der Mikroprozessor nach dem Vorlauf wieder den normalen Betrieb aufnimmt. Anders ausgedrückt, im Gegensatz zu einer erneuten Abholung des den Vorlauf auslösenden Befehls oder die erneute Ausgabe davon (beispielsweise aus einem durch Prüfpunkte festgelegten Zustand) kann die Einfügung des den Vorlauf auslösenden Befehls und eines oder mehrerer weiterer Befehle in die Warteschlange 118 eine rasche erneute Ausgabe dieser Befehle an die Ausführungslogik 112 aus der Warteschlange 118 ermöglichen, nachdem der Vorlauf beendet ist und der Mikroprozessor den Nicht-Vorlaufbetrieb wieder aufnimmt.
  • Obwohl die Warteschlange 118 in 1 der Einfachheit halber in einer linearen Weise dargestellt ist, ist zu beachten, dass die Warteschlange 118 auch eine beliebige andere geeignete Form besitzen kann. Beispielsweise kann die Warteschlange 118 als eine Ringwarteschlange ausgebildet sein. Ferner können Befehle in die Warteschlange 118 eingefügt und aus dieser ausgegeben werden unter Anwendung eines „First-in, First-out,”-Formats. In einem weiteren Beispiel können Befehle gemäß des relativen Alters seit der anfänglichen Ausgabe, das sich von dem Alter innerhalb der Warteschlange unterscheiden kann, ausgegeben werden. Die Warteschlange 118 kann auch eine beliebige geeignete Größe besitzen. In einem nicht beschränkenden Beispiel enthält die Warteschlange 118 16 Einträge.
  • Ferner kann in einigen Ausführungsformen die Abhollogik 106 gleichzeitig einen oder mehrere nachfolgende Befehle abrufen, und die Dekodierlogik 108 kann einen oder mehrere dieser nachfolgenden Befehle dekodieren, während die Befehle, die in der Warteschlange 118 gehalten werden, gerade erneut ausgegeben werden. Die Zeitdauer für das Abrufen und das Dekodieren für die neu abgeholten Befehle kann wiederum mit dem Vorgang der Neuausgabe für die als Warteschlange aufgereihten Befehle überlappen. Die Abrufung und gegebenenfalls die Dekodierung nachfolgender Befehle können zu einer Bereitschaftsverfügbarkeit von abgeholten/dekodierten nachfolgenden Befehlen für die Ausgabe mittels der Schedulerlogik 110 führen. Der Mikroprozessor 100 kann wiederum einen nahezu nahtlosen Übergang von der erneuten Ausgabe von Befehlen aus der Warteschlange 118 zu der Ausgabe neu abgeholter Befehle erfahren.
  • 2 zeigt ein Flussdiagramm eines Teils einer Ausführungsform eines Verfahrens 200 für das Betreiben eines Mikroprozessors. Zu beachten ist, dass das Verfahren 200 mit einer beliebigen geeigneten Hardware ausgeführt werden kann, wozu die hierin beschriebene Hardware gehört. In einigen Ausführungsformen können ein oder mehrere Softwaremodule diverse Aspekte des Verfahrens 200 ausführen. Des Weiteren ist zu beachten, dass die in 2 gezeigte Ausführungsform des Verfahrens 200, das nachfolgend beschrieben ist, als ein Beispiel für Erläuterungszwecke angegeben ist. Jeder der in 2 beschriebenen Prozesse kann durch andere geeignete Prozesse ergänzt werden, kann weggelassen werden und/oder kann in geeigneter Weise umgeordnet werden, ohne von dem Schutzbereich der vorliegenden Offenbarung abzuweichen.
  • Bei 202 umfasst das Verfahren 200 die Identifizierung eines einen Vorlauf auslösenden Ereignisses. In einigen Ausführungsformen kann ein Vorlauf auslösendes Ereignis durch eine geeignete Vorlauf-Steuerlogik identifiziert werden, obwohl zu beachten ist, dass ein beliebiger Teil eines Mikroprozessors ein derartiges Ereignis erfassen kann. Beispielsweise kann eine Lade/Speicher-Ausführungsstufe, die in der Ausführungslogik des Mikroprozessors enthalten ist, einen Cache-Fehltreffer oder einen Speicher-Fehltreffer erkennen; eine Gleitkomma-Ausführungsstufe kann eine anomale Quadratwurzel-Operation erkennen, usw. Es kann ein beliebiges geeignetes Ereignis mit langer Verarbeitungszeit als ein Vorlauf auslösendes Ereignis betrachtet werden. Derartige Ereignisse mit langer Verarbeitungszeit können während des Entwurfs des Mikroprozessors im Voraus festgelegt werden, können dynamisch während des Betriebs des Mikroprozessors bestimmt werden, usw.
  • Bei 204 umfasst das Verfahren 200 das Einfügen des den Vorlauf auslösenden Befehls in eine Warteschlange. Es können ein oder mehrere weitere Befehle in die Warteschlange zusammen mit dem den Vorlauf auslösenden Befehl eingefügt werden. Beispielsweise zeigt 1 die Warteschlange 118 am Beginn eines Vorlaufbetriebs. Die Warteschlange 118 enthält drei Befehle: Befehl A, der zwei Bündel (die als Bündel A1 und als Bündel A2 gezeigt sind) enthält, Befehl B und Befehl C, die mehr als ein Bündel (als Bündel C1 gezeigt) umfassen. In dem in 1 gezeigten Beispiel ergab ein Vorlauf auslösendes Ereignis, das in der Stufe 2 der Ausführungslogik 112 erfasst würde, einen zugehörigen Vorlauf auslösenden Befehl (Befehl A), der in die Warteschlange 118 eingefügt wurde, wie dies durch den Pfad 120 gezeigt ist. Der Befehl B und das Bündel C1 des Befehls C, die sich einem Befehl A in der Ausführungslogik 112 anschließen, wurden ebenfalls in die Warteschlange 118 eingereiht. Zu beachten ist, dass eine beliebige geeignete Anzahl an zusätzlichen Befehlen in die Warteschlange 118 zusammen mit dem Vorlauf auslösenden Befehl eingefügt werden kann. In einigen Ausführungsformen kann die Anzahl an Befehlen, die für die Einfügung in die Warteschlange 118 ausgewählt ist, auf der Grundlage der Größe der Warteschlange 118, der typischen Abruf- und/oder Dekodierzeit für einen Befehl, der aus einem Speichersystem abgerufen wird, usw., ausgewählt werden. Anders ausgedrückt, die Anzahl an Befehlen, die für die Einfügung ausgewählt ist, kann während einer Entwurfsphase und/oder dynamisch während des Betriebs des Mikroprozessors bestimmt werden.
  • Zu beachten ist, dass Befehle an einem beliebigen geeigneten Punkt oder Position während der Verarbeitung in die Warteschlange 118 eingefügt werden können. Ein Mikroprozessor kann mehrere Pfade aufweisen, die ausgebildet sind, Befehle in die Warteschlange zu führen. Beispielsweise zeigt 1 einen Einfügungspfad 120, der sich von der Stufe 2 zu der Warteschlange 118 erstreckt, und einen weiteren Einfügungspfad 122, der sich von der Stufe 4 zu der Warteschlange 118 erstreckt. Obwohl eine beliebige geeignete Anzahl an Einfügungspfaden möglich ist, ohne von dem Schutzbereich der vorliegenden Offenbarung abzuweichen, werden in einigen Ausführungsformen Pfade ausgewählt, die Befehle von Stufen, in denen Vorlauf auslösende Ereignisse mit höherer Wahrscheinlichkeit erkannt werden, zu einer Warteschlange führen. Beispielsweise kann ein Einfügungspfad eine Lade/Speicher-Stufe mit einer Warteschlange verbinden. Als weiteres Beispiel kann ein Einfügungspfad eine letzte Stufe mit einer Warteschlange als eine Art der Sammlung von Befehlen verbinden, bevor diese die Pipeline verlassen. In einigen Ausführungsformen kann die Vorlauf-Steuerlogik die Auswahl und/oder die Einfügung der Befehle in die Warteschlange verwalten. In einigen Ausführungsformen können eine oder mehrere Ausführungsstufen die Auswahl und/oder die Einfügung der Befehle in die Warteschlange verwalten. In einigen anderen Ausführungsformen können die Auswahl und die Einfügung der Befehle in die Warteschlange auf diverse Bereiche des Mikroprozessors verteilt sein.
  • In einigen Ausführungsformen können Befehle, die für die Einfügung in die Warteschlange ausgewählt sind, an einer Stelle eingefügt werden, die von einem Allokierzeiger (allocation pointer) angegeben ist. Ein Allokierzeiger gibt an, wo ein nächster Befehl in die Warteschlange einzufügen ist. Beispielsweise zeigt 1 einen anschaulichen Allokierzeiger 124, der eine Position (die als Eintrag 126A gezeigt ist) für die Einfügung eines weiteren Befehls in die Warteschlange 118 angibt. Der Allokierzeiger 124 wird aktualisiert, wenn ein Befehl in die Warteschlange eingefügt wird. Daher war zu einem Zeitpunkt, der unmittelbar vor der Einfügung des Bündels C1 des Befehls C in die Warteschlange 118 liegt, der Allokierzeiger 124 auf einen Eintrag 126B gerichtet.
  • Wenn nach dem Vorlauf der normale Betrieb erneut gestartet/in diesen erneut eingetreten wird, wird die Abhollogik auf den Befehlszeiger gerichtet, nachdem der letzte Befehl in der Warteschlange erneut ausgegeben ist, so dass die Verarbeitung nach dem letzten Befehl fortgesetzt wird, nachdem der letzte Befehl, der vor dem Vorlauf in die Warteschlange eingefügt wurde, erneut ausgegeben ist. Der Befehlszeiger kann dem letzten Befehl in der Warteschlange entsprechend der Reihenfolge folgen, oder auch nicht, etwa wenn eine Verzweigung genommen wird. Somit enthält bei 206 das Verfahren 200 die Verfolgung einer Position eines Befehls, der von der Abhollogik nach dem Vorlaufbetrieb auszugeben ist. Die Verfolgung der Position eines Befehls, der von der Abhollogik nach dem Vorlaufbetrieb auszugeben ist, kann die Verfolgung einer Position eines Befehls beinhalten, der auf einen letzten Befehl in der Warteschlange folgt. In einigen Ausführungsformen kann ein Neustart-Befehlszeiger verwendet werden, um die Position zu verfolgen, die sich an den letzten Befehl in der Warteschlange anschließt. Beispielsweise zeigt 1 einen Neustart-Befehlszeiger 128, der ausgebildet ist, die Abhollogik 106 auf den Befehlszeiger für den nächsten Befehl zu richten, der abzuholen ist, nachdem der letzte Befehl in der Warteschlange erneut ausgegeben ist.
  • In Ausführungsformen, in denen die Warteschlange ISA-Befehle hält, kann die Verfolgung der Position eines Befehls, der von der Abhollogik nach dem Vorlaufbetrieb auszugeben ist, relativ einfach sein, da jeder ISA-Befehl einen zugehörigen Befehlszeiger aufweist. In einigen Ausführungsformen, etwa in Ausführungsformen, in denen Bündel aus Mikro-Operationen in der Warteschlange gehalten werden, kann es sein, dass ein Befehlszeiger, der mit einem Befehl verknüpft ist, in nur einem der Bündel enthalten ist.
  • In derartigen Ausführungsformen kann die Verfolgung der Position des Befehls, der von der Abhollogik nach dem Vorlauf-Betrieb bei 206 auszugeben ist, die Verfolgung einer Position eines letzten vollständigen Befehls beinhalten (beispielsweise eine Position/Adresse für einen Befehl, der auf einen Befehlsblock folgt, dessen gesamten Bestandteile in der Warteschlange gehalten werden), der in die Warteschlange eingefügt ist. Beispielsweise kann der Befehlszeiger in einem letzten Bündel in einer Gruppe aus Befehlen, die ein Bündel bildet, enthalten sein. Da es schwierig sein kann, das Ende eines Befehls aus Bündeln aus Mikro-Operationen zu identifizieren, kann ein Verfolgungszeiger verwendet werden, um eine Grenze zwischen dem letzten vollständigen Befehl, der in die Warteschlange eingefügt wurde, und anderen Bündeln zu beobachten, die in der Warteschlange vorhanden sein können. Beispielsweise zeigt 1 einen Verfolgungszeiger 130, der auf ein letztes Bündel, das in dem Befehl B enthalten ist, zeigt.
  • Die Verfolgung der Position des letzten vollständigen Befehls und somit die Verfolgung der Grenze zwischen dem letzten vollständigen Befehl und anderen Befehlen in der Warteschlange kann auch die Aktualisierung dieser Positions-/Grenzinformation beinhalten, wenn vollständige Befehle in die Warteschlange eingefügt werden. Ferner kann die Aktualisierung der Position-/Grenzinformation auch die Aktualisierung der Positionsinformation für den Befehl beinhalten, der von der Abhollogik abzuholen ist, beim Verlassen des Vorlaufs, wenn vollständige Befehle in die Warteschlange eingefügt werden. Andererseits wird der Mikroprozessor (beispielsweise die Schedulerlogik in einigen Ausführungsformen) Zugriff auf einen zulässigen Neustart-Befehlszeiger haben, der an die Abhollogik beim Wiedereintritt in den normalen Betrieb nach dem Vorlauf gesendet werden kann, und der Mikroprozessor kann in der Lage sein, die erneute Ausgabe von Befehlen aus der Warteschlange zu stoppen und die Ausgabe von Bündeln aus der Abhollogik und/oder aus der Dekodierlogik in geeigneter Weise zu starten. In dem in 1 gezeigten Beispiel kann der Neustart-Befehlszeiger 128 beim Aktualisieren des Verfolgungszeigers 130 aktualisiert werden, wobei die Aktualisierung des Neustart-Befehlszeigers 128 schematisch bei 132 gezeigt ist.
  • Bei 208 umfasst das Verfahren 200 die Vorbereitung zum Eintritt in den Vorlaufbetrieb. In einigen Ausführungsformen können die Vorbereitungen für den Vorlauf bei 208 das Einfrieren der Warteschlange und die Hinterlegung von Prüfpunkten des Zustands des Mikroprozessors umfassen, was die Hinterlegung der Prüfpunkte der Registereintrittswerte und diverse Zustände und/oder von Bits, die zu diesen Registereinträgen gehören, beinhalten kann. Die als Prüfpunkte hinterlegten Werte werden in einem geprüften Zustand für die Dauer eines Vorlaufs bewahrt. Arbeitszustandsversionen dieser Werte, Zustände und/oder Bits werden bewahrt, zumindest anfänglich, in einer Arbeitszustandsversion des Mikroprozessors beim Eintritt in den Vorlauf, obwohl eine oder mehrere dieser Werte, Zustände und/oder Bits sich während des Vorlaufbetriebs ändern können. Zu beachten ist, dass die Prozesse 204 und/oder 206 gleichzeitig stattfinden können mit und/oder in der Vorbereitung auf den Eintritt des Vorlaufs bei 208 in einigen Ausführungsformen enthalten sein können. In einigen Ausführungsformen kann eine geeignete Vorlauf-Steuerlogik einen oder mehrere Aspekte der Vorbereitung zum Eintritt in den Vorlauf steuern. Beispielsweise kann in der in 1 gezeigten Ausführungsform die Vorlauf-Steuerlogik 116 die Hinterlegung der Prüfpunkte des Mikroprozessors 100 steuern.
  • Bei 210 umfasst das Verfahren 200 das Eintreten in und den Betrieb im Vorlaufmodus. Beispielsweise kann die Vorlauf-Steuerlogik 116, die in 1 gezeigt ist, den Eintritt in und den Betrieb während des Vorlaufs steuern. Während des Vorlaufs führt der Mikroprozessor spekulativ Befehle aus, während er versucht, andere mögliche Ereignisse mit langer Verarbeitungszeit, Stillstände, Verzweigungsfehlvorhersagen usw. aufzudecken. Der durch Prüfpunkte hinterlegte Mikroprozessorzustand wird während des Vorlaufs nicht geändert, da eine Zustandsänderung (beispielsweise ein Rückschreib-Ereignis oder eine Befehlsübergabe) die Fähigkeit des Mikroprozessors beeinträchtigen könnte, in einen Zustand vor dem Vorlauf zurückzukehren, sobald das den Vorlauf auslösende Ereignis behandelt ist. Da ferner Ergebnisse, die während der Vorlaufausführung erzeugt werden, unzulässig sein können, beispielsweise dass sie sich auf fehlende Daten stützen, könnte die Speicherung des Ergebnisses einer Vorlaufausführung in einem Cache-Speicherplatz Daten schädigen, die in dem Speichersystem gehalten werden. Folglich können während des Vorlaufmodus diverse Registerplätze als vergiftet gekennzeichnet oder anderweitig markiert werden, unzulässige Daten zu enthalten, so dass der Befehlsdurchsatz und die möglicherweise Aufdeckung anderer Ereignisse mit langer Verarbeitungszeit weiter fortgeführt werden. Nachdem der Vorlauf beendet ist, werden jene Registerpositionen auf ihre Zustände vor dem Vorlauf wiederhergestellt, so dass die normale Bearbeitung fortgesetzt werden kann.
  • Zu beachten ist, dass der Betrieb des Mikroprozessors ständig im Fluss sein kann, selbst während des Vorlaufbetriebs. Daher kann die Fähigkeit eines Mikroprozessors, andere Ereignisse mit langer Verarbeitungszeit während des Vorlaufs zu erkennen, mit variierendem erfolgt abhängig davon realisiert werden, wie der Mikroprozessor während des Vorlaufs betrieben wird.
  • Beispielsweise zeigt 3 schematisch eine Ausführungsform eines Programms 300, das in einem statischen Zustand dargestellt ist. Wie in 3 gezeigt ist, enthält das Programm 308 Befehle. Der zweite Befehl lädt einen Wert aus einem Speicher in ein Register R1. Der sechste Befehl verwendet den in R1 gespeicherten Wert, um eine Adresse zu berechnen, aus der Daten zu laden sind.
  • 4 zeigt schematisch eine Ausführungsform eines Verfahrens 400 zur Ausführung des Programms 300 während eines Vorlaufbetriebs (beispielsweise während gerade ein Teil eines Vorlaufs erfolgt). In dem in 4 gezeigten Beispiel führt der Befehl 2 zu einem Fehltreffer in dem L1-Cache-Speicher während des Vorlaufs. Nach Identifizieren des Fehltreffers in dem L1-Cache-Speicher kann der Mikroprozessor damit beginnen, Daten aus einem Cache-Speicher der höheren Ebene (beispielsweise einem L2-Cache-Speicher) abzurufen. Unterdessen kennzeichnet der Mikroprozessor R1 als vergiftet und fährt mit der Ausführung des Programms 300 im Vorlauf fort. Da der Befehl 6 R1 anspricht, wird die Adresse nicht unter Verwendung des in R1 gespeicherten Wertes berechnet, und der Ladebefehlen wird nicht ausgeführt. Stattdessen wird die Zielregisterstelle für den Befehl 6 als giftig gekennzeichnet und der Mikroprozessor geht weiter, und führt weiterhin das Programm 300 aus. Da jedoch der Befehl 6 nicht versucht zu laden, ist nicht bekannt, ob die Eingangsregisterstelle für den Befehl 6 zu einem Cache-Treffer oder einem Fehltreffer führen würde. Anders ausgedrückt, durch die Kennzeichnung des Zielregisters im Befehl 6 als giftig und durch das Weiterarbeiten hat der Mikroprozessor eine Gelegenheit ausgelassen, ein weiteres Vorlauf auslösendes Ereignis zu identifizieren. Obwohl das in 4 gezeigten Beispiel nur zur Erläuterungsgründen angegeben ist, ist zu beachten, dass die Kennzeichnung des Zielregisters als giftig für einen L1-Fehltreffer ohne Bestimmung, ob dieser mit einem L2-Fehltreffer einhergeht, zu Einstellungen führen kann, in denen beispielsweise Befehle häufig auf eine oder mehrere als giftig gekennzeichnete Positionen verweisen können.
  • Daher werden in einigen Ausführungsformen ein oder mehrere Befehle für die erneute Ausgabe/Wiederholung während des Vorlaufs ausgewählt. Beispielsweise kann ein Befehl, der mit einem Ereignis mit kurzer Dauer verknüpft ist, für die Wiederholung ausgewählt werden. In einem Ereignis mit kurzer Dauer ist gegebenenfalls die ursprüngliche Ausgabe noch nicht abgeschlossen, aber eine Wiederholung nach einer kurzen Verweilzeit kann vollständig erfolgen. Die Wiederholung von Befehlen während des Vorlaufs kann den Grad an Vergiftung verringern, der sich in dem System während des Vorlaufs ansammelt, wodurch möglicherweise andere Ereignisse offen gelegt werden, die ansonsten nicht erkannt würden. Zu beachten ist, dass Befehle, die während des Vorlaufs abgeschlossen werden, den aktuellen Mikroprozessorzustand, aber nicht den mit Prüfpunkten hinterlegten Zustand aktualisieren können, was es dem Mikroprozessor erlaubt, indem durch Prüfpunkten hinterlegten Zustand beim Verlassen des Vorlaufs wieder zurückzukehren.
  • Beispielsweise zeigt 5 schematisch eine Ausführungsform eines Verfahrens 500 zur Ausführung des Programms 300 während des Vorlaufbetriebs unter Anwendung einer Befehlswiederholung. In dem in 5 gezeigten Beispiel ist der Befehl 2 ein Fehltreffer für den L1-Cache-Speicher während des Vorlaufs. Wie bei dem in 4 gezeigten Beispiel beginnt der Mikroprozessor damit, Daten aus einem Cache-Speicher der höheren Ebene (beispielsweise einem L2-Cache-Speicher) abzurufen. Unterdessen setzt der Mikroprozessor die Ausführung des Programms 300 im Vorlauf fort und der Befehl, der den Fehltreffer (Befehl 2) ausgelöst hat, und, in einigen Ausführungsformen, ein oder mehrere weitere Befehle werden für die Wiederholung ausgewählt. Wenn der Mikroprozessor die Daten aus dem L2-Cache-Speicher erhält, werden diese dem L1-Cache-Speicher und dem Befehl 2 zugeführt, der zusammen mit den Befehlen 3 und 4 erneut ausgegeben wird. In einigen Ausführungsformen kann die erneute Ausgabe der Befehle zeitlich so gesteuert werden, dass der Befehl, der den Fehltreffer auslöste, gleichzeitig mit dem Eintreffen der Daten aus dem Cache-Speicher (beispielsweise dem L2-Cache-Speicher in dem in 5 gezeigten Beispiel) ausgegeben wird, obwohl zu beachten ist, dass auch eine beliebige andere geeignete Weise einer erneuten Ausgabe der Befehle eingesetzt werden kann, ohne von dem Schutzbereich der vorliegenden Offenbarung abzuweichen.
  • Nachdem der Befehl 4 erneut ausgegeben ist, geht die reguläre Ausgabe der Befehle 5–8 weiter. Die Ausführung des Befehls 6 verweist auf R1, so dass die Adresse berechnet wird; sobald diese berechnet ist, wird der Ladebefehl für diese Adresse gesendet. In dem in 5 gezeigten Beispiel löst der Befehl 6 einen Cache-Fehltreffer aus. Der Befehl, der den Fehltreffer ausgelöst hat (Befehl 6) und, in einigen Ausführungsformen, ein oder mehrere weitere Befehle werden wiederum für die Wiederholung ausgewählt. Wenn der Mikroprozessor die Daten aus dem L2-Cache-Speicher erhält, werden diese dem L1-Cache-Speicher und dem Befehl 6, der erneut ausgegeben wird, zugeführt. Somit erzeugte der Befehl 6 eine Adresse und löste einen Cache-Fehltreffer aus, der in dem in 4 gezeigten Beispiel nicht realisiert wurde. Anders als das in 4 gezeigte Beispiel mit Vorlauf ohne Wiederholung zeigt das in 5 dargestellte Beispiel, dass in einigen Einstellungen die Fähigkeit zur Wiederholung von Befehlen während des Vorlaufs Gelegenheiten schaffen kann, um Ereignisse mit langer Verarbeitungszeit zu identifizieren, die ansonsten nicht erkannt würden, obwohl es eine Abnahme des Durchsatzes von Befehlen geben kann, die mit einer Wiederholung im Vorlauf in einigen Ausführungsformen verknüpft ist.
  • Zu beachten ist, dass in einigen Ausführungsformen die Warteschlange, die zum Halten des Vorlauf auslösenden Befehls und eines oder mehrerer weitere Befehle verwendet wird, gegebenenfalls nicht verwendet wird, um Befehle zu halten, die während des Vorlaufs für eine Wiederholung ausgewählt sind. Die Wiederverwendung der Warteschlange für die Wiederholung während des Vorlaufs kann zu einem Verlust eines Befehls während des Vorlaufs führen, wodurch möglicherweise die Fähigkeit des Mikroprozessors beeinträchtigt wird, den Nicht-Vorlaufbetrieb erneut zu starten/in diesen wieder einzutreten, sobald das Vorlauf auslösende Ereignis behandelt ist. Folglich kann in einigen Ausführungsformen die Auswahl eines Befehls zur Wiederholung während des Vorlaufs bewirken, dass der Mikroprozessor das Zielregister des Befehls als vergiftet kennzeichnet und den Vorlauf fortsetzt. In einigen anderen Ausführungsformen kann ein Antreffen einer Wiederholungsbedingung während des Vorlaufs den Mikroprozessor veranlassen, den Vorlauf zu verlassen. Zu beachten ist, dass diese Beispiele nicht beschränkend sind. In einigen Ausführungsformen können Kriterien, die zur Bestimmung, ob ein Vorlauf zu beenden ist oder ob ein Zielregister als vergiftet zu kennzeichnen ist, während des Entwurfs des Mikroprozessors im Voraus festgelegt werden.
  • In einigen anderen Ausführungsformen kann ein Befehl während des Vorlaufs wiederholt werden, indem eine spezielle Vorlauf-Wiederhol-Warteschlange verwendet wird, die sich von der Warteschlange unterscheidet, die zum Halten des Vorlauf auslösenden Befehls verwendet wird. Beispielsweise zeigt 6 eine Ausführungsform eines Mikroprozessors 600 mit einer Vorlauf-Wiederhol-Warteschlange 602, die ausgebildet ist, einen oder mehrere Befehle zu halten, die für die Wiederholung während des Vorlaufs ausgewählt sind, während die Warteschlange 118, die den Vorlauf auslösenden Befehl hält, während des Vorlaufs eingefroren bleibt. Obwohl die Vorlauf-Wiederhol-Warteschlange 602 in einer linearen Weise in 6 der Einfachheit halber dargestellt ist, ist zu beachten, dass die Vorlauf-Wiederhol-Warteschlange 602 eine beliebige geeignete Form haben kann. Beispielsweise kann die Vorlauf-Wiederhol-Warteschlange 602 als eine Ringwarteschlange ausgebildet sein. Ferner können Befehle in die Vorlauf-Wiederhol-Warteschlange 602 in beliebiger geeigneter Weise eingefügt oder aus dieser ausgegeben werden. Beispielsweise können Befehle in die Vorlauf-Wiederhol-Warteschlange 602 eingefügt oder aus dieser ausgegeben werden unter Verwendung eines „Zuerst-hinein, zuerst-heraus”-Formats. In einem weiteren Beispiel können Befehle entsprechend ihrem relativen Alter seit ihrer ersten Ausgabe ausgegeben werden, das sich von dem Alter innerhalb der Vorlauf-Wiederhol-Warteschlange 602 unterscheidet. Die Vorlauf-Wiederhol-Warteschlange 602 kann ferner eine beliebige geeignete Größe besitzen. In einem nicht beschränkenden Beispiel enthält die Vorlauf-Wiederhol-Warteschlange 602 16 Einträge.
  • In dem in 6 gezeigten Beispiel können Befehle, die für die Wiederholung ausgewählt sind, in die Vorlauf-Wiederhol-Warteschlange 602 über einen oder mehrere Einfügungspfade 604 eingefügt werden, die Teile der Pipeline 104 mit der Vorlauf-Wiederhol-Warteschlange 602 verbinden. Ein Allokierzeiger 606 kann verwendet werden, um eine Einfügungsposition in der Vorlauf-Wiederhol-Warteschlange 602 zu kennzeichnen. Der Allokierzeiger 606 kann aktualisiert werden, wenn ein Befehl (oder ein Teil davon) in die Vorlauf-Wiederhol-Warteschlange 602 eingefügt wird.
  • Wie zuvor angemerkt ist, kann in einigen Ausführungsformen die erneute Ausgabe von Befehlen aus der Vorlauf-Wiederhol-Warteschlange 602 so gesteuert sein, dass der für die Wiederholung ausgewählte Befehl gleichzeitig mit dem Auftreten eines weiteren Ereignisses ausgegeben wird. Beispielsweise kann ein Befehl, der einen Cache-Fehltreffer auslöst, gleichzeitig mit dem Eintreffen von Daten aus dem Cache-Speicher, die diesen Befehl betreffen, erneut ausgegeben werden. Es kann ein Leserzeiger verwendet werden, um eine Position in der Vorlauf-Wiederhol-Warteschlange 602 anzugeben, die bei der Vorbereitung zur Ausgabe an die Schedulerlogik 110 für das Auslesen ausgewählt ist. Anders ausgedrückt, ein Lesezeiger kann eine Position zum Lesen für die erneute Ausgabe in der Vorlauf-Wiederhol-Warteschlange 602 angeben. Die Angabe der Leseposition für eine erneute Ausgabe in der Vorlauf-Wiederhol-Warteschlange 602 kann diverse Abhängigkeiten des Befehls, der mit dieser Position verknüpft ist, die vor der erneuten Ausgabe dieses Befehls zu lesen ist, zulassen. Beispielsweise gibt in der in 6 gezeigten Ausführungsform der Lesezeiger 608 eine Position in der Vorlauf-Wiederhol-Warteschlange 602 an, die den Befehl X enthält. Somit ist der Befehl X der nächste Befehl, der über den Ausgabepfad 610 an die Schedulerlogik 110 zur erneuten Ausgabe an die Ausführungslogik 112 zu senden ist. Der Lesezeiger 608 kann aktualisiert werden, wenn der ausgewählte Befehl (oder ein Teil davon) an die Schedulerlogik 110 ausgegeben wird.
  • In einigen Ausführungsformen kann die Vorlauf-Wiederhol-Warteschlange 602 einen Abmelde-Zeiger 612 enthalten, der eine Position in der Vorlauf-Wiederhol-Warteschlange 602 angibt, die bereit ist, logisch und in einigen Fällen auch physikalisch aus der Warteschlange entfernt zu werden. Anders ausgedrückt, der Abmelde-Zeiger 612 zeigt auf einen Befehl, der der nächste aus der Vorlauf-Wiederhol-Warteschlange 602 zu entfernende Befehl ist, indem er überschrieben, gelöscht oder in ähnlicher Weise eliminiert wird. In dem in 6 gezeigten Beispiel gibt der Abmelde-Zeiger 612 eine Position an, die von den Befehl X eingenommen wird. Diese Position wird die nächste Position sein, die abzumelden ist, was zu einer Eliminierung des Befehls X aus der Vorlauf-Wiederhol-Warteschlange 602 führt. Der Abmelde-Zeiger 612 kann aktualisiert werden, wenn der ausgewählte Befehl (oder ein Teil davon) an die Schedulerlogik 110 ausgegeben worden ist. In einigen Ausführungsformen kann der Lesezeiger 608 die Funktion des Abmelde-Zeigers 612 ausführen, so dass die Position beim Lesen/Ausgeben, die von dem Lesezeiger 608 angegeben ist, abgemeldet wird.
  • Obwohl das in 6 gezeigte Beispiel die Vorlauf-Wiederhol-Warteschlange 602 als separat zu der Warteschlange 118 zeigt, ist zu beachten, dass in einigen Ausführungsformen eine geeignet dimensionierte Warteschlange verwendet werden kann, um den Vorlauf auslösenden Befehl und Befehle, die für die Wiederholung während des Vorlaufs ausgewählt sind, zu halten. Beispielsweise kann ein Teil der Warteschlange während des Vorlaufs eingefroren sein, während ein weiterer Teil für die Wiederholung aktiv ist. In einigen anderen Ausführungsformen kann eine mit Prüfpunkten hinterlegte Version der Warteschlange 118 verwendet werden, um den Vorlauf auslösenden Befehl zu halten, während eine Arbeitszustandsversion der Warteschlange 118 verwendet wird, um Befehle zu halten, die während des Vorlaufs für die Wiederholung ausgewählt sind, wodurch die Funktion der Vorlauf-Wiederhol-Warteschlange 602 ausgeführt wird.
  • Unabhängig davon, ob eine Wiederholung während des Vorlaufs ausgeführt wird oder nicht, verlässt, sobald das ursprüngliche Vorlauf auslösende Ereignis behandelt ist, der Mikroprozessor den Vorlauf und kehrt zu dem normalen Nicht-Vorlaufbetrieb zurück. Somit enthält, unter Fortsetzung der 2, bei 212 das Verfahren 200 das Ermitteln der Behandlung bzw. Auflösung des Vorlauf auslösenden Ereignisses und bei 214 wird der Vorlaufbetrieb verlassen. Die Ermittelung, dass das Vorlauf auslösende Ereignis behandelt ist, kann in einer beliebigen geeigneten Weise durch einen geeigneten Teil des Mikroprozessors ausgeführt werden. Beispielsweise ist in der in 1 gezeigten Ausführungsform die Vorlauf-Steuerlogik 116 ausgebildet, die Behandlung des Vorlauf auslösenden Ereignisses zu ermitteln und den Mikroprozessor zu veranlassen, den Vorlauf zu verlassen. Das Verlassen des Vorlaufs kann beinhalten, dass die mit Prüfpunkten hinterlegte Version des Mikroprozessors 100 wiederhergestellt wird, die Pipeline 104 gelöscht wird, die Warteschlange 118 aus ihrem eingefrorenen Zustand zurückgeführt wird, und die Abhollogik 106 erneut angewiesen wird, die Abholung von Befehlen ausgehend vom Neustart-Befehlszeiger 128 zu beginnen. In Ausführungsformen, in denen die Vorlauf-Wiederhol-Warteschlange 602 enthalten ist, kann das Verlassen des Vorlaufs auch beinhalten, dass die Vorlauf-Wiederhol-Warteschlange 602 gelöscht wird.
  • Bei 216 umfasst das Verfahren 200 die erneute Ausgabe des Vorlauf auslösenden Befehls zusammen mit dem einen oder den mehreren weiteren Befehlen, die in die Warteschlange eingefügt wurden, als der Vorlauf ausgelöst wurde. Der Vorlauf auslösende Befehl wird zusammen mit den weiteren Befehlen erneut ausgegeben. Nach der erneuten Ausgabe des letzten weiteren Befehls beginnt der Mikroprozessor mit der Ausgabe neu abgeholter Befehle.
  • Die erneute Ausgabe des Vorlauf auslösenden Befehls aus der Warteschlange nach dem Vorlauf kann die Ausgabe des Vorlauf auslösenden Befehls aus einer Position beinhalten, die durch einen Lesezeiger angegeben ist. Anders ausgedrückt, ein Lesezeiger kann eine letzte Position für die erneute Ausgabe in der Warteschlange 118 angegeben. Die Angabe einer Leseposition für erneute Ausgabe in der Warteschlange 118 kann diverse Abhängigkeiten des Befehls zulassen, der mit dieser Position verknüpft ist, die vor der erneuten Ausgabe dieses Befehls zu lesen ist. Beispielsweise gibt in der in 1 gezeigten Ausführungsform der Lesezeiger 134 eine Position in der Warteschlange 118 an, die das Bündel A1 des Befehls A hält. Somit wird das Bündel A1 der nächste Befehl sein, der an die Schedulerlogik 110 ausgegeben wird und über den Ausgabepfad 136 für die erneute Ausgabe an die Ausführungslogik 112 geleitet wird. Der Lesezeiger 134 kann aktualisiert werden, wenn der ausgewählte Befehl (oder ein Teil davon) an die Schedulerlogik 110 ausgegeben wird. Es ist jedoch zu beachten, dass in anderen Ausführungsformen der Ausgabepfad 136 Befehle direkt an die Ausführungslogik 112 und eine beliebige Stufe darin ausgeben kann.
  • In einigen Ausführungsformen kann die Warteschlange 118 einen Abmelde-Zeiger 138 aufweisen, der eine Position in der Warteschlange 118 angibt, die bereit ist, logisch und in einigen Fällen physikalisch aus der Warteschlange entfernt zu werden. Anders ausgedrückt, der Abmelde-Zeiger 138 zeigt auf einen Befehl, der der nächste Befehl ist, der aus der Warteschlange 118 zu entfernen ist, indem er überschrieben, gelöscht oder in ähnlicher Weise eliminiert wird. In dem in 1 gezeigten Beispiel gibt der Abmelde-Zeiger 138 eine Position an, die von dem Bündel A1 des Befehls A eingenommen wird. Diese Position wird die nächste Position sein, die abgemeldet wird, was zu einer Eliminierung des Bündels A1 aus der Warteschlange 118 führt. Der Abmelde-Zeiger 138 kann aktualisiert werden, wenn der ausgewählte Befehl (oder ein Teil davon) an die Schedulerlogik 110 ausgegeben worden ist. In einigen Ausführungsformen kann der Lesezeiger 134 die Funktion des Abmelde-Zeigers 138 ausführen, so dass die Position beim Lesen/Ausgeben, wie sie durch den Lesezeiger 134 angegeben ist, abgemeldet wird.
  • Sobald der letzte Befehl, der in die Warteschlange mit dem Vorlauf auslösenden Befehl eingefügt wurde, aus der Warteschlange ausgegeben wurde, stoppt der Mikroprozessor die erneute Ausgabe von Befehlen aus der Warteschlange und beginnt die Ausgabe von Befehlen, die von der Abhollogik abgerufen werden. Daher umfasst die erneute Ausgabe bei 216 das Anhalten der erneuten Ausgabe von Befehlen aus der Warteschlange, wenn eine Angabe des letzten vollständigen Befehls, der in die Warteschlange eingefügt wurde, angetroffen wird. Beispielsweise kann in der in 1 gezeigten Ausführungsform der Mikroprozessor die erneute Ausgabe von Befehlen aus der Warteschlange 118 stoppen, wenn er auf den Verfolgungszeiger 130 trifft. Ferner kann die erneute Ausgabe bei 216 eine Ausgabe von Befehlen umfassen, die von der Abhollogik abgerufen werden, nachdem die erneute Ausgabe des letzten vollständigen Befehls aus der Warteschlange erfolgt ist.
  • In einigen Ausführungsformen kann die erneute Ausgabe 1316 beinhalten, dass die Position, die mit einem Neustart-Befehlszeiger verknüpft ist, der zur Verfolgung einer Position nach einem letzten Befehl in der Warteschlange verwendet ist, an einen Frontbereich der Pipeline gesendet wird (beispielsweise in einigen Ausführungsformen die Abhollogik), obwohl diese Position bei 214 oder einem anderen geeigneten Punkt beim Verlassen des Vorlaufs gesendet werden kann, ohne von dem Schutzbereich dieser Offenbarung abzuweichen. Beispielsweise wird in der in 1 gezeigten Ausführungsform ein Befehl, der von der Abhollogik 106 aus einer Stelle abgerufen wird, die durch den Neustart-Befehlszeiger 128 angegeben ist, an die Ausführungslogik 112 ausgegeben. In einigen Ausführungsformen kann der neu abgeholte Befehl von der Schedulerlogik 110 und/oder von der Abhollogik 106 ausgegeben werden. Beispielsweise kann ein neu abgeholter Befehle, der aus der Stelle abgerufen wurde, die durch den Neustart-Befehlszeiger 128 angegeben ist, von der Abhollogik 106 an die Dekodierlogik 108 zur Dekodierung im Falle eines die Architektur betreffenden Befehls ausgegeben werden. In einigen Ausführungsformen kann der neu abgeholte Befehl, der aus der Speicherstelle abgerufen wird, auf die der Neustart-Befehlszeiger 128 verweist, die Dekodierlogik 108 in einer Einstellung umgehen, in der der neu abgeholte Befehl eine native Übersetzung eines die Architektur betreffenden Befehls enthält. Unabhängig davon, ob der Befehl dekodiert wird oder nicht, kann beim Eintreffen in der Schedulerlogik 110 der neu abgeholte Befehl an die Ausführungslogik 112 ausgegeben werden, nachdem der letzte vollständige Befehl, der in der Warteschlange 118 eingefügt ist, erneut ausgegeben ist.
  • 7 zeigt eine Ausführungsform eines Mikroprozessors 700, die weitere Details darstellt, die in einigen Beispielen des Speichersystems 102 enthalten sind. Die Ausführungsform des Mikroprozessors 700, die in 7 gezeigt ist, stellt das Speichersystem 102 dar. Das Speichersystem 102 enthält eine Speicherhierarchie 702, die einen L1-Prozessor-Cache-Speicher 702A, einem L2-Prozessor-Cache-Speicher 702B, einen L3-Prozessor-Cache-Speicher 702C, einen Hauptspeicher 702D (beispielsweise einen oder mehrere DRAM-Chips), einen sekundären Speicher 702E (beispielsweise eine magnetische Speichereinheit, eine Halbleiterspeichereinheit und/oder eine optische Speichereinheit) und/oder einen tertiären Speicher 702F (beispielsweise eine große Anordnung an Bandlaufwerken) enthält. Zu beachten ist, dass die beispielhaften Speicher/Speicherplatzkomponenten in ansteigender Reihenfolge für Zugriffszeiten und Kapazität aufgelistet sind, obwohl es mögliche Ausnahmen geben kann.
  • Eine Speichersteuerung 704 kann verwendet werden, und das Protokoll zu handhaben und um die Signalschnittstelle bereitzustellen, die für den Hauptspeicher 702D erforderlich ist, und um Speicherzugriffe zu disponieren. Die Speichersteuerung kann in dem Prozessorchip oder auf einem separaten Chip eingerichtet sein. Es ist zu beachten, dass die oben bereitgestellte Speicherhierarchie nicht einschränkend ist und dass andere Speicherhierarchien verwendet werden können, ohne von dem Schutzbereich dieser Offenbarung abzuweichen.
  • Die Ausführungsform des in 7 gezeigten Mikroprozessors 700 umfasst ferner ein oder mehrere Prozessorregister 706. In einigen Ausführungsformen können die Register 706 in einer Registerdatei für Allgemeinzwecke oder ansonsten geeignet verteilt sein innerhalb des Mikroprozessors 700. Die Register 706 speichern Daten und/oder Befehle, die während des Betriebs verwendet werden. Beispielsweise kann eine Pipeline-Stufe Daten aus einer Eingangsregisterstelle erhalten, kann eine spezifizierte Operation unter Anwendung der erhaltenen Daten ausführen und kann dann das Ergebnis in einem Zielregister speichern. Zu beachten ist, dass die Benennungen „Zielregister” und „Eingangsregister” relative Begriffe sind. Beispielsweise kann ein Zielregister für eine erste Operation als ein Eingangsregister für eine weitere Operation dienen; in ähnlicher Weise kann ein Eingangsregister für eine Operation als ein Zielregister für eine vorhergehende Operation gedient haben, usw.
  • In einigen Ausführungsformen können ein oder mehrere Register 706 mit einem Gift-Bit erweitert sein, das ausgebildet ist, die Vertrauenswürdikeitkeit einer zugehörigen Position in dem Register 706 anzugeben. Anders ausgedrückt, jedes Gift-Bit gibt die Gültigkeit/Ungültigkeit der Daten an, die in dem zugehörigen Register 706 enthalten sind. Beispielsweise kann ein Gift-Bit verwendet werden, um anzuzeigen, ob ein spezieller Registereintrag während eines Vorlaufbetriebs unzulässig wird.
  • Die in 7 gezeigte Ausführungsform des Mikroprozessors 700 umfasst die Pipeline 104. Die Pipeline 104 enthält die Abhollogik 106, die Dekodierlogik 108, die Schedulerlogik 110, die Ausführungslogik 112 und die Rückschreib-Logik 114. Zu beachten ist, dass die in der Pipeline 104 enthaltenen Stufen in den in 7 gezeigten Ausführungsformen sowie auch in den in den 1 und 6 gezeigten Ausführungsformen anschaulich sind für eine typische RISC-Implementierung, obwohl die Darstellungen nicht als einschränkend gedacht sind. Beispielsweise können in einigen Ausführungsformen die Funktionen der Abhollogik und der Schedulerlogik in Verarbeitungsrichtung vor einer Pipeline vorgesehen sein, etwa durch Zusammenstellung von VLIW-Befehlen oder einer Befehlssatzübersetzung. In einigen anderen Ausführungsformen kann die Schedulerlogik in der Abhollogik und/oder der Dekodierlogik des Mikroprozessors enthalten sein. Allgemeiner gesagt, ein Mikroprozessor kann eine Logik zur Abholung, Dekodierung und Ausführung enthalten, wovon jede eine oder mehrere Stufen enthalten kann, wobei die Speicher-(beispielsweise Lade/Speicher-) und die Rückschreib-Funktionen von der Ausführungslogik ausgeführt werden. Die vorliegende Offenbarung ist in gleicher Weise auf diese und andere Mikroprozessorrealisierungen anwendbar, die Hybrid-Realisierungen umfassen, die VLIW-Befehle und/oder andere logische Befehle verwenden können.
  • Anschauliche Ausführungsformen der vorliegenden Erfindung umfassen die folgenden Konzepte:
    Konzept 1. Ein Mikroprozessor mit (i) einer Schedulerlogik zur Ausgabe eines oder mehrerer Befehle für die Ausführung; (ii) einer Ausführungslogik zum Ausführen des einen oder der mehreren Befehle, wie sie von der Schedulerlogik ausgegeben werden; (iii) einer Warteschlange zum Halten eines oder mehrerer Befehle für eine erneute Ausgabe an die Ausführungslogik; und (iv) einer Vorlauf-Steuerlogik zur Verwaltung des Vorlaufbetriebs des Mikroprozessors, wobei die Vorlauf-Steuerlogik ausgebildet ist, um: (a) ein Vorlauf auslösendes Ereignis zu erkennen, (b) in Reaktion auf die Erkennung des Vorlauf auslösenden Ereignisses (i) den Mikroprozessor zu veranlassen, im Vorlaufbetrieb zu arbeiten, und (ii) einen Vorlauf auslösenden Befehl, der mit dem Vorlauf auslösenden Ereignis verknüpft ist, in die Warteschlange zusammen mit einem oder mehreren zusätzlichen Befehlen einzufügen, (c) einen Nicht-Vorlaufbetrieb bei Behandlung des Vorlauf auslösenden Ereignisses wieder aufzunehmen, und (d) bei Wiederaufnahme des Nicht-Vorlaufbetriebs den Vorlauf auslösenden Befehl und den einen oder die mehreren weiteren Befehle aus der Warteschlange an die Ausführungslogik erneut auszugeben.
    Konzept 2. Der Mikroprozessor wie beschrieben in Konzept 1, wobei die Schedulerlogik den einen oder die mehreren Befehle aus der Warteschlange an die Ausführungslogik erneut ausgibt.
    Konzept 3. Der Mikroprozessor wie beschrieben in Konzept 1 oder 2, der ferner einen Allokierzeiger enthält, der ausgebildet ist, eine Einfügungsposition für einen Befehl anzugeben, der für die Einfügung in die Warteschlange ausgewählt ist.
    Konzept 4. Der Mikroprozessor wie beschrieben in einem der Konzepte 1–2, der ferner einen Lesezeiger enthält, der ausgebildet ist, eine Leseposition für die erneute Ausgabe in der Warteschlange anzugeben.
    Konzept 5. Der Mikroprozessor wie beschrieben in Konzept 4, wobei der Lesezeiger ferner ausgebildet ist, die Leseposition für die erneute Ausgabe bei der erneuten Ausgabe eines Befehls, der darin gespeichert ist, abzumelden.
    Konzept 6. Der Mikroprozessor wie beschrieben in einem der Konzepte 1–5, der ferner eine Vorlauf-Wiederhol-Warteschlange enthält, die ausgebildet ist, einen oder mehrere Befehle, die für eine Wiederholung während des Vorlaufbetriebs gekennzeichnet sind, zu halten.
    Konzept 7. Der Mikroprozessor wie beschrieben in einem der Konzepte 1–6, der ferner einen Verfolgungszeiger enthält, der ausgebildet ist, eine Position eines letzten vollständigen Befehls, der in die Warteschlange eingefügt ist, zu verfolgen; und einen Neustart-Befehlszeiger, der ausgebildet ist, eine Position eines Befehls zu verfolgen, der von der Abhollogik nach der erneuten Ausgabe des letzten vollständigen Befehls auszugeben ist.
    Konzept 8. Der Mikroprozessor wie beschrieben in Konzept 7, wobei der Neustart-Befehlszeiger ausgebildet ist, in Reaktion auf eine Aktualisierung des Verfolgungszeigers aktualisiert zu werden.
    Konzept 9. Der Mikroprozessor wie beschrieben in einem der Konzepte 1–8, wobei die Warteschlange ausgebildet ist, einen oder mehrere Befehle, die für die Wiederholung während des Nicht-Vorlaufbetriebs gekennzeichnet sind, zu halten.
    Konzept 10. Ein Verfahren zum Betreiben eines Mikroprozessors, der eine Warteschlange enthält, die ausgebildet ist, einen oder mehrere Befehle zu halten, die für eine Wiederholung in einer Ausführungslogik, die in dem Mikroprozessor enthalten ist, während eines Nicht-Vorlaufbetriebs des Mikroprozessors ausgewählt sind, wobei das Verfahren umfasst: (i) Identifizieren eines Vorlauf auslösenden Ereignisses, das mit einem Vorlauf auslösenden Befehl verknüpft ist; (ii) in Reaktion auf die Indetifizierung des Vorlauf auslösenden Ereignisses: (a) Eintreten in einen Vorlauf, und (b) Einfügen des Vorlauf auslösenden Befehls zusammen mit einem oder mehreren weiteren Befehlen in die Warteschlange; (iii) wieder Aufnehmen des Nicht-Vorlaufbetriebs des Mikroprozessors in Reaktion auf die Behandlung des Vorlauf auslösenden Ereignisses; und (iv) erneutes Ausgeben des Vorlauf auslösenden Befehls zusammen mit dem einen oder den mehreren weiteren Befehlen aus der Warteschlange an die Ausführungslogik.
    Konzept 11. Das Verfahren wie beschrieben in Konzept 10, wobei Einfügen des Vorlauf auslösenden Befehls zusammen mit dem einen oder den mehreren weiteren Befehlen umfasst: Einfrieren der Warteschlange, während der Mikroprozessor in dem Vorlaufbetrieb ist.
    Konzept 12. Das Verfahren wie beschrieben in Konzept 10 oder 11, das ferner umfasst: Identifizieren eines Befehls zur Wiederholung während des Vorlaufbetriebs; Einfügen des Befehls zur Wiederholung während des Vorlaufbetriebs in eine Vorlauf-Wiederhol-Warteschlange; und erneutes Ausgeben des Befehls zur Wiederholung aus der Vorlauf-Wiederhol-Warteschlange während des Vorlaufbetriebs.
    Konzept 13. Das Verfahren wie beschrieben in einem der Konzepte 10–12, das ferner umfasst: Verfolgen einer Position eines letzten vollständigen Befehls, der in die Warteschlange eingefügt ist; und Verfolgung einer Position eines Befehls, der von der Abhollogik nach der erneuten Ausgabe des letzten vollständigen Befehls auszugeben ist.
    Konzept 14. Das Verfahren wie beschrieben in Konzept 13, das ferner umfasst: in Reaktion auf das Antreffen einer Angabe der Position des letzten vollständigen Befehls während des erneuten Startens nach dem Vorlauf: Stoppen der erneuten Befehlsausgabe aus der Warteschlange; Ausgeben des Befehls, der von der Abhollogik auszugeben ist; und Ausgeben eines oder mehrerer weiterer Befehle aus der Abhollogik.
    Konzept 15. Das Verfahren wie beschrieben in Konzept 13, das ferner umfasst: Aktualisieren der Position des Befehls, der von der Abhollogik auszugeben ist, in Reaktion auf die Verfolgung der Position des letzten vollständigen Befehls, der in die Warteschlange eingefügt ist.
    Konzept 16. Ein Verfahren zum Betreiben eines Mikroprozessors, wobei das Verfahren umfasst: (i) Ausgeben eines oder mehrerer Befehle an eine Ausführungslogik, die in dem Mikroprozessor enthalten ist, zur Ausführung; (ii) erneutes Ausgeben eines Befehls, der für die Wiederholung ausgewählt ist, aus einer Warteschlange, die ausgebildet ist, einen oder mehrere Befehle zu halten, die für eine Wiederholung während eines Nicht-Vorlaufbetriebs des Mikroprozessors ausgewählt sind; (iii) Identifizieren eines Vorlauf auslösenden Ereignisses, das mit einem Vorlauf auslösenden Befehl verknüpft ist; (iv) in Reaktion auf die Identifizierung des Vorlauf auslösenden Ereignisses: (a) Einfügen des Vorlauf auslösenden Befehls und des einen oder der mehreren weiteren Befehle in die Warteschlange, (b) Eintreten in einen Vorlaufbetrieb, und (c) Einfrieren der Warteschlange, während der Mikroprozessor im Vorlaufbetrieb ist; (v) erneutes Starten des Mikroprozessors in Reaktion auf die Behandlung des Vorlauf auslösenden Ereignisses; (vi) Beenden des eingefrorenen Zustands der Warteschlange beim Verlassen des Vorlaufbetriebs; und (vii) erneutes Ausgeben des Vorlauf auslösenden Befehls aus der Warteschlange und des einen oder der mehreren weiteren Befehle an die Ausführungslogik beim erneuten Starten des Mikroprozessors.
    Konzept 17. Das Verfahren wie beschrieben in Konzept 16, das ferner umfasst: verfolgen einer Position eines letzten vollständigen Befehls, der in die Warteschlange eingefügt ist; und Verfolgung einer Position eines Befehls, der von der Abhollogik nach dem erneuten Ausgeben des letzten vollständigen Befehls auszugeben ist.
    Konzept 18. Das Verfahren wie beschrieben in Konzept 17, wobei Verfolgen der Position des letzten vollständigen Befehls, der in die Warteschlange einzufügen ist, umfasst: Aktualisieren der Angabe über die Position des Befehls, der von der Abhollogik auszugeben ist.
    Konzept 19. Das Verfahren wie beschrieben in Konzept 17, das ferner umfasst: in Reaktion auf das Antreffen einer Angabe für die Position des letzten vollständigen Befehls in der Warteschlange während des erneuten Startens nach dem Vorlauf: Stoppen der erneuten Befehlsausgabe aus der Warteschlange; Ausgeben des Befehls, der von der Abhollogik auszugeben ist; und Ausgeben eines oder mehrerer weiterer Befehle aus der Abhollogik.
    Konzept 20. Das Verfahren wie beschrieben in einem der Konzepte 16–19, das ferner umfasst: Identifizierung eines Befehls für eine Wiederholung während des Vorlaufbetriebs; Einfügen des Befehls für die Wiederholung während des Vorlaufbetriebs in eine Vorlauf-Wiederhol-Warteschlange; und erneutes Ausgeben des Befehls zur Wiederholung während des Vorlaufbetriebs.
  • In den beschriebenen Beispielen können Befehle nacheinander abgeholt und ausgeführt werden, wodurch möglicherweise mehrere Taktzyklen erforderlich sind. Während dieser Zeit können wesentliche Teile des Datenpfads ungenutzt sein. Zusätzlich oder anstelle der Abholung einzelner Befehle können Vorabholungs-Verfahren eingesetzt werden, um die Leistung zu verbessern und um Engstellen bei der Verarbeitungszeit zu vermeiden, die mit Lese- und Speicheroperationen verknüpft sind (beispielsweise beim Lesen von Befehlen und beim Laden derartiger Befehle im Prozessorregister und/oder Ausführungswarteschlange). Es ist daher zu beachten, dass eine beliebige geeignete Weise der Abholung, Disponierung und Ausgabe von Befehlen eingesetzt werden kann, ohne von dem Schutzbereich der vorliegenden Offenbarung abzuweichen.
  • Diese schriftliche Beschreibung verwendet Beispiel, um die Erfindung zu offenbaren, wozu die beste Art gehört, und wodurch auch ein Fachmann auf dem entsprechenden Gebiet in die Lage versetzt wird, die Erfindung in die Praxis umzusetzen, was die Herstellung und die Verwendung von Geräten oder Systemen und auch die Ausführung der enthaltenen Verfahren mit einschließt. Der patentierbare Schutzbereich der Erfindung ist durch die Patentansprüche definiert und kann andere Beispiele umfassen, wie dies von dem Fachmann verstanden wird. Es ist beabsichtigt, dass derartige andere Beispiele im Schutzbereich der Patentansprüche eingeschlossen sind.

Claims (10)

  1. Ein Mikroprozessor aufweisend: einer Schedulerlogik zur Ausgabe eines oder mehr Befehle zur Ausführung; einer Ausführungslogik zum Ausführen des einen oder die mehreren Befehle, wie sie von der Schedulerlogik ausgegeben werden; einer Warteschlange zum Halten eines oder mehrerer Befehle für eine erneute Ausgabe an die Ausführungslogik; und einer Vorlauf-Steuerlogik zur Verwaltung eines Vorlaufbetriebs des Mikroprozessors, wobei die Vorlauf-Steuerlogik ausgebildet ist, um: ein Vorlauf auslösendes Ereignis zu erkennen, in Reaktion auf die Erkennung des Vorlauf auslösenden Ereignisses (i) den Mikroprozessor zu veranlassen, in Vorlauf zu arbeiten, und (ii) einen Vorlauf auslösenden Befehl, der mit dem Vorlauf auslösenden Ereignis assoziiert ist, in die Warteschlange zusammen mit einem oder mehreren weiteren Befehlen einzufügen, den Nicht-Vorlaufbetrieb nach Auflösung des Vorlauf auslösenden Ereignisses wieder aufzunehmen, und bei Wiederaufnahme des Nicht-Vorlaufbetriebs den Vorlauf auslösenden Befehl und den einen oder die mehr weiteren Befehle aus der Warteschlange an die Ausführungslogik erneut auszugeben.
  2. Der Mikroprozessor nach Anspruch 1, wobei die Schedulerlogik den einen oder die mehreren Befehle aus der Warteschlange an die Ausführungslogik erneut ausgibt.
  3. Der Mikroprozessor nach einem vorhergehenden Anspruch, der ferner einen Allokierzeiger aufweist, der ausgebildet ist, eine Einfügungsposition für einen Befehl anzugeben, der für die Einfügung in die Warteschlange ausgewählt ist.
  4. Der Mikroprozessor nach einem vorhergehenden Anspruch, der ferner einen Lesezeiger aufweist, der ausgebildet ist, eine Leseposition für die erneute Ausgabe in der Warteschlange anzugeben.
  5. Der Mikroprozessor nach Anspruch 4, wobei der Lesezeiger ferner ausgebildet ist, die Leseposition für die erneute Ausgabe bei der erneuten Ausgabe eines darin gespeicherten Befehls deallokieren.
  6. Der Mikroprozessor nach einem vorhergehenden Anspruch, der ferner eine Vorlauf-Wiederhol-Warteschlange aufweist, die ausgebildet ist, einen oder mehrere Befehle, die für die Wiederholung während des Vorlaufbetriebs identifiziert sind, zu halten.
  7. Der Mikroprozessor nach einem vorhergehenden Anspruch, der ferner aufweist: einen Verfolgungszeiger, der ausgebildet ist, eine Position eines letzten vollständigen Befehls, der in die Warteschlange eingefügt ist, zu verfolgen; und einen Neustart-Befehlszeiger, der ausgebildet ist, eine Position eines Befehls zu verfolgen, der von einer Abhollogik nach der erneuten Ausgabe des letzten vollständigen Befehls auszugeben ist.
  8. Der Mikroprozessor nach Anspruch 7, wobei der Neustart-Befehlszeiger ausgebildet ist, in Reaktion auf eine Aktualisierung des Verfolgungszeigers aktualisiert zu werden.
  9. Der Mikroprozessor nach einem vorhergehenden Anspruch, wobei die Warteschlange ausgebildet ist, einen oder mehrere Befehle, die für die Wiederholung während des Nicht-Vorlaufbetriebs identifiziert sind, zu halten.
  10. Der Mikroprozessor nach einem vorhergehenden Anspruch, wobei Einfügen des Vorlauf auslösenden Befehls zusammen mit dem einen oder den mehreren weiteren Befehlen umfasst: Einfrieren der Warteschlange, während der Mikroprozessor in Vorlaufbetrieb ist.
DE102013224370.7A 2012-12-28 2013-11-28 Erneute Ausgabe von als Warteschlange aufgereihten Befehlen nach Vorlauf Pending DE102013224370A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/730,407 US9823931B2 (en) 2012-12-28 2012-12-28 Queued instruction re-dispatch after runahead
US13/730,407 2012-12-28

Publications (1)

Publication Number Publication Date
DE102013224370A1 true DE102013224370A1 (de) 2014-07-03

Family

ID=50928676

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013224370.7A Pending DE102013224370A1 (de) 2012-12-28 2013-11-28 Erneute Ausgabe von als Warteschlange aufgereihten Befehlen nach Vorlauf

Country Status (4)

Country Link
US (1) US9823931B2 (de)
CN (1) CN103914279A (de)
DE (1) DE102013224370A1 (de)
TW (1) TW201439901A (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10482065B1 (en) * 2015-03-31 2019-11-19 EMC IP Holding Company LLC Managing deletion of replicas of files
US10353817B2 (en) * 2017-03-07 2019-07-16 International Business Machines Corporation Cache miss thread balancing

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5956753A (en) 1993-12-30 1999-09-21 Intel Corporation Method and apparatus for handling speculative memory access operations
GB2287111B (en) 1994-03-01 1998-08-05 Intel Corp Method for pipeline processing of instructions by controlling access to a reorder buffer using a register file outside the reorder buffer
US5487146A (en) 1994-03-08 1996-01-23 Texas Instruments Incorporated Plural memory access address generation employing guide table entries forming linked list
JPH0877347A (ja) 1994-03-08 1996-03-22 Texas Instr Inc <Ti> 画像/グラフィックス処理用のデータ処理装置およびその操作方法
JP2763499B2 (ja) 1994-11-30 1998-06-11 株式会社ナムコ 画像合成装置及び画像合成方法
US6665792B1 (en) * 1996-11-13 2003-12-16 Intel Corporation Interface to a memory system for a processor having a replay system
US5870582A (en) 1997-03-31 1999-02-09 International Business Machines Corporation Method and apparatus for completion of non-interruptible instructions before the instruction is dispatched
US6668291B1 (en) * 1998-09-09 2003-12-23 Microsoft Corporation Non-blocking concurrent queues with direct node access by threads
US6862635B1 (en) 1998-11-13 2005-03-01 Cray Inc. Synchronization techniques in a multithreaded environment
US6519694B2 (en) 1999-02-04 2003-02-11 Sun Microsystems, Inc. System for handling load errors having symbolic entity generator to generate symbolic entity and ALU to propagate the symbolic entity
US6535905B1 (en) 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US6484254B1 (en) * 1999-12-30 2002-11-19 Intel Corporation Method, apparatus, and system for maintaining processor ordering by checking load addresses of unretired load instructions against snooping store addresses
US6950925B1 (en) 2002-08-28 2005-09-27 Advanced Micro Devices, Inc. Scheduler for use in a microprocessor that supports data-speculative execution
US6981083B2 (en) 2002-12-05 2005-12-27 International Business Machines Corporation Processor virtualization mechanism via an enhanced restoration of hard architected states
US20040128448A1 (en) 2002-12-31 2004-07-01 Intel Corporation Apparatus for memory communication during runahead execution
US7587584B2 (en) 2003-02-19 2009-09-08 Intel Corporation Mechanism to exploit synchronization overhead to improve multithreaded performance
US7225299B1 (en) 2003-07-16 2007-05-29 Transmeta Corporation Supporting speculative modification in a data cache
US7062631B1 (en) 2003-07-17 2006-06-13 Transmeta Corporation Method and system for enforcing consistent per-physical page cacheability attributes
US7075541B2 (en) 2003-08-18 2006-07-11 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system
US7010648B2 (en) 2003-09-08 2006-03-07 Sun Microsystems, Inc. Method and apparatus for avoiding cache pollution due to speculative memory load operations in a microprocessor
US7293161B1 (en) * 2003-10-14 2007-11-06 Sun Microsystems, Inc. Deferring loads and stores when a load buffer or store buffer fills during execute-ahead mode
US7496732B2 (en) 2003-12-17 2009-02-24 Intel Corporation Method and apparatus for results speculation under run-ahead execution
US7310722B2 (en) 2003-12-18 2007-12-18 Nvidia Corporation Across-thread out of order instruction dispatch in a multithreaded graphics processor
US7340565B2 (en) 2004-01-13 2008-03-04 Hewlett-Packard Development Company, L.P. Source request arbitration
US7257699B2 (en) 2004-07-08 2007-08-14 Sun Microsystems, Inc. Selective execution of deferred instructions in a processor that supports speculative execution
US7194604B2 (en) 2004-08-26 2007-03-20 International Business Machines Corporation Address generation interlock resolution under runahead execution
US7890735B2 (en) 2004-08-30 2011-02-15 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
US20060149931A1 (en) * 2004-12-28 2006-07-06 Akkary Haitham Runahead execution in a central processing unit
US20060174228A1 (en) 2005-01-28 2006-08-03 Dell Products L.P. Adaptive pre-fetch policy
US7752627B2 (en) 2005-02-04 2010-07-06 Mips Technologies, Inc. Leaky-bucket thread scheduler in a multithreading microprocessor
US20060277398A1 (en) 2005-06-03 2006-12-07 Intel Corporation Method and apparatus for instruction latency tolerant execution in an out-of-order pipeline
US7730263B2 (en) * 2006-01-20 2010-06-01 Cornell Research Foundation, Inc. Future execution prefetching technique and architecture
US7519775B2 (en) * 2006-02-23 2009-04-14 Sun Microsystems, Inc. Enforcing memory-reference ordering requirements at the L2 cache level
US8621120B2 (en) 2006-04-17 2013-12-31 International Business Machines Corporation Stalling of DMA operations in order to do memory migration using a migration in progress bit in the translation control entry mechanism
US8035648B1 (en) 2006-05-19 2011-10-11 Nvidia Corporation Runahead execution for graphics processing units
US7802032B2 (en) * 2006-11-13 2010-09-21 International Business Machines Corporation Concurrent, non-blocking, lock-free queue and method, apparatus, and computer program product for implementing same
US7895421B2 (en) 2007-07-12 2011-02-22 Globalfoundries Inc. Mechanism for using performance counters to identify reasons and delay times for instructions that are stalled during retirement
US20090327661A1 (en) 2008-06-30 2009-12-31 Zeev Sperber Mechanisms to handle free physical register identifiers for smt out-of-order processors
US8200771B2 (en) * 2008-10-10 2012-06-12 International Business Machines Corporation Workload migration using on demand remote paging
US8639886B2 (en) * 2009-02-03 2014-01-28 International Business Machines Corporation Store-to-load forwarding mechanism for processor runahead mode operation
US8635437B2 (en) 2009-02-12 2014-01-21 Via Technologies, Inc. Pipelined microprocessor with fast conditional branch instructions based on static exception state
US9086889B2 (en) * 2010-04-27 2015-07-21 Oracle International Corporation Reducing pipeline restart penalty
US8719625B2 (en) 2010-07-22 2014-05-06 International Business Machines Corporation Method, apparatus and computer program for processing invalid data
US8627044B2 (en) 2010-10-06 2014-01-07 Oracle International Corporation Issuing instructions with unresolved data dependencies
US9645929B2 (en) 2012-09-14 2017-05-09 Nvidia Corporation Speculative permission acquisition for shared memory
US9740553B2 (en) 2012-11-14 2017-08-22 Nvidia Corporation Managing potentially invalid results during runahead
US9547602B2 (en) 2013-03-14 2017-01-17 Nvidia Corporation Translation lookaside buffer entry systems and methods

Also Published As

Publication number Publication date
TW201439901A (zh) 2014-10-16
US9823931B2 (en) 2017-11-21
CN103914279A (zh) 2014-07-09
US20140189313A1 (en) 2014-07-03

Similar Documents

Publication Publication Date Title
DE69534148T2 (de) Rechnersystem zur Ausführung von Verzweigungsbefehlen
DE69908193T2 (de) Ausführung von speicher- und ladeoperationen mittels einer linkdatei
DE112011105042B4 (de) Indikatoren zur Aufzeichnung einer letzten Verzweigung für einen Transaktionsspeicher
DE60308201T2 (de) Datenverarbeitungssystem mit externen und internen anweisungssätzen
DE69932066T2 (de) Mechanismus zur &#34;store-to-load forwarding&#34;
DE60009151T2 (de) Vorhersage von datenbeförderung von speicher- zum ladebefehl mit untrainierung
DE69826418T2 (de) Anordnung zum Abtasten mehrerer Instruktionen in einer Prozessorpipeline
DE102013201767B4 (de) Übersetzungs-Adresse-Zwischenspeicher für einen Mikroprozessor
DE112005002305B4 (de) Thread-Livelock-Einheit
DE112004002848B4 (de) Mikroprozessor und Verfahren zum Verifizieren einer Speicherdatei in einem derartigen Mikroprozessor
DE102013219856A1 (de) Handhaben von potentiell ungültigen Ergebnissen während Vorauslaufen
DE112010004322T5 (de) Vorhersagen und Vermeiden von Operand-Speichervorgang-Vergleich-Gefahren in Mikroprozessoren mit abweichender Reihenfolge
DE112011101364T5 (de) Fehlerbehebung in Multithread-Code
DE60005860T2 (de) Ablaufsteuerung zum ausgeben und wiederausgeben von ketten abhängiger befehle
DE102014000382A1 (de) Vorhersage indirekter Abzweigungen
DE102013206501A1 (de) Kontroll-Punkt-versehener Puffer für Wiedereintreten aus Vorauslaufen
DE112006001698T5 (de) Grundfunktionen zum Verbessern von Thread-Level Spekulation
DE19855806A1 (de) Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen
DE112004002267T5 (de) Ruhezustandsmechansimus für virtuelles Multithreading
DE102013224137A1 (de) Anweisungs-Kategorisierung für Vorauslaufen-Operation
US9891972B2 (en) Lazy runahead operation for a microprocessor
DE102013201387A1 (de) Zugreifen und Managen von Code-Übersetzungen in einem Mikroprozessor
DE112018006127T5 (de) Abschliessen von verbundenen einträgen einer globalen abschlusstabelle in einem out-of-order-prozessor
DE602004010265T2 (de) Load-store-einheit mit wiederholungsmechanismus
DE10045188A1 (de) Cacheadresskonfliktvorrichtung ohne Speicherpuffer

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: KRAUS & WEISERT PATENTANWAELTE PARTGMBB, DE

R016 Response to examination communication