DE102013202992A1 - Energieeinsparung bei Verzweigungsvorhersage - Google Patents

Energieeinsparung bei Verzweigungsvorhersage Download PDF

Info

Publication number
DE102013202992A1
DE102013202992A1 DE102013202992A DE102013202992A DE102013202992A1 DE 102013202992 A1 DE102013202992 A1 DE 102013202992A1 DE 102013202992 A DE102013202992 A DE 102013202992A DE 102013202992 A DE102013202992 A DE 102013202992A DE 102013202992 A1 DE102013202992 A1 DE 102013202992A1
Authority
DE
Germany
Prior art keywords
branch
instruction
branch prediction
cache
prediction unit
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.)
Pending
Application number
DE102013202992A
Other languages
English (en)
Inventor
Aneesh Aggarwal
Ross Segelken
Kevin Koschoreck
Paul Wasson
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.)
Nvidia Corp
Original Assignee
Nvidia 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 Nvidia Corp filed Critical Nvidia Corp
Publication of DE102013202992A1 publication Critical patent/DE102013202992A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/323Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

In einem Ausführungsbeispiel wird ein Microprozessor beschrieben. Der Microprozessor enthält einen Instruktionsspeicher und eine Verzweigungsvorhersageeinheit. Die Verzweigungsvorhersageeinheit ist konfiguriert, um Informationen aus dem Instruktionsspeicher zu nutzen, um selektiv die Verzweigungsvorhersageeinheit von einem ausgeschalteten Zustand einzuschalten, wenn Instruktionsdaten eine Verzweigungsinstruktion enthält, und um die Verzweigungsvorhersageeinheit in einem ausgeschalteten Zustand zu belassen, wenn die aufgerufenen Instruktionsdaten keine Verzweigungsinstruktion aufweisen, um die Leistungsaufnahme des Microprozessors während Instruktionsaufrufoperationen zu reduzieren.

Description

  • HINTERGRUND
  • Microprozessoren nutzen typischerweise eine Verzweigungsvorhersageeinheit, um eine Vorhersage zu treffen, ob eine Verzweigungsinstruktion während der Ausführung der Instruktion genommen wird, und um das Ziel einer wie vorhergesagt genommenen Verzweigung vorherzusagen. Die Verzweigungsvorhersagen verbessern den Datenfluss und verringern die Wahrscheinlichkeit, dass sich in einer Instruktions-Pipeline ein Stau bildet. Indem der Microprozessor eine Verzweigungsvorhersage macht, muss er, genauer gesagt, nicht warten, bis eine Verzweigungsinstruktion die Ausführungsphase der Pipeline passiert hat, bevor die nächste Instruktion in die Aufrufphase in der Pipeline eintreten kann. Die Verzweigungsvorhersageeinheit sagt vorher, ob ein bedingter Sprung mit größter Wahrscheinlichkeit stattfinden wird oder nicht. Die Instruktionen am vorhergesagten Ziel der Verzweigung werden dann aufgerufen und spekulativ ausgeführt. Ist die Verzweigungsvorhersage zutreffend, fährt die Instruktions-Pipeline fort, Instruktionen auszuführen, während sie die Wahrscheinlichkeit reduziert, dass sie Staublasen in der Pipeline erzeugt, und die Leistung der Pipeline wird erhöht. Ist andererseits die Verzweigungsvorhersage nicht korrekt, dann werden die spekulativ ausgeführten oder teilweise ausgeführten Instruktionen gelöscht und die Pipeline fängt mit dem korrekten Verzweigungsziel von vorne an, was zu einer Verzögerung führt.
  • In einem Ausführungsbeispiel wird eine Verzweigungsvorhersageeinheit parallel zu einem Instruktions-Cache eingeschaltet, wenn ein Instruktionsaufruf ausgeführt wird. Die Verzweigungsvorhersageeinheit wird eingeschaltet, um eine Verzweigungsvorhersage für die Instruktionsdaten nachzuschlagen, die aus dem Instruktions-Cache aufgerufen werden. Mit anderen Worten, jedes Mal, wenn die Instruktionsdaten im Instruktions-Cache nachgeschlagen werden, wird auch die Verzweigungsvorhersageeinheit eingeschaltet.
  • Diese Vorgehensweise zur Steuerung der Verzweigungsvorhersageeinheit weist jedoch verschiedene Einschränkungen auf. In Fällen, in denen beispielsweise ein Instruktionsaufruf an eine Cacheline ausgeführt wird, die zuvor aus dem Instruktions-Cache aufgerufen wurde, und wenn die Instruktionsdaten keine Verzweigungen enthalten, wird die Energie, die beim Nachschlagen der Verzweigungsvorhersage in der Verzweigungsvorhersageeinheit verbraucht wird, verschwendet, weil die Instruktionsdaten keine Verzweigungsinstruktion enthalten. Anders ausgedrückt, in diesem Verfahren wird die Verzweigungsvorhersageeinheit während jeder Instruktionsaufrufoperation eingeschaltet, ganz gleich, ob die Instruktionsdaten eine Verzweigungsinstruktion enthalten oder nicht. Dieses Vorgehen zur Steuerung der Verzweigungsvorhersageeinheit verursacht entsprechend unnötigen Energieverbrauch, wenn die Verzweigungsvorhersageeinheit eingeschaltet wird, um Instruktionsaufrufe von Instruktionsdaten auszuführen, die keine Verzweigungsinstruktion enthalten.
  • ZUSAMMENFASSUNG
  • Es gibt verschiedene Ausführungsbeispiele, die die Steuerung einer Verzweigungsvorhersageeinheit eines Microprozessors im Hinblick darauf betreffen, wie dessen Energieverbrauch reduziert wird, ohne zugleich die Leistung des Microprozessors signifikant zu senken. In einem Ausführungsbeispiel umfasst ein Microprozessor Aufruflogik, eine Verzweigungsvorhersageeinheit. Die Aufruflogik kann konfiguriert sein, mit dem Instruktions-Cache zu interagieren, um Instruktionsdaten für die Ausführung zu holen. Die Verzweigungsvorhersageeinheit kann operativ mit der Aufruflogik gekoppelt sein. Die Verzweigungsvorhersageeinheit kann eine Verzweigungssteuerung umfassen. Diese Verzweigungssteuerung kann so konfiguriert sein, dass sie einen Hinweis auf Vorliegen einer Verzweigung empfängt, der anzeigt, ob die Instruktionsdaten an der Lokation im Instruktions-Cache eine Verzweigungsinstruktion enthalten. Die Verzweigungssteuerung kann so konfiguriert sein, dass sie während eines Aufrufs von Instruktionsdaten aus einer Lokation im Instruktions-Cache die Verzweigungsvorhersageeinheit aus dem ausgeschalteten Zustand einschaltet, sobald der Verzweigungspräsenzhinweis darauf hinweist, dass die Instruktionsdaten eine Verzweigungsinstruktion aufweisen. Die Verzweigungssteuerung kann konfiguriert sein, die Verzweigungsvorhersageeinheit während des Aufrufs von Instruktionsdaten im ausgeschalteten Zustand zu belassen, wenn der Verzweigungspräsenzhinweis darauf hinweist, dass die Instruktionsdaten keine Verzweigungsinstruktion enthalten.
  • KURZE BESCHREIBUNG DER FIGUREN
  • 1 zeigt ein Ausführungsbeispiel eines Microprozessors einer Recheneinheit in Übereinstimmung mit der vorliegenden Offenbarung.
  • 2 zeigt ein Ausführungsbeispiel einer Verarbeitungspipeline eines Computers in Übereinstimmung mit der vorliegenden Offenbarung.
  • 3 zeigt schematisch den Abschnitt eines Ausführungsbeispiels eines Instruktions-Cache.
  • 4 zeigt ein Szenario, in dem eine Umleitung bei der Mitte einer Cacheline vorgenommen wird.
  • Die 5 bis 10 zeigen Ausführungsbeispiele von Verfahren zur Steuerung eines Microprozessors.
  • 11 zeigt einen Zeitablauf einer exemplarischen Verzweigungsvorhersageeinheit-Operation in Übereinstimmung mit der vorliegenden Offenbarung.
  • DETAILLIERTE BESCHREIBUNG
  • Die aktuelle Erörterung beschreibt neuartige Systeme und Verfahren, die die Steuerung einer Verzweigungsvorhersageeinheit eines Microprozessors im Hinblick darauf betreffen, dass der Energieverbrauch reduziert wird, ohne zugleich die Leistung des Microprozessors signifikant zu senken. Die aktuelle Erörterung betrifft besonders das Optimieren der Steuerung einer Verzweigungsvorhersageeinheit zwecks Stromverbrauchsenkung, indem überwacht wird, ob zuvor aufgerufene Instruktionsdaten, die in einem Instruktions-Cache abgelegt sind, irgendwelche Verzweigungen enthalten. Wenn beispielsweise eine Instruktion zuvor aus dem Instruktions-Cache geholt worden ist, wird die Instruktion dahingehend validiert, ob sie eine Verzweigungsinstruktion an einer Stelle in der Verarbeitungs-Pipeline des Microprozessors enthält oder nicht. Diese Überwachungsinformation kann im Instruktions-Cache abgelegt und dazu verwendet werden, die Verzweigungsvorhersageeinheit während nachfolgender Aufrufe der Instruktion aus dem Instruktions-Cache zu steuern. Die Verzweigungsvorhersageeinheit wird ausgeschaltet (oder in einem ausgeschalteten Zustand zu belassen), wenn eine zuvor aufgerufene Cacheline, die keine Verzweigungsinstruktionen enthält, aus dem Instruktions-Cache aufgerufen wird. Dementsprechend lassen sich unnötige Aktivierungen der Verzweigungsvorhersageeinheit reduzieren. Auf diese Weise lässt sich der Stromverbrauch bei Verfahren verringern, bei denen sich eine Verzweigungsvorhersageeinheit jedes Mal dann eingeschaltet wird, wenn eine Instruktion aus dem Instruktions-Cache aufgerufen wird.
  • Die Überwachungsinformation lässt sich in der Verzweigungsvorhersageeinheit ablegen und dazu verwenden, zu bestimmen, ob eine Cacheline an einer Zieladresse einer genommenen Verzweigung eine Verzweigungsinstruktion enthält. Wenn beispielsweise die Verzweigungsvorhersageeinheit eine genommene Verzweigung vorhersagt und es tritt eine Umleitung zur Zieladresse auf, kann die Nachverfolgungsinformation dazu genutzt werden, die Verzweigungsvorhersageeinheit für die anfänglichen Instruktionsaufrufe, die auf die Umleitung folgen, zu steuern. Die Verzweigungsvorhersageeinheit wird ausgeschaltet (oder in ausgeschalteten Zustand zu belassen), wenn die anfänglichen Cachelines, die auf die Umleitung folgen, keine Verzweigungsinstruktion enthalten. Wird die Verzweigungsvorhersageeinheit vom Eingeschaltetwerden abgehalten und es gibt keine Verzweigungen in den verknüpften Instruktionen nach der Umleitung, wird ohne Leistungsverlust Strom gespart, im Vergleich zu Verfahren, bei denen die Verzweigungsvorhersageeinheit jedes Mal dann eingeschaltet wird, wenn eine Instruktion aus dem Instruktions-Cache aufgerufen wird.
  • Indem man überwacht, ob Zielinstruktionen auch Verzweigungsinstruktionen umfassen, kann man die Verzweigungsvorhersageeinheit selektiv ausschalten (oder in einem ausgeschalteten Zustand belassen), sobald eine Umleitung erfolgt ist und bevor Informationen aus dem Instruktions-Cache vorliegen. Dementsprechend kann der Stromverbrauch sogar während eines oder mehrerer Taktzyklen, die direkt auf eine Umleitung folgen, gesenkt werden. Wird die Verzweigungsvorhersageeinheit hingegen nur aufgrund der Überwachungsinformationen gesteuert, die im Instruktions-Cache vorliegen, kann nach der Umleitung eine Verzögerung in der Steuerung auftreten, während das System darauf wartet, dass diese Überwachungsinformationen aus dem Instruktions-Cache verfügbar werden.
  • 1 zeigt schematisch einen Microprozessor 100, den man in Verbindung mit den Systemen und Verfahren, die hier beschrieben werden, verwenden kann. Der Microprozessor 100 umfasst beziehungsweise kommuniziert mit einer Speicherhierarchie 110, die einen L1-Prozessor-Cache umfasst, einen L2-Prozessor-Cache 114, einen L3-Prozessor-Cache 116, Hauptspeicher 118 (beispielsweise einen oder mehr DRAM-Chips), die sekundäre Storage-Einheit 120 (z. B. magnetische und/oder optische Speichereinheiten) und/oder die tertiäre Storage-Einheit 122 (z. B. eine Tape-Bibliothek). Diese Speicher- bzw. Storage-Einheiten, so wird man verstehen, werden gemäß einer aufsteigenden Rangfolge hinsichtlich Zugriffszeit und Speicherkapazität aufgeführt, obwohl es mögliche Ausnahmen gibt. Eine Speichersteuerung 124 handhabt die Protokolle und stellt die Signalschnittstelle zur Verfügung, die der Hauptspeicher 118 benötigt, und typischerweise um die Speicherzugriffe zu terminieren. Die Speichersteuerung kann auf dem Prozessorsockel oder auf einem anderen Sockel implementiert werden. Die oben angegebene Speicherhierarchie, so soll verstanden werden, ist nicht einschränkend gedacht, und es lassen sich andere Speicherhierarchien verwenden, ohne den thematischen Umfang dieser Offenbarung zu verlassen. Bei der gezeigten Speicherhierarchie handelt es sich um eine exemplarische Illustration und selbstverständlich können andere Speicherhierarchien genutzt werden, ohne vom Sinn der vorliegenden Offenbarung abzuweichen.
  • Der Microprozessor 100 weist Aufruflogik 126, Dekodierlogik 128, Ausführungslogik 130, Mem-Logik 132 und Rückschreiblogik 134 auf. Die Aufruflogik 126 ist konfiguriert, um mit dem Befehlsspeicher so zu interagieren, dass sie Instruktionen aus der Speicherhierarchie 110 holt (typischerweise aus dem L1-Befehls-Cache, der von den L2- bis L3-Caches und dem Hauptspeicher gestützt wird). Eine Verzweigungsvorhersageeinheit 220 (in 2 gezeigt), die operativ mit der Aufruflogik 126 gekoppelt ist, stellt selektiv Verzweigungsvorhersagen für Instruktionen bereit, die aus dem Instruktions-Cache 206 aufgerufen werden. Die Verzweigungsvorhersageeinheit 220 kann gemäß den hier beschriebenen Systemen und Verfahren gesteuert werden, um den Stromverbrauch des Microprozessors 100 zu senken, wenn er Instruktionsaufrufoperationen oder andere Operationen ausführt.
  • Die Dekodierlogik 128 entschlüsselt aufgerufene Instruktionen, so etwa Parsing-Opcodes, Operanden und Adressiermodi. Sobald sie „geparst” worden sind, werden die Instruktionen von der Ausführlogik 130 ausgeführt. Bei Operationen, die ein Ergebnis liefern (im Gegensatz etwa zu solchen, die eine Verzweigung auf eine andere Lokation des ausführten Programms ausführen), schreibt die Rückschreiblogik 134 das Ergebnis an eine geeignete Lokation, wie etwa ein Prozessorregister. In Lade/Speichern-Architekturen führt die Mem-Logik 132 Lade- und Speichern-Operationen aus, so etwa das Laden eines Operanden aus dem Hauptspeicher in ein Prozessorregister.
  • Es sollte verstanden werden, dass die oben genannten fünf Phasen bis zu einem gewissen Grad spezifisch sind für und enthalten sind in einer typischen Implementierung des Reduced Instruction Set Computings (RISC). In einer allgemeineren Form kann ein Microprozessor-Logik für das Aufrufen, Dekodieren und Ausführen aufweisen, wobei die Ausführungslogik auch die Funktionen Mem und Rückschreiben erledigt. Die vorliegende Offenbarung ist gleichermaßen auf diese wie auch andere Implementierungen eines Microprozessors anwendbar.
  • In den beschriebenen Beispielen können Instruktionen eine nach der anderen aufgerufen und ausgeführt werden, was möglicherweise mehrere Taktzyklen erfordert. Während dieser Zeit kann es vorkommen, dass bedeutende Abschnitte des Datenpfades ungenutzt sind. Anstelle von oder als Ergänzung zu Einzelbefehlaufrufen können auch Voraufruf-Verfahren genutzt werden, um die Leistung zu erhöhen und Latenzzeit-Flaschenhälse zu vermeiden, die mit Lese- und Schreib-Operationen verbunden sind (das heißt, das Lesen von Befehlen und das Laden solcher Instruktionen in Prozessorregister und/oder Ausführungswarteschlangen). Darüber hinaus können mehrere Instruktionen jederzeit aufgerufen werden, um die Leistung zu erhöhen.
  • Um eine höhere Leistung zu erzielen, können die beispielhaften Microprozessoren so pipelined werden, dass sie Parallelismus auf der Befehlsebene ausnutzen und den Datenpfad effizienter nutzen, so dass es zum gleichen Zeitpunkt mehrere Befehle in verschiedenen Phasen ihrer Ausführung gibt. 2 zeigt ein Ausführungsbeispiel einer Verarbeitungs-Pipeline 200, das in einem Microprozessor 100 verwendet werden kann (wie in 1 dargestellt), in Einklang mit der aktuellen Beschreibung. 2 konzentriert sich auf einen Abschnitt der Befehlsaufrufphase (instruction fetch, IF) 126 der Verarbeitungs-Pipeline 200. Die aktuelle Erörterung konzentriert sich auf die Steuerungskomponenten in der IF-Phase 126 während der IF-Operationen, um den Stromverbrauch der Verarbeitungs-Pipeline zu senken. Die IF-Phase 126 umfasst einen Programmzähler 202, die die Speicheradresse einer Instruktion überwacht, die in einer Befehlssequenz der Verarbeitungs-Pipeline ausgeführt werden soll. Der Programmzähler 202 schickt die Adresse einer auszuführenden Instruktion an einen Befehlsspeicher 204 und eine Verzweigungsvorhersageeinheit 220. Der Befehlsspeicher 204 enthält einen Instruktions-Cache 206 und eine Schnittstelle zu einem Storage-Gerät für Speicher eines höheren Levels 218 (z. B. Cache eines höheren Levels oder andere Speichersubsysteme). Man beachte, dass der Befehlsspeicher und die Verzweigungsvorhersageeinheit in vereinfachter Form dargestellt sind, und man wird verstehen, dass diese logischen Einheiten als Zusatz oder Alternative verschiedene andere Strukturen und möglicherweise mehrere Pipeline-Phasen umfassen können. In manchen Ausführungsbeispielen kann zum Beispiel der Befehlsspeicher einen On-Chip-Speicher aufweisen, der seinerseits mehrere Cachespeicher enthält, die auf einem Prozessorkern lokalisiert sind. Eine Schnittstelle zum Speicher eines höheren Levels kann mit Speicher interagieren, der sich außerhalb des Chips befindet, wie etwa Hauptspeicher, der sich nicht auf dem Prozessorkern befindet, um auf diese Weise Instruktionsdaten aus dem Hauptspeicher oder anderen Off-Chip-Speichereinheiten in den Befehlsspeicher zu laden.
  • Der Instruktions-Cache 206 agiert als Pufferspeicher zwischen der Schnittstelle 218 zu Speichereinheiten eines höheren Levels und den Phasen der Verarbeitungs-Pipeline 200. Wenn Instruktionen aufgerufen werden, werden die Daten an derjenigen Lokation, auf die die Programmzähler-(202)-Lokationen, die von den Instruktionen angefordert werden, verweisen, in den Instruktions-Cache 206 kopiert, um durch die Verarbeitungs-Pipeline 200 geschickt zu werden. Werden die gleichen Instruktionsdaten häufig in einem Satz Programminstruktionen verwendet, liefert die Speicherung dieser Instruktionen im Instruktions-Cache 206 einen höheren Durchsatz, denn es erfolgen weniger Abrufe von Instruktionen aus den Speichereinheiten höheren Levels über die Schnittstelle 218. Werden die Daten für eine Instruktion hingegen nicht im Instruktions-Cache 206 zwischengespeichert, wird auf die Speichereinheiten höheren Levels über die Schnittstelle 218 zugegriffen, um die Daten abzurufen.
  • 3 zeigt einen Abschnitt des Instruktions-Cache 206, und hier soll im Folgenden zwecks Erörterung des Instruktions-Cache 206 darauf Bezug genommen werden. Der Instruktions-Cache 206 enthält einen Speicherraum, der in eine Mehrzahl von Speicherlokationen aufgeteilt ist, die man als 'Cachelines' bezeichnen kann. Auf ein Beispiel dafür ist unter 302 hingewiesen. In einem bestimmten Beispiel umfasst eine Cacheline 64 Byte. Die Mehrzahl der Cachelines ist logisch unterteilt in eine Mehrzahl von Cacheline-Sets, wofür ein Beispiel unter 304 zu finden ist. In einem bestimmten Beispiel umfasst der Instruktions-Cache 512 Cacheline-Sets, von denen vier (d. h. die Sets N – N + 3) in 3 dargestellt sind. Es versteht sich, dass der Instruktions-Cache jede beliebige Anzahl von Cacheline-Sets umfassen kann, dass jede der Cachelines jede geeignete Größe aufweisen kann und sich die Cachelines unterscheiden können, ohne vom Umfang der vorliegenden Offenbarung abzuweichen.
  • Die Anzahl der Cachelines in einem Cacheline-Set kann die Anzahl der Lokationen im Instruktions-Cache bestimmen, auf die jede einzelne Lokation im Hauptspeicher abgebildet werden kann. Im abgebildeten Beispiel umfasst der Instruktions-Cache ein Set-assoziatives Vier-Wege-Feld, in dem jedes Set von Cachelines assoziativ ist und vier Wege umfasst, in denen sich Instruktionsdaten ablegen lassen. Es versteht sich, dass der Instruktions-Cache jede geeignete Anzahl von Wegen oder Datenlokationen in einem Cacheline-Set (z. B. Zwei-Wege, Acht-Wege, vollständig assoziativ usw.) enthalten kann, ohne vom Umfang der vorliegenden Offenbarung abzuweichen.
  • Jede Cacheline des Instruktions-Cache 206 ist in verschiedene Bitfelder unterteilt, die unterschiedliche Informationen bereitstellen. Die LRU-Bits 306 weisen auf einen zuletzt genutzten (oder zuletzt zugegriffenen) Weg in einem Cacheline-Set hin. Die Verzweigungspräsenz-Bits 308 liefern einen Verzweigungspräsenzhinweis, der darauf hinweist, ob ein zuletzt genutzter Weg in einem Cacheline-Set eine Verzweigungsinstruktion enthält. Man beachte, dass die Verzweigungspräsenz-Bits auf einer Pro-Set-Basis implementiert sind, um den Bedarf an Speicherplatz zu reduzieren. Es versteht sich jedoch, dass die Verzweigungspräsenz-Bits auch auf einer Pro-Cacheline-Basis oder als eine andere geeignete Verzweigungspräsenzindikation implementiert werden können, ohne aus dem Rahmen der vorliegenden Offenbarung zu fallen. In einem bestimmten Beispiel sind die Verzweigungspräsenz-Bits so gesetzt, dass sie darauf hinweisen, dass Instruktionsdaten, die auf einem zuletzt genutzten Weg abgelegt sind, eine Verzweigungsinstruktion enthalten; und die Verzweigungspräsenz-Bits werden gelöscht, um damit anzuzeigen, dass Instruktionsdaten, die auf einem zuletzt genutzten Weg abgelegt sind, keine Verzweigungsinstruktion enthalten. Die Tag-Bits 310 identifizieren einen bezeichneten Weg, auf dem Instruktions-Bytes, die mit der Adresse korrespondieren, abgelegt sind. Die Daten-Bits 312 speichern die Instruktions-Bytes, die mit der Adresse korrespondieren. In dem dargestellten Beispiel sind die die Daten-Bits 312 jeder Cacheline in eine niedere und eine hohe Hälfte aufgeteilt, denn jede Instruktionsaufruf-Leseoperation, die der Instruktions-Cache ausführt, ruft eine Hälfte von Cacheline-Daten ab, wenn es einen Treffer gibt. Es versteht sich, dass sich jede geeignete Datenmenge während einer Instruktionsaufruf-Leseoperation abrufen lässt, ohne aus dem Rahmen der vorliegenden Offenbarung zu fallen.
  • Die verschiedenen Bit-Felder jeder Cacheline sind in verschiedene Feldern organisiert, die von einer Cache-Steuerung 216 gesteuert werden. Genauer gesagt, umfasst der Instruktions-Cache 206 ein LRU-Feld 208, ein Tag-Feld 212 und ein Datenfeld 214. Das LRU-Feld 208 enthält die LRU-Bits 306 und die Präsenz-Bits 308 für jedes Cacheline-Set im Instruktions-Cache 206. Das Tag-Feld 212 umfasst die Tag-Bits für jede Cacheline im Instruktions-Cache 206. Das Datenfeld 214 umfasst die Datenbits 312 für jede Cacheline im Instruktions-Cache 206. Man beachte, dass die Verzweigungspräsenz-Bits in jedem geeigneten Feld des Instruktions-Cache oder einer anderen Lokation abgelegt werden könnten, ohne aus dem Rahmen der vorliegenden Offenbarung zu fallen.
  • Die Cache-Steuerung 216 ist konfiguriert, jede bezeichnete Lokation in jedem der LRU-Felder 208, Tag-Felder 212 und/oder den Datenfeldern 214 nachzuschlagen (also zuzugreifen oder zu aktivieren), um während einer Instruktionsaufrufoperation die korrespondierenden Bits abzurufen. Es versteht sich, dass der Instruktions-Cache hier in vereinfachter Form bereitgestellt wird und in manchen Implementierungen der Instruktions-Cache, ohne aus dem Rahmen dieser Offenbarung zu fallen, alternative oder zusätzliche Feldstrukturen umfassen kann, die weitere Daten enthalten. Man beachte, dass der Standardzustand des Instruktions-Cache 206 in manchen Implementierungen ein ausgeschalteter Zustand oder ein Zustand mit reduzierter Stromzufuhr ist, und dass die Cache-Steuerung konfiguriert ist, den Instruktions-Cache selektiv einzuschalten oder, genauer gesagt, Felder im Instruktions-Cache, in denen sich Daten nachschlagen lassen.
  • Die Verzweigungsvorhersageeinheit 220 ist konfiguriert vorherzusagen, ob eine Verzweigung genommen wird, wenn eine Verzweigungsinstruktion in der Verarbeitungs-Pipeline 200 ausgeführt wird. Die Verzweigungsvorhersageeinheit 220 umfasst Vorhersagestrukturen, die einen Zustand speichern, der dazu verwendet wird, die Existenz und die Richtung von Verzweigungen in den aufgerufenen Daten vorherzusagen. Die Vorhersagestrukturen der Verzweigungsvorhersageeinheit 220 lassen sich parallel zu den Feldern im Instruktions-Cache 206 mit Strom versorgen. Die Verzweigungsvorhersageeinheit 220 liefert eine Vorhersage der Existenz und der Richtung aller Verzweigungen wie auch des Zieles der ersten genommenen Verzweigung in den Instruktionsdaten, die aus dem Instruktions-Cache 206 aufgerufen werden. Die Verzweigungsvorhersage wird von der Verzweigungsvorhersageeinheit 220 in der gleichen Pipeline-Phase (oder Zyklus der Takt) erzeugt, in der auch der Instruktions-Cache 206 die aufgerufenen Instruktionsdaten produziert, falls ein Cache-Treffer erfolgt. In einem bestimmten Beispiel erfordern der Instruktions-Cache 206 und die Verzweigungsvorhersageeinheit 220 zwei Taktzyklen ab dem Beginn des Nachschlagens/Einschaltens bis zur Lieferung der Instruktionsdaten/Verzweigungsvorhersage. Man beachte, dass der Zugriff auf die Verzweigungsvorhersageeinheit 220 und den Instruktions-Cache 206 nicht gleichzeitig erfolgen muss. Es versteht sich, dass jede geeignete Konfiguration der Verarbeitungs-Pipeline genutzt werden kann, ohne vom Umfang der vorliegenden Offenbarung abzuweichen.
  • In dem dargestellten Ausführungsbeispiel weist die Verzweigungsvorhersageeinheit 220 Vorhersagestrukturen auf, zu denen ein Verzweigungsinformationspuffer 222, ein Verzweigungszielpuffer 224, ein Puffer für indirekte Ziele 228 und eine Vorhersagefunktion für bedingte Richtungen 230 gehören. Eine Verzweigungssteuerung 232 ist konfiguriert, die Tätigkeit dieser Strukturen beim Erstellen einer Verzweigungsvorhersage zu steuern. Genauer gesagt, die Verzweigungssteuerung 232 befiehlt diesen Strukturen, sich ein- oder auszuschalten, in Abhängigkeit von den hier beschriebenen Strategien, um Strom zu sparen. Man beachte, dass in manchen Implementierungen der Standardzustand der Verzweigungsvorhersageeinheit 220 in einem ausgeschalteten Stand-by- oder in einem ausgeschalteten Zustand besteht, und dass die Verzweigungssteuerung 232 konfiguriert ist, die Verzweigungsvorhersageeinheit selektiv einzuschalten, oder genauer gesagt, Vorhersagestrukturen in der Verzweigungsvorhersageeinheit zum Nachschlagen von Daten zu veranlassen.
  • Der Verzweigungsinformationspuffer 222 speichert eine Lokation und einen Art von Verzweigung, der an einer bestimmten Adresse, Paket oder Weg usw. gespeichert ist. Beispiele für verschiedene Verzweigungsarten, die sich im Verzweigungsinformationspuffer 222 speichern lassen, sind direkt, indirekt, bedingt, nicht bedingt usw. Der Verzweigungsinformationspuffer 222 kann von der Verzweigungssteuerung 232 ausgelesen werden, um eine Verzweigungsvorhersage für eine Instruktion zu generieren, die aus dem Instruktions-Cache 206 aufgerufen wird. Der Verzweigungszielpuffer 224 speichert Zieladressen für direkte Verzweigungen, die genommen werden. Der Verzweigungszielpuffer 224 enthält Verzweigungspräsenz-Bits 226, die einen Verzweigungspräsenzhinweis kennzeichnen, der mit der jeweiligen Zieladresse im Verzweigungszielpuffer 224 übereinstimmt. Die Verzweigungspräsenz-Bits 226 zeigen an, ob Instruktionsdaten, die an einer Zieladresse gespeichert sind, eine Verzweigungsinstruktion enthalten. Die Verzweigungspräsenz-Bits 226 lassen sich von der Verzweigungssteuerung 232 nutzen, um zu bestimmen, ob Strukturen der Verzweigungsvorhersageeinheit 220 zwecks Aufruf von Instruktionen nach einer Umleitung ein- oder ausgeschaltet werden sollen. Der Puffer für indirekte Ziele 228 speichert Zieladressen für indirekte Verzweigungen, die genommen werden. Obwohl die abgebildeten Ausführungsbeispiele zeigen, dass die Verzweigungspräsenz-Bits 226 im Verzweigungszielpuffer 224 gespeichert sind, können die Verzweigungspräsenz-Bits 226 in manchen Ausführungsbeispielen zusätzlich im Puffer für indirekte Ziele 228 oder jeder anderen geeigneten Struktur in der Verzweigungsvorhersageeinheit 220 gespeichert sein. Dementsprechend kann die Verzweigungssteuerung 232 verschiedene Vorhersagestrukturen einschalten, um die Verzweigungspräsenz-Bits wie auch die Verzweigungsvorhersage nachzuschlagen. Der Prädiktor für bedingte Richtungen 230 speichert eine bedingte Richtung (z. B. eingeschlagen/nicht eingeschlagen) für bedingte Verzweigungen. Es versteht sich, dass die Verzweigungsvorhersageeinheit hier in vereinfachter Form dargestellt ist und dass sie in manchen Implementierungen alternative oder zusätzliche Strukturen umfassen kann, die zusätzliche Daten enthalten, ohne dass dies aus dem Rahmen der aktuellen Offenbarung fällt. Man beachte, dass die Verzweigungspräsenz-Bits 226 in der Verzweigungsvorhersageeinheit 226 separat von den Verzweigungspräsenz-Bits 308 vorgehalten werden, die im Instruktions-Cache 206 vorgehalten werden. Die Verzweigungspräsenz-Bits 226 lassen sich von der Verzweigungsvorhersageeinheit 220 nutzen, um zu bestimmen, ob Instruktionsdaten an der Zieladresse einer Verzweigung einen Verzweigungsbefehl enthalten, wenn die Verzweigungspräsenz-Bits 308 aus dem Instruktions-Cache 208 wegen einer Umleitung nicht verfügbar sind.
  • Zurück zur Erörterung des Instruktions-Cache auf einem hohen Level. Während einer Befehlsabrufoperation initialisiert der Programmzähler 202 eine Instruktionsaufrufanfrage. Dabei bestimmt die Cache-Steuerung 216 ein Cacheline-Set, in dem eine Instruktion gespeichert sein kann, abhängig von der Adresse, die der Programmzähler 202 geschickt hat. In einem Beispiel aktiviert die Cache-Steuerung 216 alle vier Wege des Tag-Feldes 212 und des Daten-Feldes 214 für das Cacheline-Set, um zu bestimmen, ob es im Cacheline-Set einen „Hit” oder ein „Miss” gibt. Man beachte, dass die Cache-Steuerung 216 in manchen Implementierungen das Tag-Feld 212 und das Daten-Feld 214 parallel zueinander aktiviert, um die Tags und Daten für das Cacheline-Set nachzuschlagen. Im Fall von Treffern gibt die Cache-Steuerung 216 die Instruktion aus dem Instruktions-Cache 206 an ein Register in der Instruktionsdekodierungsphase 128 der Verarbeitungs-Pipeline aus. Während der Taktzyklen, die auf einen Cache-Treffer folgen, ruft die Cache-Steuerung 216 Instruktionen aus aufeinander folgenden Einträge im Instruktions-Cache auf, bis ein Pipeline-Stopp erfolgt oder es eine Umleitung wegen einer Verzweigung oder eines Ereignisses gibt.
  • In einem Beispiel ist die Cache-Steuerung 216 konfiguriert, einen zuletzt benutzten Weg in einem bezeichneten Cacheline-Set auf der Basis von LRU-Bits 306 zu bestimmen. Die Cache-Steuerung 216 kann den zuletzt benutzten Weg nutzen, um zu bestimmen, welche Instruktionsdaten zum Zweck der Erzeugung einer Verzweigungsvorhersage aufgerufen werden. Es versteht sich, dass die Cache-Steuerung den zuletzt benutzten Weg in einem Cacheline-Set auf jede geeignete Weise bestimmen kann, ohne aus dem Rahmen der vorliegenden Offenbarung zu fallen.
  • In einem Ausführungsbeispiel ist die Cache-Steuerung 216 konfiguriert, die LRU-Bits für vier aufeinander folgende Sets von Cachelines in einer einzigen Leseoperation des LRU-Feldes 208 in einem Takt-Zyklus nachzuschlagen. Mit anderen Worten, ein Nachschlagen der LRU-Bits identifiziert den zuletzt benutzten Weg in jedem der vier Cacheline-Sets. Die Anzahl der Cacheline-Sets, die mit der Lese-Operation korrespondieren, basiert auf der Implementierung des Instruktions-Caches, detaillierter gesagt, auf der Anzahl der LRU-Bits, die zur Beschreibung der Wege in einem Cacheline-Set und der Größe eines Cacheline verwendet werden. Es versteht sich, dass LRU-Bits für jede geeignete Anzahl von Cacheline-Sets mit Hilfe einer einzigen Lese-Operation geliefert werden können, ohne über den Umfang der aktuellen Offenbarung hinauszugehen.
  • Die Organisation des LRU-Feldes 208 lässt es zu, dass Informationen für mehrere aufeinander folgende Aufrufe aus nur einem Nachschlagen des LRU-Feldes gespeichert werden können. Im Rahmen einer Steuerungsstrategie der Verzweigungsvorhersageeinheit 220 lassen sich diese Daten dazu nutzen, die Aktivierung der Verzweigungsvorhersageeinheit 220 selektiv abzuschalten, während Instruktionen, die keine Verzweigungsinstruktion enthalten, aufgerufen werden. In einem Beispiel enthält das LRU-Feld 208 Verzweigungspräsenz-Bits 308 für jedes Cacheline-Set im Instruktions-Cache 206. Die Verzweigungspräsenz-Bits 308 zeigen an, ob ein zuletzt genutzter Weg in einem korrespondierenden Cacheline-Set eine Verzweigungsinstruktion enthält. Im abgebildeten Beispiel enthalten die Verzweigungspräsenz-Bits 308 zwei Verzweigungspräsenz-Bits pro Cacheline-Set. Jedes der zwei Verzweigungspräsenz-Bits repräsentiert eine andere Datenhälfte in einer Cacheline (z. B. ein Bit pro untere und obere Datenhälfte). Die Verzweigungspräsenz-Bits 308 werden mit den LRU-Bits 306 abgerufen. In den meisten Fällen werden die Verzweigungspräsenz-Bits für ein Cacheline-Set nachgeschlagen, bevor ein sequentieller Instruktionsaufruf eines zuletzt benutzten Weges in einem Cacheline-Set erfolgt. Darüber hinaus werden die Verzweigungspräsenz-Bits der Verzweigungssteuerung 232 zur Verfügung gestellt, damit diese bestimmen kann, ob die Verzweigungsvorhersageeinheit 220 während eines sequentiellen Instruktionsaufrufs der nächsten Instruktion ein- oder ausgeschaltet werden soll.
  • In einem Beispiel ist die Verzweigungssteuerung 232 konfiguriert, die Verzweigungspräsenz-Bits 308 aus dem Instruktions-Cache zu empfangen, die mit einem zuletzt benutzten Weg in einem Cacheline-Set korrespondieren. Wenn die Verzweigungspräsenz-Bits während des Instruktionsaufrufs von Instruktionsdaten aus dem zuletzt benutzen Weg anzeigen, dass die Instruktionsdaten aus dem zuletzt benutzten Weg eine Verzweigungsanweisung enthalten, wird die Verzweigungssteuerung 232 so konfiguriert, dass sie die Verzweigungsvorhersageeinheit aus einem ausgeschalteten Zustand einschaltet, um eine Verzweigungsvorhersage für die Verzweigungsinstruktion nachzuschlagen. In einem Beispiel ist die Verzweigungssteuerung 232 konfiguriert, den Verzweigungsinformationspuffer 222 aus einem ausgeschalteten Zustand einschaltet, um die Verzweigungsvorhersage zu erzeugen. Zusätzlich oder alternativ kann die Verzweigungssteuerung 232 andere Strukturen der Verzweigungsvorhersageeinheit 220 einschalten, um die Verzweigungsvorhersage zu erzeugen. Wenn die Verzweigungspräsenz-Bits anzeigen, dass die Instruktionsdaten aus dem zuletzt benutzten Weg keine Verzweigungsinstruktion enthalten, wird die Verzweigungssteuerung 232 so konfiguriert, dass sie die Verzweigungsvorhersageeinheit 220 während des Instruktionsaufrufs in einem ausgeschalteten Zustand belässt. Da die Verzweigungspräsenz-Bits anzeigen, dass es in den aufgerufenen Instruktionsdaten keine Verzweigungsinstruktion gibt, ist nicht nötig, die Verzweigungsvorhersageeinheit 220 einzuschalten. Dementsprechend lässt sich die Zahl unnötiger Aktivierungen der Verzweigungsvorhersageeinheit 220 im Vergleich zu Verfahren reduzieren, bei denen die Verzweigungsvorhersageeinheit jedes Mal eingeschaltet wird, wenn eine Instruktionsaufrufoperation stattfindet.
  • In manchen Ausführungsbeispielen weisen die Verzweigungspräsenz-Bits nicht nur auf das Vorliegen einer Verzweigung in einer Cacheline hin, sondern zeigen auch an, welche Arten von Verzweigungen in der Cacheline vorliegen. Je nachdem, welcher Art von Verzweigung von den Präsenz-Bits angezeigt wird, kann die Verzweigungsteuerung genau wissen, welche Vorhersagestrukturen in der Verzweigungsvorhersageeinheit eingeschaltet werden sollten und welche nicht. In einem Beispiel ist die Verzweigungssteuerung 232 konfiguriert, bestimmte Vorhersagestrukturen in der Verzweigungsvorhersageeinheit aus dem ausgeschalteten Zustand einzuchalten, je nachdem, welcher Art von Verzweigungsinstruktion durch die Verzweigungspräsenz-Bits angezeigt wird. Wenn beispielsweise eine Cacheline nur eine direkte, nicht bedingte Verzweigung enthält, könnten die Verzweigungspräsenz-Bits anzeigen, dass der Verzweigungsinformationspuffer (BIB) und der Verzweigungszielpuffer (BTB) eingeschaltet werden sollen, die Puffer für indirekte Ziele (ITP) und der Prädiktor für bedingte Richtungen (CDP) aber ausgeschaltet werden sollen. Um entscheiden zu können, ob die Verzweigungspräsenz-Bits das eine oder das andere nahelegen, kann auf der Abwägung beruhen, dass einerseits zusätzlicher Stromverbrauch nötig ist, um zusätzliche Bits für die Beschreibung der Verzweigungsarten zu speichern, andererseits aber aufgrund des Ausschaltens von unbenötigten Verzweigungsvorhersageeinheit-Strukturen Strom gespart wird.
  • Man beachte, dass die LRU-Bits in manchen Fällen nachgeschlagen werden, um der Verzweigungsvorhersageeinheit die Verzweigungsvorhersage-Bits zur Verfügung zu stellen, noch bevor die LRU-Bits sonst nachgeschlagen würden, um im Instruktions-Cache einen Weg zu ersetzen. In diesem Beispiel wird das LRU-Feld zwei Taktzyklen vor dem ersten sequentiellen Zugriff auf einen neuen LRU-Dateneintrag nachgeschlagen. Des weiteren beachte man, dass in diesem Beispiel Daten erst zwei Taktzyklen verfügbar sind, nachdem ein Aufruf durch Zugriff auf eines der Felder ausgeführt worden ist. Es versteht sich, dass die Verarbeitungsgeschwindigkeit oder die Anzahl der Taktzyklen beim Datenabruf schwanken kann, ohne über den Umfang der vorliegenden Offenbarung hinauszugehen.
  • In manchen Ausführungsbeispielen ist die Cache-Steuerung 216 so konfiguriert, dass sie die Verzweigungspräsenz-Bits derartig setzt, dass sie die Verzweigungsvorhersageeinheit 220 aus einem ausgeschalteten Zustand, der auf das Füllen einer Cacheline im Instruktions-Cache mit Instruktionsdaten reagiert, einschaltet. Beispielsweise können Instruktionsdaten aus dem Hauptspeicher 218 oder einer anderen Speicherlokation abgerufen werden, um eine Cacheline im Instruktions-Cache zu füllen. Indem die Verzweigungspräsenz-Bits gesetzt werden, während die Cacheline ursprünglich in den Instruktions-Cache 206 gefüllt wird, lassen sich die Verzweigungspräsenz-Bits auf einen Voreinstellungszustand setzen. Anders ausgedrückt, indem die Verzweigungspräsenz-Bits gesetzt werden, kann die Verzweigungsvorhersageeinheit 220 anhand des ersten und des letzten Aufrufs von Instruktionsdaten aus dieser Cacheline eingeschaltet werden, bis eine Verzweigungsvorhersage-Validierungs-Einheit 234 bestätigen kann, ob die Instruktionsdaten in dieser Cacheline eine Verzweigungsinstruktion enthalten oder nicht.
  • In den meisten Fällen kann die Verzweigungssteuerung 232 die Verzweigungspräsenz-Bits 308 auf dem LRU-Feld 208 des Instruktions-Cache 206 verwenden, um zu bestimmen, ob Instruktionsdaten eine Verzweigungsinstruktion enthalten oder nicht, und dementsprechend auch, ob die Verzweigungsvorhersageeinheit 220 während des sequentiellen Instruktionsaufrufs von Instruktionsdaten ein- oder ausgeschalten werden soll. Genauer gesagt, da die Verzweigungspräsenz-Bits, die Instruktionsdaten an einer Speicherlokation kennzeichnen, aufgerufen werden, bevor ein Instruktionsaufruf von Instruktionsdaten an einer Speicherlokation erfolgt, lassen sich die Verzweigungspräsenz-Bits sowohl der Cache-Steuerung wie auch der Verzweigungssteuerung in der Verzweigungsvorhersageeinheit bereitstellen. Nach einer Umleitung könnten jedoch die Verzweigungspräsenz-Bits 308 in Instruktionsaufrufen zur Verwendung durch die Verzweigungssteuerung 232 zur Verfügung stehen, da es einen oder zwei Taktzyklen dauern kann, bis ein Aufrufergebnis des LRU-Feldes 208 verfügbar wird. Damit man während der Instruktionsaufrufe nach einer Umleitung die Verzweigungsvorhersageeinheit 220 steuern kann, werden Verzweigungspräsenz-Bits 226 im Verzweigungszielpuffer 224 (oder einer anderen Vorhersagestruktur) der Verzweigungsvorhersageeinheit 220 gespeichert. Die Verzweigungspräsenz-Bits 226 zeigen an, ob Instruktionsdaten, die an der Zieladresse einer vorhergesagten Verzweigung gespeichert sind, eine Verzweigungsinstruktion enthalten. Die Verzweigungspräsenz-Bits 226 werden von der Verzweigungssteuerung 232 genutzt, um zu bestimmen, ob die Daten an einer Zieladresse eine Verzweigungsinstruktion enthalten und ob die Verzweigungsvorhersageeinheit 220 dementsprechend nach einer Umleitung zu dieser Zieladresse ein- oder ausgeschaltet werden soll.
  • In einem Beispiel ist die Verzweigungssteuerung 232 konfiguriert vorherzusagen, dass eine Verzweigung in einer Instruktion genommen wird, die aus dem Instruktions-Cache 206 geholt wurde. Beispielsweise kann die Verzweigungssteuerung 232 die Vorhersage treffen, indem sie die Instruktion im Verzweigungsinformationspuffer 222 nachschlägt. Die Vorhersage kann die Zieladresse der genommenen Verzweigung sowie die damit verknüpften Präsenz-Bits 226 enthalten; letztere lassen sich im Verzweigungszielpuffer 224 (oder, im Falle einer indirekten Verzweigung, im Puffer für indirekte Ziele 228) nachschlagen. Wenn die Verzweigungspräsenz-Bits für die Zieladresse der Verzweigung anzeigen, dass Instruktionsdaten, die an der Zieladresse gespeichert sind, eine Verzweigungsinstruktion enthalten, wird die Verzweigungssteuerung 232 konfiguriert, die Verzweigungsvorhersageeinheit 220 einzuschalten, um eine Verzweigungsvorhersage für die aufgerufenen Instruktions-Bytes am Ziel der Verzweigung nachzuschlagen.
  • In manchen Ausführungsbeispielen können die Verzweigungspräsenz-Bits anzeigen, welcher Art von Verzweigungsinstruktion an der Zieladresse gespeichert ist, und die Verzweigungssteuerung ist dann konfiguriert, bestimmte Vorhersagestrukturen innerhalb der Verzweigungsvorhersageeinheit je nach dem jeweiligen Art der von den Präsenz-Bits angezeigten Verzweigungsinstruktion einzuschalten (und dementsprechend auch Vorhersagestrukturen, die für den angezeigten Art von Verzweigungsinstruktion nicht nötig sind, in einem ausgeschalteten Zustand zu belassen). Wenn die Verzweigungspräsenz-Bits für die Zieladresse der Verzweigung anzeigen, dass die Instruktionsdaten, die an der Zieladresse gespeichert sind, keine Verzweigungsinstruktion enthalten, wird die Verzweigungssteuerung 232 konfiguriert, die Verzweigungsvorhersageeinheit 220 während eines Instruktionsaufrufs in einem ausgeschalteten Zustand zu belassen. Demzufolge lässt sich die Zahl der unnötigen Aktivierungen der Verzweigungsvorhersageeinheit 220 während Instruktionsaufrufen nach einer Umleitung im Vergleich zu Verfahren reduzieren, bei denen die Verzweigungsvorhersageeinheit bei jeder Instruktionsaufrufoperation eingeschaltet wird.
  • In manchen Ausführungsbeispielen ist die Verzweigungssteuerung 232 konfiguriert, die Verzweigungspräsenz-Bits so zu setzen, dass die Verzweigungsvorhersageeinheit 220 als Reaktion auf das Zuweisen einer neuen Zieladresse im Verzweigungszielpuffer 224 eingeschaltet wird. Beispielsweise kann dem Verzweigungszielpuffer 224 eine neue Zieladresse zugewiesen werden, nachdem eine Verzweigungsinstruktion mit dieser Zieladresse ausgeführt worden ist. Wenn die Verzweigungspräsenz-Bits gesetzt werden, nachdem die neue Zieladresse ursprünglich dem Verzweigungszielpuffer 224 zugewiesen worden ist, lassen sich die Verzweigungspräsenz-Bits auf einen Voreinstellungszustand setzen. Anders ausgedrückt, kann man der Verzweigungsvorhersageeinheit 220 durch Setzen der Verzweigungspräsenz-Bits erlauben, sich einzuschalten, sobald die Instruktionsdaten von der Zieladresse das erste Mal aufgerufen werden. Nachdem Instruktionsdaten, die an der neuen Zieladresse vorliegen, vom Instruktions-Cache 206 aufgerufen worden sind und eine Verzweigungsvorhersage ausgeführt worden ist, wird die Verzweigungssteuerung 232 konfiguriert, die die Verzweigungspräsenz-Bits 226 zu aktualisieren, um anzuzeigen, ob die Instruktionsdaten aufgrund der Verzweigungsvorhersage eine Verzweigungsinstruktion enthalten.
  • Nachdem Instruktionsdaten aus dem Instruktions-Cache 206 aufgerufen worden sind, bewegen sich die Instruktionsdaten durch die Verarbeitungs-Pipeline 200. Sobald sie in der Verarbeitungs-Pipeline 200 an einer Stelle unterhalb der Instruktionsaufrufphase 126 angekommen sind, bestimmt die Verzweigungsvorhersage-Validierungs-Einheit 234, ob die Instruktionsdaten eine Verzweigungsinstruktion enthalten. Die Verzweigungsvorhersage-Validierungs-Einheit 234 validiert einen Abschnitt der Verzweigungsvorhersage, die von der Verzweigungsvorhersageeinheit 220 für die Instruktionsdaten generiert worden ist. In diesem Beispiel validiert die Verzweigungsvorhersage-Validierungs-Einheit 234 die Verzweigungspräsenz und -ziele, die sich durch die Instruktions-Bytes bestimmen lassen. Die Verzweigungsvorhersage-Validierungs-Einheit leitet die Bestätigung der Instruktionsdaten zurück an den Instruktions-Cache 206, um die Präsenz-Bits 308 zu aktualisieren. Die Präsenz-Bits 308 lassen sich entsprechend aktualisieren, um das Vorliegen von Verzweigungsinstruktionen in zuvor aufgerufenen Instruktionsdaten genau wiederzugeben, wodurch man die Verzweigungsvorhersageeinheit akkurater steuern kann. Es versteht sich, dass die Verzweigungsvorhersage-Validierungs-Einheit 234 an jeder geeigneten Stelle der Verarbeitungs-Pipeline platziert sein kann, ohne aus dem Rahmen der vorliegenden Offenbarung zu fallen.
  • Man beachte, dass die Verzweigungsvorhersage-Validierungs-Einheit 234 in vereinfachter Form abgebildet ist und dass die Verarbeitungs-Pipeline in manchen Implementierungen mehrere Verzweigungsvorhersage-Validierungs-Einheiten umfassen kann, die verschiedene Abschnitte einer Verzweigungsvorhersage validieren.
  • In einem Beispiel ist die Verzweigungsvorhersage-Validierungs-Einheit 234 konfiguriert, aufgerufene Instruktionsdaten auf das Vorliegen einer Verzweigungsinstruktion hin zu validieren. Liegt in den aufgerufenen Instruktionsdaten keine Verzweigungsinstruktion vor, wird die Verzweigungsvorhersage-Validierungs-Einheit 234 konfiguriert, die Verzweigungspräsenz-Bits 308 im LRU-Feld 208 sowie die Verzweigungspräsenz-Bits 206 im Verzweigungszielpuffer 224 zu aktualisieren, um die Verzweigungsvorhersageeinheit 220 während eines späteren Aufrufs dieser Instruktionsdaten in einem ausgeschalteten Zustand zu halten. Falls in den aufgerufenen Instruktionsdaten eine Verzweigungsvorhersage vorliegt, wird die Verzweigungsvorhersage-Validierungs-Einheit 234 konfiguriert, die Verzweigungspräsenz-Bits 308 im LRU-Feld 208 sowie die Verzweigungspräsenz-Bits 226 im Verzweigungszielpuffer 224 zu aktualisieren, um die Verzweigungsvorhersageeinheit 220 aus einem ausgeschalteten Zustand einzuschalten, damit sie eine Verzweigungsvorhersage während eines späteren Aufrufs dieser Instruktionsdaten nachschlägt. Man beachte, dass die Aktualisierung der Verzweigungspräsenz-Bits auch das Beibehalten ihres aktuellen Zustands umfassen kann. Wenn die Verzweigungspräsenz-Bits beispielsweise so gesetzt sind, dass sie anzeigen, dass die Instruktionsdaten eine Verzweigungsinstruktion enthalten, und die Verzweigungsvorhersage-Validierungs-Einheit das Vorliegen der Verzweigungsinstruktion in den Instruktionsdaten verifiziert, dann kann die Verzweigungsvorhersage-Validierungs-Einheit die Bestätigung an die Cache-Steuerung und die Verzweigungssteuerung schicken und diese können die Verzweigungspräsenz-Bits in ihrem aktuellen Zustand halten.
  • Wenn die Verzweigungsvorhersageeinheit 220 am Einschalten gehindert wird und es eine Verzweigungsinstruktion in den aufgerufenen Instruktionsdaten gibt, kann die Verzweigungsvorhersage-Validierungs-Einheit 234 die Verzweigungsinstruktion in manchen Fällen entdecken. In einem Beispiel ist die Verzweigungsvorhersage-Validierungs-Einheit 234 konfiguriert zu bestimmen, ob die Verzweigungsvorhersageeinheit 220 während eines Instruktionsaufrufs eingeschaltet war. Falls die Verzweigungsinstruktion nicht vorhergesagt worden war, weil die Verzweigungsvorhersageeinheit 220 ausgeschaltet war, wird die Verzweigungsvorhersage-Validierungs-Einheit 234 konfiguriert, die Verzweigungsinstruktion erneut aufzurufen. Zudem wird die Verzweigungsvorhersage-Validierungs-Einheit 234 konfiguriert, die Verzweigungsvorhersageeinheit 220 einzuschalten, um eine Verzweigungsvorhersage für die erneut aufgerufenen Instruktionsdaten mit der Verzweigungsinstruktion nachzuschlagen. Die Verzweigungsvorhersage-Validierungs-Einheit 234 validiert die Verzweigungsvorhersage für die erneut aufgerufene Instruktion und leitet diese Bestätigung der Verzweigungsinstruktion an die Verzweigungsvorhersageeinheit 220 weiter. Die Verzweigungssteuerung 232 aktualisiert die Präsenz-Bits 226 aufgrund dieser Bestätigung.
  • Gehen wir weiter zu 4. In manchen Fällen kann eine Verzweigung eine Verzweigung 400 an eine Zieladresse verursachen, die sich irgendwo in der Mitte der Cacheline 402 befindet, wo sich in Cacheline 402 eine Verzweigungsinstruktion 404 vor dem Punkt der Umleitung 400 befindet und wo sich keine Verzweigungen in der Cacheline 402 nach dem Punkt der Umleitung 400 befinden. In diesem Fall würde die Verzweigungsvorhersage-Validierungs-Einheit 234 der Cache-Steuerung 216 typischerweise berichten, dass es keine Verzweigungen in den aufgerufenen Daten gegeben habe, weil die aufgerufenen Daten vor dem Punkt der Umleitung 400 nicht dazu bestimmt sind, weiterhin in der Verarbeitungs-Pipeline 200 verwendet zu werden. Würde dieses Ergebnis genutzt werden, um die verknüpften Verzweigungspräsenz-Bits 308 im LRU-Feld 208 zu löschen, dann würde die Verzweigungsvorhersageeinheit 220 unberechtigterweise am Einschalten und Ausführen einer Verzweigungsvorhersage gehindert werden, sobald die gleichen Instruktionsdaten später auf sequentielle Weise, bei der alle Daten in der Cacheline genutzt würden, aufgerufen würden. Um die Wahrscheinlichkeit einer inkorrekten Aktualisierung der Verzweigungspräsenz-Bits 308 zu reduzieren, wird die Cache-Steuerung 216 in manchen Fällen dazu konfiguriert, eine Aktualisierung der Verzweigungspräsenz-Bits 308 im LRU-Feld 208 zu unterbinden, falls die Instruktionsdaten wegen einer Verzweigung aufgerufen werden. Anders ausgedrückt, die Cache-Steuerung 216 aktualisiert die Verzweigungspräsenz-Bits 308 im LRU-Feld 208, sobald die Verzweigungsvorhersage-Validierungs-Einheit 234 alle Verzweigungen in den aufgerufenen Instruktionsdaten berücksichtigt hat.
  • Nachdem die Verzweigungsvorhersage-Validierungs-Einheit 234 bestimmt hat, dass aufgerufene Instruktionsdaten nach einer Umleitung eine Verzweigungsinstruktion enthalten und eine Verzweigungsvorhersage für die Verzweigungsinstruktion validiert hat, leitet sie die Validierung der Instruktionsdaten zurück an die Verzweigungsvorhersageeinheit 220, um die Präsenz-Bits 226 zu aktualisieren. In einem Beispiel wird die Verzweigungsvorhersage-Validierungs-Einheit 234 nach dem Aufruf von Instruktionsdaten aus dem Instruktions-Cache 206 konfiguriert, die aufgerufenen Instruktionsdaten auf das Vorliegen einer Verzweigungsinstruktion hin zu validieren. Sollte keine Verzweigungsinstruktion in den aufgerufenen Instruktionsdaten vorliegen, wird die Verzweigungsvorhersage-Validierungs-Einheit 234 konfiguriert, die Verzweigungspräsenz-Bits 226 dahingehend zu aktualisieren, dass die Verzweigungsvorhersageeinheit 220 während eines Instruktionsaufrufs von Instruktionsdaten an der Zieladresse der Verzweigung in einem ausgeschalteten Zustand gehalten wird. Liegt eine Verzweigungsinstruktion in den aufgerufenen Instruktionsdaten vor, wird die Verzweigungsvorhersage-Validierungs-Einheit 234 konfiguriert, die Verzweigungspräsenz-Bits 226 dahingehend zu aktualisieren, dass die Verzweigungsvorhersageeinheit 220 eingeschaltet wird, um eine Verzweigungsvorhersage während eines Instruktionsaufrufs von Instruktionsdaten an der Zieladresse der Verzweigung nachzuschlagen.
  • Wenn die Verzweigungsvorhersageeinheit 220 vom Einschalten abgehalten wird und es eine Verzweigungsinstruktion in den aufgerufenen Instruktionsdaten gibt, kann in manchen Fällen die Verzweigungsvorhersage-Validierungs-Einheit 234 die Verzweigungsinstruktion entdecken. In einem Beispiel ist die Verzweigungsvorhersage-Validierungs-Einheit 234 konfiguriert zu bestimmen, ob die Verzweigungsvorhersageeinheit 220 während des Instruktionsaufrufs eingeschaltet war oder nicht. Wurde die Verzweigungsinstruktion nicht vorhergesagt, weil die Verzweigungsvorhersageeinheit 220 ausgeschaltet war, wird die Verzweigungsvorhersage-Validierungs-Einheit 234 konfiguriert, die Verzweigungsinstruktion erneut aufzurufen. Zudem wird die Verzweigungsvorhersage-Validierungs-Einheit 234 konfiguriert, die Verzweigungsvorhersageeinheit 220 aus dem ausgeschalteten Zustand einzuschalten, um eine Verzweigungsvorhersage für die erneut aufgerufenen Instruktionsdaten, die die Verzweigungsinstruktion enthalten, nachzuschlagen. Die Verzweigungsvorhersage-Validierungs-Einheit 234 validiert die Verzweigungsvorhersage im Hinblick auf das Vorliegen einer Verzweigungsinstruktion in den erneut aufgerufenen Instruktionsdaten und leitet die Bestätigung der Verzweigungsinstruktion an die Verzweigungsvorhersageeinheit 220 weiter. Die Verzweigungssteuerung 232 aktualisiert die Präsenz-Bits 226 gemäß dieser Validierung. In diesem Fall sind die Instruktionsaufrufe und die nach dem anfänglichen Aufruf der Instruktionsdaten ausgeführten Vorhersagen vergeudet, was kurzfristig den Stromverbrauch erhöht und die Leistung senkt. Die Abstriche hinsichtlich Stromverbrauch und Leistung werden jedoch hingenommen, um die Genauigkeit der Verzweigungsvorhersagen für künftige Aufrufe der Instruktionsdaten zu erhöhen. Dies wiederum kann langfristig gesehen erhebliche Steigerungen hinsichtlich der Leistung und eine Verringerung des Stromverbrauchs erbringen. Mit anderen Worten, die Präsenz-Bits lassen sich so aktualisieren, dass sie das Vorliegen von Verzweigungsinstruktionen in zuvor aufgerufenen Instruktionsdaten widerspiegeln, was wiederum eine genauere Steuerung der Verzweigungsvorhersageeinheit erlauben und sowohl eine Steigerung der Gesamtleistung als auch eine Reduktion des Stromverbrauchs erbringen kann.
  • Man beachte, dass in der obenstehenden Erörterung verschiedene Komponenten erwähnt werden, die die Verzweigungspräsenz-Bits im Instruktions-Cache und die Präsenz-Bits in der Verzweigungsvorhersageeinheit aktualisieren. Es versteht sich, dass, je nachdem welche Implementierung der Verarbeitungs-Pipeline im Microprozessor vorliegt, jede geeignete Komponente die Verzweigungspräsenz-Bits aktualisieren kann, ohne über den Rahmen der vorliegenden Offenbarung hinaus zu gehen. Beispielsweise kann die Verzweigungsvorhersage-Validierungs-Einheit die Verzweigungspräsenz-Bits im Instruktions-Cache direkt aktualisieren. In einem weiteren Beispiel kann die Verzweigungsvorhersage-Validierungs-Einheit eine Bestätigung an die Cache-Steuerung des Instruktions-Cache schicken und die Cache-Steuerung kann die Verzweigungspräsenz-Bits aktualisieren. Die Verzweigungsvorhersage-Validierungs-Einheit kann gleichermaßen die Verzweigungspräsenz-Bits in der Verzweigungsvorhersageeinheit direkt aktualisieren. In einem weiteren Beispiel kann die Verzweigungsvorhersage-Validierungs-Einheit eine Bestätigung an die Verzweigungssteuerung der Verzweigungsvorhersageeinheit schicken, und die Cache-Steuerung kann die Verzweigungspräsenz-Bits aktualisieren.
  • 5 zeigt das Ausführungsbeispiel eines Verfahrens 500 zur Steuerung eines Microprozessors im Hinblick auf eine Reduktion des Stromverbrauchs. Genauer gesagt, das Verfahren 500 wird ausgeführt, um dafür zu sorgen, dass eine Verzweigungsvorhersageeinheit eingeschaltet wird, um eine Verzweigungsvorhersage zu erzeugen, sobald eine frisch gefüllte Cacheline aus einem Instruktions-Cache aufgerufen wird. Das Verfahren 500 lässt sich als Teil einer Steuerungsstrategie anwenden, um den Stromverbrauch einer Verzweigungsvorhersageeinheit des Microprozessors während sequentieller Instruktionsaufrufe aus einem Instruktions-Cache zu verringern. In einem Beispiel wird der Microprozessor 100 in 1, der den Instruktions-Cache 206 aus 2 enthält, konfiguriert, das Verfahren 500 auszuführen. Genauer gesagt, führt die Cache-Steuerung 216 des Instruktions-Cache 206 in einem Beispiel das Verfahren 500 aus.
  • An der Stelle 502 gehört es zum Verfahren 500, dass bestimmt wird, ob eine Cacheline des Instruktions-Cache frisch mit Instruktionsdaten gefüllt ist. Beispielsweise kann eine Cacheline ursprünglich aus einem Speicher höherer Ordnung in den Instruktions-Cache gefüllt worden sein, so etwa aus einem Cache höherer Ordnung oder einem anderen Speichersubsystem. Wenn bestimmt wird, dass eine Cacheline im Instruktions-Cache frisch mit Instruktionsdaten gefüllt worden ist, dann rückt der Ablauf des verfahrens 500 zur Stelle 504 vor. Ansonsten kehrt das Verfahren 500 an die Stelle 502 zurück, um zu prüfen, ob Cachelines im Instruktions-Cache gefüllt werden.
  • An der Stelle 504 gehört es zum Verfahren 500, im Instruktions-Cache für die frisch gefüllten Instruktionsdaten Verzweigungspräsenz-Bits zu setzen, um das Einschalten der Verzweigungsvorhersageeinheit zu veranlassen. Indem die Präsenz-Bits im Instruktions-Cache gesetzt werden, um die Verzweigungsvorhersageeinheit einzuschalten, kann eine Verzweigungsvorhersage ausgeführt werden, wenn die Instruktionsdaten später aus dem Instruktions-Cache aufgerufen werden. Das Verfahren 500 sorgt dafür, dass die Verzweigungsvorhersageeinheit eingeschaltet wird, während wenigstens ein anfänglicher Aufruf der frisch gefüllten Instruktionsdaten stattfindet, um eine Verzweigungsvorhersage zu erzeugen, die später in der Verarbeitungs-Pipeline validiert werden kann. Die Validierung der Verzweigungsvorhersage kann dann dazu verwendet werden, die Verzweigungspräsenz-Bits zu aktualisieren und die Verzweigungsvorhersageeinheit während nachfolgender Aufrufe dieser Instruktionsdaten zu steuern. Auf diese Weise lässt sich die Genauigkeit der Steuerung der Verzweigungsvorhersageeinheit aufrechterhalten, wenn Instruktionsdaten frisch in den Instruktions-Cache gefüllt werden.
  • 6 zeigt ein Ausführungsbeispiel eines Verfahrens 600 zum Steuern eines Microprocessors, um weniger elektrische Leistung aufzunehmen. Insbesondere wird das Verfahren 600 ausgeführt, um die Leistungsausnahme einer Verzweigungsvorhersageeinheit eines Microprocessors während sequentieller Instruktionsabrufe von einem Instruktions-Cache zu reduzieren. In einem Beispiel Weist der in 1 dargestellte Microprozessor 100 einen Instruktions-Cache 206 und eine Verzweigungsvorhersageeinheit 220 – wie in Figur zwei dargestellt – auf, die konfiguriert ist, um das Verfahren 600 auszuführen. Insbesondere führen in einem Beispiel die Cache-Steuerung 216 des Instruktions-Cache 206 und die Verzweigungssteuerung 232 der Verzweigungsvorhersageeinheit 220 das Verfahren 600 aus.
  • Bei 602 weist das Verfahren 600 ein Suchen in einem Zuletztgenutzten-Bits-Feld eines Instruktions-Cache von zuletzt genutzte Bits für jeden einer Mehrzahl von Cacheline-Sätzen in dem Instruktions-Cache auf. Das Suchen der zuletzt genutzten Bits umfasst ein Suchen („look-up”, nachschlagen) der Verzweigungspräsenz-Bits für die Mehrzahl der Cacheline-Sätze. In einem Beispiel repräsentiert die Mehrzahl der Cacheline-Sätze sequenzielle Einträge in dem Instruktions-Cache. Ein zugewieser Ersatz in der Sequenz der Einträge kann durch eine Adresse spezifiziert sein, welche von einer Instruktionsabrufoperation herrührt. In einem besonderen Beispiel umfasst das Suchen der zuletzt genutzten Bits zuletzt genutzte Bits für jede der vier sequenziellen Cacheline-Sätze in dem Instruktions-Cache. Die LRU-Bits für die sequenziellen Cacheline-Sätze können vor einem Abruf eine Instruktion von einem der Cacheline-Sätze durchsucht werden, um den Weg in dem Satz vorherzusagen, wo die Instruktion gespeichert ist.
  • Bei 604 weist das Verfahren 600 ein Bestimmen eines zuletzt genutzten Weges in einem zugewiesenen Cacheline-Satz aus der Mehrzahl der Cacheline-Sätze basierend auf den zuletzt genutzten Bits für die zugewiesene Cacheline auf. In einem Beispiele ist die zugewiesene Cacheline der Satz, in der eine Instruktion, die gerade abgerufen wird, gespeichert ist. Es sei darauf hingewiesen, dass die zuletzt genutzten Bits Verzweigungspräsenz-Bits aufweisen, welche darauf hinweisen, ob der zuletzt genutzte Weg in dem zugewiesenen Cacheline-Satz eine Verzweigungsinstruktion enthält.
  • Bei 606 weist das Verfahren 601 ein Feststellen auf, ob die Verzweigungspräsenz-Bits für den zuletzt benutzten Weg in dem zugewiesenen Cacheline-Satz darauf hinweist, dass der zuletzt genutzte Weg eine Verzweigungsinstruktion aufweist. In einem Beispiel werden die Verzweigungspräsenz-Bits durch die Verzweigungssteuerung von der Cache-Steuerung empfangen und die Feststellung wird durch die Verzweigungssteuerung vorgenommen. Wenn die Verzweigungspräsenz-Bits darauf hinweisen, dass der zuletzt genutzte Weg eine Verzweigungsinstruktion aufweist, fährt das Verfahren 600 bei 608 fort. Anderenfalls fährt das Verfahren 600 bei 610 fort.
  • Bei 608 weist das Verfahren 600 ein Einschalten der Verzweigungsvorhersageeinheit von einem ausgeschaltetem Zustand auf, um nach einer Verzweigungsvorhersage für die Verzweigungsinstruktionen in den Instruktionsdaten in dem zuletzt genutzten Weg in dem zugewiesenen Cacheline-Satz des Instruktions-Cache zu suchen. In einigen Ausführungsbeispielen weisen die Verzweigungspräsenz-Bits auf einen Art einer Verzweigungsinstruktion hin, und das Verfahren 600 weist ein Einschalten von zugewiesenen Vorhersagestrukturen in der Verzweigungsvorhersageeinheit von einem ausgeschalteten Zustand basierend auf einer Art von Verzweigungsinstruktion gehen, auf welche durch die Verzweigungspräsenz-Bits hingewiesen wird. Z. B. können die Verzweigungspräsenz-Bits darauf hinweisen, dass die Verzweigungsinstruktion eine direkte Verzweigung ist, und die BTB kann eingeschaltet werden, um nach einer Verzweigungsvorhersage zu suchen, während andere Vorhersagestrukturen in einem ausgeschalteten Zustand verbleiben.
  • Bei 610 weist das Verfahren 601 ein Ausschalten der Verzweigungsvorhersageeinheit oder ein Belassen der Verzweigungsvorhersageeinheit in einem ausgeschalteten Zustand während des Instruktionsabrufes der Instruktionsdaten in dem zuletzt genutzten Weg in dem zugewiesenen Cacheline-Satz des Instruktions-Cache auf. In einigen Ausführungsbeispielen wird die Verzweigungsvorhersageeinheit parallel mit einem Suchen in einem Datenfeld in dem Instruktions-Cache ein- oder ausgeschaltet, welches die Instruktionsdaten während eines Instruktionsabrufes speichert.
  • Durch ein Nachverfolgen der Präsenz von Verzweigungsinstruktionen in dem Instruktions-Cache kann die Verzweigungsvorhersageeinheit selektiv ausgeschaltet werden, wenn Instruktionsdaten, welche keine Verzweigungsinstruktionen enthalten, während eines sequenziellen Instruktionsabruf von dem Instruktions-Cache abgerufen werden. Dementsprechend kann der Energieverbrauch relativ zur einem Steuerungsansatz reduziert werden, bei dem die Verzweigungsvorhersageeinheit während jedes Instruktionsabrufes eingeschaltet ist.
  • 7 zeigt ein Ausführungsbeispiel eines anderen Verfahrens 700 für eine Steuerung eines Microprozessors, um den Energieverbrauch zu senken. Insbesondere wird das Verfahren 700 ausgeführt, um Verzweigungsvorhersagen zu bestätigen und Präsenz-Bits in dem Instruktions-Cache zu aktualisieren, um tatsächlich die Präsenz von Verzweigungsinstruktionen in vorher aufgerufenen Instruktionsdaten zu reflektieren. Durch eine Aktualisierung von Verzweigungspräsenz-Bits in der Instruktions-Cache kann eine Genauigkeit der Verzweigungsvorhersage erhöht werden, was in einer erhöhten Leistung (Performance) und einer geringeren Leistungsaufnahme resultieren kann. In einem Ausführungsbeispiel sind der in 1 dargestellt Microprozessor 100 inklusive des Instruktions-Cache 206, der Verzweigungsvorhersageeinheit 220 und der Verzweigungsvorhersage-Validierungs-Einheit 234 – wie in 2 dargestellt – konfiguriert, um das Verfahren 700 auszuführen. Insbesondere führen die Cache-Steuerung 232 der Verzweigungsvorhersageeinheit 220 und die Verzweigungsvorhersage-Validierungs-Einheit 234 das Verfahren 700 aus.
  • Bei 702 weist das Verfahren 700 ein Bestätigen von aufgerufenen Instruktionsdaten für die Präsenz einer Verzweigungsinstruktion auf. In einem Beispiel kann die Bestätigung der aufgerufenen Instruktionsdaten während des Decodierens der Instruktionsdaten durchgeführt werden.
  • Bei 704 weist das Verfahren 700 ein Feststellen auf, ob die Instruktionsdaten wegen einer Verzweigung aufgerufen wurden. Wenn die Instruktionsdaten wegen einer Verzweigung aufgerufen wurden, fährt das Verfahren bei 712 fort. Anderenfalls fährt das Verfahren 700 bei 706 fort.
  • Bei 706 weist das Verfahren ein Feststellen auf, ob die aufgerufenen Instruktionsdaten eine Verzweigungsinstruktion aufweisen. Wenn eine Verzweigungsinstruktion in den aufgerufenen Instruktionsdaten vorliegt, fährt das Verfahren 700 mit 708 fort. Anderenfalls fährt das Verfahren 700 bei 710 fort.
  • Bei 708 weist das Verfahren 700 eine Aktualisierung der Verzweigungspräsenz-Bits in dem Instruktions-Cache auf, um die Verzweigungsvorhersageeinheit von einem ausgeschalteten Zustand einzuschalten, um eine Verzweigungsvorhersage während eines späteren Aufrufes der Instruktionsdaten zu suchen. In einem bestimmten Beispiel weist die Aktualisierung der Verzweigungspräsenz-Bits ein Setzen der Verzweigungspräsenz-Bits auf, um darauf hinzuweisen, dass die Instruktionsdaten eine Verzweigungsinstruktion aufweisen.
  • Bei 710 weist das Verfahren 700 eine Aktualisierung der Verzweigungspräsenz-Bits in dem Instruktions-Cache auf, um die Verzweigungsvorhersageeinheit auszuschalten oder um die Verzweigungsvorhersageeinheit in einem ausgeschalteten Zustand während eines späteren Aufrufs der Instruktionsdaten zu belassen. In einem bestimmten Beispiele weist die Aktualisierung der Verzweigungspräsenz-Bits ein Zurücksetzen der Verzweigungspräsenz-Bits auf, um darauf hinzuweisen, dass die Instruktionsdaten keine Verzweigungsinstruktion aufweisen.
  • Bei 712 weist das Verfahren 700 ein Zurückverweisen einer Aktualisierung der Verzweigungspräsenz-Bits auf. In diesem Fall wird die Aktualisierung der Verzweigungspräsenz-Bits zurückgewiesen, weil die Verzweigung bedingt durch die Verzweigungsinstruktionen mitten in den Instruktionsdaten auftaucht. Insbesondere taucht die Bestätigung der Präsenz einer Instruktionsverzweigung in den Instruktionsdaten nachdem Punkt der Verzweigung auf. Falls eine Verzweigungsinstruktionen in den aufgerufenen Instruktionsdaten zu einem Zeitpunkt vor der Verzweigung vorliegt, würde sie nicht bestätigt werden, und das Präsenz-Bit könnten nicht korrekt aktualisiert werden. Bei einer Zurückweisung einer Aktualisierung von Präsenz-Bits von Instruktionsdaten, die wegen einer Verzweigung aufgerufen werden, werden die Präsenz-Bits von aufgerufenen Instruktionsdaten nur dann aktualisiert, wenn alle Verzweigungen in den aufgerufenen Instruktionsdaten für eine Bestätigung berücksichtigt werden.
  • 8 zeigt einen Ausführungsbeispiel eines Verfahrens 800 zur Steuerung eines Microprozessors um die Leistungsaufnahme zu reduzieren. Insbesondere wird das Verfahren 800 ausgeführt, um sicherzustellen, dass die Verzweigungsvorhersageeinheit eingeschaltet ist, um eine Verzweigungsvorhersage für Instruktionsdaten für eine neue zugeordnete Zieladresse in einem Verzweigungszielpuffer der Verzweigungsvorhersageeinheit erzeugen, wenn die neuen Instruktionsdaten aus dem Instruktions-Cache abgerufen werden. Das Verfahren 800 kann als Teil einer Steuerungsstrategie eingesetzt werden, um die Leistungsaufnahme durch eine Verzweigungsvorhersageeinheit des Microprozessors während Instruktionsaufrufen, die nach einer Verzweigung ausgeführt werden, zu reduzieren. In einem Beispiel ist der in 100 dargestellte Microprozessor 100 inklusive der 2 dargestellte Verzweigungsvorhersageeinheit 220 konfiguriert, um das Verfahren 800 auszuführen. Genauer gesagt führt die Verzweigungssteuerung 232 der Verzweigungsvorhersageeinheit 220 das Verfahren 800 aus.
  • Bei 802 weist das Verfahren 800 ein Feststellen auf, ob eine Zieladresse durch die Verzweigungsvorhersageeinheit allokiert ist. In einem Beispiel wird festgestellt, ob die neuen Instruktionsdaten sich auf eine neue Zieladresse in einem Verzweigungszielpuffer der Verzweigungsvorhersageeinheit beziehen. Wenn festgestellt wird, dass eine neue Zieladresse für die Verzweigungsvorhersageeinheit allokiert ist, fährt das Verfahren 800 bei 804 fort. Anderenfalls kehrt das Verfahren 800 zu 802 zurück, um neue Instruktionsdaten, die für die Zieladresse in der Verzweigungsvorhersageeinheit allokiert sind, zu prüfen.
  • Bei 804 weist das Verfahren 800 ein Setzen von Verzweigungspräsenz-Bits für neue Instruktionsdaten bei der Zieladresse auf, um ein Einschalten der Verzweigungsvorhersageeinheit zu ermöglichen, wenn die neuen Instruktionsdaten an der Zieladresse aus dem Instruktions-Cache abgerufen werden. Durchsetzen der Präsenz Betts für die neuen Instruktionsdaten an der Zieladresse in der Verzweigungsvorhersageeinheit, um ein Einschalten der Verzweigungsvorhersageeinheit zu ermöglichen, kann die Verzweigungsvorhersage ausgeführt werden, wenn die Instruktionsdaten später von den Instruktions-Cache aufgerufen werden. Die Verzweigungsvorhersage kann später in der Verarbeitungs-Pipeline bestätigt werden. Die Bestätigung der Verzweigungsvorhersage kann dann genutzt werden, um die Verzweigungspräsenz-Bits zu bestätigen, und die Verzweigungsvorhersageeinheit während eines späteren Aufrufes der Instruktionsdaten zu steuern. Auf diese Weise kann die Steuergenauigkeit der Verzweigungsvorhersageeinheit aufrechterhalten werden, wenn neue Instruktionsdaten für eine Zieladresse in der Verzweigungsvorhersageeinheit allokiert werden.
  • 9 stellt ein Ausführungsbeispiel eines Verfahrens 900 zur Steuerung eines Microprozessor für eine Reduktion der Leistungsaufnahme dar. Insbesondere wird das Verfahren 900 ausgeführt, um die Leistungsaufnahme durch eine Verzweigungsvorhersageeinheit des Microprozessors während Instruktionsaufrufen, welche auf eine Verzweigung folgen, zu reduzieren. In einem Beispiel ist der in 1 dargestellte Microprozessor 100 inklusive der in Figur zwei dargestellten Verzweigungsvorhersage 220 konfiguriert, um das Verfahren 900 auszuführen. Insbesondere führt die Verzweigungssteuerung 232 der Verzweigungsvorhersageeinheit 220 das Verfahren 900 aus.
  • Bei 902 weist das Verfahren 900 ein Vorhersagen auf, dass eine Verzweigung in eine Instruktion auftreten wird, die von eine Instruktions-Cache aufgerufen wurde. In einem Beispiel sagt die Verzweigungsvorhersageeinheit vorher, dass eine Verzweigung vorgenommen wird, basierend auf eine Suche nach einer Verzweigungsvorhersagen in dem Verzweigungsinformationspuffer allein oder in Kombination mit einer Suche nach Informationen in anderen Strukturen der Verzweigungsvorhersageeinheit.
  • Bei 904 und weist das Verfahren 900 eine Suche nach Verzweigungspräsenz-Bits für eine Zieladresse in der vorhergesagten Verzweigung in dem Verzweigungsziel Puffer (oder dem indirekten Zielpuffer) oder der Verzweigungsvorhersageeinheit auf.
  • Bei 906 weist das Verfahren 901 ein Feststellen auf, ob die in dem Verzweigungszielpuffer gesuchten Präsenz-Bits darauf hinweisen, dass die Instruktionen, die an der Zieladresse gespeichert ist, eine Verzweigungsinstruktion aufweist. Wenn die Verzweigungspräsenz-Bits für die Zieladresse der Verzweigung darauf hinweisen, dass die Instruktionsdaten, die an der Zieladresse gespeichert sind, eine Verzweigungsinstruktion aufweisen, fährt das Verfahren 900 fort. Anderenfalls fährt das Verfahren 900 bei 908 fort.
  • Bei 908 weisen die Präsenz-Bits darauf hin, dass die Instruktionsdaten an der Zieladresse keine Verzweigungsinstruktion aufweisen, und das Verfahren 900 weist ein Ausschalten der Verzweigungsvorhersageeinheit oder eine Beibehaltung des ausgeschaltetem Zustands für die Verzweigungsvorhersageeinheit für den Instruktionsaufruf der Instruktionsdaten an der Zieladresse auf.
  • Bei 910 weisen die Präsenz-Bits darauf hin dass die Instruktionsdaten an der Zieladresse eine Verzweigungsinstruktion aufweisen, und das Verfahren 900 weist ein Einschalten der Verzweigungsvorhersageeinheit von einem ausgeschalteten Zustand auf, um eine Verzweigungsvorhersage für die Verzweigungsinstruktion in den Instruktionsdaten an der Zieladresse zu suchen. In einigen Ausführungsbeispielen weisen die Verzweigungspräsenz-Bits auf eine Art einer Verzweigungsinstruktionen, und das Verfahren 900 weist ein Einschalten von zugeordneten vorhersage Strukturen innerhalb der Verzweigungsvorhersageeinheit von einem ausgeschalteten Zustand basierten auf der Hand der Verzweigungsinstruktion auf, auf die durch die Verzweigungspräsenz-Bits hingewiesen wurde. Beispielsweise können die Verzweigungspräsenz-Bits darauf hinweisen, dass eine Verzweigungsinstruktion eine direkte Verzweigung ist und die BTB kann eingeschaltet werden, um nach einer Verzweigungsvorhersage zu suchen, während andere Vorhersagestrukturen in einem ausgeschalteten Zustand verbleiben.
  • Durch ein Durchsuchen der Verzweigungspräsenz-Bits in der Verzweigungsvorhersageeinheit, wenn eine Verzweigung vorhergesagt wird, kann die Verzweigungsvorhersageeinheit akkurat in den Taktzyklen gesteuert werden, welche direkt einer Verzweigung folgen bevor die Verzweigungspräsenz-Bits von den Instruktions-Cache verfügbar sind. Dementsprechend können unnötige Aktivitäten der Verzweigungsvorhersageeinheit auch während Taktzyklen, die auf eine Verzweigung folgen, reduziert werden.
  • 10 stellt ein Ausführungsbeispiel eines anderen Verfahrens 1000 für eine Steuerung eines Microprozessors dar, um die Leistungsaufnahme zu reduzieren. Insbesondere wird das Verfahren 1000 ausgeführt, um Verzweigungsvorhersagen zu bestätigen und Präsens-Bits in der Verzweigungsvorhersageeinheit zu aktualisieren, um die Präsenz von Verzweigungsinstruktionen in vorher aufgerufenen Instruktionsdaten akkurat zu reflektieren. Durch eine Aktualisierung von Verzweigungspräsenz-Bits in der Verzweigungsvorhersageeinheit kann die Steuerungsgenauigkeit der Verzweigungsvorhersageeinheit erhöht werden, was sich in einer erhöhten Leistung und einer reduzierten Leistungsaufnahme darstellen kann. In einem Beispiel ist der in 1 dargestellten Microprozessor 100 inklusive der Verzweigungsvorhersageeinheit 220 und der Verzweigungsvorhersage-Validierungs-Einheit 234 – wie in 2 dargestellt – konfiguriert, um das Verfahren 1000 auszuführen. Insbesondere führen in einem Beispiel die Verzweigungssteuerung 232 der Verzweigungsvorhersageeinheit 220 und die Verzweigungsvorhersage-Validierungs-Einheit 234 das Verfahren 1000 aus.
  • Bei 1002 weist das Verfahren 1000 eine Bestätigung von aufgerufenen Instruktionsdaten an einer Zieladresse einer Verzweigungsinstruktionen für die Präsenz einer Verzweigungsinstruktion auf. In einem Beispiel kann die Bestätigung der aufgerufenen Instruktionsdaten während eines Decodierens der Instruktionsdaten ausgeführt werden.
  • Bei 1004 weist das Verfahren 1000 ein Feststellen auf, ob die aufgerufenen Instruktionsdaten basierend auf der Bestätigung der aufgerufenen Instruktionsdaten eine Verzweigungsinstruktionen aufweisen. Wenn es keine Verzweigungsinstruktion in den aufgerufenen Instruktionsdaten gibt, fährt das Verfahren 1000 bei 1006 fort. Anderenfalls fährt das Verfahren 1000 bei 1008 fort.
  • Bei 1006 weist das Verfahren 1000 eine Aktualisierung der Verzweigungspräsenz-Bits in der Verzweigungsvorhersageeinheit auf, um die Verzweigungsvorhersageeinheit abzuschalten oder die Verzweigungsvorhersageeinheit in einem ausgeschalteten Zustand während eines späteren Aufrufes der Instruktionsdaten zu belassen. In einem besonderen Beispiel weist die Aktualisierung der Verzweigungspräsenz-Bits ein Zurücksetzen der Verzweigungspräsenz-Bits auf, um darauf hinzuweisen, dass die Instruktionsdaten keine Verzweigungsinstruktion aufweisen.
  • Bei 1008 weist das Verfahren 1001 Feststellen auf, ob die Verzweigungsvorhersageeinheit während eines Aufrufes der Instruktionsdaten, welche die Verzweigungsinstruktion aufweist, die bei 1004 aufgefunden wurde, eingeschaltet war. Wenn die Verzweigungsvorhersageeinheit während des Instruktionsaufrufs der Instruktionsdaten welche die Verzweigungsinstruktion, die bei 1004 gefunden wurde, eingeschaltet war, fährt das Verfahren 1000 bei 1010 fort. Anderenfalls wird das Verfahren 1000 bei 1012 fortgesetzt.
  • Bei 1010 weist das Verfahren 1000 eine Aktualisierung der Verzweigungspräsenz-Bits in der Verzweigungsvorhersageeinheit auf, um die Verzweigungsvorhersageeinheit von einem ausgeschalteten Zustand während eines späteren Aufrufes der Instruktionsdaten einzuschalten. In einem gesonderten Beispiel weist die Aktualisierung der Verzweigungspräsenz-Bits Einsetzen der Verzweigungspräsenz-Bits auf, um darauf hinzuweisen, dass die Instruktionsdaten eine Verzweigungsinstruktion aufweisen.
  • Bei 1012 weist das Verfahren 1000 einen Voraufruf der Instruktionsdaten inklusive der Verzweigungsinstruktionen, die bei 1004 gefunden wurde, auf. Die Instruktionsdaten werden vor-aufgerufen sodass eine Verzweigungsvorhersage auf den Instruktionsdaten gemacht werden kann.
  • Bei 1014 weist das Verfahren 1000 ein Einschalten der Verzweigungsvorhersageeinheit von einem ausgeschalteten Zustand auf, um nach einer Verzweigungsvorhersage bezüglich der Instruktionsdaten zu suchen. Die vor-aufgerufenen Daten können durch ein Ausführen des Verfahrens 1000 (oder durch ein Zurückgehen nach 1002) gegen sie ausgeführt werden oder durch ein Weiterverfolgen des Flusses des Verfahrens bei 1010. Bei 1010 werden die Verzweigungspräsenz-Bits der vor-aufgerufenen Instruktionsdaten an der Zieladresse in der Verzweigungsvorhersageeinheit aktualisiert, um darauf hinzuweisen, dass die Instruktionsdaten an der Zieladresse eine Verzweigungsinstruktionen aufweisen.
  • 1 stellte ein Zeitdiagramm von einem beispielhaften Microprozessorbetrieb entsprechend der vorliegenden Offenbarung dar. Das Zeitdiagramm eine beispielhafte Pipeline die Instruktions-Cache-Durchsuchungen inklusive LRU-Array-Zugriffe und Suchvorgänge der Verzweigungsvorhersageeinheit. Aus Gründen der Einfachheit und Klarheit wird in diesem Beispiel angenommen, dass alle Zugriffe Treffer („Hits”) sind. Darüber hinaus liest jeder Instruktions-Aufruf-Lesezugriff auf den Instruktions-Cache eine Hälfte einer Cacheline der Daten auf, wenn es einen Treffer gibt. Die Zeit in dem Zeitdiagramm schreitet von links nach rechts voran und aufeinanderfolgende Instruktions-Cache-Zugriffe schreiten von oben nach unten voran, obwohl einige Zugriffe parallel ausgeführt werden können.
  • In den ersten Zeittakt wird ein erster Instruktionsaufruf durch einen Aufruf der langsamen Datenwege des zugewiesenen Cacheline-Satzes (Satz 3) des Instruktions-Cache ausgeführt. Die LRU-Bits für eine Gruppe den nächsten viele sequenziellen Cacheline-Sätze nach Satz 3 werden in dem LRU-Array durchsucht, inklusive an der Verzweigungspräsenz-Bits für die nächsten vier sequenziellen Cacheline-Sätze. Die Verzweigungsvorhersageeinheit ist ausgeschaltet oder es wird nicht darauf zugegriffen, weil die Verzweigungspräsenz-Bits einer vorherigen LRU-Array-Durchsuchung, welche den zugewiesenen Cacheline-Satz enthielt, darauf hinweist, dass die aufgerufenen Instruktionsdaten keine Verzweigungsinstruktion enthalten. In einem Beispiele weisen die Verzweigungspräsenz-Bits zwei Bits auf, eins für jede Hälfte der MRU-Cacheline. In diesem Fall würde ein Bit zurückgesetzt sein, um darauf hinzuweisen, dass die untere Hälfte keine Verzweigungsinstruktion aufweist.
  • In diesem Beispiel sind die Daten zwei Taktzyklen nach einem Durchsuchen verfügbar. Während der Zugriff von dem ersten Taktzyklus ausgeführt wird, wird der nächste sequenzielle Instruktionsaufruf durchgeführt. Insbesondere werden in den zweiten Tagzyklus die hohen Datenwege des Satzes 3 in dem Instruktions-Cache durchsucht. Die Verzweigungsvorhersageeinheit wird eingeschaltet, weil Verzweigungspräsenz-Bits von einer vorherigen LRU-Array-Durchsuchung, welche die LRU-Bits aufweisen, die gesetzt sind und darauf hinweisen, dass die aufgerufenen Instruktionsdaten eine Verzweigungsinstruktionen enthalten. In diesem Beispiel wäre eins der zwei Präsenz-Bits gesetzt, um darauf hinzuweisen, dass die obere Daten Hälfte eine Verzweigungsinstruktion aufweist.
  • In einem dritten Taktzyklus sind die Instruktionsdaten und die LRU-Daten von dem Zugriff, der in dem ersten Taktzyklus ausgeführt wurde, verfügbar. Weil die LRU-Bits verfügbar sind werden die Verzweigungspräsenz-Bits, die in den LRU-Bits enthalten sind, genutzt, um festzustellen, ob die Verzweigungsvorhersage während eines nächsten sequenziellen Instruktionsaufrufes ein- oder ausgeschaltet wird. In diesem Fall sind die Verzweigungspräsenz-Bits zurückgesetzt und weisen darauf hin, dass die Instruktionsdaten keine Verzweigungsinstruktion aufweisen, und dass die Verzweigungsvorhersageeinheit ausgeschaltet wird oder auf sie während des nächsten Instruktionsaufrufes nicht zugegriffen wird. Darüber hinaus sind die Instruktionsdaten von dem Instruktionsaufruf, welcher in dem ersten Taktzyklus ausgeführt wurden, für eine Weiterleitung durch weitere Stufen weiter abwärts der Pipeline verfügbar.
  • In einem vierten Taktzyklus sind die Instruktionsdaten von den Zugriff auf 0xe0 verfügbar. Auch sind die Verzweigungsvorhersage für die Instruktionsdaten bei 0x0e0 verfügbar und haben das Ziel von 0x200 und die sind Verzweigungspräsenz-Bits für die Adresse 0x200 von dem Zugriff auf die Verzweigungsvorhersageeinheit in dem zweiten Taktzyklus verfügbar. Darüber hinaus weisen die Verzweigungspräsenz-Bits von dem Verzweigungsziel-Puffer der Verzweigungsvorhersageeinheit darauf hin, dass die Instruktionsdaten an der Zieladresse der Verzweigung keine Verzweigungsinstruktion aufweist.
  • In dem fünften Taktzyklus wird der Instruktionsaufruf von der Zieladresse der Verzweigung durch ein Durchsuchen der unteren Daten im Satz 8 ausgeführt. Die LRU-Bits für eine Gruppe von vier aufeinanderfolgende Cacheline-Sätze (Sätze 8–11) werden in dem LRU-Array inklusive des aktuellen Cacheline-Satzes durchsucht. In diesem Falle weisen die Verzweigungspräsenz-Bits in dem Verzweigungsziel-Puffer darauf hin, dass keine Verzweigung in den aufgerufenen Instruktionsdaten vorliegen, und die Verzweigungsvorhersage-Einheit wird ausgeschaltet oder es wird nicht auf sie zugegriffen. Darüber hinaus sind die Instruktionsdaten von dem Instruktionszugriff, welcher in den dritten Taktzyklus ausgeführt wurde, verfügbar, obwohl diese Daten wegen einer vorher ausgeführten Verzweigung nicht beachtet werden. Die Daten und die LRU-Bits, die in dem fünften Taktzyklus durchsucht werden, sind in dem siebten Taktzyklus verfügbar. Die Instruktionsaufrufe werden sequenziell fortgeführt bis eine Umleitung bedingt durch eine Verzweigung auftritt.
  • In diesem Beispiel wird in die Verzweigungsvorhersageeinheit in dem ersten, dritten und fünften Tag Zyklus der Pipeline ausgeschaltet (hervorgehoben 11). Dieser Microprozessor-Steuerungsansatz optimiert den Betrieb der Verzweigungsvorhersageeinheit um die Leistungsaufnahme bei einer minimalen Reduktion der Leistung zu reduzieren, wenn man es mit einem Ansatz vergleicht, bei dem die Verzweigungsvorhersageeinheit während jedes Instruktionsaufrufes aktiv ist. Insbesondere überwacht dieser Ansatz das Vorhandensein von Verzweigungsinstruktionen in aufgerufenen Instruktionsdaten in der Form von Präsenz-Bits, welche in dem Instruktions-Cache unter Verzweigungsvorhersageeinheit gespeichert sind.
  • Ausführungsformen der Erfindung können folgende Konzepte aufweisen:
  • Konzept 1. Ein Microprozessor aufweisend eine Aufruflogik, welche konfiguriert ist, um mit einem Instruktionsspeicher zu interagieren, um Instruktionsdaten für eine Ausführung abzurufen; eine Verweigungsvorhersageeinheit, die operativ mit der Aufruflogik verbunden ist, aufweisend: eine Verzweigungssteuerung, die konfiguriert ist, um (1) einen Hinweis auf ein Vorliegen einer Verzweigung zu empfangen, der darauf hinweist, ob Instruktionsdaten in einer Lokation in dem Instruktionsspeicher Verweigungsinstruktionen während eines Aufrufs der Instruktionsdaten von der Lokation in dem Instruktionsspeicher aufweisen, um (2) die Verweigungsvorhersageeinheit von einem ausgeschalteten Zustand einzuschalten, wenn der Verzweigungsvorhersagehinweis darauf hinweist, dass die Instruktionsdaten eine Verzweigungsinstruktion aufweisen, und um (3) die Verweigungsvorhersageeinheit in einem ausgeschalteten Zustand während eines Aufrufs der Instruktionsdaten zu belassen, wenn der Verzweigungsvorhersagehinweis darauf hinweist, dass die Instruktionsdaten nicht eine Verzweigungsinstruktion aufweisen.
  • Konzept 2: Der Microprozessor von Konzept 1, bei dem der Instruktionsspeicher einen Instruktions-Cache inklusive einer Mehrzahl von Cachelines und eine Cache-Steuerung aufweist, der konfiguriert ist, um, in Reaktion darauf, dass eine Cacheline in dem Instruktions-Cache mit Instruktionsdaten gefüllt ist, den Verzweigungsvorhersagehinweis für die Cacheline zu setzen, um die Verzweigungsvorhersageeinheit einzuschalten, um nach einer Verzweigungsvorhersage während eines Instruktionsaufrufs von Instruktionsdaten in der Cacheline zu suchen.
  • Konzept 3: Der Microprozessor von Konzept 2, weiterhin aufweisend: eine Verzweigungsvorhersage-Validierungs-Einheit, die konfiguriert ist, um (1) nachdem Instruktionsdaten von der Cacheline aufgerufen wurden, in den aufgerufenen Instruktionsdaten ein Vorliegen einer Verzweigungsinstruktion zu bestätigen, und um (2), wenn in den aufgerufenen Instruktionsdaten keine Verzweigungsinstruktion vorhanden ist, den Verzweigungsvorhersagehinweis zu aktualisieren, um die Verzweigungsvorhersageeinheit in dem ausgeschalteten Zustand während eines Instruktionsaufrufes von Instruktionsdaten aus der Cacheline zu belassen.
  • Konzept 4: Der Microprozessor von Konzept 3, bei dem die Verzweigungsvorhersage-Validierungs-Einheit konfiguriert ist, um, falls es eine Verzweigungsinstruktion in den aufgerufenen Instruktionsdaten gibt, den Verzweigungsvorhersagehinweis zu aktualisieren, um die Verzweigungsvorhersageeinheit einzuschalten, um eine Verzweigungsvorhersage während eines Instruktionsaufrufen von Instruktionsdaten aus der Cacheline zu suchen.
  • Konzept 5: Der Microprozessor von Konzept 4, bei dem die Cache-Steuerung konfiguriert ist, um eine Aktualisierung der Verzweigungspräsenz-Bits zu verhindern, wenn Daten von der Cacheline aufgrund einer Verzweigung aufgerufen werden, eine Aktualisierung der Verzweigungspräsenz-Bits zu verhindern.
  • Konzept 6: Der Microprozessor von Konzept 1, bei dem die Verzweigungsvorhersageeinheit eingeschaltet oder in dem eingeschalteten Zustand parallel zu einer Suche in einem Datenfeld in dem Instruktions-Cache belassen wird, welcher die Instruktionsdaten speichert.
  • Konzept 7: Der Microprozessor von Konzept 1, bei dem der Verzweigungsvorhersagehinweis durch Verzweigungspräsenz-Bits gekennzeichnet ist, und wobei der Instruktionsspeicher einen Instruktions-Cache aufweist, der auf ein Zuletztgenutzte-Bits-Feld hinweist, das zuletzt genutzte Bits für jedes der Mehrzahl der Cacheline-Sätze und die Verzweigungspräsenz-Bits aufweist, und wobei die zuletzt genutzten Bits für jeden Cacheline-Satz auf einen zuletzt benutzten Weg in dem Cacheline-Satz hinweisen.
  • Konzept 8: Der Microprozessor von Konzept 7, bei dem die Lokation in dem Instruktionsspeicher ein zuletzt genutzter Weg in einen zugewiesenen Cacheline-Satz des Instruktions-Cache ist, und wobei die Verzweigungspräsenz-Bits für den zugewiesene Cacheline-Satz vor ein Instruktionsaufruf der Instruktionsdaten von den zuletzt genutzten Weg aufgerufen werden.
  • Konzept 9: Der Microprozessor von Konzept 1, wobei der Verzweigungsvorhersagehinweis auf eine Art von Verzweigungsinstruktion hinweist, und wobei der Verzweigungssteuerung konfiguriert ist, um zugewiesene Verzweigungsvorhersagestrukturen innerhalb der Verzweigungsvorhersagelogik von einem ausgeschalteten Zustand basierend auf der Art der Verzweigungsinstruktion einzuschalten, auf die die Verzweigungspräsenz-Bits hinweisen.
  • Konzept 10: Der Microprozessor von Konzept 1, wobei der Verzweigungsvorhersagehinweis durch zwei Verzweigungspräsenz-Bits gekennzeichnet ist, wobei jedes der Verzweigungspräsenz-Bits eine andere Datenhälfte in einer Cacheline repäsentiert.
  • Konzepte 11: Ein in einem Microprozessor implementiertes Verfahren, bei dem der Microprozessor eine Verzweigungsvorhersageeinheit und einen Instruktionsspeicher aufweist, wobei das Verfahren aufweist: Empfangen eines Hinweises auf ein Vorliegen einer Verzweigung, der darauf hinweist, ob Instruktionsdaten in einer Lokation in dem Instruktionsspeicher eine Verzweigungsinstruktion während eines Aufrufs der Instruktionsdaten von der Lokation in dem Instruktionsspeicher aufweist; während eines Aufrufes der Instruktionsdaten von der Lokation in den Instruktionsspeicher Einschalten der Verzweigungsvorhersageeinheit von einem ausgeschalteten Zustand, wenn der Verzweigungsvorhersagehinweis darauf hinweist, dass die Instruktionsdaten eine Verzweigungsinstruktion aufweist; und Belassen der Verzweigungsvorhersageeinheit in einem ausgeschalteten Zustand, während eines Aufrufs der Instruktionsdaten, wenn der Verzweigungsvorhersagehinweis darauf hinweist, dass die Instruktionsdaten nicht eine Verzweigungsinstruktion aufweisen.
  • Konzert 12: das Verfahren von Konzert 11, bei dem der Instruktionsspeicher einen Instruktions-Cache inklusive einer Mehrzahl von Cachelines aufweist, weiterhin aufweisend: in Reaktion darauf, dass eine Cacheline in dem Instruktions-Cache mit Instruktionsdaten gefüllt ist, Setzen des Verzweigungsvorhersagehinweis für die Cacheline, um die Verzweigungsvorhersageeinheit einzuschalten, um nach einer Verzweigungsvorhersage während eines Instruktionsaufrufs von Instruktionsdaten in der Cacheline zu suchen.
  • Konzept 13: das Verfahren von Konzept 12, weiterhin aufweisend: nachdem Instruktionsdaten in der Cacheline von dem Instruktions-Cache aufgerufen worden sind, Überprüfen der aufgerufenen Instruktionsdaten bezüglich des Hinweises auf eine Verzweigungsinstruktion; falls es keine Verzweigungsinstruktion in den aufgerufenen Instruktionsdaten gibt, Aktualisierung des Verzweigungspräsenzhinweises, um die Verzweigungsvorhersageeinheit in einem ausgeschalteten Zustand während des Instruktionsaufrufes der Instruktionsdaten von der Cacheline zu belassen; und wenn es eine Verzweigungsinstruktion in den aufgerufenen Instruktionsdaten gibt, Aktualisierung des Verzweigungsvorhersagehinweises, um die Verzweigungsvorhersageinheit einzuschalten, um eine Verzweigungsvorhersage während eines Instruktionsaufrufes von Instruktionsdaten aus der Cacheline zu suchen.
  • Konzept 14: Das Verfahren nach Konzept 13, weiterhin aufweisend: falls Instruktionsdaten von der Cacheline bedingt durch eine Verzweigung aufgerufen werden, die Aktualisierung des Verzweigungsvorhersagehinweises nicht zuzulassen.
  • Konzept 15: Das Verfahren nach Konzept 11, wobei die Verzweigungsvorhersageeinheit eingeschaltet oder in dem eingeschalteten Zustand parallel zu einer Suche in einem Datenfeld in dem Instruktions-Cache belassen wird, welches die Instruktionsdaten speichert.
  • Konzept 16: Das Verfahren nach Konzept 11, bei dem der Verzweigungspräsenzhinweis auf einen Art einer Verzweigungsinstruktionen hinweist, weiterhin aufweisend: Einschalten von zugewiesenen Vorhersagestrukturen in der Verzweigungsvorhersageeinheit von einem ausgeschalteten Zustand basierend auf derart der Verzweigungsinstruktionen, auf die durch den Verzweigungspräsenzhinweis hingewiesen wird.
  • Konzept 17: das Verfahren nach Konzepten 11, wobei das Empfangen des Verzweigungspräsenzhinweises vor einem Einschalten der Verzweigungsvorhersageeinheit oder dem Belassen der Verzweigungsvorhersageeinheit in einem ausgeschalteten Zustand ausgeführt wird.
  • Konzept 18: Ein Verfahren, das in einem Microprozessor inklusive eines Instruktions-Cache und einer Verzweigungsvorhersageeinheit implementiert ist, wobei der Instruktions-Cache eine Mehrzahl von Cacheline-Sätzen und Verzweigungspräsenz-Bits aufweist, die jedem der Mehrzahl der Cacheline-Sätze entsprechen, wobei die Verzweigungspräsens-Bits darauf hinweisen, ob Daten in einem zuletzt genutzten Weg in einem entsprechenden Cacheline-Satz eine Verzweigungsinstruktionen aufweisen, wobei das Verfahren aufweist: Empfangen von Verzweigungspräsenz-Bits, die darauf hinweisen, ob eine Cacheline in einem zugewiesenen Cacheline-Satz eine Verzweigungsinstruktion aufweist; während eines Instruktionsaufrufes von Instruktionsdaten aus der Cacheline Einschalten der Verzweigungsvorhersageeinheit von einem ausgeschalteten Zustand, wenn die Verzweigungspräsenz-Bits darauf hinweisen, dass die Instruktionsdaten aus der Cacheline eine Verzweigungsinstruktion aufweisen; Belassen der Verzweigungsvorhersageeinheit in dem ausgeschalteten Zustand während des Instruktionsaufrufes der Instruktionsdaten von der Cacheline, wenn die Verzweigungspräsenz-Bits darauf hinweisen, dass die Instruktionsdaten aus der Cacheline nicht auf eine Verzweigungsinstruktion hinweisen; nach dem Instruktionsdaten in der Cacheline von dem Instruktions-Cache aufgerufen wurden, Überprüfen der aufgerufenen Instruktionsdaten bezüglich der Präsenz einer Verzweigungsinstruktion; falls es keine Verzweigungsinstruktion in den aufrufenden Instruktionsdaten gibt, Aktualisieren der Verzweigungspräsenz-Bits, um die Verzweigungsvorhersageeinheit in dem ausgeschalteten Zustand während eines Instruktionsaufrufes von Instruktionsdaten aus der Cacheline zu belassen; und falls es eine Verzweigungsinstruktion in den aufgerufenen Instruktionsdaten gibt, Aktualisierung der Verzweigungspräsenz-Bits, um die Verzweigungsvorhersageeinheit einzuschalten, um nach einer Verzweigungsvorhersage während eines Instruktionsaufrufes von Instruktionsdaten aus der Cacheline zu suchen.
  • Konzept 19: Das Verfahren von Konzept 18, weiterhin aufweisend: wenn Instruktionsdaten aus der Cacheline bedingt durch eine Verzweigung aufgerufen werden, Verhindern einer Aktualisierung der Verzweigungspräsenz-Bits.
  • Konzept 20: Das Verfahren von Konzept 18, bei dem die Verzweigungspräsenz-Bits auf eine Art von Verzweigungsinstruktion hinweisen, und wobei das Verfahren aufweist: Einschalten von zugewiesenen Vorhersagestrukturen innerhalb der Verzweigungsvorhersageeinheit von einem ausgeschalteten Zustand basierend auf der Art der Verzweigungsinstruktionen, auf die durch die Verzweigungspräsenz-Bits hinwiesen wird.
  • Konzept 21: Ein Verfahren aufweisend: Belassen einer Verzweigungsvorhersageeinheit in einem ausgeschalteten Zustand während eines Instruktionsaufrufes von Instruktionsdaten aus einem Instruktions-Cache basierend auf mindestens einem Verzweigungspräsenz-Bit, welches darauf hinweist, dass die Instruktionsdaten keine Verzweigungsinstruktion aufweisen.
  • Es sollte verstanden werden, dass die hier beschriebenen Konfigurationen und/oder Ansätze von beispielhafter Natur sind und dass diese spezifischen Ausführungsbeispiele oder Beispiele nicht in einem limitierenden Sinne verstanden werden sollen, weil viele Variationen möglich sind. Die hier beschriebenen spezifischen Routinen oder Verfahren können eine oder mehrere einer Vielzahl von Verarbeitungsstrategien repräsentieren. Damit können viele Aktionen in der dargestellten Reihenfolge oder in anderen Reihenfolgen ausgeführt werden. Sie keine parallele ablaufen oder in einigen Fällen ausgelassen werden. Dementsprechend kann die Reihenfolge des oben beschriebenen Prozesses geändert werden.
  • Der Gegenstand der vorliegenden Offenbarung enthält alle neuen unten nicht naheliegenden Kombinationen und Unterkombinationen der verschiedenen Prozesse, Systeme und Konfigurationen und andere Merkmale, Funktionen, Aktionen und/oder Eigenschaften, die ich hier offenbart sind, genauso wie alle entsprechenden Äquivalente.

Claims (10)

  1. Ein Microprozessor aufweisend: eine Aufruflogik, welche konfiguriert ist, um mit einem Instruktionsspeicher zu interagieren, um Instruktionsdaten für eine Ausführung abzurufen; eine Verzweigungsvorhersageeinheit, die operativ mit der Aufruflogik verbunden ist, aufweisend: eine Verzweigungssteuerung, die konfiguriert ist, um (1) einen Hinweis auf ein Vorliegen einer Verzweigung zu empfangen, der darauf hinweist, ob Instruktionsdaten in einer Lokation in dem Instruktionsspeicher Verzweigungsinstruktionen während eines Aufrufs der Instruktionsdaten von der Lokation in dem Instruktionsspeicher aufweisen, um (2) die Verzweigungsvorhersageeinheit von einem ausgeschalteten Zustand einzuschalten, wenn der Verzweigungsvorhersagehinweis darauf hinweist, dass die Instruktionsdaten eine Verzweigungsinstruktion aufweisen, und um (3) die Verzweigungsvorhersageeinheit in einem ausgeschalteten Zustand zu während eines Aufrufs der Instruktionsdaten belassen, wenn der Verzweigungsvorhersagehinweis darauf hinweist, dass die Instruktionsdaten nicht eine Verzweigungsinstruktion aufweisen.
  2. Der Microprozessor gemäß Anspruch 1, bei dem der Instruktionsspeicher einen Instruktions-Cache inklusive einer Mehrzahl von Cachelines und eine Cache-Steuerung aufweist, der konfiguriert ist, um, in Reaktion darauf, dass eine Cacheline in dem Instruktions-Cache mit Instruktionsdaten gefüllt ist, den Verzweigungsvorhersagehinweis für die Cacheline zu setzen, um die Verzweigungsvorhersageeinheit einzuschalten, um nach einer Verzweigungsvorhersage während eines Instruktionsaufrufs von Instruktionsdaten in der Cacheline zu suchen.
  3. Der Microprozessor gemäß Anspruch 2, weiterhin aufweisend: eine Verzweigungsvorhersage-Validierungs-Einheit, die konfiguriert ist, um (1) nachdem Instruktionsdaten von der Cacheline aufgerufen wurden, in den aufgerufenen Instruktionsdaten ein Vorliegen einer Verzweigungsinstruktion zu bestätigen, und um (2) wenn in den aufgerufenen Instruktionsdaten keine Verzweigungsinstruktion vorhanden ist, den Verzweigungsvorhersagehinweis zu aktualisieren, um die Verzweigungsvorhersageeinheit in dem ausgeschalteten Zustand während eines Instruktionsaufrufes von Instruktionsdaten aus der Cacheline zu belassen.
  4. Der Microprozessor gemäß Anspruch 3, bei dem die Verzweigungsvorhersage-Validierungs-Einheit konfiguriert ist, um, falls es eine Verzweigungsinstruktion in den aufgerufenen Instruktionsdaten gibt, den Verzweigungsvorhersagehinweis zu aktualisieren, um die Verzweigungsvorhersageeinheit einzuschalten, um eine Verzweigungsvorhersage während eines Instruktionsaufrufen von Instruktionsdaten aus der Cacheline zu suchen.
  5. Der Microprozessor gemäß Anspruch 3, bei dem die Cache-Steurung konfiguriert ist, um, falls Instruktionsdaten von der Cacheline bedingt durch eine Umleitung aufgerufen werden, die Aktualisierung des Verzweigungsvorhersagehinweis nicht zuzulassen.
  6. Der Microprozessor gemäß einem der Ansprüche 1 bis 5, wobei die Verzweigungsvorhersageeinheit eingeschaltet oder in dem eingeschalteten Zustand parallel zu einer Suche in einem Datenfeld in dem Instruktions-Cache belassen wird, welches die Instruktionsdaten speichert.
  7. Der Microprozessor gemäß einem der Ansprüche 1 bis 6, wobei der Verzweigungsvorhersagehinweis durch Verzweigungspräsenz-Bits gekennzeichnet ist, und wobei der Instruktionsspeicher einen Instruktions-Cache aufweist, der auf ein Zuletztgenutzte-Bits-Feld hinweist, das zuletzt genutzte Bits für jedes der Mehrzahl der Cacheline-Sätze und die Verzweigungspräsenz-Bits aufweist, und wobei die zuletzt genutzten Bits für jeden Cacheline-Satz auf einen zuletzt benutzten Weg in dem Cacheline-Satz hinweisen.
  8. Der Microprozessor gemäß Anspruch 7, bei dem die Lokation in dem Instruktionsspeicher ein zuletzt genutzter Weg in einen zugewiesenen Cacheline-satz des Instruktions-Cache ist, und wobei die Verzweigungspräsenz-Bits für den zugewiesene Cacheline-Satz vor ein Instruktionsaufruf der Instruktionsdaten von den zuletzt genutzten Weg aufgerufen werden.
  9. Der Microprozessor gemäß einem der Ansprüche 1 bis 8, wobei der Verzweigungsvorhersagehinweis auf eine Art von Verzweigungsinstruktion hinweist, und wobei der Verzweigungssteuerung konfiguriert ist, um zugewiesene Verzweigungsvorhersagestrukturen innerhalb der Verzweigungsvorhersagelogik von einem ausgeschalteten Zustand basierend auf der Art der Verzweigungsinstruktion einzuschalten, auf die die Verzweigungspräsenz-Bits hinweisen.
  10. Der Microprozessor gemäß einem der Ansprüche 1 bis 8, wobei der Verzweigungsvorhersagehinweis durch zwei Verzweigungspräsenz-Bits gekennzeichnet ist, wobei jedes der Verzweigungspräsenz-Bits eine andere Datenhälfte in einer Cacheline repäsentiert.
DE102013202992A 2012-04-27 2013-02-22 Energieeinsparung bei Verzweigungsvorhersage Pending DE102013202992A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/458,542 US9552032B2 (en) 2012-04-27 2012-04-27 Branch prediction power reduction
US13/458,542 2012-04-27

Publications (1)

Publication Number Publication Date
DE102013202992A1 true DE102013202992A1 (de) 2013-10-31

Family

ID=49323387

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013202992A Pending DE102013202992A1 (de) 2012-04-27 2013-02-22 Energieeinsparung bei Verzweigungsvorhersage

Country Status (4)

Country Link
US (1) US9552032B2 (de)
CN (1) CN103377146A (de)
DE (1) DE102013202992A1 (de)
TW (1) TWI502347B (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10203959B1 (en) 2016-01-12 2019-02-12 Apple Inc. Subroutine power optimiztion
US10223123B1 (en) * 2016-04-20 2019-03-05 Apple Inc. Methods for partially saving a branch predictor state
ES2697548B2 (es) * 2018-03-20 2020-07-22 Univ Madrid Politecnica Un metodo y un dispositivo de procesamiento en paralelo de instrucciones de programa e instrucciones de traza
US11513801B2 (en) * 2018-09-10 2022-11-29 Advanced Micro Devices, Inc. Controlling accesses to a branch prediction unit for sequences of fetch groups
US11182166B2 (en) * 2019-05-23 2021-11-23 Samsung Electronics Co., Ltd. Branch prediction throughput by skipping over cachelines without branches
JP2023508869A (ja) * 2019-12-23 2023-03-06 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド フェッチグループのシーケンスについての分岐予測ユニットへのアクセスの制御
US11301251B2 (en) * 2020-03-30 2022-04-12 SiFive, Inc. Fetch stage handling of indirect jumps in a processor pipeline
US20220197657A1 (en) * 2020-12-22 2022-06-23 Intel Corporation Segmented branch target buffer based on branch instruction type

Family Cites Families (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4168541A (en) 1978-09-25 1979-09-18 Sperry Rand Corporation Paired least recently used block replacement system
US4525780A (en) 1981-05-22 1985-06-25 Data General Corporation Data processing system having a memory using object-based information and a protection scheme for determining access rights to such information
US4807110A (en) 1984-04-06 1989-02-21 International Business Machines Corporation Prefetching system for a cache having a second directory for sequentially accessed blocks
US5125085A (en) 1989-09-01 1992-06-23 Bull Hn Information Systems Inc. Least recently used replacement level generating apparatus and method
US5325503A (en) 1992-02-21 1994-06-28 Compaq Computer Corporation Cache memory system which snoops an operation to a first location in a cache line and does not snoop further operations to locations in the same line
US5974508A (en) 1992-07-31 1999-10-26 Fujitsu Limited Cache memory system and method for automatically locking cache entries to prevent selected memory items from being replaced
US5544342A (en) 1993-06-30 1996-08-06 International Business Machines Corporation System and method for prefetching information in a processing system
US5835934A (en) 1993-10-12 1998-11-10 Texas Instruments Incorporated Method and apparatus of low power cache operation with a tag hit enablement
US5623627A (en) 1993-12-09 1997-04-22 Advanced Micro Devices, Inc. Computer memory architecture including a replacement cache
US5784590A (en) 1994-06-29 1998-07-21 Exponential Technology, Inc. Slave cache having sub-line valid bits updated by a master cache
US5666514A (en) 1994-07-01 1997-09-09 Board Of Trustees Of The Leland Stanford Junior University Cache memory containing extra status bits to indicate memory regions where logging of data should occur
US5640532A (en) 1994-10-14 1997-06-17 Compaq Computer Corporation Microprocessor cache memory way prediction based on the way of previous memory read
US5933860A (en) 1995-02-10 1999-08-03 Digital Equipment Corporation Multiprobe instruction cache with instruction-based probe hint generation and training whereby the cache bank or way to be accessed next is predicted
US5737748A (en) 1995-03-15 1998-04-07 Texas Instruments Incorporated Microprocessor unit having a first level write-through cache memory and a smaller second-level write-back cache memory
US5860127A (en) 1995-06-01 1999-01-12 Hitachi, Ltd. Cache memory employing dynamically controlled data array start timing and a microcomputer using the same
US5845317A (en) 1995-11-17 1998-12-01 Micron Technology, Inc. Multi-way cache expansion circuit architecture
US5809522A (en) 1995-12-18 1998-09-15 Advanced Micro Devices, Inc. Microprocessor system with process identification tag entries to reduce cache flushing after a context switch
US6026485A (en) 1996-01-24 2000-02-15 Sun Microsystems, Inc. Instruction folding for a stack-based machine
US5687110A (en) * 1996-02-20 1997-11-11 Advanced Micro Devices, Inc. Array having an update circuit for updating a storage location with a value stored in another storage location
US6236674B1 (en) 1996-02-23 2001-05-22 Teletransactions, Inc. Transceiver control with sleep mode operation
US5978906A (en) * 1996-11-19 1999-11-02 Advanced Micro Devices, Inc. Branch selectors associated with byte ranges within an instruction cache for rapidly identifying branch predictions
US5848428A (en) 1996-12-19 1998-12-08 Compaq Computer Corporation Sense amplifier decoding in a memory device to reduce power consumption
US6282663B1 (en) * 1997-01-22 2001-08-28 Intel Corporation Method and apparatus for performing power management by suppressing the speculative execution of instructions within a pipelined microprocessor
US6247094B1 (en) 1997-12-22 2001-06-12 Intel Corporation Cache memory architecture with on-chip tag array and off-chip data array
US6601161B2 (en) 1998-12-30 2003-07-29 Intel Corporation Method and system for branch target prediction using path information
US6356990B1 (en) 2000-02-02 2002-03-12 International Business Machines Corporation Set-associative cache memory having a built-in set prediction array
KR100373849B1 (ko) 2000-03-13 2003-02-26 삼성전자주식회사 어소시어티브 캐시 메모리
EP1150213B1 (de) * 2000-04-28 2012-01-25 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Datenverarbeitungssystem und Verfahren
US7487369B1 (en) 2000-05-01 2009-02-03 Rmi Corporation Low-power cache system and method
JP2002196981A (ja) 2000-12-22 2002-07-12 Fujitsu Ltd データ処理装置
JP2002236616A (ja) 2001-02-13 2002-08-23 Fujitsu Ltd キャッシュメモリシステム
US6886093B2 (en) * 2001-05-04 2005-04-26 Ip-First, Llc Speculative hybrid branch direction predictor
US6718439B1 (en) 2001-06-01 2004-04-06 Advanced Micro Devices, Inc. Cache memory and method of operation
US7191281B2 (en) 2001-06-13 2007-03-13 Intel Corporation Mobile computer system having a navigation mode to optimize system performance and power management for mobile applications
US6678792B2 (en) 2001-06-22 2004-01-13 Koninklijke Philips Electronics N.V. Fast and accurate cache way selection
US6948079B2 (en) 2001-12-26 2005-09-20 Intel Corporation Method and apparatus for providing supply voltages for a processor
JP2003242029A (ja) 2002-02-15 2003-08-29 Hitachi Ltd 半導体集積回路
US6912623B2 (en) 2002-06-04 2005-06-28 Sandbridge Technologies, Inc. Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy
KR100702746B1 (ko) 2002-08-20 2007-04-03 엘지전자 주식회사 컴퓨터 시스템에서의 무선 랜 모듈 전원 관리방법 및 그장치
JP3986950B2 (ja) 2002-11-22 2007-10-03 シャープ株式会社 Cpuおよびこれを備えた情報処理装置、cpuの制御方法
US20040181654A1 (en) * 2003-03-11 2004-09-16 Chung-Hui Chen Low power branch prediction target buffer
US7369815B2 (en) 2003-09-19 2008-05-06 Qualcomm Incorporated Power collapse for a wireless terminal
US7360023B2 (en) 2003-09-30 2008-04-15 Starcore, Llc Method and system for reducing power consumption in a cache memory
US20050239518A1 (en) 2004-04-21 2005-10-27 D Agostino Anthony Systems and methods that provide enhanced state machine power management
JP3834323B2 (ja) 2004-04-30 2006-10-18 日本電気株式会社 キャッシュメモリおよびキャッシュ制御方法
US8775740B2 (en) 2004-08-30 2014-07-08 Texas Instruments Incorporated System and method for high performance, power efficient store buffer forwarding
US7869835B1 (en) 2005-03-02 2011-01-11 Nvidia Corporation Method and system for pre-loading and executing computer instructions within the cache memory
US7475192B2 (en) 2005-07-12 2009-01-06 International Business Machines Corporation Cache organization for power optimized memory access
US7536510B1 (en) 2005-10-03 2009-05-19 Advanced Micro Devices, Inc. Hierarchical MRU policy for data cache
US7412570B2 (en) 2005-11-15 2008-08-12 Sun Microsystems, Inc. Small and power-efficient cache that can provide data for background DNA devices while the processor is in a low-power state
US7904658B2 (en) 2005-11-30 2011-03-08 International Business Machines Corporation Structure for power-efficient cache memory
TW200723094A (en) * 2005-12-01 2007-06-16 Ind Tech Res Inst Dynamic branch prediction system and method
US7644294B2 (en) * 2006-01-06 2010-01-05 Advanced Micro Devices, Inc. Dynamically self-decaying device architecture
US7689772B2 (en) 2006-05-04 2010-03-30 Intel Corporation Power-performance modulation in caches using a smart least recently used scheme
US7657708B2 (en) 2006-08-18 2010-02-02 Mips Technologies, Inc. Methods for reducing data cache access power in a processor using way selection bits
US7681021B2 (en) * 2006-09-28 2010-03-16 Freescale Semiconductor, Inc. Dynamic branch prediction using a wake value to enable low power mode for a predicted number of instruction fetches between a branch and a subsequent branch
US8335122B2 (en) 2007-11-21 2012-12-18 The Regents Of The University Of Michigan Cache memory system for a data processing apparatus
US8028180B2 (en) * 2008-02-20 2011-09-27 International Business Machines Corporation Method and system for power conservation in a hierarchical branch predictor
US8458404B1 (en) 2008-08-14 2013-06-04 Marvell International Ltd. Programmable cache access protocol to optimize power consumption and performance
CN105468334A (zh) 2008-12-25 2016-04-06 世意法(北京)半导体研发有限责任公司 对非控制流指令减少分支检验
US20110047357A1 (en) * 2009-08-19 2011-02-24 Qualcomm Incorporated Methods and Apparatus to Predict Non-Execution of Conditional Non-branching Instructions
US8799628B2 (en) * 2009-08-31 2014-08-05 Advanced Micro Devices, Inc. Early branch determination
JP2011081564A (ja) 2009-10-06 2011-04-21 Fujitsu Ltd 制御装置、記憶装置、演算処理装置および制御方法
US20110093658A1 (en) * 2009-10-19 2011-04-21 Zuraski Jr Gerald D Classifying and segregating branch targets
US8990506B2 (en) 2009-12-16 2015-03-24 Intel Corporation Replacing cache lines in a cache memory based at least in part on cache coherency state information
US8352683B2 (en) 2010-06-24 2013-01-08 Intel Corporation Method and system to reduce the power consumption of a memory device
US20120079303A1 (en) 2010-09-24 2012-03-29 Madduri Venkateswara R Method and apparatus for reducing power consumption in a processor by powering down an instruction fetch unit
US8667257B2 (en) * 2010-11-10 2014-03-04 Advanced Micro Devices, Inc. Detecting branch direction and target address pattern and supplying fetch address by replay unit instead of branch prediction unit

Also Published As

Publication number Publication date
TW201405310A (zh) 2014-02-01
US20130290640A1 (en) 2013-10-31
TWI502347B (zh) 2015-10-01
CN103377146A (zh) 2013-10-30
US9552032B2 (en) 2017-01-24

Similar Documents

Publication Publication Date Title
DE102013202992A1 (de) Energieeinsparung bei Verzweigungsvorhersage
DE102013202995A1 (de) Energieeinsparung in Verzweigungsvorhersagen
DE102012222820A1 (de) Anweisung-Zwischenspeicher-Energie-Verminderung
KR100389549B1 (ko) 템포럴 및 넌템포럴 명령어에 대한 공유 캐시 구조
DE69631778T2 (de) Flexible implementierung eines systemverwaltungsmodus in einem prozessor
DE69931288T2 (de) Ermittlung der Latenzzeit eines Rechnerspeichers
DE60102017T2 (de) Räumungsfilter für adressenübersetzungspuffer
EP0496439B1 (de) Rechneranordnung mit Mehrfachpufferdatencachespeicher und Verfahren dafür
US20150134933A1 (en) Adaptive prefetching in a data processing apparatus
US11579879B2 (en) Processing pipeline with first and second processing modes having different performance or energy consumption characteristics
US11513801B2 (en) Controlling accesses to a branch prediction unit for sequences of fetch groups
DE102004013676A1 (de) Schleifenbetrieb mit null Overhead in einem Mikroprozessor mit Anweisungspuffer
CN101558390B (zh) 用于微处理器的可配置高速缓冲存储器
EP0752645A2 (de) Abstimmbare Softwaresteuerung von Pufferspeichern einer Harvard-Architektur mittels Vorausladebefehlen
DE112013003731T5 (de) Neue befehls- und hocheffiziente Mikroarchitektur zum ermöglichen einer sofortigen Kontextumschaltung für Benutzerebenen-Threading
US8341382B2 (en) Memory accelerator buffer replacement method and system
US7152170B2 (en) Simultaneous multi-threading processor circuits and computer program products configured to operate at different performance levels based on a number of operating threads and methods of operating
JP6234484B2 (ja) チップ上のデータをプリフェッチするためのコンピュータ・システム、コンピュータ・プログラム、およびコンピュータ実装方法
US20200065106A1 (en) Filtered branch prediction structures of a processor
DE102015115582A1 (de) Vorrichtung und Verfahren zum Drosseln des Hardwarevorauslesens
DE102013206336A1 (de) Cache-Steuerung zur Reduktion von Transaktions-Rollback
US7346741B1 (en) Memory latency of processors with configurable stride based pre-fetching technique
DE102013201387A1 (de) Zugreifen und Managen von Code-Übersetzungen in einem Mikroprozessor
US10853075B2 (en) Controlling accesses to a branch prediction unit for sequences of fetch groups
US9003123B2 (en) Data processing apparatus and method for reducing storage requirements for temporary storage of data

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: KRAUS & WEISERT PATENTANWAELTE PARTGMBB, DE

R016 Response to examination communication