DE102013206501A1 - Kontroll-Punkt-versehener Puffer für Wiedereintreten aus Vorauslaufen - Google Patents

Kontroll-Punkt-versehener Puffer für Wiedereintreten aus Vorauslaufen Download PDF

Info

Publication number
DE102013206501A1
DE102013206501A1 DE102013206501A DE102013206501A DE102013206501A1 DE 102013206501 A1 DE102013206501 A1 DE 102013206501A1 DE 102013206501 A DE102013206501 A DE 102013206501A DE 102013206501 A DE102013206501 A DE 102013206501A DE 102013206501 A1 DE102013206501 A1 DE 102013206501A1
Authority
DE
Germany
Prior art keywords
instruction
buffer
pointer
microprocessor
logic
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
DE102013206501A
Other languages
English (en)
Inventor
Guillermo J. Rozas
Paul Serris
Brad Hoyt
Sridharan Ramakrishnan
Hens Vanderschoot
Ross Segelken
Darrell Boggs
Magnus Ekman
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 DE102013206501A1 publication Critical patent/DE102013206501A1/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
    • 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/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)
  • Retry When Errors Occur (AREA)

Abstract

Ausführungsformen sind bereitgestellt, welche ein erneutes Absetzen einer Anweisung betreffen, welche zur erneuten Ausführung aus einem Puffer ausgewählt ist, daraufhin, dass ein Mikroprozessor in eine bestimmte Ausführungs-Stelle nach Vorauslaufen eintritt. In einem Beispiel ist ein Mikroprozessor bereitgestellt. Der Beispiel-Mikroprozessor umfasst Wiederholen-Logik, eine oder mehrere Ausführungs-Mechanismen zum Ausführen einer abgerufenen Anweisung, welche mittels der Holen-Logik bereitgestellt ist, und Planer-Logik zum Planen der abgerufenen Anweisung zur Ausführung. Die Beispiel-Planer-Logik umfasst einen Puffer zum Speichern der abgerufenen Anweisung und eine oder mehrere zusätzlichen Anweisungen, wobei die Planer-Logik konfiguriert ist, daraufhin, dass der Mikroprozessor bei einer bestimmten Ausführungs-Stelle nach Vorauslaufen eintritt, eine Anweisung aus dem Puffer erneut abzusetzen, welche vorher an einen der Ausführungs-Mechanismen abgesetzt worden ist.

Description

  • HINTERGRUND
  • Anweisungen in Mikroprozessoren werden häufig erneut zur Ausführung für ein oder mehrere Male aufgrund von Pipeline-Fehlern oder Daten-Gefährdungen (data hazards) verschickt bzw. abgesetzt (redispatched). Eine Anweisung mag z. B. benötigt sein, erneut abgesetzt zu werden, wo sich eine Anweisung auf ein Ergebnis bezieht, welches noch nicht berechnet oder abgerufen worden ist. Weil es nicht bekannt ist, ob ein unvorhergesehener Pipeline-Stillstand (stall) während der Ausführung der Anweisung auftreten wird, kann eine Ausführung der Anweisung zu einer Vorauslauf-Operation (runahead operation) führen, welche konfiguriert ist, andere Fehler bzw. Verfehlungen (misses) zu detektieren, während der anhängige Fehler aufgelöst wird.
  • ZUSAMMENFASSUNG
  • Verschiedene Ausführungsformen sind bereitgestellt, welche ein erneutes Absetzen für erneute Ausführung einer Anweisung von einem Puffer eines Mikroprozessors betreffen. In einer Ausführungsform umfasst ein Mikroprozessor Holen-Logik; einen oder mehrere Ausführungs-Mechanismen zum Ausführen einer abgerufenen Anweisung, welche mittels der Holen-Logik bereitgestellt ist; und Planer-Logik (scheduler logic) zum Planen (scheduling) der abgerufenen Anweisung zur Ausführung. Die Planer-Logik umfasst einen Puffer zum Speichern der abgerufenen Anweisung und einer oder mehrerer zusätzlicher Anweisungen. Die Planer-Logik kann konfiguriert sein, daraufhin, dass der Mikroprozessor bei einer bestimmten Ausführungs-Stelle nach Vorauslaufen wieder eintritt (re-entering), eine Anweisung von dem Puffer erneut abzusetzen, welche vorher an einen der Ausführungs-Mechanismen abgesetzt worden ist.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 zeigt schematisch einen Mikroprozessor eines Rechen-Geräts gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 2 zeigt ein Verfahren eines Erneut-Absetzens einer Anweisung von einem Puffer gemäß einer Ausführungsform der vorliegenden Offenbarung.
  • 3 zeigt ein Flussdiagramm, welches ein Verfahren eines Erneut-Absetzens zur erneuten Ausführung einer Anweisung von einem Puffer nach Vorauslaufen gemäß einer Ausführungsform der vorliegenden Offenbarung illustriert.
  • 4 zeigt ein Verfahren eines Kontroll-Punkt-Versehens (checkpointing) und eines Erneut-Absetzens einer Anweisung von einem Puffer gemäß einer Ausführungsform der vorliegenden Offenbarung.
  • 5 zeigt schematisch eine Mehrzahl von Speicher-Zellen für einen Puffer gemäß einer Ausführungsform der vorliegenden Offenbarung.
  • DETAILLIERTE BESCHREIBUNG
  • In modernen Mikroprozessoren sind Architektur-Niveau-Anweisungen oft in Mikro-Operationen zur Ausführung in einer Pipeline getrennt bzw. dividiert. Solche Mikro-Operationen können individuell oder als Bündel von Mikro-Operationen an verschiedene Ausführungs-Mechanismen in dem Mikroprozessor abgesetzt werden. Wenn eine oder mehrere Mikro-Operationen abgesetzt werden, ist nicht bekannt, ob Ausführung einer Mikro-Operation vollenden wird oder nicht. Anders ausgedrückt, ist es nicht bekannt, ob ein Fehler oder eine Ausnahme-Bedingung (exception) während einer Ausführung einer Mikro-Operation auftreten wird. In einigen Beispielen kann, wenn eine Mikro-Operation nicht vollendet, die Mikro-Operation erneut ausgeführt werden, nachdem der unerwartete Stillstand bzw. Unterbrechung (stall) aufgelöst ist. Weil andere Fehler auftreten können, ist es möglich, dass eine Mikro-Operation mehrere Male vor der Beendigung der Mikro-Operation erneut ausgeführt wird.
  • Ein gewöhnlicher Pipeline-Ausführungs-Stillstand, welcher während einer Ausführung eines Bündels auftreten kann, ist eine Lade-Operation, welche zu einem Zwischenspeicher-Fehler bzw. Verfehlen (cache miss) führt. Solche Zwischenspeicher-Fehler können ein Eintreten (entrance) in einen Vorauslauf-Modus(runahead mode)-Betrieb (nachfolgend als ein „Vorauslaufen” bezeichnet) auslösen, welche konfiguriert ist, andere Zwischenspeicher-Fehler, Anweisungs-Adressen-Übersetzungs-Puffer-Fehler(instruction translation lookaside buffer misses), Verzweigungs-Fehl-Vorhersagen (branch mispredicts), oder dergleichen zu detektieren, während der anfängliche Lade-Fehler aufgelöst bzw. gelöst wird. Wie hierin benutzt, beschreibt Vorauslaufen virtuell irgendein geeignetes spekulatives Ausführungsschema, welches von einem Lang-Latenz-Ereignis herrührt, wie etwa ein Zwischenspeicher-Fehler, wo das resultierende Lade-Ereignis die fehlende Anweisung oder Daten von einer Niedrigerer-Zugriff-Speicher-Stelle zieht bzw. holt (pulls). Sobald der anfängliche Lade-Fehler aufgelöst ist, verlässt der Mikroprozessor Vorauslaufen und die Anweisung wird erneut ausgeführt. Ein erneutes Holen der Anweisung von dem Anweisungs-Zwischenspeicher oder unifizierten Zwischenspeicher kann jedoch einen Prozessor-Betrieb verlangsamen. Demgemäß sind hierin verschiedene Ausführungsformen offenbart, welche ein erneutes Absetzen einer Anweisung betreffen, welche zu erneuten Ausführung von einem Puffer ausgewählt ist, daraufhin, dass ein Mikroprozessor erneut in eine bestimmte Ausführungs-Stelle nach Vorauslaufen eintritt. In einem Beispiel ist ein Mikroprozessor bereitgestellt. Der Beispiel-Mikroprozessor umfasst Holen-Logik, einen oder mehrere Ausführungs-Mechanismen zum Ausführen einer abgerufenen Anweisung, welche mittels der Holen-Logik bereitgestellt ist, und eine Planer-Logik zum Planen der Anweisung zur Ausführung. Die Beispiel-Planer-Logik umfasst einen Puffer zum Speichern der abgerufenen Anweisung und einer oder mehrerer zusätzlicher Anweisungen, wobei die Planer-Logik konfiguriert ist, daraufhin, dass der Mikroprozessor bei einer bestimmten Ausführungs-Stelle nach Vorauslaufen erneut eintritt, eine Anweisung von bzw. aus (from) dem Puffer erneut abzusetzen, welche vorher an einen der Ausführungs-Mechanismen abgesetzt worden ist.
  • 1 zeigt schematisch eine Ausführungsform eines Mikroprozessors 100, welcher in Verbindung mit den hierin beschriebenen Systemen und Verfahren eingesetzt werden kann. Mikroprozessor 100 umfasst verschiedentlich Prozessor-Register 109 und kann auch eine Speicher-Hierarchie 110 umfassen, welche einen L1-Prozessor-Zwischenspeicher 110A, einen L2-Prozessor-Zwischenspeicher 110B, einen L3-Prozessor-Zwischenspeicher 110C, Hauptspeicher 110D (z. B. einen oder mehrere DRAM-Chips), sekundären Speicher 110E (z. B. magnetische und/oder optische Speicher-Einheiten) und/oder tertiären Speicher 110F (z. B. eine Bandfarm) umfassen kann. Es wird verstanden sein, dass die Beispiel-Speicher/Speicherungs-Komponenten in einer ansteigenden Ordnung von Zugriffs-Zeit und Kapazität aufgelistet sind, obwohl es mögliche Ausnahmen gibt.
  • Eine Speicher-Steuerung 110G kann benutzt werden, um das Protokoll zu handhaben und die Signal-Schnittstelle bereitzustellen, die von Hauptspeicher 110D erforderlich ist und erforderlich ist, Speicher-Zugriffe zu planen. Die Speicher-Steuerung kann auf dem Prozessor-Die oder einem separaten Die implementiert sein. Es ist zu verstehen, dass die oben bereitgestellte Speicher-Hierarchie nicht begrenzend ist und dass andere Speicher-Hierarchien benutzt werden können, ohne von dem Geltungsbereich dieser Offenbarung abzuweichen.
  • Mikroprozessor 100 umfasst auch eine Pipeline, welche in vereinfachter Form in 1 als Pipeline 102 illustriert ist. Ein in einer Pipeline-Anordnen (pipelining) kann erlauben, dass mehr als eine Anweisung in verschiedenen Stadien bzw. Stufen eines Abrufens und einer Ausführung gleichzeitig sein können. Anders ausgedrückt kann ein Satz von Anweisungen durch verschiedene Ausführungs-Mechanismen, welche in einer Pipeline 102 umfasst sind, passiert werden bzw. durchgeschleust werden, während eine andere Anweisung und/oder Daten von Speicher abgerufen wird. Somit können die Ausführungs-Mechanismen benutzt werden, während Stromaufwärts-Abruf-Mechanismen darauf warten, dass Speicher Anweisungen und/oder Daten zurückgibt, was verschiedene Strukturen, wie etwa Zwischenspeicher- und Verzweigungs-Prädiktoren involviert bzw. umgreift, so dass andere Zwischenspeicher-Fehler und/oder Verzweigungs-Fehl-Vorhersagen möglicherweise entdeckt werden können. Diese Zugangsweise kann möglicherweise Anweisung- und Daten-Verarbeitung mittels des Mikroprozessors relativ zu Zugangsweisen beschleunigen, welche Anweisungen und/oder Daten in einer individuellen, serialen Weise abrufen und ausführen.
  • Wie in 1 gezeigt ist, umfasst Pipeline 102 Holen-Logik 120, Dekodier-Logik 122, Planer-Logik 124, Ausführungs-Logik 130, mem-Logik 132 und Rückschreibe-Logik 134. Holen-Logik 120 ruft Anweisungen von der Speicher-Hierarchie 110 ab, typischerweise entweder von dem unifizierten oder dedizierten L1-Zwischenspeichern, welcher durch L2-L3-Zwischenspeicher und Hauptspeicher unterstützt bzw. abgesichert sind (backed). Dekodier-Logik 122 dekodiert die Anweisungen, z. B. mittels eines Parsens bzw. textuellen Analysierens von Opcodes, Operanden und Adressierungs-Moden. Auf ein Parsen hin, werden die Anweisungen dann mittels Planer-Logik 124 zur Ausführung mittels der Ausführungs-Logik 130 geplant bzw. angesetzt (scheduled).
  • Planer-Logik 124 umfasst einen Puffer 126 zum Speichern von einer oder mehreren Anweisungen. Wenn Anweisungen in Planer-Logik 124 eintreten, sind sie in Puffer 126 in einer Schlange angeordnet (queued). Die Anweisungen sind in dem Puffer 126 gehalten, selbst nachdem die Anweisungen an Ausführungs-Logik 130 geschickt bzw. abgesetzt sind. Somit kann es möglich sein, vorher abgesetzte bzw. verschickte Anweisungen von dem Puffer in Antwort auf Pipeline-Diskontinuitäten erneut abzusetzen, welche dazu führen, dass eine Anweisung daran scheitert, nach einem Absetzen bzw. Verschicken zu vollenden, wie etwa ein Laden, welches in einem Daten-Zwischenspeicher verfehlt bzw. scheitert. Solch ein erneutes Absetzen kann dadurch ohne ein erneutes Holen der Anweisungen von außerhalb des Puffers durchgeführt werden. Eine Anweisung kann somit ein oder mehrere Male erneut abgesetzt oder „erneut-gespielt” bzw. „wiederholt” (re-played) werden, bis bestimmt ist, dass die Anweisung einen vollendeten Zustand erreicht, bei welcher Zeit die Anweisung logisch und/oder physikalisch von dem Puffer entfernt werden kann.
  • Wie in 1 gezeigt ist, kann in einigen Umständen, wie etwa während Vorauslaufen-Bedingungen, welche in größerem Detail unten beschrieben sind, Puffer 126 mit einem Kontroll-Punkt versehen werden (checkpointed), um den Zustand von Puffer 126 während eines Vorauslaufens zu erhalten, während eine nicht mit einem Kontroll-Punkt versehene Arbeits-Zustands-Version von Puffer 126 Anweisung zum Absetzen in eine Schlange ansetzt (queues). 1 zeigt auch eine optionale Umgehung (bypass), welche konfiguriert ist, Anweisungen an Ausführungs-Logik 130 gleichzeitig mit Speicherung der Anweisung in Puffer 126 weiterzuleiten.
  • In einigen Ausführungsformen kann Puffer 126 konfiguriert sein, Anweisungen in der Form von Anweisung-Satz-Architektur-(ISA)-Anweisungen zu speichern. Zusätzlich oder alternativ kann in einigen Ausführungsformen Puffer 126 konfiguriert sein, Bündel von Mikro-Operationen zu speichern, wobei jede Mikro-Operation einer oder mehreren ISA-Anweisungen oder Teilen von ISA-Anweisungen entspricht. Es wird geschätzt werden, dass virtuell irgendeine geeignete Anordnung zum Speichern von Anweisungen in Bündeln von Mikro-Operationen eingesetzt werden kann, ohne von dem Geltungsbereich der vorliegenden Offenbarung abzuweichen. Zum Beispiel kann in einigen Ausführungsformen eine einzelne Anweisung in einer Mehrzahl von Bündeln von Mikro-Operationen gespeichert sein, während in einigen Ausführungsformen eine einzelne Anweisung als ein Bündel von Mikro-Operationen gespeichert werden kann. In noch anderen Ausführungsformen kann eine Mehrzahl von Anweisungen als ein Bündel von Mikro-Operationen gespeichert sein. In noch anderen Ausführungsformen kann Puffer 126 individuelle Anweisungen oder Mikro-Operationen speichern, z. B. Anweisungen oder Mikro-Operationen, welche überhaupt keine Bündel aufweisen.
  • Damit der Grenze-Zeiger (boundary pointer) auf eine gültige Stelle auf einen Eintritt in Vorauslaufen hin zeigt, ist der Puffer 126 konfiguriert, zumindest so groß zu sein, wie eine Zahl von Bündeln, welche von einem bestimmten Bündel umfasst sind, welches zu einem Eintritt in Vorauslaufen zu einem letzten Bündel in derselben Anweisung führt, wie dieses bestimmte Bündel, was auch als eine Schwanz-Größe bzw. End-Größe (tail size) für eine Anweisung bezeichnet werden kann. Somit kann in Ausführungsformen, wo Bündel von Mikro-Operationen in Puffer 126 gespeichert sind, Puffer 126 in Größe gemäß einer vorbestimmten End-Größe für Mikrooperationen bemessen sein, welche mit einer Architektur-Anweisung assoziiert sind. Solche ISA-Anweisungen und/oder -Bündel können erneut an Ausführungs-Logik 130 irgendeine geeignete Anzahl von Malen abgesetzt bzw. geschickt werden.
  • Pipeline 102 umfasst auch mem-Logik 132 zum Durchführen von Lade- und/oder Speicher-Operationen und Zurückschreibe-Logik 134 zum Schreiben des Ergebnisses von Operationen auf eine geeignete Stelle, wie etwa Register 109. Es sollte verstanden sein, dass die obigen in Pipeline 102 gezeigten Stufen illustrativ für eine typische RISC-Implementierung sind und nicht als begrenzend gemeint sind. Zum Beispiel können in einigen Ausführungsformen die Holen-Logik- und die Planer-Logik-Funktionalität stromaufwärts einer Pipeline bereitgestellt sein, wie etwa ein Übersetzen bzw. Kompilieren von VLIW-Anweisungen oder Code-Morphing. In einigen anderen Ausführungsformen kann die Planer-Logik in der Holen-Logik und/oder Dekodier-Logik des Mikroprozessors umfasst sein. Allgemeiner kann ein Mikroprozessor Holen-, Dekodier-, und Ausführungs-Logik umfassen, wobei jede von diesen eine oder mehrere Stufen aufweisen kann, wobei mem- und Rückschreib-Funktionalität mittels der Ausführungs-Logik ausgeführt wird. Die vorliegende Offenbarung ist gleich anwendbar auf diese oder andere Mikroprozessor-Implementierungen, einschließlich Hybrid-Implementierungen, welche VLIW-Anweisungen und/oder andere Logik-Anweisungen benutzen können.
  • In den beschriebenen Beispielen können Anweisungen eine zu einer Zeit geholt und ausgeführt werden, was möglicherweise mehrere Takt-Zyklen erfordert. Während dieser Zeit können bedeutende Teile des Daten-Pfades unbenutzt sein. Zusätzlich zu oder anstatt eines Einzel-Anweisungs-Holens, können Zuvor-Holen-Verfahren benutzt werden, um Performance zu verbessern und Latenz-Flaschen-Hälse zu vermeiden, welche mit Lese- und Speicher-Operationen assoziiert sind (d. h. das Lesen von Anweisungen und Laden solcher Anweisungen in Prozessor-Register und/oder Ausführungs-Queues). Demgemäß wird geschätzt werden, dass virtuell irgendeine Weise eines Holens, Planens und Absetzens von Anweisungen benutzt werden kann, ohne von dem Geltungsbereich der vorliegenden Offenbarung abzuweichen.
  • 2 zeigt schematisch eine Ausführungsform eines Verfahrens 200 zum Erneut-Absetzen einer Anweisung, welche in einem Puffer gespeichert ist, unter Benutzung einer Mehrzahl von Zeigern, um Adressen von Anweisungen nachzuverfolgen (tracking), welche in dem Puffer gespeichert sind für eine Arbeits-Status-Version (z. B. eine nicht mit einem Kontroll-Punkt versehene (non-checkpointed) Version) des Puffers bei vier sequenziellen Zeit 202, Zeit 204, Zeit 206 und Zeit 208. Das in 2 illustrierte Verfahren ist für illustrative Zwecke bereitgestellt und ist nicht als begrenzend beabsichtigt, da virtuell irgendeine geeignete Variation von dem unten beschriebenen Verfahren in einigen Ausführungsformen umfasst sein kann, ohne von dem Geltungsbereich der vorliegenden Offenbarung abzuweichen.
  • In dem in 2 gezeigten Beispiel sind vier Bündel A1, A2, B1, C1 und C2 in dem Puffer bei Zeit 202 gespeichert. Bündel A1 und A2 entsprechen einer architektonischen Anweisung A, Bündel B1 entspricht einer architektonischen Anweisung B und Bündel C1 und C2 entsprechen einer architektonischen Anweisung C. Alle Bündel, welche mit Anweisung C assoziiert sind, sind nicht vollständig in den Puffer bei Zeit 202 eingefügt, da ein letztes Bündel (C3) noch nicht in den Puffer bei Zeit 202 eingefügt worden ist.
  • Wie in 2 gezeigt ist, referenziert ein Zeiger „A” einen Allokations-Zeiger, welcher anzeigt, wo das nächste Bündel in den Puffer einzufügen ist. Virtuell irgendein geeignetes Schema kann zum Planen von Anweisungen in und aus dem Puffer eingesetzt werden; der in 2 gezeigte Puffer ist als ein logischer First-in-, logischer first-out-zirkulärer Puffer gezeigt. Der Allokations-Zeiger wird aktualisiert, wenn eine Anweisung (oder ein Teil davon) in den Puffer eingefügt bzw. eingesetzt wird. In dem in 2 gezeigten Beispiel wird der Allokations-Zeiger zwischen Zeit 202 und Zeit 204 aktualisiert, wenn ein Bündel C3, welches Anweisung C entspricht, in den Puffer eingefügt wird, und wieder zwischen Zeit 204 und Zeit 206, wenn ein Bündel D1 und D2 bei Zeit 208, welche einer Anweisung D entsprechen, in den Puffer eingefügt werden. Man bemerke, dass irgendeine der architektonischen Anweisung eine ISA-Anweisungen sein kann, ohne von dem Geltungsbereich der vorliegenden Offenbarung abzuweichen.
  • Zeiger „R” referenziert einen Lese-Zeiger, welcher eine Puffer-Adresse oder eine Puffer-Stelle eines Anweisungs-Eintrages indiziert, welcher in Vorbereitung für ein Absetzen an den Ausführungs-Mechanismus ausgewählt ist. Zum Beispiel kann der Lese-Zeiger auf eine Adresse für die ausgewählte Anweisung zeigen, so dass verschiedene Abhängigkeiten der ausgewählten Anweisung gelesen werden können, bevor die Anweisung abgesetzt bzw. geschickt wird. Der Lese-Zeiger wird aktualisiert, wenn die ausgewählte Anweisung (oder ein Teil davon) an den Ausführungs-Mechanismus ausgestellt ist. In dem in 2 gezeigten Beispiel wird der Lese-Zeiger zwischen Zeit 202 und Zeit 204 aktualisiert, wenn Bündel B1, welches der Anweisung B entspricht, zum Absetzen bzw. Schicken gelesen wird, und wieder, wenn Bündel C1, welches der Anweisung C entspricht, zum Absetzen gelesen wird.
  • Zeiger „D” referenziert einen De-Allokations-Zeiger, welcher eine Puffer-Adresse oder eine Puffer-Stelle eines Anweisungs-Eintrages indiziert, welcher vollendet ist und bereit ist, logisch, und in einigen Ausführungsformen physikalisch, von dem Puffer entfernt zu werden. Somit zeigt der De-Allokations-Zeiger auf eine Anweisung, welche die nächste Anweisung ist, welche von dem Puffer zu entfernen ist, dadurch, dass sie z. B. überschrieben und/oder gelöscht wird. Somit wird eine Anweisung, welche in den Puffer mittels des Allokations-Zeigers eingefügt wird und mittels des Lese-Zeigers gelesen wird, in dem Puffer verbleiben, bis zur Entfernung mittels des De-Allokations-Zeigers angezeigt ist. Der De-Allokations-Zeiger wird aktualisiert, wenn die ausgewählte Anweisung (oder ein Teil davon) vollendet. In dem in 2 gezeigten Beispiel wird der De-Allokations-Zeiger zwischen Zeit 202 und Zeit 204 aktualisiert, wenn Bündel A1, welches der Anweisung A entspricht, für De-Allokation bereit gemacht wird (readied), und zwischen Zeit 204 und Zeit 206, wenn Bündel A2 zur De-Allokation bereit gemacht wird.
  • In einigen Ausführungsformen kann der De-Allokations-Zeiger dadurch vorgerückt werden, dass er sich von Bündel zu Bündel bewegt (z. B. von A1 nach A2), wenn die Bündel abgesetzt werden können und von dem Puffer auf einer Bündel-pro-Bündel-Basis deallokiert werden. In einigen Ausführungsformen kann jedoch der De-Allokations-Zeiger dadurch vorgerückt werden, dass er sich von Anweisung zu Anweisung bewegt, selbst wenn der Puffer Bündel speichert. Zum Beispiel kann der De-Allokations-Zeiger von A1 nach B1 unter Auslassung von A2 vorgerückt werden, selbst wenn die Bündel individuell abgesetzt werden (z. B. A1, A2, B1, etc.). Demgemäß kann ein inkrementelles Vorrücken des De-Allokations-Zeigers und eines oder mehrerer der anderen Zeiger, wie etwa der Lese-Zeiger, verschieden sein während eines Arbeits-Zustands des Puffers in einigen Ausführungsformen.
  • Es wird geschätzt werden, dass, obwohl die Sequenz des A-, R-, und D-Zeigers in der Ordnung, welcher mittels einer Anweisung begegnet ist, beschränkt ist (z. B. in der Ordnung A, R und D), kann irgendeine Zahl von Puffer-Positionen die A-, R- und D-Zeiger separieren und ferner können andere geeignete Puffer-Zeiger dazwischen kommen, wie unten beschrieben ist.
  • Zeiger „RY” referenziert einen Erneut-Spielen bzw. Wiederholen(replay)-Zeiger, welcher eine Puffer-Adresse oder eine Puffer-Stelle einer Anweisung anzeigt, welche zur erneuten Ausführung erneut abzusetzen ist. Der Wiederholen-Zeiger wird zusammen bzw. entlang mit dem De-Allokations-Zeiger aktualisiert, da, sobald eine Anweisung (oder ein Teil davon) vollendet ist, ein Wiederholen dieser Anweisung nicht länger eine Aufgabe ist. In der in 2 gezeigten Ausführungsform zieht der Wiederholen-Zeiger den Lese-Zeiger hinter sich her bzw. hängt diesen an (trails), so dass eine zuvor gelesene und abgesetzte Anweisung in dem Fall eines geeigneten Pipeline-Ausführungs-Stillstands wiederholt werden kann. Auf ein Wiederholen hin wird der Wiederholen-Zeiger in den Lese-Zeiger kopiert, so dass der Lese-Zeiger die Anweisung, für welche Wiederholen ausgewählt ist, lesen wird. In dem in 2 gezeigten Beispiel wird der Wiederholen-Zeiger in den Lese-Zeiger bei Zeit 206 kopiert, so dass der Lese-Zeiger und der Wiederholen-Zeiger beide auf Bündel C1 bei Zeit 208 zeigen. Somit wird der Lese-Zeiger auf Bündel C1 in Vorbereitung für erneutes Absetzens dieses Bündels zur erneuten Ausführung zeigen.
  • In dem in 1 bei Zeit 208 gezeigten Beispiel ist der Lese-Zeiger dargestellt, bereit zu sein, Bündel C1 in Vorbereitung für ein erneutes Absetzen und eine erneute Ausführung zu lesen. Wenn Bündel C1 aufgrund irgendeines Pipeline-Ausführungs-Stillstandes bzw. -Unterbrechung nicht vollendet, kann der Wiederholen-Zeiger in den Lese-Zeiger kopiert werden, um dazu zu führen, dass Bündel C1 wieder erneut abgesetzt wird, bis das Bündel erfolgreich vollendet. Sobald das Bündel vollendet, wird der Wiederholen-Zeiger vorgerückt und der De-Allokations-Zeiger wird anzeigen, dass Bündel C1 bereit ist, logisch von dem Puffer entfernt zu werden.
  • In einigen Ausführungsformen kann ein erneutes Absetzen oder Wiederholen einer Anweisung von dem Puffer von einem Austritt des Mikroprozessors aus einem Vorauslaufen-Zustand resultieren. Fortführend mit dem in 1 gezeigten Beispiel kann z. B. ein Zwischenspeicher-Verfehlen bei L3-Zwischenspeicher 110C eine Anfrage nach einer Anweisung von Hauptspeicher 110D auslösen, welcher eine vergleichsweise langsamere Erfüllungs-Zeit relativ zu einem Verfehlen bei L2-Zwischenspeicher 110B und einem Treffer bei L3-Zwischenspeicher 110C haben kann. Sobald das Verfehlen erkannt ist, wird der Mikroprozessor mit einem Kontroll-Punkt versehen (checkpointed), so dass der Mikroprozessor zu dem mit Kontroll-Punkt versehenen Zustand zurückkehren kann, nachdem ein Vorauslaufen endet (z. B. sobald der Lade-Fehler erfüllt ist). Wenn eine bestimmte Anweisung Vorauslaufen startet, wird somit diese Anweisung als eine Vorauslaufen-Anweisung vollenden und dann erneut abgesetzt, wiederum, nachdem Vorauslaufen endet.
  • Da es unbekannt ist, wann in Vorauslaufen eingetreten wird, und der Puffer mit Kontroll-Punkt versehen wird, zeigt 2 auch einen Wiederstart-Anweisungs-Zeiger, welcher konfiguriert ist, eine Adresse oder eine Stelle, welche einer letzten vollendeten Anweisung folgt, nachzuvollziehen bzw. nachzuverfolgen (track), z. B. eine Adresse für eine Anweisung, welche einer Anweisung folgt, welche alle ihre konstituierenden Teile in den Puffer geladen hat. Weil der Puffer auf einen Zustand zurückgesetzt wird, welcher nicht irgendeine unvollendete Anweisung beim Wiederstarten umfasst, wird ein Umlenken oder Umsetzen (directing) des Wiederstart-Anweisungs-Zeigers, auf die Adresse für die unvollendete Anweisung zu zeigen, dazu führen, dass die Bündel für die unvollendete Anweisung aus der geeigneten Stelle in dem Speicher geladen werden, wenn ein Wiederstart in Ordnung ist. Wie oben eingeführt, kann eine Anweisung, welche nach einer letzten vollendeten Anweisung, welche in dem Puffer gehalten ist, ausgeführt wird, von außerhalb des Puffers geholt werden, während Anweisungen, welche in dem Puffer gehalten sind, erneut abgesetzt sind. In einigen Ausführungsformen kann der Wiederstart-Anweisungs-Zeiger einen Anweisungs-Zeiger für die Holen-Logik darauf richten, eine andere Anweisung von außerhalb des Puffers zu holen, während Anweisungen innerhalb des Puffers zur erneuten Ausführung erneut abgesetzt werden. Der Wiederstart-Anweisungs-Zeiger wird jedes Mal aktualisiert, wenn eine vollendete Anweisung in den Puffer eingefügt wird. In 2 zeigt der Wiederstart-Anweisungs-Zeiger auf den Anweisungs-Zeiger von Anweisung C1 bei Zeit 202. Bei Zeit 204 wird der Wiederstart-Anweisungs-Zeiger aktualisiert, um auf eine Anweisung hinter C zu zeigen, da Anweisung C über die Insertion von Bündel C3 vollendet ist. Wie bei Zeit 204 in 2 gezeigt ist, ist, sobald Bündel C3 eingefügt ist, der Wiederstart-Anweisungs-Zeiger dargestellt, auf D1 zu zeigen. Somit wird in Ausführungsformen, in welchen eine Anweisung eine Mehrzahl von Bündeln von Mikro-Operationen aufweist, der Wiederstart-Anweisungs-Zeiger aktualisiert, so dass er auf integrale Anweisungs-Grenzen und nicht auf Positionen innerhalb einer individuellen Anweisung zeigt.
  • In einigen Ausführungsformen, in denen der Puffer ISA-Anweisungen speichert, kann ein Nachverfolgen der Adresse oder der Stelle der letzten vollendeten Anweisung in dem Puffer vergleichsweise leicht sein, da jede ISA-Anweisung einen Anweisungs-Zeiger haben kann, welcher mit ihr assoziiert ist. In einigen anderen Ausführungsformen, wie etwa Ausführungsformen, in welchen Bündel von Mikro-Operationen in dem Puffer gespeichert sind, kann es sein, dass ein Anweisungs-Zeiger, welcher mit einer Anweisung assoziiert ist, in dem letzten Bündel allein eines Satzes von Bündeln, welche eine Anweisung bilden, umfasst ist. In solchen Ausführungsformen kann der Wiederstart-Anweisungs-Zeiger aktualisiert werden, wenn das letzte Bündel für eine Anweisung in den Puffer eingefügt wird. Weil es schwierig sein kann, das Ende einer Anweisung von Bündeln von Mikro-Operationen, welche in dem Puffer gespeichert sind, zu identifizieren, kann in solchen Ausführungsformen ein Grenze-Anweisungs-Zeiger benutzt werden, um eine Grenze zwischen einem Bündel, welches einem Wiederstart-Anweisungs-Zeiger entspricht, und nachfolgenden Bündeln, nachzuverfolgen, z. B. zum Nachverfolgen einer Grenze zwischen einer letzten vollendeten Anweisung, welche in dem Puffer gehalten ist, und einem nachfolgenden Bündel, welches zu einer unvollendeten Anweisung gehört, welche in dem Puffer gehalten ist. In solchen Ausführungsformen kann dann der Wiederstart-Anweisungs-Zeiger eine Adresse oder die Stelle der letzten vollendeten Anweisung, welche in dem Puffer gehalten ist, nachverfolgen, wie mittels des Grenze-Anweisungs-Zeigers nachverfolgt. In solchen Ausführungsformen kann der Grenze-Anweisungs-Zeiger gleichzeitig mit dem Wiederstart-Anweisungs-Zeiger aktualisiert werden. In 2 wird der Grenze-Anweisungs-Zeiger „B” aktualisiert, um auf D1 zu zeigen, zwischen Zeit 202 und Zeit 204, wenn Anweisung C mittels der Insertion von Bündel C3 vollendet ist.
  • In den hierin beschriebenen Ausführungsformen existiert der Puffer in mit Kontroll-Punkt versehenen und nicht mit Kontroll-Punkt versehenen Versionen (checkpointed und non-checkpointed versions). Somit ist, zurückkehrend auf das in 1 gezeigte Beispiel, die Anweisung, welche zu einem Eintritt in ein Vorauslaufen führte, und eine oder mehrere nachfolgende Anweisungen in der mit Kontroll-Punkt versehenen Version des Puffers gespeichert (gezeigt als mit Kontroll-Punkt versehener Puffer 126A), so dass bei einem Austritt aus Vorauslaufen, die Anweisung, welche zu einem Vorauslaufen führte, und diese nachfolgenden Anweisungen aus dem Puffer abgesetzt werden können, ohne von außerhalb des Puffers geholt zu werden. Zum Beispiel kann in einigen Ausführungsformen die Anweisung direkt aus dem mit Kontroll-Punkt versehenen Puffer 126A abgesetzt werden, während in anderen Ausführungsformen die Anweisung anfänglich in eine nicht mit Kontroll-Punkt versehene Version des Puffers kopiert werden kann (gezeigt als nicht mit Kontroll-Punkt versehener Puffer 126B in 1) und dann von da aus abgesetzt werden kann. Ferner kann in einigen Ausführungsformen eine Anweisung, welche nach einer letzten vollendeten Anweisung, welche in dem Puffer gehalten ist, ausgeführt wird, von außerhalb des Puffers geholt werden, während die Anweisungen, welche in dem Puffer gehalten sind, erneut abgesetzt werden. Demgemäß können hierin beschriebene Ausführungsformen den potentiellen Vorteil anbieten, Anweisungs-Verarbeitungs-Zeit nach Vorauslaufen dadurch vermindern, dass Holen-Prozesse für Anweisungen eliminiert sind, welche in dem Puffer gespeichert sind, und dadurch, dass Holen-Prozesse für nachfolgende Anweisungen für Anweisungen, welche außerhalb des Puffers gespeichert sind, gleichzeitig mit Erneut-Absetzen-Operationen für Anweisungen, welche innerhalb des Puffers gespeichert sind, ausgelöst werden.
  • 3 zeigt ein Flussdiagramm, welches eine Ausführungsform eines Verfahrens 300 zum Erneut-Absetzen für erneute Ausführung einer ausgewählten Anweisung aus einem Puffer nach Vorauslaufen illustriert. Die unten bereitgestellte Beschreibung von Verfahren 300 ist verwoben mit Referenzen auf ein Beispiel eines Puffers, welcher in 4 bereitgestellt ist. Für Einfachheit zeigt das in 3 gezeigte Beispiel nur einen Level von Zwischenspeicher. Es wird jedoch geschätzt werden, dass irgendeine geeignete Anzahl von Zwischenspeicher-Leveln eingesetzt werden kann, ohne von dem Geltungsbereich der vorliegenden Offenbarung abzuweichen, sowie dass irgendein geeignetes Schema zum Vermindern von Verfehlungs-Strafen (miss penalties) vorgesehen sein kann. Ferner sind die in 3 und 4 dargestellten Verfahren für illustrative Zwecke bereitgestellt und nicht beabsichtigt begrenzend zu sein, da praktisch irgendeine geeignete Variation, einschließlich Auslassungen, Hinzufügungen und Umordnungen von den oben beschriebenen Verfahren in einigen Ausführungsformen umfasst sein können, ohne von dem Geltungsbereich der vorliegenden Offenbarung abzuweichen.
  • Bei 302 umfasst Verfahren 300 ein Anfordern bzw. Abfragen (requesting) von Daten mittels einer Anweisung in Ausführung. In einigen Ausführungsformen kann eine Holen-Anfrage 302 mittels eines Daten-Zeigers in Speicher-Logik, welcher auf eine Adresse oder eine Stelle für die Daten zeigt, ausgestellt werden. Wenn der Anweisungs-Zeiger der Speicher-Logik auf die Adresse für die Daten zeigt, wird z. B. die Speicher-Logik auf diese Adresse gerichtet, um diese bestimmten Daten abzurufen. In dem in 3 gezeigten Beispiel führt die Holen-Anfrage zu einem Verfehlen, so dass bei 304 der Zwischenspeicher die angefragten Daten aus Hauptspeicher anfragt.
  • Während die angefragten Daten aus dem Hauptspeicher abgerufen werden, schreitet Verfahren 300 zu 306 fort, wo die Pipeline in Vorauslaufen eintritt und, bei 308, den Puffer, welcher die Anweisung umfasst, welche zu einem Eintreten in Vorauslaufen führt, mit einem Kontroll-Punkt versieht (checkpoints). Den Puffer mit Kontroll-Punkt-Versehen erhält den Zustand des Puffers (in einer mit Kontroll-Punkt versehenen Form) während des Vorauslaufens, während eine nicht mit Kontroll-Punkt versehene Version des Puffers in einem Arbeits-Zustand operiert. Die mit Kontroll-Punkt versehene Version wird auf ein Eintreten in ein Vorauslaufen hin mittels der Planer-Logik erzeugt.
  • 4 zeigt schematisch eine Ausführungsform eines Verfahrens 400 zum Manipulieren eines Puffers bei Eintritt, während und bei Austritt von einem Beispiel-Vorauslaufen-Modus unter Benutzung einer Mehrzahl von Zeigern zum Nachverfolgen von Adressen oder Stellen von Anweisungen, welche in dem Puffer bei vier sequenziellen Zeiten 402, 404, 406 und 408 gespeichert sind.
  • In dem in 4 gezeigten Beispiel sind vier Bündel A1, A2, B1, C1 und C2 in dem Puffer bei Eintritt in Vorauslaufen bei Zeit 402 gespeichert, entsprechend den drei architektonischen Anweisungen A, B und C. Alle mit Anweisung C assoziierten Bündel sind nicht vollständig in den Puffer bei Zeit 402 eingefügt, da ein letztes Bündel (C3) noch nicht in den Puffer bei Zeit 402 eingefügt worden ist. In dem in 4 gezeigten Beispiel zeigt der De-Allokations-Zeiger „D” auf ein Bündel A1, welches zu Eintritt in Vorauslaufen führte, während Lese-Zeiger „R” auf ein Bündel B1 zeigt, welches als nächstes abzusetzen ist.
  • Bei Zeit 402 zeigt Verfahren 400 die Erzeugung einer mit Kontroll-Punkt versehenen Version des Puffers die mit Kontroll-Punkt versehene Version, wobei die mit Kontroll-Punkt versehene Version die mit Kontroll-Punkt versehene Version des De-Allokations-Zeigers umfasst. In der mit Kontroll-Punkt versehenen Version des Puffers bleiben der De-Allokations-Zeiger und der Inhalt des Puffers in dem mit Kontroll-Punkt versehenen Zustand, auf das Ende von Vorauslaufen wartend.
  • Die Ausführungsform der mit Kontroll-Punkt versehenen Version des in 4 gezeigten Puffers umfasst eine Mehrzahl von Leerstellen bzw. Vakanzen. Solche Vakanzen können von einem mit Kontroll-Punkt-Versehen des Puffers unmittelbar (innerhalb einer akzeptierbaren Toleranz) auf ein Eintreten in Vorauslaufen hin herrühren. Alternativ kann in einigen Ausführungsformen der Puffer mit einem Kontroll-Punkt versehen werden, nachdem Vorauslaufen beginnt, aber nicht bis der Puffer eine vorbestimmte Besetzung erreicht. Zum Beispiel kann in einigen solcher Ausführungsformen der Puffer nicht mit Kontroll-Punkt versehen werden, bis der Puffer voll wird. Solange, wie der Kontroll-Punkt vor einem Austreten aus Vorauslaufen erzeugt wird, können solche Herangehensweisen vergleichsweise mehr Anweisungen relativ zu der unmittelbar-mit-Kontroll-Punkt-Versehen-Herangehensweise speichern, was potentiell die Wahrscheinlichkeit eines Pipeline-Stillstands vermindert, bevor die Holen-Logik Anweisungen wieder nach Verlassen von Vorauslaufen absetzt.
  • Wenn von Vorauslaufen wieder gestartet wird, wird die Holen-Logik typischerweise auf einen Anweisungs-Zeiger gerichtet, welcher der letzten vollendeten Anweisung in dem Puffer folgt. Wie oben eingeführt, verfolgt der Wiederstart-Anweisungs-Zeiger eine Adresse oder eine Stelle nach, welche der letzten vollendeten Anweisung in dem Puffer folgt. In Ausführungsformen, in denen der Puffer Bündel von Mikro-Operationen hält, kann ein Grenze-Zeiger benutzt werden, um eine Grenze zwischen einem Bündel, welches einem Wiederstart-Anweisungs-Zeiger entspricht, und nachfolgenden Bündeln nachzuverfolgen, z. B. zum Nachverfolgen einer Grenze zwischen einer letzten vollendeten Anweisung, welche in dem Puffer gehalten ist, und einem nachfolgenden Bündel. Die in 4 gezeigte Ausführungsform zeigt einen Wiederstart-Anweisungs-Zeiger, welcher konfiguriert ist, eine Adresse oder eine Stelle, welche einer letzten vollendeten Anweisung in dem Puffer folgt, nachzuverfolgen, z. B. C1. 4 zeigt auch einen Grenze-Anweisungs-Zeiger „B”, welcher auch auf Bündel C1 zeigt. Wie in 4 gezeigt ist, wird der Grenze-Anweisungs-Zeiger bei Eintritt in Vorauslaufen nicht mit einem Kontroll-Punkt versehen, sondern bleibt eingefroren in der nicht mit Kontroll-Punkt versehenen Version während des Vorauslaufens. Diese Zugangsweise kann möglicherweise Speicherraum in dem mit Kontroll-Punkt versehenen Puffer sparen.
  • Fortführend mit 3 umfasst bei 310 Verfahren 300 ein spekulatives Ausführen in einem Vorauslaufen unter Benutzung der nicht mit Kontroll-Punkt versehenen Version des Puffers. Während Vorauslaufen fährt der Mikroprozessor fort, spekulativ Anweisungen auszuführen, manchmal unpräzise aufgrund nicht-verfügbarer Destinations-Daten, so dass zusätzliche Zwischenspeicher-Verfehlungen, Übersetzung-Lookaside-Puffer-Verfehlungen bzw. Fehler, und/oder Verzweigungs-Fehl-Vorhersage-Ereignisse identifiziert werden können, während der anfängliche Fehler, welcher das Vorauslaufen auslöste, erfüllt wird. Somit kann eine Erfüllung der zusätzlichen Verfehlungen und anderer potentiell unvorhersagbarer und/oder möglicher lang-laufender Stillstands-Bedingungen während einer Erfüllung der anfänglichen Verfehlens-Anfrage gestartet werden, was möglicherweise Zeit spart.
  • In der in 4 gezeigten Ausführungsform bewegen sich, wenn die Zeit von Zeit 402 zu Zeit 404 fortschreitet, der Lese-, Wiederholen-, Allokations- und De-Allokations-Zeiger, welche in der nicht mit Kontroll-Punkt versehenen Version des Puffers umfasst sind, wenn sich der Mikroprozessor durch spekulative Ausführung bewegt. Zum Beispiel ist in der nicht mit Kontroll-Punkt versehenen Version des Puffers Bündel C3 in den Puffer eingefügt und Bündel A1 wird von dem Puffer bei Zeit 404 dealloziert, die Lese- und Wiederholen-Zeiger rücken vor, usw.
  • In der Zwischenzeit werden bei 312 und 304 die fehlenden Daten, welche dafür verantwortlich sind, ein Eintrag-Vorauslaufen herbeizuführen, der Pipeline bereitgestellt, was den Lade-Fehler auflöst und dazu führt, dass Vorauslaufen bei 316 endet. Sobald der anfängliche Lade-Fehler erfüllt ist, ist die Pipeline bei 318 geleert (flushed), was ein Verwerfen von einem oder mehreren ungültigen Resultaten der spekulativen Ausführung umfassen kann, welche während des Vorauslaufens durchgeführt ist, und, in einer Ausführungsform, der nicht mit Kontroll-Punkt versehenen Version des Puffers, so dass der Mikroprozessor in demselben Zustand ist, in welchem er existierte, als Vorauslaufen begann.
  • Bei 320 umfasst Verfahren 300 ein Zurücksetzen des Puffers auf die mit Kontroll-Punkt versehene Version des Puffers, so dass der Puffer in den Zustand gesetzt ist, von dem der Mikroprozessor in Vorauslaufen eintrat. Zurücksetzen des Puffers auf die Kontroll-Punkt-versehene Version bei 320 umfasst ein Wiederherstellen des De-Allokations-Zeigers von der mit Kontroll-Punkt versehenen Version des Puffers.
  • In der in 4 gezeigten Ausführungsform ist Zurücksetzen des Puffers auf den mit Kontroll-Punkt versehenen Zustand bei Zeit 406 illustriert, was ein Kopieren der mit Kontroll-Punkt versehenen Version des De-Allokations-Zeigers von der mit Kontroll-Punkt versehenen Version des Puffers auf den nicht mit Kontroll-Punkt versehenen Puffer umfasst. In dem in 4 gezeigten Beispiel wird bei 406 der De-Allokations-Zeiger auf die nicht mit Kontroll-Punkt versehene Version des De-Allokations-Zeigers und auf den Wiederholen- und Lese-Zeiger kopiert, während der Grenze-Zeiger aufgetaut wird und in die Allokation-Zeiger-Position kopiert wird. Ferner zeigt der Wiederstart-Anweisungs-Zeiger auf die Adresse, welche mit B assoziiert ist, die letzte vollendete Anweisung, welche in dem Puffer vorhanden ist. In der Zwischenzeit zeigen der De-Allokation-, Lese- und Wiederholen-Zeiger auf das Bündel, welches mit Bündel A1 assoziiert ist, so dass A1 an die Ausführungs-Einheit erneut abgesetzt werden kann. Schließlich zeigt der Allokation-Zeiger auf die Stelle nach Anweisung B. Nach Wiederherstellung des Puffers nach Vorauslaufen, werden Bündel C1 und C2 logisch nicht in dem Puffer vorhanden sein. Demgemäß stellt ein Positionieren des Allokations-Zeigers, um die Stelle zu zeigen, welche der letzten vollendeten Anweisung folgt (Anweisung B in dem in 4 gezeigten Beispiel) bereit, dass alle die Bündel, welche mit der unvollendeten Anweisung assoziiert sind (Anweisung C in 4) auf eine Wiederherstellung des Puffers nach Vorauslaufen hin geholt werden können. Folglich können in dem in 4 gezeigten Beispiel bei Wiederstart alle der Zeiger in dem Puffer basierend auf dem De-Allokations-Zeiger und dem Grenze-Zeiger bestimmt werden.
  • Fortführend mit 3 umfasst bei 322 Verfahren 300 ein erneutes Absetzen der Anweisung, welche vorher Vorauslaufen herbeiführte. Erneutes Absetzen der Anweisung umfasst Lesen der Anweisung, welche zur erneuten Ausführung ausgewählt ist, daraufhin, dass der Mikroprozessor erneut in eine bestimmte Ausführungsstelle nach Vorauslaufen eintritt, und nach Lesen der ausgewählten Anweisung, erneutes Absetzen der Anweisung an einen oder mehrere Ausführungs-Mechanismen des Mikroprozessors. Sobald die Anweisung erneut ausgeführt worden ist und vollendet hat, wird die Anweisung logisch von dem Puffer, wie mittels des De-Allokations-Zeiger angezeigt, entfernt.
  • In dem in 4 gezeigten Beispiel ist der Lese-Zeiger dargestellt, bereit zu sein, Bündel A1 in Vorbereitung für ein Wieder-Absetzen und eine Wieder-Ausführung zu lesen. Wenn Bündel A1 aufgrund irgendeines Pipeline-Ausführungs-Stillstandes nicht vollendet, kann der Wiederholen-Zeiger in den Lese-Zeiger kopiert werden, um dazu zu führen, dass Bündel A1 wieder erneut abgesetzt wird, bis das Bündel erfolgreich vollendet. Sobald das Bündel vollendet, wird der Wiederholen-Zeiger vorgerückt und der Absetzen-Zeiger wird anzeigen, dass Bündel A1 bereit ist, logisch von dem Puffer entfernt zu werden.
  • Fortfahrend mit 3 umfasst bei 324 Verfahren 300 ein Holen einer anderen Anweisung von außerhalb des Puffers, während die ausgewählte Anweisung erneut abgesetzt wird. Bei 326 kann eine nachfolgende Anweisung von innerhalb des Puffers zur Ausführung abgesetzt werden (z. B. Anweisung B1, wie in 4 gezeigt), während bei 328 die Anweisung von außerhalb des Puffers von dem Zwischenspeicher zurückgegeben wird.
  • Es wird geschätzt werden, dass die mit Kontroll-Punkt-versehene-Schemata, welche oben beschrieben sind, nur für illustrative Zwecke bereitgestellt sind und dass virtuell irgendeine geeignete Vorgehensweise zum mit Kontroll-Punkt-Versehen des Puffers eingesetzt werden kann, ohne von dem Geltungsbereich der vorliegenden Offenbarung abzuweichen. Zum Beispiel kann in einem Szenario der Puffer zusammen oder entlang mit dem Grenze-, De-Allokations- und Allokations-Zeiger bei Eintritt in Vorauslaufen mit einem Kontroll-Punkt versehen werden. Bei Austritt von Vorauslaufen kann der Puffer dadurch wieder hergestellt werden, dass die mit Kontroll-Punkt versehenen Versionen des Grenze-, De-Allokations- und Allokations-Zeiger von den mit Kontroll-Punkt versehenen Versionen davon kopiert werden, wobei der De-Allokations-Zeiger auch in den Lese- und Wiederholen-Zeiger kopiert wird, so dass der Lese-, Wiederholen- und De-Allokations-Zeiger auf eine gemeinsame Adresse zeigen.
  • Es wird geschätzt werden, dass hierin beschriebene Verfahren nur für illustrative Zwecke bereitgestellt sind und nicht als begrenzend beabsichtigt sind. Demgemäß wird es geschätzt werden, dass einige Ausführungsformen der hierin beschriebenen Verfahren zusätzliche oder alternative Prozesse umfassen können, während in einigen Ausführungsformen die hierin beschriebenen Verfahren einige Prozesse umfassen können, welche umgeordnet oder ausgelassen werden können, ohne von dem Geltungsbereich der vorliegenden Offenbarung abzuweichen. Ferner wird es geschätzt werden, dass die hierin beschriebenen Verfahren unter Benutzung irgendeiner geeigneten Hardware einschließlich der hierin beschriebenen Hardware durchgeführt werden können.
  • 5 zeigt schematisch eine Beispiel-Speicher-Zelle 500 für einen Puffer gemäß Ausführungsform der vorliegenden Offenbarung. In der in 5 gezeigten Ausführungsform ist der Puffer in Speicher-Zelle 500 unter Benutzung von 2N Einträgen, welche in Paaren angeordnet sind, gespeichert. Lese-Dekodierer 502 und Schreibe-Dekodierer 504 können, wenn eine Adresse X gegeben ist, auf verschiedene Einträge oder auf denselben Eintrag dekodieren, abhängig davon, ob ein Eintrag der mit Kontroll-Punkt versehene Eintrag ist (und somit während eines Vorauslaufens nicht überschrieben werden mag) und abhängig davon, ob der Eintrag bereits in die nicht mit Kontroll-Punkt versehene Untermenge geschrieben worden ist. In einigen solcher Ausführungsformen kann die Planer-Logik ein Adress-Bit umfassen, welches konfiguriert ist, zu identifizieren, ob eine ausgewählte Adresse für einen ausgewählten Eintrag in Speicher-Zelle 500 einer mit Kontroll-Punkt versehenen Version des Puffers oder einer nicht mit Kontroll-Punkt versehenen Version des Puffers entspricht. Die Adresse kann benutzt werden, um zu identifizieren, ob Information in einer Arbeits-Version oder in einer mit Kontroll-Punkt versehenen Version des Puffers zu speichern oder zuzugreifen ist. Speicher-Zelle 500 kann virtuell irgendeine geeignete Speicher-Zelle sein. Zum Beispiel kann in einigen Ausführungsformen Speicher-Zelle 500 einen SRAM umfassen.
  • Exemplarische Konzepte der vorliegenden Offenbarung umfassen:

    Konzept 1. Mikroprozessor, aufweisend: Holen-Logik; einen oder mehrere Ausführungs-Mechanismen zum Ausführen einer abgerufenen Anweisung, welche mittels der Holen-Logik bereitgestellt ist; und Planer-Logik zum Planen der abgerufenen Anweisung zur Ausführung, wobei die Planer-Logik einen Puffer zum Speichern der abgerufenen Anweisung und einer oder mehrerer zusätzlicher Anweisungen umfasst, wobei die Planer-Logik konfiguriert ist, daraufhin, dass der Mikroprozessor bei einer bestimmten Ausführungs-Stelle nach Vorauslaufen erneut eintritt, aus dem Puffer eine Anweisung erneut abzusetzen, welche vorher an einen der Ausführungs-Mechanismen abgesetzt worden ist.

    Konzept 2. Mikroprozessor von Konzept 1, wobei der Puffer in einem einzelnen Feld gespeichert ist, welches 2N Einträge, welche in Paaren angeordnet sind, aufweist.

    Konzept 3. Mikroprozessor gemäß Konzept 2, wobei die Planer-Logik ein Adress-Bit umfasst, welches konfiguriert ist, zu identifizieren, ob eine ausgewählte Adresse für einen ausgewählten Eintrag in Speicher-Zellen einer mit Kontroll-Punkt versehenen Version des Puffers oder einer nicht mit Kontroll-Punkt versehenen Version des Puffers entspricht.

    Konzept 4. Mikroprozessor gemäß Konzept 1, wobei der Puffer aufweist: einen Lese-Zeiger zum Lesen einer ausgewählten Anweisung, welche in dem Puffer gehalten ist, in Vorbereitung zum Absetzen der ausgewählten Anweisung zur Ausführung; und einen De-Allokations-Zeiger zum Dazuführen, dass die ausgewählte Anweisung logisch aus dem Puffer entfernt wird, nachdem die ausgewählte Anweisung vollendet.

    Konzept 5. Mikroprozess gemäß Konzept 4, wobei der Puffer ferner aufweist: einen Wiederholen-Zeiger zum Dazuführen, dass eine ausgewählte Anweisung zur erneuten Ausführung während eines Wiederholens erneut abgesetzt wird; und einen Wiederstart-Anweisungs-Zeiger zum Nachverfolgen einer Adresse, welche einer letzten vollendeten Anweisung folgt, welche in dem Puffer gehalten wird, wobei der Wiederstart-Anweisungs-Zeiger einen Anweisungs-Zeiger für die Holen-Logik so lenkt, dass die Holen-Logik eine andere Anweisung von außerhalb des Puffers holt, während die ausgewählte Anweisung zur erneuten Ausführung erneut abgesetzt wird.

    Konzept 6. Mikroprozessor gemäß Konzept 5, wobei die Planer-Logik ferner aufweist: eine mit Kontroll-Punkt versehene Version des Puffers, welche eine Anweisung, welche Eintritt in Vorauslaufen herbeiführt, und eine Mehrzahl von nachfolgenden Anweisungen aufweist; und eine nicht mit Kontroll-Punkt versehene Version des Puffers, welche in einem Arbeits-Zustand während Vorauslaufen operiert; wobei, nach Vorauslaufen, die Planer-Logik konfiguriert ist, den Puffer auf die mit Kontroll-Punkt versehene Version zurückzusetzen.

    Konzept 7. Mikroprozessor gemäß Konzept 6, wobei der Puffer konfiguriert ist, eine Mehrzahl von Bündeln von Mikro-Operationen zu speichern, wobei jede Mikro-Operation einer oder mehreren Anweisungs-Satz-Architektur-(ISA)-Anweisungen oder Teilen von ISA-Anweisungen entspricht, wobei die Planer-Logik ferner einen Grenze-Anweisungs-Zeiger zum Nachverfolgen einer Grenze zwischen einem letzten Bündel für eine vollendete ISA-Anweisung, welche in dem Puffer gehalten ist, und einem nachfolgenden Bündel aufweist, welches zu einer unvollendeten ISA-Anweisung gehört, welche in dem Puffer gehalten ist, wobei der Wiederstart-Anweisungs-Zeiger konfiguriert ist, eine Adresse nachzuverfolgen, welche einer letzten vollendeten Anweisung, welche in dem Puffer gehalten ist, folgt, wie mittels des Grenze-Anweisungs-Zeigers nachverfolgt.

    Konzept 8. Mikroprozessor gemäß Konzept 6, wobei die mit Kontroll-Punkt versehene Version mittels der Planer-Logik auf einen Eintritt in Vorauslaufen hin erzeugt wird.

    Konzept 9. Mikroprozessor gemäß Konzept 8, wobei die mit Kontroll-Punkt versehene Version eine oder mehrere Vakanzen umfasst.

    Konzept 10. Mikroprozessor gemäß Konzept 1, wobei die Holen-Logik und die Planer-Logik stromaufwärts einer Pipeline sind, welche in dem Mikroprozessor umfasst ist.

    Konzept 11. Mikroprozessor gemäß Konzept 1, wobei die Planer-Logik in der Holen-Logik und/oder der Dekodierer-Logik zum Dekodieren einer Anweisung zur Ausführung bei einem der Ausführungs-Mechanismen des Mikroprozessors umfasst ist.

    Konzept 12. Ein Verfahren zum Erneut-Absetzen einer Anweisung, welche bei einem Mikroprozessor auszuführen ist, wobei das Verfahren aufweist: Lesen einer Anweisung, welche zur erneuten Ausführung ausgewählt ist, daraufhin, dass der Mikroprozessor erneut in eine bestimmte Ausführungs-Stelle nach Vorauslaufen eintritt, wobei die Anweisung in einem Puffer für erneutes Absetzen an einen oder mehrere Ausführungs-Mechanismen des Mikroprozessors gehalten ist; nach Lesen der ausgewählten Anweisung, erneutes Absetzen der Anweisung; und, von außerhalb des Puffers, Holen einer anderen Anweisung, während die ausgewählte Anweisung erneut ausgeführt wird.

    Konzept 13. Verfahren gemäß Konzept 12, ferner aufweisend, in Antwort auf Eintritt in Vorauslaufen, Erzeugen einer mit Kontroll-Punkt versehenen Version des Puffers, wobei die mit Kontroll-Punkt versehene Version eine Anweisung, welche zu einem Eintritt in Vorauslaufen führt, und eine Mehrzahl von nachfolgenden Anweisungen aufweist.

    Konzept 14. Verfahren gemäß Konzept 13, ferner aufweisend, nach Vorauslaufen und vor Lesen der Anweisung, welche in dem Puffer gehalten ist, Zurücksetzen einer nicht mit Kontroll-Punkt versehenen Version des Puffers auf die mit Kontroll-Punkt versehene Version.

    Konzept 15. Verfahren gemäß Konzept 14, wobei Setzen der nicht mit Kontroll-Punkt versehenen Version des Puffers auf die mit Kontroll-Punkt versehene Version umfasst: Kopieren einer mit Kontroll-Punkt versehenen Version eines De-Allokations-Zeigers auf einen Lese-Zeiger, wobei der De-Allokations-Zeiger konfiguriert ist, dazu zu führen, dass die Anweisung logisch aus dem Puffer entfernt wird, nachdem die ausgewählte Anweisung vollendet, wobei der Lese-Zeiger konfiguriert ist, die Anweisung in Vorbereitung zur Ausführung zu lesen; und Kopieren der mit Kontroll-Punkt versehenen Version des De-Allokations-Zeigers auf einen Wiederholen-Zeiger, wobei der Wiederholen-Zeiger konfiguriert ist, dazu zu führen, dass eine ausgewählte Anweisung zur erneuten Ausführung während einer Wiederholung erneut abgesetzt wird.

    Konzept 16. Verfahren gemäß Konzept 15, wobei erneutes Absetzen der Anweisung aufweist: Lesen der Anweisung, wie mittels des Lese-Zeigers angezeigt; Absetzen der Anweisung an den einen oder die mehreren Ausführungs-Mechanismen; und logisches Entfernen der Anweisung von dem Puffer auf eine Vollendung hin, wie mittels des De-Allokations-Zeigers angezeigt ist.

    Konzept 17. Verfahren gemäß Konzept 16, wobei erneutes Absetzen der Anweisung ferner aufweist Wiederholen der Anweisung, wie mittels des Wiederholen-Zeigers angezeigt, in Antwort auf einen Ausführungs-Stillstand.

    Konzept 18. Verfahren gemäß Konzept 16, wobei Holen einer anderen Anweisung von außerhalb des Puffers aufweist Kopieren eines Wiederstart-Anweisungs-Zeigers auf einen Anweisungs-Zeiger für eine Holen-Logik des Mikroprozessors, so dass die Holen-Logik die andere Anweisung von außerhalb des Puffers holt, während die Anweisung erneut ausgeführt wird, wobei der Wiederstart-Anweisungs-Zeiger konfiguriert ist, eine Adresse nachzuverfolgen, welche einer letzten vollendeten Anweisung folgt, welche in dem Puffer gehalten ist.

    Konzept 19. Verfahren gemäß Konzept 18, wobei der Puffer konfiguriert ist, eine Mehrzahl von Bündeln von Mikro-Operationen zu speichern, wobei jede Mikro-Operation einer oder mehreren ISA-Anweisungen oder Teilen von ISA-Anweisungen entspricht, wobei der Wiederstart-Anweisungs-Zeiger konfiguriert ist, eine Adresse, welche einer letzten vollendeten Anweisung folgt, welche in dem Puffer gehalten ist, mit Bezugnahme auf einen Grenze-Anweisungs-Zeiger nachzuverfolgen, welcher konfiguriert ist, eine Grenze zwischen einem letzten Bündel für eine vollendete ISA-Anweisung, welche in dem Puffer gehalten ist, und einem nachfolgenden Bündel nachzuverfolgen, welches zu einer unvollendeten ISA-Anweisung, welche in dem Puffer gehalten ist, gehört, und wobei Holen einer anderen Anweisung von außerhalb des Puffers aufweist Nachverfolgen einer Grenze zwischen einem letzten Bündel für eine vollendete ISA-Anweisung, welche in dem Puffer gehalten ist, und einem nachfolgenden Bündel, welches zu einer unvollendeten ISA-Anweisung gehört, welche in dem Puffer gehalten ist, mit dem Grenze-Anweisungs-Zeiger.

    Konzept 20. Mikroprozessor, aufweisend eine Planer-Logik, wobei die Planer-Logik aufweist: einen Puffer zum Speichern einer Mehrzahl von Bündeln von Mikro-Operationen in einem mit Kontroll-Punkt versehenen Zustand während Vorauslaufen, wobei jede Mikro-Operation einer oder mehreren ISA-Anweisungen, welche in dem Puffer gehalten sind, entspricht für Absetzen an einen Ausführungs-Mechanismus des Mikroprozessors zur Ausführung auf ein erneutes Eintreten nach Vorauslaufen, wobei zumindest eine der ISA-Anweisungen vorher an den Ausführungs-Mechanismus abgesetzt worden ist; einen Grenze-Anweisungs-Zeiger zum Nachverfolgen einer Grenze zwischen einem letzten Bündel für eine letzte vollendete ISA-Anweisung, welche in dem Puffer gehalten ist, und einem nachfolgendem Bündel, welches zu einer unvollendeten ISA-Anweisung, welche in dem Puffer gehalten ist, gehört; und einen Wiederstart-Anweisungs-Zeiger zum Nachverfolgen einer Adresse, welche einer letzten vollendeten Anweisung, welche in dem Puffer gehalten ist, folgt, wobei der Wiederstart-Anweisungs-Zeiger einen Anweisungs-Zeiger für Holen-Logik so lenkt, dass die Holen-Logik eine andere Anweisung von außerhalb des Puffers holt, während die eine oder die mehreren ISA-Anweisungen, welche in dem Puffer gehalten sind, zur erneuten Ausführung erneut abgesetzt werden.
  • Diese geschriebene Beschreibung benutzt Beispiele um die Erfindung zu offenbaren, einschließlich des besten Modus, und versetzt einen gewöhnlichen Fachmann in der betreffenden Technik auch in die Lage, die Erfindung zu praktizieren, einschließlich eines Herstellens und eines Benutzens irgendwelcher Geräte oder Systeme und eines Durchführens irgendwelcher inkorporierter Verfahren. Der patentierbare Geltungsbereich der Erfindung ist mittels der Ansprüche definiert und kann andere Beispiele umfassen, wie durch die gewöhnlichen Fachleute in der Technik verstanden wird. Solche anderen Beispiele sind beabsichtigt innerhalb des Geltungsbereichs der Ansprüche zu sein.

Claims (10)

  1. Mikroprozessor, aufweisend: Holen-Logik; einen oder mehrere Ausführungs-Mechanismen zum Ausführen einer abgerufenen Anweisung, welche mittels der Holen-Logik bereitgestellt ist; und Planer-Logik zum Planen der abgerufenen Anweisung zur Ausführung, wobei die Planer-Logik einen Puffer zum Speichern der abgerufenen Anweisung und einer oder mehrerer zusätzlicher Anweisungen umfasst, wobei die Planer-Logik konfiguriert ist, daraufhin, dass der Mikroprozessor bei einer bestimmten Ausführungs-Stelle nach Vorauslaufen erneut eintritt, aus dem Puffer eine Anweisung erneut abzusetzen, welche vorher an einen der Ausführungs-Mechanismen abgesetzt worden ist.
  2. Mikroprozessor von Anspruch 1, wobei der Puffer in einem einzelnen Feld gespeichert ist, welches 2N Einträge, welche in Paaren angeordnet sind, aufweist.
  3. Mikroprozessor gemäß Anspruch 2, wobei die Planer-Logik ein Adress-Bit umfasst, welches konfiguriert ist, zu identifizieren, ob eine ausgewählte Adresse für einen ausgewählten Eintrag in Speicher-Zellen einer mit Kontroll-Punkt versehenen Version des Puffers oder einer nicht mit Kontroll-Punkt versehenen Version des Puffers entspricht.
  4. Mikroprozessor gemäß Anspruch 1, wobei der Puffer aufweist: einen Lese-Zeiger zum Lesen einer ausgewählten Anweisung, welche in dem Puffer gehalten ist, in Vorbereitung zum Absetzen der ausgewählten Anweisung zur Ausführung; und einen De-Allokations-Zeiger zum Dazuführen, dass die ausgewählte Anweisung logisch aus dem Puffer entfernt wird, nachdem die ausgewählte Anweisung vollendet.
  5. Mikroprozess gemäß Anspruch 4, wobei der Puffer ferner aufweist: einen Wiederholen-Zeiger zum Dazuführen, dass eine ausgewählte Anweisung zur erneuten Ausführung während eines Wiederholens erneut abgesetzt wird; und einen Wiederstart-Anweisungs-Zeiger zum Nachverfolgen einer Adresse, welche einer letzten vollendeten Anweisung folgt, welche in dem Puffer gehalten wird, wobei der Wiederstart-Anweisungs-Zeiger einen Anweisungs-Zeiger für die Holen-Logik so lenkt, dass die Holen-Logik eine andere Anweisung von außerhalb des Puffers holt, während die ausgewählte Anweisung zur erneuten Ausführung erneut abgesetzt wird.
  6. Mikroprozessor gemäß Anspruch 5, wobei die Planer-Logik ferner aufweist: eine mit Kontroll-Punkt versehene Version des Puffers, welche eine Anweisung, welche Eintritt in Vorauslaufen herbeiführt, und eine Mehrzahl von nachfolgenden Anweisungen aufweist; und eine nicht mit Kontroll-Punkt versehene Version des Puffers, welche in einem Arbeits-Zustand während Vorauslaufen operiert; wobei, nach Vorauslaufen, die Planer-Logik konfiguriert ist, den Puffer auf die mit Kontroll-Punkt versehene Version zurückzusetzen.
  7. Mikroprozessor gemäß Anspruch 6, wobei der Puffer konfiguriert ist, eine Mehrzahl von Bündeln von Mikro-Operationen zu speichern, wobei jede Mikro-Operation einer oder mehreren Anweisungs-Satz-Architektur-(ISA)-Anweisungen oder Teilen von ISA-Anweisungen entspricht, wobei die Planer-Logik ferner einen Grenze-Anweisungs-Zeiger zum Nachverfolgen einer Grenze zwischen einem letzten Bündel für eine vollendete ISA-Anweisung, welche in dem Puffer gehalten ist, und einem nachfolgenden Bündel aufweist, welches zu einer unvollendeten ISA-Anweisung gehört, welche in dem Puffer gehalten ist, wobei der Wiederstart-Anweisungs-Zeiger konfiguriert ist, eine Adresse nachzuverfolgen, welche einer letzten vollendeten Anweisung, welche in dem Puffer gehalten ist, folgt, wie mittels des Grenze-Anweisungs-Zeigers nachverfolgt.
  8. Mikroprozessor gemäß Anspruch 6, wobei die mit Kontroll-Punkt versehene Version mittels der Planer-Logik auf einen Eintritt in Vorauslaufen hin erzeugt wird.
  9. Mikroprozessor gemäß Anspruch 8, wobei die mit Kontroll-Punkt versehene Version eine oder mehrere Vakanzen umfasst.
  10. Mikroprozessor gemäß Anspruch 1, wobei die Holen-Logik und die Planer-Logik stromaufwärts einer Pipeline sind, welche in dem Mikroprozessor umfasst ist.
DE102013206501A 2012-05-03 2013-04-12 Kontroll-Punkt-versehener Puffer für Wiedereintreten aus Vorauslaufen Pending DE102013206501A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/463,627 US9875105B2 (en) 2012-05-03 2012-05-03 Checkpointed buffer for re-entry from runahead
US13/463,627 2012-05-03

Publications (1)

Publication Number Publication Date
DE102013206501A1 true DE102013206501A1 (de) 2013-11-07

Family

ID=49384600

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013206501A Pending DE102013206501A1 (de) 2012-05-03 2013-04-12 Kontroll-Punkt-versehener Puffer für Wiedereintreten aus Vorauslaufen

Country Status (4)

Country Link
US (1) US9875105B2 (de)
CN (1) CN103383642A (de)
DE (1) DE102013206501A1 (de)
TW (1) TWI626589B (de)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9424138B2 (en) * 2013-06-14 2016-08-23 Nvidia Corporation Checkpointing a computer hardware architecture state using a stack or queue
GB2540190B (en) * 2015-07-08 2020-01-01 Mips Tech Llc Check pointing a shift register
GB2540221B (en) 2015-07-08 2020-01-01 Mips Tech Llc Check pointing a shift register
US10831507B2 (en) 2018-11-21 2020-11-10 SambaNova Systems, Inc. Configuration load of a reconfigurable data processor
US11188497B2 (en) 2018-11-21 2021-11-30 SambaNova Systems, Inc. Configuration unload of a reconfigurable data processor
US10698853B1 (en) 2019-01-03 2020-06-30 SambaNova Systems, Inc. Virtualization of a reconfigurable data processor
US10768899B2 (en) 2019-01-29 2020-09-08 SambaNova Systems, Inc. Matrix normal/transpose read and a reconfigurable data processor including same
US11386038B2 (en) 2019-05-09 2022-07-12 SambaNova Systems, Inc. Control flow barrier and reconfigurable data processor
US11055141B2 (en) 2019-07-08 2021-07-06 SambaNova Systems, Inc. Quiesce reconfigurable data processor
CN110597556B (zh) * 2019-09-09 2021-08-13 中国人民解放军国防科技大学 一种寄存器映射表检查点资源的管理方法、系统及介质
US11809908B2 (en) 2020-07-07 2023-11-07 SambaNova Systems, Inc. Runtime virtualization of reconfigurable data flow resources
US11782729B2 (en) 2020-08-18 2023-10-10 SambaNova Systems, Inc. Runtime patching of configuration files
CN112559052B (zh) * 2020-12-15 2022-11-25 类人思维(山东)智慧科技有限公司 一种指令集调用方法、装置、终端及存储介质
US11327771B1 (en) 2021-07-16 2022-05-10 SambaNova Systems, Inc. Defect repair circuits for a reconfigurable data processor
US11556494B1 (en) 2021-07-16 2023-01-17 SambaNova Systems, Inc. Defect repair for a reconfigurable data processor for homogeneous subarrays
US11409540B1 (en) 2021-07-16 2022-08-09 SambaNova Systems, Inc. Routing circuits for defect repair for a reconfigurable data processor
US11487694B1 (en) 2021-12-17 2022-11-01 SambaNova Systems, Inc. Hot-plug events in a pool of reconfigurable data flow resources

Family Cites Families (61)

* 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
US5864692A (en) 1996-12-16 1999-01-26 Hewlett-Packard Company Method and apparatus for protecting memory-mapped devices from side effects of speculative instructions
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
US7139876B2 (en) 2003-01-16 2006-11-21 Ip-First, Llc Microprocessor and apparatus for performing fast speculative pop operation from a stack memory cache
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
US8190863B2 (en) 2004-07-02 2012-05-29 Intel Corporation Apparatus and method for heterogeneous chip multiprocessors via resource allocation and restriction
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
US7421567B2 (en) * 2004-12-17 2008-09-02 International Business Machines Corporation Using a modified value GPR to enhance lookahead prefetch
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
US7613904B2 (en) 2005-02-04 2009-11-03 Mips Technologies, Inc. Interfacing external thread prioritizing policy enforcing logic with customer modifiable register to processor internal scheduler
US7752627B2 (en) * 2005-02-04 2010-07-06 Mips Technologies, Inc. Leaky-bucket thread scheduler in a multithreading microprocessor
US7571304B2 (en) 2005-03-18 2009-08-04 Sun Microsystems, Inc. Generation of multiple checkpoints in a processor that supports speculative execution
US20060277398A1 (en) 2005-06-03 2006-12-07 Intel Corporation Method and apparatus for instruction latency tolerant execution in an out-of-order pipeline
US7747841B2 (en) 2005-09-26 2010-06-29 Cornell Research Foundation, Inc. Method and apparatus for early load retirement in a processor system
US7730263B2 (en) 2006-01-20 2010-06-01 Cornell Research Foundation, Inc. Future execution prefetching technique and architecture
US20070186081A1 (en) 2006-02-06 2007-08-09 Shailender Chaudhry Supporting out-of-order issue in an execute-ahead processor
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
US8707011B1 (en) 2006-10-24 2014-04-22 Nvidia Corporation Memory access techniques utilizing a set-associative translation lookaside buffer
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
US9155014B2 (en) 2008-11-17 2015-10-06 Qualcomm Incorporated Conditional access terminal initiation of delayed handover
US8639886B2 (en) 2009-02-03 2014-01-28 International Business Machines Corporation Store-to-load forwarding mechanism for processor runahead mode operation
US8145890B2 (en) 2009-02-12 2012-03-27 Via Technologies, Inc. Pipelined microprocessor with fast conditional branch instructions based on static microcode-implemented instruction state
TWI428918B (zh) 2009-09-29 2014-03-01 Silicon Motion Inc 記憶裝置以及記憶裝置之資料存取方法
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
CN102184127B (zh) 2011-05-20 2013-11-06 北京北大众志微系统科技有限责任公司 一种实现处理器预执行的方法及相应的装置
US9009449B2 (en) 2011-11-10 2015-04-14 Oracle International Corporation Reducing power consumption and resource utilization during miss lookahead
US9645929B2 (en) 2012-09-14 2017-05-09 Nvidia Corporation Speculative permission acquisition for shared memory
US10001996B2 (en) 2012-10-26 2018-06-19 Nvidia Corporation Selective poisoning of data during runahead
US9740553B2 (en) 2012-11-14 2017-08-22 Nvidia Corporation Managing potentially invalid results during runahead
US20140164738A1 (en) 2012-12-07 2014-06-12 Nvidia Corporation Instruction categorization for runahead operation
US9632976B2 (en) 2012-12-07 2017-04-25 Nvidia Corporation Lazy runahead operation for a microprocessor
US9547602B2 (en) 2013-03-14 2017-01-17 Nvidia Corporation Translation lookaside buffer entry systems and methods
US9582280B2 (en) 2013-07-18 2017-02-28 Nvidia Corporation Branching to alternate code based on runahead determination

Also Published As

Publication number Publication date
TWI626589B (zh) 2018-06-11
US20130297911A1 (en) 2013-11-07
TW201407471A (zh) 2014-02-16
CN103383642A (zh) 2013-11-06
US9875105B2 (en) 2018-01-23

Similar Documents

Publication Publication Date Title
DE102013206501A1 (de) Kontroll-Punkt-versehener Puffer für Wiedereintreten aus Vorauslaufen
DE112011101364B4 (de) Fehlerbehebung in Multithread-Code
DE10297856B4 (de) Verfahren und Vorrichtung zum Suspendieren der Ausführung eines Threads, bis ein spezifizierter Speicherzugriff auftritt
DE69612991T2 (de) System zur bearbeitung von selbstmodifizierendem kode
CN104714848B (zh) 利用用于聚结内存事务的指示的方法和系统
CN104714836B (zh) 用于聚结内存事务的方法和系统
US11429393B2 (en) Apparatus and method for supporting out-of-order program execution of instructions
DE112005002173B4 (de) Prozessor mit Abhängigkeitsmechanismus, um vorherzusagen, ob ein Ladevorgang von einem älteren Schreibvorgang abhängig ist
US9740553B2 (en) Managing potentially invalid results during runahead
DE69428110T2 (de) Prozessor-system und fehlersuchmodus-durchfuehrungsverfahren
DE10304447B4 (de) Verfahren zur Handhabung von Datenfehlern in einem Prozessor mit Pipeline und derartiger Prozessor
US9710280B2 (en) Overlapping atomic regions in a processor
DE102012216571A1 (de) Nutzung einer architekturdefinierten letztverwendungs-operandenangabe in einem computersystem-operandenressourcenpool
US20170344374A1 (en) Processor with efficient reorder buffer (rob) management
DE112010003492T5 (de) Transaktionsspeichersystem mit wirksamerZwischenspeicherunterstützung
DE102012216565A1 (de) Decodierzeit-computeranweisungsoptimierung
DE10296989T5 (de) Multi-Thread-Prozessor mit der Fähigkeit einer impliziten Multi-Thread-Ausführung eines Ein-Thread-Programms
DE102012216567A1 (de) Verwalten eines register-cachespeichers auf grundlage eines architekturdefinierten computeranweisungssatzes
DE69429612T2 (de) Schreibpuffer für einen superskalaren Mikroprozessor mit Pipeline
US9891972B2 (en) Lazy runahead operation for a microprocessor
US9558118B2 (en) Tracing mechanism for recording shared memory interleavings on multi-core processors
DE112011105042T5 (de) Indikatoren zur Aufzeichnung einer letzten Verzweigung für einen Transaktionsspeicher
DE102012217970A1 (de) Computeranweisungen zum Aktivieren und Deaktivieren von Operanden
DE602004010265T2 (de) Load-store-einheit mit wiederholungsmechanismus
Waliullah et al. Intermediate checkpointing with conflicting access prediction in transactional memory systems

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