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