DE112004000741T5 - Spekulationszeiger zur Identifizierung datenspekulativer Operationen in einem Mikroprozessor - Google Patents
Spekulationszeiger zur Identifizierung datenspekulativer Operationen in einem Mikroprozessor Download PDFInfo
- 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
Links
- 238000012795 verification Methods 0.000 claims abstract description 76
- 230000004044 response Effects 0.000 claims abstract description 11
- 238000000034 method Methods 0.000 claims description 17
- 238000001356 surgical procedure Methods 0.000 claims description 4
- 238000012545 processing Methods 0.000 description 40
- 239000000872 buffer Substances 0.000 description 23
- 238000004891 communication Methods 0.000 description 9
- 230000001419 dependent effect Effects 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 6
- 230000008520 organization Effects 0.000 description 6
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000001427 coherent effect Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000013524 data verification Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000002028 premature Effects 0.000 description 2
- 230000000630 rising effect Effects 0.000 description 2
- 239000000523 sample Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000003750 conditioning effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3865—Recovery, 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.
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 Mikroprozessors100 . Der Mikroprozessor100 ist ausgebildet, in einem Systemspeicher200 gespeicherte Instruktionen auszuführen. Viele dieser Instruktionen operieren auf Daten, die in dem Systemspeicher200 abgelegt sind. Zu beachten ist, dass der Systemspeicher200 physikalisch über ein Computersystem verteilt sein kann und dass auf diesen von einem oder mehreren Mikroprozessoren100 zugegriffen werden kann. - Der Mikroprozessor
100 kann einen Instruktionszwischenspeicher bzw. Cache-Speicher106 und einen Datenzwischenspeicher bzw. Cache-Speicher128 aufweisen. Der Mikroprozessor100 kann eine Vorabholeinheit108 aufweisen, die mit dem Instruktionszwischenspeicher106 verbunden ist. Eine Ausgabeeinheit104 kann so gestaltet sein, dass diese Instruktionen von dem Instruktionszwischenspeicher106 empfängt und Operationen an einen oder mehrere Ablauforganisationseinheiten118 ausgibt. Eine oder mehrere Ablauforganisationseinheiten118 können so angeschlossen sein, um ausgegebene Operationen von der Ausgabeeinheit104 zu empfangen und Operationen an einen oder mehrere Ausführungskerne124 auszugeben. Der bzw. die Ausführungskerne124 können eine La de/Speichereinheit beinhalten, die ausgebildet ist, Zugriffe auf den Datenzwischenspeicher128 auszuführen. Ergebnisse, die von dem bzw. den Ausführungskern(en) erzeugt werden, können auf einen Ergebnisbus130 ausgegeben werden. Diese Ergebnisse können als Operandenwerte für nachfolgend ausgegebene Instruktionen verwendet werden und/oder in der Registerdatei116 gespeichert werden. Eine Rücknahmereihe102 kann mit der bzw. den Ablauforganisationseinheiten118 und der Ausgabeeinheit104 verbunden sein. Die Rücknahmereihe102 kann ausgebildet sein, um zu bestimmen, wenn jede ausgegebene Operation zurückgenommen bzw. vorzeitig beendet wird. In einer Ausführungsform ist der Mikroprozessor100 so gestaltet, dass dieser mit der x86-Architektur kompatibel ist. Zu beachten ist, dass der Mikroprozessor100 auch viele andere Komponenten aufweisen kann. Z. B. kann der Mikroprozessor100 eine Verzweigungsvorhersageeinheit (nicht gezeigt) enthalten. - Der Instruktionszwischenspeicher
106 kann temporär Instruktionen speichern, bevor diese von der Ausgabeeinheit104 empfangen werden. Es kann eine Instruktionscodierung zu dem Instruktionszwischenspeicher106 zugeleitet werden, indem eine Codierung von dem Systemspeicher200 über die Vorabholeinheit108 im Voraus abgerufen wird. Der Instruktionszwischenspeicher106 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 Datenzwischenspeicher106 und128 geben. Einige Ebenen können in dem Mikroprozessor100 integriert sein, wie dies gezeigt ist, während andere Ebenen des Zwischenspeichers außerhalb des Mikroprozessors liegen können. Die Vorabholungseinheit108 kann Codierungen aus dem Systemspeicher100 zur Speicherung in dem Instruktionszwischenspeicher im Voraus abrufen. In einer Ausführungsform ist die Vorabholungseinheit108 ausgebildet, um Codierung von dem Systemspeicher200 in den Instruktionszwischenspeicher106 in großen Mengen abzulegen. Die Vorabholeinheit108 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 Ausgabeeinheit104 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 Registerdatei116 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 Registerdatei116 aktuell zugewiesen sind. - Der Mikroprozessor
100 aus1 unterstützt eine Ausführung ohne Reihenfolge. Eine Rücknahmereihe102 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ücknahmereihe102 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ücknahmeschlage102 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ücknahmereihe102 kann den spekulativen Zustand eines physikalischen Registers in den Konfigurationszustand des Mikroprozessors100 ü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ücknahmereihe102 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ücknahmereihe102 unter Umständen keinen Datenwertspeicherplatz bereitstellt. Stattdessen kann bei Rücknahme von Operationen die Rücknahmereihe102 Register in der Registerdatei116 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 Registerdatei116 (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 Registerdatei116 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 Registerdatei116 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 Registerdatei116 (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 Registerdatei116 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 Registerdatei116 zuzugreifen oder um den Datenwert über eine Ergebnisweiterleitung auf dem Ergebnisbus130 zu empfangen. Wenn der Operand einer Speicherstelle entspricht, kann der Operandenwert auf den Ergebnisbus (zur Ergebnisweiterleitung und/oder Speicherung in einer Registerdatei116 ) über die Lade/Speichereinheit222 bereitgestellt werden. Operandendatenwerte können dem bzw. den „Ausführungskern(en)"124 zugeführt werden, wenn die Operation von einer der Ablauforganisationseinheiten118 ausgegeben wird. Zu beachten ist, dass in alternativen Ausfüh rungsformen Operandenwerte durch eine entsprechende Ablauforganisationseinheit118 bereitgestellt werden können, wenn eine Operation ausgegeben wird (anstatt dass diese einen entsprechenden Ausführungskern124 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 Ablauforganisationseinheiten118 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 Ablauforganisationseinheit118 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ührungskern124 bereit sind. In einigen Ausführungsformen bieten jeweils die Ablauforganisationseinheiten118 keinen Speicherplatz für Operandenwerte. Stattdessen kann jede Ablauforganisationseinheit ausgegeben Operationen und in der Registerdatei116 verfügbare Ergebnisse überwachen, um zu bestimmen, wann Operandenwerte zum Auslesen (von der Registerdatei116 oder dem Ergebnisbus130 ) durch die Funktionseinheiten126 verfügbar sind. In einigen Ausführungsformen ist jede Ablauforganisationseinheit118 mit einer zugeordneten Funktionseinheit126 verknüpft. In anderen Ausführungsformen kann eine einzelne Ablauforganisationseinheit118 Operationen an mehr als eine der Funktionseinheit126 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ührungsorganisationseinheit118 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 Funktionseinheiten126 beinhalten (beispielsweise die Funktionseinheiten126a bis126c , wie dies in1 gezeigt ist). Einige Funktionseinheiten, beispielsweise126a , können ausgebildet sein, arithmetische Ganzzahloperationen mit Addition und Subtraktion, sowie Verschiebungen, im Kreis schieben, logische Operationen und Verzweigungsoperationen durchzuführen. Andere Funktionseinheiten, beispielsweise126b , können ausgebildet sein, Fließkommaoperationen durchzuführen. Eine oder mehrere der Funktionseinheiten, beispielsweise126a , können ausgebildet sein, eine Adressenerzeugung für Lade- bzw. Auslese- und Speicheroperationen auszuführen, die von einer Funktionseinheit, beispielsweise126c , auszuführen sind, die Lese- und Speicheroperationen durchführt, um auf in dem Zwischenspeicher128 und/oder dem Systemspeicher gespeicherte Daten zuzugreifen. In einer Ausführungsform kann eine derartige Funktionseinheit126c 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 Vorabholeinheit106 uminstruieren. Die uminstruierte Vorabholeinheit106 kann dann beginnen, den korrekten Satz an Instruktionen von dem Instruktionszwischenspeicher106 oder dem Systemspeicher200 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 Registerdatei116 gespeichert wurden. - Ergebnisse, die von den Funktionseinheiten
126 innerhalb des bzw. der Ausführungskern(e)124 erzeugt wurden, können auf dem Ergebnisbus130 an die Registerdatei116 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/Speichereinheit126c zugeführt werden. - Der Datenzwischenspeicher
128 ist ein Zwischenspeicher der vorgesehen ist, um temporär Daten zu speichern, die zwischen Ausführungskernen124 und dem Systemspeicher200 ausgetauscht werden. Ebenso wie der Instruktionszwischenspeicher106 , der zuvor beschrieben ist, kann der Datenzwischenspeicher128 in einer Vielzahl spezieller Speicherkonfigurationen eingerichtet sein, wozu eine teilassoziative Konfiguration gehört. Des weiteren können der Datenzwischenspeicher106 und der Instruktionszwischenspeicher128 in einigen Ausführungsformen in einem vereinheitlichten Zwischenspeicher eingerichtet sein. In einigen Ausführungsformen kann ein Mikroprozessor100 eine integrierte Speichersteuerung160 enthalten, die es dem Mikroprozessor ermöglicht, direkt mit dem Systemspeicher200 zu kommunizieren. In anderen Ausführungsformen kann die Speichersteuerung160 in einer Busbrücke enthalten sein, die den Mikroprozessor100 indirekt mit dem Systemspeicher200 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 Ausgabeeinheit104 , die Speichersteuerung160 und/oder eine oder mehrere funktionale Einheiten126 jeweils eine Datenspekulation für eine spezielle Operation ausführen. Die Ausgabeeinheit104 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 Datenzwischenspeicher128 durch eine frühere Speicheroperation gespeicherte Daten zugreift. Die Ausgabeeinheit104 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 Ausgabeeinheit104 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/Speichereinheit126c 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 Speichersteuerung160 kann spekulativ eine Kopie einer Speicherzeile aus dem Systemspeicher200 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 Systemspeicher200 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 Ausgabeeinheit104 erzeugt werden, bevor die Operation mittels einer Funktionseinheit126 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/Speichereinheit126c ). - 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/Speichereinheit126c 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 in1 gezeigt ist, kann jede Einrichtung zum Verifizieren einer Datenspekulation (in dieser Ausführungsform die Speichersteuerung160 und die Funktionseinheiten126 ) ausgebildet sein, die Rücknahmereihe102 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ücknahmereihe102 kann die Spekulationszeiger verwenden, um anzugeben, welche Operationen zu beenden sind. Die diversen Komponenten innerhalb des Mikroprozessors100 , 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 Speichersteuerung160 bezeichnen, die Speichervorhersagen verifiziert. In einer Ausführungsform kann die Speichersteuerung160 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 Speichersteuerung160 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ücknahmereihe102 an, welche Operationen aus der Sicht der Speichersteuerung160 nicht mehr spekulativ sind. - Die Funktionseinheit
126a und126b können eine Ganzzahloperation bzw. eine Fließkommaoperation gemäß einer Ausführungsform ausführen. Die Funktionseinheiten126a und126b können jeweils eine Datenvorhersage verifizieren. Die Spekulationszeiger A und B geben entsprechend an, welche Operationen durch die Funktionseinheiten126a und126b in der in1 dargestellten Ausführungsform verifiziert sind. Ein Spekulationszeiger C wird von einer Funktionseinheit126c erzeugt, die Lese-, bzw. Lade- und Speicheroperationen ausführt. Der Spekulationszeiger C kann angeben, welche Operationen von der Lade/Speichereinheit126c verifiziert wurden. Die Funktionseinheit126c 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 Speichersteuerung160 jede Operation verfolgen, an der eine Speichervorhersage ausgeführt wurde. Wenn die Speichersteuerung160 jede Operation verifiziert, kann die Speichersteuerung160 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 Speichersteuerung160 sind. In einer Ausführungsform kann die Speichersteuerung160 jene Operationen kennzeichnen, indem der Spekulationszeiger D weitergestellt wird, um auf die nächste jüngste spekulative Operation zu zeigen, die von der Speichersteuerung160 verfolgt wird. In ähnlicher Weise können die Mechanismen, die andere Arten an Datenspekulation ausführen (beispielsweise die Ausgabeeinheit104 und/oder die Funktionseinheit126c , 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/Speichereinheit126c und/oder eine oder mehrere der anderen Funktionseinheiten126 ), 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ücknahmereihe102 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 Mikroprozessors100 ausgeführt ist) von der Ausgabeeinheit104 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ücknahmereihe102 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 Funktionseinheit126 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ücknahmereihe102 durch die Ablauforganisationseinheit118 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 Speichersteuerung160 und die Funktionseinheiten126 eingerichtet werden. Der Schritt201 kann in einigen Ausführungsformen durch den gleichen Bereich des Mikroprozessors ausgeführt werden, der die Datenspekulation verifizieren wird. Wenn diese Datenspekulation bei203 verifiziert ist, kann der Spekulationszeiger weitergesetzt werden, wie dies in205 gezeigt ist, um die Operation, an der in201 eine Datenspekulation ausgeführt wurde, als nicht-spekulativ zu kennzeichnen. In einer Ausführungsform kann das Weitersetzen des Spekulationszeigers bei205 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 bei205 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/Speichereinheit126 verfolgen, für welche Operationen die Lade/Speichereinheit eine Datenspekulation ausgeführt hat. Jedes mal, wenn die Lade/Speichereinheit126 eine dieser datenspekulativen Operationen verifiziert, kann die Lade/Speichereinheit126 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. Bei211 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 als213 gezeigt ist. Wenn jedoch keiner der Spekulationszeiger diese Operation als möglicherweise datenspekulativ kennzeichnet, kann die Operation abgeschlossen werden, wie dies bei213 bis215 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 Computersystems900 , das einen Prozessor100 aufweist, der mit einer Vielzahl von Systemkomponenten über eine Busbrücke902 verbunden ist. Der Prozessor100 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 Hauptspeicher200 mit der Busbrücke902 über einen Speicherbus906 verbunden, und eine Graphiksteuerung908 ist mit der Busbrücke902 über einen AGP-Bus910 verbunden. Diverse PCI-Einrichtungen912a bis912b sind mit der Busbrücke902 über einen PCI-Bus914 verbunden. Es kann auch eine Sekundärbusbrücke916 vorgesehen sein, um eine elektrische Schnittstelle zu einer oder mehreren EISA- oder ISA-Einrichtungen918 über einen EISA/ISA-Bus920 aufzunehmen. In diesem Beispiel ist der Prozessor100 mit der Busbrü cke902 über einen CPU-Bus924 und mit einem optionalen L2-Zwischenspeicher bzw. Cache-Speicher928 verbunden. In einigen Ausführungsformen kann der Prozessor100 einen integrierten L1-Zwischenspeicher (nicht gezeigt) enthalten. - Die Busbrücke
902 stellt eine Schnittstelle zwischen dem Prozessor100 , dem Hauptspeicher200 , der Graphiksteuerung908 und den an den PCI-Bus914 angeschlossenen Einrichtungen bereit. Wenn eine Operation von einer der mit der Busbrücke902 verbundenen Einrichtungen empfangen wird, erkennt die Busbrücke902 das Ziel der Operation (beispielsweise eine spezielle Einrichtung oder im Falle des PCI-Busses914 , dass das Ziel auf dem PCI-Bus914 liegt). Die Busbrücke902 leitete die Operation an die Zieleinrichtung weiter. Die Busbrücke902 ü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ücke916 zusätzliche Funktionen enthalten. Eine Eingabe/Ausgabe-Steuerung (nicht gezeigt), die extern zu oder integriert in der Sekundärbusbrücke916 sein kann, kann ebenso in dem Computersystem900 enthalten sein, um eine zusätzliche funktionale Unterstützung für eine Tastatur und eine Maus922 oder diverse serielle und parallele Portanschlüsse bereitzustellen. Eine externe Zwischenspeichereinheit (nicht gezeigt) kann ebenso mit dem CPU-Bus924 zwischen dem Prozessor100 und der Busbrücke902 in anderen Ausführungsformen angeschlossen sein. Alternativ kann der externe Zwischenspeicher mit der Busbrücke902 verbunden sein und eine Zwischenspeichersteuerlogik für den externen Zwischenspeicher kann in der Busbrücke902 integriert sein. Der L2-Zwischenspeicher928 ist in einer Rückseiten-Konfiguration in Bezug auf den Prozessor100 gezeigt. Zu beachten ist, dass der L2-Zwischenspeicher928 getrennt von dem Prozessor100 vorgesehen sein kann, oder integriert in ein Gehäuse (beispielsweise Schlitz 1 oder Schlitz A) in dem Prozessor100 vorgesehen sein kann oder sogar auf einem Halbleitersubstrat in dem Prozessor100 in integrierter Weise angeordnet sein kann. - Der Hauptspeicher
200 ist ein Speicher, in weichem Anwendungsprogramme gespeichert sind, und aus welchem der Prozessor100 hauptsächlich heraus arbeitet. Ein geeigneter Hauptspeicher200 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 bis912B 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-Einrichtung918 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 Anzeige926 zu steuern. Die Graphiksteuerung908 kann als ein typischer Graphikbeschleuniger vorgesehen sein, der im Allgemeinen zur Umwandlung dreidimensionaler Datenstrukturen bekannt ist, die in effizienter Weise in und aus dem Hauptspeicher200 verschoben werden können. Die Graphiksteuerung908 kann daher eine übergeordnete Einheit des AGP-Busses910 sein, dahingehend, dass diese Zugriff zu einer Zielschnittstelle innerhalb der Busbrücke902 anfordern und erhalten kann, um damit auf den Hauptspeicher200 zuzugreifen. Ein spezieller Graphikbus beinhaltet das rasche Abrufen von Daten aus dem Hauptspeicher200 . Für gewisse Operationen kann die Graphiksteuerung908 ferner ausgebildet sein, PCI-Protokolltransaktionen an dem AGP-Bus910 zu erzeugen. Die AGP-Schittstelle der Busbrücke902 kann damit eine Funktion enthalten, um sowohl AGP-Protokolltransaktionen sowie auch PCI-Protokollziel- und Initiator-Transaktionen zu unterstützen. Die Anzeige926 ist eine beliebige elektronische Anzeige, auf der ein Bild oder Text präsentiert werden kann. Eine geeignete Anzeige926 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 Prozessor100a , der als eine optionale Komponente des Computersystems900 gezeigt ist) sein kann. Der Prozessor100a kann ähnlich zu dem Prozessor100 ausgebildet sein. Genauer gesagt, der Prozessor100a kann eine identische Kopie des Prozessors100 sein. Der Prozessor100a kann mit der Busbrücke902 über einen unabhängigen Bus (wie in3 gezeigt ist) verbunden sein, oder kann mit dem Prozessor100 den CPU-Bus924 gemeinsam benutzen. Ferner kann der Prozessor100a mit einem optionalen L2-Zwischenspeicher928a ähnlich zu dem L2-Zwischenspeicher928 verbunden sein. - In
4 ist eine weitere Ausführungsform eines Computersystems900 gezeigt, die einen Prozessor100 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 aus4 umfasst das Computersystem900 diverse Verarbeitungsknoten1012A ,1012B ,1012C und1012D . Jeder Verarbeitungsknoten ist mit einem entsprechenden Speicher200a bis200d über eine Speichersteuerung1016A bis1016D verbunden, die jeweils in dem entsprechenden Verarbeitungsknoten1012A bis1012D integriert sind. Des weiteren enthalten die Verarbeitungsknoten1012A bis1012D eine Schnittstellenlogik, die zur Kommunikation zwischen den Verarbeitungsknoten1012A bis1012D verwendet wird. Beispielsweise umfasst der Verarbeitungsknoten1012A eine Schnittstellenlogik1018A zur Kommunikation mit dem Verarbeitungsknoten1012B , eine Schnittstellenlogik1018B zur Kommunikation mit dem Verarbeitungsknoten1012C und eine dritte Schnittstellenlogik1018C zur Kommunikation mit einem noch weiteren Verarbeitungsknoten (nicht gezeigt). In ähnlicher Weise umfasst der Verarbeitungsknoten1012B eine Schnittstellenlogik1018D ,1018E und1018F ; der Verarbeitungsknoten1012C umfasst eine Schnittstellenlogik1018G ,1018H und10181 ; und der Verarbeitungsknoten1012D umfasst eine Schnittstellenlogik1018J ,1018K und1018L . Der Verarbeitungsknoten1012D ist angeschlossen, um mit mehreren Eingabe/Ausgabe-Geräten (beispielsweise Geräte1020A bis1020B in einer seriellen Konfiguration) über die Schnittstellenlogik1018L zu kommunizieren. Andere Verarbeitungsknoten können mit andern I/O-Geräten in ähnlicher Weise in Verbindung stehen. - Die Verarbeitungsknoten
1012A bis1012D 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 Leitungen1024A werden verwendet, um Pakete von dem Verarbeitungsknoten1012A zu dem Verarbeitungsknoten1012B zu übertragen, und Leitungen1024B werden verwendet, um Pakete von dem Verarbeitungsknoten1013B zu dem Verarbeitungsknoten1012A zu übermitteln). - Andere Leitungssätze
1024C bis1024H werden verwendet, um Pakete zwischen anderen Verarbeitungsknoten zu übertragen, wie in4 gezeigt ist. Im Allgemeinen kann jeder Leitungssatz1024 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 Verarbeitungsknoten1012A zu den Verarbeitungsknoten1012D übertragen wird, über den Verarbeitungsknoten1012B oder den Verarbeitungsknoten1012C laufen, wie in4 gezeigt ist. Es kann ein beliebiger geeigneter Signalführungsalgorithmus verwendet werden. In anderen Ausführungsformen des Computersystems900 können mehr oder weniger Verarbeitungsknoten als in der in4 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 bis1012D 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 Verarbeitungsknoten1012A bis1012D kann eine oder mehrere Kopien des Prozessors100 enthalten. Eine externe Schnittstelleneinheit kann die Schnittstellenlogik1018 in dem Knoten sowie die Speichersteuerung1016 enthalten. - Die Speicher
200A bis200D können beliebige geeignete Speichereinrichtungen aufweisen. Beispielsweise kann ein Speicher200A bis200D einen oder mehrere RAMBUS DRAMS (RDRAMS), synchrone DRAMS (SDRAMS), statische RAMS etc. umfassen. Der Adressenraum des Computersystems900 ist auf die Speicher200A bis200D aufgeteilt. Jeder Verarbeitungsknoten1012A bis1012D kann eine Speicherzuordnung enthalten, die verwendet wird, um zu bestimmen, welche Adresse welchen Speichern200A bis200D zugeordnet ist, und damit auch zu bestimmen, zu welchem Verarbeitungsknoten1012A bis1012D 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 Computersystems900 die Speichersteuerung1016A bis1016D , die mit dem Speicher verbunden ist, der Bits entsprechend der Adresse speichert. Anders ausgedrückt, die Speichersteuerung1016A bis1016D ist dafür verantwortlich, dass sichergestellt wird, dass jeder Speicherzugriff auf den entsprechenden Speicher200A bis200D in einer mit dem Zwischenspeicher kohärenten Weise abläuft. Die Speichersteuerungen1016A bis1016D können eine Steuerschaltung zur Verbindung mit den Speicher200A bis200D aufweisen. Des weiteren können die Speichersteuerungen1016A bis1016D Anforderungsschlangen zur Aufreihung von Speicheranforderungen enthalten. - Die Schnittstellenlogik
1018A bis1018L 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 Computersystem900 kann einen beliebigen geeigneten Ablaufsteuerungsmechanismus zum Senden von Paketen aufweisen. Beispielsweise speichert in einer Ausführungsform jede Schnittstellenlogik1018 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 bis1020B können beliebige geeignete I/O-Geräte sein. Z. B. können die I/O-Geräte1020A bis1020B 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äte1020A bis1020B 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)
- 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. - 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. - 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. - 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. - 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. - 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. - 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. - 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.
- 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.
- 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.
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)
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)
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 |
-
2003
- 2003-05-02 US US10/429,159 patent/US7266673B2/en active Active
-
2004
- 2004-01-09 JP JP2006508587A patent/JP4745960B2/ja not_active Expired - Fee Related
- 2004-01-09 CN CNB2004800119458A patent/CN100373330C/zh not_active Expired - Fee Related
- 2004-01-09 WO PCT/US2004/000483 patent/WO2004099978A2/en active Application Filing
- 2004-01-09 KR KR1020057020786A patent/KR101057163B1/ko not_active IP Right Cessation
- 2004-01-09 DE DE112004000741T patent/DE112004000741B4/de not_active Expired - Fee Related
- 2004-01-09 GB GB0521335A patent/GB2418045B/en not_active Expired - Fee Related
- 2004-03-05 TW TW093105848A patent/TWI318371B/zh active
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 |