-
Gebiet der
Erfindung
-
Die vorliegende Erfindung bezieht
sich auf Computerprozessoren. Insbesondere bezieht sich die vorliegende
Erfindung auf das Speichern von Schleifen in einem Trace-Cachespeicher
eines Prozessors.
-
Hintergrundinformationen
-
In einem Computersystem speichert
ein Cachespeicher Daten, um die Datenabrufzeiten für einen
Prozessor zu reduzieren. Im Einzelnen speichert ein Cachespeicher
spezielle Teilmengen von Daten in einem Hochgeschwindigkeitsspeicher.
Wenn ein Prozessor ein Dateifragment bzw. einen Datenanteil anfordert, überprüft das System
zuerst den Cachespeicher, um festzustellen, ob die Daten in dem
Cachespeicher gespeichert sind. Wenn sie verfügbar sind, kann der Prozessor
die Daten viel schneller abrufen, als wenn die Daten in einem anderen
computerlesbaren Medium – wie
beispielsweise einem Speicher mit wahlfreiem Zugriff, einem Festplattenlaufwerk,
einer CD-ROM oder Diskette – gespeichert wären.
-
Ein bestimmter Typ eines Cachespeichers wird
als Trace-Cachespeicher
bezeichnet. Ein Trace-Cachespeicher ist für den Aufbau, das Zwischenspeichern
und die Übermittlung
von Instruktions-Traces an einen Prozessor verantwortlich. Bei einem Typ
eines Trace-Cachespeichers werden Instruktionen als „Traces" von dekodierten
Mikrooperationen oder „Mikro-Ops" gespeichert und
der Zugriff auf diese kann nur in Einheiten von „Traces" erfolgen. Traces sind Blöcke von
Mikro-Op-Instruktionen,
die nur durch ihre Trace-Köpfe
voneinander zu unterscheiden sind.
-
Häufig
enthalten Traces rückwärts wirkende Verzweigungen.
Eine rückwärts wirkende
Verzweigung tritt im Allgemeinen auf, wenn die Zieladresse einer
Verzweigung eine vorherige Mikro-Op ist, und insbesondere, für die Zwecke
dieser Beschreibung, eine vorherige Mikro-Op der Trace. In diesem
Fall bilden die Zieladresse, die rückwärts wirkende Verzweigung und
alle Mikro-Ops zwischen diesen beiden eine Schleife. Beispielsweise
kann eine Trace aufgebaut werden, die drei Mikro-Ops enthält, welche
zusammen eine Schleife bilden. Die erste Mikro-Op (der Trace-Kopf)
kann der Kopf der Schleife sein, während die zweite Mikro-Op die
zweite Mikro-Op der Schleife ist. Bei diesem Beispiel enthält die dritte Mikro-Op
der Trace eine rückwärts wirkende
Verzweigung, deren Zieladresse die erste Mikro-Op der Trace (d.
h. der Trace-Kopf, in diesem Fall auch der Kopf der Schleife) ist.
Bei einem herkömmlichen
Trace-Cachespeicher kann der Aufbau der Trace an diesem Punkt aufhören, so
dass die Drei-Mikro-Op-Schleife die gesamte Trace umfasst.
-
Wenn die Schleife ausgeführt wird,
kann sie viele aufeinander folgende Male wiederholt werden. Dementsprechend
wird die beispielhafte Trace viele aufeinander folgende Male an
den Prozessor gesendet. Wenn in der US-5,381,533 eine Trace in einer Schleife
ausgeführt
wird, werden die Instruktionen in der Schleife kontinuierlich an
die CPU bereitgestellt, wobei nur eine einzelne Adresse an den Cachespeicher
gesendet wird. Im Allgemeinen werden Traces so aufgebaut, dass,
wo immer es möglich
ist, jede Trace-Zeile die maximale Anzahl von Mikro-Ops enthält, die
die Cachespeicher-Struktur erlaubt, zum Beispiel sechs Mikro-Ops.
Auf diese Weise kann der Trace-Cachespeicher bis zu sechs Mikro-Ops
pro Taktzyklus an den Prozessor bereitstellen. In diesem Fall jedoch
stellt der Trace-Cachespeicher
höchstens drei
Mikro-Ops pro Taktzyklus bereit, obwohl der Trace-Cachespeicher
bis zu sechs Mikro-Ops pro Trace-Zeile speichern kann. Dieses Defizit
tritt auf, weil die Trace selbst nur drei Mikro-Ops enthält. Darüber hinaus
tritt bei diesem Beispiel die rückwärts wirkende
Verzweigung bei der ersten Zeile der Trace auf, was die Bandbreite
noch weiter reduzieren kann. Viele Verzweigungsannahme- oder Zielmodelle
erfordern ein Minimum von zwei Taktzyklen, um das Ziel einer Verzweigung
zu bestimmen, so dass in diesem Fall ein Taktzy klus verschwendet
wird, während
der Trace-Cachespeicher das Ziel der dritten Mikro-Op bestimmt.
-
Zusammenfassende
Darstellung der Erfindung
-
Ein beispielhafter Prozessor oder
Trace-Cachespeicher gemäß der vorliegenden
Erfindung enthält
eine Cachespeicher-Einheit,
welche ein Daten-Array enthält,
das Traces speichert. Der Prozessor oder Trace-Cachespeicher enthält ebenfalls
einen Steuerblock, der mit der Cachespeicher-Einheit verbunden ist,
wobei der Steuerblock Schleifen entrollt, wenn die Traces aufgebaut
werden.
-
Kurzbeschreibung
der Zeichnungen
-
1 ist
ein Flussdiagramm eines ersten beispielhaften Ausführungsbeispiels
eines Verfahrens gemäß der vorliegenden
Erfindung.
-
2 ist
eine schematische Zeichnung der Anwendung des Verfahrens von 1 auf zwei beispielhafte
Traces.
-
3 ist
ein Flussdiagramm eines zweiten beispielhaften Ausführungsbeispiels
eines Verfahrens gemäß der vorliegenden
Erfindung.
-
4 ist
eine schematische Zeichnung der Anwendung des Verfahrens von 3 auf zwei beispielhafte
Traces.
-
5 ist
ein Flussdiagramm eines dritten beispielhaften Ausführungsbeispiels
eines Verfahrens gemäß der vorliegenden
Erfindung.
-
6 ist
eine schematische Zeichnung der Anwendung des Verfahrens von 5 auf die zwei beispielhaften
Traces.
-
7 ist
ein Flussdiagramm eines beispielhaften Ausführungsbeispiels eines Verfahrens
gemäß der vorliegenden
Erfindung.
-
8 ist
eine schematische Zeichnung der Anwendung des Verfahrens von 7 auf eine beispielhafte
Trace unter zwei verschiedenen Bedingungen.
-
9 ist
ein Flussdiagramm eines weiteren beispielhaften Ausführungsbeispiels
eines Verfahrens gemäß der vorliegenden
Erfindung.
-
10 ist
eine schematische Darstellung eines beispielhaften Ausführungsbeispiels
eines Trace-Cachespeichers gemäß der vorliegenden
Erfindung.
-
11 ist
eine schematische Darstellung eines beispielhaften Computersystems
gemäß der vorliegenden
Erfindung.
-
Detaillierte
Beschreibung
-
Ein Trace-Cachespeicher gemäß der vorliegenden
Erfindung „entrollt" Schleifen gemäß verschiedenen
beispielhaften Ausführungsbeispielen, um
eine höhere
Bandbreite zwischen dem Trace-Cachespeicher und dem Prozessor zu
erreichen. Während
sich diese Beschreibung im Allgemeinen auf den Trace-Cachespeicher
und den Prozessor als zwei separate Elemente bezieht, sollte davon
ausgegangen werden, dass diese Bezugnahme nur der Einfachheit halber
erfolgt, und dass die Beschreibung unter Einbeziehung von Ausführungsbeispielen verstanden
werden sollte, bei welchen der Trace-Cachespeicher in den Prozessor
integriert oder anderweitig Teil eines Prozessors ist. Es sollte
ebenfalls davon ausgegangen werden, dass in dieser Beschreibung
jede Trace-Zeile beispielsweise bis zu sechs Mikro-Ops enthält, aber
dass jede Trace-Zeile jede beliebige Anzahl von Mikro-Ops enthalten
kann. Während
die speziellen auf die beispielhaften Ausführungsbeispiele bezogenen Anzahlen
dann variieren, bleiben die Prinzipien der Erfindung durch die speziellen
Größen und
Anordnungen des Trace-Cachespeichers unbeeinflusst. Schließlich gibt
die Beschreibung, wenn die beispielhaften Verfahren gemäß der vorliegenden
Erfindung beschrieben werden, im Allgemeinen an, dass der „Trace-Cachespeicher" bestimmte Funktionen
ausführen
kann. Jedoch bei dem beispielhaften Ausführungsbeispiel des Trace-Cachespeichers
selbst können
spezifische Komponenten einige dieser Funktionen ausführen. Der Begriff „Trace-Cachespeicher" wird in der Verfahrensbeschreibung
im Allgemeinen verwendet, um anzugeben, dass bei anderen Ausführungsbeispielen
eines Trace-Cachespeichers gemäß der vorliegenden
Erfindung andere Elemente die beschriebenen Schritte ausführen können.
-
1 und 2 stellen ein beispielhaftes
Ausführungsbeispiel
eines Verfahrens zum Entrollen von Schleifen in einem Trace-Cachespeicher
gemäß der vorliegenden
Erfindung dar. Im Einzelnen wird dieses erste beispielhafte Verfahren
auf zwei beispielhafte Traces T1 und T2 (dargestellt in 2) angewendet, welche der
Einfachheit halber in der gesamten Beschreibung verwendet werden.
Traces T1 und T2 repräsentieren
Traces, die entsprechend den bekannten, oben beschriebenen Verfahren
aufgebaut werden, und werden Traces T1' und T2' gegenübergestellt, welche gemäß beispielhaften
Ausführungsbeispielen
von erfinderungsgemäßen Verfahren
aufgebaut werden. Die beispielhafte Trace T1 enthält insgesamt
vier Mikro-Ops, von welchen drei eine Schleife bilden. Trace T1
enthält
zuerst einen Trace-Kopf TH, dem der Kopf
der Schleife LH folgt. Die dritte Mikro-Op
von Trace T1 ist die zweite Mikro-Op der Schleife, L2,
und die vierte Mikro-Op der Trace ist die dritte Mikro-Op der Schleife,
L3. Die letzte Mikro-Op L3 enthält beispielsweise
die rückwärts wirkende
Verzweigung, deren Zieladresse der Kopf der Schleife LH ist.
Die zweite beispielhafte Trace T2 enthält dieselbe Schleife, LH, L1, L2,
aber sie enthält
keine, der Schleife selbst vorhergehende Mikro-Op. Dementsprechend
ist LH ebenfalls der Trace-Kopf (und wird
daher als TH/LH dargestellt),
dem L2 und L3 (siehe 2) folgen.
-
Bei dem ersten beispielhaften Verfahren
beendet der Trace-Cachespeicher
die aktuelle Trace (d. h. die Trace, die aufgebaut wird) beim Eintreten
einer rückwärts wirkenden
Verzweigung nicht, wie es bei einem herkömmlichen Trace-Cachespeicher
erfolgen kann. Stattdessen fährt
der Trace-Cachespeicher, wenn er feststellt, dass eine Schleife
vorhanden ist, mit dem Aufbau der Trace fort, indem weitere Iterationen
der Schleife aufgebaut werden, bis die Trace eine minimale Länge hat,
beispielsweise, bis die Trace mehr als zwölf Mikro-Ops lang ist. Mit
anderen Worten, der Trace-Cachespeicher baut die Schleife wiederholt
auf, bis die Trace beispielsweise mehr als zwei Trace-Zeilen lang
ist. Bei einem beispielhaften Ausführungsbeispiel wird das Vorhandensein
einer Schleife festgestellt, indem das Vorhandensein einer rückwärts wirkenden
Verzweigung überprüft wird.
Es sollte jedoch davon ausgegangen werden, dass die Feststellung,
dass eine Schleife vorhanden ist, keine aktive Feststellung sein
muss. Stattdessen wird das Phrasieren einfach verwendet, um eine
allgemeine Situation zu bestimmen, in welcher eine Schleife vorhanden
ist. Wenn für
eine gegebene Mikro-Op keine Schleife vorhanden ist, kann der Trace-Cachespeicher
mit dem Aufbau der Trace wie üblich
fortfahren, d. h., gemäß vorgegebener
Parameter und Begrenzungen (wie beispielsweise Länge etc.), welche in einen
Trace-Cachespeicher aufgenommen werden können, welcher Schleifen nicht
gemäß der vorliegenden
Erfindung entrollt.
-
Nachdem zwei Trace-Zeilen gefüllt worden sind,
setzt die Trace den Aufbau der Trace nur solange fort, bis die Mikro-Op
L3 – die
Mikro-Op, die die rückwärts wirkende
Verzweigung enthält – noch einmal
angetroffen wird. Für
die beispielhafte Trace T1' tritt
dies bei der ersten Mikro-Op der dritten Trace-Zeile ein, während dies
für Trace
T2' bei der dritten
Mikro-Op der dritten Trace-Zeile eintritt, wie in 2 dargestellt. Während des Aufbauprozesses können die
rückwärts wirkenden
Verzweigungen jeglicher Zwischen- (d. h. nicht der letzten) L3-Mikro-Ops eliminiert oder anderweitig unterdrückt werden,
so dass keine Verzweigung auftritt, bis die letzte Mikro-Op der
Trace ausgeführt
ist. Es sollte davon ausgegangen werden, dass die Beschränkungen „zwei Trace-Zeilen" und „zwölf Mikro-Ops" als Beispiel dienen.
-
Das Entrollen von Schleifen gemäß dem ersten
beispielhaften Verfahren tendiert zur Erhöhung der Bandbreite, wenn die
Trace schließlich
an den Prozessor ausgelesen wird, insbesondere wenn die Schleife
viele Male wiederholt wird. Wie oben angemerkt, stellt ein beispielhafter
Trace-Cachespeicher gemäß der vorliegenden
Erfindung bis zu sechs Mikro-Ops pro Taktzyklus (d. h. eine horizontale
Reihe in 2 pro Taktzyklus)
an einen Prozessor bereit. Schaut man sich beispielsweise Trace
T2' an, kann man
feststellen, dass die Trace beispiels weise durchschnittlich fünf Mikro-Ops
pro Taktzyklus an den Prozessor, sechs Mikro-Ops für den ersten
und zweiten Taktzyklus und drei Mikro-Ops für den dritten Taktzyklus bereitstellt.
Außerdem
ist das Ziel der letzten Mikro-Op L3 (wobei
das Ziel der Trace-Kopf ist) sofort verfügbar, da die Trace selbst mindestens
zwei Mikro-Ops lang ist. Somit werden keine Taktzyklen verschwendet.
-
3 und 4 stellen ein zweites beispielhaftes
Ausführungsbeispiel
eines Verfahrens gemäß der vorliegenden
Erfindung dar. Dieses zweite beispielhafte Ausführungsbeispiel bietet ähnliche
Vorteile wie das erste beispielhafte Ausführungsbeispiel, aber erreicht
dies bei geringeren durchschnittlichen Kosten für die Cachespeicher-Trefferquote.
Ein Ergebnis des Entrollens von Schleifen ist, dass die Schleife
mehr Platz im Trace-Cachespeicher belegt, als wenn sie nicht entrollt
wäre, was
bedeutet, dass weniger Traces im Trace-Cachespeicher gespeichert werden
können.
Daher nimmt die Cachespeicher-Trefferquote tendenziell ab. Normalerweise
wird dieser Nachteil durch die Verbesserung der Bandbreite ausgeglichen,
die durch das Entrollen ermöglicht
wird. Jedoch in bestimmten Situationen ist es besonders vorteilhaft,
bestimmte Schleifen nicht zu entrollen. Schaut man sich beispielsweise
Trace T1' von 2 an, kann man verstehen,
dass diese Trace nicht viele Male an den Prozessor ausgelesen werden
kann, um aufeinander folgende Ausführungen der Schleife auszuführen, weil
die Trace eine „Extra"-Mikro-Op, den Trace-Kopf
TH, enthält.
Dementsprechend muss entweder die Trace eine zusätzliche Trace aufbauen, die
nur die Schleife selbst enthält, oder
die Schleife muss direkt aus dem Speicher oder einem anderen Cachespeicher
gelesen werden. In dieser Situation bietet das Entrollen der Schleife
einen viel geringeren Vorteil, weil die weiteren Kopien der Schleife
nicht wiederholt gelesen werden können. Gleichzeitig nehmen die
weiteren Kopien Platz im Trace-Cachespeicher in Anspruch, wodurch
die Trefferquote reduziert wird.
-
Bei dem in den 3 und 4 dargestellten, beispielhaften
Verfahren wird eine Überprüfung ausgeführt, um
jedes unnötige
Entrollen zu minimieren. Wenn bei diesem Ausführungsbei spiel der Trace-Cachespeicher
während
des Aufbaus einer Trace eine rückwärts wirkende
Verzweigung antrifft, stellt der Trace-Cachespeicher fest, ob das
Ziel der rückwärts wirkenden
Verzweigung (der Kopf der Schleife) denselben Instruktionszeiger
wie der Kopf der Trace hat. Mit anderen Worten, der Trace-Cachespeicher
stellt fest, ob der Kopf der Schleife der Trace-Kopf ist. Nur wenn
diese Bedingung erfüllt
ist, entrollt der Trace-Cachespeicher die Schleife. Wenn die Schleife entrollt
wird, kann dies beispielsweise gemäß dem ersten beispielhaften
Verfahren erfolgen, das oben beschrieben wurde, oder gemäß irgendeinem
anderen Verfahren. Die beispielhafte Bedingung gewährleistet,
dass die Trace keine, dem Kopf der Schleife vorhergehenden Mikro-Ops
enthält,
so dass die Trace wiederholt an den Prozessor ausgelesen werden kann,
wenn die Schleife ausgeführt
wird.
-
Die Anwendung des zweiten beispielhaften Verfahrens
wird in 4 dargestellt.
Wie zu erkennen ist, ist Trace T1' mit Trace T1 identisch. Da das Ziel
der rückwärts wirkenden
Verzweigung (LH) einen anderen Instruktionszeiger
als der Trace-Kopf
(TH) hat, entrollt der Trace-Cachespeicher
die Schleife nicht. Stattdessen kann der Trace-Cachespeicher beispielsweise
eine weitere Trace aufbauen, falls das zweckmäflig ist, oder die Schleife
kann aus einem anderen Cachespeicher oder aus einem anderen Speicher
gelesen werden, wenn sie ausgeführt
wird. Ungeachtet des konkreten Verfahrens der Ausführung spart
das Fehlen des Entrollens in Trace T1' Platz im Trace-Cachespeicher, wodurch die Anzahl gespeicherter
Traces und folglich die Trefferquote erhöht wird. In Trace T2' hat das Ziel LH denselben Instruktionszeiger wie der Trace-Kopf
TH; somit wird die Schleife entrollt, beispielsweise
gemäß dem beispielhaften
Verfahren von 1. Wenn
die Schleife ausgeführt
wird, kann Trace T2' wiederholt
an den Prozessor ausgelesen werden.
-
5 und 6 stellen ein drittes beispielhaftes Ausführungsbeispiel
eines Verfahrens gemäß der vorliegenden
Erfindung dar. Bei diesem Ausführungsbeispiel
kann eine Schleife für
eine bestimmte Anzahl von Wiederholungen oder bis zu einer bestimmten
Länge automatisch
entrollt werden. Danach wird eine Überprüfung ausgeführt, um festzustellen, ob der
Kopf der Schleife denselben Instruktionszeiger wie der Trace-Kopf
der aktuellen Trace hat. Wenn die Instruktionszeiger nicht übereinstimmen,
kann der Aufbauprozess an diesem Punkt gestoppt werden. Wenn andererseits
die Instruktionszeiger übereinstimmen,
dann kann weiteres Entrollen ausgeführt werden – erneut beispielsweise bis
zu einer festgelegten minimalen Anzahl von Iterationen oder einer
minimalen Länge.
Jede geeignete Länge des
ersten Entrollens sowie jeder geeignete Umfang des weiteren Entrollens
kann ausgeführt
werden. Außerdem
kann, sofern es zweckmäßig ist,
eine Überprüfung ausgeführt werden,
die das Entrollen für Schleifen
mit einer größeren als
der festgelegten Länge
begrenzt oder eliminiert. Bei dem beispielhaften Ausführungsbeispiel
der 5 und 6 jedoch wird jede Schleife
automatisch für
zwei Iterationen (wie durch Trace T1' von 6 gezeigt)
entrollt, und jedes weitere Entrollen findet statt, bis die Trace
mehr als 18 Mikro-Ops lang ist (wie durch Trace T2' von 6 gezeigt).
-
7 und 8 stellen ein viertes beispielhaftes Ausführungsbeispiel
eines Verfahrens gemäß der vorliegenden
Erfindung dar. Bei diesem Ausführungsbeispiel
wird ein Vorhersagemodell genutzt, um eine erwartete Anzahl von
Iterationen der Schleife vorherzusagen. Wenn der Trace-Cachespeicher
eine rückwärts wirkende
Verzweigung antrifft, während
die Trace aufgebaut wird, führt
er beispielsweise eine vorhergesagte Anzahl von Iterationen der
Schleife aus oder beschafft diese anderweitig. Wenn die vorhergesagte
Anzahl von Iterationen gering ist, kann die Schleife für die vorhergesagte
Anzahl von Wiederholungen entrollt werden, ungeachtet der Tatsache,
ob der Kopf der Schleife derselbe wie der Trace-Kopf ist. Wenn die
vorhergesagte Anzahl von Iterationen hoch ist, oder wenn die Anzahl
der Mikro-Ops in einer Schleife höher als ein ausgewählter Wert
ist, kann jedes der zwei oben beschriebenen, beispielhaften Modelle
angewendet werden, ein weiteres Modell zum Entrollen der Schleife
kann angewendet werden, oder die Schleife wird möglicherweise überhaupt
nicht entrollt. Ein beispielhaftes Vorhersagemodell beinhaltet die Überprüfung der
Informationen zur Verzweigungshistorie, um die Anzahl der Iterationen
festzustellen, die während
der letzten Ausführung
der Schleife ausgeführt
wurden. Ein zweites beispielhaftes Vorhersagemodell beinhaltet die Überprüfung der
Informationen zur Verzweigungshistorie, um die durchschnittliche
Anzahl der Iterationen festzustellen, die über eine Anzahl von Ausführungen
der Schleife ausgeführt
wurden. Es können
auch andere geeignete Vorhersagemodelle verwendet werden.
-
8 stellt
die Anwendung dieses beispielhaften Verfahrens auf Trace 1 unter
zwei verschiedenen Umständen
dar. Bei der ersten Darstellung wird vorhergesagt, dass die Schleife
von T1 während
der nächsten
Ausführung
drei Iterationen durchlaufen wird, während bei der zweiten Darstellung
vorhergesagt wird, dass die Schleife während der nächsten Ausführung einhundert Iterationen
durchlaufen wird. Dementsprechend wird im ersten Fall die Schleife dreimal
entrollt, und im zweiten Fall wird die Schleife nicht entrollt,
weil beispielsweise das Ziel der rückwärts wirkenden Verzweigung L3 nicht denselben Instruktionszeiger wie
der Trace-Kopf TH hat.
-
9 stellt
ein weiteres beispielhaftes Ausführungsbeispiel
dar, bei welchem das Entrollen durch die Größe der Trace (bis zu einer
festgelegten maximalen Anzahl von Mikro-Ops) oder durch die Anzahl
von Iterationen einer Schleife begrenzt wird. Wenn bei diesem Ausführungsbeispiel
die Größe der Trace
geringer als eine vorgegebene Basisgröße (zum Beispiel zwölf Mikro-Ops)
ist, dann baut der Trace-Cachespeicher die Trace wie beschrieben
auf, beispielsweise durch Entrollen von Schleifen, wobei das Ziel
der rückwärts wirkenden
Verzweigung der Trace-Kopf ist. Wenn die Trace größer als
die Basisgröße von zwölf Mikro-Ops
ist, dann wird, wenn eine rückwärts wirkende
Verzweigung gefunden wird, die resultierende Schleife nur dann entrollt,
wenn das Ziel der rückwärts wirkenden
Verzweigung der Trace-Kopf ist, und nur dann, wenn keine Entrollgrenze erreicht
worden ist. Die Entrollgrenze kann beispielsweise eine maximale
Anzahl von Mikro-Ops oder eine maximale Anzahl von Schleifen-Iterationen
sein.
-
10 stellt
ein beispielhaftes Ausführungsbeispiel
eines Trace-Cachespeichers 101 gemäß der vorliegenden Erfindung
dar. Der beispielhafte Trace-Cachespeicher enthält eine Cachespeicher-Einheit 103,
einschließlich
zum Beispiel ein Daten-Array 105 zum Speichern von Traces,
und einen Cachespeicher-Index 107 zum Speichern von Adressinformationen,
die den Inhalt von Daten-Array 105 indexieren. Der Trace-Cachespeicher
enthält
beispielsweise ebenfalls einen Steuerblock 109 und einen
Instruktionsdecoder 111. Der Steuerblock 109 ist
beispielsweise für
die Steuerung des Aufbauprozesses gemäß einem der Ausführungsbeispiele
des oben beschriebenen Verfahrens verantwortlich. Der Instruktionsdecoder 111 überprüft beispielsweise
einen Strom von Prozessor-Instruktionen und stellt Mikro-Ops an
das Daten-Array 105 bereit. Bei diesem Ausführungsbeispiel
ermöglicht
der Steuerblock 109 den Aufbauprozess, indem er Schreibfreigabe-Befehle
an das Daten-Array 105 bereitstellt,
um die Mikro-Ops zu speichern, die von dem Instruktionsdecoder 111 bereitgestellt
werden.
-
11 stellt
ein beispielhaftes Ausführungsbeispiel
eines Computersystems gemäß der vorliegenden
Erfindung dar. Bei dem dargestellten Ausführungsbeispiel enthält das Computersystem
einen Prozessor 121, einen Trace-Cachespeicher 101 und einen
Computerspeicher 123, wie beispielsweise einen dynamischen
Speicher mit wahlfreiem Zugriff („DRAM"). Diese können durch einen Bus 125 verbunden
sein. Während
bei dem dargestellten System Trace-Cachespeicher 101 und
Prozessor 121 als verschiedene Elemente erscheinen, kann
Trace-Cachespeicher 101 in Prozessor 123 enthalten
sein. Außerdem
kann der Prozessor 123 jede der oben beschriebenen Funktionen
ausführen,
wenn es zweckmäßig ist.
-
Die Einrichtung und das Verfahren
gemäß der vorliegenden
Erfindung sind unter Bezugnahme auf mehrere beispielhafte Ausführungsbeispiele
beschrieben worden. Es kann jedoch davon ausgegangen werden, dass
es viele andere Variationen der oben beschriebenen Ausführungsbeispiele
gibt, welche für
Fachleute ersichtlich sind, selbst wenn Elemente nicht explizit
als beispielhaft bezeichnet worden sind. Beispielsweise könnte ein Verfahren
des Entrollens von Schleifen unter Verwendung einer Verzweigungsannahme
die Schleife immer für
die vorhergesagte Anzahl von Iterationen entrollen – ungeachtet
der vorhergesagten Anzahl von Iterationen. Als zweites Beispiel
kann der Trace-Cachespeicher selbst Instruktionen in einer anderen
Form als in der von Mikro-Ops speichern. Weitere Modifikationen sind
möglich.
Es wird davon ausgegangen, dass diese Modifikationen im Rahmen der
Lehre der vorliegenden Erfindung liegen, welche nur durch die beigefügten Ansprüche beschränkt wird.