DE112004002365T5 - Übergang vom Befehls-Cache-Speicher zum Ablaufverfolgungs-Cache-Speicher basierend auf Markengrenzen - Google Patents
Übergang vom Befehls-Cache-Speicher zum Ablaufverfolgungs-Cache-Speicher basierend auf Markengrenzen Download PDFInfo
- Publication number
- DE112004002365T5 DE112004002365T5 DE112004002365T DE112004002365T DE112004002365T5 DE 112004002365 T5 DE112004002365 T5 DE 112004002365T5 DE 112004002365 T DE112004002365 T DE 112004002365T DE 112004002365 T DE112004002365 T DE 112004002365T DE 112004002365 T5 DE112004002365 T5 DE 112004002365T5
- Authority
- DE
- Germany
- Prior art keywords
- trace
- cache
- branch
- instruction
- microprocessor
- 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.)
- Ceased
Links
- 230000007704 transition Effects 0.000 title description 2
- 235000013619 trace mineral Nutrition 0.000 claims abstract description 107
- 239000011573 trace mineral Substances 0.000 claims abstract description 106
- 238000000034 method Methods 0.000 claims description 12
- 230000008569 process Effects 0.000 claims description 2
- 238000012545 processing Methods 0.000 description 41
- 239000000872 buffer Substances 0.000 description 15
- 238000004891 communication Methods 0.000 description 7
- 230000001427 coherent effect Effects 0.000 description 5
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 239000003550 marker Substances 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000000630 rising effect Effects 0.000 description 2
- 239000000523 sample Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Debugging And Monitoring (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Mikroprozessor
(100) mit:
einem Befehls-Cache-Speicher (106), der zum Speichern von Befehlen ausgebildet ist;
einer Verzweigungsvorhersageeinheit (132);
einem Ablaufverfolgungs-Cache-Speicher (160), der ausgebildet ist, mehrere Ablaufverfolgungselemente (166) von Befehlen zu speichern; und
einer Vorhabholeinheit (108), die mit dem Befehls-Cache-Speicher (106), der Verzweigungsvorhersageeinheit (132) und dem Ablaufverfolgungs-Cache-Speicher (160) verbunden ist;
wobei die Vorabholeinheit (108) ausgebildet ist, Befehle aus dem Befehls-Cache-Speicher (106) auszulesen, bis die Verzweigungsvorhersageeinheit (132) eine vorhergesagte Zieladresse ausgibt; und
wobei, wenn die Vorabholeinheit (108) eine Übereinstimmung für die vorhergesagte Zieladresse in dem Ablaufverfolgungs-Cache-Speicher (160) erkennt, die Vorabholeinheit (108) ausgebildet ist, ein oder mehrere der mehreren Ablaufverfolgungselemente (166) aus dem Ablaufverfolgungs-Cache-Speicher (160) auszulesen.
einem Befehls-Cache-Speicher (106), der zum Speichern von Befehlen ausgebildet ist;
einer Verzweigungsvorhersageeinheit (132);
einem Ablaufverfolgungs-Cache-Speicher (160), der ausgebildet ist, mehrere Ablaufverfolgungselemente (166) von Befehlen zu speichern; und
einer Vorhabholeinheit (108), die mit dem Befehls-Cache-Speicher (106), der Verzweigungsvorhersageeinheit (132) und dem Ablaufverfolgungs-Cache-Speicher (160) verbunden ist;
wobei die Vorabholeinheit (108) ausgebildet ist, Befehle aus dem Befehls-Cache-Speicher (106) auszulesen, bis die Verzweigungsvorhersageeinheit (132) eine vorhergesagte Zieladresse ausgibt; und
wobei, wenn die Vorabholeinheit (108) eine Übereinstimmung für die vorhergesagte Zieladresse in dem Ablaufverfolgungs-Cache-Speicher (160) erkennt, die Vorabholeinheit (108) ausgebildet ist, ein oder mehrere der mehreren Ablaufverfolgungselemente (166) aus dem Ablaufverfolgungs-Cache-Speicher (160) auszulesen.
Description
- Technisches Gebiet
- Diese Erfindung betrifft das Gebiet der Mikroprozessoren und betrifft insbesondere Mikroprozessoren mit Ablaufverfolgungscache-Speichern.
- Hintergrund
- Befehle, die in einem Mikroprozessor verarbeitet werden, werden als eine Reihe aus Einsen und Nullen codiert. Bei einigen Mikroprozessorarchitekturen werden Befehle mit einer festgelegten Länge codiert, etwa einer gewissen Anzahl an Bytes. Für andere Architekturen, etwa die x86-Architektur, kann die Länge der Befehle variieren. Die x86-Mikroprozessorarchitektur spezifiziert einen Befehlssatz mit variabler Länge (d. h. ein Befehlssatz, in welchem diverse Befehle jeweils durch eine andere Anzahl an Bytes gekennzeichnet sind). Beispielsweise verwenden der 80386 und spätere Versionen der x86-Mikroprozessoren zwischen 1 und 15 Bytes, um einen speziellen Befehl zu kennzeichnen. Befehle besitzen eine Operationscodierung bzw. einen Opcode, der 1 bis 2 Bytes aufweisen kann, und weitere Bytes können hinzugefügt werden, um Adressierungsarten, Operanden und zusätzliche Details hinsichtlich des auszuführenden Befehls anzugeben.
- In einigen Mikroprozessorarchitekturen wird jeder Befehl in eine oder mehrere einfachere Operationen vor dem Ausführen decodiert. Das Decodieren eines Befehls kann auch das Zugreifen auf eine Registerumbenennungszuordnung beinhalten, um das physikalische Register zu bestimmen, das jedem logischen Register in dem Befehl zugeordnet ist und/oder ein physikalisches Register zum Speichern des Ergebnisses des Befehls zu reservieren.
- Typischerweise werden Befehle aus dem Systemspeicher in den Befehls-Cache-Speicher in zusammenhängenden Blöcken geladen. Die Befehle, die in diesen Blöcken enthalten sind, sind in dem Befehls-Cache-Speicher in der kompilierten Reihenfolge gespeichert. Während der Programmausführung werden Befehle häufig in unterschiedlicher Reihenfolge ausgeführt, etwa, wenn eine Verzweigung innerhalb der Codierung ausgeführt wird. In der artigen Fällen können die auf die Verzweigung folgenden Befehle nicht im Allgemeinen aus dem Befehls-Cache-Speicher während des gleichen Zyklus wie der Verzweigungsbefehl abgeholt werden, da diese nicht in zusammenhängenden Plätzen gespeichert sind. In dem Versuch, diese Beschränkung hinsichtlich der Befehlsabholbandbreite zu umgehen, enthalten viele superskalare Mikroprozessoren einen Ablaufverfolgungs-Cache-Speicher.
- Ablaufverfolgungs-Cache-Speicher unterscheiden sich von dem Befehls-Cache-Speicher dahingehend, dass in dem Ablaufverfolgungs-Cache-Speicher abgelegte Befehle typischerweise in Ausführungsreihenfolge im Gegensatz zur kompilierten Reihenfolge abgelegt werden. Das Speichern von Operationen in Ausführungsreihenfolge ermöglicht eine Befehlssequenz, die eine durchgeführte Verzweigungsoperation enthält, auf die während eines einzelnen Taktzyklus von dem Ablaufverfolgungs-Cache-Speicher zugegriffen wird, wohingegen das Zugreifen auf die gleiche Sequenz aus dem Befehls-Cache-Speicher mehrere Zyklen erfordern würde.
- Superskalare Mikroprozessoren decodieren typischerweise mehrere Befehle pro Taktzyklus. Der Anteil an Hardware, der erforderlich ist, um die Adressen jedes Befehls innerhalb einer Gruppe, die gerade decodiert wird, mit den Startadressen der Ablaufverfolgungen in dem Ablaufverfolgungs-Cache-Speicher in Übereinstimmung zu bringen, kann jedoch beträchtlich sein. Dies kann die Schwierigkeit des Bestimmens eines Treffers in dem Ablaufverfolgungs-Cache-Speicher in einigen Fällen deutlich erhöhen.
- Überblick über die Erfindung
- Es sind diverse Ausführungsformen von Verfahren und Systemen zum Einrichten eines Mikroprozessors offenbart, der einen Ablaufverfolgungs-Cache-Speicher enthält und versucht, das Abholen bzw. Auslesen aus dem Befehls-Cache-Speicher an den Ablaufverfolgungs-Cache-Speicher nur bei Marken- bzw. Labelgrenzen zu übergeben. In einer Ausführungsform umfasst ein Mikroprozessor einen Befehls-Cache-Speicher, eine Verzweigungsvorhersageeinheit und einen Ablaufverfolgungs-Cache-Speicher. Die Vorabholeinheit holt Befehle aus dem Befehls-Cache-Speicher ab, bis die Verzweigungsvorhersageeinheit eine vorhergesagte Zieladresse für einen Verzweigungsbefehl ausgibt. Wenn die Verzweigungsvorhersageeinheit eine vorhergesagte Zieladresse ausgibt, überprüft die Vorabholeinheit, ob ein Eintrags übereinstimmend zu der vorhergesagten Zieladresse in dem Ablaufverfol gungs-Cache-Speicher vorliegt. Wenn eine Übereinstimmung gefunden wird, holt die Vorabholeinheit einen oder mehrere Ablaufverfolgungselemente aus dem Ablaufverfolgungs-Cache-Speicher ab, anstatt Befehle aus dem Befehls-Cache-Speicher auszulesen.
- Die Verzweigungsvorhersageeinheit gibt eine vorhergesagte Zieladresse aus, wenn diese einen Verzweigungsbefehl vorfindet, für den die Verzweigung als durchgeführt vorhergesagt ist. Beispielsweise ist dies für einen beliebigen unbedingten Verzweigungsbefehl oder einen beliebigen bedingten Verzweigungsbefehl der Fall, für den die Verzweigungsbedingung als erfüllt vorhergesagt wird. Die Verzweigungsvorhersageeinheit kann ferner eine vorhergesagte Zieladresse ausgeben, wenn eine Komponente des Mikroprozessors erkennt, dass eine Verzweigungsfehlvorhersage aufgetreten ist. Wenn ein bedingter Verzweigungsbefehl bereits in der Ausführungspipeline enthalten ist, kann eine Funktionseinheit die zugehörige Verzweigungsbedingung bewerten, wenn die erforderlichen Daten zulässig sind. In einigen Fällen kann diese Bewertung bewirken, dass die Verzweigung durchgeführt wird, selbst wenn diese als nicht genommen vorhergesagt wurde, wenn anschließend ein Befehl abgeholt wurde. Die umgekehrte Situation kann ebenso eintreten, so dass dies in jedem Falle zu einer Verzweigungsfehlvorhersage führen kann, die die Verzweigungsvorhersageeinheit veranlassen kann, eine Verzweigungszieladresse auszugeben.
- Der Mikroprozessor kann ferner einen Ablaufverfolgungsgenerator aufweisen. In einigen Ausführungsformen kann der Ablaufverfolgungsgenerator Ablaufverfolgungselemente aus Befehlen aufbauen, die ausgeführt und abgeschlossen sind. In anderen Ausführungsformen kann der Ablaufverfolgungsgenerator Ablaufverfolgungselemente aus decodierten oder teilweise decodierten Befehlen vor dem Ausführen erzeugen. In einigen Ausfällen ist ein Ablaufverfolgungselement mit einer Markierung verknüpft, die die Adresse des frühesten Befehls in der Programmreihenfolge enthält, der in dem Ablaufverfolgungseintrag gespeichert ist. Der Ablaufverfolgungseintrag kann ferner ein Ablauf- bzw. Flusssteuerungsfeld aufweisen, das eine Marke bzw. ein Label für einen Befehl enthält, den die Steuerung für jeden Verzweigungsbefehl, der in dem Ablaufverfolgungselement enthalten ist, durchläuft.
- Der Ablaufverfolgungsgenerator wartet, bis dieser einen Befehl empfängt, der einer Verzweigungszieladresse entspricht, bevor mit dem Erzeugen eines neuen Ablaufverfolgungselements begonnen wird. Sobald das Erzeugen eines Ablaufverfolgungselements begon nen ist, überprüft der Ablaufverfolgungsgenerator den Ablaufverfolgungs-Cache-Speicher auf eine Kopie des Ablaufverfolgungselements hin und wenn eine derartige Kopie gefunden wird, kann der Ablaufverfolgungsgenerator das Ablaufverfolgungselement, das gerade erzeugt wird, verwerfen. In einigen Ausführungsformen wird, wenn der Ablaufverfolgungsgenerator eine Kopie des gerade in dem Ablaufverfolgungs-Cache-Speichers erzeugten Ablaufverfolgungselements erkennt, dieser den Ablaufverfolgungs-Cache-Speicher bezüglich eines Eintrags entsprechend dem nächsten zu erzeugenden Ablaufverfolgungselement prüfen und wenn ein derartiger Eintrag gefunden wird, kann der Ablaufverfolgungsgenerator das gerade entstehende Ablaufverfolgungselement verwerfen.
- Kurze Beschreibung der Zeichnungen
- Ein besseres Verständnis der vorliegenden Erfindung kann gewonnen werden, wenn die folgende detaillierte Beschreibung in Verbindung mit den folgenden Zeichnungen studiert wird, in denen:
-
1 einen Mikroprozessor mit einem Ablaufverfolgungs-Cache-Speicher gemäß einer Ausführungsform zeigt; -
2 einen beispielhaften Ablaufverfolgungs-Cache-Eintrag gemäß einer Ausführungsform zeigt; -
3 ein Flussdiagramm für ein Verfahren zum Abholen bzw. Auslesen von Befehlen aus einem Befehls-Cache-Speicher oder von Ablaufverfolgungselementen aus dem Ablaufverfolungs-Cache-Speicher gemäß einer Ausführungsform ist; -
4 ein Flussdiagramm für eine Verfahren zur Erzeugung von Ablaufverfolgungseinträgen gemäß einer Ausführungsform ist; -
5 eine Ausführungsform eines Computersystems zeigt; -
6 eine weitere Ausführungsform eines Computersystems zeigt; - Obwohl die Erfindung diversen Modifizierungen und alternativen Formen unterliegen kann, sind dennoch spezielle Ausführungsformen beispielhaft in den Zeichnungen gezeigt und sind nachfolgend detailliert beschrieben. Es sollte jedoch selbstverständlich sein, dass die Zeichnungen und die detaillierte Beschreibung nicht beabsichtigen, die Erfindung auf die spezielle offenbarte Form einzuschränken, sondern die Erfindung soll alle Modifizierungen, Äquivalente und Alternativen abdecken, die im Bereich und Grundgedanken der vorliegenden Erfindung liegen, wie sie durch die nachfolgenden Patentansprüche definiert ist. Zu beachten ist, dass die Überschriften nur der Strukturierung dienen und nicht dazu gedacht sind, die Beschreibung oder die Patentansprüche einzuschränken oder zu interpretieren. Des weiteren ist zu beachten, dass das Wort „kann" durchwegs in dieser Anmeldung in einem möglichen Sinne (d. h. besitzt die Möglichkeit zu, ist in der Lage zu) besitzt, und nicht in einem erforderlichen Sinne (d. h. muss) verwendet ist. Der Begriff „enthalten" und Ableitungen davon bedeuten „einschließlich mit, ohne einschränkend zu sein". Der Begriff „verbunden" bedeutet „direkt oder indirekt verbunden„ und der Begriff „gekoppelt" bedeutet „direkt oder indirekt gekoppelt".
- Art bzw. Arten zum Ausführen der Erfindung
-
1 ist eine Blockansicht logischer Komponenten, die in einer Ausführungsform eines Mikroprozessors100 enthalten sind, der vom Befehls-Cache-Speicher106 zu einem Ablaufverfolgungs-Cache-Speicher160 bei Marken- bzw. Labelgrenzen übergeht. Der Mikroprozessor100 ist ausgebildet, die in einem Systemspeicher200 gespeicherten Befehle auszuführen. Viele dieser Befehle operieren auf Daten, die in dem Systemspeicher200 abgelegt sind. Zu beachten ist, dass der Systemspeicher200 physikalisch über ein Computersystem verteilt sein kann und von einem oder mehreren Mikroprozessoren100 angesprochen werden kann. In einigen Ausführungsformen ist der Mirkoprozessor100 so gestaltet, dass dieser mit der x86-Architektur kompatibel ist. Zu beachten ist, dass der Mikroprozessor100 auch viele weitere Komponenten zusätzlich zu den gezeigten Komponenten enthalten und/oder mit diesen verbunden sein kann. Beispielsweise können weitere Ebenen aus Cache-Speichern (intern und/oder extern zu dem Mikroprozessor100 ) zwischen dem Mikroprozessor100 und dem Systemspeicher200 vorgesehen sein. In ähnlicher Weise kann der Mikroprozessor100 eine Speichersteuerung in einigen Ausführungsformen enthalten, die zur Steuerung des Systemspeichers200 ausgebildet ist. Des weiteren können in verschiedenen Ausführungsformen die Anbindung logischer Komponenten untereinander unterschiedlich sein. - Der Mikroprozessor
100 enthält einen Befehls-Cache-Speicher106 und einen Daten-Cache-Speicher128 . Der Mikroprozessor100 umfasst eine Vorabholeinheit108 , die mit dem Systemspeicher200 verbunden ist. Die Vorabholeinheit108 liest Befehlscodierung aus dem Systemspeicher200 aus, um diese in dem Befehls-Cache-Speicher106 abzulegen. In einer Ausführungsform ist die Vorabholeinheit108 ausgebildet, Codierungen aus dem Systemspeicher200 sequenzweise in dem Befehlsspeicher106 abzulegen. Die Vorabholeinheit108 benutzt eine Vielzahl spezieller Techniken und Algorithmen zum Vorabholen von Codierung. Die Vorabholeinheit108 kann ferner Befehle aus dem Befehls-Cache-Speicher106 und Ablaufverfolgungselemente aus dem Ablaufverfolgungs-Cache-Speicher160 in eine Ausgabeeinheit104 laden. Befehle können aus dem Befehlsspeicher106 in Reaktion auf eine vorgegebene Befehlsadresse, die nicht in dem Ablaufverfolgungs-Cache-Speicher160 liegt, abgeholt werden. In ähnlicher Weise können Befehle aus dem Systemspeicher200 in Reaktion auf eine vorgegebene Adresse ausgelesen werden, die nicht in dem Befehls-Cache-Speicher106 liegt. - Eine Ausgabeeinheit
104 ist ausgebildet, Befehle aus dem Befehls-Cache-Speicher106 zu empfangen und decodierte und/oder teilweise decodierte Operationen aus dem Ablaufverfolgungs-Cache-Speicher160 zu empfangen. Die Ausgabeeinheit1l04 umfasst eine Decodiereinheit140 , um von dem Befehls-Cache-Speicher106 erhaltene Befehle zu decodieren. Die Ausgabeeinheit104 umfasst ferner eine Decodierungseinheit, die bei der Handhabung mikrocodierter Befehle verwendet wird. - Die Ausgabeeinheit
104 ist ausgebildet, Operationen an eine oder mehrere Ablauforganisationseinheiten118 auszugeben. Die eine oder die mehreren Ablauforganisationseinheiten118 sind angeschlossen, um ausgegebene Operationen der Ausgabeeinheit104 zu empfangen und Operationen an einen oder mehrere Ausführungskerne124 auszugeben. Der eine oder die mehreren Ausführungskerne124 können eine Lade/Speicher- bzw. Schreibeinheit126 aufweisen, die ausgebildet ist, Zugriffe auf den Daten-Cache-Speicher128 auszuführen. Von dem einen oder den mehreren Ausführungskernen124 erzeugte Ergebnisse können auf einen Ergebnisbus130 ausgegeben werden. Diese Ergebnisse können als Operandenwerte für nachfolgend ausgegebene Befehle verwendet werden und/oder in einer Registerdatei116 gespeichert werden. Eine Abschluss- bzw. Rücknahmewarteschlange bzw. Warteschlangeneinheit102 ist mit der einen oder den mehreren Ablauforganisationseinheiten118 und der Ausgabeeinheit104 verbunden. Die Rücknahmewarteschlange ist ausgebildet, zu bestimmen, wenn eine ausgegebene Operation abgeschlossen wird. - Der Befehls-Cache-Speicher
106 kann temporär Befehle vor dem Empfangen in der Ausgabeeinheit104 speichern. Befehlscodes bzw. Codierung kann dem Befehls-Cache-Speicher106 durch Auslesen von Codierung aus dem Systemspeicher100 durch die Vorabholeinheit108 zugeführt werden. Der Befehls-Cache-Speicher106 kann in diversen Konfigurationen eingerichtet sein (beispielsweise teilassoziativ, vollassoziativ oder direkt zuordnend). - Die Ausgabeeinheit
104 kann Signale ausgeben, die bitcodierte Operationen enthalten, die von dem einen oder den mehreren Ausführungskernen124 ausführbar sind, sowie Operandenadressinformationen, unmittelbare Daten und/oder Verschiebungsdaten. Die Decodiereinheit140 kann verwendet werden, um gewisse Befehle in eine oder mehrere Operationen zu decodieren, die in dem einen oder den mehreren Ausführungskernen124 ausführbar sind. Einfache Befehle können einer einzelnen Operation entsprechen. Komplexere Befehle können mehreren Operationen entsprechen. Beim Empfangen einer Operation, die das Aktualisieren eines Registers beinhaltet, kann die Ausgabeeinheit104 einen Registerplatz in der Registerdatei116 reservieren, um spekulative Registerzustände zu speichern (in einer alternativen Ausführungsform kann ein Umordnungspuffer verwendet werden, um einen oder mehrere spekulative Registerzustände für jedes Register zu speichern). Eine Registerzuordnung kann die logischen Registernamen von Quellen- und Zieloperanden den physikalischen Registernamen zuordnen, um die Registerumbenennung zu ermöglichen. Eine derartige Registerzuordnung kann erfolgen, welche Register innerhalb der Registerdatei116 gegenwärtig reserviert oder nicht reserviert sind. - Wenn Operationen durch die Ausgabeeinheit
104 gehandhabt werden und wenn ein erforderlicher Operand in einem Registerplatz ist, kann eine Registeradresseninformation zu einer Registerzuordnung oder zu einem Umordnungspuffer gelenkt werden. Beispielsweise gibt es in der x86-Architektur acht 32-Bit-Logikregister (beispielsweise EAX, EBX, ECX, EDX, EBP, ESI, EDI und ESP). Die physikalische Registerdatei116 (oder ein Umordnungspuffer) enthält Speicherplatz für Ergebnisse, die den Inhalt dieser logischen Register ändern, wodurch eine Ausführung in außerhalb der Reihenfolge möglich ist. Ein physikalisches Register in der Registerdatei116 kann reserviert werden, um das Ergebnis jeder Operation zu speichern, die den Inhalt eines der logischen Register modifiziert. Daher kann bei diversen Zeitpunkten während des Ausführens eines speziellen Programms die Registerdatei116 (oder in alternativen Ausführungsformen ein Umordnungspuffer) ein oder mehrere Register aufweisen, die den spekulativ ausgeführten Inhalt eines vorgegebenen logischen Registers enthalten. - Eine Registerzuordnung kann ein physikalisches Register einem speziellen logischen Register zuordnen, das als ein Zieloperand für eine Operation angegeben ist. Die Registerdatei
116 kann ein oder mehrere zuvor reservierte physikalische Register aufweisen, die einem logischen Register zugeordnet sind, das als ein Quellenoperand in einer vorgegebenen Operation angegeben ist. Die Registerzuordnung kann eine Markierung für das physikalische Register bereitstellen, das diesen lokalen Register zugeordnet wurde. Diese Markierung kann verwendet werden, um auf den Datenwert des Operanden in der Registerdatei116 zuzugreifen oder um den Datenwert über eine Ergebnisweiterleitung auf dem Ergebnisbus130 zu erhalten. Wenn der Operand einer Speicherstelle entspricht, kann der Operandenwert auf dem Ergebnisbus (für die Ergebnisweiterleitung und/oder Speicherung in der Registerdatei126 ) durch die Lade/Schreibeinheit126 bereitgestellt werden. Operandendatenwerte können dem einen oder den mehreren Ausführungskernen124 zugeführt werden, wenn die Operation von einer der Ablauforganisationseinheiten118 ausgegeben wird. Zu beachten ist, dass in alternativen Ausführungsformen Operandenwerte einer entsprechenden Ablauforganisationseinheit118 zugeleitet werden, wenn eine Operation ausgegeben wird (anstatt dass diese einem entsprechenden Ausführungskern124 zugeleitet wird, wenn die Operation ausgegeben wird). - Der Mikroprozessor
100 aus1 unterstützt eine Abarbeitung in ungeordneter Weise. Eine Abschluss- bzw. Rücknahmewarteschlange102 (oder alternativ ein Umordnungspuffer) kann die ursprüngliche Programmreihenfolge für Auslese- und Schreiboperationen an Registern verfolgen und kann damit eine spekulative Befehlsausführung und eine Wiederherstellung einer falsch vorhergesagten Verzweigung ermöglichen und genaue Ausnahmebehandlungen ermöglichen. In einigen Ausführungsformen funktioniert die Rücknahme- bzw. Abschlusswarteschlange102 in ähnlicher Weise wie ein Umordnungspuffer. Anders als ein typischer Umordnungspuffer kann die Rücknahmewarteschlange102 jedoch keinen Datenwertspeicherplatz bereitstellen. In alternativen Ausführungsformen kann die Rücknahmewarteschlange102 mehr wie ein Umordnungspuffer fungieren und kann auch eine Registerumbenennung unterstützen, indem Datenwertspeicherplatz für spekulative Registerzustände bereitgestellt wird. In einigen Ausführungsformen wird die Rücknahmewarteschlange102 in einer „zuerst herein-zuerst-heraus"-Konfiguration eingerichtet, in der Operationen an die „Hinterseite" des Puffers gelangen, wenn sie validisiert werden, wodurch Platz für neue Einträge „vorne" in der Warteschlange geschaffen wird. Wenn Operationen zurückgenommen bzw. abgeschlossen werden, kann die Rücknahmewarteschlange102 Register in der Registerdatei116 wieder freigeben, die nicht mehr benötigt werden, um spekulative Registerzustände zu speichern und kann Signale für eine Registerzuordnung bereitstellen, die angeben, welche Register aktuell verfügbar sind. Durch Bewahren der spekulativen Registerzustände in der Registerdatei116 (oder in alternativen Ausführungsformen in einem Umordnungspuffer), bis die Operationen, die diese Zustände erzeugten, validisiert sind, können die Ergebnisse von Operationen, die gemäß einem falsch vorhergesagten Pfad spekulativ ausgeführt wurden, als unzulässig in der Registerdatei116 erklärt werden, wenn eine Verzweigungsvorhersage nicht korrekt ist. - Die Rücknahmewarteschlange
102 kann ferner Signale, die Programmablaufverfolgungselemente kennzeichnen, an den Ablaufverfolgungsgenerator170 liefern. Der Ablaufverfolgungsgenerator170 kann auch als eine Fülleinheit beschrieben werden. Der Ablaufverfolgungsgenerator170 kann Ablaufverfolgungselemente, die von der Rücknahmewarteschlange102 gekennzeichnet werden, in dem Ablaufverfolgungs-Cache-Speicher160 speichern. Jedes Ablaufverfolgungselement kann Operationen enthalten, die ein Teil mehrerer unterschiedlicher Basisblöcke sind. Ein Basisblock kann als ein Satz aus aufeinanderfolgenden Befehlen definiert werden, wobei, wenn einer der Befehle in einem Basisblock ausgeführt wird, alle Befehle in diesem Basisblock ausgeführt werden. Eine Art eines Basisblocks ist ein Satz aus Befehlen, der nach einem Verzweigungsbefehl beginnt und mit einer weitere Verzweigungsoperation endet. In einigen Ausführungsformen können die Ablaufverfolgungselemente, die in dem Ablaufverfolgungs-Cache-Speicher160 abgelegt sind, mehrere decodierte oder teilweise decodierte Befehle enthalten. Decodierte oder teilweise decodierte Befehle können als Operationen bezeichnet werden. Im hierin verwendeten Sinne ist ein „Ablaufverfolgungselement" eine Gruppe aus Befehlen oder Operationen, die in einem einzelnen Eintrag des Ablaufverfolgungs-Cache-Speichers in dem Ablaufverfolgungs-Cache-Speicher160 gespeichert sind. - Die Vorabholeinheit
108 kann Operationen aus dem Ablaufverfolgungscache-Speicher160 in die Ausgabeeinheit104 laden. In einigen Ausführungsformen können Ablaufverfolgungselemente aus decodierten oder teilweise decodierten Befehlen aus der Rücknahmewarteschlange102 erzeugt werden. Wenn derartige Ablaufverfolgungseinträge aus dem Ablaufverfolgungs-Cache-Speicher ausgelesen werden, kann die Decodiereinheit140 zumindest teilweise umgangen werden, wodurch sich eine geringere Anzahl an Ausgabezyklen für die zwischengespeicherten Ablaufverfolgungsoperationen ergibt. Folglich kann es der Ablaufverfolgungs-Cache-Speicher160 der Ausgabeeinheit104 ermöglichen, die Zeit, die für das nicht vollständige (oder vollständige) Decodieren der zwischengespeicherten Operationen in der Decodiereinheit140 erforderlich ist, über mehrere Ausführungsiterationen aufzuteilen, wenn Ablaufverfolgungselemente mehr als einmal ausgeführt werden. - Die Bit-codierten Operationen und die unmittelbaren Daten, die an den Ausgängen der Ausgabeeinheit
104 bereitgestellt werden, können zu einer oder mehreren Ablauforganisationseinheiten118 geleitet werden. Zu beachten ist, dass im hierin verwendeten Sinne eine Ablauforganisationseinheit eine Einrichtung ist, die erkennt, wenn Operationen für die Abarbeitung bereit sind und diese Operationen an eine oder mehrere Ausführungseinheiten ausgibt. Beispielsweise ist eine Reservierungsstation eine Ablauforganisationseinheit. Jede Ablauforganisationseinheit118 ist in der Lage, Operationsinformation (beispielsweise Bit-codierte Ausführungsbits sowie Operandenwerte, Operandenmarkierungen und/oder unmittelbare Daten) für mehrere anhängige Operationen, die auf die Ausgabe zu einem Ausführungskern124 warten, zu halten. In einigen Ausführungsformen stellt die Ablauforganisationseinheit118 keinen Operandenwertspeicherplatz zur Verfügung. Stattdessen überwacht jede Ablauforganisationseinrichtung ausgegebene Operationen und Ergebnisse, die in der Registerdatei116 verfügbar sind, um zu bestimmen, wann Operandenwerte für das Auslesen durch den einen oder die mehreren Ausführungskerne124 (aus der Registerdatei116 oder den Ergebnisbus130 ) verfügbar sind. In einigen Ausführungsformen ist jede Ablauforganisationseinheit118 mit einem speziellen Ausführungskern124 verknüpft. In anderen Ausführungsformen kann eine einzelne Ablauforganisationseinheit118 Operationen an mehrere Ausführungskerne124 ausgeben. - Die Ablauforganisationseinheiten
118 können zeitweilig Operationsinformation speichern, die von dem einen oder den mehreren Ausführungskernen124 auszuführen ist. Wie zuvor dargelegt ist, kann jede Ablauforganisationseinheit118 Operationsinformation für anhängige Operationen speichern. Ferner kann jede Ablauforganisationseinheit Operationsinformation für Operationen speichern, die bereits ausgeführt sind, die jedoch nochmals ausgegeben werden. Operationen werden an den einen oder die mehreren Ausführungskerne124 zur Ausführung ausgegeben in Reaktion darauf, dass zum Zeitpunkt des Ausführens die Werte des bzw. der erforderlichen Operanden verfügbar sind. Daher kann die Reihenfolge, in der die Operationen ausgeführt werden, anders sein als die Reihenfolge der ursprünglichen Programmbefehlssequenz. - In einer Ausführungsform kann jeder der Ausführungskerne
124 Komponenten enthalten, die ausgebildet sind, Ganzzahlrechenoperationen mit Addition und Subtraktion, sowie Verschiebungen, zyklisches Vertauschen, Logikoperationen und Verzweigungsoperationen auszuführen. Es kann auch eine Fliesskommaeinheit enthalten sein, um Fliesskommaoperationen auszuführen. Eine oder mehrere der Ausführungskerne124 können ausgebildet sein, die Adressenerzeugung für das Laden und Speichern von Speicheroperationen auszuführen, die von der Lade/Schreibeinheit126 auszuführen sind. - Der eine oder die mehreren Ausführungskerne
124 können auch Information hinsichtlich des Ausführens bedingter Verzweigungsbefehle für die Verzweigungsvorhersageeinheit132 bereitstellen. Wenn Information aus dem Ausführungskern124 angibt, dass eine Verzweigungsvorhersage unkorrekt ist, kann die Verzweigungsvorhersageeinheit132 Befehle, die auf die falsch vorhergesagte Verzweigung folgen, und die bereits in der Befehlsverarbeitungspipeline enthalten sind, löschen und die Vorabholeinheit108 anders anweisen. Die neu angewiesene Vorabholeinheit108 kann dann beginnen, den richtigen Satz von Befehlen aus dem Befehls-Cache-Speicher106 , dem Ablaufverfolgungs-Cache-Speicher160 und/oder dem Systemspeicher200 auszulesen. In derartigen Situationen können die Ergebnisse aus Befehlen in der ursprünglichen Programmreihenfolge, die nach dem falsch vorhergesagten Verzweigungsbefehl auftraten, verworfen werden, einschließlich jener Befehle, die spekulativ ausgeführt und zeitweilig in der Lade/Schreibeinheit126 und/oder der Registerdatei116 gespeichert wurden. - Ergebnisse, die von Komponenten innerhalb des einen oder der mehreren Ausführungskerne
124 erzeugt werden, können auf dem Ergebnisbus130 an die Registerdatei116 ausgegeben werden, wenn ein Registerwert aktualisiert wird. Wenn der Inhalt einer Spei cherstelle geändert wird, können die in dem einen oder die mehreren Ausführungskernen124 erzeugten Ergebnisse an die Lade/Schreibeinheit126 gegeben werden. - Ablaufverfolgungs-Cache-Speicher
- Der Ablaufverfolgungsgenerator
170 kann ausgebildet sein, Basisblöcke mit abgeschlossenen Operationen von der Rücknahmewarteschlange102 zu erhalten und diese Basisblöcke in den Ablaufverfolgungselementen in dem Ablaufverfolgungs-Cache-Speicher160 zu speichern. Zu beachten ist, dass in alternativen Ausführungsformen der Ablaufverfolgungsgenerator170 mit dem Eingangsbereich des Mikroprozessors verbunden (beispielsweise vor oder nach der Ausgabeeinheit) und ausgebildet sein kann, Ablaufverfolgungselemente aus Basisblöcken zu erzeugen, die innerhalb der Pipeline an diesem Punkt in dem Mikroprozessor erkannt werden. Während des Erzeugens des Ablaufverfolgungselements kann der Ablaufverfolgungsgenerator170 Transformationen an Basisblöcken aus Operationen ausführen, die von der Rücknahmewarteschlange102 empfangen werden, um Ablaufverfolgungselemente zu bilden. In einigen Ausführungsformen beinhalten diese Transformationen das Umordnen von Operationen und das Löschen von Operationen. -
2 zeigte eine Ausführungsform des Ablaufverfolgungs-Cache-Speichers160 zusammen mit einigen Komponenten des Mikroprozessors100 , die mit dem Ablaufverfolgungs-Cache-Speicher verbunden und/oder mit diesen wechselwirken. Der Ablaufverfolgungs-Cache-Speicher160 kann mehrere Ablaufverfolgungs-Cache-Einträge162 enthalten. Jeder Ablaufverfolgungs-Cache-Eintrag162 speichert eine Gruppe aus Operationen, die als ein Ablaufverfolgungselement166 bezeichnet werden. Zusätzlich zu dem Ablaufverfolgungselement166 kann jeder Ablaufverfolgungs-Cache-Eintrag162 auch eine Kennungsmarkierung164 und eine Ablauf- bzw. Flusssteuerungs- (F. C.) Information168 enthalten. Der Ablaufverfolgungs-Cache-Eintrag162 kann ein Flusssteuerungsfeld168 für jede in dem Ablaufverfolgungselement enthaltene Verzweigung enthalten. Jedes Steuerungsfeld168 kann Adresseninformationen beinhalten, um zu bestimmen, welcher Befehl als nächstes für die Fälle auszuführen ist, in denen die Verzweigung durchgeführt und nicht durchgeführt wird. Beispielsweise kann das Flusssteuerungsfeld168a einem ersten Verzweigungsbefehl, der in den Ablaufverfolgungs-Cache-Eintrag162 enthalten ist, entsprechen. Diese erste Verzweigung kann bedingt sein und das Flusssteuerungsfeld168a kann zwei Adressen enthalten. Eine der Adressen kann die Adresse des Befehls sein, der nach dem Verzwei gungsbefehl auszuführen ist, wenn die Bedingung wahr ist. Die andere Adresse kann den Befehl angeben, der als nächstes auszuführen ist, wenn die Verzweigungsbedingung nicht wahr ist. Das Flusssteuerungsfeld168b kann einem zweiten Verzweigungsbefehl entsprechen, der in dem Ablaufverfolgungs-Cache-Eintrag162 enthalten ist. Diese Verzweigung kann unbedingt sein, und daher kann das Flusssteuerungsfeld168b lediglich die Adresse des Befehls enthalten, zu dem der Steuerungsablauf in jedem Falle verzweigt. - Die Markierung
164 kann ähnlich zu einer Markierung in dem Befehls-Cache-Speicher106 sein, wodurch die Vorabholeinheit108 bestimmen kann, ob eine gegebene Operation den Ablaufverfolgungs-Cache-Speicher160 betrifft oder nicht. Beispielsweise kann die Markierung164 alle oder einige der Adressenbits enthalten, die eine Operation in dem Ablaufverfolgungs-Cache-Eintrag kennzeichnet (beispielsweise kann die Markierung die Adresse der frühesten Operation in der Programmreihenfolge enthalten, die in diesen Ablaufverfolgungselement gespeichert ist, enthalten). In einigen Ausführungsformen kann die Markierung ausreichend Information enthalten, so dass einige Operationen innerhalb eines Ablaufverfolgungselements unabhängig adressierbar sind. Beispielsweise kann die erste Operation innerhalb jedes Basisblocks durch in der Markierung gespeicherte Information adressierbar sein. In anderen Ausführungsformen ist lediglich die erste Operation innerhalb eines Ablaufverfolgungselements adressierbar. - In einigen Ausführungsformen kann die Flusssteuerungsinformation
168 ein Label bzw. eine Marke für jede Verzweigungsoperation, die in dem Ablaufverfolgungselement enthalten ist, aufweisen. Die Marke kann eine Kennzeichnung sein, die die Adresse angibt, zu der die Steuerung verzweigen sollte. Beispielsweise kann ein Abschnitt aus Assemblercodierung einen Verzweigungsbefehl enthalten, um die Steuerung des Ablaufs des Ausführens eines Befehls, der nicht dem Befehl entspricht, der unmittelbar auf die Verzweigung in der Reihenfolge erfolgt, in der die Codierung geschrieben ist, übergeben. Für die Bequemlichkeit das Codierens lassen es einige Compiler zu, dass ein oder mehrere alphanumerische Zeichen in dem Verzweigungsbefehl enthalten sind. Dieses Label bzw. Marke kann auch in der Assemblercodierung, die unmittelbar dem Befehl vorausgeht, der von dem Verzweigungsbefehl betroffen ist, enthalten sein. Während des Kompilierens der Sendercodierung kann der Compiler die Adresse des Befehls bestimmen, der von dem Verzweigungsbefehl angesprochen wird, und kann diese Adresse gegen die alphanumerischen Symbole austauschen, die in dem Verzweigungsbefehl enthalten sind, und die Adresse des Zielbefehls kann nun das Label werden. In anderen Ausführungsformen können Labels bzw. Marken verwendet werden, um einen beliebigen Basisblock aus Befehlen zu kennzeichnen. Eine Labelgrenze ist dann ein beliebiger Punkt in der Codierung, an den der Ablauf der Steuerung an einen Befehl übergeben wird, dessen Adresse ein Label bzw. eine Marke ist. Das Erzeugen von Ablaufverfolgungselementen und Versuche, den Ablaufverfolgungs-Cache-Speicher anzusprechen, kann bei der Ausführung von Befehlen an Labelgrenzen auftreten. - In vielen Implementierungen kann ein Ablaufverfolgungs-Cache-Eintrag
162 mehrere Verzweigungsbefehle und mehrere Flusssteuerungsfelder168 enthalten. Jedes Feld einer Flusssteuerungsinformation168 kann mit einer speziellen Verzweigungsoperation verknüpft sein. Beispielsweise ist in einer Ausführungsform ein einzelner Flusssteuerungsspeicherplatz168a innerhalb eines Ablaufverfolgungselements mit der ersten Verzweigungsoperation in dem Ablaufverfolgungselement verknüpft und der andere Flusssteuerungsinformationsspeicherplatz168b ist mit der zweiten Verzweigung in dem Ablaufverfolgungselement verknüpft. Alternativ kann die Flusssteuerungsinformation Markierungen oder andere Informationen enthalten, die die Verzweigungsoperation kennzeichnen, mit der diese Flusssteuerungsinformation verknüpft ist. In noch anderen Ausführungsformen kann eine Verzweigungsvorhersage und/oder Information, die angibt, welche Flusssteuerungsinformation welcher Verzweigungsoperation entspricht, mit dieser Verzweigungsoperation in dem Operationsspeicherplatz166 gespeichert werden. - Befehls-/Verfolgungselements-Abholung
- Die Vorabholeinheit
108 kann eine Zeile aus Befehlen aus dem Speicher200 auslesen und die Zeile in dem Befehls-Cache-Speicher106 ablegen. Die Befehle können in dem Befehls-Cache-Speicher106 in der kompilierten Reihenfolge gespeichert werden. Abhängig von den Laufzeitbedingungen kann die Ausführungsreihenfolge für Befehle in dem Befehls-Cache-Speicher106 häufig von der kompilierten Reihenfolge abweiche. Beispielsweise kann das Ausführen eines Verzweigungsbefehls aus dem Befehls-Cache-Speicher106 bewirken, dass der Ablauf der Steuerung zu einem Befehl springt, der von dem Verzweigungsbefehl durch viele dazwischenliegende Befehle gemäß der kompilierten Reihenfolge getrennt ist. Das Ziel des Verzweigungsbefehls ist daher nicht unter Umständen in dem Befehls-Cache-Speicher106 enthalten. Dies kann die Vorabholeinheit108 veranlassen, eine weitere Zeile an Befehlen aus dem Systemspeicher200 auszulesen. Während der Zeitdauer, in der die nächste Zeile aus Befehlen in den Befehls-Cache-Speicher eingeladen wird, sind die Ausführungskerne124 unter Umständen untätig und warten auf die nächsten Operationen. - In einigen Ausführungsformen verwendet die Vorabholeinheit
108 einen Teil der Verzweigungszieladresse, um einen Index für den Ablaufverfolgungs-Cache-Speicher160 zu erzeugen. Wenn ein gültiger Ablaufverfolgungs-Cache-Eintrag162 an der indizierten Stelle existiert, kann die Vorabholeinheit das Maskierungsfeld164 mit der Verzweigungszieladresse vergleichen. Wenn die Markierung mit der Zieladresse übereinstimmt, dann lädt die Vorabholeinheit108 das Ablaufverfolgungselement166 zur Abarbeitung in die Ausgabeeinheit104 . Abhängig von der von den Ausführungskernen und/oder der Verzweigungsvorhersageeinheit erhaltenen Information kann die Vorabholeinheit108 weiterhin die Ablaufverfolgungselemente aus dem Ablaufverfolgungs-Cache-Speicher160 für die Ausgabeeinheit104 abholen, bis kein Eintrag mehr gefunden wird, dessen Markierungsfeld der Adresse des nächsten auszuführenden Befehls entspricht. Die Vorabholeinheit108 kann dann weiterhin Befehle aus dem Befehls-Cache-Speicher106 auslesen. -
3 ist ein Flussdiagramm für ein Verfahren zum Abholen von Befehlen aus einem Befehls-Cache-Speicher oder Ablaufverfolgungselemente aus einem Ablaufverfolgungs-Cache-Speicher gemäß einer Ausführungsform. Wie im Block301 gezeigt ist, können ein oder mehrere Befehle aus dem Befehls-Cache-Speicher abgeholt werden. In einigen Fällen führt die Verarbeitung der abgeholten Befehle nicht zur Erzeugung einer Verzweigungszieladresse. Dies kann beispielsweise in Fällen zutreffen, wenn keine Verzweigungsoperationen aus den Befehlen decodiert werden oder wenn decodierte Verzweigungsoperationen nicht ausgeführt werden. Unter derartigen Umständen wird die Befehlsauslesung aus den Befehls-Cache-Speicher weiter fortgeführt, wie in303 gezeigt ist. - In anderen Fällen kann die Verarbeitung der abgeholten Befehle zu der Erzeugung einer Verzweigungszieladresse führen. Wenn beispielsweise die Bedingung für eine bedingte Verzweigung als erfüllt vorhergesagt wird, oder wenn eine unbedingte Verzweigung angetroffen wird, oder wenn eine Verzweigungszielfehlvorhersage auftritt, kann eine Verzweigungszieladresse erzeugt werden. In diesen Fällen wird der Ablaufverfolgungs-Cache-Speicher untersucht. Ein Teil der erzeugten Verzweigungszieladresse kann verwendet werden, um den Ablaufverfolgungs-Cache-Speicher zu indizieren, und wenn ein zulässiger Ein trag an der entsprechenden Stelle gespeichert ist, wird das Markierungsfeld des Eintrags mit einem weiteren Teil der Verzweigungszieladresse verglichen, wie dies bei
307 gezeigt ist. Wenn eine Übereinstimmung vorliegt, kann die Vorabholeinheit das Ablaufverfolgungselement aus dem entsprechenden Eintrag in dem Ablaufverfolgungs-Cache-Speicher in die Ausgabeeinheit einladen, wie dies bei309 gezeigt ist. Die Vorabholeinheit fährt dann fort, Ablaufverfolgungselemente abzuholen, bis sie eine Adresse antrifft, die nicht den Ablaufverfolgungs-Cache-Speicher betrifft. Ab diesem Zeitpunkt kann das Abholen dann auf der Grundlage des Befehls-Cache-Speichers fortgesetzt werden. - Bilden des Ablaufverfolgungselements
- Wie zuvor dargelegt ist, wird das Abholen eines Verzweigungsbefehls aus dem Befehls-Cache-Speicher, für den die Verzweigung als ausgeführt vorhergesagt wird, dazu führen, dass die Vorabholeinheit das Auslesen der Zeile initiiert, die das Ziel des Verzweigungsbefehls enthält. Dies kann zu einer merklichen Verzögerung bei der Zuführung von Befehlen zu der Ausgabeeinheit führen, insbesondere, wenn die das Ziel des Verzweigungsbefehls speichernde Zeile nicht in dem Befehlsspeicher vorhanden ist.
- Bei Abschluss des Verzweigungsbefehls und der nachfolgenden Befehle kann der Ablaufverfolgungsgenerator
170 ein Ablaufverfolgungselement erzeugen, das die Labelgrenze der Verzweigung überspannt. Obwohl der Verzweigungsbefehl und der Zielbefehl in unterschiedlichen Zeilen des Befehls-Cache-Speichers abgelegt sein können, können sie gleichzeitig abgeschlossen werden, und der Ablaufverfolgungsgenerator170 kann ein Ablaufverfolgungselement erzeugen, das die Operationen entsprechend dieser beiden Befehle enthält. - Wenn der Teil der Codierung mit dem Verzweigungsbefehl nachfolgend wieder durchlaufen wird, kann die Vorabholeinheit das entsprechende Ablaufverfolgungselement aus dem Ablaufverfolgungscache-Speicher
160 auslesen, anstatt die Befehle aus dem Befehls-Cache-Speicher106 auszulesen. Da die durch den Verzweigungsbefehl betroffenen Operationen bereits in dem Spurablaufverfolgungselement enthalten sind, kann das Ablaufverfolgungselement wesentlich schneller ausgeführt werden im Vergleich zum Ausführen der ursprünglichen Befehle aus dem Befehls-Cache-Speicher106 . - Die Zunahme der Mikroprozessorleistung, die durch das Abholen aus dem Ablaufverfolgungs-Cache-Speicher
160 anstatt aus dem Befehls-Cache-Speicher106 erreicht wird, kann proportional zur Länge des Ablaufverfolgungselements (die Anzahl der in dem Ablaufverfolgungselement enthaltenen Operationen) sein. Daher ist es wünschenswert, Ablaufverfolgungselemente zu erzeugen, die möglichst viele Operationen enthalten. In einigen Ausführungsformen bildet der Ablaufverfolgungsgenerator170 Ablaufverfolgungselemente aus abgeschlossenen Operationen, die aus dem Befehls-Cache-Speicher106 ausgelesen werden. Wenn die Vorabholeinheit von dem Abholen von Befehlen aus dem Befehls-Cache-Speicher zum Abholen von Ablaufverfolgungselementen aus dem Ablaufverfolgungs-Cache-Speicher übergeht, beendet der Ablaufverfolgungsgenerator die Erzeugung von Ablaufverfolgungselementen. Daher kann es wünschenswert sein, die Rate zu beschränken, mit der das Umschalten vom Abholen aus dem Befehls-Cache-Speicher zu dem Ablaufverfolgungs-Cache-Speicher stattfindet. Dies kann erreicht werden, indem die Versuche beschränkt werden, mittels der Vorabholeinheit den Ablaufverfolgungs-Cache-Speicher an Labelgrenzen auszulesen. - Die Länge der Ablaufverfolgungselemente, die von dem Ablaufverfolgungsgenerator
170 erzeugt werden, kann umgekehrt proportional zur Häufigkeit sein, mit der die Vorabholeinheit108 versucht, den Ablaufverfolgungs-Cache-Speicher160 auszulesen. Wenn beispielsweise ein Versuch unternommen wird, den Ablaufverfolgungs-Cache-Speicher für jeden Befehl auszulesen, der aus dem Befehls-Cache-Speicher ausgelesen wird, kann die Vorabholeinheit häufig entsprechende Ablaufverfolgungselemente erkennen und vom Auslesen von Befehlen auf das Auslesen von Ablaufverfolgungselementen umschalten. Der Ablaufverfolgungsgenerator kann das Erzeugen von Ablaufverfolgungselementen beenden und ein Ablaufverfolgungselement erzeugen, das jene Operationen mit einschließt, die seit dem vorhergehenden Umschalten abgeschlossen sind. Wenn der vorhergehende Treffer für den Ablaufverfolgungs-Cache-Speicher innerhalb einiger weniger Befehle auftrat, dann kann die Anzahl der inzwischen abgeschlossenen Operationen ebenso klein sein, woraus das Erzeugen eines Ablaufverfolgungselements resultiert, das eine geringe Anzahl an Operationen enthält. - Das Abholen und Ausführungen eines kurzen Ablaufverfolgungselements, das in der obigen Weise erzeugt wird, kann zu einem weiteren Anstieg der Häufigkeit führen, mit der die Vorabholeinheit
108 zwischen dem Befehls-Cache-Speicher und dem Ablaufverfolgungs- Cache-Speicher hin- und herschaltet. Wenn beispielsweise die Ablaufverfolgungserzeugungseinheit170 das Erzeugen eines Ablaufverfolgungselements auf Grund eines Umschaltens des Abholens von den Befehls-Cache-Speicher zu dem Ablaufverfolgungs-Cache-Speicher beendet, sind unter Umständen einige Operationen, die in das abgeschlossene Ablaufverfolgungselement eingebaut hätten werden können, nicht darin enthalten, da diese vielleicht vor den Zeitpunkt des Umschaltens noch nicht abgeschlossen sind. Das Ausführen des vorzeitig beendeten Ablaufverfolgungselements kann zu einem Umschalten von dem Ablaufverfolgungs-Cache-Speicher zu dem Befehls-Cache-Speicher führen, um damit die fehlenden Befehle auszulesen. Das Ausführen kurzer Ablaufverfolgungselemente ist unter Umständen von geringerem Vorteil im Hinblick auf das Verbessern der Mikroprozessoreffizienz im Vergleich zum Ausführen der ursprünglichen Befehle aus dem Befehls-Cache-Speicher. - In einigen Ausführungsformen kann die Vorabholeinheit
108 einen Versuch verzögern, um den Ablaufverfolgungs-Cache-Speicher anzusprechen, bis die Verzweigungsvorhersageeinheit132 die Adresse eines Zielbefehls erzeugt. Das Abholen eines Verzweigungsbefehls aus dem Befehls-Cache-Speicher kann die Verzweigungsvorhersageeinheit132 veranlassen, vorherzusagen, ob die Verzweigung durchgeführt wird oder nicht, wenn der Befehl ausgeführt wird. Wenn die Vorhersage so ist, dass die Verzweigung durchgeführt wird, dann erzeugt die Verzweigungsvorhersageeinheit die Adresse des Befehls, zu dem der Verzweigungsbefehl springt. Die Verzweigungsvorhersageeinheit132 kann ferner die Adresse des Befehls erzeugen, der als nächstes nach einem Verzweigungsbefehl auszuführen ist, wenn eine Verzweigungsfehlvorhersage auftritt. Wenn beispielsweise ein bedingter Verzweigungsbefehl ausgelesen wird und die Verzweigungsvorhersageeinheit132 vorhersagt, dass die Verzweigung ausgeführt wird, sich aber bei der Auflösung der Bedingung herausstellt, dass die Verzweigung nicht hätte genommen werden sollen, kann die Vorabholeinheit108 die zuvor erzeugte Adresse des nächsten Befehls, der auf die bedingte Verzweigung in der kompilierten Reihenfolge erfolgt, als die Adresse des nächsten auszulesenden Befehls verwenden. Durch Verzögern des Versuches, den Ablaufverfolgungs-Cache-Speicher160 anzusprechen, bis das Verzweigungsziel für Verzweigungen, die als durchgeführt vorhergesagt werden, oder für Verzweigungen, die falsch vorhergesagt sind, verfügbar ist, können längere Ablaufverfolgungselemente erzeugt werden. - In einigen Ausführungsformen, in denen die Vorabholeinheit auf eine Labelgrenze wartet, bevor ein Zugrigg auf den Ablaufverfolgungs-Cache-Speicher versucht wird, kann die zum Vergleichen verwendete Adresse normalerweise ein Verzweigungsziel sein. Wie zuvor beschrieben ist, kann eine Umschaltung des Abholens von dem Ablaufverfolgungs-Cache-Speicher zu dem Befehls-Cache-Speicher zu einem beliebigen Zeitpunkt durchgeführt werden, um im Ablaufverfolgungs-Cache-Speicher fehlende Befehle auszulesen. Daher kann der Strom an zurückgenommenen bzw. abgeschlossenen Befehlen zu dem Ablaufverfolgungsgenerator
170 an einem beliebigen Punkt hinsichtlich der Labelgrenzen beginnen. In Ausführungsformen, in denen ein Auslesen des Ablaufverfolgungs-Cache-Speichers nur an Labelgrenzen versucht wird, kann der Beginn des Erzeugens eines Ablaufverfolgungselements verzögert werden, so dass dies auch mit Labelgrenzen übereinstimmt. Dies kann sicherstellen, dass die Adressen der ersten Befehle von Ablaufverfolgungselementen Labels bzw. Marken sind. - Wenn der Ablaufverfolgungsgenerator eine Suche in dem Ablaufverfolgungs-Cache-Speicher ausführt, und wenn ein existierender Eintrag gefunden wird, der mit der Markierung des neu fertiggestellten Ablaufverfolgungselements übereinstimmt, kann der übereinstimmende Eintrag als unzulässig erklärt werden, das neu fertiggestellte Ablaufverfolgungselement wird verworfen und der Ablaufverfolgungsgenerator wartet auf Operationen von der nächsten Verzweigungsgrenze, die abgeschlossen sind, bevor das Erzeugen eines neuen Ablaufverfolgungselements begonnen wird. In einigen Ausführungsformen wird, wenn der Ablaufverfolgungsgenerator eine doppelte Kopie des betrachteten Ablaufverfolgungselements in dem Ablaufverfolgungs-Cache-Speicher erkennt, der Ablaufverfolgungs-Cache-Speicher auf einen Eintrag hin überprüft, der dem nächsten zu erzeugenden Ablaufverfolgungselement entspricht, und wenn ein derartiger Eintrag gefunden wird, kann der Ablaufverfolgungsgenerator das betrachtete Ablaufverfolgungselement verwerfen. In anderen Ausführungsformen wartet die Ablaufverfolgungseinheit bis zwei oder mehr nacheinander erzeugte Ablaufverfolgungseinträge bestehende Einträge in dem Ablaufverfolgungs-Cache-Speicher duplizieren, bevor die Ablaufverfolgungselemente verworfen und der Beginn eines neuen Aufbaus bis zum Erreichen einer Labelgrenze verzögert wird. In noch anderen Ausführungsformen werden, wenn doppelt existierende Einträge in dem Ablaufverfolgungs-Cache-Speicher erkannt werden, diese als unzulässig erklärt.
-
4 ist ein Flussdiagramm für ein Verfahren zum Aufbau von Ablaufverfolgungselementen gemäß einer Ausführungsform. Block351 zeigt, wenn ein Befehl empfangen wird. Bei353 werden, wenn ein Ablaufverfolgungselement oder mehrere Elemente, die das betrachtete Ablaufverfolgungselement duplizieren und/oder wenn das nächste zu erzeugende Ablaufverfolgungselement in dem Ablaufverfolgungs-Cache-Speicher noch nicht erkannt sind, die Operationen entsprechend dem Befehl verwendet, um freie Operationspositionen für ein Ablaufverfolgungselement zu füllen, wie dies bei355 gezeigt ist. Wenn andererseits ein oder mehrere doppelte Ablaufverfolgungselemente im Entscheidungsblock353 erkannt werden, kann der Befehl daraufhin überprüft werden, ob dieser einer Verzweigungsmarke bzw. einem Verzweigungslabel entspricht. Wenn im Entscheidungsblock357 bestimmt wird, dass der Befehl nicht einer Verzweigungsmarke entspricht, kann der Befehl verworfen werden. Befehle können fortgesetzt verworfen werden, bis ein Befehl entsprechend einer Verzweigungsmarke empfangen wird. - Wie bei
357 gezeigt ist, wird, wenn eine der empfangenen Operationen als die erste Operation an einer Verzweigungsmarke erkannt wird, das Füllen der Operationspositionen in einem neuen Ablaufverfolgungselement begonnen, wie bei359 gezeigt ist. Block361 zeigt, dass wenn ein Ablaufverfolgungselement vollständig ist, der Ablaufverfolgungs-Cache-Speicher untersucht werden kann, wie bei363 gezeigt ist, um entsprechende Einträge zu erkennen. Wenn ein passender Eintrag erkannt wird, kann das unmittelbar zuvor fertiggestellte Ablaufverfolgungselement verworfen werden, wie bei367 gezeigt ist. Wenn kein doppelter Eintrag im Block363 erkannt wird, kann das neue Ablaufverfolgungselement in einem Ablaufverfolgungs-Cache-Eintrag gespeichert werden. In einigen Ausführungsformen wird der doppelte Eintrag nicht verworfen, bis mehrere doppelte aufeinanderfolgende Einträge erkannt werden. - Beispielhafte Computersysteme
-
5 zeigt eine Blockansicht einer Ausführungsform eines Computersystems400 , das einen Mikroprozessor100 aufweist, der mit mehreren Systemkomponenten über eine Busbrücke402 verbunden ist. Der Mikroprozessor100 kann eine Ausführungsform eines Ablaufverfolgungs-Cache-Generators170 aufweisen, wie sie zuvor beschrieben ist. Andere Ausführungsformen eines Computersystems sind möglich und sind hierin mit eingeschlossen. In den dargestellten System ist ein Hauptspeicher404 mit der Busbrücke402 über einen Speicherbus406 gekoppelt, und eine Graphiksteuerung408 ist mit der Busbrücke402 über einen AGP-Bus410 verbunden. Mehrere PCI-Einrichtungen412a bis412b sind mit der Busbrücke402 über einen PCI-Bus414 gekoppelt. Eine sekundäre Busbrücke416 kann vorgesehen sein, um eine elektrische Schnittstelle mit einem oder mehreren EISA- oder ISA-Einrichtungen418 über einen EISA/ISA-Bus420 einzurichten. In diesem Beispiel ist der Mikroprozessor100 mit der Busbrücke402 über einen CPU-Bus424 und mit einem optionalen L2-Cache-Speicher428 verbunden. In einigen Ausführungsformen kann der Mikroprozessor100 einen integrierten L1-Cache-Speicher (nicht gezeigt) enthalten. - Die Busbrücke
402 stellt eine Schnittstelle zwischen dem Mikroprozessor100 , dem Hauptspeicher404 , der Graphiksteuerung408 und mit an dem PCI-Bus414 angeschlossenen Einrichtungen bereit. Wenn eine Operation von einer der mit der Busbrücke402 verbundenen Einrichtungen empfangen wird, erkennt die Busbrücke402 das Ziel der Operation (beispielsweise eine spezielle Einrichtung oder im Falle des PCI-Busses414 , dass das Ziel auf dem PCI-Bus414 liegt). Die Busbrücke402 leitet die Operation zu der Zieleinrichtung weiter. Die Busbrücke402 übersetzt im Allgemeinen eine Operation von dem von der Quelleneinrichtung oder dem Bus benutzen Protokoll in das Protokoll, das von der Zieleinrichtung oder dem Zielbus verwendet wird. - Zusätzlich zur Bereitstellung einer Schnittstelle für einen ISA/EISA-Bus für den PCI-Bus
414 kann die sekundäre Busbrücke416 weitere Funktionen beinhalten. Eine Eingabe/Ausgabe-Steuerung (nicht gezeigt), die extern zu der sekundären Busbrücke416 oder in dieser integriert sein kann, kann ebenso in dem Computersystem400 enthalten sein, um eine zusätzliche Unterstützung für eine Tastatur und eine Maus422 und für diverse serielle und parallele Anschlüsse bereitzustellen. Eine externe Cache-Speichereinheit (nicht gezeigt) kann ebenso mit dem CPU-Bus424 zwischen dem Mikroprozessor100 und der Busbrücke402 in weiteren Ausführungsformen vorgesehen sein. Alternativ kann der externe Cache-Speicher mit der Busbrücke402 verbunden sein und eine Cache-Steuerungslogik für den externen Cache-Speicher kann in der Busbrücke402 integriert sein. Der L2-Cache-Speicher428 ist in einer „Rückseitenkonfiguration" zu dem Mikroprozessor100 gezeigt. Zu beachten ist, dass der L2-Cache-Speicher428 auch separat zu dem Mikroprozessor100 , integriert in einem Gehäuse (beispielsweise Schlitz 1 oder Schlitz A) für den Mikroprozessor100 oder sogar auf einem Halbleitersubstrat zusammen mit dem Mikroprozessor100 vorgesehen sein kann. - Der Hauptspeicher
404 ist ein Speicher, in welchem Anwenderprogramme gespeichert sind und aus dem der Mikroprozessor100 im Wesentlichen herausarbeitet. Ein geeigneter Hauptspeicher404 kann einen DRAM (dynamischen Speicher mit wahlfreiem Zugriff) umfassen. Beispielsweise sind mehrere Bänke aus SDRAM (synchrone DRAM) oder RAMBUS-DRAM (RDRAM) geeignet. - Die PCI-Einrichtungen
412a bis412b sind Beispiele für eine Vielzahl von peripheren Geräten, etwa Netzwerkschnittstellenkarten, Videobeschleuniger, Audiokarten, Festplatten- oder andere Laufwerkseinrichtungen oder Laufwerkssteuerungen, SCSI- (Kleincomputersystemschnittstellen-) Adapter und Telefoniekarten. In ähnlicher Weise ist die ISA-Einrichung418 ein Beispiel für diverse Arten von peripheren Geräten, etwa ein Modem, eine Klangkarte und eine Vielzahl von Datennahmenkarte, etwa GPIB oder Feldbusschnittstellenkarten. - Die Graphiksteuerung
408 ist vorgesehen, um das Darstellen von Text und Bildern auf einer Anzeige426 zu steuern. Die Graphiksteuerung408 kann ein typischer Graphikbeschleuniger sein, der im Allgemeinen im Stand der Technik bekannt ist, um dreidimensionale Datenstrukturen aufzubereiten, die in effizienter Weise in den Hauptspeicher404 verschoben und aus diesem ausgelesen werden können. Die Graphiksteuerung408 ist daher ein Gerät zum Kontrollieren, d. h. ein „Master", eines AGP-Busses410 , dahingehend, dass diese Zugriff zu einer Zielschnittstelle innerhalb der Busbrücke402 anfordern kann und diesen Zugriff erhält, um damit einen Zugriff auf den Hauptspeicher404 zu erhalten. Ein spezieller Graphikbus bewerkstelligt das rasche Auslesen von Daten aus dem Hauptspeicher404 . Für gewisse Operationen kann die Graphiksteuerung408 ferner ausgebildet sein, PCI-Protokolltransaktionen auf dem AGP-Bus410 zu erzeugen. Die AGP-Schnittstelle der Busbrücke402 kann somit eine Funktion aufweisen, um sowohl AGP-Protokolltransaktionen sowie auch PC-Protokoll-Ziel- und Initiatortransaktionen zu unterstützen. Die Anzeige426 ist eine beliebige elektronische Anzeige, auf der ein Bild oder ein Text dargestellt werden kann. Zu einer geeigneten Anzeige426 gehören eine Kathodenstrahlröhre („CRT"), eine Flüssigkristallanzeige („LCD"), etc. - Zu beachten ist, dass obwohl die AGP-, PCI- und ISA- oder EISA-Busse als Beispiele in der obigen Beschreibung verwendet sind, auch andere Busarchitekturen nach Bedarf verwendet werden können. Ferner ist zu beachten, dass das Computersystem
400 ein Mehrpro zessorcomputersystem mit weiteren Mikroprozessoren (beispielsweise einem Mikroprozessor100a , wie er als optionale Komponente des Computersystems400 gezeigt ist) aufweisen kann. Der Mikroprozessor100a kann ähnlich zu dem Mikroprozessor100 sein. Insbesondere kann in einer Ausführungsform der Mikroprozessor100a eine identische Kopie des Mikroprozessor100 sein. Der Mikroprozessor100a kann mit der Busbrücke402 über einen unabhängigen Bus (wie in5 gezeigt) verbunden sein oder kann den CPU-Bus224 zusammen mit dem Mikroprozessor100 benutzen. Ferner kann der Mikroprozessor100a mit einem optionalen L2-Cache-Speicher428a ähnlich zu dem L2-Cache-Speicher428 verbunden sein. -
6 zeigt eine weitere Ausführungsform eines Computersystems400 , das einen Ablaufverfolgungsgenerator170 aufweisen kann, wie dieser zuvor beschrieben ist. Andere Ausführungsformen sind möglich und hierin mit eingeschlossen. In der Ausführungsform aus6 umfasst das Computersystem400 diverse Verarbeitungsknoten612a ,612b ,612c und612d . Jeder Knoten ist mit einem entsprechenden Speicher614a bis614d über eine Speichersteuerung616a bis616d , die in jedem des entsprechenden Verarbeitungsknotens612a bis612d enthalten ist, verbunden. Ferner enthalten die Verarbeitungsknoten612a bis612d eine Schnittstellenlogik, die zur Kommunikation zwischen den Verarbeitungsknoten612a bis612d verwendet wird. Beispielsweise enthält der Verarbeitungsknoten612a eine Schnittstellenlogik618a zur Kommunikation mit dem Verarbeitungsknoten612b , eine Schnittstellenlogik618b zur Kommunikation mit dem Verarbeitungsknoten612c und eine dritte Schnittstellenlogik618c zur Kommunikation mit einem noch weiteren Verarbeitungsknoten (nicht gezeigt). In ähnlicher Weise umfasst der Verarbeitungsknoten612b Schnittstellenlogiken618d ,618e und618f ; in ähnlicher Weise umfasst der Verarbeitungsknoten612c Schnittstellenlogiken618g ,618h und618i ; und der Verarbeitungsknoten612d umfasst Schnittstellenlogiken618j ,618k und618l . Der Verarbeitungsknoten612d ist angeschlossen, um mit mehreren Eingabe/Ausgabe-Einrichtungen (beispielsweise die Einrichtungen620a bis620b in einer Prioritätskettenkonfiguration) über die Schnittstellenlogik618l zu kommunizieren. Andere Verarbeitungsknoten können mit anderen Eingabe/Ausgabe-Einrichtungen in ähnlicher Weise kommunizieren. - Die Verarbeitungsknoten
612a bis612d ergeben eine paketbasierte Verbindung für die Kommunikation zwischen den Verarbeitungsknoten. In der vorliegenden Ausführungsform wird die Verbindung als Sätze aus unidirektionalen Leitungen (beispielsweise werden die Leitungen624a zur Übersendung von Paketen von dem Verarbeitungsknoten612a zu dem Verarbeitungsknoten612b verwendet, und Leitungen624b werden verwendet, um Pakete von dem Verarbeitungsknoten612b zu dem Verarbeitungsknoten612a zu senden) eingerichtet. Andere Leitungssätze624c bis624h werden verwendet, um Pakete zwischen anderen Verarbeitungsknoten auszutauschen, wie in6 gezeigt ist. Im Allgemeinen kann jeder Leitungssatz624 eine oder mehrere Datenleitungen, eine oder mehrere Taktleitungen entsprechend den Datenleitungen und eine oder mehrere Steuerleitungen, die die Art des übertragenen Pakets angeben, enthalten. Die Verbindung kann in einer cachespeicherkohärenten Weise zur Kommunikation zwischen Verarbeitungsknoten betrieben werden, oder kann in einer nicht kohärenten Weise für die Kommunikation zwischen einem Verarbeitungsknoten und einer Eingabe/Ausgabe-Einrichtung (oder einer Busbrücke zu einem Eingabe/Ausgabe-Bus konventionellen Aufbaus, etwa dem PCI-Bus oder dem ISA-Bus) betrieben werden. Des weiteren kann die Verbindung in einer nicht kohärenten Weisen unter Anwendung einer prioritätsverwalteten Struktur zwischen Eingabe/Ausgabe-Einrichtungen betrieben werden, wie dies gezeigt ist. Zu beachten ist, dass ein von einem Verarbeitungsknoten zu einem weiteren Verarbeitungsknoten zu sendendes Paket durch einen oder mehrere zwischengeschaltete Knoten laufen kann. Beispielsweise kann ein Paket, das von dem Verarbeitungsknoten612a zu dem Verarbeitungsknoten612d gesendet wird, entweder über den Verarbeitungsknoten612b oder den Verarbeitungsknoten612c geführt werden, wie in6 gezeigt ist. Es kann ein beliebiger Signalführungsalgorithmus eingesetzt werden. Andere Ausführungsformen des Computersystems400 können mehr oder weniger Verarbeitungsknoten als in der in6 gezeigten Ausführungsform aufweisen. - Im Allgemeinen werden die Pakete als eine oder mehrere Bitzeiten auf den Leitungen
624 zwischen den Knoten ausgetauscht. Eine Bit-Zeit ist die ansteigende oder abfallende Flanke des Taktsignals auf den entsprechenden Taktleitungen. Die Pakete können Befehlspakete für das Initiieren von Transaktionen, Sondierungspakete bzw. Anfragepakete für das Beibehalten der Cache-Speicherkohärenz und Antwortpakete aus den Antworten auf Sondierungen und Befehle enthalten. - Die Verarbeitungsknoten
612a bis612d können zusätzlich zu einer Speichersteuerung und einer Schnittstellenlogik einen oder mehrere Mikroprozessoren aufweisen. Allgemein gesagt, enthält ein Verarbeitungsknoten mindestens einen Mikroprozessor und optional eine Speichersteuerung zur Kommunikation mit einem Speicher, und besitzt nach Bedarf auch andere Logikschaltungen. Insbesondere kann jeder Verarbeitungsknoten612a bis612d eine oder mehrere Kopien des Mikroprozessors100 enthalten. Eine externe Schnittstelleneinheit 18 kann die Schnittstellenlogik618 innerhalb des Knotens sowie die Speichersteuerung616 enthalten. - Die Speicher
614a bis614d können beliebig geeignete Speichereinrichtungen aufweisen. Beispielsweise kann ein Speicher614a bis614d einen oder mehrere RAMBUS-DRAMS (RDRAMS), synchrone DRAMS (SDRAMS), statische RAM, etc. umfassen. Der Adressenraum des Computersystems400 wird unter den Speichern614a bis614d aufgeteilt. Jeder Verarbeitungsknoten612a bis612d kann eine Speicherzuordnung enthalten, die verwendet wird, um zu bestimmen, welche Adressen welchen Speichern614a bis614d zugeordnet werden und somit zu welchen Verarbeitungsknoten612a bis612d eine Speicheranforderung für eine spezielle Adresse weiterzuleiten ist. In einer Ausführungsform ist der Kohärenzpunkt für eine Adresse innerhalb des Computersystems400 die Speichersteuerung616a bis616d , die mit dem Speicher verbunden ist, der die der Adresse entsprechenden Bytes enthält. Anders ausgedrückt, die Speichersteuerung616a bis616d ist verantwortlich, dass sichergestellt wird, dass jeder Speicherzugriff auf den entsprechenden Speicher614a bis614b in einer mit dem Cache-Speicher kohärenten Weise stattfindet. Die Speichersteuerungen616a bis616d können eine Steuerschaltung als Schnittstelle für die Speicher614a bis614d aufweisen. Des weiteren können die Speichersteuerungen616a bis616d Anforderungswarteschlangen zur Aufreihung von Speicheranforderungen enthalten. - Die Schnittstellenlogik
618a bis618l kann eine Vielzahl an Puffern zum Empfangen von Paketen aus der Verbindung und zur Pufferung von Paketen aufweisen, die über die Verbindung zu senden sind. Das Computersystem400 kann einen beliebigen Flusssteuerungsmechanismus zum Senden von Paketen anwenden. Beispielsweise speichert in einer Ausführungsform jede Schnittstellenlogik618 einen Wert der Anzahl jedes Puffertyps innerhalb des Empfängers an dem anderen Ende der Verbindung, mit dem die Schnittstellenlogik verbunden ist. Die Schnittstellenlogik sendet somit kein Paket, sofern die empfangende Schnittstellenlogik nicht einen freien Puffer aufweist, um das Paket zu speichern. Wenn ein empfangender Puffer freigegeben wird, indem ein Paket weitergeleitet wird, sendet die empfangende Schnittstellenlogik eine Nachricht zu der sendenden Schnittstellenlogik, um anzugeben, dass der Puffer freigegeben ist. Ein derartiger Mechanismus wird als ein „couponbasiertes" System bezeichnet. - Die Eingabe/Ausgabe-Einrichtungen
620a bis620b können beliebige Eingabe/Ausgabe-Einrichtungen sein. Beispielsweise können die Eingabe/Ausgabe-Einrichtungen620a bis620b Geräte zur Kommunikation mit einem anderen Computersystem beinhalten, mit denen die Einrichtungen verbunden sind (beispielsweise Netzwerkschnittstellenkarten oder Modems). Des weiteren können die Eingabe/Ausgabe-Einrichtungen620a bis620b Videobeschleuniger, Audiokarten, Festplatten und andere Laufwerke oder Laufwerkssteuerungen, SCSI (Kleincomputersystemschnittstellen-Adapter und Telefoniekarten, Klangkarten und eine Reihe von Datennahmekarten, etwa GPIB oder Feldbusschnittstellenkarten enthalten. Zu beachten ist, dass der Begriff „Eingabe/Ausgabe-Einrichtung" und der Begriff „peripheres Gerät" hierin als Synonym zu betrachten sind. - Im hierin verwendeten Sinne bezeichnen die Begriffe „Taktzyklus" oder „Zyklus" ein Zeitintervall, in welchem diverse Stufen der Befehlsverarbeitungspipeline ihre Aufgaben abschließen. Befehle und berechnete Werte werden durch Speicherelemente (etwa Register oder Arrays) gemäß einem Taktsignal, das den Taktzyklus definiert, empfangen. Beispielsweise kann ein Speicherelement einen Wert bei der ansteigenden oder abfallenden Flanke des Taktsignals speichern.
- Diverse Variationen und Modifizierungen werden für den Fachmann bei Studium der vorliegenden Offenbarung ersichtlich. Es ist daher beabsichtigt, dass die anschließenden Patentansprüche alle derartigen Variationen und Modifizierungen umschließen.
- Industrielle Anwendbarkeit
- Diese Erfindung ist im Allgemeinen auf dem Gebiet von Mikroprozessoren einsetzbar.
- Zusammenfassung
- Es sind diverse Ausführungsformen von Verfahren und Systemen zum Einrichten eines Mikroprozessors (
100 ) offenbart, der einen Ablaufverfolgungs-Cache-Speicher (160 ) aufweist und versucht, vom Abholen von dem Befehls-Cache-Speicher (106 ) zum Abholen von dem Ablaufverfolgungs-Cache-Speicher (160 ) lediglich an Markengrenzen überzugehen. In einer Ausführungsform umfasst ein Mikroprozessor (100 ) einen Befehls-Cache-Speicher (106 ), eine Verzweigungsvorhersageeinheit (132 ) und einen Ablaufverfolgungs-Cache-Speicher (160 ). Die Vorabholeinheit (108 ) kann Befehle aus dem Befehls-Cache-Speicher (106 ) abholen, bis die Verzweigungsvorhersageeinheit (132 ) eine vorhergesagte Zieladresse für einen Verzweigungsbefehl ausgibt. Wenn die Verzweigungsvorhersageeinheit (132 ) eine vorhergesagte Zieladresse ausgibt, prüft die Vorabholeinheit (108 ), ob ein Eintrag (162 ) vorliegt, der mit der vorhergesagten Zieladresse in dem Ablaufverfolgungs-Cache-Speicher (160 ) übereinstimmt. Wenn eine Übereinstimmung gefunden wird, liest die Vorabholeinheit (108 ) eine oder mehrere Ablaufverfolgungselement (166 ) aus dem Ablaufverfolgungs-Cache-Speicher (160 ) aus, anstatt dass Befehle aus dem Befehls-Cache-Speicher (106 ) ausgelesen werden. - Figurenbeschreibung
-
1 - 100
- Mikroprozessor
- von
Vorabholeinheit
108 - 160
- Ablaufverfolgungs-Cache-Speicher
- 170
- Ablaufverfolgungsgenerator
- 104
- Ausgabeeinheit
- 140
- Decodiereinheit
- 102
- Rücknahmewarteschlange
- 118
- Ablauforganisationseinheiten
- 106
- Befehls-Cache-Speicher
- 109
- Vorabholeinheit
- 132
- Verzweigungsvorhersageeinheit
- 128
- Daten-Cache-Speicher
- 124
- Ausführungskern(e)
- 200
- Systemspeicher
- 130
- Ergebnisbus
- 116
- Registerdatei
-
2 - 164
- Markierung
- 168
- Flusssteuerung
-
3 - 301
- Abholen von Befehlen aus dem Befehls-Cache-Speicher
- 303
- Verzweigungsvorhersageeinheit erzeugt Verzweigungszieladresse?
- 305
- Entspricht der Ablaufverfolgungs-Cache-Eintrag der Verzweigungszieladresse?
- 307
- Abholen eines oder mehrerer Ablaufverfolgungselemente aus dem Ablaufverfolgungs-
- Cache-Speicher
-
4 - 351
- Empfangen des Befehls
- 353
- doppeltes Verfolgungsablaufverfolgungselement erkannt?
- 357
- Befehl an der Verzweigungsmarke?
- Beginnen des Auffüllens des neuen Ablaufverfolgungselements
- 355
- Einfügen von Operationen in das Ablaufverfolgungselement
- 361
- Ablaufverfolgungselement vollständig?
- 363
- Ist Ablaufverfolgungselement ein Duplikat des vorhergehenden Eintrags?
- 365
- Speichern des Ablaufverfolgungselements in Ablaufverfolgungs-Cache-Eintrag
- 367
- Verwerfen des Ablaufverfolgungselements
-
5 - 404
- Hauptspeicher
- 406
- Speicherbus
- 402
- Busbrücke
- 408
- Graphiksteuerung
- 426
- Anzeige
- 428
- L2-Cache-Speicher
- 100, 100a
- Prozessor
- 428a
- L2-Cache-Speicher
- 412, 412b
- PCI-Einrichtung
- 414
- PCI-Bus
- 416
- sekundäre Busbrücke
- 422
- Tastatur/Maus
- 420
- ISA/EISA-Bus
- 418
- ISA-Einrichtung
-
6 - 614a, ..., 614d
- Speicher
- 612a, ..., 612d
- Verarbeitungsknoten
- 620a, 620b
- Ein/Aus-Gerät
Claims (10)
- Mikroprozessor (
100 ) mit: einem Befehls-Cache-Speicher (106 ), der zum Speichern von Befehlen ausgebildet ist; einer Verzweigungsvorhersageeinheit (132 ); einem Ablaufverfolgungs-Cache-Speicher (160 ), der ausgebildet ist, mehrere Ablaufverfolgungselemente (166 ) von Befehlen zu speichern; und einer Vorhabholeinheit (108 ), die mit dem Befehls-Cache-Speicher (106 ), der Verzweigungsvorhersageeinheit (132 ) und dem Ablaufverfolgungs-Cache-Speicher (160 ) verbunden ist; wobei die Vorabholeinheit (108 ) ausgebildet ist, Befehle aus dem Befehls-Cache-Speicher (106 ) auszulesen, bis die Verzweigungsvorhersageeinheit (132 ) eine vorhergesagte Zieladresse ausgibt; und wobei, wenn die Vorabholeinheit (108 ) eine Übereinstimmung für die vorhergesagte Zieladresse in dem Ablaufverfolgungs-Cache-Speicher (160 ) erkennt, die Vorabholeinheit (108 ) ausgebildet ist, ein oder mehrere der mehreren Ablaufverfolgungselemente (166 ) aus dem Ablaufverfolgungs-Cache-Speicher (160 ) auszulesen. - Mikroprozessor (
100 ) nach Anspruch 1, der ferner einen Ablaufverfolgungsgenerator (170 ) umfasst, wobei der Ablaufverfolgungsgenerator (170 ) ausgebildet ist, ein Ablaufverfolgungselement (166 ) mit einem Befehl zu beginnen, der einer Markengrenze entspricht. - Mikroprozessor (
100 ) nach Anspruch 2, wobei der Ablaufverfolgungsgenerator (170 ) ausgebildet ist, den Ablaufverfolgungs-Cache-Speicher (160 ) auf eine Duplikatkopie des Ablaufverfolgungselements (166 ) hin zu prüfen, das der Ablaufverfolgungsgenerator (170 ) gerade bildet. - Mikroprozessor (
100 ) nach Anspruch 1, wobei jedes der mehreren Ablaufverfolgungselemente (166 ) teilweise decodierte Befehle umfasst. - Mikroprozessor (
100 ) nach Anspruch 1, wobei jedes der mehreren Ablaufverfolgungselemente (166 ) mit einer Markierung (164 ) verknüpft ist, die die Adresse eines frühesten Befehls in der Programmreihenfolge umfasst, der in diesem Ablaufverfolgungselement (166 ) gespeichert ist. - Mikroprozessor (
100 ) nach Anspruch 1, wobei jedes der mehreren Ablaufverfolgungselemente (166 ) mit einem Flusssteuerungsfeld (168 ) verknüpft ist, das eine Marke für einen Befehl umfasst, zu welchem die Steuerung weiterspringt für jede Verzweigungsoperation, die in diesem Ablaufverfolgungselement (166 ) enthalten ist. - Computersystem (
400 ) mit: einem Systemspeicher (404 ); und einem Mikroprozessor (100 ), der mit dem Systemspeicher (404 ) verbunden ist; dadurch gekennzeichnet, dass der Mikroprozessor (100 ) umfasst: einen Befehls-Cache-Speicher (106 ), der zum Speichern von Befehlen ausgebildet ist; eine Verzweigungsvorhersageeinheit (132 ); einen Ablaufverfolgungs-Cache-Speicher (160 ), der ausgebildet ist, mehrere Ablaufverfolgungselemente (166 ) aus Befehlen zu speichern; und eine Vorabholeinheit (108 ), die mit dem Befehls-Cache-Speicher (106 ), der Verzweigungsvorhersageeinheit (132 ) und dem Ablaufverfolgungs-Cache-Speicher (160 ) verbunden ist; wobei die Vorabholeinheit (108 ) ausgebildet ist, Befehle aus dem Befehls-Cache-Speicher (106 ) auszulesen, bis die Verzweigungsvorhersageeinheit (132 ) eine vorhergesagte Zieladresse ausgibt; und wobei, wenn die Vorabholeinheit (108 ) eine Übereinstimmung für die vorhergesagte Zieladresse in dem Ablaufverfolgungs-Cache-Speicher (160 ) erkennt, die Vorabholeinheit (108 ) ausgebildet ist, ein oder mehrere der mehreren Ablaufverfolgungselemente (166 ) aus dem Ablaufverfolgungs-Cache-Speicher (160 ) auszulesen. - Verfahren mit: Abholen von Befehlen aus einem Befehls-Cache-Speicher (
106 ); Fortsetzen des Abholens von Befehlen aus dem Befehls-Cache-Speicher (106 ), bis eine Verzweigungszieladresse erzeugt wird; wenn eine Verzweigungszieladresse erzeugt ist, Durchsuchen eines Ablaufverfolgungs-Cache-Speichers (160 ) nach einem Eintrag (162 ), der der Verzweigungszieladresse entspricht. - Verfahren nach Anspruch 8, das ferner umfasst: Abholen eines oder mehrerer Ablaufverfolgungselemente (
166 ) aus dem Ablaufverfolgungs-Cache-Speicher (160 ), wenn ein Eintrag (162 ) in dem Ablaufverfolgungs-Cache-Speicher (160 ) erkannt wird, der der Verzweigungszieladresse entspricht. - Verfahren nah Anspruch 8, das ferner umfasst: Empfangen eines abgeschlossenen Befehls; Beginnen des Erzeugens eines neuen Ablaufverfolgungselements (
166 ), wenn der empfangene Befehl mit einer Verzweigungsmarke verknüpft ist; wenn das vorhergehende gerade erzeugte Ablaufverfolgungselement (166 ) ein Ablaufverfolgungselement (166 ) in dem Ablaufverfolgungs-Cache-Speicher (160 ) dupliziert, Verzögern des Erzeugens des neuen Ablaufverfolgungselements (166 ), bis der empfangene Befehl einer Verzweigungsmarke entspricht.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/726,902 US8069336B2 (en) | 2003-12-03 | 2003-12-03 | Transitioning from instruction cache to trace cache on label boundaries |
US10/726,902 | 2003-12-03 | ||
PCT/US2004/039269 WO2005062167A2 (en) | 2003-12-03 | 2004-11-22 | Transitioning from instruction cache to trace cache on label boundaries |
Publications (1)
Publication Number | Publication Date |
---|---|
DE112004002365T5 true DE112004002365T5 (de) | 2006-11-09 |
Family
ID=34633400
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE112004002365T Ceased DE112004002365T5 (de) | 2003-12-03 | 2004-11-22 | Übergang vom Befehls-Cache-Speicher zum Ablaufverfolgungs-Cache-Speicher basierend auf Markengrenzen |
Country Status (8)
Country | Link |
---|---|
US (1) | US8069336B2 (de) |
JP (1) | JP2007515715A (de) |
KR (1) | KR20070001900A (de) |
CN (1) | CN100520712C (de) |
DE (1) | DE112004002365T5 (de) |
GB (1) | GB2423852B (de) |
TW (1) | TWI363992B (de) |
WO (1) | WO2005062167A2 (de) |
Families Citing this family (57)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7133969B2 (en) * | 2003-10-01 | 2006-11-07 | Advanced Micro Devices, Inc. | System and method for handling exceptional instructions in a trace cache based processor |
US7555633B1 (en) | 2003-11-03 | 2009-06-30 | Advanced Micro Devices, Inc. | Instruction cache prefetch based on trace cache eviction |
US8069336B2 (en) | 2003-12-03 | 2011-11-29 | Globalfoundries Inc. | Transitioning from instruction cache to trace cache on label boundaries |
US7213126B1 (en) | 2004-01-12 | 2007-05-01 | Advanced Micro Devices, Inc. | Method and processor including logic for storing traces within a trace cache |
US7197630B1 (en) | 2004-04-12 | 2007-03-27 | Advanced Micro Devices, Inc. | Method and system for changing the executable status of an operation following a branch misprediction without refetching the operation |
TW200602974A (en) * | 2004-05-19 | 2006-01-16 | Arc Internat Uk Ltd | Microprocessor architecture |
US7365007B2 (en) * | 2004-06-30 | 2008-04-29 | Intel Corporation | Interconnects with direct metalization and conductive polymer |
US20060212654A1 (en) * | 2005-03-18 | 2006-09-21 | Vinod Balakrishnan | Method and apparatus for intelligent instruction caching using application characteristics |
US7783863B1 (en) | 2005-09-28 | 2010-08-24 | Oracle America, Inc. | Graceful degradation in a trace-based processor |
US7937564B1 (en) | 2005-09-28 | 2011-05-03 | Oracle America, Inc. | Emit vector optimization of a trace |
US7949854B1 (en) | 2005-09-28 | 2011-05-24 | Oracle America, Inc. | Trace unit with a trace builder |
US7849292B1 (en) | 2005-09-28 | 2010-12-07 | Oracle America, Inc. | Flag optimization of a trace |
US8032710B1 (en) | 2005-09-28 | 2011-10-04 | Oracle America, Inc. | System and method for ensuring coherency in trace execution |
WO2007049150A2 (en) | 2005-09-28 | 2007-05-03 | Arc International (Uk) Limited | Architecture for microprocessor-based systems including simd processing unit and associated systems and methods |
US8370576B1 (en) | 2005-09-28 | 2013-02-05 | Oracle America, Inc. | Cache rollback acceleration via a bank based versioning cache ciruit |
US8051247B1 (en) | 2005-09-28 | 2011-11-01 | Oracle America, Inc. | Trace based deallocation of entries in a versioning cache circuit |
US8015359B1 (en) | 2005-09-28 | 2011-09-06 | Oracle America, Inc. | Method and system for utilizing a common structure for trace verification and maintaining coherency in an instruction processing circuit |
US8499293B1 (en) | 2005-09-28 | 2013-07-30 | Oracle America, Inc. | Symbolic renaming optimization of a trace |
US7966479B1 (en) | 2005-09-28 | 2011-06-21 | Oracle America, Inc. | Concurrent vs. low power branch prediction |
US7606975B1 (en) | 2005-09-28 | 2009-10-20 | Sun Microsystems, Inc. | Trace cache for efficient self-modifying code processing |
US8037285B1 (en) | 2005-09-28 | 2011-10-11 | Oracle America, Inc. | Trace unit |
US7987342B1 (en) | 2005-09-28 | 2011-07-26 | Oracle America, Inc. | Trace unit with a decoder, a basic-block cache, a multi-block cache, and sequencer |
US8024522B1 (en) | 2005-09-28 | 2011-09-20 | Oracle America, Inc. | Memory ordering queue/versioning cache circuit |
US8019944B1 (en) | 2005-09-28 | 2011-09-13 | Oracle America, Inc. | Checking for a memory ordering violation after a speculative cache write |
US7814298B1 (en) | 2005-09-28 | 2010-10-12 | Oracle America, Inc. | Promoting and appending traces in an instruction processing circuit based upon a bias value |
US7953961B1 (en) | 2005-09-28 | 2011-05-31 | Oracle America, Inc. | Trace unit with an op path from a decoder (bypass mode) and from a basic-block builder |
US7953933B1 (en) | 2005-09-28 | 2011-05-31 | Oracle America, Inc. | Instruction cache, decoder circuit, basic block cache circuit and multi-block cache circuit |
US7877630B1 (en) | 2005-09-28 | 2011-01-25 | Oracle America, Inc. | Trace based rollback of a speculatively updated cache |
US7870369B1 (en) | 2005-09-28 | 2011-01-11 | Oracle America, Inc. | Abort prioritization in a trace-based processor |
WO2007036050A1 (en) | 2005-09-30 | 2007-04-05 | Mosaid Technologies Incorporated | Memory with output control |
US7652922B2 (en) | 2005-09-30 | 2010-01-26 | Mosaid Technologies Incorporated | Multiple independent serial link memory |
US11948629B2 (en) | 2005-09-30 | 2024-04-02 | Mosaid Technologies Incorporated | Non-volatile memory device with concurrent bank operations |
US7797517B1 (en) | 2005-11-18 | 2010-09-14 | Oracle America, Inc. | Trace optimization via fusing operations of a target architecture operation set |
TWI448901B (zh) * | 2006-03-28 | 2014-08-11 | Mosaid Technologies Inc | 非揮發性記憶體系統及控制非揮發性記憶體系統之方法 |
US8370609B1 (en) | 2006-09-27 | 2013-02-05 | Oracle America, Inc. | Data cache rollbacks for failed speculative traces with memory operations |
US8010745B1 (en) | 2006-09-27 | 2011-08-30 | Oracle America, Inc. | Rolling back a speculative update of a non-modifiable cache line |
TWI502357B (zh) * | 2009-08-11 | 2015-10-01 | Via Tech Inc | 資料預先提取方法、裝置及電腦系統 |
KR101086457B1 (ko) * | 2009-12-28 | 2011-11-25 | 전남대학교산학협력단 | 저 전력 트레이스 캐쉬 및 명령어 세트 예측기를 구비한 프로세서 시스템 |
GB2481385B (en) | 2010-06-21 | 2018-08-15 | Advanced Risc Mach Ltd | Tracing speculatively executed instructions |
CN102306092B (zh) * | 2011-07-29 | 2014-04-09 | 北京北大众志微系统科技有限责任公司 | 超标量处理器实现指令缓存路选择的方法及装置 |
US8935574B2 (en) | 2011-12-16 | 2015-01-13 | Advanced Micro Devices, Inc. | Correlating traces in a computing system |
US9158696B2 (en) * | 2011-12-29 | 2015-10-13 | Intel Corporation | Hiding instruction cache miss latency by running tag lookups ahead of the instruction accesses |
US9311247B1 (en) | 2012-03-20 | 2016-04-12 | Marvell International Ltd. | Method and apparatus for detecting patterns of memory accesses in a computing system with out-of-order program execution |
WO2013147828A1 (en) * | 2012-03-30 | 2013-10-03 | Intel Corporation | Preempting fixed function media devices |
US9164900B1 (en) | 2012-05-23 | 2015-10-20 | Marvell International Ltd. | Methods and systems for expanding preload capabilities of a memory to encompass a register file |
US8832500B2 (en) | 2012-08-10 | 2014-09-09 | Advanced Micro Devices, Inc. | Multiple clock domain tracing |
US8959398B2 (en) | 2012-08-16 | 2015-02-17 | Advanced Micro Devices, Inc. | Multiple clock domain debug capability |
KR20140134421A (ko) * | 2013-05-14 | 2014-11-24 | 한국전자통신연구원 | 이중 명령어 페치 장치 및 방법 |
US10140210B2 (en) * | 2013-09-24 | 2018-11-27 | Intel Corporation | Method and apparatus for cache occupancy determination and instruction scheduling |
US10740105B2 (en) * | 2014-04-04 | 2020-08-11 | Texas Instruments Incorporated | Processor subroutine cache |
US20160335089A1 (en) * | 2015-05-11 | 2016-11-17 | Qualcomm Incorporated | Eliminating redundancy in a branch target instruction cache by establishing entries using the target address of a subroutine |
US20180054374A1 (en) * | 2016-08-19 | 2018-02-22 | Andes Technology Corporation | Trace information encoding apparatus, encoding method thereof, and readable computer medium |
US10606599B2 (en) * | 2016-12-09 | 2020-03-31 | Advanced Micro Devices, Inc. | Operation cache |
CN107103116B (zh) * | 2017-03-27 | 2019-07-30 | 中国科学院计算技术研究所 | 一种复用追踪缓存的触发装置及设计方法 |
US10268630B1 (en) * | 2017-10-24 | 2019-04-23 | Hewlett Packard Enterprise Development Lp | Noncoherent interprocessor communication remapping node controller |
CN112286577B (zh) * | 2020-10-30 | 2022-12-06 | 上海兆芯集成电路有限公司 | 处理器及其操作方法 |
US20230305992A1 (en) * | 2022-03-25 | 2023-09-28 | Nokia Solutions And Networks Oy | Processor using target instructions |
Family Cites Families (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3896419A (en) * | 1974-01-17 | 1975-07-22 | Honeywell Inf Systems | Cache memory store in a processor of a data processing system |
US5210843A (en) * | 1988-03-25 | 1993-05-11 | Northern Telecom Limited | Pseudo set-associative memory caching arrangement |
WO1993017385A1 (en) * | 1992-02-27 | 1993-09-02 | Intel Corporation | Dynamic flow instruction cache memory |
US5896528A (en) * | 1995-03-03 | 1999-04-20 | Fujitsu Limited | Superscalar processor with multiple register windows and speculative return address generation |
AU7550496A (en) * | 1995-10-06 | 1997-04-28 | Advanced Micro Devices Inc. | Unified multi-function operation scheduler for out-of-order execution in a superscalar processor |
US5745724A (en) * | 1996-01-26 | 1998-04-28 | Advanced Micro Devices, Inc. | Scan chain for rapidly identifying first or second objects of selected types in a sequential list |
US6167536A (en) | 1997-04-08 | 2000-12-26 | Advanced Micro Devices, Inc. | Trace cache for a microprocessor-based device |
US6018786A (en) * | 1997-10-23 | 2000-01-25 | Intel Corporation | Trace based instruction caching |
US6185675B1 (en) | 1997-10-24 | 2001-02-06 | Advanced Micro Devices, Inc. | Basic block oriented trace cache utilizing a basic block sequence buffer to indicate program order of cached basic blocks |
US6256728B1 (en) * | 1997-11-17 | 2001-07-03 | Advanced Micro Devices, Inc. | Processor configured to selectively cancel instructions from its pipeline responsive to a predicted-taken short forward branch instruction |
US5930497A (en) | 1997-12-11 | 1999-07-27 | International Business Machines Corporation | Method and means for generation of realistic access patterns in storage subsystem benchmarking and other tests |
US6182210B1 (en) * | 1997-12-16 | 2001-01-30 | Intel Corporation | Processor having multiple program counters and trace buffers outside an execution pipeline |
US6216206B1 (en) * | 1997-12-16 | 2001-04-10 | Intel Corporation | Trace victim cache |
US6014742A (en) * | 1997-12-31 | 2000-01-11 | Intel Corporation | Trace branch prediction unit |
US6219827B1 (en) * | 1998-03-12 | 2001-04-17 | Hewlett-Packard Company | Trace ranking in a dynamic translation system |
GB2381101B (en) | 1998-04-20 | 2003-06-25 | Intel Corp | System and method for maintaining branch information |
US6256727B1 (en) | 1998-05-12 | 2001-07-03 | International Business Machines Corporation | Method and system for fetching noncontiguous instructions in a single clock cycle |
US6493821B1 (en) * | 1998-06-09 | 2002-12-10 | Intel Corporation | Recovery from writeback stage event signal or micro-branch misprediction using instruction sequence number indexed state information table |
US6339822B1 (en) | 1998-10-02 | 2002-01-15 | Advanced Micro Devices, Inc. | Using padded instructions in a block-oriented cache |
US6233678B1 (en) * | 1998-11-05 | 2001-05-15 | Hewlett-Packard Company | Method and apparatus for profiling of non-instrumented programs and dynamic processing of profile data |
US6345295B1 (en) | 1999-01-22 | 2002-02-05 | International Business Machines Corporation | Conducting traces in a computer system attachment network |
US6247097B1 (en) | 1999-01-22 | 2001-06-12 | International Business Machines Corporation | Aligned instruction cache handling of instruction fetches across multiple predicted branch instructions |
US6535905B1 (en) * | 1999-04-29 | 2003-03-18 | Intel Corporation | Method and apparatus for thread switching within a multithreaded processor |
US6357016B1 (en) | 1999-12-09 | 2002-03-12 | Intel Corporation | Method and apparatus for disabling a clock signal within a multithreaded processor |
US7260684B2 (en) | 2001-01-16 | 2007-08-21 | Intel Corporation | Trace cache filtering |
US6578128B1 (en) | 2001-03-29 | 2003-06-10 | Emc Corporation | Address management for a shared memory region on a multi-processor controller board |
US20020144101A1 (en) | 2001-03-30 | 2002-10-03 | Hong Wang | Caching DAG traces |
US6973543B1 (en) | 2001-07-12 | 2005-12-06 | Advanced Micro Devices, Inc. | Partial directory cache for reducing probe traffic in multiprocessor systems |
US6823428B2 (en) | 2002-05-17 | 2004-11-23 | International Business | Preventing cache floods from sequential streams |
US7139902B2 (en) * | 2002-10-29 | 2006-11-21 | Broadcom Corporation | Implementation of an efficient instruction fetch pipeline utilizing a trace cache |
US7024537B2 (en) * | 2003-01-21 | 2006-04-04 | Advanced Micro Devices, Inc. | Data speculation based on addressing patterns identifying dual-purpose register |
US7143273B2 (en) * | 2003-03-31 | 2006-11-28 | Intel Corporation | Method and apparatus for dynamic branch prediction utilizing multiple stew algorithms for indexing a global history |
US7178134B2 (en) * | 2003-04-24 | 2007-02-13 | International Business Machines Corporation | Method and apparatus for resolving memory allocation trace data in a computer system |
US7003629B1 (en) | 2003-07-08 | 2006-02-21 | Advanced Micro Devices, Inc. | System and method of identifying liveness groups within traces stored in a trace cache |
US7133969B2 (en) * | 2003-10-01 | 2006-11-07 | Advanced Micro Devices, Inc. | System and method for handling exceptional instructions in a trace cache based processor |
US8069336B2 (en) | 2003-12-03 | 2011-11-29 | Globalfoundries Inc. | Transitioning from instruction cache to trace cache on label boundaries |
US7219207B2 (en) * | 2003-12-03 | 2007-05-15 | Intel Corporation | Reconfigurable trace cache |
-
2003
- 2003-12-03 US US10/726,902 patent/US8069336B2/en active Active
-
2004
- 2004-11-22 CN CNB200480036205XA patent/CN100520712C/zh active Active
- 2004-11-22 WO PCT/US2004/039269 patent/WO2005062167A2/en active Application Filing
- 2004-11-22 DE DE112004002365T patent/DE112004002365T5/de not_active Ceased
- 2004-11-22 KR KR1020067011089A patent/KR20070001900A/ko not_active Application Discontinuation
- 2004-11-22 GB GB0611775A patent/GB2423852B/en not_active Expired - Fee Related
- 2004-11-22 JP JP2006542625A patent/JP2007515715A/ja active Pending
- 2004-11-30 TW TW093136824A patent/TWI363992B/zh active
Also Published As
Publication number | Publication date |
---|---|
CN100520712C (zh) | 2009-07-29 |
CN1890631A (zh) | 2007-01-03 |
TWI363992B (en) | 2012-05-11 |
WO2005062167A3 (en) | 2006-02-09 |
GB2423852B (en) | 2007-05-30 |
US8069336B2 (en) | 2011-11-29 |
TW200530912A (en) | 2005-09-16 |
GB0611775D0 (en) | 2006-07-26 |
GB2423852A (en) | 2006-09-06 |
JP2007515715A (ja) | 2007-06-14 |
KR20070001900A (ko) | 2007-01-04 |
US20050125632A1 (en) | 2005-06-09 |
WO2005062167A2 (en) | 2005-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE112004002365T5 (de) | Übergang vom Befehls-Cache-Speicher zum Ablaufverfolgungs-Cache-Speicher basierend auf Markengrenzen | |
DE112004002848B4 (de) | Mikroprozessor und Verfahren zum Verifizieren einer Speicherdatei in einem derartigen Mikroprozessor | |
DE60036016T2 (de) | Schnell multithreading für eng gekoppelte multiprozessoren | |
DE112005002173B4 (de) | Prozessor mit Abhängigkeitsmechanismus, um vorherzusagen, ob ein Ladevorgang von einem älteren Schreibvorgang abhängig ist | |
DE60025028T2 (de) | Speicherpuffer, der daten, basierend auf index und freiwilliger weisebemusterung überträgt | |
DE112004001854T5 (de) | System und Verfahren zur Handhabung von Sonderinstruktionen in einem Prozessor auf Grundlage eines Cache-Speichers mit Ablaufverfolgung | |
DE69835100T2 (de) | Prozessor konfiguriert um vorausschauende resultate von zusammengefassten übertragungs-, vergleichs- und einfachen arithmetischen befehlen zu produzieren | |
DE69932066T2 (de) | Mechanismus zur "store-to-load forwarding" | |
DE60009151T2 (de) | Vorhersage von datenbeförderung von speicher- zum ladebefehl mit untrainierung | |
DE60102017T2 (de) | Räumungsfilter für adressenübersetzungspuffer | |
DE69908193T2 (de) | Ausführung von speicher- und ladeoperationen mittels einer linkdatei | |
DE60005860T2 (de) | Ablaufsteuerung zum ausgeben und wiederausgeben von ketten abhängiger befehle | |
DE112007003801B3 (de) | Vorrichtung mit einer speichereinheit und einer logik zur bereitstellung eines effizienten mechanismus‘ für transaktionalspeicherausführungen in out-of-order-prozessoren | |
DE102004013676A1 (de) | Schleifenbetrieb mit null Overhead in einem Mikroprozessor mit Anweisungspuffer | |
DE69631778T2 (de) | Flexible implementierung eines systemverwaltungsmodus in einem prozessor | |
DE69929936T2 (de) | Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem | |
DE69434669T2 (de) | Spekulative Befehlswarteschlange für Befehle mit variabler Byteslänge | |
DE69908175T2 (de) | Verbesserte befehlsdekodierung durch paralleldekodierungsalgorithmus | |
US6112297A (en) | Apparatus and method for processing misaligned load instructions in a processor supporting out of order execution | |
DE2855106A1 (de) | Einrichtung zur durchfuehrung von instruktionsverzweigungen | |
DE112017001825T5 (de) | Prozessoren, verfahren, systeme und instruktionen zum atomischen speichern von daten, die breiter als eine nativ unterstützte datenbreite sind, in einem speicher | |
DE602004010265T2 (de) | Load-store-einheit mit wiederholungsmechanismus | |
DE112010004322T5 (de) | Vorhersagen und Vermeiden von Operand-Speichervorgang-Vergleich-Gefahren in Mikroprozessoren mit abweichender Reihenfolge | |
DE10296989T5 (de) | Multi-Thread-Prozessor mit der Fähigkeit einer impliziten Multi-Thread-Ausführung eines Ein-Thread-Programms | |
DE69633474T2 (de) | Adressierungsverfahren zur nicht-sequentiellen Ausführung von Ladebefehlen hinsichtlich Speicherungsbefehlen |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law |
Ref document number: 112004002365 Country of ref document: DE Date of ref document: 20061109 Kind code of ref document: P |
|
8127 | New person/name/address of the applicant |
Owner name: GLOBALFOUNDRIES INC., GRAND CAYMAN, KY |
|
8128 | New person/name/address of the agent |
Representative=s name: GRUENECKER, KINKELDEY, STOCKMAIR & SCHWANHAEUSSER, |
|
R016 | Response to examination communication | ||
R016 | Response to examination communication | ||
R016 | Response to examination communication | ||
R016 | Response to examination communication | ||
R002 | Refusal decision in examination/registration proceedings | ||
R003 | Refusal decision now final |