DE60008148T2 - System und verfahren zum abrollen von schleifen in einem trace-cache - Google Patents

System und verfahren zum abrollen von schleifen in einem trace-cache Download PDF

Info

Publication number
DE60008148T2
DE60008148T2 DE60008148T DE60008148T DE60008148T2 DE 60008148 T2 DE60008148 T2 DE 60008148T2 DE 60008148 T DE60008148 T DE 60008148T DE 60008148 T DE60008148 T DE 60008148T DE 60008148 T2 DE60008148 T2 DE 60008148T2
Authority
DE
Germany
Prior art keywords
loop
trace
current
cache
current trace
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60008148T
Other languages
English (en)
Other versions
DE60008148D1 (de
Inventor
B. Alan KYKER
F. Robert KRICK
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Application granted granted Critical
Publication of DE60008148D1 publication Critical patent/DE60008148D1/de
Publication of DE60008148T2 publication Critical patent/DE60008148T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Description

  • 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.

Claims (22)

  1. Ein Prozessor, aufweisend: eine Cache-Einheit mit einem Daten-Array, wobei das Daten-Array Traces speichert; und einen mit der Cache-Einheit verbundenen Steuerblock, wobei der Steuerblock Schleifen entrollt, wenn die Traces aufgebaut werden.
  2. Der Prozessor nach Anspruch 1, wobei das Entrollen der Schleifen einschließt: Feststellen, ob eine aktuelle Trace eine Schleife enthält, indem festgestellt wird, ob die aktuelle Trace eine Rückwärtsverzweigung enthält; Aufbauen wenigstens einer weiteren Kopie der Schleife, wenn die aktuelle Trace die Schleife enthält.
  3. Der Prozessor nach Anspruch 2, wobei das Aufbauen wenigstens einer weiteren Kopie der Schleife das Aufbauen weiterer Kopien der Schleife einschließt, bis eine Länge der aktuellen Trace größer ist als eine Minimallänge.
  4. Der Prozessor nach Anspruch 1, wobei das Entrollen der Schleifen einschließt: Feststellen, ob eine aktuelle Trace eine Schleife enthält, indem festgestellt wird, ob die aktuelle Trace eine Rückwärtsverzweigung enthält; wenn die aktuelle Trace die Schleife enthält, feststellen, ob ein Befehlszeiger eines Ziels der Rückwärtsverzweigung gleich einem Befehlszeiger eines Trace-Kopfes ist; und Aufbauen wenigstens einer weiteren Kopie der Schleife, wenn der Befehlszeiger des Ziels gleich dem Befehlszeiger des Trace-Kopfes ist.
  5. Der Prozessor nach Anspruch 4, wobei das Aufbauen wenigstens einer weiteren Kopie der Schleife das Aufbauen weiterer Kopien der Schleife einschließt, bis eine Länge der aktuellen Trace größer als eine Minimallänge ist.
  6. Der Prozessor nach Anspruch 1, wobei das Entrollen der Schleife einschließt: Feststellen, ob eine aktuelle Trace eine Schleife enthält, indem festgestellt wird, ob die aktuelle Trace eine Rückwärtsverzweigung enthält; Aufbauen wenigstens einer weiteren Kopie der Schleife, wenn die aktuelle Trace die Schleife enthält; wenn die aktuelle Trace die Schleife enthält, Feststellen, ob ein Befehlszeiger eines Ziels der Rückwärtsverzweigung gleich einem Befehlszeiger eines Trace-Kopfes ist; und Aufbauen wenigstens einer weiteren Kopie der Schleife, wenn der Befehlszeiger des Ziels gleich dem Befehlszeiger des Trace-Kopfes ist.
  7. Der Prozessor nach Anspruch 6, wobei das Aufbauen wenigstens einer weiteren Kopie der Schleife das Aufbauen weiterer Kopien der Schleife einschließt, bis eine Länge der aktuellen Trace größer als eine Minimallänge ist.
  8. Der Prozessor nach Anspruch 1, wobei das Entrollen der Schleifen einschließt: Feststellen, ob eine aktuelle Trace eine Schleife enthält, indem festgestellt wird, ob die aktuelle Trace eine Rückwärtsverzweigung enthält; Gewinnen einer Vorhersage einer erwarteten Anzahl von Iterationen der Schleife, wenn die aktuelle Trace die Schleife enthält; und Aufbauen einer Reihe weiterer Kopien der Schleife, wobei die Anzahl der weiteren Kopien der Schleife gleich der erwarteten Anzahl der Iterationen der Schleife ist, wenn die erwartete Anzahl der Iterationen der Schleife geringer als eine Maximalanzahl ist.
  9. Ein Trace-Cache, aufweisend: eine Cache-Einheit mit einem Daten-Array und einem Cache-Index, wobei das Daten-Array Traces speichert und der Cache-Index Adreßinformationen, die die Traces indexieren, speichert; und einen Steuerblock, wobei der Steuerblock Schleifen entrollt, wenn die Traces aufgebaut werden.
  10. Der Trace-Cache nach Anspruch 9, wobei das Entrollen der Schleifen einschließt: Feststellen, ob eine aktuelle Trace eine Schleife enthält, indem festgestellt wird, ob die aktuelle Trace eine Rückwärtsverzweigung enthält; Aufbauen wenigstens einer weiteren Kopie der Schleife, wenn die aktuelle Trace die Schleife enthält.
  11. Der Trace-Cache nach Anspruch 10, wobei das Aufbauen wenigstens einer weiteren Kopie der Schleife das Aufbauen weiterer Kopien der Schleife einschließt, bis eine Länge der aktuellen Trace größer als eine Minimallänge ist.
  12. Der Trace-Cache nach Anspruch 9, wobei das Entrollen der Schleifen einschließt: Feststellen, ob eine aktuelle Trace eine Schleife enthält, indem festgestellt wird, ob die aktuelle Trace eine Rückwärtsverzweigung enthält; Wenn die aktuelle Trace die Schleife enthält, feststellen, ob ein Befehlszeiger eines Ziels der Rückwärtsverzweigung gleich einem Befehlszeiger eines Trace-Kopfes ist; und Aufbauen wenigstens einer weiteren Kopie der Schleife, wenn der Befehlszeiger des Ziels gleich dem Befehlszeiger des Trace-Kopfes ist.
  13. Der Trace-Cache nach Anspruch 12, wobei das Aufbauen wenigstens einer weiteren Kopie der Schleife ein Aufbauen zu sätzlicher Kopien der Schleife einschließt, bis eine Länge der aktuellen Trace größer als eine Minimallänge ist.
  14. Der Trace-Cache nach Anspruch 9, wobei das Entrollen der Schleifen einschließt: Feststellen, ob eine aktuelle Trace eine Schleife enthält, indem festgestellt wird, ob die aktuelle Trace eine Rückwärtsverzweigung enthält; Aufbauen wenigstens einer weiteren Kopie der Schleife, wenn die aktuelle Trace die Rückwärtsverzweigung enthält; wenn die aktuelle Trace die Schleife enthält, Bestimmen, ob ein Befehlszeiger eines Ziels der Rückwärtsverzweigung gleich einem Befehlszeiger eines Trace-Kopfes ist; und Aufbauen wenigstens einer weiteren Kopie der Schleife, wenn der Befehlszeiger des Ziels gleich dem Befehlszeiger des Trace-Kopfes ist.
  15. Der Trace-Cache nach Anspruch 14, wobei das Aufbauen wenigstens einer weiteren Kopie der Schleife ein Aufbauen weiterer Kopien der Schleife einschließt, bis eine Länge der aktuellen Trace größer als eine Minimallänge ist.
  16. Der Trace-Cache nach Anspruch 9, wobei das Entrollen der Schleifen einschließt: Feststellen, ob eine aktuelle Trace eine Schleife enthält, indem festgestellt wird, ob die aktuelle Trace eine Rückwärtsverzweigung enthält; Gewinnen einer Vorhersage einer erwarteten Anzahl von Iterationen der Schleife, wenn die aktuelle Trace die Schleife enthält; und Aufbauen einer Anzahl weiterer Kopien der Schleife, wobei die Anzahl der weiteren Kopien der Schleife gleich der erwarteten Anzahl von Iterationen der Schleife ist, wenn die erwartete Anzahl von Iterationen der Schleife geringer als eine maximale Anzahl ist.
  17. Ein Computersystem, aufweisend: einen Prozessor; eine Cache-Einheit mit einem Daten-Array, wobei das Daten-Array Traces speichert; und einen mit der Cache-Einheit verbundenen Steuerblock, wobei der Steuerblock Schleifen entrollt, wenn die Traces aufgebaut werden.
  18. Das Computersystem nach Anspruch 17, wobei das Entrollen der Schleifen einschließt: Feststellen, ob eine aktuelle Trace eine Schleife enthält, indem festgestellt wird, ob die aktuelle Trace eine Rückwärtsverzweigung enthält; wenn die aktuelle Trace die Schleife enthält, Feststellen, ob ein Befehlszeiger eines Ziels der Rückwärtsverzweigung gleich einem Befehlszeiger eines Trace-Kopfes ist; und Aufbauen wenigstens einer weiteren Kopie der Schleife, wenn der Befehlszeiger des Ziels gleich dem Befehlszeiger des Trace-Kopfes ist.
  19. Das Computersystem nach Anspruch 17, wobei das Entrollen der Schleifen einschließt: Feststellen, ob eine aktuelle Trace eine Schleife enthält, indem festgestellt wird, ob die aktuelle Trace eine Rückwärtsverzweigung enthält; Gewinnen einer Vorhersage einer erwarteten Anzahl von Iterationen der Schleife, wenn die aktuelle Trace die Schleife enthält; und Aufbauen einer Anzahl weiterer Kopien der Schleife, wobei die Anzahl der weiteren Kopien der Schleife gleich der erwarteten Anzahl von Iterationen der Schleife ist, wenn die erwartete Anzahl von Iterationen der Schleife geringer als eine Maximalanzahl ist.
  20. Ein Verfahren zum Entrollen von Schleifen in einem Trace-Cache, umfassend die Schritte: Feststellen, ob eine aktuelle Trace eine Schleife enthält, indem festgestellt wird, ob die aktuelle Trace eine Rückwärtsverzweigung enthält; sofern die aktuelle Trace die Schleife enthält, Feststellen, ob ein Befehlszeiger eines Ziels der Rückwärtsverzweigung gleich einem Befehlszeiger eines Trace-Kopfes ist; und Aufbauen wenigstens einer weiteren Kopie der Schleife, wenn der Befehlszeiger des Ziels gleich dem Befehlszeiger des Trace-Kopfes ist.
  21. Das Verfahren nach Anspruch 20, wobei der Schritt des Aufbauens wenigstens einer weiteren Kopie der Schleife ein Aufbauen weiterer Kopien der Schleife einschließt, bis eine Länge der aktuellen Trace größer als eine Minimallänge ist.
  22. Ein Verfahren zum Entrollen von Schleifen in einem Trace-Cache, umfassend die Schritte: Feststellen, ob eine aktuelle Trace eine Schleife enthält, indem festgestellt wird, ob die aktuelle Trace eine Rückwärtsverzweigung enthält; Gewinnen einer Vorhersage einer erwarteten Anzahl von Iterationen der Schleife, wenn die aktuelle Trace die Schleife enthält; und Aufbauen einer Anzahl weiterer Kopien der Schleife, wobei die Anzahl der weiteren Kopien der Schleife gleich der erwarteten Anzahl von Iterationen der Schleife ist, sofern die erwartete Anzahl von Iterationen der Schleife geringer als eine Maximalanzahl ist.
DE60008148T 1999-12-30 2000-11-16 System und verfahren zum abrollen von schleifen in einem trace-cache Expired - Lifetime DE60008148T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US475061 1990-02-05
US09/475,061 US6578138B1 (en) 1999-12-30 1999-12-30 System and method for unrolling loops in a trace cache
PCT/US2000/031461 WO2001050255A1 (en) 1999-12-30 2000-11-16 System and method for unrolling loops in a trace cache

Publications (2)

Publication Number Publication Date
DE60008148D1 DE60008148D1 (de) 2004-03-11
DE60008148T2 true DE60008148T2 (de) 2004-09-09

Family

ID=23886096

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60008148T Expired - Lifetime DE60008148T2 (de) 1999-12-30 2000-11-16 System und verfahren zum abrollen von schleifen in einem trace-cache

Country Status (7)

Country Link
US (1) US6578138B1 (de)
EP (1) EP1242875B1 (de)
AT (1) ATE259080T1 (de)
AU (1) AU1614601A (de)
DE (1) DE60008148T2 (de)
HK (1) HK1046557B (de)
WO (1) WO2001050255A1 (de)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6976150B1 (en) 2000-04-06 2005-12-13 The Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations Resource flow computing device
US7757065B1 (en) * 2000-11-09 2010-07-13 Intel Corporation Instruction segment recording scheme
US7457917B2 (en) * 2004-12-29 2008-11-25 Intel Corporation Reducing power consumption in a sequential cache
US7689772B2 (en) * 2006-05-04 2010-03-30 Intel Corporation Power-performance modulation in caches using a smart least recently used scheme
US20080215804A1 (en) * 2006-09-25 2008-09-04 Davis Gordon T Structure for register renaming in a microprocessor
US20080077778A1 (en) * 2006-09-25 2008-03-27 Davis Gordon T Method and Apparatus for Register Renaming in a Microprocessor
US7610449B2 (en) * 2006-10-04 2009-10-27 International Business Machines Corporation Apparatus and method for saving power in a trace cache
US7644233B2 (en) * 2006-10-04 2010-01-05 International Business Machines Corporation Apparatus and method for supporting simultaneous storage of trace and standard cache lines
US8386712B2 (en) * 2006-10-04 2013-02-26 International Business Machines Corporation Structure for supporting simultaneous storage of trace and standard cache lines
US7934081B2 (en) * 2006-10-05 2011-04-26 International Business Machines Corporation Apparatus and method for using branch prediction heuristics for determination of trace formation readiness
US20080250206A1 (en) * 2006-10-05 2008-10-09 Davis Gordon T Structure for using branch prediction heuristics for determination of trace formation readiness
US20080250207A1 (en) * 2006-11-14 2008-10-09 Davis Gordon T Design structure for cache maintenance
US20080114964A1 (en) * 2006-11-14 2008-05-15 Davis Gordon T Apparatus and Method for Cache Maintenance
US20080120468A1 (en) * 2006-11-21 2008-05-22 Davis Gordon T Instruction Cache Trace Formation
US20080235500A1 (en) * 2006-11-21 2008-09-25 Davis Gordon T Structure for instruction cache trace formation
US8621149B2 (en) * 2009-12-23 2013-12-31 Intel Corporation Controlling access to a cache memory using privilege level information
US9348587B2 (en) 2010-07-09 2016-05-24 Hyperion Core, Inc. Providing code sections for matrix of arithmetic logic units in a processor
US9389860B2 (en) * 2012-04-02 2016-07-12 Apple Inc. Prediction optimizations for Macroscalar vector partitioning loops
US9753733B2 (en) * 2012-06-15 2017-09-05 Apple Inc. Methods, apparatus, and processors for packing multiple iterations of loop in a loop buffer
US10915322B2 (en) * 2018-09-18 2021-02-09 Advanced Micro Devices, Inc. Using loop exit prediction to accelerate or suppress loop mode of a processor
US20210200550A1 (en) * 2019-12-28 2021-07-01 Intel Corporation Loop exit predictor
US20240028339A1 (en) * 2022-07-25 2024-01-25 Apple Inc. Using a Next Fetch Predictor Circuit with Short Branches and Return Fetch Groups

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU3776793A (en) 1992-02-27 1993-09-13 Intel Corporation Dynamic flow instruction cache memory
US6170038B1 (en) 1997-10-23 2001-01-02 Intel Corporation Trace based instruction caching
US6018786A (en) 1997-10-23 2000-01-25 Intel Corporation Trace based instruction caching
US6076144A (en) * 1997-12-01 2000-06-13 Intel Corporation Method and apparatus for identifying potential entry points into trace segments

Also Published As

Publication number Publication date
US6578138B1 (en) 2003-06-10
DE60008148D1 (de) 2004-03-11
AU1614601A (en) 2001-07-16
HK1046557A1 (en) 2003-01-17
EP1242875A1 (de) 2002-09-25
WO2001050255A1 (en) 2001-07-12
EP1242875B1 (de) 2004-02-04
HK1046557B (zh) 2004-12-03
ATE259080T1 (de) 2004-02-15

Similar Documents

Publication Publication Date Title
DE60008148T2 (de) System und verfahren zum abrollen von schleifen in einem trace-cache
DE69332022T2 (de) System und verfahren zur dynamischen cachespeicherverwaltungssteuerung.
DE3280428T2 (de) Datenspeichersystem fuer einen arbeitsrechner.
DE3588009T2 (de) Vorrichtung und Verfahren zum Rekonfigurieren eines Speichers in einer Datenverarbeitungsanordnung.
DE3724317C2 (de)
DE19983589B4 (de) Hochfrequenz-Pipeline-Entkopplungswarteschlangengestaltung
DE69719239T2 (de) Hardware-Anordnung zur optimierten Vorausholung von Befehlen und Daten
DE2515696C2 (de) Datenverarbeitungssystem
DE69322683T2 (de) Verfahren und Vorrichtung zur Durchführung eines pseudo-LRU Cachespeicherersetzungsschemas mit einer Verriegelungsfunktion
DE2350884C2 (de) Adreßumsetzungseinheit
DE69715328T2 (de) System und Verfahren zur Parallelisierung der Durchführung von Speichertransaktionen mittels mehreren Speichermodellen
DE69133302T2 (de) Registerabbildung in einem einzigen Taktzyklus
DE69032781T2 (de) System und Verfahren zur Optimierung von Cachespeicherung in einem auf Plattenspeicher basierendem Rechnersystem
DE69913984T2 (de) Verteiltes transaktionales verarbeitungssystem und verfahren
DE112011102076B4 (de) Neuordnen des Zugriffs zum Verringern der Gesamtsuchzeit auf Bandmedien
DE69325774T2 (de) Programmierbare Externspeichersteuerungseinrichtung
DE69622647T2 (de) Wiederherstellbares Plattensteuersystem mit nichtflüchtigem Speicher
DE2719635A1 (de) Anordnung fuer eine erweiterung einer mikroprogrammsteuerung einer datenverarbeitungsanlage
DE19945993B4 (de) Plattenschreibvollendungssystem
DE4213073A1 (de) Cache-steuergeraet und verfahren zur auswahl eines pfades eines cache-verzeichnisses bei einem zeilen-fuell-zyklus
DE60127520T2 (de) Prozessor mit Befehlscache mit niedrigem Stromverbrauch
DE19526008A1 (de) Vertikal partitionierter, primärer Befehls-Cache-Speicher
EP1079307B1 (de) Verfahren zum Betrieb eines Speichersystems sowie Speichersystem
DE4034009A1 (de) Verfahren zur befehlsabrufsteuerung
DE19842677A1 (de) Speicherzugriff-Steuerschaltung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition