DE112004000741T5 - Speculation pointer for identifying data-speculative operations in a microprocessor - Google Patents

Speculation pointer for identifying data-speculative operations in a microprocessor 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
German (de)
Other versions
DE112004000741B4 (en
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/en
Application granted granted Critical
Publication of DE112004000741B4 publication Critical patent/DE112004000741B4/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/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 or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/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 or 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Investigating Or Analysing Biological Materials (AREA)
  • Multi Processors (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

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.
Microprocessor (100) with:
one or more data speculation verification units configured to verify a data speculation performed on operations and to generate a corresponding speculation pointer that identifies pending operations on which data speculation of that one or more data speculation verification units has been verified; and
a redemption queue (102) connected to receive a speculation pointer from each of the one or more data speculation verification units and configured to selectively retract operations in response to the speculation pointer received from each of the one or more data speculation verification units.

Figure 00000001
Figure 00000001

Description

TECHNISCHES GEBIETTECHNICAL TERRITORY

Diese Erfindung betrifft das Gebiet der Mikroprozessoren und betrifft insbesondere das Ausführen einer Datenspekulation in einem Mikroprozessor.These The invention relates to the field of microprocessors and concerns in particular, the execution of a Data speculation in a microprocessor.

STAND DER TECHNIKSTATE OF TECHNOLOGY

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.superscalar Microprocessors achieve high performance by providing multiple instructions executed simultaneously be, and by the shortest possible Clock cycle is used, which is bearable with their construction. However, you can Data and Control Flow Dependencies between the instructions to be restrictive, how many instructions can be issued at a given time. Therefore, some support Microprocessors a speculative execution to an additional Increase in performance to reach.

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.A One type of speculation is control flow speculation. The Control flow speculation predicts the direction in which the Program sequence will progress. For example, a branch prediction be used to predict whether a branch is taken. There are many types of branch predictions available, the of procedures that simply make the same prediction every time ranging up to procedures that require sophisticated historical developments the previous branches in the program a prediction based on the previous development hold true. The branch prediction can be achieved by hardware optimizations, Compiler optimizations or both are possible. Based on the prediction made by the branch prediction mechanism for disposal can be provided instructions be retrieved speculatively and executed. If finally the branch instruction may be encountered, the branch prediction be verified. If the prediction was incorrect, will be Instructions based on incorrect prediction were carried out speculatively, discarded.

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.A Another type of speculation is data speculation, the data values predicts. Suggested types of data speculation include speculative ones Generating addresses for Memory operations and speculative generation of data values for Use in arithmetic operations. Similar to the control speculation are the underlying for speculative generating a value Conditions finally rated so that the speculation can be verified or undone can be made.

ÜBERBLICK ÜBER DIE ERFINDUNGOVERVIEW OF THE INVENTION

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 various embodiments Procedures and systems are disclosed to make operations dependent withdraw from speculation hands, which specify which operations are data speculative with regard to the various verification units within a microprocessor are. In one embodiment a microprocessor may request a redemption queue or row and one or more data speculation verification units exhibit. The data speculation verification units are respectively designed to perform a data speculation that is performed on operations to verify. Each data speculation verification unit generates a corresponding speculation pointer identifying pending operations; where data verification by the data speculation verification unit is verified. The redemption series is designed to be selective operations dependent withdrawn from the speculation pointer that of each of the data speculation verification units Will be received.

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.In an embodiment can one of the data speculation verification units in one Be included / storage unit. Such a data speculation verification unit can be formed, the types of data prediction, such as dependency prediction, To verify address prediction and / or data prediction. For example may be a data speculation verification unit included in a load / store unit be designed to verify a dependency prediction, which predicts a younger elite or load operation not from an older memory operation a non-calculated address depends. Similarly, an in a load / store unit containing data speculation verification unit be designed to have a dependency prediction is verified, which predicts that a result of a younger loading operation the source of an older one Memory operation is.

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.A another of the data speculation verification units may be in one Functional unit may be included, which is adapted to non-memory operations perform. Such a data speculation verification unit may be formed be to verify a data prediction, which is the result of a Non-memory operation predicts. Yet another data speculation verification unit may be included in a memory controller and may be formed be to verify memory forecasts.

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 one embodiment, one of the data speculation verification units is configured to receive information indicating each open operation for which one type of data speculation is performed by this data speculation verification unit. This data speculation verification unit may be configured to recognize which open operations are verified by this data speculation verification unit by forwarding its corresponding speculation pointer to identify an operation that is younger than the most recent open operation at which this type of data speculation is verified, and which is older than another open operation on which this type of data speculation was performed. If no operation is currently identified as data speculative for these data speculation verification units, that data speculation verification unit may set a value of its corresponding speculation pointer indicating that no currently open operations are data speculative with respect to that data speculation verification unit.

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.In Embodiments, in which the redemption row receive some speculation pointers, the redemption series can be designed that it is determined whether an operation is withdrawn or terminated can be determined by determining whether the operation is older than a recent operation which is characterized as non-speculative by all speculation pointers is.

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.One A microprocessor containing one or more data speculation verification units contains generate the speculation pointers, and has a redemption series that Operations in dependence take back the speculation pointer or can terminate prematurely, may be included in a computer system be.

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.In some embodiments includes a procedure: Execute a data speculation for a surgery; Verify the data speculation required for the operation carried out is, by means of a verification unit, wherein the verification unit generates a speculative pointer that in response to the verification indicates that the operation is not data speculative in terms of the Verification unit is; and in response to the speculation pointer indicating that the operation is not data-speculative with respect to the verification unit is, take back or premature termination of the 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.One Such method may further include one or more other verification units which verify data speculation, others Operations performed and generate the other speculation pointers that indicate that the other operations are not data-speculative in relation to this Verification units are. Premature termination or withdrawal the operation may depend on all data collection pointers. each Verification unit can use different types of data speculation to verify.

KURZE BESCHREIBUNG DER ZEICHNUNGENSHORT DESCRIPTION THE DRAWINGS

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:One thorough understanding The present invention can be achieved if the following Detailed description in conjunction with the following drawings is studied, in which:

1 einen Mikroprozessor gemäß einer Ausführungsform zeigt. 1 shows a microprocessor according to an embodiment.

2a eine Flussdiagramm ist, das zeigt, wie Spekulationszeiger weitergestellt werden können gemäß einer Ausführungsform. 2a FIG. 10 is a flowchart showing how speculation pointers can be advanced in accordance with one embodiment.

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. 2 B FIG. 10 is a flowchart illustrating a method for conditioning a retirement of an operation from current speculation pointers according to an embodiment.

3 ein beispielhaftes Computersystem gemäß einer Ausführungsform zeigt. 3 an exemplary computer system according to one embodiment.

4 ein weiteres beispielhaftes Computersystem gemäß einer weiteren Ausführungsform zeigt. 4 another exemplary computer system according to another embodiment shows.

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".Even though the invention are subject to various modifications and alternative forms can, are special embodiments illustrated by way of example in the drawings and are detailed herein described. It should be noted, however, that the drawings and the detailed description is not intended to embody the invention to restrict to the particular form disclosed, but the invention Rather, it should be all modifications, equivalents and alternatives which are within the spirit and scope of the present invention as defined by the appended claims is, lie. It should be noted that the headings only the To serve structuring and not to serve the description or the claims limit or to interpret. It should also be noted that the word "may" is used throughout this application in an enabling Senses is used (ie provides the opportunity to, is able to to) not in a mandatory sense (ie must). The term "includes" and derivatives of which mean "but not inclusive limited on it. "The term" connected "means" direct or indirectly connected ", and the term "connected respectively, "coupled" means "direct or indirectly coupled or connected ".

ART BZW. ARTEN ZUM AUSFÜHREN DER ERFINDUNGART BZW. TYPES OF EXECUTING THE INVENTION

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. 1 is a block diagram of an execution form of a microprocessor 100 , The microprocessor 100 is trained in a system memory 200 to execute stored instructions. Many of these instructions operate on data stored in system memory 200 are stored. It should be noted that the system memory 200 can be physically distributed over a computer system and that on this one or more microprocessors 100 can be accessed.

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.The microprocessor 100 may be an instruction cache 106 and a data cache 128 exhibit. The microprocessor 100 can be a prefetch unit 108 with the instruction cache 106 connected is. An output unit 104 may be configured to receive these instructions from the instruction cache 106 receives and operations to one or more scheduler units 118 outputs. One or more expiration organization units 118 can be connected to output operations from the output unit 104 to receive and perform operations on one or more execution cores 124 issue. The execution core (s) 124 may include a load / store unit configured to access the data cache 128 perform. Results generated by the execution core (s) may be on a result bus 130 be issued. These results can be used as operand values for subsequently issued instructions and / or in the register file 116 get saved. A redemption series 102 can with the or the organizational units 118 and the output unit 104 be connected. The redemption series 102 may be configured to determine when each issued operation is withdrawn prematurely. In one embodiment, the microprocessor is 100 designed to be compatible with the x86 architecture. It should be noted that the microprocessor 100 can also have many other components. For example, the microprocessor 100 a branch prediction unit (not shown).

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.The instruction cache 106 can temporarily store instructions before they are output from the output device 104 be received. It may be an instruction encoding to the instruction cache 106 be supplied by encoding from the system memory 200 via the prefetch unit 108 is called in advance. The instruction cache 106 can be set up in various configurations (eg, partially associative, fully associative or directly mapped). In some embodiments, there may be multiple levels of instruction and / or data buffers 106 and 128 give. Some levels may be in the microprocessor 100 as shown, while other levels of the cache may be external to the microprocessor. The pre-collection unit 108 can encode from the system memory 100 for storing in the instruction cache in advance. In one embodiment, the prefetch unit is 108 designed to be encoded from the system memory 200 into the instruction cache 106 store in large quantities. The prefetch unit 108 can apply a variety of special coding prefetch techniques and algorithms.

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.The output unit 104 may output signals that include bit-coded operations performed by the execution core (s) 124 and operand address information, immediate data, and / or replacement data. In some embodiments, the output unit may 104 a decoding circuit (not shown) for decoding certain instructions of operations remote in the execution (s) 124 are executable. Simple instructions can be a simple operation. In some embodiments, more complex instructions may correspond to multiple operations. If an operation involves updating a register, a register location may be within the register file 116 reserved (e.g., decoding this operation) to store speculative register states (in an alternate embodiment, a reordering buffer may be used to store one or more speculative register states for each register). A register allocation record can translate logical register names of source and destination operands into physical register names to facilitate register renaming. A register mapping can monitor which registers within the register file 116 currently assigned.

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.The microprocessor 100 out 1 supports execution without order. A redemption series 102 can keep track of the original program sequence register read and write operations, enable speculative instruction execution recovery and branch misprediction, and allow for well-defined exceptions. The redemption series 102 may be configured in a first-in-first-out configuration in which the operations move to the "bottom" of the buffer when recognized as valid, thereby making room for new entries at the "front" of the queue. The redemption strike 102 may terminate or withdraw an operation in response to completion of the operation and data or control speculation involved in operations up to and including this operation the program order are verified. The redemption series 102 may change the speculative state of a physical register to the configuration state of the microprocessor 100 when the operation that generated the value in this physical register is retired. In some embodiments, the redemption queue 102 be set up as part of a reorder buffer. Such a reordering buffer may also provide data storage for speculative register states to support register renaming. It should be noted that in other embodiments, the redemption queue 102 may not provide data value space. Instead, when redeeming operations, the redemption queue 102 Register in the register file 116 which no longer need to store speculative register states, and can send signals to the register allocation record indicating which registers are free. By storing speculative register states in the register file 116 (or, in alternative embodiments, in a reorder buffer) until the operations which generated those states are validated, the results of speculatively executed operations along a mispredicted path in the register file 116 be declared invalid if a branch prediction is incorrect.

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.If a required operand of a particular operation is a register location, register address information may be passed to a register map (or to a reorder buffer). For example, in the x86 architecture, there are eight 32-bit logic registers (e.g., EAX, EBX, ECX, EDX, EBP, ESI, EDI, and ESP). The physical register file 116 (or a reorder buffer) contains space for results that change the contents of these logical registers, which allows them to run in an unordered order. A physical register in the register file 116 can be assigned to store the result of any operation that is destined to modify the contents of one of the logical registers. Therefore, at various points during the execution of a particular program, the register file may 116 (or, in alternative embodiments, a reorder buffer) comprise one or more registers containing speculatively executed contents of a given logical register.

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).Register allocation may assign a physical register to a special logical register specified as a destination operand for an operation. The output unit 104 can determine that the register file 116 has one or more previously assigned physical registers associated with a logical register specified as a source operand in a given operation. The register allocation may provide a tag for the physical register that was last allocated to this logical register. This flag can be used to reference the data value of the operand in the register file 116 access or the data value via a result forwarding on the result bus 130 to recieve. If the operand corresponds to a memory location, the operand value can be written to the result bus (for result routing and / or storage in a register file 116 ) on the load / storage unit 222 to be provided. Operand data values may be assigned to the "execution core (s)" 124 supplied when the operation of one of the scheduler units 118 is issued. It should be noted that in alternative embodiments, operand values are represented by a corresponding scheduler entity 118 can be provided when an operation is issued (rather than having a corresponding execution core 124 is supplied when the operation is issued).

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.The bit-coded operations and the immediate data that are present at the outputs on the output unit 104 can be provided to one or more scheduler entities 118 be directed. It should be noted that, as used herein, a scheduler unit is a device that recognizes when operations are ready to execute, and outputs ready operations to one or more functional units. For example, a reservation station is a scheduler. Operations in a scheduler or a set of scheduler units may also be referred to as operations in an instruction or operation window or an organization window. Each process organization unit 118 is able to hold operation information (e.g., bit encoded execution bits, and operand values, operand marks, and / or immediate data) for some pending operations that are to be issued to an execution core 124 to be ready. In some embodiments, the scheduler units each provide 118 no memory space for operand values. Instead, each flow organization unit can output operations and in the register file 116 Monitor available results to determine when to read operand values (from register file 116 or the result bus 130 ) through the functional units 126 Are available. In some embodiments, each scheduler is 118 with an assigned functional unit 126 connected. In other embodiments, a single scheduler unit 118 Operations on more than one of the functional unit 126 output.

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.Schedulers 118 can be provided to temporarily store operational information provided by the execution core (s). 124 are to be executed to save. As previously explained, each execution organization unit 118 Save operation information for pending operations. Further, each scheduler unit may store operation information for operations already executed but to be reissued. Operations are sent to the execution core (s) 124 to execute in response to values of one or more required operands, e.g. Z. the execution are available. Therefore, the order in which the operations are performed may not be the same order of the original program instruction sequence. Operations that involve data speculation may exist in the expiration organizational unit (s). 118 at least until these operations become non-speculative so that these operations can be reissued if data speculation is incorrect.

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.In one embodiment, in each execution core 124 several functional units 126 include (for example, the functional units 126a to 126c like this in 1 is shown). Some functional units, for example 126a , can be configured to perform arithmetic integer operations with addition and subtraction, as well as shifts, circling, logical operations, and branch operations. Other functional units, for example 126b , may be configured to perform floating-point operations. One or more of the functional units, for example 126a , may be configured to perform address generation for load and store operations performed by a functional unit, for example 126c to perform reads and writes to in the cache 128 and / or data stored in the system memory. In one embodiment, such a functional unit 126c be provided with a read / store buffer with various locations for data and address information for pending read and / or memory operations.

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.One or more of the functional units 126 may further provide information regarding executing conditional branch instructions for a branch prediction unit such that if a branch is mispredicted, the branch prediction unit may discard instructions subsequent to the mispredicted branch that was injected into the instruction processing pipeline and may be the prefetcher 106 uminstruieren. The uminstruierte prefetching unit 106 can then begin the correct set of instructions from the instruction cache 106 or system memory 200 retrieve. In such situations, the results of the instructions in the original program sequence that occurred after the mispredicted branch instruction may be discarded, including those that are speculatively executed and, in the meantime, in the register file 116 were saved.

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.Results obtained by the functional units 126 within the execution core (s) 124 can be generated on the result bus 130 to the register file 116 output when a register value is updated. If the contents of a memory location are changed, those in the execution core (s) 124 generated results of the load / store unit 126c be supplied.

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.The data cache 128 is a buffer provided to temporarily store data between execution cores 124 and the system memory 200 be replaced. Like the instruction cache 106 previously described may be the data buffer 128 in a variety of special memory configurations, including a part-associative configuration. Furthermore, the data buffer 106 and the instruction cache 128 in some embodiments, be arranged in a unified cache. In some embodiments, a microprocessor 100 an integrated memory controller 160 included, which allows the microprocessor, directly with the system memory 200 to communicate. In other embodiments, the memory controller 160 to be contained in a bus bridge containing the microprocessor 100 indirectly with the system memory 200 combines.

Datenspekulationdata speculation

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).As described herein, a data value is speculative, if it is a possibility indicates that the data value may not be correct and below is recalculated. A speculative data value is one that is not certainly can be classified as right or wrong. One Data value can be recalculated if the data value is the result an operation is, for a certain amount of data speculation has been performed or if the data value depends on another speculative data value (for example, if the Data value is generated as the result of an operation, the one or has multiple speculative operands).

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.There may be various mechanisms in the microprocessor 100 perform a data speculation. For example, the output unit 104 , the memory controller 160 and / or one or more functional units 126 each perform a data speculation for a particular operation. The output unit 104 can capture the result of an operation as a speculative operand for another operation. For example, the output unit may predict that a read operation on in the data buffer 128 accesses data stored by an earlier memory operation. The output unit 104 may then identify a data value stored in a register used as the source of the store as the speculative result of the read. This type of data speculation is referred to herein as dependency prediction. The dependency prediction can be in the output unit 104 can be extended by including the source of the memory operation as a speculative operand source for operations specifying the result of the read as an operand. Another type of dependency prediction may be in the load / store unit 126c by allowing certain reads to bypass memory entries that have uncalculated addresses, that is, by predicting that younger reads are not dependent on previous stores.

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.In a multiprocessor system, memory control 160 Perform coherency checks to preserve the coherency of the cache. The memory controller 160 can speculatively copy a memory line from system memory 200 before the coherency checks on the buffers of other microprocessors are completed. If the coherency checks subsequently indicate that the correct copy of the cache line to be read is currently stored in the cache of another processor, the copy may be speculative from system memory 200 read out cache line as invalid. Thus, any read operation results generated from accessing the cache line are speculative until the coherency checks are completed. This type of speculation is referred to herein as memory prediction.

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).The output unit 104 can perform data speculation by predicting the result of an operation. For example, some operations tend to produce the same result and thus, each time these operations are handled, the result may be speculative through the output unit 104 be generated before the operation by means of a functional unit 126 actually executed. This type of data speculation is referred to herein as data prediction. It should be noted that the data prediction can also be carried out in other areas of the microprocessor (for example in a load / store unit 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.A loading / storage unit 126c may speculatively generate the address based on the speculative address of the result of a read instruction whose address has not yet been calculated based on the pattern of previously-handled reads. For example, if the previous N read operations have destination addresses A1-AN that are spaced apart by a constant offset C (eg, A1; A2 = A1 + C; ... AN = A (N-1) + C), the load / storage unit 126c speculatively return the data from the most recently read address AN + the constant offset C as the result of the read operation. This type of data speculation is referred to herein as address prediction. It should be noted that other forms of address prediction may be used in other embodiments.

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).operations which depend on the result of operations involving data speculation accomplished was, can also generate speculative results. For example, if an address prediction is used to calculate the speculative result of a read operation to generate dependent Operations performed using the speculative result of the Reading process as an operand, speculative results which, in turn, serve as operands of other dependent operations can be used. Therefore, if the underlying speculation in the read operation can be detected as incorrect the results of dependent operations just as wrong and so is the whole chain of dependency on operations, which depends on this reading process are, under circumstances to execute again to generate correct results. On the other hand, if the Underlying speculation is recognized as correct, the Results of the dependent Operations be correct (assuming these results not based on other speculative values).

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.Many operations that perform data speculation can be verified when performing these operations on a functional unit. For example, the data prediction used to speculatively generate the result of an operation may be performed by the functional unit 126 verifying this operation by comparing the actual result of the operation with the speculative result. Some operations do not need to be rerun if data speculation is incorrect because the correct result is already available. Other operations can be verified without being completed. For example, if a read with an uncalculated address is its result from an earlier memory operation on (for example, due to dependency or address prediction), the speculative result of the read can be verified as the read address is computed. If the data speculation is incorrect, such an operation may need to be re-executed (at least in part) to produce the correct result.

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.Since operations for which data speculation has been performed and their dependent operations must be performed again, the redemption queue may 102 be designed so that only operations are withdrawn or withdrawn, for which an underlying data speculation has been done. As in 1 4, any means for verifying data speculation (in this embodiment, the memory controller 160 and the functional units 126 ), the redemption series 102 to provide a speculation pointer that identifies the operations for which data speculation is verified. Each speculation pointer may identify the operations for which data speculation with respect to a particular verification device is verified by assuming a value equal to the mark of the most recent operation verified by that verification device. The redemption series 102 can use the speculation pointers to indicate which operations to stop. The various components within the microprocessor 100 , which are adapted to verify one or more data to data speculation, are referred to herein as data speculation verification units.

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.Each speculation pointer may indicate which point in the underlying instruction sequence is not speculative with respect to a particular area of the microprocessor. For example, the speculation pointer D generated by the memory controller 160 is generated, the recent non-speculative operation in terms of memory control 160 which verifies memory forecasts. In one embodiment, the memory controller 160 generate the speculation pointer D to point to the most recently verified operation for which a memory prediction was made. In a further embodiment, the memory controller 160 Create the speculation pointer pointing to the operation just before the oldest unverified operation for which a memory prediction was made. In general, the speculation pointer D shows the redemption row 102 indicating which operations from the perspective of memory control 160 are no longer speculative.

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.The functional unit 126a and 126b may perform a whole number operation or a floating point operation according to an embodiment. The functional units 126a and 126b can each verify a data prediction. The speculation pointers A and B indicate accordingly which operations by the functional units 126a and 126b in the in 1 Verified embodiment are verified. A speculation pointer C is from a functional unit 126c which performs read, load and store operations. The speculation pointer C may indicate which operations are to be performed by the load / store unit 126c were verified. The functional unit 126c may be configured to verify address, data and / or dependency predictions.

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.As described above, the value of each speculative pointer depends on which operations are verified by a corresponding data speculation verification unit. In some embodiments, the values of the verification areas of the microprocessor 100 speculation pointers also depend on information identifying the operations on which data speculation was performed. For example, in one embodiment, the memory controller 160 track every operation on which a memory prediction was performed. When the memory controller 160 Every operation verified can control the memory 160 Continue the speculation pointer D to indicate that all operations until the next most recent operation on which a memory prediction was performed are non-data speculative in terms of memory control 160 are. In one embodiment, the memory controller 160 characterize those operations by passing the speculation pointer D forward to point to the next most recent speculative operation by the memory controller 160 is pursued. Similarly, the mechanisms that perform other types of data speculation (e.g., the output unit 104 and / or the functional unit 126c that performs load and store operations) also track the operations on which data speculation is performed. In some embodiments, at least some of these data speculation mechanisms may provide this information to the data speculation verification unit (s) (eg, the load / store unit) 126c and / or one or more of the other functional units 126 ), which are designed to verify this type of data speculation. If there are currently no data speculative operations to be verified by a particular unit of the data speculation verification units, the speculation pointer generated by this verification unit may be set to a value indicating that all pending operations are non-data speculative with respect to that particular verification unit are.

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.The redemption series 102 may indicate which operations may be withdrawn by comparing the areas of the sequence of operations indicated by speculation pointers. The oldest operation, which is called non-speculative by all speculation pointers, may be the oldest operation of the redemption series 102 is ended. Assume, for example, that operations 0 through 10 (where operation 0 is the oldest operation in program order and 10 is the most recent operation in program order, where the program order is the order of instructions in the program being executed before operations be rearranged or a processing in a disordered order within the microprocessor 100 is executed) from the output unit 104 were issued. If the speculation pointer A indicates that the operation is non-data speculative until operation 6, the speculation pointer B indicates that operations up to operation 5 are non-data speculative, the speculation pointer C indicates that operations up to operation 3 are non-speculative and the Speculation pointer D indicates that all open operations are non-data speculative (for example, because no memory prediction has been made for operations 0 through 10), the redemption queue may 102 mark the operations up to operation 3 as the set of operations that can be terminated. It should be noted that the operation retraction may also depend on typical termination constraints, whether those operations already by a functional unit 126 are executed and whether a control prediction affecting these operations is successfully made. For example, if a data speculative operation is identified as being incorrect and must be re-executed, that operation may be recognized as non-speculative by one or more speculation pointers, but should not be retired until that operation is re-executed. In some embodiments, information about whether or not operations are performed, or if needed, on the redemption queue, may be used 102 through the process organization unit 118 be supplied.

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. 2a shows an embodiment of a method used to generate a speculative pointer. Such a method may be performed, at least in part, by one of the speculation verification units, such as the memory controller 160 and the functional units 126 be set up. The step 201 For example, in some embodiments, it may be performed by the same portion of the microprocessor that will verify the data speculation. If this data speculation at 203 Verified, the speculation pointer can be continued, as shown in 205 is shown to the operation at the in 201 Data speculation was executed as non-speculative. In one embodiment, further propagation of the speculative pointer may occur 205 continuing the speculation pointer to identify the operation that has been last verified, indicating that all operations up to and including this operation are non-data speculative in the sense of a special means of verifying data speculation. In other embodiments, further propagation of the speculative pointer may occur 205 continuing the speculation pointer to signify the operation immediately prior to the next speculative operation, in terms of program order, to be verified by that particular verification device. For example, a load / store unit 126 for which operations the load / store unit has performed data speculation. Every time the load / storage unit 126 verifies one of these data-speculative operations, the load / store unit 126 continue its speculation pointer to indicate that all operations up to the next operation for which the load / store unit has performed data speculation are not data speculative with respect to the load / store unit. In other embodiments, the pointer may be continued in a different way. For example, a functional unit may verify a type of data speculation performed by the output unit. In some embodiments, the functional unit may not be aware of the entire set of open operations on which the output unit performed this type of data speculation. Instead, the functional unit can only know which of the operations currently pending in that functional unit are data speculative. Thus, in response to verifying data speculation for a particular operation, the functional unit may continue the speculation pointer to identify the operation immediately before the oldest data speculative operation (if any) pending in that functional unit. If none of the operations currently pending in this functional unit is data speculative, the functional unit may update the value of its speculative pointer to indicate that no pending operations are currently data speculative with respect to that functional unit.

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. 2 B FIG. 12 shows a flowchart of one embodiment of a method for withdrawing a pending operation. at 211 one or more speculation pointers are received. When multiple speculation pointers are received, each speculation pointer may identify a different range of pending operations as non-data speculative. If any one of Speculation pointer indicates that a particular operation may still be data speculative, however, this operation will not be terminated as this 213 is shown. However, if none of the speculation pointers identifies this operation as possibly data speculative, the operation may be completed as with 213 to 215 provided that all other conditions for retiring this operation are met.

Beispielhafte Computersystemeexemplary computer systems

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. 3 shows a block diagram of an embodiment of a computer system 900 that has a processor 100 comprising a plurality of system components via a bus bridge 902 connected is. The processor 100 may include one or more data verification units configured to generate speculation pointers, and may further include a redemption queue configured to terminate operations identified by the data speculation pointers as non-data speculative, as previously described. Other embodiments of a computer system are possible and included herein. In the illustrated system is a main memory 200 with the bus bridge 902 over a memory bus 906 connected, and a graphics controller 908 is with the bus bridge 902 via an AGP bus 910 connected. Various PCI devices 912a to 912b are with the bus bridge 902 via a PCI bus 914 connected. It can also be a secondary bus bridge 916 be provided to an electrical interface to one or more EISA or ISA facilities 918 via an EISA / ISA bus 920 take. In this example, the processor is 100 with the bus bridge 902 via a CPU bus 924 and with an optional L2 cache 928 connected. In some embodiments, the processor 100 an integrated L1 latch (not shown).

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.The bus bridge 902 provides an interface between the processor 100 , the main memory 200 , the graphics control 908 and the to the PCI bus 914 connected facilities ready. If an operation of one of the bus bridge 902 the bus bridge is detected 902 the goal of the operation (for example, a special device or in the case of the PCI bus 914 that the destination on the PCI bus 914 lies). The bus bridge 902 forwarded the operation to the target facility. The bus bridge 902 In general, an operation translates from the protocol used by the source device or source bus into the protocol used by the destination device or bus.

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.In addition to providing an interface with an ISA / EISA bus for the PCI bus 914 can the secondary bus bridge 916 additional features included. An input / output controller (not shown) external to or integrated in the secondary bus bridge 916 can be as well in the computer system 900 be included to provide additional functional support for a keyboard and a mouse 922 or to provide various serial and parallel port connections. An external buffer unit (not shown) may also be connected to the CPU bus 924 between the processor 100 and the bus bridge 902 be connected in other embodiments. Alternatively, the external buffer with the bus bridge 902 be connected and a buffer control logic for the external cache in the bus bridge 902 be integrated. The L2 cache 928 is in a backside configuration with respect to the processor 100 shown. Note that the L2 cache 928 separate from the processor 100 may be provided, or integrated into a housing (for example slot 1 or slot A) in the processor 100 may be provided or even on a semiconductor substrate in the processor 100 can be arranged in an integrated manner.

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.The main memory 200 is a memory in which application programs are stored, and from which the processor 100 mainly works out. A suitable main memory 200 may include a DRAM (Dynamic Random Access Memory). For example, multiple banks of SDRAM (Synchronous DRAM) or Rambus DRAM (RDRAM) may be suitable.

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.The PCI devices 912A to 912B are exemplary of a variety of peripherals, such as network interface cards, video accelerators, audio cards, hard disk drives or floppy disk drives or drive controllers, SCSI (small computer system interface) adapters and telephone cards. Similarly, the ISA facility is 918 exemplary of various types of peripherals, such as a modem, an audio card, and a variety of data card cards, such as GPIB or fieldbus interface cards.

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.The graphics control 908 is intended to convert text and images on a display 926 to control. The graphics control 908 may be provided as a typical graphics accelerator, generally known for converting three-dimensional data structures that efficiently into and out of main memory 200 can be moved. The graphics control 908 can therefore be a parent of the AGP bus 910 in that they provide access to a destination interface within the bus bridge 902 can request and receive it to the main memory 200 access. A special graphics bus involves the rapid retrieval of data from the main memory 200 , For certain operations, the graphics control 908 further configured to be PCI protocol transactions on the AGP bus 910 to create. The AGP interface of the bus bridge 902 may include a feature to support both AGP protocol transactions as well as PCI protocol target and initiator transactions. The ad 926 is any electronic display on which a picture or text can be presented. A suitable advertisement 926 includes a cathode ray tube ("CRT"), a liquid crystal display ("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.It should be noted that although the AGP, PCI and ISA or EISA buses are given as examples in the above description, any bus architectures may be used as desired. It should also be noted that the computer system 900 a multiprocessor computer system with additional processors (e.g., processor 100a as an optional component of the computer system 900 can be shown). The processor 100a can be similar to the processor 100 be educated. More precisely, the processor 100a can be an identical copy of the processor 100 be. The processor 100a can with the bus bridge 902 via an independent bus (as in 3 shown), or can be connected to the processor 100 the CPU bus 924 use together. Furthermore, the processor can 100a with an optional L2 cache 928a similar to the L2 cache 928 be connected.

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.In 4 is another embodiment of a computer system 900 shown a processor 100 with one or more data speculation verification units adapted to generate speculation pointers, and having a redemption queue capable of terminating operations depending on the speculation pointers as described above. Other embodiments are possible and included herein. In the embodiment of 4 includes the computer system 900 various processing nodes 1012A . 1012B . 1012C and 1012D , Each processing node is with a corresponding memory 200a to 200d via a memory controller 1016A to 1016D connected, each in the corresponding processing node 1012A to 1012D are integrated. Furthermore, the processing nodes contain 1012A to 1012D an interface logic used for communication between the processing nodes 1012A to 1012D is used. For example, the processing node includes 1012A an interface logic 1018A for communication with the processing node 1012B , an interface logic 1018B for communication with the processing node 1012C and a third interface logic 1018C for communication with yet another processing node (not shown). Similarly, the processing node includes 1012B an interface logic 1018D . 1018E and 1018F ; the processing node 1012C includes an interface logic 1018G . 1018H and 10181 ; and the processing node 1012D includes an interface logic 1018J . 1018K and 1018L , The processing node 1012D is connected to multiple input / output devices (such as devices 1020A to 1020B in a serial configuration) via the interface logic 1018L to communicate. Other processing nodes may communicate with other I / O devices in a similar manner.

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).The processing nodes 1012A to 1012D form a packet-based connection for communication between the processing nodes. In the present embodiment, the connection is defined as sets of unidirectional lines (e.g., lines 1024A are used to get packets from the processing node 1012A to the processing node 1012B to transfer, and lines 1024B are used to get packets from the processing node 1013B to the processing node 1012A to be transmitted).

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.Other wiring sets 1024C to 1024H are used to transfer packets between other processing nodes, as in 4 is shown. In general, any wiring harness 1024 one or more data lines, one or more clock lines corresponding to the data lines, and one or more control lines indicating the type of packet being transported. The connection may be operated in a cached manner for communication between the processing nodes, or in a non-coherent manner for communication between a processing node and an I / O device (or bus bridge to an I / O bus of conventional design such as the PCI bus or the ISA bus). Furthermore, the connection may be operated in a non-coherent manner using I / O devices using a serial-concatenated structure, as shown. It should be noted that a packet to be transported from one processing node to another may pass through one or more intermediate processing nodes. For example, a packet coming from the processing node 1012A to the processing nodes 1012D is transmitted via the processing node 1012B or the processing node 1012C run, like in 4 is shown. Any suitable signal routing algorithm may be used. In other embodiments of the computer system 900 can have more or less processing nodes than in the 4 be shown embodiment provided.

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.In general, the packets are considered one or more bit times on the lines 1024 Zvi transmitted to the processing node. A bit time may be the rising or falling edge of the clock signal on the corresponding clock lines. The packets may be command packets for initiating transactions, probe packets for preserving cache coherency, and response packets for responding to the probes and commands.

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.The processing nodes 1012A to 1012D may include one or more processors in addition to a memory controller and interface logic. Generally speaking, a processing node includes at least one processor and may optionally include a memory controller for communicating with memory and other logic as needed. More specifically, each processing node 1012A to 1012D can be one or more copies of the processor 100 contain. An external interface unit may be the interface logic 1018 in the node as well as the memory controller 1016 contain.

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.The stores 200A to 200D may include any suitable memory devices. For example, a memory 200A to 200D comprise one or more RAMBUS DRAMS (RDRAMS), synchronous DRAMS (SDRAMS), static RAMS, etc. The address space of the computer system 900 is on the memory 200A to 200D divided up. Each processing node 1012A to 1012D may include a memory map that is used to determine which address which memory 200A to 200D is assigned, and thus also to determine to which processing node 1012A to 1012D a memory request for a specific address should be supplied. In one embodiment, the coherence point is for an address within the computer system 900 the memory controller 1016A to 1016D which is connected to the memory which stores bits corresponding to the address. In other words, the memory controller 1016A to 1016D It is your responsibility to ensure that everyone has memory access to the appropriate memory 200A to 200D in a manner coherent with the cache. The memory controllers 1016A to 1016D can be a control circuit to connect to the memory 200A to 200D exhibit. Furthermore, the memory controllers 1016A to 1016D Request queues to string memory requests.

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.The interface logic 1018A to 1018L may include a number of buffers for receiving packets from the connection and for caching packets to be transmitted in the communication link. The computer system 900 may include any suitable scheduling mechanism for sending packets. For example, in one embodiment, each interface logic stores 1018 a number of the number of types of buffers within the receiver at each end of the trunk to which this interface logic is connected. The interface logic does not retransmit a packet unless the receiving interface logic has a free buffer to store the packet. When a receive buffer is released because a packet is forwarded, the received interface logic sends a message to the sending interface logic to indicate that the buffer is enabled. Such a mechanism may be referred to as a "coupon-based" system.

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.The I / O devices 1020A to 1020B can be any suitable I / O devices. For example, the I / O devices 1020A to 1020B Devices for communication with another computer system to which the devices are connected (for example, network interface cards or modems) include. Furthermore, the I / O devices 1020A to 1020B Video accelerators, audio cards, hard drives or drives or drive controllers, SCSI (small computer system interface) adapters and calling cards, sound cards, and a variety of data acceptance cards, such as GPIB or fieldbus interface cards. It should be noted that the term "I / O device" and the term "peripheral device" are to be considered as synonymous herein.

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.in the As used herein, the term "clock cycle" refers to a time interval, in which various stages of the instruction processing pipeline structures complete their tasks. Instructions and calculated values are taken from the memory elements (such as registers or arrays) according to a Clock signal defining the clock cycle stored. For example For example, a memory element may have a value corresponding to the rising one or store the falling edge of the clock signal.

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.The previous explanation describes signals as "set." A signal can as set or confirmed be considered when transmitting a value that has a specific Information indicates. A special signal can be set as be considered if there is a binary value of one or alternatively if it's a binary one Value zero transfers.

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.It There are various variations and modifications for the expert in the light of the technical teaching set out above. The following claims are intended be interpreted that they are all such variations and Include modifications.

Industrielle Anwendbarkeitindustrial applicability

Diese Erfindung ist im Allgemeinen auf Mikroprozessoren anwendbar.These This invention is generally applicable to microprocessors.

ZusammenfassungSummary

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.One Microprocessor can be a redemption line and one or more data speculation verification units. The data speculation verification units are each designed to one performed on operations Verify data speculation. Each data speculation verification unit generates a corresponding speculation pointer, the pending operations indicates that data speculation has been performed, verified by this data speculation verification unit were. The redemption series is trained to selectively perform operations depending on each of the Data speculation verification units receive speculation pointers back to pull.

11

104104
Ausgabeeinheitoutput unit
118118
Ablauforganisationseinheit(en)Scheduler (s)
106106
InstruktionszwischenspeicherInstruction cache
108108
VorabholungseinheitVorabholungseinheit
102102
Rücknahmereiheretire queue
Spekulationszeiger A, B, Cspeculation pointer A, B, C
Spekulationszeiger Dspeculation pointer D
160 160
Speichersteuerung memory controller
200 200
Systemspeichersystem memory
128128
DatenzwischenspeicherData latch
126a, 126c126a, 126c
Funktionseinheitfunctional unit
124124
Ausführungskern(e)Execution core (s)
130130
Ergebnisbusresult bus
116116
Registerdateiregister file
100100
Mikroprozessormicroprocessor

2a2a

201201
Ausführen einer Datenspekulation für OperationRunning a Data speculation for surgery
203 203
Datenspekulation verifiziert?data speculation verified?
205205
Weitersetzen des Spekulationszeigers, um diese Operation als nicht spekulativ zuNext Place the speculative pointer to this operation as non-speculative to
kennzeichnenmark

2b2 B

211211
Empfangen eines oder mehrerer SpekulationszeigerReceive one or more speculation pointers
213213
Zeigt ein Spekulationszeiger an, dass eine anhängliche Operation spekulativ ist?Shows a speculative pointer indicating that a pending operation is speculative is?
215215
Beenden der anhängigen Operationbreak up the pending surgery

33

200200
Hauptspeichermain memory
906906
Speicherbusmemory
902902
Busbrückebus bridge
914914
PCI-BusPCI bus
924924
CPU-BusCPU bus
928928
L2-CacheL2 cache
100100
Prozessorprocessor
100a100a
Prozessorprocessor
928a928a
L2-CacheL2 cache
910 910
AGP-BusAGP bus
908 908
Graphiksteuerunggraphics controller
926 926
Anzeigedisplay
920 920
ISA/EISA-BusISA / EISA bus
922922
Tastatur/MausKeyboard Mouse
916916
Sekundärbusbrückesecondary bus
918918
ISA-GerätISA device
812a, b812a, b
PCI-GerätPCI device

44

200a, 200d200a, 200d
SpeicherStorage
1012a, 1012d 1012a, 1012d
Verarbeitungsknotenprocessing nodes
1020°, 1020b1020 °, 1020b
I/O-GerätI / O device

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.Microprocessor ( 100 comprising: one or more data speculation verification units configured to verify data speculation performed on operations and to generate a corresponding speculation pointer characterizing pending operations on which data speculation has been verified by said one or more data speculation verification units; and a redemption series ( 102 ) connected to receive a speculation pointer from each of the one or more data speculation verification units and configured to selectively retract operations in response to the speculation pointer received from each of the one or more data speculation verification units. 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.Microprocessor ( 100 ) according to claim 1, wherein a load / store unit ( 126 ) comprises one of the one or more data speculation verification units, the data speciation verification unit included in the load / store unit (16) 126 ) is designed to verify dependency forecasts. 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.Microprocessor ( 100 ) according to claim 1, wherein a functional unit ( 126 ) configured to perform non-memory operations, comprises one of the one or more data speculation verification units, wherein those in the functional unit ( 126 ) contained data speculation verification is configured to verify a data prediction that predicts a result of a non-memory operation. 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.Microprocessor ( 100 ) according to claim 1, wherein one of the one or more data speculation verification units is adapted to receive information characterizing each of a plurality of pending operations for which a type of data speculation verified by that one of the one or more data speculation verification units has been performed ; and wherein said one or more data speculation verification units are adapted to indicate which pending operations have been verified by said one of said one or more data speculation verification units by advancing a corresponding speculation pointer to identify an operation younger than the most recent one Operation in which data speculation is verified and which is older than another pending operation on which the type of data speculation has been performed. 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.Computer system ( 900 ) with: a memory ( 200 ); and a processor ( 100 ) connected to the memory ( 200 ) connected is; characterized in that the processor ( 100 ) comprises one or more data speculation verification units configured to verify data speculation performed on operations and to generate a corresponding speculation pointer that identifies pending operations on which data speculation has been performed by that one of the one or more data speculation verification units ; and the processor ( 100 ) also a redemption 102 ) connected to receive a speculation pointer from each of the one or more data speculation verification units and configured to selectively retract operations in response to the speculation pointer received from each of the one or more data speculation verification units. 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.Computer system ( 900 ) according to claim 5, wherein a load / store unit ( 126 ) has one of the one or more data speculation verification units, wherein in the load / store unit ( 126 ) is designed to verify dependency predictions. 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.Computer system ( 900 ) according to claim 5, wherein a functional unit ( 126 ) configured to perform non-memory operations, comprises one of the one or more data speculation verification units, wherein in the functional unit ( 126 ) is configured to verify a data prediction that predicts a result of a non-memory operation. 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.Method with: Perform a data speculation for one Surgery; Verify the data speculation required for the operation accomplished was, with a verification unit; Generate by the Verification unit of a speculation pointer indicating that the operation is not data speculative with respect to the verification unit is, in response to the verifying; and in response, that the speculation pointer indicates that the operation is not data speculative with regard to the verification unit is withdrawing the 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.The method of claim 8, further comprising: verifying a data speculation that was performed on another operation, by means of another verification unit, and generating a another speculative pointer, indicating that the other operation not speculative with respect to the other verification unit is; taking the retreat the operation of the speculation pointer and the other speculation pointer depends. 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.The method of claim 8, wherein generating the Speculative pointer indicating that the operation is not data speculative in terms of the verification unit, it depends that the operation is an oldest Operation is a type of data speculation used by the Verification unit is verified.
DE112004000741T 2003-05-02 2004-01-09 Speculation pointer for identifying data-speculative operations in a microprocessor Expired - Fee Related DE112004000741B4 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/429,159 US7266673B2 (en) 2003-05-02 2003-05-02 Speculation pointers to identify data-speculative operations in microprocessor
US10/429,159 2003-05-02
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 (en) 2006-05-11
DE112004000741B4 DE112004000741B4 (en) 2008-02-14

Family

ID=33310560

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112004000741T Expired - Fee Related DE112004000741B4 (en) 2003-05-02 2004-01-09 Speculation pointer for identifying data-speculative operations in a microprocessor

Country Status (8)

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

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 (en) * 2019-09-25 2023-12-12 阿里巴巴集团控股有限公司 Instruction processing device, processor and processing method thereof

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
US5966544A (en) * 1996-11-13 1999-10-12 Intel Corporation Data speculatable processor having reply architecture
US6735688B1 (en) * 1996-11-13 2004-05-11 Intel Corporation Processor having replay architecture with fast and slow replay paths
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
WO2001061480A1 (en) 2000-02-14 2001-08-23 Intel Corporation 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
US6718839B2 (en) * 2001-06-26 2004-04-13 Sun Microsystems, Inc. Method and apparatus for facilitating speculative loads in a multiprocessor system
US6704841B2 (en) * 2001-06-26 2004-03-09 Sun Microsystems, Inc. Method and apparatus for facilitating speculative stores in a multiprocessor system
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
KR101057163B1 (en) 2011-08-17
GB2418045A (en) 2006-03-15
WO2004099978A3 (en) 2005-12-08
US20040221140A1 (en) 2004-11-04
GB2418045B (en) 2007-02-28
WO2004099978A2 (en) 2004-11-18
JP2006525595A (en) 2006-11-09
US7266673B2 (en) 2007-09-04
CN1784654A (en) 2006-06-07
TWI318371B (en) 2009-12-11
CN100373330C (en) 2008-03-05
DE112004000741B4 (en) 2008-02-14
JP4745960B2 (en) 2011-08-10
TW200502849A (en) 2005-01-16
GB0521335D0 (en) 2005-11-30
KR20060004974A (en) 2006-01-16

Similar Documents

Publication Publication Date Title
DE112005002173B4 (en) Processor with dependency mechanism to predict if a load is dependent on an older write
DE112004002848B4 (en) A microprocessor and method for verifying a memory file in such a microprocessor
DE60036016T2 (en) FAST MULTITHREADING FOR ENG COUPLED MULTIPROCESSORS
DE69908193T2 (en) EXECUTING MEMORY AND LOAD OPERATIONS BY A LINK FILE
DE60222402T2 (en) METHOD AND SYSTEM FOR THE SPECULAR INADMISSIBILITY DECLARATION OF LINES IN A CACHE MEMORY
DE112007003801B3 (en) DEVICE WITH A STORAGE UNIT AND LOGIC FOR PROVIDING AN EFFICIENT MECHANISM FOR TRANSACTIONAL MEMORY EXECUTIONS IN OUT-OF-ORDER PROCESSORS
DE60005860T2 (en) PROCESS CONTROL FOR ISSUING AND REPUTING CHAINS OF DEPENDENT COMMANDS
DE60025028T2 (en) STORAGE BUFFER TRANSFERRING DATA BASED ON INDEX AND VOLUNTARY WAY PATTERN
DE112006002237B4 (en) Method for self-initiating synchronization in a computer system
DE112004002365T5 (en) Transition from instruction cache to trace cache based on trademark boundaries
DE112010003492B4 (en) Transaction storage system with efficient cache support
DE112004001854T5 (en) A system and method for handling special instructions in a processor based on a cache memory with trace
DE69902392T2 (en) USE ECC / PARITY BITS TO STORE PRE-DECODING INFORMATION
DE60223023T2 (en) USING TYPE BIT TO TRACK THE STORAGE OF ECC AND VORDEKODIERUNGSBIT IN A LEVEL 2 CACHE
DE112017001825T5 (en) PROCESSORS, METHODS, SYSTEMS AND INSTRUCTIONS FOR ATOMICALLY SAVING DATA WIDER THAN A NATIVELY SUPPORTED DATA WIDTH IN A MEMORY
DE69329778T2 (en) SYSTEM AND METHOD FOR HANDLING LOADS AND / OR STORES IN A SUPER-SCALAR MICROPROCESSOR
DE69607760T2 (en) DISORDERED LOAD / STORAGE EXECUTION CONTROL
DE602004010265T2 (en) LOAD STORE UNIT WITH REPEAT MECHANISM
DE112010004322T5 (en) Predict and avoid operand-store-compare comparison hazards in microprocessors with different order
DE112007001171T5 (en) Virtualized Transaction Memory Procedure for Global Overflow
DE102014003799A1 (en) Systems and methods for transfer elimination with bypass multiple instantiation table
DE69633474T2 (en) Addressing method for non-sequential execution of load instructions with respect to store instructions
DE10296989T5 (en) Multi-thread processor with the ability to implicitly execute a single-thread program
DE112005003339T5 (en) Transaction-based shared data processing operation in a multiprocessor environment
DE102014003399A1 (en) Systems and methods for implementing transactional memory

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