Die
Erfindung betrifft einen Mikroprozessor mit einem Ausführungskern,
der eine Datenspekulation bei der Ausführung einer Anweisung durchführt, und
mit einem Wiederholmechanismus. Ferner betrifft die Erfindung ein
Verfahren zum Ausführen
von Anweisungen bei Datenspekulation, bei dem Anweisungen bei fehlerhafter
Datenspekulation wiederholt ausgeführt werden.The
The invention relates to a microprocessor with an execution core,
performing a data speculation in the execution of a statement, and
with a repeat mechanism. Furthermore, the invention relates to a
Method of execution
statements in data speculation where statements are incorrect
Data speculation to be executed repeatedly.
1 zeigt eine Blockdarstellung
einer Ausführungsform,
eines in dem US-Patent Nr. 5,966,544 offenbarten Prozessors 100.
Der in der 1 gezeigte
Prozessor 100 weist einen I/O-Ring 111 auf, der mit
einer ersten Taktfrequenz (I/O-Takt) arbeitet, einen verzögerungstoleranten
Ausführungskern 121, der
bei einer zweiten Taktfrequenz (z.B. langsamer Takt) arbeitet, einen
verzögerungsintoleranten
Ausführungsunterkern 131,
der bei einer dritten Taktfrequenz (z.B. mittlerer Takt) arbeitet,
und einen verzögerungskritischen
Ausführungsunterkern 141,
der bei einer vierten Taktfrequenz (z.B. schneller Takt) arbeitet.
Der in 1 gezeigte Prozessor 100 weist
außerdem
Takt-Vervielfacher- und/oder Takt-Teiler-Einheiten 110, 120 und 130 auf,
die so konfiguriert sind, daß sie
die entsprechende Taktung an die verschiedenen Teile oder Unterkerne
des Prozessors 100 zur Verfügung zu stellen, wie in der
früheren
Anmeldung gelehrt wurde. Der spezielle Teil der Lehre der früheren Anmeldung,
der hierzu am ehesten in Bezug steht, ist derjenige, daß der Ausführungskern
zwei oder mehr Teile (Unterkerne) enthalten kann, die bei unterschiedlichen
Taktfrequenzen arbeiten. 1 Figure 14 shows a block diagram of one embodiment of a processor disclosed in U.S. Patent No. 5,966,544 100 , The Indian 1 shown processor 100 has an I / O ring 111 which operates at a first clock frequency (I / O clock), a delay tolerant execution core 121 operating at a second clock frequency (eg, slow clock), a delay-intolerant execution sub-core 131 operating at a third clock frequency (eg, middle clock) and a delay-critical execution sub-core 141 which operates at a fourth clock frequency (eg, fast clock). The in 1 shown processor 100 also has clock multiplier and / or clock divider units 110 . 120 and 130 which are configured to provide the appropriate timing to the various parts or sub cores of the processor 100 as taught in the earlier application. The particular part of the teaching of the earlier application most closely related to this is that the execution core may contain two or more parts (sub kernels) operating at different clock frequencies.
Im
Betrieb kommuniziert der I/O-Ring 111 mit dem Rest des
Computersystems (nicht dargestellt) durch die Ausführung unterschiedlicher
I/O-Operationen, wie Speicherlese- und Schreiboperationen, mit der
I/O-Taktfrequenz. Z.B. kann der Prozessor 100 eine I/O-Operation
an dem I/O-Ring 111 mit der I/O-Taktfrequenz ausführen, um
Daten von einer externen Speichereinrichtung zu lesen. Die verschiedenen
Ausführungsunterkerne 121, 131 und 141 können verschiedene
Funktionen oder Operationen je nach den eingegebenen Anweisungen
und/oder Eingabedaten bei ihren jeweiligen Taktfrequenzen ausführen. Z.B.
kann der verzögerungstolerante
Ausführungsunterkern 121 eine
Ausführungsoperation
an den Eingangsdaten durchführen,
um ein erstes Ergebnis zu erzeugen. Der nicht-verzögerungstolerante
Unterkern 131 kann eine Ausführungsoperation an dem ersten
Ergebnis durchführen,
um ein zweites Ergebnis zu erzeugen. Der verzögerungskritische Ausführungsunterkern 141 kann
entsprechend eine weitere Ausführungsoperation
an dem zweiten Ergebnis durchführen,
um ein drittes Ergebnis zu erzeugen. Die verschiedenen Operationen,
die durch die verschiedenen Ausführungsunterkerne
durchgeführt werden,
können
arithmetische Operationen, logische Operationen und andere Operationen
(etc.) beinhalten. Es sollte von dem Fachmann geschätzt und
verstanden werden, daß die
Ausführungsreihenfolge,
in der die verschiedenen Operationen durchgeführt werden, nicht notwendigerweise
der hierarchischen Reihenfolge der verschiedenen Ausführungsunterkerne
folgen muß.
Die Eingabedaten könnten
z.B. unmittelbar und direkt zu dem innersten Unterkern gelangen
und das von dort erhaltene Ergebnis könnte von dem innersten Unterkern
zu jedem anderen Unterkern oder zum Zurückschreiben zurück zu dem I/O-Ring 111 gelangen.
Nach der Lehre und Offenbarung in der früheren Anmeldung können außerdem On-Chip-Cache-Speicherstrukturen über zwei
oder mehr Bereiche des Prozessors 100 verteilt sein. Auf diese
Weise können
bestimmte Operationen und/oder Funktionen mit Bezug zu einem Aspekt
der Daten, die in dem On-Chip-Cache-Speicher gespeichert sind, bei
einer Taktfrequenz ausgeführt
werden, während
andere Operationen und/oder Funktionen unter Bezug auf einen anderen
Aspekt der Daten, die in dem On-Chip-Cache-Speicher gespeichert
sind, bei einer anderen Frequenz ausgeführt werden können. Beispielsweise
könnte
ein Weg-Prediktor-Fehlgriff (way predictor miss) bezüglich des
On-Chip-Cache-Speichers in einem Unterkern bei einer Taktfrequenz
ausgeführt
werden, während die
TLB-Treffer/Fehlgriff(hit/miss)-Erkennung und/oder Seitenfehlererkennung
in einem anderen Unterkern bei einer anderen Frequenz ausgeführt werden
könnte.
Auf diese Weise können
bestimmte Fehler und Zustände früher im Ausführungsprozeß festgestellt
werden als andere Fehler und Zustände.During operation, the I / O ring communicates 111 with the rest of the computer system (not shown) performing various I / O operations, such as memory read and write operations, with the I / O clock frequency. For example, the processor can 100 an I / O operation on the I / O ring 111 at the I / O clock frequency to read data from an external memory device. The various execution sub-cores 121 . 131 and 141 may perform various functions or operations according to the input instructions and / or input data at their respective clock frequencies. For example, the delay-tolerant execution sub-core 121 perform an execution operation on the input data to produce a first result. The non-delay-tolerant sub-core 131 can perform an execution operation on the first result to produce a second result. The delay-critical execution subkernel 141 may accordingly perform another execution operation on the second result to produce a third result. The various operations performed by the various execution kernels may include arithmetic operations, logical operations and other operations (etc.). It should be appreciated and understood by those skilled in the art that the order of execution in which the various operations are performed need not necessarily follow the hierarchical order of the various execution subkernels. For example, the input data could go directly and directly to the innermost subkernel, and the result obtained therefrom could be from the innermost subkernel to any other subkernel or back to the I / O ring 111 reach. Further, as taught and disclosed in the earlier application, on-chip cache memory structures may span two or more areas of the processor 100 be distributed. In this way, certain operations and / or functions relating to one aspect of the data stored in the on-chip cache memory may be performed at one clock frequency, while other operations and / or functions may be performed with respect to another aspect the data stored in the on-chip cache memory can be executed at a different frequency. For example, a way predictor miss relating to the on-chip cache in a subkernel could be performed at a clock frequency, while the hit / miss detection and / or page fault detection in another sub-core could be run at a different frequency. In this way, certain errors and conditions may be detected earlier in the execution process than other errors and conditions.
2 zeigt eine Blockdarstellung
einer Ausführungsform
eines Prozessors 200, der in der früheren Anmeldung offenbart wurde
und eine verallgemeinerte Wiederholarchitektur enthält, um Datenspekulationsoperationen
zu vereinfachen. Der Prozessor 200 enthält in dieser Ausführungsform
eine Einplaner 231, der mit einem Multiplexer 241 gekoppelt
ist, um Anweisungen, die von einem Anweisungscachespeicher (I-Cache) 211 empfangen
werden, an einen Ausführungskern 251 zur
Ausführung
zur Verfügung zu
stellen. Der Ausführungskern 251 kann
Datenspekulationen durch Ausführung
der verschiedenen Anweisungen, die von dem Multiplexer 241 empfangen werden,
durchführen.
Wie in 2 gezeigt, enthält der Prozessor 200 eine
Prüfeinheit 281,
um eine Kopie der ausgeführten
Anweisungen für
eine Wiederausführung
(Wiederholung) zurück
zu dem Ausführungskern 251 zu
senden, falls festgestellt wird, daß die Datenspekulation fehlerhaft
ist. Jedoch ist in dieser verallgemeinerten Wiederholarchitektur
die Prüfeinheit 281 hinter
dem Ausführungskern 251,
hinter dem TLB und der Tag-Logik 261 und hinter der Cachespeicher-Treffer/Fehlgriff-Logik 271 positioniert. Bei
einigen Anweisungen könnte
es bereits früher
bekannt sein, daß sie
fehlerhaft ausgeführt
wurden (z.B. weil die Datenspekulation fehlerhaft ist), als es die
Erkennung durch die Positionierung dieses Prüfers erlauben würde. Insbesondere
gibt es Fälle,
bei denen bestimmte Fehler und Zustände früher erkannt werden können, wodurch
angezeigt wird, daß die
Datenspekulation in diesen Fällen
bereits vor der Ausführung
der TLB/TAG-Logik 261 und der Treffer/Fehlgriff-Logik 271 fehlerhaft
ist. Wegen der derzeitigen Positionierung der Prüfeinheit 281 würden unglücklicherweise
die betreffenden Anweisungen, die aufgrund von fehlerhaften Datenspekulationen
inkorrekt ausgeführt
wurden, nicht zur Wiederausführung
oder Wiederholung zurück
zu dem Ausführungskern 251 geschickt,
bevor sie die Prüfereinheit 281 erreichen. Daher
gibt es eine unnötige
Verzögerung
zwischen dem Zeitpunkt, zu dem bekannt wird, daß eine Anweisung aufgrund von
fehlerhaften Datenspekulationen inkorrekt ausgeführt wurde, bis zu dem Zeitpunkt,
wenn die jeweilige Anweisung tatsächlich zur Wiederausführung zurückgesendet
wird. Daher ist die Systemleistung nicht so optimiert, wie sie es
sein könnte,
wenn diese Anweisungen, die inkorrekt ausgeführt wurden, früher in dem
Prozessor wiederausgeführt
oder wiederholt worden wären. 2 shows a block diagram of an embodiment of a processor 200 which was disclosed in the earlier application and includes a generalized repeat architecture to simplify data speculation operations. The processor 200 contains in this embodiment a scheduler 231 that with a multiplexer 241 is coupled to instructions issued by an instruction cache (I-cache). 211 be received, to an execution core 251 to provide for execution. The execution core 251 can data speculation by executing the various instructions provided by the multiplexer 241 be received. As in 2 shown, the processor contains 200 a test unit 281 to get a copy of the executed instructions for re-execution (retry) back to the execution core 251 if it is determined that the data speculation is faulty. However, in this generalized repeat architecture, the test unit is 281 behind the execution core 251 behind the TLB and the tag logic 261 and behind the cache hit / miss logic 271 positioned. For some instructions it could be earlier be aware that they were executed incorrectly (eg because the data speculation is faulty), as it would allow the recognition by the positioning of this examiner. In particular, there are instances where certain errors and conditions may be detected earlier, indicating that data speculation in these cases is already present prior to the execution of the TLB / TAG logic 261 and hit / miss logic 271 is faulty. Because of the current positioning of the test unit 281 Unfortunately, those instructions that were executed incorrectly due to erroneous data speculation would not be re-executed or retried back to the execution core 251 sent before the tester unit 281 to reach. Therefore, there is an unnecessary delay between the time when it is learned that an instruction has been incorrectly executed due to erroneous data speculation until the time the respective instruction is actually returned for re-execution. Therefore, system performance is not as optimized as it might be if these instructions, which were executed incorrectly, were re-executed or repeated earlier in the processor.
Aufgabe
der Erfindung ist es, die mit einer Wiederholung von Anweisungen
bei fehlerhafter Datenspekulation verbundenen Verzögerungen
zu verringern.task
It is the invention with a repetition of instructions
Delays associated with incorrect data speculation
to reduce.
Diese
Aufgabe wird erfindungsgemäß durch einen
Mikroprozessor mit den Merkmalen des Anspruchs 1 bzw. durch ein
Verfahren mit den Merkmalen des Anspruchs 15 gelöst.These
The object is achieved by a
Microprocessor with the features of claim 1 or by a
Method with the features of claim 15 solved.
Vorteilhafte
und/oder bevorzugte Weiterbildungen der Erfindung sind in den Unteransprüchen gekennzeichnet.advantageous
and / or preferred developments of the invention are characterized in the subclaims.
Die
Merkmale und Vorteile der vorliegenden Erfindung werden unter Bezugnahme
auf die beiliegenden Zeichnungen vollständiger verstanden, in denen:The
Features and advantages of the present invention will become apparent by reference
On the accompanying drawings more fully understood, in which:
1 eine
Blockdarstellung einer Ausführungsform
eines Prozessors zeigt, der verschiedene Unterkerne enthält, die
bei verschiedenen Frequenzen betrieben werden; 1 Figure 12 shows a block diagram of an embodiment of a processor containing various sub cores operating at different frequencies;
2 eine
Blockdarstellung einer Ausführungsform
eines Prozessors zeigt, der eine verallgemeinerte Wiederholarchitektur
aufweist; 2 Figure 12 shows a block diagram of one embodiment of a processor having a generalized repeat architecture;
3 ein
Flußdiagramm
einer Ausführungsform
einer Prozessor-Pipeline zeigt, bei der die Lehren der vorliegenden
Erfindung implementiert sind; 3 Fig. 10 shows a flowchart of one embodiment of a processor pipeline implementing the teachings of the present invention;
4 ein
Blockschaltbild einer Ausführungsform
eines Prozessors zeigt, der einen ersten und einen zweiten Wiederholmechanismus
aufweist; 4 shows a block diagram of an embodiment of a processor having a first and a second repeating mechanism;
5 ein
detaillierteres Blockschaltbild einer Ausführungsform eines Prozessors
zeigt, der einen ersten und einen zweiten Wiederholmechanismus aufweist;
und 5 a more detailed block diagram of an embodiment of a processor having a first and a second repeating mechanism; and
6 ein
Flußdiagramm
eines Ausführungsbeispiels
eines Verfahrens zeigt, das den Lehren der vorliegenden Erfindung
entspricht. 6 FIG. 3 shows a flowchart of one embodiment of a method that complies with the teachings of the present invention.
DETAILLIERTE BESCHREIBUNGDETAILED DESCRIPTION
In
der folgenden detaillierten Beschreibung werden zahlreiche spezielle
Details dargestellt, um ein tiefes Verständnis der vorliegenden Erfindung
zu ermöglichen.
Für einen
Fachmann ist es jedoch klar, daß die
vorliegende Erfindung auch ohne diese speziellen Details ausgeführt werden
kann.In
The following detailed description will be numerous specific
Details presented in order to provide a thorough understanding of the present invention
to enable.
For one
However, it is clear to a person skilled in the art that the
The present invention may be practiced without these specific details
can.
In
der folgenden Diskussion werden die Lehren der vorliegenden Erfindung
genutzt, um ein Verfahren, eine Vorrichtung und ein System zur Vereinfachung
von Datenspekulationen bei der Ausführung eingegebener Anweisungen
zu implementieren. Um die Ausführungszeit
zu verringern, führt
eine Ausführungseinheit
Datenspekulationen bei der Ausführung einer
eingegebenen Anweisung durch. Falls die Datenspekulation fehlerhaft
ist, wird die eingegebene Anweisung durch die Ausführungseinheit
erneut ausgeführt,
bis das korrekte Resultat gewonnen wird. Bei einer Ausführungsform
wird die Datenspekulation als fehlerhaft erkannt, wenn Fehler eines
ersten Typs oder Fehler eines zweiten Typs erkannt werden. Fehler
des ersten Typs können
früher
erkannt werden als Fehler des zweiten Typs. Bei einer Ausführungsform ist
ein erster Prüfer
für das
Zurücksenden
einer ersten Kopie der eingegebenen Anweisung an die Ausführungseinheit
zur Wiederausführung
oder Wiederholung (replay) verantwortlich, wenn ein Fehler des ersten
Typs bezüglich
der Ausführung
der eingegebenen Anweisung erkannt wird. Ein zweiter Prüfer ist für das Zurücksenden
einer zweiten Kopie der eingegebenen Anweisung an die Ausführungseinheit
zur Wiederausführung
oder Wiederholung verantwortlich, wenn ein Fehler des zweiten Typs
bezüglich
der Ausführung
der eingegebenen Anweisung erkannt wird. Bei einer Ausführungsform
wird ein Selektor verwendet, um entweder eine nachfolgend eingegebene
Anweisung, die erste Kopie der falsch ausgeführten Anweisung oder die zweite
Kopie der falsch ausgeführten
Anweisung basierend auf einem festgelegten Prioritätsschema
an die Ausführungseinheit zur
Ausführung
zur Verfügung
zu stellen. Die Lehren der vorliegenden Erfindung sind auf jeden
Prozessor oder jede Maschine anwendbar, die Datenspekulationen bei
der Ausführung
von Anweisungen durchführt.
Jedoch ist die vorliegende Erfindung nicht auf Prozessoren oder
Maschinen beschränkt,
die Datenspekulation durchführen,
und kann auf jeden Prozessor und jede Maschine angewendet werden,
bei der mehrere Ebenen des Wiederholmechanismus benötigt werden.In the following discussion, the teachings of the present invention are utilized to implement a method, apparatus, and system for simplifying data speculation in the execution of input instructions. To reduce execution time, an execution unit performs data speculation upon execution of an input statement. If the data speculation is erroneous, the instruction entered is re-executed by the execution unit until the correct result is obtained. In one embodiment, the data speculation is detected as failing if errors of a first type or errors of a second type are detected. Errors of the first type can be detected earlier than errors of the second type. In one embodiment, a first validator is responsible for returning a first copy of the input instruction to the execution unit for replay if a first type error is detected with respect to execution of the input instruction. A second checker is responsible for returning a second copy of the input instruction to the execution unit for re-execution or retry when a second-type error in execution of the input instruction is detected. In one embodiment, a selector is used to provide either a subsequently entered instruction, the first copy of the misdirected instruction, or the second copy of the misdirected instruction to the execution unit based on a predetermined priority scheme for execution. The teachings of the present invention are applicable to any processor or machine that performs data speculation in the execution of instructions. However, the present invention is not on Limited processors or machines that perform data speculation and can be applied to any processor or machine that requires multiple levels of repeat mechanism.
3 zeigt
eine Blockdarstellung einer Ausführungsform
einer Prozessor-Pipeline 300, innerhalb der die vorliegende
Erfindung implementiert werden kann. Für die Zwecke der vorliegenden
Beschreibung bezieht sich der Begriff "Prozessor" auf jede Maschine, die fähig ist,
eine Folge von Anweisungen auszuführen, und soll Mehrzweck-Mikroprozessoren,
Spezialzweck-Mikroprozessoren, Grafik-Controller, Audio-Prozessoren,
Video-Prozessoren, Multimedia-Controller und Mikrocontroller einschließen, jedoch
nicht auf diese beschränkt
sein. Die Prozessor-Pipeline 300 enthält verschiedene Verarbeitungsstufen,
beginnend mit einer Abrufstufe 310. Bei dieser Stufe werden
Anweisungen gelesen und in die Pipeline 300 eingespeist.
Z.B. kann eine Makroanweisung von einem Cache-Speicher ausgelesen
werden, der sich integral innerhalb des Prozessors befindet oder
eng mit diesem verbunden ist, oder kann über einen Systembus von einer
externen Speichereinheit ausgelesen werden. Die bei der Abrufstufe 310 ausgelesenen
Anweisungen werden dann in die Decodierstufe 320 eingegeben,
wo die Anweisungen oder Makroanweisungen in Mikroanweisungen oder
Mikrooperationen (im weiteren auch als UOPs oder μops bezeichnet)
für die
Ausführung durch
den Prozessor decodiert werden. Bei einer Zuteilungsstufe 330 werden
die für
die Ausführung
der Mikroanweisungen notwendigen Prozessor-Ressourcen zugeteilt.
Die nächste
Stufe in der Pipeline ist eine Umbenennungsstufe 340, bei
der Verweise auf externe Register in Verweise auf interne Register umgewandelt
werden, um falsche Abhängigkeiten
zu beseitigen, die durch die Wiederverwendung des Registers verursacht
werden. Bei einer Einplanungs-/Versandstufe 350 wird jede Mikroanweisung oder
UOP eingeplant und an einer Ausführungseinheit
versandt. Die Mikroanweisungen oder UOPs werden dann bei einer Ausführungsstufe 360 ausgeführt. 3 shows a block diagram of an embodiment of a processor pipeline 300 within which the present invention can be implemented. For purposes of the present description, the term "processor" refers to any machine capable of executing a sequence of instructions, and is intended to mean general purpose microprocessors, special purpose microprocessors, graphics controllers, audio processors, video processors, multimedia Controllers and microcontrollers, but not limited to these. The processor pipeline 300 Contains various processing levels, starting with a fetch level 310 , At this stage, instructions are read and pipelined 300 fed. For example, a macrostatement may be read from a cache memory that is integral with or intimately connected to the processor, or may be read from a external memory device via a system bus. The at the call level 310 read instructions are then sent to the decode stage 320 where the instructions or macro instructions in microinstructions or micro-operations (also referred to as UOPs or μops hereinafter) are decoded for execution by the processor. At an allocation level 330 the processor resources necessary to execute the microinstructions are allocated. The next stage in the pipeline is a rename level 340 in which references to external registers are converted to references to internal registers to eliminate false dependencies caused by the reuse of the register. At scheduling / dispatch stage 350, each microinstruction or UOP is scheduled and dispatched to an execution unit. The microinstructions or UOPs will then be at an execution stage 360 executed.
Nach
der Ausführung
scheiden die Mikroanweisungen bei einer Ausscheidungsstufe 370 (retire stage)
aus.After execution, the micro instructions divorce at an excretion level 370 (retire stage).
Bei
einer Ausführungsform
können
die oben beschriebenen verschiedenen Stufen in drei Phasen organisiert
sein. Die erste Phase kann als In-Reihenfolge-Front-End bezeichnet
werden und enthält
die Abrufstufe 310, die Decodierstufe 320, die
Zuteilungsstufe 330 und die Umbenennungsstufe 340. Während der
In-Reihenfolge-Front-End-Phase bewegen sich die Anweisungen in der
ursprünglichen Programmreihenfolge
durch die Pipeline 300. Die zweite Phase kann als Außer-der-Reihe-Ausführungsphase
bezeichnet werden und enthält
die Einplanungs-/Versandstufe 350 und die Ausführungsstufe 360.
Während
dieser Phase kann jede Anweisung unabhängig von ihrer sequentiellen
Position in dem ursprünglichen
Programm eingeplant, versendet und ausgeführt werden, sobald deren Datenabhängigkeiten
aufgelöst
sind und die entsprechende Ausführungseinheit
verfügbar
ist. Die dritte Phase, die als In-Reihenfolge-Ausscheidungs-Phase bezeichnet
wird, enthält
die Ausscheidungsstufe 370, bei der die Anweisungen in
ihrer ursprünglichen,
sequentiellen Programmreihenfolge ausgeschieden werden, um die Integrität und die
Semantik des Programms zu bewahren.In one embodiment, the various stages described above may be organized in three phases. The first phase may be referred to as an in-order front-end and includes the fetch stage 310 , the decoding stage 320 , the allocation level 330 and the renaming level 340 , During the in-order front-end phase, instructions in the original program order move through the pipeline 300 , The second phase may be referred to as the out-of-order execution phase and includes the scheduling / shipping stage 350 and the execution stage 360 , During this phase, any statement can be scheduled, dispatched and executed regardless of its sequential position in the original program as soon as its data dependencies are resolved and the corresponding execution unit is available. The third phase, referred to as the in-order excretion phase, contains the excretory stage 370 in which the instructions are exited in their original, sequential program order to preserve the integrity and semantics of the program.
Bei
einem Prozessor mit einer Wiederholarchitektur können gewisse Freiheiten bezüglich der Einplanung
und Ausführung
der eingegebenen Anweisung in Anspruch genommen werden. Z.B. kann eine
eingegebene UOP zur Ausführung
an die Ausführungseinheit
versandt werden, auch wenn deren Quelldaten noch nicht bereit oder
bekannt sind. Wenn erkannt wird, daß die Datenspekulationen bezüglich der
Ausführung
der eingegebenen UOP fehlerhaft ist, kann die betreffende UOP zur
Wiederausführung
(Wiederholung) zurück
an die Ausführungseinheit
gesendet werden, bis das richtige Resultat gewonnen wird. Es ist
natürlich
erstrebenswert, die Anzahl der Wiederholungen oder Wiederausführungen
zu begrenzen, da jede wiederholte UOP verfügbare Ressourcen nutzt und
die Gesamt leistung des Systems herabsetzt. Dennoch kann durch die
Verwendung solcher Möglichkeiten
ein Zuwachs in der Nettoleistung erreicht werden. Wenn z.B. die
Mehrzahl der UOPs in eine verringerten Anzahl von Durchläufen richtig
ausgeführt
wird und nur wenige UOPs wiederholt werden müssen, wird der Gesamtdurchsatz
im Vergleich zu dem Fall des kleinsten gemeinsamen Nenners, bei
dem alle UOPs solange warten, wie der schlechteste Fall dauert,
zunehmen.at
A processor with a repeating architecture may have some freedom in scheduling
and execution
the instruction entered. For example, can a
entered UOP for execution
to the execution unit
even if their source data is not ready or ready
are known. If it is recognized that the data speculation regarding the
execution
entered UOP is incorrect, the relevant UOP can be used for
re-execution
(Repeat) back
to the execution unit
be sent until the correct result is obtained. It is
Naturally
desirable, the number of repetitions or redovers
because every repeated UOP uses available resources and
minimizes the overall performance of the system. Nevertheless, through the
Use of such possibilities
an increase in net output can be achieved. If e.g. the
Majority of UOPs in a reduced number of passes correctly
accomplished
and only a few UOPs need to be repeated, the overall throughput will be
compared to the case of least common denominator, at
wait all UOPs as long as the worst case lasts
increase.
Wie
in der früheren
Anmeldung gelehrt wird, kann der On-Chip-Cache-Datenspeicher (auch als Ebene-Null-
oder L0-Datencache
bezeichnet) derart verteilt werden, daß sich sein Datenspeicher-Array
in einer Domäne
höheren
Taktes befindet als die Logik, die eine Treffer/Fehlgriff-Bestimmung
bezüglich
des Datenspeicher-Arrays zur Verfügung stellt. Der TLB und die
Tag-Logik können
sich auch in einer langsameren Taktdomäne als das Datenspeicher-Array
befinden. Der TLB und die Tag-Logik können sich in derselben Taktdomäne befinden,
wie die Treffer/Fehlgriff-Logik, müssen dies jedoch nicht.As
in the earlier
Is taught, the on-chip cache memory (also called level zero
or L0 data cache
) are distributed such that its data storage array
in a domain
higher
Tact is located as the logic that determines a hit / miss determination
in terms of
of the data storage array. The TLB and the
Tag logic can
also in a slower clock domain than the datastore array
are located. The TLB and tag logic can be in the same clock domain
however, like the hit / miss logic, they do not have to.
Einer
der Fälle,
bei dem eine Nettoleistungssteigerung erreicht werden kann, ist
der Fall der UOPs, deren Ausführung
auf Daten aus dem L0-Datencache aufbaut oder diesen nutzt. Statt
alle UOPs warten zu lassen, bis deren Datenquelle als gültig erkannt
worden ist, ist es besser, einige UOPs so früh in dem Prozessor spekulativ
zu versenden und auszuführen,
daß noch
nicht bekannt ist – es
jedoch wahrscheinlich ist und vermutet wird – daß sich deren Datenquellen in
dem L0-Datencache befinden. In der Mehrzahl der Fälle wird
der L0-Datencache getroffen und gültige Daten werden als Quelle
verwendet. In einer nur geringen Anzahl von Fällen ist die Datenspekulation
fehlerhaft und die UOPs müssen
wiederholt werden. Auf diese Weise wird die Mehrzahl der UOPs in
einer verringerten Anzahl von Durchläufen korrekt ausgeführt, womit
die Gesamtleistung verbessert wird.One of the cases where a net performance increase can be achieved is the case of UOPs whose execution builds on or uses data from the L0 data cache. Instead of all UOPs to wait until their data source has been recognized as valid, it is better to speculatively ship and execute some UOPs so early in the processor that it is not yet known - but it is probable and suspected - that their data sources are in the L0 data cache. In the majority of cases, the L0 data cache is hit and valid data is used as the source. In a small number of cases, data speculation is corrupted and the UOPs must be repeated. In this way, the majority of UOPs are executed correctly in a reduced number of passes, thus improving overall performance.
4 ist
ein Blockschaltbild einer Ausführungsform
eines Prozessors 400 mit einem ersten (auch als schnellen oder
frühen
bezeichneten) und einem zweiten (auch als langsamen oder späten bezeichneten)
Wiederholpfad, um Datenspekulationen bei der Ausführung von
Anweisungen zu vereinfachen. Wie in 4 gezeigt,
enthält
der Prozessor 400 einen Einplaner/Verteiler 411,
der mit einem Anweisungscache (nicht gezeigt) gekoppelt ist, um
eine erste von dem Anweisungscache empfangene Anweisung einzuplanen
und an den Ausführungskern 431 zur
Ausführung über einen
Selektor (z.B. Multiplexer) 421 zu verteilen. Bei einer
Ausführungsform führt der
Ausführungskern 431 Datenspekulationen bei
der Ausführung
einer eingegebenen Anweisung durch. Wie oben beschrieben ist, kann
die eingegebene Anweisung auch verteilt und ausgeführt werden,
wenn deren Quelldaten nicht bereit oder bekannt sind. Z.B. kann
die Ausführung
der eingegebenen Anweisung Quelldaten erfordern, die sich in dem L0-Datencache
befinden können
oder nicht. Wie oben beschrieben, kann jedoch eine Nettoleistungserhöhung erreicht
werden, indem spekuliert wird, daß sich die für die Ausführung der
eingegebenen Anweisung benötigten
Quelldaten in dem L0-Datencache befinden.
Der Prozessor 400 enthält
weiterhin einen ersten Wiederholmechanismus 441, um die
eingegebenen Anweisungen zu wiederholen, wenn ein Fehler eines ersten
Typs erkannt wird, der anzeigt, daß die Datenspekulation fehlerhaft
ist. In einer Ausführungsform
ist der Fehler des ersten Typs innerhalb eines ersten Zeitraums
erkennbar. Der Prozessor 400 enthält ferner einen zweiten Wiederholmechanismus 441,
um die eingegebene Anweisung zu wiederholen, wenn ein Fehler eines
zweiten Typs erkannt wird, der anzeigt, daß die Datenspekulation fehlerhaft
ist. Bei einer Ausführungsform
ist der Fehler des zweiten Typs innerhalb eines zweiten Zeitraums
erkennbar, der länger
ist als der erste Zeitraum. Wenn ein Fehler des ersten Typs bereits
erkannt wird, ermöglicht
es die vorliegende Erfindung auf diese Weise, daß die falsch ausgeführte Anweisung
wesentlich schneller wiederholt wird, als dies geschehen würde, wenn die Anweisung
bis zur Erkennung eines Fehlers des zweiten Typs hätte warten
müssen.
Wenn festgestellt wird, daß die
Ausführung
der eingegebenen Anweisung fehlerhaft war, da ein Fehler des ersten
Typs erkannt wurde, der anzeigt, daß die Datenspekulation fehlerhaft
ist, sendet der erste Wiederholmechanismus (der schnelle oder frühe Prüfer) 441 die
entsprechende Anweisung über
den Multiplexer 421 zurück an
den Ausführungskern 431 zur
Wiederausführung (Wiederholung),
wie es in 4 gezeigt ist. Entsprechend
sendet der zweite Wiederholmechanismus (der langsame oder späte Prüfer) 451 die
entsprechenden Anweisungen zurück
zur Wiederausführung (Wiederholung) über den
Multiplexer 421 an den Ausführungskern 431, wenn
festgestellt wird, daß die Ausführung der
eingegebenen Anweisung fehlerhaft ist, da ein Fehler des zweiten
Typs erkannt wurde, der anzeigt, daß die Datenspekulation fehlerhaft
ist oder daß andere
Fehlerbedingungen erfüllt
sind. Die Funktionen und Operationen des in der 4 gezeigten
ersten und zweiten Wiederholmechanismus sind nachfolgend ausführlicher
beschrieben. 4 Figure 12 is a block diagram of one embodiment of a processor 400 with a first (also referred to as fast or early) and a second (also called slow or late) repeat path to facilitate data speculation in the execution of instructions. As in 4 shown, the processor contains 400 a scheduler / distributor 411 coupled to an instruction cache (not shown) for scheduling a first instruction received from the instruction cache and to the execution core 431 for execution via a selector (eg multiplexer) 421 to distribute. In one embodiment, the execution core leads 431 Data speculation during the execution of an input instruction by. As described above, the input instruction may also be distributed and executed if its source data is not ready or known. For example, execution of the input instruction may require source data that may or may not be in the L0 data cache. However, as described above, a net power boost can be achieved by speculating that the source data needed to execute the input instruction is in the L0 data cache. The processor 400 also contains a first repeat mechanism 441 to repeat the instructions entered if an error of a first type is detected indicating that the data speculation is faulty. In one embodiment, the first type error is recognizable within a first time period. The processor 400 also includes a second repeating mechanism 441 to repeat the input instruction when an error of a second type is detected indicating that the data speculation is faulty. In one embodiment, the second type error is detectable within a second time period that is longer than the first time period. In this way, if an error of the first type is already detected, the present invention allows the misdirected instruction to be repeated much faster than would have occurred if the instruction had to wait until a second type of error was detected. If it is determined that the execution of the input instruction was erroneous, since a first type error has been detected indicating that the data speculation is erroneous, the first retry mechanism (the fast or early examiner) sends 441 the appropriate instruction via the multiplexer 421 back to the execution core 431 for re - execution (repetition) as it is in 4 is shown. Accordingly, the second repeater mechanism (the slow or late checker) sends 451 the appropriate instructions back to the re-execution (repetition) via the multiplexer 421 to the execution core 431 if it is determined that the execution of the input instruction is erroneous, since an error of the second type has been detected indicating that the data speculation is erroneous or that other error conditions are met. The functions and operations of in the 4 The first and second repeating mechanisms shown are described in more detail below.
5 zeigt
ein detaillierteres Blockschaltbild einer Ausführungsform eines Prozessors 500 mit
ersten und zweiten Wiederholpfaden, wie bereits unter Bezugnahme
auf 4 beschrieben. Wie in 5 gezeigt
ist, weist der Prozessor 500 eine Einplanungseinheit 511 auf,
die von einem Anweisungscache (nicht gezeigt) empfangene Anweisungen
an einen Ausführungskern 531 über einen
Multiplexer 521 zur Ausführung einplant und verteilt.
Die Funktion und Operation des Multiplexers 521 werden
weiter unten ausführlich
beschrieben. Bei einer Ausführungsform
führt der
Ausführungskern 531 Datenspekulationen
bei der Ausführung
von eingegebenen Anweisungen durch, die von dem Multiplexer 521 empfangen
wurden. Der Prozessor 500 weist außerdem eine erste Verzögerungseinheit 541 auf,
um eine erste Kopie der eingegebenen Anweisung zu machen und die
erste Kopie der eingegebenen Anweisung für mindestens einen Taktzyklus
in einer Taktdomäne zu halten.
Der Prozessor 500 weist weiterhin einen ersten Prüfer 545 auf,
der mit der ersten Verzögerungseinheit 541 und
dem Ausführungskern 531 gekoppelt ist.
Bei einer Ausführungsform
ist der erste Prüfer 545 so
konfiguriert, daß er
bestimmt, ob die Datenspekulationen bezüglich einer ersten Menge von Fehlertypen
fehlerhaft ist, und die erste Kopie der eingegebenen Anweisung über einen
ersten Puffer 547 zurück
an den Ausführungskern
zur Wiederausführung
sendet, wenn die Datenspekulationen bezüglich der ersten Menge von
Fehlertypen fehlerhaft ist. Wie in 5 gezeigt,
enthält
der Prozessor 500 weiterhin eine zweite Verzögerungseinheit 551,
die mit der ersten Verzögerungseinheit
gekoppelt und so konfiguriert ist, daß sie eine zweite Kopie der
eingegebenen Anweisung macht und bei einer Ausführungsform für mindestens
einen Taktzyklus in einer zweiten Taktdomäne hält. Der Prozessor 500 weist einen
zweiten Prüfer 555 auf,
der mit der zweiten Verzögerungseinheit 551 und
dem ersten Prüfer 545 gekoppelt
ist. Bei einer Ausführungsform
ist der zweite Prüfer
so konfiguriert, daß er überprüft, ob die
Ausführung
der Anweisung bezüglich
einer zweiten Menge von Fehlertypen fehlerhaft ist, und eine zweite
Kopie der eingegebenen Anweisung über einen zweiten Puffer 557 zurück an den
Ausführungskern 531 zur Wiederausführung sendet,
wenn die Ausführung
bezüglich
der zweiten Menge von Fehlertypen fehlerhaft ist. Wie in 5 gezeigt,
ist der Multiplexer 521 mit der Einplanungseinheit 511,
dem Ausführungskern 531,
der ersten Verzögerungseinheit 541,
dem ersten Prüfer 545,
dem zweiten Prüfer 555,
dem ersten Puffer 547 und dem zweiten Puffer 557 gekoppelt.
Bei einer Ausführungsform
ist der Multiplexer 521 so konfiguriert, daß er die
eingegebene Anweisung und eine nachfolgende Anweisung aus dem Anweisungscache,
die erste Kopie der eingegebenen Anweisung aus dem ersten Prüfer und
die zweite Kopie der eingegebenen Anweisung aus dem zweiten Prüfer empfängt. Bei
einer Ausführungsform
ist der Multiplexer 521 außerdem so konfiguriert, daß er selektiv
entweder die nachfolgende Anweisung, die erste Kopie der eingegebenen
Anweisung oder die zweite Kopie der eingegebenen Anweisung basierend
auf einem festgelegten Prioritätsschema
zur Ausführung an
den Ausführungskern 531 zur
Verfügung
stellt. Bei einer Ausführungsform
wird der zweiten Kopie der eingegebenen Anweisung eine erste Priorität zur Ausführung vergeben,
der ersten Kopie der eingegebenen Anweisung eine zweite Priorität zur Ausführung vergeben
und der nachfolgenden Anweisung eine dritte Priorität zur Ausführung vergeben.
Bei einer Ausführungsform
ist die erste Priorität
höher als die
zweite Priorität
und die zweite Priorität
ist höher als
die dritte Priorität.
Bei einer Ausführungsform
ist die erste Menge von Fehlertypen eine Untermenge der zweiten
Menge von Fehlertypen. Bei einer anderen Ausführungsform ist die erste Menge
von Fehlertypen zu der zweiten Menge von Fehlertypen komplementär. Bei einer
Ausführungsform
enthält
die erste Menge von Fehlertypen einen Fehler, der anzeigt daß ein Ebene-Null-Cache-Speicher-Weg-Prädiktor falsch
gegriffen wurde, einen Fehler, der anzeigt, daß die Ebene-Null-Cache-Speicher-CAM-Erweiterung
nicht übereinstimmt,
und einen Fehler, der anzeigt, daß Speicherweiterleit-Pufferdaten
unbekannt sind. Bei einer Ausführungsform
umfaßt
die zweite Menge von Fehlertypen einen Fehler, der einen TLB-Fehlgriff
anzeigt, und einen Fehler, der einen Seitenfehler anzeigt, oder
jeden anderen Fehlertyp, der anzeigt, daß die Anweisung fehlerhaft
ausgeführt
wurde und daß die
entsprechende Anweisung wiederholt werden muß, etc. Bei einer Ausführungsform
ist die erste Verzögerungseinheit 541 so
konfiguriert, daß sie
die erste Kopie der eingegebenen Anweisung nach einer festgelegten
Anzahl von Taktzyklen in der ersten Taktdomäne an den ersten Prüfer 545 zur
Verfügung
stellt. Bei einer Ausführungsform entspricht
die festgelegte Anzahl der Taktzyklen in der ersten Taktdomäne etwa
der Zeitverzögerung
der eingegebenen Anweisungen durch den Ausführungskern. 5 shows a more detailed block diagram of an embodiment of a processor 500 with first and second repeat paths, as already described with reference to 4 described. As in 5 is shown, the processor instructs 500 a scheduling unit 511 on, the instructions received from an instruction cache (not shown) to an execution core 531 via a multiplexer 521 scheduled for execution and distributed. The function and operation of the multiplexer 521 will be described in detail below. In one embodiment, the execution core leads 531 Data speculation in the execution of input instructions by the multiplexer 521 were received. The processor 500 also has a first delay unit 541 to make a first copy of the input instruction and hold the first copy of the input instruction for at least one clock cycle in a clock domain. The processor 500 also has a first examiner 545 on that with the first delay unit 541 and the execution core 531 is coupled. In one embodiment, the first examiner is 545 configured to determine whether the data speculation regarding a first set of error types is erroneous and the first copy of the input statement via a first buffer 547 sends back to the execution core for re-execution if the data speculation regarding the first set of error types is erroneous. As in 5 shown, the processor contains 500 furthermore a second delay unit 551 coupled to the first delay unit and configured to make a second copy of the input instruction and, in one embodiment, to hold in a second clock domain for at least one clock cycle. The processor 500 has a second examiner 555 on that with the second delay unit 551 and the first examiner 545 ge is coupled. In one embodiment, the second checker is configured to check whether the execution of the instruction is faulty with respect to a second set of error types, and a second copy of the input instruction via a second buffer 557 back to the execution core 531 for re-execution, if the execution is faulty with respect to the second set of error types. As in 5 shown is the multiplexer 521 with the scheduling unit 511 , the execution core 531 , the first delay unit 541 , the first examiner 545 , the second examiner 555 , the first buffer 547 and the second buffer 557 coupled. In one embodiment, the multiplexer is 521 configured to receive the inputted instruction and a subsequent instruction from the instruction cache, the first copy of the input instruction from the first examiner, and the second copy of the input instruction from the second examiner. In one embodiment, the multiplexer is 521 and configured to selectively select either the subsequent instruction, the first copy of the input instruction, or the second copy of the input instruction based on a predetermined priority scheme for execution at the execution core 531 provides. In one embodiment, the second copy of the input instruction is given a first priority for execution, the second copy of the input instruction given a second priority for execution, and the subsequent instruction given a third priority for execution. In one embodiment, the first priority is higher than the second priority and the second priority is higher than the third priority. In one embodiment, the first set of error types is a subset of the second set of error types. In another embodiment, the first set of error types is complementary to the second set of error types. In one embodiment, the first set of error types includes an error indicating that a level-zero cache-path predictor has been mis-captured, an error indicating that the level-zero cache CAM extension does not match, and an error indicating that store forward buffer data is unknown. In one embodiment, the second set of error types includes an error indicating a TLB miss, an error indicating a page fault, or any other type of error indicating that the instruction has failed and that the corresponding instruction must be repeated etc. In one embodiment, the first delay unit is 541 configured to send the first copy of the input instruction to the first validator after a predetermined number of clock cycles in the first clock domain 545 provides. In one embodiment, the fixed number of clock cycles in the first clock domain approximates the time delay of the input instructions by the execution core.
Es
gibt Fälle,
in denen eine andere Einheit innerhalb des Prozessors 500 ihre
eigenen Anweisungen erzeugen kann, um die entsprechenden Funktionen
auszuführen.
Z.B. muß eine
Speichersteuereinheit oder Speicher-Ausführungseinheit (nicht gezeigt)
in dem Prozessor 500 gelegentlich Anweisungen zur Ausführung innerhalb
der eigenen Pipeline versenden, einschließlich vollständiger Speicheroperationen,
oder UOPs, um Seitenteilungen und TLB-Neuladungen zu behandeln,
etc. Diese Arten von Anweisungen werden als hergestellte Anweisungen
bezeichnet, weil sie durch eine Einheit innerhalb des Prozessors 500 erzeugt
oder hergestellt werden und sich nicht in dem Anweisungsfluß aus dem
Anweisungscache befinden. Bei einer Ausführungsform ist der Multiplexer 521 außerdem so
eingekoppelt, daß er
die hergestellten Anweisungen empfängt und sie zur Ausführung zu
dem Ausführungskern 531 sendet.
Da der Multiplexer 521 Anweisungen aus verschiedenen Pfaden
zur gleichen Zeit empfangen kann, wird ein festgelegtes Prioritätsschema
benötigt,
um die Ausführungspriorität zwischen
den Anweisungen zu koordinieren, die aus verschiedenen Pfaden an
den Multiplexer 521 gesendet werden. Z.B. kann der Multiplexer
im gleichen Bearbeitungszeitraum oder Taktzyklus eine nachfolgende
Anweisung aus der Einplanungseinheit 511, eine erste zu wiederholende
Kopie der eingegebenen Anweisung aus dem ersten Prüfer 545,
eine weitere zu wiederholende eingegebene Anweisung aus dem zweiten
Prüfer 555 und
außerdem
eine hergestellte Anweisung aus einer anderen Einheit (z.B. der
Speichersteuer- oder Ausführungseinheit)
empfangen. Bei einer Ausführungsform
verteilt der Multiplexer 521 eine niedrige Priorität an Anweisungen,
die aus dem Anweisungscache kommen, eine mittlere Priorität an Wiederholungsanweisungen,
die aus dem ersten Prüfer kommen,
eine hohe Priorität
an Wiederholungsanweisungen, die aus dem zweiten Prüfer kommen, und
eine höchste
Priorität
an hergestellte Anweisungen.There are cases where another unit is inside the processor 500 can generate their own statements to perform the appropriate functions. For example, a memory controller or memory execution unit (not shown) must be in the processor 500 occasionally send instructions for execution within its own pipeline, including full memory operations, or UOPs to handle page splits and TLB reloads, etc. These types of instructions are referred to as established instructions because they are represented by a unit within the processor 500 created or created and are not in the statement flow from the statement cache. In one embodiment, the multiplexer is 521 also coupled so that it receives the prepared instructions and sends them to the execution core for execution 531 sends. Because the multiplexer 521 In order to receive instructions from different paths at the same time, a fixed priority scheme is needed to coordinate the execution priority between instructions coming from different paths to the multiplexer 521 be sent. For example, in the same processing period or clock cycle, the multiplexer may request a subsequent instruction from the scheduling unit 511 , a first repeat copy of the input statement from the first examiner 545 , another input instruction to be repeated from the second examiner 555 and also receive an established instruction from another unit (eg the memory control or execution unit). In one embodiment, the multiplexer distributes 521 a low priority on instructions coming from the instruction cache, a medium priority on repeat instructions coming from the first examiner, high priority on repeat instructions coming from the second examiner, and a highest priority on established instructions.
Wie
oben erwähnt,
kann bei einer Ausführungsform
die von dem Prüfer 545 erkannte
Fehlerbedingung eine Untermenge der Fehlerbedingungen sein, die
von dem zweiten Prüfer 555 erkannt
werden. In diesem Falle muß der
zweite Prüfer 555 eine stabile
Prüfung
zur Verfügung
stellen, weil eine UOP nicht mehr wiederholt werden kann, sobald
diese den zweiten Prüfer 555 passiert
hat. Bei einer anderen Ausführungsform
können
die Fehlerbedingungen, die durch den ersten Prüfer 545 behandelt
werden, komplementär
zu den Fehlerbedingungen sein, die durch den zweiten Prüfer 555 behandelt
werden. In diesem Falle müßte der
Prüfer 545 eher
eine stabile Prüfung
als eine "hochvertrauenswürdige aber
nicht garantierte" Prüfung, wie
sie oben beschrieben ist, auf dessen Menge von Fehlermöglichkeiten
zur Verfügung
stellen, da der späte
Prüfer
die Ausgabe des frühen
Prüfers
nicht nochmals überprüft. Der
Untermengenmodus ist daher bevorzugt.As mentioned above, in one embodiment, that of the examiner 545 detected error condition be a subset of the error conditions that are the second examiner 555 be recognized. In this case, the second examiner 555 Provide a stable test because a UOP can not be repeated once this becomes the second examiner 555 happened. In another embodiment, the error conditions determined by the first examiner 545 be treated to be complementary to the error conditions by the second examiner 555 be treated. In this case, the examiner would have 545 rather a stable test than a "highly trusted but not guaranteed" test, as described above, on the amount of error possibilities available, as the late examiner does not recheck the output of the early examiner. The subset mode is therefore preferred.
Wie
bereits beschrieben, kann der zweite Prüfer 555 bei Fehlerarten,
die nicht von dem ersten Prüfer 545 behandelt
werden, eine zusätzliche und/oder
komplementäre
Prüfung
zur Verfügung
stellen. Die Entscheidung, welche Fälle durch welchen Prüfer behandelt
werden, kann von verschiedenen Faktoren beeinflußt sein, einschließlich, jedoch
nicht beschränkt
auf, Belange der Prozessorleistung, Komplexität des Designs, Größe des Chips,
etc. Bei einer Ausführungsform
ist der zweite Prüfer 555 verantwortlich
für die
Wiederholung von Anweisungen aufgrund von TLB-Fehlgriffen und anderen
verschiedenen Problemen, die z.B. in der Speichersteuereinheit (nicht
gezeigt) des Prozessors 500 auftreten können. Diese verschiedenen Probleme
können
Probleme oder Fehlerzustände
beinhalten, die in einem kurzen Zeitraum schwer zu erkennen sind,
wie z.B. Cachespeicherfehler, die auf einer vollständigen physikalischen
Adressenprüfung
basieren, fehlerhafte Weiterleitung aus dem Speichern auf der Grundlage einer
vollständigen
physikalischen Adressenprüfung, etc.As already described, the second examiner 555 for error types not from the first examiner 545 be treated to provide an additional and / or complementary exam. The decision as to which cases are handled by which reviewer can be influenced by several factors, including, but not limited to, processor performance concerns, design complexity, chip size, etc. In one embodiment, the second reviewer is 555 responsible for repeating instructions due to TLB misses and other various problems, such as in the memory controller (not shown) of the processor 500 may occur. These various problems can include problems or error conditions that are difficult to detect in a short period of time, such as cache errors based on a full physical address validation, erroneous forwarding from storage based on a full physical address validation, etc.
Bei
einer Ausführungsform
arbeiten der ersten Prüfer 545 und
der zweite Prüfer 555 zusammen, um
den Betrieb des Multiplexers 521 zu steuern. Wie in 5 gezeigt,
führt der
Multiplexer 521 seine entsprechenden Funktionen basierend
auf den Auswahlsignalen, die aus dem ersten Prüfer 545 und dem zweiten
Prüfer 555 empfangen
werden, und optional auf anderen Auswahlsignalen von anderen Einheiten,
wie z.B. der Speichersteuereinheit (nicht gezeigt), die eine hergestellte
Anweisung erzeugt, die nicht in dem Anweisungsfluß von dem
Anweisungscache enthalten ist, durch. Diese verschiedenen Auswahlsignale
werden durch den Multiplexer 521 verwendet, um zu bestimmen,
welche Anweisungen an den Ausführungskern 531 zur
Ausführung
in einem vorgegebenen Ausführungsdurchlauf
gesendet werden sollen, wenn mehr als eine Anweisung aus verschiedenen
Pfaden auf die Ausführung
wartet. Bei einer Ausführungsform
wird die erste Ausführungspriorität an hergestellte
Anweisungen vergeben, den Anweisungen, die aus dem zweiten Prüfer 555 kommen,
wird die zweite Priorität
vergeben, die niedriger ist als die erste Priorität, den Anweisungen, die
aus dem ersten Prüfer
kommen, wird die dritte Priorität
vergeben, die niedriger ist als die zweite Priorität, und über die
Einplanungseinheit 511 aus dem Anweisungscache kommenden
nachfolgenden Anweisungen wird die vierte Priorität gegeben,
die niedriger ist als die dritte Priorität.In one embodiment, the first examiner is working 545 and the second examiner 555 together to the operation of the multiplexer 521 to control. As in 5 shown, the multiplexer performs 521 its corresponding functions based on the selection signals coming from the first examiner 545 and the second examiner 555 and optionally on other selection signals from other units, such as the memory controller (not shown), which generates an established instruction that is not included in the instruction stream from the instruction cache. These different selection signals are passed through the multiplexer 521 used to determine what statements to the execution core 531 to be sent for execution in a given execution pass if more than one instruction from different paths is waiting to be executed. In one embodiment, the first execution priority is given to established instructions, the instructions coming from the second examiner 555 the second priority given is lower than the first priority, the instructions coming from the first auditor are assigned the third priority, which is lower than the second priority, and the scheduling unit 511 subsequent instructions from the instruction cache are given the fourth priority, which is lower than the third priority.
Bei
einer Ausführungsform
würde dieselbe Instanz
der UOP nicht durch den zweiten Prüfer 555 zur langsamen
Wiederholung versendet werden, wenn eine bestimmte UOP zur schnellen
Wiederholung durch den ersten Prüfer 545 versendet
würde, da
ein Duplikat existieren würde.
Um dies zu verhindern, kann bei einer Ausführungsform jede UOP einige
besondere Felder enthalten, die von dem ersten Prüfer 545 und
dem zweiten Prüfer 555 verwendet werden
können,
um die Wiederholungsaktivitäten zwischen
den zwei Prüfern
zu koordinieren. Z.B. kann bei einem Ausführungsbeispiel eine UOP ein Feld
mit der Bezeichnung NEEDS_FAST_REPLAY enthalten, welches durch den
ersten Prüfer 545 gesetzt
wird, um anzuzeigen, daß der
erste Prüfer 545 dieses
für eine
schnelle Wiederholung versenden will. Die jeweilige UOP kann auch
ein anderes Feld mit der Bezeichnung GOT_FAST_REPLAY aufweisen.
Bei einer Ausführungsform
wird das GOT_FAST_REPLAY-Feld durch Zusammenarbeit zwischen dem
ersten Prüfer 545 und
dem zweiten Prüfer 555 gesetzt.
Z.B. wird angenommen, daß der erste
Prüfer
eine erste Anweisung zur schnellen Wiederholung versenden will,
weil ein Fehler eines ersten Typs erkannt wurde. In diesem Falle
wird der erste Prüfer 545 das
entsprechende NEEDS_FAST_REPLAY-Feld der entsprechenden UOP setzen,
um anzuzeigen, daß diese
spezielle UOP auf dem schnellen Wiederholpfad wiedergegeben werden
muß. Wenn
der zweite Prüfer 555 eine zweite
UOP zur langsamen Wiederholung in demselben Taktzyklus versenden
will, wird das GOT_FAST_REPLAY-Feld der ersten Anweisung gelöscht, und
der Multiplexer 521 wird zur Auswahl der UOP mit langsamer
Wiederholung gesteuert, statt derjenigen, die um schnelle Wiederholung
ersuchen. Wenn die erste UOP später
den zweiten Prüfer 555 erreicht,
wird sie zur Wiederholung auf dem langsamen Wiederholpfad versendet,
weil das entsprechende NEEDS_FAST_REPLAY-Feld gesetzt wurde.In one embodiment, the same instance of the UOP would not be checked by the second examiner 555 be sent to slow repetition if a particular UOP for quick repetition by the first examiner 545 would be shipped because a duplicate would exist. To prevent this, in one embodiment, each UOP may contain some special fields that are from the first examiner 545 and the second examiner 555 can be used to coordinate the repetitive activities between the two examiners. For example, in one embodiment, a UOP may include a field labeled NEEDS_FAST_REPLAY, which may be provided by the first reviewer 545 is set to indicate that the first examiner 545 wants to send this for a quick review. The respective UOP may also have another field named GOT_FAST_REPLAY. In one embodiment, the GOT_FAST_REPLAY field is created by collaboration between the first reviewer 545 and the second examiner 555 set. For example, it is assumed that the first examiner wants to send a first instruction for fast repetition because an error of a first type has been detected. In this case, the first examiner 545 Set the appropriate NEEDS_FAST_REPLAY field of the corresponding UOP to indicate that this particular UOP must be replayed on the fast repeater path. If the second examiner 555 To send a second UOP for slow repetition in the same clock cycle, the GOT_FAST_REPLAY field of the first instruction is cleared, and the multiplexer 521 is controlled to select the UOP with slow repetition instead of those requesting fast repetition. If the first UOP later the second examiner 555 is reached, it is sent on the slow repeat path for repetition because the corresponding NEEDS_FAST_REPLAY field has been set.
6 zeigt
ein Flußdiagramm
einer Ausführungsform
eines Verfahrens 600 zur Verwendung von schnellen und langsamen
Wiederholpfaden, um Datenspekulationsoperationen zu vereinfachen.
Das Verfahren 600 startet bei Block 601 und fährt zu Block 605 fort.
Bei Block 605 führt
ein Ausführungskern
oder eine Ausführungseinheit
Datenspekulationen bei der Ausführung
einer eingegebenen Anweisung durch. Das Verfahren 600 läuft dann
weiter von Block 605 zu Block 609. Bei Block 609 wird
festgestellt, ob ein Fehler eines ersten Typs erkannt wurde. Wie
oben beschrieben, tritt bei einer Ausführungsform ein Fehler des ersten
Typs auf, wenn der L0-Datencachespeicher-Weg-Prädiktor falsch
gegriffen wird und sich die Daten daher nicht in dem L0-Datencachespeicher befinden
können,
die L0-Datencache-CAM-Erweiterung nicht übereinstimmt (z.B. wenn der
Weg-Prädiktor
trifft, jedoch die Tags nicht übereinstimmen),
oder Speicherweiterleitungspufferdaten unbekannt sind (z.B. wenn
die zur Weiterleitung von einem Speicherweiterleitungspuffer bestimmten
Daten nicht verfügbar
sind), etc. Bei Block 613 wird die eingegebene Anweisung
wieder ausgeführt,
wenn eine Fehler eines ersten Typs erkannt wurde. Wie oben beschrieben,
wird in dem Falle, daß ein
Fehler eines ersten Typs erkannt wurde, eine erste Prüfereinheit
(z.B. der schnelle oder frühe
Prüfer) eine
Kopie der eingegebenen Anweisung zur Wiederholung oder Wiederausführung auf
dem schnellen Wiederholpfad versenden. Das Verfahren 600 wird dann
bei Block 617 fortgesetzt. Bei Block 617 wird festgestellt,
ob ein Fehler eines zweiten Typs erkannt wurde. Bei dieser Ausführungsform
ist ein zweiter Prüfer
(z.B. ein langsamer oder später
Prüfer)
dafür verantwortlich
zu bestimmen, ob ein Fehler des zweiten Typs aufgetreten ist. Wenn
ein Fehler des zweiten Typs aufgetreten ist, wird die eingegebene
Anweisung bei Block 621 wiederausgeführt. Wie oben beschrieben,
ist der zweite Prüfer
dafür verantwortlich,
eine Kopie der eingegebenen Anweisung zur Wiederholung auf den langsamen
Wiederholpfad zu versenden, wenn ein Fehler des zweiten Typs aufgetreten
ist. 6 shows a flowchart of an embodiment of a method 600 to use fast and slow repeats to simplify data speculation operations. The procedure 600 starts at block 601 and drives to block 605 continued. At block 605 An execution core or unit performs data speculation upon execution of an input statement. The procedure 600 then keep running from block 605 to block 609 , At block 609 it is determined if an error of a first type has been detected. As described above, in one embodiment, an error of the first type occurs when the L0 data cache way predictor is misread and therefore the data can not be in the L0 data cache, the L0 data cache CAM extension does not match (eg, if the path predictor hits, but the tags do not match), or memory routing buffer data is unknown (eg, if the for forwarding from a memory routing buffer voted data are not available), etc. At block 613 the entered instruction is executed again when a first type of error has been detected. As described above, in the event that an error of a first type has been detected, a first checker unit (eg, the fast or early checker) will send a copy of the inputted instruction for retry or re-run on the fast repeat path. The procedure 600 will be at block 617 continued. At block 617 it is determined if an error of a second type has been detected. In this embodiment, a second checker (eg, a slow or late checker) is responsible for determining if an error of the second type has occurred. If an error of the second type has occurred, the input statement becomes Block 621 re-exported. As described above, when a second type error has occurred, the second validator is responsible for sending a copy of the input repeat instruction to the slow repeater path.
Die
Erfindung wurde im Zusammenhang mit den bevorzugten Ausführungsformen
beschrieben. Es ist klar, daß zahlreiche
Abwandlungen, Alternativen, Veränderungen
und Verwendungen für
den Fachmann im Licht der vorangegangenen Beschreibung ersichtlich
sind.The
Invention has been related to the preferred embodiments
described. It is clear that many
Modifications, alternatives, changes
and uses for
the skilled artisan in the light of the foregoing description
are.