DE112004000741T5 - Spekulationszeiger zur Identifizierung datenspekulativer Operationen in einem Mikroprozessor - Google Patents

Spekulationszeiger zur Identifizierung datenspekulativer Operationen in einem Mikroprozessor Download PDF

Info

Publication number
DE112004000741T5
DE112004000741T5 DE112004000741T DE112004000741T DE112004000741T5 DE 112004000741 T5 DE112004000741 T5 DE 112004000741T5 DE 112004000741 T DE112004000741 T DE 112004000741T DE 112004000741 T DE112004000741 T DE 112004000741T DE 112004000741 T5 DE112004000741 T5 DE 112004000741T5
Authority
DE
Germany
Prior art keywords
speculation
data
operations
verification
pointer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE112004000741T
Other languages
English (en)
Other versions
DE112004000741B4 (de
Inventor
Michael Manchaca Filippo
James K. Austin Pickett
Benjamin T. Austin Sander
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.)
GlobalFoundries Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of DE112004000741T5 publication Critical patent/DE112004000741T5/de
Application granted granted Critical
Publication of DE112004000741B4 publication Critical patent/DE112004000741B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • 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, look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, 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, look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags

Abstract

Mikroprozessor (100) mit:
einer oder mehreren Datenspekulationsverifizierungseinheiten, die ausgebildet sind, eine Datenspekulation, die an Operationen ausgeführt ist, zu verifizieren und einen entsprechenden Spekulationszeiger zu erzeugen, der anhängige Operationen kennzeichnet, an denen von dieser einen oder mehreren Datenspekulationsverifizierungseinheiten eine Datenspekulation verifiziert worden ist; und
einer Rücknahmereihe (102), die angeschlossen ist, einen Spekulationszeiger von jeder der einen oder mehreren Datenspekulationsverifizierungseinheiten zu empfangen, und die ausgebildet ist, selektiv Operationen in Abhängigkeit von dem von jeder der einen oder der mehreren Datenspekulationsverifizierungseinheiten empfangenen Spekulationszeiger zurück zu ziehen.

Description

  • TECHNISCHES GEBIET
  • Diese Erfindung betrifft das Gebiet der Mikroprozessoren und betrifft insbesondere das Ausführen einer Datenspekulation in einem Mikroprozessor.
  • STAND DER TECHNIK
  • Superskalare Mikroprozessoren erreichen eine hohe Leistungsfähigkeit, indem mehrere Instruktionen gleichzeitig ausgeführt werden, und indem der kürzeste mögliche Taktzyklus verwendet wird, der mit ihrem Aufbau erträglich ist. Jedoch können Daten- und Steuerungsablaufabhängigkeiten zwischen den Instruktionen dahingehend einschränkend sein, wie viele Instruktionen zu einer gegeben Zeit ausgegeben werden können. Daher unterstützen einige Mikroprozessoren eine spekulative Ausführung, um eine zusätzliche Steigerung der Leistungsfähigkeit zu erreichen.
  • Eine Art einer Spekulation ist die Steuerungsablaufsspekulation. Die Steuerungsablaufspekulation sagt die Richtung vorher, in der der Programmablauf voranschreiten wird. Beispielsweise kann eine Verzweigungsvorhersage angewendet werden, um vorherzusagen, ob eine Verzweigung genommen wird. Es sind viele Arten von Verzweigungsvorhersagen verfügbar, die von Verfahren, die einfach jedes mal die gleiche Vorhersage treffen, bis zu Verfahren reichen, die anspruchsvolle historische Entwicklungen der vorhergehenden Verzweigungen in dem Programm unterhalten, um eine Vorhersage auf der Grundlage der vorhergehenden Entwicklung zu treffen. Die Verzweigungsvorhersage kann durch Hardwareoptimierungen, Compileroptimierungen oder beides ermöglicht werden. Auf der Grundlage der Vorhersage, die von dem Verzweigungsvorhersagemechanismus zur Verfügung gestellt wird, können Anweisungen spekulativ abgerufen und ausgeführt werden. Wenn schließlich die Verzweigungsinstruktion angetroffen wird, kann die Verzweigungsvorhersage verifiziert werden. Wenn die Vorhersage nicht korrekt war, werden Instruktionen, die auf der Grundlage der nicht korrekten Vorhersage spekulativ ausgeführt wurden, verworfen.
  • Eine weitere Art der Spekulation ist die Datenspekulation, die Datenwerte vorhersagt. Zu vorgeschlagenen Arten der Datenspekulation gehören spekulatives Erzeugen von Adressen für Speicheroperationen und spekulatives Erzeugen von Datenwerten zur Verwendung in Rechenoperationen. Ähnlich wie bei der Steuerungsspekulation werden die zum spekulativen Erzeugen eines Wertes zu Grunde liegenden Bedingungen schließlich bewertet, so dass die Spekulation verifiziert werden kann oder ungeschehen gemacht werden kann.
  • ÜBERBLICK ÜBER DIE ERFINDUNG
  • In diversen Ausführungsformen werden Verfahren und Systeme offenbart, um Operationen in Abhängigkeit von Spekulationszeigern zurückzuziehen, die angeben, welche Operationen datenspekulativ im Hinblick auf die diversen Verifizierungseinheiten innerhalb eines Mikroprozessors sind. In einer Ausführungsform kann ein Mikroprozessor eine Rücknahmeschlange bzw. Reihe und eine oder mehrere Datenspekulationsverifizierungseinheiten aufweisen. Die Datenspekulationsverifizierungseinheiten sind jeweils so gestaltet, um eine Datenspekulation, die an Operationen ausgeführt werden, zu verifizieren. Jede Datenspekulationsverifizierungseinheit erzeugt einen entsprechenden Spekulationszeiger, der anhängige Operationen kennzeichnet, an denen eine Datenverifizierung durch die Datenspekulationsverifizierungseinheit verifiziert ist. Die Rücknahmereihe ist so gestaltet, dass selektive Operationen in Abhängigkeit von dem Spekulationszeiger zurückgenommen werden, der von jeder der Datenspekulationsverifizierungseinheiten empfangen wird.
  • In einer Ausführungsform kann eine der Datenspekulationsverifizierungseinheiten in einer Lade/Speichereinheit enthalten sein. Eine derartige Datenspekulationsverifizierungseinheit kann ausgebildet sein, die Arten der Datenvorhersage, etwa die Abhängigkeitsvorhersage, Adressvorhersage und/oder Datenvorhersage zu verifizieren. Beispielsweise kann eine in einer Lade/Speicherereinheit enthaltene Datenspekulationsverifizierungseinheit so gestaltet sein, dass diese eine Abhängigkeitsvorhersage verifiziert, die vorhersagt, dass eine jüngere Auslese bzw. Ladeoperation nicht von einer älteren Speicheroperation mit einer nicht berechneten Adresse abhängt. In ähnlicher Weise kann eine in einer Lade/Speichereinheit enthaltene Datenspekulationsverifizierungseinheit so gestaltet sein, dass eine Abhängigkeitsvorhersage verifiziert wird, die vorhersagt, dass ein Ergebnis einer jüngeren Ladeoperation die Quelle einer älteren Speicheroperation ist.
  • Eine weitere der Datenspekulationsverifizierungseinheiten kann in einer Funktionseinheit enthalten sein, die ausgebildet ist, Nicht-Speicher-Operationen auszuführen. Eine derartige Datenspekulationsverifizierungseinheit kann ausgebildet sein, eine Datenvorhersage zu verifizieren, die das Ergebnis einer Nicht-Speicher-Operation vorhersagt. Eine noch weitere Datenspekulationsverifizierungseinheit kann in einer Speichersteuerung enthalten sein und kann ausgebildet sein, Speichervorhersagen zu verifizieren.
  • In einer Ausführungsform ist eine der Datenspekulationsverifizierungseinheiten ausgebildet, Information zu empfangen, die jede offene Operation angibt, für die eine Art der Datenspekulation durch diese Datenspekulationsverifizierungseinheit ausgeführt ist. Diese Datenspekulationsverifizierungseinheit kann ausgebildet sein, zu erkennen, welche offenen Operationen von dieser Datenspekulationsverifizierungseinheit verifiziert sind, indem ihr entsprechender Spekulationszeiger weitergestellt wird, um eine Operation zu kennzeichnen, die jünger ist als die jüngste offene Operation, an der diese Art der Datenspekulation verifiziert ist, und die älter ist als eine weitere offene Operation, an der diese Art der Datenspekulation ausgeführt wurde. Wenn keine Operation aktuell für diese Datenspekulationsverifizierungseinheiten als Daten-spekulativ erkannt wird, kann diese Datenspekulationsverifizierungseinheit einen Wert ihres entsprechenden Spekulationszeigers so setzen, dass angezeigt wird, dass keine aktuell offenen Operationen Daten-spekulativ im Hinblick auf diese Datenspekulationsverifizierungseinheit sind.
  • In Ausführungsformen, in denen die Rücknahmereihe einige Spekulationszeiger empfangen, kann die Rücknahmereihe so gestaltet sein, dass bestimmt wird, ob eine Operation zurückgezogen bzw. beendet werden kann, indem bestimmt wird, ob die Operation älter als eine jüngste Operation ist, die als nicht-datenspekulativ von allen Spekulationszeigern gekennzeichnet ist.
  • Ein Mikroprozessor, der eine oder mehrere Datenspekulationsverifizierungseinheiten enthält, die Spekulationszeiger erzeugen, und eine Rücknahmereihe aufweist, die Operationen in Abhängigkeit der Spekulationszeiger zurücknehmen bzw. vorzeitig beenden kann, kann in einem Computersystem enthaften sein.
  • In einigen Ausführungsformen umfasst ein Verfahren: Ausführen einer Datenspekulation für eine Operation; Verifizieren der Datenspekulation, die für die Operation durchgeführt wird, mittels einer Verifizierungseinheit, wobei die Verifizierungseinheit einen Spekulationszeiger erzeugt, der in Reaktion auf das Verifizieren anzeigt, dass die Operation nicht Datenspekulativ in Bezug auf die Verifizierungseinheit ist; und in Reaktion darauf, dass der Spekulationszeiger anzeigt, dass die Operation nicht Daten-spekulativ in Bezug auf die Verifizierungseinheit ist, zurücknehmen bzw. vorzeitiges Beenden der Operation.
  • Ein derartiges Verfahren kann ferner eine oder mehrere andere Verifizierungseinheiten beinhalten, die die Datenspekulation verifizieren, die an anderen Operationen ausgeführt werden, und die andere Spekulationszeiger erzeugen, die anzeigen, dass die anderen Operationen nicht Daten-spekulativ in Bezug auf diese Verifizierungseinheiten sind. Das vorzeitige Beenden bzw. Zurückziehen der Operation kann von allen Datenspekulationszeigern abhängen. Jede Verifizierungseinheit kann unterschiedliche Arten der Datenspekulation verifizieren.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Ein gründlicheres Verständnis der vorliegenden Erfindung kann erreicht werden, wenn die folgende detaillierte Beschreibung in Verbindung mit den folgenden Zeichnungen studiert wird, in denen:
  • 1 einen Mikroprozessor gemäß einer Ausführungsform zeigt.
  • 2a eine Flussdiagramm ist, das zeigt, wie Spekulationszeiger weitergestellt werden können gemäß einer Ausführungsform.
  • 2b ein Flussdiagramm ist, das ein Verfahren zur Konditionierung einer Rücknahme bzw. vorzeitigen Beendigung oder Zurückziehung einer Operation von aktuellen Spekulationszeigern gemäß einer Ausführungsform zeigt.
  • 3 ein beispielhaftes Computersystem gemäß einer Ausführungsform zeigt.
  • 4 ein weiteres beispielhaftes Computersystem gemäß einer weiteren Ausführungsform zeigt.
  • Obwohl die Erfindung diversen Modifizierungen und alternativen Formen unterliegen kann, sind spezielle Ausführungsformen beispielhaft in den Zeichnungen dargestellt und sind hierin detailliert beschrieben. Es sollte jedoch beachtet werden, dass die Zeichnungen und die detaillierte Beschreibung nicht beabsichtigen, die Erfindung auf die spezielle offenbarte Form einzuschränken, sondern die Erfindung soll vielmehr alle Modifizierungen, Äquivalente und Alternativen abdecken, die innerhalb des Grundgedankens und Schutzbereichs der vorliegenden Erfindung, wie sie durch die angefügten Patentansprüche definiert ist, liegen. Zu beachten ist, dass die Überschriften lediglich der Strukturierung dienen und nicht dazu dienen sollen, die Beschreibung oder die Patentansprüche einzuschränken oder zu interpretieren. Zu beachten ist ferner, dass das Wort „kann" durchgängig in dieser Anmeldung in einem ermöglichenden Sinne verwendet ist (d. h. bietet die Möglichkeit zu, ist in der Lage zu) nicht in einem verpflichtenden Sinne (d. h. muss). Der Begriff „beinhaltet" und Ableitungen davon bedeuten „einschließend aber nicht eingeschränkt darauf". Der Begriff „verbunden" bedeutet „direkt oder indirekt verbunden", und der Begriff „verbunden bzw, gekoppelt" bedeutet „direkt oder indirekt gekoppelt bzw. verbunden".
  • ART BZW. ARTEN ZUM AUSFÜHREN DER ERFINDUNG
  • 1 ist eine Blockansicht einer Ausführungsform eines Mikroprozessors 100. Der Mikroprozessor 100 ist ausgebildet, in einem Systemspeicher 200 gespeicherte Instruktionen auszuführen. Viele dieser Instruktionen operieren auf Daten, die in dem Systemspeicher 200 abgelegt sind. Zu beachten ist, dass der Systemspeicher 200 physikalisch über ein Computersystem verteilt sein kann und dass auf diesen von einem oder mehreren Mikroprozessoren 100 zugegriffen werden kann.
  • Der Mikroprozessor 100 kann einen Instruktionszwischenspeicher bzw. Cache-Speicher 106 und einen Datenzwischenspeicher bzw. Cache-Speicher 128 aufweisen. Der Mikroprozessor 100 kann eine Vorabholeinheit 108 aufweisen, die mit dem Instruktionszwischenspeicher 106 verbunden ist. Eine Ausgabeeinheit 104 kann so gestaltet sein, dass diese Instruktionen von dem Instruktionszwischenspeicher 106 empfängt und Operationen an einen oder mehrere Ablauforganisationseinheiten 118 ausgibt. Eine oder mehrere Ablauforganisationseinheiten 118 können so angeschlossen sein, um ausgegebene Operationen von der Ausgabeeinheit 104 zu empfangen und Operationen an einen oder mehrere Ausführungskerne 124 auszugeben. Der bzw. die Ausführungskerne 124 können eine La de/Speichereinheit beinhalten, die ausgebildet ist, Zugriffe auf den Datenzwischenspeicher 128 auszuführen. Ergebnisse, die von dem bzw. den Ausführungskern(en) erzeugt werden, können auf einen Ergebnisbus 130 ausgegeben werden. Diese Ergebnisse können als Operandenwerte für nachfolgend ausgegebene Instruktionen verwendet werden und/oder in der Registerdatei 116 gespeichert werden. Eine Rücknahmereihe 102 kann mit der bzw. den Ablauforganisationseinheiten 118 und der Ausgabeeinheit 104 verbunden sein. Die Rücknahmereihe 102 kann ausgebildet sein, um zu bestimmen, wenn jede ausgegebene Operation zurückgenommen bzw. vorzeitig beendet wird. In einer Ausführungsform ist der Mikroprozessor 100 so gestaltet, dass dieser mit der x86-Architektur kompatibel ist. Zu beachten ist, dass der Mikroprozessor 100 auch viele andere Komponenten aufweisen kann. Z. B. kann der Mikroprozessor 100 eine Verzweigungsvorhersageeinheit (nicht gezeigt) enthalten.
  • Der Instruktionszwischenspeicher 106 kann temporär Instruktionen speichern, bevor diese von der Ausgabeeinheit 104 empfangen werden. Es kann eine Instruktionscodierung zu dem Instruktionszwischenspeicher 106 zugeleitet werden, indem eine Codierung von dem Systemspeicher 200 über die Vorabholeinheit 108 im Voraus abgerufen wird. Der Instruktionszwischenspeicher 106 kann in diversen Konfigurationen eingerichtet sein (beispielsweise teilassoziativ, vollständig assoziativ oder direkt abgebildet). In einigen Ausführungsformen kann es mehrere Ebenen an Instruktions- und/oder Datenzwischenspeicher 106 und 128 geben. Einige Ebenen können in dem Mikroprozessor 100 integriert sein, wie dies gezeigt ist, während andere Ebenen des Zwischenspeichers außerhalb des Mikroprozessors liegen können. Die Vorabholungseinheit 108 kann Codierungen aus dem Systemspeicher 100 zur Speicherung in dem Instruktionszwischenspeicher im Voraus abrufen. In einer Ausführungsform ist die Vorabholungseinheit 108 ausgebildet, um Codierung von dem Systemspeicher 200 in den Instruktionszwischenspeicher 106 in großen Mengen abzulegen. Die Vorabholeinheit 108 kann eine Vielzahl spezieller Codierungsvorabholungstechniken und Algorithmen anwenden.
  • Die Ausgabeeinheit 104 kann Signale ausgeben, zu denen Bit-codierte Operationen gehören, die von dem bzw. den Ausführungskern(en) 124 ausführbar sind, sowie Operandenadresseninformationen, unmittelbare Daten, und/oder Austauschdaten. In einigen Ausführungsformen kann die Ausgabeeinheit 104 eine Decodierschaltung (nicht gezeigt) zum Decodieren gewisser Instruktionen von Operationen enthalten, die in dem bzw. den Ausfüh rungsfern(en) 124 ausführbar sind. Einfache Instruktionen können einer einfachen Operation entsprechen. In einigen Ausführungsformen können komplexere Instruktionen mehreren Operationen entsprechen. Wenn eine Operation das Aktualisieren eines Registers beinhaltet, kann eine Registerstelle innerhalb der Registerdatei 116 reserviert werden (beispielsweise beim Decodieren dieser Operation), um spekulative Registerzustände zu speichern (in einer alternativen Ausführungsform kann ein Umordnungspuffer verwendet werden, um einen oder mehrere spekulative Registerzustände für jedes Register zu speichern). Eine Registerzuordnungsaufzeichnung kann logische Registernamen von Quellen- und Zieloperanden in physikalische Registernamen übersetzen, um die Registerumbenennung zu erleichtern. Eine Registerzuordnung kann überwachen, welche Register innerhalb der Registerdatei 116 aktuell zugewiesen sind.
  • Der Mikroprozessor 100 aus 1 unterstützt eine Ausführung ohne Reihenfolge. Eine Rücknahmereihe 102 kann die ursprüngliche Programmsequenzregisterlese- und Schreiboperationen verfolgen, eine Wiedergewinnung für spekulative Instruktionsausführung und eine Verzweigungsfehlvorhersage ermöglicht, und präzis definierte Ausnahmen zulassen. Die Rücknahmereihe 102 kann in einer zuerst-hinein-zuerst-hinaus-Konfiguration eingerichtet sein, in der die Operationen zur „Unterseite" des Puffers wandern, wenn sie als gültig erkannt sind, wodurch Platz für neue Einträge an der „Vorderseite" der Schlange geschaffen wird. Die Rücknahmeschlage 102 kann eine Operation beenden bzw. zurücknehmen oder zurückziehen in Reaktion darauf, dass die Operation in der Ausführung abgeschlossen ist, und dass Daten oder eine Steuerungsspekulation, die an Operationen bis zu einschließlich dieser Operation in der Programmreihenfolge verifiziert sind. Die Rücknahmereihe 102 kann den spekulativen Zustand eines physikalischen Registers in den Konfigurationszustand des Mikroprozessors 100 übergeben, wenn die Operation, die den Wert in diesem physikalischen Register erzeugt hat, zurückgenommen bzw. beendet wird. In einigen Ausführungsformen kann die Rücknahmereihe 102 als Teil eines Umordnungspuffers eingerichtet sein. Ein derartiger Umordnungspuffer kann ferner Datenwertspeicherplatz für spekulative Registerzustände bereitstellen, um die Registerumbenennung zu unterstützen. Zu beachten ist, dass in anderen Ausführungsformen die Rücknahmereihe 102 unter Umständen keinen Datenwertspeicherplatz bereitstellt. Stattdessen kann bei Rücknahme von Operationen die Rücknahmereihe 102 Register in der Registerdatei 116 freigeben, die nunmehr nicht mehr für die Speicherung spekulativer Registerzustände erforderlich sind, und sie kann Signale an die Registerzuordnungsaufzeichnung senden, die anzeigen, welche Register frei sind. Durch das Aufbewahren spekulativer Registerzustände in der Registerdatei 116 (oder in alternativen Ausführungsformen in einem Umordnungspuffer) bis die Operationen, die diese Zustände erzeugt haben, validisiert sind, können die Ergebnisse von spekulativ ausgeführten Operationen entlang eines falsch vorhergesagten Pfades in der Registerdatei 116 als ungültig erklärt werden, wenn eine Verzweigungsvorhersage nicht korrekt ist.
  • Wenn ein erforderlicher Operand einer speziellen Operation eine Registerstelle ist, kann Registeradresseninformation zu einer Registerzuordnung (oder zu einem Umordnungspuffer) geleitet werden. Beispielsweise gibt es in der x86-Architektur acht 32-Bit-Logikregister (z. B. EAX, EBX, ECX; EDX, EBP, ESI, EDI und ESP). Die physikalische Registerdatei 116 (oder ein Umordnungspuffer) enthält Speicherplatz für Ergebnisse, die den Inhalt dieser logischen Register ändern, wodurch eine Ausführung in ungeordneter Reihenfolge möglich ist. Ein physikalisches Register in der Registerdatei 116 kann zugewiesen werden, um das Ergebnis jeder Operation zu speichern, von der bestimmt ist, dass sie den Inhalt eines der logischen Register modifiziert. Daher kann an diversen Punkten während der Ausführung eines speziellen Programms die Registerdatei 116 (oder in alternativen Ausführungsformen ein Umordnungspuffer) ein oder mehrere Register aufweisen, die spekulativ ausgeführte Inhalte eines gegebenen logischen Registers enthalten.
  • Eine Registerzuordnung kann ein physikalisches Register zu einem speziellen logischen Register, das als ein Zieloperand für eine Operation spezifiziert ist, zuweisen. Die Ausgabeeinheit 104 kann bestimmen, dass die Registerdatei 116 ein oder mehrere zuvor zugewiesene physikalische Register aufweist, die einem logischen Register zugeordnet sind, das als ein Quellenoperand in einer gegebenen Operation spezifiziert ist. Die Registerzuordnung kann eine Markierung für das physikalische Register bereitstellen, das als letztes diesem logischen Register zugeordnet wurde. Diese Markierung kann verwendet werden, um auf den Datenwert des Operanden in der Registerdatei 116 zuzugreifen oder um den Datenwert über eine Ergebnisweiterleitung auf dem Ergebnisbus 130 zu empfangen. Wenn der Operand einer Speicherstelle entspricht, kann der Operandenwert auf den Ergebnisbus (zur Ergebnisweiterleitung und/oder Speicherung in einer Registerdatei 116) über die Lade/Speichereinheit 222 bereitgestellt werden. Operandendatenwerte können dem bzw. den „Ausführungskern(en)" 124 zugeführt werden, wenn die Operation von einer der Ablauforganisationseinheiten 118 ausgegeben wird. Zu beachten ist, dass in alternativen Ausfüh rungsformen Operandenwerte durch eine entsprechende Ablauforganisationseinheit 118 bereitgestellt werden können, wenn eine Operation ausgegeben wird (anstatt dass diese einen entsprechenden Ausführungskern 124 zugeführt wird, wenn die Operation ausgegeben wird).
  • Die Bit-codierten Operationen und die unmittelbaren Daten, die an den Ausgängen an der Ausgabeeinheit 104 bereitgestellt werden, können zu einer oder mehreren Ablauforganisationseinheiten 118 geleitet werden. Zu beachten ist, dass im hierin verwendeten Sinne eine Ablauforganisationseinheit eine Einrichtung ist, die erkennt, wenn Operationen zur Ausführung bereit sind und gibt bereite Operationen zu einer oder mehreren Funktionseinheiten aus. Beispielsweise ist eine Reservierungsstation eine Ablauforganisationseinheit. Operationen in einer Ablauforganisationseinheit oder einer Gruppe aus Ablauforganisationseinheiten können auch als Operationen in einem Instruktions- oder Operationsfenster oder einem Organisationsfenster bezeichnet werden. Jede Ablauforganisationseinheit 118 ist in der Lage, Operationsinformationen (beispielsweise Bit-codierte Ausführungsbits sowie Operandenwerte, Operandenmarken und/oder unmittelbare Daten) für einige anhängige Operationen zu halten, die zur Ausgabe an einen Ausführungskern 124 bereit sind. In einigen Ausführungsformen bieten jeweils die Ablauforganisationseinheiten 118 keinen Speicherplatz für Operandenwerte. Stattdessen kann jede Ablauforganisationseinheit ausgegeben Operationen und in der Registerdatei 116 verfügbare Ergebnisse überwachen, um zu bestimmen, wann Operandenwerte zum Auslesen (von der Registerdatei 116 oder dem Ergebnisbus 130) durch die Funktionseinheiten 126 verfügbar sind. In einigen Ausführungsformen ist jede Ablauforganisationseinheit 118 mit einer zugeordneten Funktionseinheit 126 verknüpft. In anderen Ausführungsformen kann eine einzelne Ablauforganisationseinheit 118 Operationen an mehr als eine der Funktionseinheit 126 ausgeben.
  • Ablauforganisationseinheiten 118 können vorgesehen sein, um zeitweilig Operationsinformationen, die von dem bzw. den Ausführungskern(en) 124 auszuführen sind, zu speichern. Wie zuvor erläutert ist, kann jede Ausführungsorganisationseinheit 118 Operationsinformationen für anhängige Operationen speichern. Ferner kann jede Ablauforganisationseinheit Operationsinformationen für Operationen speichern, die bereits ausgeführt sind, aber noch mal auszugeben sind. Operationen werden an den bzw. die Ausführungskern(en) 124 zum Ausführen in Reaktion auf Werte von einem oder mehreren erforderlichen Operanden, die z. Z. der Ausführung vorhanden sind. Daher kann die Reihenfolge, in der die Operationen ausgeführt werden, unter Umständen nicht die gleiche Reihenfolge der ursprünglichen Programminstruktionssequenz sein. Operationen, die eine Datenspekulation beinhalten, können in der bzw. den Ablauflauforganisationseinheit(en) 118 mindestens solange verbleiben, bis diese Operationen nicht spekulativ werden, so dass diese Operationen erneut ausgegeben werden können, wenn die Datenspekulation nicht korrekt ist.
  • In einer Ausführungsform kann in jeder Ausführungskern 124 mehrere Funktionseinheiten 126 beinhalten (beispielsweise die Funktionseinheiten 126a bis 126c, wie dies in 1 gezeigt ist). Einige Funktionseinheiten, beispielsweise 126a, können ausgebildet sein, arithmetische Ganzzahloperationen mit Addition und Subtraktion, sowie Verschiebungen, im Kreis schieben, logische Operationen und Verzweigungsoperationen durchzuführen. Andere Funktionseinheiten, beispielsweise 126b, können ausgebildet sein, Fließkommaoperationen durchzuführen. Eine oder mehrere der Funktionseinheiten, beispielsweise 126a, können ausgebildet sein, eine Adressenerzeugung für Lade- bzw. Auslese- und Speicheroperationen auszuführen, die von einer Funktionseinheit, beispielsweise 126c, auszuführen sind, die Lese- und Speicheroperationen durchführt, um auf in dem Zwischenspeicher 128 und/oder dem Systemspeicher gespeicherte Daten zuzugreifen. In einer Ausführungsform kann eine derartige Funktionseinheit 126c mit einem Lese/Speicherpuffer mit diversen Speicherplätzen für Daten- und Adressinformationen für anhängige Lese- und/oder Speicheroperationen versehen sein.
  • Eine oder mehrere der Funktionseinheiten 126 können ferner Informationen bereitstellen hinsichtlich des Ausführens konditionaler Verzweigungsinstruktionen für eine Verzweigungsvorhersageeinheit, so dass, wenn eine Verzweigung falsch vorhergesagt wird, die Verzweigungsvorhersageeinheit Instruktionen nachfolgend zu der falsch vorhergesagten Verzweigung verwerfen kann, die in die Instruktionsverarbeitungspipeline eingespeist wurden und kann die Vorabholeinheit 106 uminstruieren. Die uminstruierte Vorabholeinheit 106 kann dann beginnen, den korrekten Satz an Instruktionen von dem Instruktionszwischenspeicher 106 oder dem Systemspeicher 200 abzurufen. In derartigen Situationen können die Ergebnisse der Instruktionen in der ursprünglichen Programmsequenz, die nach der falsch vorhergesagten Verzweigungsinstruktion aufgetreten sind, verworfen werden, einschließlich jener, die spekulativ ausgeführt und zwischenzeitlich in der Registerdatei 116 gespeichert wurden.
  • Ergebnisse, die von den Funktionseinheiten 126 innerhalb des bzw. der Ausführungskern(e) 124 erzeugt wurden, können auf dem Ergebnisbus 130 an die Registerdatei 116 ausgegeben werden, wenn ein Registerwert aktualisiert wird. Wenn der Inhalt einer Speicherstelle geändert wird, können die in dem bzw. den Ausführungskern(en) 124 erzeugten Ergebnisse der Lade/Speichereinheit 126c zugeführt werden.
  • Der Datenzwischenspeicher 128 ist ein Zwischenspeicher der vorgesehen ist, um temporär Daten zu speichern, die zwischen Ausführungskernen 124 und dem Systemspeicher 200 ausgetauscht werden. Ebenso wie der Instruktionszwischenspeicher 106, der zuvor beschrieben ist, kann der Datenzwischenspeicher 128 in einer Vielzahl spezieller Speicherkonfigurationen eingerichtet sein, wozu eine teilassoziative Konfiguration gehört. Des weiteren können der Datenzwischenspeicher 106 und der Instruktionszwischenspeicher 128 in einigen Ausführungsformen in einem vereinheitlichten Zwischenspeicher eingerichtet sein. In einigen Ausführungsformen kann ein Mikroprozessor 100 eine integrierte Speichersteuerung 160 enthalten, die es dem Mikroprozessor ermöglicht, direkt mit dem Systemspeicher 200 zu kommunizieren. In anderen Ausführungsformen kann die Speichersteuerung 160 in einer Busbrücke enthalten sein, die den Mikroprozessor 100 indirekt mit dem Systemspeicher 200 verbindet.
  • Datenspekulation
  • Wie hierin beschrieben ist, ist eine Datenwert spekulativ, wenn es eine Möglichkeit gibt, dass der Datenwert unter Umständen nicht korrekt ist und nachfolgend neu berechnet wird. Ein spekulativer Datenwert ist einer, der nicht mit Sicherheit als richtig oder falsch eingestuft werden kann. Ein Datenwert kann neu berechnet werden, wenn der Datenwert das Ergebnis einer Operation ist, für die eine gewisse Datenspekulation durchgeführt wurde, oder wenn der Datenwert von einem weiteren spekulativen Datenwert abhängt (beispielsweise wenn der Datenwert als das Ergebnis einer Operation erzeugt wird, die einen oder mehrere spekulative Operanden aufweist).
  • Es können diverse Mechanismen in dem Mikroprozessor 100 eine Datenspekulation ausführen. Beispielsweise können die Ausgabeeinheit 104, die Speichersteuerung 160 und/oder eine oder mehrere funktionale Einheiten 126 jeweils eine Datenspekulation für eine spezielle Operation ausführen. Die Ausgabeeinheit 104 kann erfassen, das Ergebnis einer Operation als ein spekulativer Operand für eine weitere Operation verwendet werden. Beispielsweise kann die Ausgabeeinheit vorhersagen, dass ein Lesevorgang auf in dem Datenzwischenspeicher 128 durch eine frühere Speicheroperation gespeicherte Daten zugreift. Die Ausgabeeinheit 104 kann daraufhin einen Datenwert, der in einem Register, das als die Quelle des Speichervorgangs verwendet ist, als das spekulative Ergebnis des Lesevorgangs identifizieren. Diese Art der Datenspekulation wird hierin als Abhängigkeitsvorhersage bezeichnet. Die Abhängigkeitsvorhersage kann in der Ausgabeeinheit 104 erweitert werden, indem die Quelle der Speicheroperation als eine spekulative Operandenquelle für Operationen, die das Ergebnis des Lesevorgangs spezifizieren, als ein Operand eingebunden wird. Eine andere Art der Abhängigkeitsvorhersage kann in der Lade/Speichereinheit 126c ausgeführt werden, indem zugelassen wird, dass gewisse Lesevorgänge Speichereinträge umgehen, die nicht berechnete Adressen aufweisen, d. h. durch Vorhersagen, dass jüngere Lesevorgänge nicht von früheren Speichervorgängen abhängig sind.
  • In einem Mehrprozessorsystem kann die Speichersteuerung 160 Kohärenzprüfungen ausführen, um die Kohärenz des Zwischenspeichers zu bewahren. Die Speichersteuerung 160 kann spekulativ eine Kopie einer Speicherzeile aus dem Systemspeicher 200 zurückgeben, bevor die Kohärenzprüfungen an den Zwischenspeichern anderer Mikroprozessoren abgeschlossen sind. Wenn die Kohärenzprüfungen nachfolgend ergeben, dass die korrekte Kopie der auszulesenden Zwischenspeicherzeile aktuell in dem Zwischenspeicher eines weiteren Prozessors gespeichert ist, kann die Kopie der spekulativ von dem Systemspeicher 200 ausgelesenen Zwischenspeicherzeile als ungültig deklariert werden. Folglich sind beliebige Leseoperationsergebnisse, die aus dem Zugreifen auf die Zwischenspeicherzeile erzeugt wurden, spekulativ, bis die Kohärenzprüfungen abgeschlossen sind. Diese Art der Spekulation wird hierin als Speichervorhersage bezeichnet.
  • Die Ausgabeeinheit 104 kann eine Datenspekulation ausführen, indem das Ergebnis einer Operation vorhergesagt wird. Beispielsweise neigen einige Operationen dazu, das gleiche Ergebnis zu erzeugen und somit kann jedes mal, wenn diese Operationen behandelt werden, das Ergebnis spekulativ durch die Ausgabeeinheit 104 erzeugt werden, bevor die Operation mittels einer Funktionseinheit 126 tatsächlich ausgeführt wird. Diese Art der Datenspekulation wird hierin als Datenvorhersage bezeichnet. Zu beachten ist, dass die Daten vorhersage auch in anderen Bereichen des Mikroprozessors ausgeführt werden kann (beispielsweise in einer Lade/Speichereinheit 126c).
  • Eine Lade/Speichereinheit 126c kann spekulativ die Adresse basierend auf der spekulativen Adresse des Ergebnisses einer Leseinstruktion, deren Adresse noch nicht berechnet ist, auf der Grundlage des Musters zuvor behandelter Lesevorgänge erzeugen. Wenn beispielsweise die vorhergehenden N-Leseoperationen Zieladressen A1–AN aufweisen, die durch einen konstanten Offset C voneinander beabstandet sind (beispielsweise A1; A2 = A1 + C; ...; AN = A(N – 1) + C) kann die Lade/Speichereinheit 126c spekulativ die Daten von der jüngsten ausgelesenen Adresse AN + dem konstanten Offset C als das Ergebnis der Leseoperation zurückgeben. Diese Art der Datenspekulation wird hierin als Adressenvorhersage bezeichnet. Zu beachten ist, dass andere Formen der Adressenvorhersage in anderen Ausführungsformen verwendet werden können.
  • Operationen, die von dem Ergebnis von Operationen abhängen, an denen eine Datenspekulation ausgeführt wurde, können ebenso spekulative Ergebnisse erzeugen. Wenn beispielsweise eine Adressenvorhersage verwendet wird, um das spekulative Ergebnis einer Leseoperation zu erzeugen, können abhängige Operationen, die unter Anwendung des spekulativen Ergebnisses des Lesevorgangs als Operand abgearbeitet werden, spekulative Ergebnisse ergeben, die wiederum als Operanden von anderen abhängigen Operationen verwendet werden können. Wenn daher die zu Grunde liegende Spekulation in der Leseoperation als inkorrekt erkannt wird, können die Ergebnisse der abhängigen Operationen ebenso falsch sein und somit ist die gesamte Abhängigkeitskette an Operationen, die von diesem Lesevorgang abhängig sind, unter Umständen erneut auszuführen, um damit korrekte Ergebnisse zu erzeugen. Wenn andererseits die zu Grunde liegende Spekulation als richtig erkannt wird, können die Ergebnisse der abhängigen Operationen korrekt sein (wenn angenommen wird, dass diese Ergebnisse nicht auf anderen spekulativen Werten beruhen).
  • Viele Operationen, für die eine Datenspekulation ausgeführt ist, können verifiziert werden, wenn diese Operationen bei einer funktionalen Einheit ausgeführt werden. Z. B. kann die Datenvorhersage, die zur spekulativen Erzeugung des Ergebnisses einer Operation angewendet wird, durch die Funktionseinheit 126 verifiziert werden, die diese Operation ausführt, indem das tatsächliche Ergebnis der Operation mit dem spekulativen Ergebnis vergli chen wird. Einige Operationen müssen nicht erneut ausgeführt werden, wenn die Datenspekulation nicht korrekt ist, da das korrekte Ergebnis bereits verfügbar ist. Andere Operationen können verifiziert werden, ohne dass sie vollständig ausgeführt werden. Wenn beispielsweise ein Lesevorgang mit einer nicht berechneten Adresse sein Ergebnis aus einer früheren Speicheroperation weitergibt (beispielsweise auf Grund der Abhängigkeit- oder Adressenvorhersage), so kann das spekulative Ergebnis des Lesevorgangs verifiziert werden, wenn die Leseadresse berechnet wird. Wenn die Datenspekulation nicht korrekt ist, muss eine derartige Operation unter Umständen erneut ausgeführt werden (zumindest teilweise) um das korrekt Ergebnis zu erzeugen.
  • Da Operationen, für die eine Datenspekulation ausgeführt wurde, und ihre abhängigen Operationen erneut ausgeführt werden müssen, kann die Rücknahmereihe 102 so gestaltet sein, dass lediglich Operationen zurückgenommen bzw. zurückgezogen werden, für die eine zu Grunde liegende Datenspekulation erfolgt ist. Wie in 1 gezeigt ist, kann jede Einrichtung zum Verifizieren einer Datenspekulation (in dieser Ausführungsform die Speichersteuerung 160 und die Funktionseinheiten 126) ausgebildet sein, die Rücknahmereihe 102 mit einem Spekulationszeiger zu versorgen, der die Operationen kennzeichnet, für die eine Datenspekulation verifiziert ist. Jeder Spekulationszeiger kann die Operationen kennzeichnen, für die eine Datenspekulation im Hinblick auf eine spezielle Verifizierungseinrichtung verifiziert ist, indem ein Wert gleich der Markierung der jüngsten Operation angenommen wird, die von dieser Verifizierungseinrichtung verifiziert ist. Die Rücknahmereihe 102 kann die Spekulationszeiger verwenden, um anzugeben, welche Operationen zu beenden sind. Die diversen Komponenten innerhalb des Mikroprozessors 100, die ausgebildet sind, eine oder mehrere Daten an Datenspekulation zu verifizieren, werden hierin als Datenspekulationsverifizierungseinheiten bezeichnet.
  • Jeder Spekulationszeiger kann angeben, welcher Punkt in der zu Grunde liegenden Instruktionsfolge nicht spekulativ im Hinblick auf einen speziellen Bereich des Mikroprozessors ist. Beispielsweise kann der Spekulationszeiger D, der von der Speichersteuerung 160 erzeugt wird, die jüngste nicht-spekulative Operation im Hinblick auf die Speichersteuerung 160 bezeichnen, die Speichervorhersagen verifiziert. In einer Ausführungsform kann die Speichersteuerung 160 den Spekulationszeiger D erzeugen, so dass dieser auf die jüngste verifizierte Operation zeigt, für die eine Speichervorhersage getroffen wurde. In einer weiteren Ausführungsform kann die Speichersteuerung 160 den Spekulationszeiger so erzeugen, dass dieser auf die Operation unmittelbar vor der ältesten nicht verifizierten Operation zeigt, für die eine Speichervorhersage getroffen wurde. Im Allgemeinen zeigt der Spekulationszeiger D für die Rücknahmereihe 102 an, welche Operationen aus der Sicht der Speichersteuerung 160 nicht mehr spekulativ sind.
  • Die Funktionseinheit 126a und 126b können eine Ganzzahloperation bzw. eine Fließkommaoperation gemäß einer Ausführungsform ausführen. Die Funktionseinheiten 126a und 126b können jeweils eine Datenvorhersage verifizieren. Die Spekulationszeiger A und B geben entsprechend an, welche Operationen durch die Funktionseinheiten 126a und 126b in der in 1 dargestellten Ausführungsform verifiziert sind. Ein Spekulationszeiger C wird von einer Funktionseinheit 126c erzeugt, die Lese-, bzw. Lade- und Speicheroperationen ausführt. Der Spekulationszeiger C kann angeben, welche Operationen von der Lade/Speichereinheit 126c verifiziert wurden. Die Funktionseinheit 126c kann ausgebildet sein, Adressen-, Daten- und/oder Abhängigkeitsvorhersagen zu verifizieren.
  • Wie zuvor beschrieben ist, hängt der Wert jedes Spekulationszeigers davon ab, welche Operationen von einer entsprechenden Datenspekulationsverifizierungseinheit verifiziert sind. In einigen Ausführungsformen können die Werte der von den Verifizierungsbereichen des Mikroprozessors 100 erzeugten Spekulationszeigern auch von einer Information abhängen, die die Operationen kennzeichnet, an denen eine Datenspekulation ausgeführt wurde. Beispielsweise kann in einer Ausführungsform die Speichersteuerung 160 jede Operation verfolgen, an der eine Speichervorhersage ausgeführt wurde. Wenn die Speichersteuerung 160 jede Operation verifiziert, kann die Speichersteuerung 160 den Spekulationszeiger D weitersetzen, um anzuzeigen, dass alle Operationen bis zu der nächsten jüngsten Operation, an der eine Speichervorhersage ausgeführt wurde, nicht-datenspekulativ im Hinblick auf die Speichersteuerung 160 sind. In einer Ausführungsform kann die Speichersteuerung 160 jene Operationen kennzeichnen, indem der Spekulationszeiger D weitergestellt wird, um auf die nächste jüngste spekulative Operation zu zeigen, die von der Speichersteuerung 160 verfolgt wird. In ähnlicher Weise können die Mechanismen, die andere Arten an Datenspekulation ausführen (beispielsweise die Ausgabeeinheit 104 und/oder die Funktionseinheit 126c, die Lade- und Speicheroperationen ausführt) auch die Operationen verfolgen, an denen eine Datenspekulation ausgeführt ist. In einigen Ausführungsformen können zumindest einige dieser Datenspekulationsmechanismen diese Information zu der bzw. den Datenspekulationsverifizierungseinheit(en) liefern (beispiels weise die Lade/Speichereinheit 126c und/oder eine oder mehrere der anderen Funktionseinheiten 126), die ausgebildet sind, diese Art der Datenspekulation zu verifizieren. Wenn aktuell keine Daten-spekulative Operationen vorhanden sind, die von einer speziellen Einheit der Datenspekulationsverifizierungseinheiten zu verifizieren sind, kann der von dieser Verifizierungseinheit erzeugte Spekulationszeiger auf einen Wert gesetzt werden, der angibt, dass alle anhängigen Operationen nicht-datenspekulativ im Hinblick auf diese spezielle Verifizierungseinheit sind.
  • Die Rücknahmereihe 102 kann angeben, welche Operationen zurückgenommen bzw. zurückgezogen werden können, indem die Bereiche der Operationsfolge, die von Spekulationszeigern angegeben wird, verglichen werden. Die älteste Operation, die von allen Spekulationszeigern als nicht-spekulativ bezeichnet wird, kann die älteste Operation sein, die von der Rücknahmereihe 102 beendet wird. Es sei beispielsweise angenommen, dass Operationen 0 bis 10 (wobei die Operation 0 die älteste Operation in der Programmreihenfolge ist und 10 die jüngste Operation in der Programmreihenfolge ist, wobei die Programmreihenfolge die Reihenfolge der Instruktionen in dem Programm ist, die ausgeführt wird, bevor Operationen neu geordnet werden oder eine Abarbeitung in ungeordneter Reihenfolge innerhalb des Mikroprozessors 100 ausgeführt ist) von der Ausgabeeinheit 104 ausgegeben wurden. Wenn der Spekulationszeiger A angibt, das Operation bis zur Operation 6 nicht-datenspekulativ sind, der Spekulationszeiger B angibt, das Operationen bis zur Operation 5 nicht-datenspekulativ sind, der Spekulationszeiger C angibt, das Operationen bis zur Operation 3 nicht-datenspekulativ sind und der Spekulationszeiger D angibt, dass alle offenen Operationen nicht-datenspekulativ sind (weil beispielsweise keine Speichervorhersage für die Operationen 0 bis 10 getroffen wurde), kann die Rücknahmereihe 102 die Operationen bis zur Operation 3 als den Satz an Operationen kennzeichnen, die beendet werden können. Zu beachten ist, dass die Operationszurückziehung auch von typischen Beendigungsrahmenbedingungen abhängen kann, ob jene Operationen bereits durch eine Funktionseinheit 126 ausgeführt sind und ob eine Steuerungsvorhersage, die diese Operationen beeinflusst, erfolgreich vorgenommen ist. Wenn beispielsweise eine datenspekulative Operation als inkorrekt erkannt wird und erneut ausgeführt werden muss, kann diese Operation als nicht-spekulativ durch einen oder mehrere Spekulationszeiger erkannt werden, sollte aber nicht zurückgezogen werden, bis diese Operation erneut ausgeführt ist. In einigen Ausführungsformen kann eine Information darüber, ob Operationen ausgeführt sind oder nicht, oder bei Bedarf erneut ausgeführt werden, der Rücknahmereihe 102 durch die Ablauforganisationseinheit 118 zugeführt werden.
  • 2a zeigt eine Ausführungsform eines Verfahrens, das zum Erzeugen eines Spekulationszeigers angewendet wird. Ein derartiges Verfahren kann zumindest teilweise durch eine der Spekulationsverifizierungseinheiten, etwa die Speichersteuerung 160 und die Funktionseinheiten 126 eingerichtet werden. Der Schritt 201 kann in einigen Ausführungsformen durch den gleichen Bereich des Mikroprozessors ausgeführt werden, der die Datenspekulation verifizieren wird. Wenn diese Datenspekulation bei 203 verifiziert ist, kann der Spekulationszeiger weitergesetzt werden, wie dies in 205 gezeigt ist, um die Operation, an der in 201 eine Datenspekulation ausgeführt wurde, als nicht-spekulativ zu kennzeichnen. In einer Ausführungsform kann das Weitersetzen des Spekulationszeigers bei 205 das Weitersetzen des Spekulationszeigers beinhalten, um die Operation, die als letztes verifiziert wurde, zu kennzeichnen, wodurch angezeigt wird, dass alle Operationen bis zu und einschließlich dieser Operation nicht-datenspekulativ im Sinne einer speziellen Einrichtung zum Verifizieren einer Datenspekulation sind. In anderen Ausführungsformen kann das Weitersetzen des Spekulationszeigers bei 205 das Weitersetzen des Spekulationszeigers beinhalten, um die Operation unmittelbar vor der nächsten spekulativen Operation, hinsichtlich der Programmreihenfolge, zu kennzeichnen, dass diese von dieser speziellen Verifizierungseinrichtung zu verifizieren ist. Beispielsweise kann eine Lade/Speichereinheit 126 verfolgen, für welche Operationen die Lade/Speichereinheit eine Datenspekulation ausgeführt hat. Jedes mal, wenn die Lade/Speichereinheit 126 eine dieser datenspekulativen Operationen verifiziert, kann die Lade/Speichereinheit 126 ihren Spekulationszeiger weitersetzen, um anzuzeigen, dass alle Operationen bis zu der nächsten Operation, für die die Lade/Speichereinheit eine Datenspekulation ausgeführt hat, nicht datenspekulativ im Hinblick auf die Lade/Speichereinheit sind. In anderen Ausführungsformen kann der Zeiger in anderer Art weitergesetzt werden. Beispielsweise kann eine Funktionseinheit eine Art der Datenspekulation verifizieren, die von der Ausgabeeinheit ausgeführt wurde. In einigen Ausführungsformen kann die Funktionseinheit unter Umständen nicht den gesamten Satz an offenen Operationen kennen, an denen die Ausgabeeinheit diese Art der Datenspekulation ausgeführt hat. Stattdessen kann die Funktionseinheit lediglich wissen, welche der Operationen, die in dieser Funktionseinheit gerade anhängig sind, datenspekulativ sind. Folglich kann in Reaktion auf das Verifizieren der Datenspekulation für eine spezielle Operation die Funktionseinheit den Spekulationszeiger weitersetzen, um die Operation unmittelbar vor der ältesten datenspekulativen Operation (wenn es eine gibt), die in dieser Funktionseinheit anhängig ist, zu kennzeichnen. Wenn keine der Operationen, die aktuell in dieser Funktionseinheit anhängig ist, datenspekulativ ist, kann die Funktionseinheit den Wert ihres Spekulationszeigers aktualisieren, um anzuzeigen, dass keine anhängigen Operationen gegenwärtig datenspekulativ im Hinblick auf diese Funktionseinheit sind.
  • 2b zeigt ein Flussdiagramm einer Ausführungsform eines Verfahrens zum Zurückziehen einer anhängigen Operation. Bei 211 werden ein oder mehrere Spekulationszeiger empfangen. Wenn mehrere Spekulationszeiger empfangen werden, kann jeder Spekulationszeiger einen unterschiedlichen Bereich der anhängigen Operationen als nicht-datenspekulativ kennzeichnen. Wenn ein beliebiger der Spekulationszeiger anzeigt, dass eine spezielle Operation dennoch datenspekulativ sein kann, wird diese Operation nicht beendet, wie dies als 213 gezeigt ist. Wenn jedoch keiner der Spekulationszeiger diese Operation als möglicherweise datenspekulativ kennzeichnet, kann die Operation abgeschlossen werden, wie dies bei 213 bis 215 gezeigt ist, vorausgesetzt, dass alle anderen Voraussetzungen für das Zurückziehen dieser Operation erfüllt sind.
  • Beispielhafte Computersysteme
  • 3 zeigt eine Blockansicht einer Ausführungsform eines Computersystems 900, das einen Prozessor 100 aufweist, der mit einer Vielzahl von Systemkomponenten über eine Busbrücke 902 verbunden ist. Der Prozessor 100 kann eine oder mehrere Datenverifizierungseinheiten umfassen, die ausgebildet sind, Spekulationszeiger zu erzeugen, und kann ferner eine Rücknahmereihe enthalten, die ausgebildet ist, Operationen, die von den Datenspekulationszeigern als nicht-datenspekulativ gekennzeichnet sind, wie dies zuvor beschrieben ist, zu beenden. Andere Ausführungsformen eines Computersystems sind möglich und hierin mit eingeschlossen. In dem dargestellten System ist ein Hauptspeicher 200 mit der Busbrücke 902 über einen Speicherbus 906 verbunden, und eine Graphiksteuerung 908 ist mit der Busbrücke 902 über einen AGP-Bus 910 verbunden. Diverse PCI-Einrichtungen 912a bis 912b sind mit der Busbrücke 902 über einen PCI-Bus 914 verbunden. Es kann auch eine Sekundärbusbrücke 916 vorgesehen sein, um eine elektrische Schnittstelle zu einer oder mehreren EISA- oder ISA-Einrichtungen 918 über einen EISA/ISA-Bus 920 aufzunehmen. In diesem Beispiel ist der Prozessor 100 mit der Busbrü cke 902 über einen CPU-Bus 924 und mit einem optionalen L2-Zwischenspeicher bzw. Cache-Speicher 928 verbunden. In einigen Ausführungsformen kann der Prozessor 100 einen integrierten L1-Zwischenspeicher (nicht gezeigt) enthalten.
  • Die Busbrücke 902 stellt eine Schnittstelle zwischen dem Prozessor 100, dem Hauptspeicher 200, der Graphiksteuerung 908 und den an den PCI-Bus 914 angeschlossenen Einrichtungen bereit. Wenn eine Operation von einer der mit der Busbrücke 902 verbundenen Einrichtungen empfangen wird, erkennt die Busbrücke 902 das Ziel der Operation (beispielsweise eine spezielle Einrichtung oder im Falle des PCI-Busses 914, dass das Ziel auf dem PCI-Bus 914 liegt). Die Busbrücke 902 leitete die Operation an die Zieleinrichtung weiter. Die Busbrücke 902 übersetzt im Allgemeinen eine Operation von dem Protokoll, das von der Quelleneinrichtung oder Quellenbus verwendet wird, in das Protokoll, das von der Zieleinrichtung oder dem Zielbus verwendet wird.
  • Zusätzlich zur Bereitstellung einer Schnittstelle mit einem ISA/EISA-Bus für den PCI-Bus 914 kann die Sekundärbusbrücke 916 zusätzliche Funktionen enthalten. Eine Eingabe/Ausgabe-Steuerung (nicht gezeigt), die extern zu oder integriert in der Sekundärbusbrücke 916 sein kann, kann ebenso in dem Computersystem 900 enthalten sein, um eine zusätzliche funktionale Unterstützung für eine Tastatur und eine Maus 922 oder diverse serielle und parallele Portanschlüsse bereitzustellen. Eine externe Zwischenspeichereinheit (nicht gezeigt) kann ebenso mit dem CPU-Bus 924 zwischen dem Prozessor 100 und der Busbrücke 902 in anderen Ausführungsformen angeschlossen sein. Alternativ kann der externe Zwischenspeicher mit der Busbrücke 902 verbunden sein und eine Zwischenspeichersteuerlogik für den externen Zwischenspeicher kann in der Busbrücke 902 integriert sein. Der L2-Zwischenspeicher 928 ist in einer Rückseiten-Konfiguration in Bezug auf den Prozessor 100 gezeigt. Zu beachten ist, dass der L2-Zwischenspeicher 928 getrennt von dem Prozessor 100 vorgesehen sein kann, oder integriert in ein Gehäuse (beispielsweise Schlitz 1 oder Schlitz A) in dem Prozessor 100 vorgesehen sein kann oder sogar auf einem Halbleitersubstrat in dem Prozessor 100 in integrierter Weise angeordnet sein kann.
  • Der Hauptspeicher 200 ist ein Speicher, in weichem Anwendungsprogramme gespeichert sind, und aus welchem der Prozessor 100 hauptsächlich heraus arbeitet. Ein geeigneter Hauptspeicher 200 kann einen DRAM (dynamischen Speicher mit wahlfreiem Zugriff) um fassen. Beispielsweise können mehrere Bänke aus SDRAM (synchrone DRAM) oder Rambus DRAM (RDRAM) geeignet sein.
  • Die PCI-Einrichtungen 912A bis 912B sind beispielhaft für eine Vielzahl von Periphergeräten, etwa Netzwerkschnittstellenkarten, Videobeschleuniger, Audiokarten, Festplattenlaufwerke oder Diskettenlaufwerke oder Laufwerkssteuerungen, SCSI (Kleincomputersystemschnittstelle) Adapter und Telefonkarten. In ähnlicher Weise ist die ISA-Einrichtung 918 beispielhaft für diverse Arten von Peripheriegeräten, etwa ein Modem, eine Audiokarte und eine Vielzahl von Datennahmekarten, etwa GPIB oder Feldbusschnittstellenkarten.
  • Die Graphiksteuerung 908 ist vorgesehen, um die Umwandlung von Text und Bildern auf einer Anzeige 926 zu steuern. Die Graphiksteuerung 908 kann als ein typischer Graphikbeschleuniger vorgesehen sein, der im Allgemeinen zur Umwandlung dreidimensionaler Datenstrukturen bekannt ist, die in effizienter Weise in und aus dem Hauptspeicher 200 verschoben werden können. Die Graphiksteuerung 908 kann daher eine übergeordnete Einheit des AGP-Busses 910 sein, dahingehend, dass diese Zugriff zu einer Zielschnittstelle innerhalb der Busbrücke 902 anfordern und erhalten kann, um damit auf den Hauptspeicher 200 zuzugreifen. Ein spezieller Graphikbus beinhaltet das rasche Abrufen von Daten aus dem Hauptspeicher 200. Für gewisse Operationen kann die Graphiksteuerung 908 ferner ausgebildet sein, PCI-Protokolltransaktionen an dem AGP-Bus 910 zu erzeugen. Die AGP-Schittstelle der Busbrücke 902 kann damit eine Funktion enthalten, um sowohl AGP-Protokolltransaktionen sowie auch PCI-Protokollziel- und Initiator-Transaktionen zu unterstützen. Die Anzeige 926 ist eine beliebige elektronische Anzeige, auf der ein Bild oder Text präsentiert werden kann. Eine geeignete Anzeige 926 umfasst eine Elektronenstrahlröhre („CRT"), eine Flüssigkristallanzeige („LCD") etc.
  • Zu beachten ist, dass obwohl die AGP, PCI und ISA oder EISA-Busse in der obigen Beschreibung als Beispiele angeführt sind, auch beliebige Busarchitekturen nach Bedarf eingesetzt werden können. Ferner ist zu beachten, dass das Computersystem 900 ein Mehrfachprozessor-Computersystem mit zusätzlichen Prozessoren (beispielsweise Prozessor 100a, der als eine optionale Komponente des Computersystems 900 gezeigt ist) sein kann. Der Prozessor 100a kann ähnlich zu dem Prozessor 100 ausgebildet sein. Genauer gesagt, der Prozessor 100a kann eine identische Kopie des Prozessors 100 sein. Der Prozessor 100a kann mit der Busbrücke 902 über einen unabhängigen Bus (wie in 3 gezeigt ist) verbunden sein, oder kann mit dem Prozessor 100 den CPU-Bus 924 gemeinsam benutzen. Ferner kann der Prozessor 100a mit einem optionalen L2-Zwischenspeicher 928a ähnlich zu dem L2-Zwischenspeicher 928 verbunden sein.
  • In 4 ist eine weitere Ausführungsform eines Computersystems 900 gezeigt, die einen Prozessor 100 mit einer oder mehreren Datenspekulationsverifizierungseinheiten, die zum Erzeugen von Spekulationszeigern ausgebildet sind, und eine Rücknahmereihe aufweisen kann, die Operationen abhängig von den Spekulationszeigern beenden kann, wie dies zuvor beschrieben ist. Andere Ausführungsformen sind möglich und hierin mit eingeschlossen. In der Ausführungsform aus 4 umfasst das Computersystem 900 diverse Verarbeitungsknoten 1012A, 1012B, 1012C und 1012D. Jeder Verarbeitungsknoten ist mit einem entsprechenden Speicher 200a bis 200d über eine Speichersteuerung 1016A bis 1016D verbunden, die jeweils in dem entsprechenden Verarbeitungsknoten 1012A bis 1012D integriert sind. Des weiteren enthalten die Verarbeitungsknoten 1012A bis 1012D eine Schnittstellenlogik, die zur Kommunikation zwischen den Verarbeitungsknoten 1012A bis 1012D verwendet wird. Beispielsweise umfasst der Verarbeitungsknoten 1012A eine Schnittstellenlogik 1018A zur Kommunikation mit dem Verarbeitungsknoten 1012B, eine Schnittstellenlogik 1018B zur Kommunikation mit dem Verarbeitungsknoten 1012C und eine dritte Schnittstellenlogik 1018C zur Kommunikation mit einem noch weiteren Verarbeitungsknoten (nicht gezeigt). In ähnlicher Weise umfasst der Verarbeitungsknoten 1012B eine Schnittstellenlogik 1018D, 1018E und 1018F; der Verarbeitungsknoten 1012C umfasst eine Schnittstellenlogik 1018G, 1018H und 10181; und der Verarbeitungsknoten 1012D umfasst eine Schnittstellenlogik 1018J, 1018K und 1018L. Der Verarbeitungsknoten 1012D ist angeschlossen, um mit mehreren Eingabe/Ausgabe-Geräten (beispielsweise Geräte 1020A bis 1020B in einer seriellen Konfiguration) über die Schnittstellenlogik 1018L zu kommunizieren. Andere Verarbeitungsknoten können mit andern I/O-Geräten in ähnlicher Weise in Verbindung stehen.
  • Die Verarbeitungsknoten 1012A bis 1012D bilden eine paketbasierte Verbindung für eine Kommunikation zwischen den Verarbeitungsknoten. In der vorliegenden Ausführungsform wird die Verbindung als Sätze von unidirektionalen Leitungen (beispielsweise Leitungen 1024A werden verwendet, um Pakete von dem Verarbeitungsknoten 1012A zu dem Verarbeitungsknoten 1012B zu übertragen, und Leitungen 1024B werden verwendet, um Pakete von dem Verarbeitungsknoten 1013B zu dem Verarbeitungsknoten 1012A zu übermitteln).
  • Andere Leitungssätze 1024C bis 1024H werden verwendet, um Pakete zwischen anderen Verarbeitungsknoten zu übertragen, wie in 4 gezeigt ist. Im Allgemeinen kann jeder Leitungssatz 1024 eine oder mehrere Datenleitungen, eine oder mehrere Taktleitungen entsprechend den Datenleitungen und eine oder mehrere Steuerleitungen, die die Art des transportierten Pakets angibt, beinhalten. Die Verbindung kann in einer mit dem Zwischenspeicher kohärenten Weise für die Kommunikation zwischen den Verarbeitungsknoten betrieben werden, oder in einer nicht kohärenten Weise zur Kommunikation zwischen einem Verarbeitungskoten und einem I/O-Gerät (oder einer Busbrücke zu einem I/O-Bus konventionellen Aufbaus, etwa dem PCI-Bus oder dem ISA-Bus). Des weiteren kann die Verbindung in einer nicht-kohärenten Weise unter Anwendung einer seriell verketteten Struktur zwischen I/O-Geräten betrieben werden, wie dies gezeigt ist. Zu beachten ist, dass ein Paket, das von einem Verarbeitungsknoten zu einem weiteren zu transportieren ist, einen oder mehrere zwischenliegende Verarbeitungsknoten durchlaufen kann. Beispielsweise kann ein Paket, das von dem Verarbeitungsknoten 1012A zu den Verarbeitungsknoten 1012D übertragen wird, über den Verarbeitungsknoten 1012B oder den Verarbeitungsknoten 1012C laufen, wie in 4 gezeigt ist. Es kann ein beliebiger geeigneter Signalführungsalgorithmus verwendet werden. In anderen Ausführungsformen des Computersystems 900 können mehr oder weniger Verarbeitungsknoten als in der in 4 gezeigten Ausführungsform vorgesehen sein.
  • Im Allgemeinen werden die Pakete als eine oder mehrere Bitzeiten auf den Leitungen 1024 zwischen den Verarbeitungsknoten übertragen. Eine Bitzeit kann die ansteigende oder abfallende Flanke des Taktsignals auf den entsprechenden Taktleitungen sein. Die Pakete können Befehlspakete zum Initiieren von Transaktionen, Sondierungspakete zur Beibehaltung der Zwischenspeicher-Kohärenz und Antwortpakete aus dem Antworten auf die Sondierungen bzw. Anforderungen und Befehle sein.
  • Die Verarbeitungsknoten 1012A bis 1012D können zusätzlich zu einer Speichersteuerung und einer Schnittstellenlogik einen oder mehrere Prozessoren beinhalten. Allgemein gesagt, ein Verarbeitungsknoten umfasst mindestens einen Prozessor und kann optional eine Speichersteuerung zur Kommunikation mit einem Speicher und anderer Logik nach Bedarf enthalten. Genauer gesagt, jeder Verarbeitungsknoten 1012A bis 1012D kann eine oder mehrere Kopien des Prozessors 100 enthalten. Eine externe Schnittstelleneinheit kann die Schnittstellenlogik 1018 in dem Knoten sowie die Speichersteuerung 1016 enthalten.
  • Die Speicher 200A bis 200D können beliebige geeignete Speichereinrichtungen aufweisen. Beispielsweise kann ein Speicher 200A bis 200D einen oder mehrere RAMBUS DRAMS (RDRAMS), synchrone DRAMS (SDRAMS), statische RAMS etc. umfassen. Der Adressenraum des Computersystems 900 ist auf die Speicher 200A bis 200D aufgeteilt. Jeder Verarbeitungsknoten 1012A bis 1012D kann eine Speicherzuordnung enthalten, die verwendet wird, um zu bestimmen, welche Adresse welchen Speichern 200A bis 200D zugeordnet ist, und damit auch zu bestimmen, zu welchem Verarbeitungsknoten 1012A bis 1012D eine Speicheranforderung für eine spezielle Adresse zugeführt werden sollte. In einer Ausführungsform ist der Kohärenzpunkt für eine Adresse innerhalb des Computersystems 900 die Speichersteuerung 1016A bis 1016D, die mit dem Speicher verbunden ist, der Bits entsprechend der Adresse speichert. Anders ausgedrückt, die Speichersteuerung 1016A bis 1016D ist dafür verantwortlich, dass sichergestellt wird, dass jeder Speicherzugriff auf den entsprechenden Speicher 200A bis 200D in einer mit dem Zwischenspeicher kohärenten Weise abläuft. Die Speichersteuerungen 1016A bis 1016D können eine Steuerschaltung zur Verbindung mit den Speicher 200A bis 200D aufweisen. Des weiteren können die Speichersteuerungen 1016A bis 1016D Anforderungsschlangen zur Aufreihung von Speicheranforderungen enthalten.
  • Die Schnittstellenlogik 1018A bis 1018L können eine Reihe von Puffern zur Aufnahme von Paketen aus der Verbindung und zur Zwischenspeicherung von Paketen, die in die Kommunikationsverbindung zu übermitteln sind, umfassen. Das Computersystem 900 kann einen beliebigen geeigneten Ablaufsteuerungsmechanismus zum Senden von Paketen aufweisen. Beispielsweise speichert in einer Ausführungsform jede Schnittstellenlogik 1018 eine Anzahl der Zahl der Arten von Puffer innerhalb des Empfängers an jedem Ende der Verbindungsleitung, mit der diese Schnittstellenlogik verbunden ist. Die Schnittstellenlogik sendet kein Paket weiter, wenn nicht die empfangende Schnittstellenlogik einen freien Puffer zur Speicherung des Pakets aufweist. Wenn ein Empfangspuffer freigegeben wird, weil ein Paket weitergeleitet wird, sendet die empfangene Schnittstellenlogik eine Nachricht zu der sendenden Schnittstellenlogik, um anzuzeigen, dass der Puffer freigegeben ist. Ein derartiger Mechanismus kann als ein „Coupon-basiertes" System bezeichnet werden.
  • Die I/O-Geräte 1020A bis 1020B können beliebige geeignete I/O-Geräte sein. Z. B. können die I/O-Geräte 1020A bis 1020B Einrichtungen zur Kommunikation mit einem anderen Computersystem, mit dem die Geräte verbunden sind (beispielsweise Netzwerkschnittstellenkarten oder Modems) umfassen. Ferner können die I/O-Geräte 1020A bis 1020B Videobeschleuniger, Audiokarten, Festplatten oder Laufwerke oder Laufwerkssteuerungen, SCSI- (Kleincomputersystemschnittstelle) Adapter und Telefonkarten, Klangkarten und eine Vielzahl von Datennahmekarten, etwa GPIB oder Feldbusschnittstellenkarten umfassen. Zu beachten ist, dass der Begriff „I/O-Gerät" und der Begriff „Periphergerät" hierin als Synonym zu betrachten sind.
  • Im hierin verwendeten Sinne bezeichnet der Begriff „Taktzyklus" ein Zeitintervall, in welchem diverse Stadien der Instruktionsbearbeitungspipelinestrukturen ihre Aufgaben abschließen. Instruktionen und berechnete Werte werden von den Speicherelementen (etwa Register oder Arrays) gemäß einem Taktsignal, das den Taktzyklus definiert, gespeichert. Beispielsweise kann ein Speicherelement einen Wert entsprechend der ansteigenden oder abfallenden Flanke des Taktsignals speichern.
  • Die vorhergehende Erläuterung beschreibt Signale als „gesetzt". Ein Signal kann als gesetzt bzw. als bestätigt betrachtet werden, wenn es einen Wert übermittelt, der eine spezielle Information kennzeichnet. Ein spezielles Signal kann als gesetzt betrachtet werden, wenn es einen binären Wert eins oder alternativ wenn es einen binären Wert Null überträgt.
  • Es ergeben sich diverse Variationen und Modifizierungen für den Fachmann im Lichte der zuvor dargelegten technischen Lehre. Die anschließenden Patentansprüche sollen so interpretiert werden, dass sie alle derartigen Variationen und Modifizierungen mit einschließen.
  • Industrielle Anwendbarkeit
  • Diese Erfindung ist im Allgemeinen auf Mikroprozessoren anwendbar.
  • Zusammenfassung
  • Ein Mikroprozessor kann eine Rücknahmereihe und eine oder mehrere Datenspekulationsverifizierungseinheiten umfassen. Die Datenspekulationsverifizierungseinheiten sind jeweils so gestaltet, um eine an Operationen ausgeführt Datenspekulation zu verifizieren. Jede Datenspekulationsverifizierungseinheit erzeugt einen entsprechenden Spekulationszeiger, der anhängige Operationen kennzeichnet, an denen eine Datenspekulation ausgeführt wurde, die von dieser Datenspekulationsverifizierungseinheit verifiziert wurden. Die Rücknahmereihe ist ausgebildet, selektiv Operationen in Abhängigkeit des von jeder der Datenspekulationsverifizierungseinheiten empfangenen Spekulationszeigers zurück zu ziehen.
  • 1
  • 104
    Ausgabeeinheit
    118
    Ablauforganisationseinheit(en)
    106
    Instruktionszwischenspeicher
    108
    Vorabholungseinheit
    102
    Rücknahmereihe
    Spekulationszeiger A, B, C
    Spekulationszeiger D
    160
    Speichersteuerung
    200
    Systemspeicher
    128
    Datenzwischenspeicher
    126a, 126c
    Funktionseinheit
    124
    Ausführungskern(e)
    130
    Ergebnisbus
    116
    Registerdatei
    100
    Mikroprozessor
  • 2a
  • 201
    Ausführen einer Datenspekulation für Operation
    203
    Datenspekulation verifiziert?
    205
    Weitersetzen des Spekulationszeigers, um diese Operation als nicht spekulativ zu
    kennzeichnen
  • 2b
  • 211
    Empfangen eines oder mehrerer Spekulationszeiger
    213
    Zeigt ein Spekulationszeiger an, dass eine anhängliche Operation spekulativ ist?
    215
    Beenden der anhängigen Operation
  • 3
  • 200
    Hauptspeicher
    906
    Speicherbus
    902
    Busbrücke
    914
    PCI-Bus
    924
    CPU-Bus
    928
    L2-Cache
    100
    Prozessor
    100a
    Prozessor
    928a
    L2-Cache
    910
    AGP-Bus
    908
    Graphiksteuerung
    926
    Anzeige
    920
    ISA/EISA-Bus
    922
    Tastatur/Maus
    916
    Sekundärbusbrücke
    918
    ISA-Gerät
    812a, b
    PCI-Gerät
  • 4
  • 200a, 200d
    Speicher
    1012a, 1012d
    Verarbeitungsknoten
    1020°, 1020b
    I/O-Gerät

Claims (10)

  1. Mikroprozessor (100) mit: einer oder mehreren Datenspekulationsverifizierungseinheiten, die ausgebildet sind, eine Datenspekulation, die an Operationen ausgeführt ist, zu verifizieren und einen entsprechenden Spekulationszeiger zu erzeugen, der anhängige Operationen kennzeichnet, an denen von dieser einen oder mehreren Datenspekulationsverifizierungseinheiten eine Datenspekulation verifiziert worden ist; und einer Rücknahmereihe (102), die angeschlossen ist, einen Spekulationszeiger von jeder der einen oder mehreren Datenspekulationsverifizierungseinheiten zu empfangen, und die ausgebildet ist, selektiv Operationen in Abhängigkeit von dem von jeder der einen oder der mehreren Datenspekulationsverifizierungseinheiten empfangenen Spekulationszeiger zurück zu ziehen.
  2. Mikroprozessor (100) nach Anspruch 1, wobei eine Lade/Speichereinheit (126) eine der einen oder der mehreren Datenspekulationsverifizierungseinheiten aufweist, wobei die Datenspekulationsverifizierungseinheit, die in der Lade/Speichereinheit (126) enthalten ist, zur Verifizierung von Abhängigkeitsvorhersagen ausgebildet ist.
  3. Mikroprozessor (100) nach Anspruch 1, wobei eine Funktionseinheit (126), die zum Ausführen von Nicht-Speicheroperationen ausgebildet ist, eine der einen oder der mehreren Datenspekulationsverifizierungseinheiten umfasst, wobei die in der Funktionseinheit (126) enthaltene Datenspekulationsverifizierungseinheit ausgebildet ist, eine Datenvorhersage zu verifizieren, die ein Ergebnis einer Nicht-Speicheroperation vorhersagt.
  4. Mikroprozessor (100) nach Anspruch 1, wobei eine der einen oder mehreren Datenspekulationsverifizierungseinheiten ausgebildet ist, eine Information zu empfangen, die jede von mehreren anhängigen Operationen kennzeichnet, für die eine Art der Datenspekulation, die von dieser einen der einen oder der mehreren Datenspekulationsverifizierungseinheiten verifiziert wurde, ausgeführt wurde; und wobei diese eine der einen oder der mehreren Datenspekulationsverifizierungseinheiten ausgebildet ist, anzugeben, welche anhängigen Operationen von dieser einen der einen oder der mehreren Datenspekulationsverifizierungseinheiten verifiziert worden ist, durch Weitersetzen eines entsprechenden Spekulationszeigers, um eine Operation zu kennzeichnen, die jünger ist als die jüngste anhängige Operation, an der eine Datenspekulation verifiziert ist, und die älter ist als eine weitere anhängige Operation, an der die Art der Datenspekulation ausgeführt worden ist.
  5. Computersystem (900) mit: einem Speicher (200); und einem Prozessor (100), der mit dem Speicher (200) verbunden ist; dadurch gekennzeichnet, dass der Prozessor (100) eine oder mehrere Datenspekulationsverifizierungseinheiten umfasst, die ausgebildet sind, eine Datenspekulation, die an Operationen ausgeführt wurden, zu verifizieren und einen entsprechenden Spekulationszeiger zu erzeugen, der anhängige Operationen, an denen einen Datenspekulation von dieser einen der einen oder mehreren Datenspekulationsverifizierungseinheiten ausgeführt worden ist, kennzeichnet; und der Prozessor (100) ferner eine Rücknahmereihe (102) aufweist, die angeschlossen ist, um einen Spekulationszeiger von jeder der einen oder der mehreren Datenspekulationsverifizierungseinheiten zu empfangen und ausgebildet ist, selektiv Operationen in Abhängigkeit von dem von jeder der einen oder der mehreren Datenspekulationsverifizierungseinheiten empfangenen Spekulationszeiger zurück zu ziehen.
  6. Computersystem (900) nach Anspruch 5, wobei eine Lade/Speichereinheit (126) eine der einen oder der mehreren Datenspekulationsverifizierungseinheiten aufweist, wobei die in der Lade/Speichereinheit (126) enthaltene Datenspekulationsverifizierungseinheit zur Verifizierung von Abhängigkeitsvorhersagen ausgebildet ist.
  7. Computersystem (900) nach Anspruch 5, wobei eine Funktionseinheit (126), die zum Ausführen von Nicht-Speicher-Operationen ausgebildet ist, eine der einen oder der mehreren Datenspekulationsverifizierungseinheiten aufweist, wobei die in der Funktionseinheit (126) enthaltene Datenspekulationsverifizierungseinheit ausgebildet ist, eine Datenvorhersage zu verifizieren, die ein Ergebnis einer Nicht-Speicher-Operation vorhersagt.
  8. Verfahren mit: Ausführen einer Datenspekulation für eine Operation; Verifizieren der Datenspekulation, die für die Operation ausgeführt wurde, mit einer Verifizierungseinheit; Erzeugen durch die Verifizierungseinheit eines Spekulationszeiger, der anzeigt, dass die Operation nicht datenspekulativ in Bezug auf die Verifizierungseinheit ist, in Reaktion auf das Verifizieren; und in Reaktion, das der Spekulationszeiger anzeigt, dass die Operation nicht datenspekulativ im Hinblick auf die Verifizierungseinheit ist, Zurückziehen der Operation.
  9. Verfahren nach Anspruch 8, das ferner umfasst: Verifizieren einer Datenspekulation, die an einer anderen Operation ausgeführt wurde, mittels einer anderen Verifizierungseinheit, und Erzeugen eines anderen Spekulationszeigers, der anzeigt, dass die andere Operation nicht datenspekulativ im Hinblick auf die andere Verifizierungseinheit ist; wobei das Zurückziehen der Operation von dem Spekulationszeiger und dem anderen Spekulationszeiger abhängt.
  10. Verfahren nach Anspruch 8, wobei das Erzeugen des Spekulationszeigers, der anzeigt, dass die Operation nicht datenspekulativ in Bezug auf die Verifizierungseinheit ist, davon abhängt, dass die Operation eine älteste Operation ist, an der eine Art einer Datenspekulation, die von der Verifizierungseinheit verifiziert wird, ausgeführt wurde.
DE112004000741T 2003-05-02 2004-01-09 Spekulationszeiger zur Identifizierung datenspekulativer Operationen in einem Mikroprozessor Expired - Fee Related DE112004000741B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/429,159 2003-05-02
US10/429,159 US7266673B2 (en) 2003-05-02 2003-05-02 Speculation pointers to identify data-speculative operations in microprocessor
PCT/US2004/000483 WO2004099978A2 (en) 2003-05-02 2004-01-09 Apparatus and method to identify data-speculative operations in microprocessor

Publications (2)

Publication Number Publication Date
DE112004000741T5 true DE112004000741T5 (de) 2006-05-11
DE112004000741B4 DE112004000741B4 (de) 2008-02-14

Family

ID=33310560

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112004000741T Expired - Fee Related DE112004000741B4 (de) 2003-05-02 2004-01-09 Spekulationszeiger zur Identifizierung datenspekulativer Operationen in einem Mikroprozessor

Country Status (8)

Country Link
US (1) US7266673B2 (de)
JP (1) JP4745960B2 (de)
KR (1) KR101057163B1 (de)
CN (1) CN100373330C (de)
DE (1) DE112004000741B4 (de)
GB (1) GB2418045B (de)
TW (1) TWI318371B (de)
WO (1) WO2004099978A2 (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7721054B2 (en) * 2005-01-18 2010-05-18 Texas Instruments Incorporated Speculative data loading using circular addressing or simulated circular addressing
US8595557B2 (en) * 2005-02-23 2013-11-26 International Business Machines Corporation Method and apparatus for verifying memory testing software
US7921280B2 (en) * 2008-06-27 2011-04-05 Intel Corporation Selectively powered retirement unit using a partitioned allocation array and a partitioned writeback array
US8880854B2 (en) * 2009-02-11 2014-11-04 Via Technologies, Inc. Out-of-order execution microprocessor that speculatively executes dependent memory access instructions by predicting no value change by older instructions that load a segment register
US8707015B2 (en) 2010-07-01 2014-04-22 Advanced Micro Devices, Inc. Reclaiming physical registers renamed as microcode architectural registers to be available for renaming as instruction set architectural registers based on an active status indicator
US8589892B2 (en) 2010-11-21 2013-11-19 International Business Machines Corporation Verification of speculative execution
US8745599B2 (en) * 2012-01-19 2014-06-03 National Tsing Hua University Probabilistic pointer analysis method using SSA form
US10776123B2 (en) 2018-12-03 2020-09-15 Advanced Micro Devices, Inc. Faster sparse flush recovery by creating groups that are marked based on an instruction type
CN112559048B (zh) * 2019-09-25 2023-12-12 阿里巴巴集团控股有限公司 一种指令处理装置、处理器及其处理方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5740393A (en) * 1993-10-15 1998-04-14 Intel Corporation Instruction pointer limits in processor that performs speculative out-of-order instruction execution
US5903741A (en) * 1995-01-25 1999-05-11 Advanced Micro Devices, Inc. Method of allocating a fixed reorder buffer storage line for execution results regardless of a number of concurrently dispatched instructions
US6665792B1 (en) * 1996-11-13 2003-12-16 Intel Corporation Interface to a memory system for a processor having a replay system
US6212626B1 (en) * 1996-11-13 2001-04-03 Intel Corporation Computer processor having a checker
US6735688B1 (en) * 1996-11-13 2004-05-11 Intel Corporation Processor having replay architecture with fast and slow replay paths
US5966544A (en) * 1996-11-13 1999-10-12 Intel Corporation Data speculatable processor having reply architecture
US5781752A (en) * 1996-12-26 1998-07-14 Wisconsin Alumni Research Foundation Table based data speculation circuit for parallel processing computer
US6381691B1 (en) * 1999-08-13 2002-04-30 International Business Machines Corporation Method and apparatus for reordering memory operations along multiple execution paths in a processor
GB2376328B (en) 2000-02-14 2004-04-21 Intel Corp Processor having replay architecture with fast and slow replay paths
US6877086B1 (en) * 2000-11-02 2005-04-05 Intel Corporation Method and apparatus for rescheduling multiple micro-operations in a processor using a replay queue and a counter
WO2004001527A2 (en) * 2001-06-26 2003-12-31 Sun Microsystems, Inc. Method and apparatus for facilitating speculative loads in a multiprocessor system
KR100567099B1 (ko) * 2001-06-26 2006-03-31 썬 마이크로시스템즈, 인코포레이티드 L2 디렉토리를 이용한 멀티프로세서 시스템의 가-저장촉진 방법 및 장치
US6952764B2 (en) * 2001-12-31 2005-10-04 Intel Corporation Stopping replay tornadoes
US7363470B2 (en) * 2003-05-02 2008-04-22 Advanced Micro Devices, Inc. System and method to prevent in-flight instances of operations from disrupting operation replay within a data-speculative microprocessor

Also Published As

Publication number Publication date
JP4745960B2 (ja) 2011-08-10
GB2418045A (en) 2006-03-15
TW200502849A (en) 2005-01-16
JP2006525595A (ja) 2006-11-09
US7266673B2 (en) 2007-09-04
GB2418045B (en) 2007-02-28
KR101057163B1 (ko) 2011-08-17
WO2004099978A2 (en) 2004-11-18
KR20060004974A (ko) 2006-01-16
CN1784654A (zh) 2006-06-07
DE112004000741B4 (de) 2008-02-14
US20040221140A1 (en) 2004-11-04
GB0521335D0 (en) 2005-11-30
TWI318371B (en) 2009-12-11
CN100373330C (zh) 2008-03-05
WO2004099978A3 (en) 2005-12-08

Similar Documents

Publication Publication Date Title
DE112004002848B4 (de) Mikroprozessor und Verfahren zum Verifizieren einer Speicherdatei in einem derartigen Mikroprozessor
DE60036016T2 (de) Schnell multithreading für eng gekoppelte multiprozessoren
DE60222402T2 (de) Verfahren und system zur spekulativen ungültigkeitserklärung von zeilen in einem cachespeicher
DE112005002173T5 (de) Prozessor mit Abhängigkeitsmechanismus, um vorherzusagen, ob ein Ladevorgang von einem älteren Schreibvorgang abhängig ist
DE60005860T2 (de) Ablaufsteuerung zum ausgeben und wiederausgeben von ketten abhängiger befehle
DE60025028T2 (de) Speicherpuffer, der daten, basierend auf index und freiwilliger weisebemusterung überträgt
DE112004002365T5 (de) Übergang vom Befehls-Cache-Speicher zum Ablaufverfolgungs-Cache-Speicher basierend auf Markengrenzen
DE112010003492B4 (de) Transaktionsspeichersystem mit wirksamerZwischenspeicherunterstützung
DE112004001854T5 (de) System und Verfahren zur Handhabung von Sonderinstruktionen in einem Prozessor auf Grundlage eines Cache-Speichers mit Ablaufverfolgung
DE112005003874B3 (de) Transaktionsgestützter Verarbeitungsbetrieb mit gemeinsam genutzten Daten in einer Multiprozessorumgebung
DE60223023T2 (de) Verwendung von typenbit zur verfolgung der speicherung von ecc- und vordekodierungsbit in einem cache der ebene 2
DE112017001825T5 (de) Prozessoren, verfahren, systeme und instruktionen zum atomischen speichern von daten, die breiter als eine nativ unterstützte datenbreite sind, in einem speicher
DE10353268B3 (de) Paralleler Multithread-Prozessor (PMT) mit geteilten Kontexten
DE602004010265T2 (de) Load-store-einheit mit wiederholungsmechanismus
DE102018005216A1 (de) Prozessoren, Verfahren und Systeme für einen konfigurierbaren, räumlichen Beschleuniger mit Transaktions- und Wiederholungsmerkmalen
DE112010004322T5 (de) Vorhersagen und Vermeiden von Operand-Speichervorgang-Vergleich-Gefahren in Mikroprozessoren mit abweichender Reihenfolge
DE112007000812T5 (de) Transaktionalspeicher in Out-of-Order-Prozessoren
DE202007019502U1 (de) Globaler Überlauf für virtualisierten Transaktionsspeicher
DE102014003799A1 (de) Systeme und Verfahren zur Übertragungseliminierung mit Bypass-Mehrfachinstanziierungstabelle
DE69633474T2 (de) Adressierungsverfahren zur nicht-sequentiellen Ausführung von Ladebefehlen hinsichtlich Speicherungsbefehlen
DE10296989T5 (de) Multi-Thread-Prozessor mit der Fähigkeit einer impliziten Multi-Thread-Ausführung eines Ein-Thread-Programms
DE112006003597T5 (de) Unbeschränkte Transaktionsspeichersysteme
DE112018006127B4 (de) Abschliessen von verbundenen einträgen einer globalen abschlusstabelle in einem out-of-order-prozessor
US8898395B1 (en) Memory management for cache consistency
DE19506734A1 (de) Computersystem und Verfahren zum Aufrechterhalten der Speicherkonsistenz in einer Busanforderungswarteschlange

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law

Ref document number: 112004000741

Country of ref document: DE

Date of ref document: 20060511

Kind code of ref document: P

8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: GLOBALFOUNDRIES INC., GRAND CAYMAN, KY

8328 Change in the person/name/address of the agent

Representative=s name: GRUENECKER, KINKELDEY, STOCKMAIR & SCHWANHAEUSSER,

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20130801