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