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 PDF

Info

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
Application number
DE112004002365T
Other languages
English (en)
Inventor
Mitchell Austin Alsup
Greogory William Austin Smaus
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
GlobalFoundries Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of DE112004002365T5 publication Critical patent/DE112004002365T5/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative 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.

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 Mikroprozessors 100 enthalten sind, der vom Befehls-Cache-Speicher 106 zu einem Ablaufverfolgungs-Cache-Speicher 160 bei Marken- bzw. Labelgrenzen übergeht. Der Mikroprozessor 100 ist ausgebildet, die in einem Systemspeicher 200 gespeicherten Befehle auszuführen. Viele dieser Befehle operieren auf Daten, die in dem Systemspeicher 200 abgelegt sind. Zu beachten ist, dass der Systemspeicher 200 physikalisch über ein Computersystem verteilt sein kann und von einem oder mehreren Mikroprozessoren 100 angesprochen werden kann. In einigen Ausführungsformen ist der Mirkoprozessor 100 so gestaltet, dass dieser mit der x86-Architektur kompatibel ist. Zu beachten ist, dass der Mikroprozessor 100 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 Mikroprozessor 100) zwischen dem Mikroprozessor 100 und dem Systemspeicher 200 vorgesehen sein. In ähnlicher Weise kann der Mikroprozessor 100 eine Speichersteuerung in einigen Ausführungsformen enthalten, die zur Steuerung des Systemspeichers 200 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-Speicher 106 und einen Daten-Cache-Speicher 128. Der Mikroprozessor 100 umfasst eine Vorabholeinheit 108, die mit dem Systemspeicher 200 verbunden ist. Die Vorabholeinheit 108 liest Befehlscodierung aus dem Systemspeicher 200 aus, um diese in dem Befehls-Cache-Speicher 106 abzulegen. In einer Ausführungsform ist die Vorabholeinheit 108 ausgebildet, Codierungen aus dem Systemspeicher 200 sequenzweise in dem Befehlsspeicher 106 abzulegen. Die Vorabholeinheit 108 benutzt eine Vielzahl spezieller Techniken und Algorithmen zum Vorabholen von Codierung. Die Vorabholeinheit 108 kann ferner Befehle aus dem Befehls-Cache-Speicher 106 und Ablaufverfolgungselemente aus dem Ablaufverfolgungs-Cache-Speicher 160 in eine Ausgabeeinheit 104 laden. Befehle können aus dem Befehlsspeicher 106 in Reaktion auf eine vorgegebene Befehlsadresse, die nicht in dem Ablaufverfolgungs-Cache-Speicher 160 liegt, abgeholt werden. In ähnlicher Weise können Befehle aus dem Systemspeicher 200 in Reaktion auf eine vorgegebene Adresse ausgelesen werden, die nicht in dem Befehls-Cache-Speicher 106 liegt.
  • Eine Ausgabeeinheit 104 ist ausgebildet, Befehle aus dem Befehls-Cache-Speicher 106 zu empfangen und decodierte und/oder teilweise decodierte Operationen aus dem Ablaufverfolgungs-Cache-Speicher 160 zu empfangen. Die Ausgabeeinheit 1l04 umfasst eine Decodiereinheit 140, um von dem Befehls-Cache-Speicher 106 erhaltene Befehle zu decodieren. Die Ausgabeeinheit 104 umfasst ferner eine Decodierungseinheit, die bei der Handhabung mikrocodierter Befehle verwendet wird.
  • Die Ausgabeeinheit 104 ist ausgebildet, Operationen an eine oder mehrere Ablauforganisationseinheiten 118 auszugeben. Die eine oder die mehreren Ablauforganisationseinheiten 118 sind angeschlossen, um ausgegebene Operationen der Ausgabeeinheit 104 zu empfangen und Operationen an einen oder mehrere Ausführungskerne 124 auszugeben. Der eine oder die mehreren Ausführungskerne 124 können eine Lade/Speicher- bzw. Schreibeinheit 126 aufweisen, die ausgebildet ist, Zugriffe auf den Daten-Cache-Speicher 128 auszuführen. Von dem einen oder den mehreren Ausführungskernen 124 erzeugte Ergebnisse können auf einen Ergebnisbus 130 ausgegeben werden. Diese Ergebnisse können als Operandenwerte für nachfolgend ausgegebene Befehle verwendet werden und/oder in einer Registerdatei 116 gespeichert werden. Eine Abschluss- bzw. Rücknahmewarteschlange bzw. Warteschlangeneinheit 102 ist mit der einen oder den mehreren Ablauforganisationseinheiten 118 und der Ausgabeeinheit 104 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 Ausgabeeinheit 104 speichern. Befehlscodes bzw. Codierung kann dem Befehls-Cache-Speicher 106 durch Auslesen von Codierung aus dem Systemspeicher 100 durch die Vorabholeinheit 108 zugeführt werden. Der Befehls-Cache-Speicher 106 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ührungskernen 124 ausführbar sind, sowie Operandenadressinformationen, unmittelbare Daten und/oder Verschiebungsdaten. Die Decodiereinheit 140 kann verwendet werden, um gewisse Befehle in eine oder mehrere Operationen zu decodieren, die in dem einen oder den mehreren Ausführungskernen 124 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 Ausgabeeinheit 104 einen Registerplatz in der Registerdatei 116 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 Registerdatei 116 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 Registerdatei 116 (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 Registerdatei 116 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 Registerdatei 116 (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 Registerdatei 116 zuzugreifen oder um den Datenwert über eine Ergebnisweiterleitung auf dem Ergebnisbus 130 zu erhalten. Wenn der Operand einer Speicherstelle entspricht, kann der Operandenwert auf dem Ergebnisbus (für die Ergebnisweiterleitung und/oder Speicherung in der Registerdatei 126) durch die Lade/Schreibeinheit 126 bereitgestellt werden. Operandendatenwerte können dem einen oder den mehreren Ausführungskernen 124 zugeführt werden, wenn die Operation von einer der Ablauforganisationseinheiten 118 ausgegeben wird. Zu beachten ist, dass in alternativen Ausführungsformen Operandenwerte einer entsprechenden Ablauforganisationseinheit 118 zugeleitet werden, wenn eine Operation ausgegeben wird (anstatt dass diese einem entsprechenden Ausführungskern 124 zugeleitet wird, wenn die Operation ausgegeben wird).
  • Der Mikroprozessor 100 aus 1 unterstützt eine Abarbeitung in ungeordneter Weise. Eine Abschluss- bzw. Rücknahmewarteschlange 102 (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. Abschlusswarteschlange 102 in ähnlicher Weise wie ein Umordnungspuffer. Anders als ein typischer Umordnungspuffer kann die Rücknahmewarteschlange 102 jedoch keinen Datenwertspeicherplatz bereitstellen. In alternativen Ausführungsformen kann die Rücknahmewarteschlange 102 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ücknahmewarteschlange 102 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ücknahmewarteschlange 102 Register in der Registerdatei 116 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 Registerdatei 116 (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 Registerdatei 116 erklärt werden, wenn eine Verzweigungsvorhersage nicht korrekt ist.
  • Die Rücknahmewarteschlange 102 kann ferner Signale, die Programmablaufverfolgungselemente kennzeichnen, an den Ablaufverfolgungsgenerator 170 liefern. Der Ablaufverfolgungsgenerator 170 kann auch als eine Fülleinheit beschrieben werden. Der Ablaufverfolgungsgenerator 170 kann Ablaufverfolgungselemente, die von der Rücknahmewarteschlange 102 gekennzeichnet werden, in dem Ablaufverfolgungs-Cache-Speicher 160 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-Speicher 160 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-Speicher 160 gespeichert sind.
  • Die Vorabholeinheit 108 kann Operationen aus dem Ablaufverfolgungscache-Speicher 160 in die Ausgabeeinheit 104 laden. In einigen Ausführungsformen können Ablaufverfolgungselemente aus decodierten oder teilweise decodierten Befehlen aus der Rücknahmewarteschlange 102 erzeugt werden. Wenn derartige Ablaufverfolgungseinträge aus dem Ablaufverfolgungs-Cache-Speicher ausgelesen werden, kann die Decodiereinheit 140 zumindest teilweise umgangen werden, wodurch sich eine geringere Anzahl an Ausgabezyklen für die zwischengespeicherten Ablaufverfolgungsoperationen ergibt. Folglich kann es der Ablaufverfolgungs-Cache-Speicher 160 der Ausgabeeinheit 104 ermöglichen, die Zeit, die für das nicht vollständige (oder vollständige) Decodieren der zwischengespeicherten Operationen in der Decodiereinheit 140 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 Ablauforganisationseinheiten 118 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 Ablauforganisationseinheit 118 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ührungskern 124 warten, zu halten. In einigen Ausführungsformen stellt die Ablauforganisationseinheit 118 keinen Operandenwertspeicherplatz zur Verfügung. Stattdessen überwacht jede Ablauforganisationseinrichtung ausgegebene Operationen und Ergebnisse, die in der Registerdatei 116 verfügbar sind, um zu bestimmen, wann Operandenwerte für das Auslesen durch den einen oder die mehreren Ausführungskerne 124 (aus der Registerdatei 116 oder den Ergebnisbus 130) verfügbar sind. In einigen Ausführungsformen ist jede Ablauforganisationseinheit 118 mit einem speziellen Ausführungskern 124 verknüpft. In anderen Ausführungsformen kann eine einzelne Ablauforganisationseinheit 118 Operationen an mehrere Ausführungskerne 124 ausgeben.
  • Die Ablauforganisationseinheiten 118 können zeitweilig Operationsinformation speichern, die von dem einen oder den mehreren Ausführungskernen 124 auszuführen ist. Wie zuvor dargelegt ist, kann jede Ablauforganisationseinheit 118 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ührungskerne 124 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ührungskerne 124 können ausgebildet sein, die Adressenerzeugung für das Laden und Speichern von Speicheroperationen auszuführen, die von der Lade/Schreibeinheit 126 auszuführen sind.
  • Der eine oder die mehreren Ausführungskerne 124 können auch Information hinsichtlich des Ausführens bedingter Verzweigungsbefehle für die Verzweigungsvorhersageeinheit 132 bereitstellen. Wenn Information aus dem Ausführungskern 124 angibt, dass eine Verzweigungsvorhersage unkorrekt ist, kann die Verzweigungsvorhersageeinheit 132 Befehle, die auf die falsch vorhergesagte Verzweigung folgen, und die bereits in der Befehlsverarbeitungspipeline enthalten sind, löschen und die Vorabholeinheit 108 anders anweisen. Die neu angewiesene Vorabholeinheit 108 kann dann beginnen, den richtigen Satz von Befehlen aus dem Befehls-Cache-Speicher 106, dem Ablaufverfolgungs-Cache-Speicher 160 und/oder dem Systemspeicher 200 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/Schreibeinheit 126 und/oder der Registerdatei 116 gespeichert wurden.
  • Ergebnisse, die von Komponenten innerhalb des einen oder der mehreren Ausführungskerne 124 erzeugt werden, können auf dem Ergebnisbus 130 an die Registerdatei 116 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ührungskernen 124 erzeugten Ergebnisse an die Lade/Schreibeinheit 126 gegeben werden.
  • Ablaufverfolgungs-Cache-Speicher
  • Der Ablaufverfolgungsgenerator 170 kann ausgebildet sein, Basisblöcke mit abgeschlossenen Operationen von der Rücknahmewarteschlange 102 zu erhalten und diese Basisblöcke in den Ablaufverfolgungselementen in dem Ablaufverfolgungs-Cache-Speicher 160 zu speichern. Zu beachten ist, dass in alternativen Ausführungsformen der Ablaufverfolgungsgenerator 170 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 Ablaufverfolgungsgenerator 170 Transformationen an Basisblöcken aus Operationen ausführen, die von der Rücknahmewarteschlange 102 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-Speichers 160 zusammen mit einigen Komponenten des Mikroprozessors 100, die mit dem Ablaufverfolgungs-Cache-Speicher verbunden und/oder mit diesen wechselwirken. Der Ablaufverfolgungs-Cache-Speicher 160 kann mehrere Ablaufverfolgungs-Cache-Einträge 162 enthalten. Jeder Ablaufverfolgungs-Cache-Eintrag 162 speichert eine Gruppe aus Operationen, die als ein Ablaufverfolgungselement 166 bezeichnet werden. Zusätzlich zu dem Ablaufverfolgungselement 166 kann jeder Ablaufverfolgungs-Cache-Eintrag 162 auch eine Kennungsmarkierung 164 und eine Ablauf- bzw. Flusssteuerungs- (F. C.) Information 168 enthalten. Der Ablaufverfolgungs-Cache-Eintrag 162 kann ein Flusssteuerungsfeld 168 für jede in dem Ablaufverfolgungselement enthaltene Verzweigung enthalten. Jedes Steuerungsfeld 168 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 Flusssteuerungsfeld 168a einem ersten Verzweigungsbefehl, der in den Ablaufverfolgungs-Cache-Eintrag 162 enthalten ist, entsprechen. Diese erste Verzweigung kann bedingt sein und das Flusssteuerungsfeld 168a 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 Flusssteuerungsfeld 168b kann einem zweiten Verzweigungsbefehl entsprechen, der in dem Ablaufverfolgungs-Cache-Eintrag 162 enthalten ist. Diese Verzweigung kann unbedingt sein, und daher kann das Flusssteuerungsfeld 168b 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-Speicher 106 sein, wodurch die Vorabholeinheit 108 bestimmen kann, ob eine gegebene Operation den Ablaufverfolgungs-Cache-Speicher 160 betrifft oder nicht. Beispielsweise kann die Markierung 164 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 Flusssteuerungsfelder 168 enthalten. Jedes Feld einer Flusssteuerungsinformation 168 kann mit einer speziellen Verzweigungsoperation verknüpft sein. Beispielsweise ist in einer Ausführungsform ein einzelner Flusssteuerungsspeicherplatz 168a innerhalb eines Ablaufverfolgungselements mit der ersten Verzweigungsoperation in dem Ablaufverfolgungselement verknüpft und der andere Flusssteuerungsinformationsspeicherplatz 168b 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 Operationsspeicherplatz 166 gespeichert werden.
  • Befehls-/Verfolgungselements-Abholung
  • Die Vorabholeinheit 108 kann eine Zeile aus Befehlen aus dem Speicher 200 auslesen und die Zeile in dem Befehls-Cache-Speicher 106 ablegen. Die Befehle können in dem Befehls-Cache-Speicher 106 in der kompilierten Reihenfolge gespeichert werden. Abhängig von den Laufzeitbedingungen kann die Ausführungsreihenfolge für Befehle in dem Befehls-Cache-Speicher 106 häufig von der kompilierten Reihenfolge abweiche. Beispielsweise kann das Ausführen eines Verzweigungsbefehls aus dem Befehls-Cache-Speicher 106 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-Speicher 106 enthalten. Dies kann die Vorabholeinheit 108 veranlassen, eine weitere Zeile an Befehlen aus dem Systemspeicher 200 auszulesen. Während der Zeitdauer, in der die nächste Zeile aus Befehlen in den Befehls-Cache-Speicher eingeladen wird, sind die Ausführungskerne 124 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-Speicher 160 zu erzeugen. Wenn ein gültiger Ablaufverfolgungs-Cache-Eintrag 162 an der indizierten Stelle existiert, kann die Vorabholeinheit das Maskierungsfeld 164 mit der Verzweigungszieladresse vergleichen. Wenn die Markierung mit der Zieladresse übereinstimmt, dann lädt die Vorabholeinheit 108 das Ablaufverfolgungselement 166 zur Abarbeitung in die Ausgabeeinheit 104. Abhängig von der von den Ausführungskernen und/oder der Verzweigungsvorhersageeinheit erhaltenen Information kann die Vorabholeinheit 108 weiterhin die Ablaufverfolgungselemente aus dem Ablaufverfolgungs-Cache-Speicher 160 für die Ausgabeeinheit 104 abholen, bis kein Eintrag mehr gefunden wird, dessen Markierungsfeld der Adresse des nächsten auszuführenden Befehls entspricht. Die Vorabholeinheit 108 kann dann weiterhin Befehle aus dem Befehls-Cache-Speicher 106 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 Block 301 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 in 303 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 bei 309 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 Ablaufverfolgungsgenerator 170 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-Speicher 106 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-Speicher 106.
  • Die Zunahme der Mikroprozessorleistung, die durch das Abholen aus dem Ablaufverfolgungs-Cache-Speicher 160 anstatt aus dem Befehls-Cache-Speicher 106 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 Ablaufverfolgungsgenerator 170 Ablaufverfolgungselemente aus abgeschlossenen Operationen, die aus dem Befehls-Cache-Speicher 106 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 Vorabholeinheit 108 versucht, den Ablaufverfolgungs-Cache-Speicher 160 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 Ablaufverfolgungserzeugungseinheit 170 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 Verzweigungsvorhersageeinheit 132 die Adresse eines Zielbefehls erzeugt. Das Abholen eines Verzweigungsbefehls aus dem Befehls-Cache-Speicher kann die Verzweigungsvorhersageeinheit 132 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 Verzweigungsvorhersageeinheit 132 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 Verzweigungsvorhersageeinheit 132 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 Vorabholeinheit 108 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-Speicher 160 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. Block 351 zeigt, wenn ein Befehl empfangen wird. Bei 353 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 bei 355 gezeigt ist. Wenn andererseits ein oder mehrere doppelte Ablaufverfolgungselemente im Entscheidungsblock 353 erkannt werden, kann der Befehl daraufhin überprüft werden, ob dieser einer Verzweigungsmarke bzw. einem Verzweigungslabel entspricht. Wenn im Entscheidungsblock 357 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 bei 359 gezeigt ist. Block 361 zeigt, dass wenn ein Ablaufverfolgungselement vollständig ist, der Ablaufverfolgungs-Cache-Speicher untersucht werden kann, wie bei 363 gezeigt ist, um entsprechende Einträge zu erkennen. Wenn ein passender Eintrag erkannt wird, kann das unmittelbar zuvor fertiggestellte Ablaufverfolgungselement verworfen werden, wie bei 367 gezeigt ist. Wenn kein doppelter Eintrag im Block 363 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 Computersystems 400, das einen Mikroprozessor 100 aufweist, der mit mehreren Systemkomponenten über eine Busbrücke 402 verbunden ist. Der Mikroprozessor 100 kann eine Ausführungsform eines Ablaufverfolgungs-Cache-Generators 170 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 Hauptspeicher 404 mit der Busbrücke 402 über einen Speicherbus 406 gekoppelt, und eine Graphiksteuerung 408 ist mit der Busbrücke 402 über einen AGP-Bus 410 verbunden. Mehrere PCI-Einrichtungen 412a bis 412b sind mit der Busbrücke 402 über einen PCI-Bus 414 gekoppelt. Eine sekundäre Busbrücke 416 kann vorgesehen sein, um eine elektrische Schnittstelle mit einem oder mehreren EISA- oder ISA-Einrichtungen 418 über einen EISA/ISA-Bus 420 einzurichten. In diesem Beispiel ist der Mikroprozessor 100 mit der Busbrücke 402 über einen CPU-Bus 424 und mit einem optionalen L2-Cache-Speicher 428 verbunden. In einigen Ausführungsformen kann der Mikroprozessor 100 einen integrierten L1-Cache-Speicher (nicht gezeigt) enthalten.
  • Die Busbrücke 402 stellt eine Schnittstelle zwischen dem Mikroprozessor 100, dem Hauptspeicher 404, der Graphiksteuerung 408 und mit an dem PCI-Bus 414 angeschlossenen Einrichtungen bereit. Wenn eine Operation von einer der mit der Busbrücke 402 verbundenen Einrichtungen empfangen wird, erkennt die Busbrücke 402 das Ziel der Operation (beispielsweise eine spezielle Einrichtung oder im Falle des PCI-Busses 414, dass das Ziel auf dem PCI-Bus 414 liegt). Die Busbrücke 402 leitet die Operation zu der Zieleinrichtung weiter. Die Busbrücke 402 ü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ücke 416 weitere Funktionen beinhalten. Eine Eingabe/Ausgabe-Steuerung (nicht gezeigt), die extern zu der sekundären Busbrücke 416 oder in dieser integriert sein kann, kann ebenso in dem Computersystem 400 enthalten sein, um eine zusätzliche Unterstützung für eine Tastatur und eine Maus 422 und für diverse serielle und parallele Anschlüsse bereitzustellen. Eine externe Cache-Speichereinheit (nicht gezeigt) kann ebenso mit dem CPU-Bus 424 zwischen dem Mikroprozessor 100 und der Busbrücke 402 in weiteren Ausführungsformen vorgesehen sein. Alternativ kann der externe Cache-Speicher mit der Busbrücke 402 verbunden sein und eine Cache-Steuerungslogik für den externen Cache-Speicher kann in der Busbrücke 402 integriert sein. Der L2-Cache-Speicher 428 ist in einer „Rückseitenkonfiguration" zu dem Mikroprozessor 100 gezeigt. Zu beachten ist, dass der L2-Cache-Speicher 428 auch separat zu dem Mikroprozessor 100, integriert in einem Gehäuse (beispielsweise Schlitz 1 oder Schlitz A) für den Mikroprozessor 100 oder sogar auf einem Halbleitersubstrat zusammen mit dem Mikroprozessor 100 vorgesehen sein kann.
  • Der Hauptspeicher 404 ist ein Speicher, in welchem Anwenderprogramme gespeichert sind und aus dem der Mikroprozessor 100 im Wesentlichen herausarbeitet. Ein geeigneter Hauptspeicher 404 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 bis 412b 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-Einrichung 418 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 Anzeige 426 zu steuern. Die Graphiksteuerung 408 kann ein typischer Graphikbeschleuniger sein, der im Allgemeinen im Stand der Technik bekannt ist, um dreidimensionale Datenstrukturen aufzubereiten, die in effizienter Weise in den Hauptspeicher 404 verschoben und aus diesem ausgelesen werden können. Die Graphiksteuerung 408 ist daher ein Gerät zum Kontrollieren, d. h. ein „Master", eines AGP-Busses 410, dahingehend, dass diese Zugriff zu einer Zielschnittstelle innerhalb der Busbrücke 402 anfordern kann und diesen Zugriff erhält, um damit einen Zugriff auf den Hauptspeicher 404 zu erhalten. Ein spezieller Graphikbus bewerkstelligt das rasche Auslesen von Daten aus dem Hauptspeicher 404. Für gewisse Operationen kann die Graphiksteuerung 408 ferner ausgebildet sein, PCI-Protokolltransaktionen auf dem AGP-Bus 410 zu erzeugen. Die AGP-Schnittstelle der Busbrücke 402 kann somit eine Funktion aufweisen, um sowohl AGP-Protokolltransaktionen sowie auch PC-Protokoll-Ziel- und Initiatortransaktionen zu unterstützen. Die Anzeige 426 ist eine beliebige elektronische Anzeige, auf der ein Bild oder ein Text dargestellt werden kann. Zu einer geeigneten Anzeige 426 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 Mikroprozessor 100a, wie er als optionale Komponente des Computersystems 400 gezeigt ist) aufweisen kann. Der Mikroprozessor 100a kann ähnlich zu dem Mikroprozessor 100 sein. Insbesondere kann in einer Ausführungsform der Mikroprozessor 100a eine identische Kopie des Mikroprozessor 100 sein. Der Mikroprozessor 100a kann mit der Busbrücke 402 über einen unabhängigen Bus (wie in 5 gezeigt) verbunden sein oder kann den CPU-Bus 224 zusammen mit dem Mikroprozessor 100 benutzen. Ferner kann der Mikroprozessor 100a mit einem optionalen L2-Cache-Speicher 428a ähnlich zu dem L2-Cache-Speicher 428 verbunden sein.
  • 6 zeigt eine weitere Ausführungsform eines Computersystems 400, das einen Ablaufverfolgungsgenerator 170 aufweisen kann, wie dieser zuvor beschrieben ist. Andere Ausführungsformen sind möglich und hierin mit eingeschlossen. In der Ausführungsform aus 6 umfasst das Computersystem 400 diverse Verarbeitungsknoten 612a, 612b, 612c und 612d. Jeder Knoten ist mit einem entsprechenden Speicher 614a bis 614d über eine Speichersteuerung 616a bis 616d, die in jedem des entsprechenden Verarbeitungsknotens 612a bis 612d enthalten ist, verbunden. Ferner enthalten die Verarbeitungsknoten 612a bis 612d eine Schnittstellenlogik, die zur Kommunikation zwischen den Verarbeitungsknoten 612a bis 612d verwendet wird. Beispielsweise enthält der Verarbeitungsknoten 612a eine Schnittstellenlogik 618a zur Kommunikation mit dem Verarbeitungsknoten 612b, eine Schnittstellenlogik 618b zur Kommunikation mit dem Verarbeitungsknoten 612c und eine dritte Schnittstellenlogik 618c zur Kommunikation mit einem noch weiteren Verarbeitungsknoten (nicht gezeigt). In ähnlicher Weise umfasst der Verarbeitungsknoten 612b Schnittstellenlogiken 618d, 618e und 618f; in ähnlicher Weise umfasst der Verarbeitungsknoten 612c Schnittstellenlogiken 618g, 618h und 618i; und der Verarbeitungsknoten 612d umfasst Schnittstellenlogiken 618j, 618k und 618l. Der Verarbeitungsknoten 612d ist angeschlossen, um mit mehreren Eingabe/Ausgabe-Einrichtungen (beispielsweise die Einrichtungen 620a bis 620b in einer Prioritätskettenkonfiguration) über die Schnittstellenlogik 618l zu kommunizieren. Andere Verarbeitungsknoten können mit anderen Eingabe/Ausgabe-Einrichtungen in ähnlicher Weise kommunizieren.
  • Die Verarbeitungsknoten 612a bis 612d 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 Leitungen 624a zur Übersendung von Paketen von dem Verarbeitungsknoten 612a zu dem Verarbeitungsknoten 612b verwendet, und Leitungen 624b werden verwendet, um Pakete von dem Verarbeitungsknoten 612b zu dem Verarbeitungsknoten 612a zu senden) eingerichtet. Andere Leitungssätze 624c bis 624h werden verwendet, um Pakete zwischen anderen Verarbeitungsknoten auszutauschen, wie in 6 gezeigt ist. Im Allgemeinen kann jeder Leitungssatz 624 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 Verarbeitungsknoten 612a zu dem Verarbeitungsknoten 612d gesendet wird, entweder über den Verarbeitungsknoten 612b oder den Verarbeitungsknoten 612c geführt werden, wie in 6 gezeigt ist. Es kann ein beliebiger Signalführungsalgorithmus eingesetzt werden. Andere Ausführungsformen des Computersystems 400 können mehr oder weniger Verarbeitungsknoten als in der in 6 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 bis 612d 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 Verarbeitungsknoten 612a bis 612d eine oder mehrere Kopien des Mikroprozessors 100 enthalten. Eine externe Schnittstelleneinheit 18 kann die Schnittstellenlogik 618 innerhalb des Knotens sowie die Speichersteuerung 616 enthalten.
  • Die Speicher 614a bis 614d können beliebig geeignete Speichereinrichtungen aufweisen. Beispielsweise kann ein Speicher 614a bis 614d einen oder mehrere RAMBUS-DRAMS (RDRAMS), synchrone DRAMS (SDRAMS), statische RAM, etc. umfassen. Der Adressenraum des Computersystems 400 wird unter den Speichern 614a bis 614d aufgeteilt. Jeder Verarbeitungsknoten 612a bis 612d kann eine Speicherzuordnung enthalten, die verwendet wird, um zu bestimmen, welche Adressen welchen Speichern 614a bis 614d zugeordnet werden und somit zu welchen Verarbeitungsknoten 612a bis 612d eine Speicheranforderung für eine spezielle Adresse weiterzuleiten ist. In einer Ausführungsform ist der Kohärenzpunkt für eine Adresse innerhalb des Computersystems 400 die Speichersteuerung 616a bis 616d, die mit dem Speicher verbunden ist, der die der Adresse entsprechenden Bytes enthält. Anders ausgedrückt, die Speichersteuerung 616a bis 616d ist verantwortlich, dass sichergestellt wird, dass jeder Speicherzugriff auf den entsprechenden Speicher 614a bis 614b in einer mit dem Cache-Speicher kohärenten Weise stattfindet. Die Speichersteuerungen 616a bis 616d können eine Steuerschaltung als Schnittstelle für die Speicher 614a bis 614d aufweisen. Des weiteren können die Speichersteuerungen 616a bis 616d Anforderungswarteschlangen zur Aufreihung von Speicheranforderungen enthalten.
  • Die Schnittstellenlogik 618a bis 618l 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 Computersystem 400 kann einen beliebigen Flusssteuerungsmechanismus zum Senden von Paketen anwenden. Beispielsweise speichert in einer Ausführungsform jede Schnittstellenlogik 618 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 bis 620b können beliebige Eingabe/Ausgabe-Einrichtungen sein. Beispielsweise können die Eingabe/Ausgabe-Einrichtungen 620a bis 620b 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-Einrichtungen 620a bis 620b 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)

  1. 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.
  2. 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.
  3. 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.
  4. Mikroprozessor (100) nach Anspruch 1, wobei jedes der mehreren Ablaufverfolgungselemente (166) teilweise decodierte Befehle umfasst.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. 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.
  10. 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.
DE112004002365T 2003-12-03 2004-11-22 Übergang vom Befehls-Cache-Speicher zum Ablaufverfolgungs-Cache-Speicher basierend auf Markengrenzen Ceased DE112004002365T5 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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