DE10085438B4 - Repeating architecture processor with fast and slow repeat paths - Google Patents

Repeating architecture processor with fast and slow repeat paths Download PDF

Info

Publication number
DE10085438B4
DE10085438B4 DE10085438T DE10085438T DE10085438B4 DE 10085438 B4 DE10085438 B4 DE 10085438B4 DE 10085438 T DE10085438 T DE 10085438T DE 10085438 T DE10085438 T DE 10085438T DE 10085438 B4 DE10085438 B4 DE 10085438B4
Authority
DE
Germany
Prior art keywords
instruction
execution
error
copy
type
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE10085438T
Other languages
German (de)
Other versions
DE10085438T1 (en
Inventor
Michael Portland Upton
David A. Portland Sager
Darrell D. Aloha Boggs
Glenn J. Portland Hinton
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US09/503,853 external-priority patent/US6735688B1/en
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE10085438T1 publication Critical patent/DE10085438T1/en
Application granted granted Critical
Publication of DE10085438B4 publication Critical patent/DE10085438B4/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Abstract

Mikroprozessor (400) mit:
einem Ausführungskern (431), der eine Datenspekulation bei der Ausführung einer ersten Anweisung durchführt;
einem ersten Wiederholmechanismus (441), um die erste Anweisung über einen ersten Wiederholpfad zu wiederholen, wenn ein Fehler eines ersten Typs erkannt wird, der anzeigt, daß die Datenspekulation fehlerhaft ist, wobei der erste Wiederholmechanismus eine erste Verzögerungseinheit und einen ersten Prüfer (545) aufweist, wobei die erste Verzögerungseinheit eine erste Kopie der ersten Anweisung erstellt und die erste Kopie für mindestens einen Taktzyklus in einer ersten Taktdomäne hält und wobei der erste Prüfer bestimmt, ob der Fehler des ersten Typs erfaßt wurde, und die erste Kopie der ersten Anweisung zurück an den Ausführungskern zur Wiederholung sendet, wenn der Fehler des ersten Typs erfaßt worden ist; und
einen zweiten Wiederholmechanismus (451), um die erste Anweisung über einen zweiten Wiederholpfad zu wiederholen, wenn ein Fehler eines zweiten Typs erkannt wird, der anzeigt, daß die Datenspekulation...
Microprocessor (400) with:
an execution core (431) that performs data speculation upon the execution of a first instruction;
a first repeating mechanism (441) for repeating the first instruction via a first repeating path when an error of a first type is detected indicating that the data speculation is faulty, the first repeating mechanism comprising a first delay unit and a first checker (545). wherein the first delay unit makes a first copy of the first instruction and holds the first copy in a first clock domain for at least one clock cycle, and wherein the first examiner determines whether the first type error has been detected and the first copy of the first instruction returns sends to the execution core for retry when the first type error has been detected; and
a second repeating mechanism (451) for repeating the first instruction via a second repeating path when a second type error is detected indicating that the data speculation is being ...

Figure 00000001
Figure 00000001

Description

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.

Claims (15)

Mikroprozessor (400) mit: einem Ausführungskern (431), der eine Datenspekulation bei der Ausführung einer ersten Anweisung durchführt; einem ersten Wiederholmechanismus (441), um die erste Anweisung über einen ersten Wiederholpfad zu wiederholen, wenn ein Fehler eines ersten Typs erkannt wird, der anzeigt, daß die Datenspekulation fehlerhaft ist, wobei der erste Wiederholmechanismus eine erste Verzögerungseinheit und einen ersten Prüfer (545) aufweist, wobei die erste Verzögerungseinheit eine erste Kopie der ersten Anweisung erstellt und die erste Kopie für mindestens einen Taktzyklus in einer ersten Taktdomäne hält und wobei der erste Prüfer bestimmt, ob der Fehler des ersten Typs erfaßt wurde, und die erste Kopie der ersten Anweisung zurück an den Ausführungskern zur Wiederholung sendet, wenn der Fehler des ersten Typs erfaßt worden ist; und einen zweiten Wiederholmechanismus (451), um die erste Anweisung über einen zweiten Wiederholpfad zu wiederholen, wenn ein Fehler eines zweiten Typs erkannt wird, der anzeigt, daß die Datenspekulation fehlerhaft ist, wobei der zweite Wiederholmechanismus eine zweite Verzögerungseinheit und einen zweiten Prüfer (555) aufweist, wobei die zweite Verzögerungseinheit einen zweite Kopie der ersten Anweisung erstellt und die zweite Kopie für mindestens einen Taktzyklus in einer zweiten Taktdomäne hält und wobei der zweite Prüfer bestimmt, ob der Fehler des zweiten Typs erfaßt wurde, und die zweite Kopie der ersten Anweisung zurück an den Ausführungskern zur Wiederholung sendet, sofern der Fehler des zweiten Typs erfaßt worden ist.Microprocessor ( 400 ) with: an execution core ( 431 ) performing data speculation in the execution of a first instruction; a first repeating mechanism ( 441 ) to repeat the first instruction via a first repeating path when an error of a first type is detected indicating that the data speculation is erroneous, the first repeating mechanism comprising a first delay unit and a first checker (Fig. 545 wherein the first delay unit makes a first copy of the first instruction and holds the first copy in a first clock domain for at least one clock cycle, and wherein the first examiner determines whether the first type error has been detected and the first copy of the first instruction sends back to the execution core for retry when the first type error has been detected; and a second repeating mechanism ( 451 ) to repeat the first instruction via a second repeating path when an error of a second type is detected indicating that the data speculation is faulty, the second repeater mechanism comprising a second delay unit and a second checker (FIG. 555 ), wherein the second delay unit makes a second copy of the first instruction and holds the second copy in a second clock domain for at least one clock cycle, and wherein the second examiner determines whether the second type error was detected and the second copy of the first instruction sends back to the execution core for retry, if the error of the second type has been detected. Mikroprozessor nach Anspruch 1, wobei der Fehler des ersten Typs innerhalb eines ersten Zeitraums erkennbar ist und der Fehler des zweiten Typs innerhalb eines zweiten Zeitraums erkennbar ist, der länger ist als der erste Zeitraum.The microprocessor of claim 1, wherein the error of the first type within a first period is recognizable and the error of the second type within a second period recognizable is the longer is considered the first period. Mikroprozessor nach Anspruch 1, ferner aufweisend: einen Anweisungs-Cachespeicher (211), um die erste Anweisung und eine nachfolgende Anweisung zu speichern und an den Ausführungskern zur Verfügung zu stellen.The microprocessor of claim 1, further comprising: an instruction cache ( 211 ) to store the first instruction and a subsequent instruction and provide it to the execution core. Mikroprozessor nach Anspruch 3, ferner aufweisend: einen Selektor (421, 521), der so eingekoppelt ist, daß er die nachfolgende Anweisung aus dem Anweisungscache, die erste Kopie der ersten Anweisung aus dem ersten Prüfer, eine weitere Anweisung aus dem zweiten Prüfer empfängt, wobei der Selektor entweder die nachfolgende Anweisung aus dem Anweisungscache, die erste Kopie der ersten Anweisung aus dem ersten Prüfer oder die weitere Anweisung aus dem zweiten Prüfer basierend auf einem festgelegten Prioritätsschema an den Ausführungskern zur Ausführung zur Verfügung stellt.A microprocessor according to claim 3, further comprising: a selector ( 421 . 521 ) coupled to receive the subsequent instruction from the instruction cache, the first copy of the first instruction from the first examiner, another instruction from the second examiner, the selector either the subsequent instruction from the instruction cache, the first copy provides the first instruction from the first examiner or the further instruction from the second examiner based on a predetermined priority scheme to the execution core for execution. Mikroprozessor nach Anspruch 4, wobei der Selektor einen Multiplexer (421, 521) aufweist.A microprocessor according to claim 4, wherein the selector comprises a multiplexer ( 421 . 521 ) having. Mikroprozessor nach Anspruch 4, wobei der weiteren Anweisung eine erste Priorität zur Ausführung vergeben wird, der ersten Kopie der ersten Anweisung eine zweite Priorität zur Ausführung vergeben wird, die niedriger als die erste Priorität ist, und der nachfolgenden Anweisung eine dritte Priorität zur Ausführung vergeben wird, die niedriger als die zweite Priorität ist.A microprocessor according to claim 4, wherein the further Statement a first priority for execution is forgiven, the first copy of the first statement a second priority for execution which is lower than the first priority, and the subsequent instruction is given a third priority to execute, the lower as the second priority is. Mikroprozessor nach Anspruch 1, wobei Fehler des ersten Typs eine Untermenge der Fehler des zweiten Typs sind.A microprocessor according to claim 1, wherein errors of first type are a subset of the errors of the second type. Mikroprozessor nach Anspruch 1, wobei Fehler des ersten Typs komplementär zu Fehlern des zweiten Typs sind.A microprocessor according to claim 1, wherein errors of first type complementary to errors of the second type. Mikroprozessor nach Anspruch 1, wobei der Fehler des ersten Typs aus der Gruppe ausgewählt wird, die aus einem Fehler, der anzeigt, daß ein Ebene-Null-Cache-Speicher-Weg-Prädiktor fehlerhaft gegriffen (missed) wurde, einem Fehler, der anzeigt, daß die Ebene-Null-Cache-Speicher-CAM-Erweiterung nicht übereinstimmt, und einem Fehler, der anzeigt, daß Speicherweiterleitungspufferdaten unbekannt sind, besteht.The microprocessor of claim 1, wherein the first type error is selected from the group consisting of an error indicating that a level zero cache way predictor has been misread, an error indicating that the level zero cache CAM expands There is an error indicating that memory routing buffer data is unknown. Mikroprozessor nach Anspruch 1, wobei der Fehler des zweiten Typs aus der Gruppe ausgewählt wird, die aus einem Fehler, der einen TLB-Fehlgriff anzeigt, und einem Fehler, der eine fehlerhafte Weiterleitung aus einem Speichern basierend auf einer vollständigen physikalischen Adressenprüfung anzeigt, besteht.The microprocessor of claim 1, wherein the error of the second type is selected from the group resulting from an error, indicating a TLB miss, and an error indicating a miss Forwarding from a store based on a full physical address check indicating exists. Mikroprozessor nach Anspruch 1, wobei die erste Verzögerungseinheit die erste Kopie der ersten Anweisung nach einer festgelegten Anzahl von Taktzyklen in der ersten Taktdomäne zur Verfügung stellt, wobei die festgelegte Anzahl von Taktzyklen in der ersten Taktdomäne ungefähr der Zeitverzögerung der ersten Anweisung durch den Ausführungskern entspricht.A microprocessor according to claim 1, wherein the first delay unit the first copy of the first statement after a specified number of clock cycles in the first clock domain, the fixed one Number of clock cycles in the first clock domain about the time delay of the corresponds to the first instruction by the execution core. Mikroprozessor nach Anspruch 4, ferner aufweisend: Mittel zur Herstellung von Anweisungen, die sich nicht in einem Anweisungsfluß aus dem Anweisungscache befinden.The microprocessor of claim 4, further comprising: medium for the preparation of instructions that are not in a flow of instructions from the Statement cache. Mikroprozessor nach Anspruch 12, wobei der Selektor so eingekoppelt ist, daß er die hergestellten Anweisungen empfängt und sie zur Ausführung zu dem Ausführungskern sendet.The microprocessor of claim 12, wherein the selector is so coupled that he receives the prepared instructions and executes them for execution execution core sends. Mikroprozessor nach Anspruch 13, wobei der Selektor eine niedrige Priorität an Anweisungen vergibt, die aus dem Anweisungs-Cachespeicher kommen, eine mittlere Priorität an Wiederholungsanweisungen vergibt, die aus dem ersten Prüfer kommen, eine hohe Priorität an Wiederholungsanweisungen vergibt, die aus dem zweiten Prüfer kommen, und eine höchste Priorität an die hergestellten Anweisungen vergibt.A microprocessor according to claim 13, wherein the selector a low priority assigns instructions that come from the statement cache, a medium priority to repeat instructions that come from the first examiner, one high priority assigns to repeat instructions coming from the second examiner, and a supreme priority awards to the instructions produced. Verfahren (600) zum Ausführen von Anweisungen bei Datenspekulation, umfassend: Durchführen von Datenspekulationen bei der Ausführung einer ersten Anweisung in einem Ausführungskern (605); Wiederausführen der ersten Anweisung über einen ersten Wiederholpfad in Erwiderung eines Fehlers eines ersten Typs, der anzeigt, daß die Datenspekulation fehlerhaft ist (609, 613), indem eine erste Kopie der ersten Anweisung hergestellt und die erste Kopie der ersten Anweisung für wenigstens einen Taktzyklus in einer ersten Taktdomäne gehalten und die erste Kopie der ersten Anweisung zurück zu dem Ausführungskern zur Ausführung gesendet wird; und Wiederausführen der ersten Anweisung über einen zweiten Wiederholpfad in Erwiderung eines Fehlers eines zweiten Typs, der anzeigt, daß die Datenspekulation fehlerhaft ist (617, 621), indem eine zweite Kopie der ersten Anweisung hergestellt und die zweite Kopie der ersten Anweisung für wenigstens einen Taktzyklus in einer zweiten Taktdomäne gehalten und die zweite Kopie der ersten Anweisung zurück zu dem Ausführungskern zur Ausführung gesendet wird.Procedure ( 600 ) for executing instructions in data speculation, comprising: performing data speculation when executing a first instruction in an execution core ( 605 ); Re-executing the first instruction over a first repeating path in response to a first type error indicating that the data speculation is erroneous ( 609 . 613 by making a first copy of the first instruction and holding the first copy of the first instruction in a first clock domain for at least one clock cycle and sending the first copy of the first instruction back to the execution core for execution; and re-executing the first instruction via a second repeating path in response to a second type error indicating that the data speculation is faulty ( 617 . 621 by making a second copy of the first instruction and holding the second copy of the first instruction in a second clock domain for at least one clock cycle and sending the second copy of the first instruction back to the execution core for execution.
DE10085438T 2000-02-14 2000-12-29 Repeating architecture processor with fast and slow repeat paths Expired - Fee Related DE10085438B4 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/503,853 US6735688B1 (en) 1996-11-13 2000-02-14 Processor having replay architecture with fast and slow replay paths
US09/503,853 2000-02-14
PCT/US2000/035590 WO2001061480A1 (en) 2000-02-14 2000-12-29 Processor having replay architecture with fast and slow replay paths

Publications (2)

Publication Number Publication Date
DE10085438T1 DE10085438T1 (en) 2003-01-16
DE10085438B4 true DE10085438B4 (en) 2006-01-05

Family

ID=24003786

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10085438T Expired - Fee Related DE10085438B4 (en) 2000-02-14 2000-12-29 Repeating architecture processor with fast and slow repeat paths

Country Status (7)

Country Link
KR (1) KR100508320B1 (en)
CN (1) CN1208716C (en)
AU (1) AU2001224640A1 (en)
DE (1) DE10085438B4 (en)
GB (1) GB2376328B (en)
HK (1) HK1048872B (en)
WO (1) WO2001061480A1 (en)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7266673B2 (en) * 2003-05-02 2007-09-04 Advanced Micro Devices, Inc. Speculation pointers to identify data-speculative operations in microprocessor
US7165167B2 (en) * 2003-06-10 2007-01-16 Advanced Micro Devices, Inc. Load store unit with replay mechanism
CN100362536C (en) * 2004-09-10 2008-01-16 华中科技大学 Intelligent vehicle condition monitor system based on mobile communication
US20110320781A1 (en) 2010-06-29 2011-12-29 Wei Liu Dynamic data synchronization in thread-level speculation
KR101254911B1 (en) * 2012-01-31 2013-04-18 서울대학교산학협력단 Method, system and computer-readable recording medium for performing data input and output via multiple path
CN103744800B (en) * 2013-12-30 2016-09-14 龙芯中科技术有限公司 Caching method and device towards replay mechanism
KR20200027276A (en) 2018-09-04 2020-03-12 삼성전자주식회사 Electronic device for obtaining images by controlling frame rate for external object moving through point ofinterest and operating method thereof

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19781995T1 (en) * 1996-11-13 1999-08-12 Intel Corp Processor with a repetitive architecture

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3618042A (en) * 1968-11-01 1971-11-02 Hitachi Ltd Error detection and instruction reexecution device in a data-processing apparatus
US6094717A (en) * 1998-07-31 2000-07-25 Intel Corp. Computer processor with a replay system having a plurality of checkers

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19781995T1 (en) * 1996-11-13 1999-08-12 Intel Corp Processor with a repetitive architecture

Also Published As

Publication number Publication date
HK1048872B (en) 2004-10-21
KR20030007425A (en) 2003-01-23
GB2376328A (en) 2002-12-11
DE10085438T1 (en) 2003-01-16
CN1452736A (en) 2003-10-29
HK1048872A1 (en) 2003-04-17
KR100508320B1 (en) 2005-08-17
AU2001224640A1 (en) 2001-08-27
GB0221325D0 (en) 2002-10-23
CN1208716C (en) 2005-06-29
GB2376328B (en) 2004-04-21
WO2001061480A1 (en) 2001-08-23

Similar Documents

Publication Publication Date Title
DE112011101364B4 (en) Troubleshooting multithreaded code
DE2714805C2 (en)
DE69831732T2 (en) METHOD AND DEVICE FOR CORRECTING ERRORS IN A COMPUTER SYSTEM
DE60210633T2 (en) METHOD AND DEVICES FOR IMPROVING THE THROUGHPUT OF EMBEDDED CACHE-BASED PROCESSORS BY SWITCHING TASKS AS A RESPONSE TO CACHE MISCONDUCT
DE10297596B4 (en) A method and apparatus for suspending execution of a thread until a specified memory access occurs
DE2722099C2 (en)
DE4313594C2 (en) microprocessor
DE19914210B4 (en) Method and processor for a staggered execution of an instruction
DE19781995C2 (en) Processor with a repetitive architecture
DE19983330B4 (en) A computer processor having a repeater system with a clocked delay stage and method of processing a command in such processor
DE60010907T2 (en) SRAM CONTROL DEVICE FOR PARALLEL PROCESSOR ARCHITECTURE WITH ADDRESS AND COMMAND QUEUE AND ARBITER
DE69636861T2 (en) Microprocessor with load / store operation to / from multiple registers
DE4206062C2 (en) Instruction pipeline processing
DE102007025397B4 (en) Multi-processor system and method of operation
DE60217157T2 (en) METHOD AND DEVICE FOR BINDING SHADOW TABS TO VECTORIZED INTERRUPTS
EP0186724B1 (en) Test and diagnostic device for a digital calculator
DE19506435C2 (en) Method and apparatus for avoiding write-back conflicts between execution units using a common writeback path
DE4429921A1 (en) Method and device for processor ordering for a processor executing instructions outside the row
DE2243956A1 (en) MEMORY-PROGRAMMED DATA PROCESSING SYSTEM
DE19983098B4 (en) Multi-bit display for handling write-to-write errors and eliminating bypass comparators
DE2855106A1 (en) DEVICE FOR PERFORMING INSTRUCTION BRANCHES
DE2657848A1 (en) CONTROL UNIT FOR A DATA PROCESSING SYSTEM
DE112005002370T5 (en) Execution of control commands in redundant multithreaded environments
DE102013219856A1 (en) Handling potentially invalid results during runahead
DE112013002054T5 (en) Reconfigurable recovery modes in high availability processors

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee